diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9a19959 --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +# Build intermediate files +*.obj +*.pdb +*.ilk +*.tmp +*.res + +# Large zip archives & installer payloads (>100MB) +*.zip +PokerGameSetup.exe +PokerGameSetup_*.exe + +# Legacy backups folder (kept locally) +backups/ + +# Generated frames & temporary video tools (270MB) +tools/generated_frames/ +__pycache__/ +*.pyc + +# Local debug / test captures +*_test*.png +debug_render.png +render_view.png +*.log diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..a675f2a --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,41 @@ +# AGENTS.md + +## Project identity + +Single-file x86 assembly (MASM32) Windows console casino game. Source: `poker.asm` (~8500 lines). Python scripts are only for previewing animations — not part of the game itself. + +## Build + +- **Assembler**: `ml /c /coff /Cp /nologo poker.asm` +- **Link**: `link /SUBSYSTEM:CONSOLE /RELEASE /VERSION:4.0 /LIBPATH:"\lib" poker.obj kernel32.lib winmm.lib user32.lib ws2_32.lib gdi32.lib` +- **IDE project**: `poker.wap` (Pelles C/Windows) +- **Libraries**: `kernel32.lib`, `winmm.lib`, `user32.lib`, `ws2_32.lib`, `gdi32.lib` +- **Build script**: `build.bat` (uses MASM32 from `D:\MASM32\masm32`) + +Requires MASM32 toolchain (`ml.exe`, `link.exe` from e.g. `F:\MASM32\masm32\bin`). + +## Encoding + +- Source strings, `dealer_phrases.txt`: **CP1251** (Windows-1251). Do not re-save as UTF-8. +- `.ans` animation files: ANSI escape codes + CP1251, frames separated by form feed (`\f`, 0x0C). +- Preview scripts run `chcp 65001` before printing. + +## Assets + +| File | Purpose | +|------|---------| +| `casino_intro.ans` | Animated intro (skippable with Enter, loops at `@@LOOP@@` marker) | +| `hakari_dance.ans` | Animated dance on jackpot win | +| `dealer_phrases.txt` | CP1251, each line prefixed `W|` (win), `L|` (loss), `D|` (draw) | + +## Workflow + +- **No git**. Backups in `backups/` follow: `poker_before__.{asm,exe}` +- **No tests**. Manually verify by running `poker.exe`. +- Preview animations: `preview_hakari.bat` / `preview_intro.bat` (or `python preview_hakari.py` directly). + +## Games (menu) + +1=21/Blackjack, 2=Poker, 3=CloverPit (slots 5×3), 4=Russian Roulette, 5=Skulls & cups, 6=Coin, 7=Dice, 8=Roulette, 9=Slot machine, 10=Durak, 11=Training, 12=Observer AI vs AI, 0=Exit + +Cheat codes: `MONEYRAIN`, `SEVENS`, `WINNEXT`, `GODMODE`, `FAIRPLAY`, `GOAL`, `RESETBANK`, `EASYAI`/`NORMALAI`/`HARDAI`, `JACKPOT`, `HIGHROLLER`, `DOUBLECASH`, `ONEBUCK` (entered at main menu). diff --git a/Assembler Casino.exe b/Assembler Casino.exe new file mode 100644 index 0000000..006c207 Binary files /dev/null and b/Assembler Casino.exe differ diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..0bd4ff7 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,13 @@ +cmake_minimum_required(VERSION 3.10) +project(poker_portable C) + +set(CMAKE_C_STANDARD 99) + +add_executable(poker_portable + src_portable/casino_portable.c + src_portable/casino_portable.h +) + +if(WIN32) + target_link_libraries(poker_portable ws2_32) +endif() diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ab7d594 --- /dev/null +++ b/Makefile @@ -0,0 +1,18 @@ +CC ?= gcc +CFLAGS ?= -std=c99 -O2 -Wall + +ifeq ($(OS),Windows_NT) + LIBS = -lws2_32 + TARGET = poker_portable.exe +else + LIBS = + TARGET = poker_portable +endif + +all: $(TARGET) + +$(TARGET): src_portable/casino_portable.c src_portable/casino_portable.h + $(CC) $(CFLAGS) src_portable/casino_portable.c -o $(TARGET) $(LIBS) + +clean: + rm -f $(TARGET) *.o diff --git a/Uninstall Assembler Casino.exe b/Uninstall Assembler Casino.exe new file mode 100644 index 0000000..0ef7c14 Binary files /dev/null and b/Uninstall Assembler Casino.exe differ diff --git a/assets/animations/casino_intro.ans b/assets/animations/casino_intro.ans new file mode 100644 index 0000000..c80bb06 --- /dev/null +++ b/assets/animations/casino_intro.ans @@ -0,0 +1,2101 @@ +[?25l +                                                                 +                                                                 +                                                                 +    .                                                            +                                                                 +                     .                                           +                               .      .                          +                                                                 +                                                                 +                                               .                 +                                                                 +                                                                 +                                                                 +                                                               . +                                                                 +                                                                 +                                                                 +                                              .                  + loading table lights... + ENTER - START + [?25l +╔══                                                            . +║                                                                +                                                                 +                 .                                               +                 .                        . .                    +                                                                 +           .                      .                              +                                           .                   . +                                                                 +                                                                 +                               .                                 +                                                                 +                                       .                         +                                           .                     +                 .                                               +                                                                 +                                                                 +                                                                 + loading table lights... + ENTER - START + [?25l +╔════                                         .            .     +║                                                                +║                                                              . +                                                                 +             .                  .                                +                                                                 +                      .    .               .                     +                                       .                         +                                                                 +             .                                                   +                        .                                        +                                                                 +                                       .                         +                                                                 +                                                 .               +                                                                 +                                        .    .                   +                                                                 + loading table lights... + ENTER - START + [?25l +╔══════                                                          +║                                                                +║                 .                           .                  +║                                                                +                                                                 +              .                                                  +                  ..       .                                     +             .                                                   +                                                                 +            .                                                    +                                                                 +                                        .                      . +                                                                 +                             .                                   +                                                                 +                                                                 +                                                                 +                                                                 + loading table lights... + ENTER - START + [?25l +╔═════════                                                       +║                                                                +║   ██             .                                             +║                                                                +║                                                                +                                    .                            +                                                                 +                                                                 +                                                                 +                                                                 +                               .                                 +                                                                 +                                                                 +                                  .                              +                                                                 +                                                                 +                                                                 +                                                                 + loading table lights... + ENTER - START + [?25l +╔═══════════.                                                    +║                                                                +║   ████                           .                             +║   ██                                      .                    +║                                                                +║     .                                                          +                                                                 +     .                                                           +                                                                 +.                                 .                              +                                                                 +                .                                                +                                       .                         +                                                                 +                                                                 +                                                                 +                                                                 +                      .          .                 .             + loading table lights... + ENTER - START + [?25l +╔═════════════        .      .                        .          +║                                                                +║   ██████                    .                                  +║   ██╔═                                                         +║   ██                                                           +║                                                                +║                                                                +          .                  .                                   +                                                                 +             .                                                   +                                                                 +                 .                           ..                  +                                                                 +                                                                 +                                                                 +                                                                 +                                                                 +                                                                 + loading table lights... + ENTER - START + [?25l +╔═══════════════                                                 +║                                                                +║   ███████╗   .                                                 +║   ██╔═══                                                       +║   ████              .                                          +║   ██                                                           +║                            .                                   +║                                                                +                                                                 +                                                                 +                                                                 +                    .                                            +                                                                 +                                                                 +.           .                                                    +                                                                 +                                                                 +                                                  .              + loading table lights... + ENTER - START + [?25l +╔══════════════════                                              +║                                                                +║   ███████╗ ██                                                  +║   ██╔════╝                                                     +║   █████╗                                                       +║   ██╔══                      .    .                            +║   ███                                       .                  +║   ╚                                                            +║                                                                +║                                                  .             +                             .      .                            +             .                                .                  +                                                                 +                         .    .                                  +                                                   .             +                                                                 +                                                                 +         .                                                       + loading table lights... + ENTER - START + [?25l +╔════════════════════                       .                    +║                                                                +║   ███████╗ ████                                                +║   ██╔════╝ ██                                                  +║   █████╗                                                       +║   ██╔══╝                                                       +║   █████                  .                                     +║   ╚══                                                          +║                                                                +║                                                                +║        .         .                                             +                                                                 +                . .                                              +                                                                 +                                                                 +                                                                 +                                                                 +                                                                 + loading table lights... + ENTER - START + [?25l +╔══════════════════════   .                                      +║                                                                +║   ███████╗ ██████           .                                  +║   ██╔════╝ ██╔═                                                +║   █████╗   ██                                                  +║   ██╔══╝                                                     . +║   ███████                                                      +║   ╚════                                                        +║                                                                +║                                                                +║                                      .                         +║                               .                                +                          .             .                        +                                             .                 . +           .                                                     +.                                                                +                                                                 + .                                        .                      + loading table lights... + ENTER - START + [?25l +╔═════════════════════════               .                       +║                                                                +║   ███████╗ ██████╗ █             .  .                          +║   ██╔════╝ ██╔══██                                             +║   █████╗   █████                                               +║   ██╔══╝   ██╔                 .      .                        +║   ███████╗ █                                                   +║   ╚══════╝                                                     +║                                                                +║                                                                +║                   .           .                                +║                                                                +║                                     .                          +                                                                 +                      .                                          +                                                                 +                                                                 + .                              .                                + loading table lights... + ENTER - START + [?25l +╔═══════════════════════════       .                             +║                                                                +║   ███████╗ ██████╗ ██╗                                         +║   ██╔════╝ ██╔══██╗█                                           +║   █████╗   ██████╔                                             +║   ██╔══╝   ██╔══                                               +║   ███████╗ ███                    .                          . +║   ╚══════╝ ╚                                                   +║                                                                +║        █             .                                         +║                                                                +║                                             .                  +║                                                                +║                                        .                       +         .    .                                .  .              +                                                                 +                    .                                            +                                         .               .       + loading table lights... + ENTER - START + [?25l +╔═════════════════════════════                          .        +║                                                                +║   ███████╗ ██████╗ ██╗                                         +║   ██╔════╝ ██╔══██╗██║        .                                +║   █████╗   ██████╔╝█                                           +║   ██╔══╝   ██╔══██                                             +║   ███████╗ █████                                               +║   ╚══════╝ ╚══  .                 .                            +║                                                                +║        ███.                                                    +║       ██                      .                                +║                                              .                 +║                                             .    .             +║                                                                +║            .                                                   +                                                                 +             .                                                   + .                                                               + loading table lights... + ENTER - START + [?25l +╔═══════════════════════════════     .                           +║                                                                +║   ███████╗ ██████╗ ██╗                                         +║   ██╔════╝ ██╔══██╗██║            .                            +║   █████╗   ██████╔╝██║                                         +║   ██╔══╝   ██╔══██╗█.                                          +║   ███████╗ ██████╔                                             +║   ╚══════╝ ╚════                                               +║                                                                +║        █████                                                   +║       ██╔═                    .                                +║       ██               .   .                                   +║                                                                +║                                                                +║                                                                +║                                                                +                                                                 +    .                                                            + loading table lights... + ENTER - START + [?25l +╔══════════════════════════════════                              +║                                                                +║   ███████╗ ██████╗ ██╗      █                                  +║   ██╔════╝ ██╔══██╗██║                                         +║   █████╗   ██████╔╝██║                                         +║   ██╔══╝   ██╔══██╗██║                                         +║   ███████╗ ██████╔╝██                                          +║   ╚══════╝ ╚═════╝                   .                         +║                                                                +║        ██████╗                       .                         +║       ██╔════                                                  +║       ██║                                                      +║       ██║                   .                                  +║       ╚                                  .                     +║                                                                +║                                                                +║                                                                +╚                                                                + loading table lights... + ENTER - START + [?25l +╔════════════════════════════════════                            +║                                                                +║   ███████╗ ██████╗ ██╗      ███                                +║   ██╔════╝ ██╔══██╗██║     ██                                  +║   █████╗   ██████╔╝██║                                         +║   ██╔══╝   ██╔══██╗██║                    .                    +║   ███████╗ ██████╔╝████                                        +║   ╚══════╝ ╚═════╝ ╚═                                          +║                                                                +║        ██████╗  █                          .                   +║       ██╔════╝                                                 +║       ██║  ██                                                  +║       ██║                                       .              +║       ╚██                                                      +║                                        .       .               +║                                                                +║                   .                                            +╚══                                     .                .       + loading table lights... + ENTER - START + [?25l +╔══════════════════════════════════════                          +║                                                                +║   ███████╗ ██████╗ ██╗      █████                              +║   ██╔════╝ ██╔══██╗██║     ██╔═                                +║   █████╗   ██████╔╝██║     ██                                  +║   ██╔══╝   ██╔══██╗██║                 .                       +║   ███████╗ ██████╔╝██████                                      +║   ╚══════╝ ╚═════╝ ╚═══                                        +║                                                                +║        ██████╗  ███                       .  .                 +║       ██╔════╝ ██      .                   .                   +║       ██║  ███╗                                                +║       ██║   █                                                  +║       ╚████                                                    +║        ╚═                                                      +║                                                              . +║                                                                +╚════                                                            + loading table lights... + ENTER - START + [?25l +╔════════════════════════════════════════                        +║                                                                +║   ███████╗ ██████╗ ██╗      █████╗         .                   +║   ██╔════╝ ██╔══██╗██║     ██╔══█                              +║   █████╗   ██████╔╝██║     ████         .                      +║   ██╔══╝   ██╔══██╗██║     ██                                  +║   ███████╗ ██████╔╝███████╗                                    +║   ╚══════╝ ╚═════╝ ╚═════                                      +║                                                                +║        ██████╗  █████                           .              +║       ██╔════╝ ██╔═           .               .                +║       ██║  ███╗██                                              +║       ██║   ██║                                                +║       ╚██████        .                                         +║        ╚═══                      .                             +║                                                                +║                                                                +╚══════                                     .           .        + loading table lights... + ENTER - START + [?25l +╔═══════════════════════════════════════════                     +║                                                                +║   ███████╗ ██████╗ ██╗      █████╗ ███                         +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗█                           +║   █████╗   ██████╔╝██║     ███████                             +║   ██╔══╝   ██╔══██╗██║     ██╔══                             . +║   ███████╗ ██████╔╝███████╗██║                                 +║   ╚══════╝ ╚═════╝ ╚══════╝╚                .                  +║                                                                +║        ██████╗  █████╗ █       .                               +║       ██╔════╝ ██╔══██                                         +║       ██║  ███╗█████                                           +║       ██║   ██║██╔                                             +║       ╚██████╔╝█                                               +║        ╚═════╝                                                 +║                                                                +║                                                                +╚═════════                                                       + loading table lights... + ENTER - START + [?25l +╔═════════════════════════════════════════════       .           +║                                                                +║   ███████╗ ██████╗ ██╗      █████╗ ███╗                      . +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗███                         +║   █████╗   ██████╔╝██║     ███████║█                           +║   ██╔══╝   ██╔══██╗██║     ██╔══██                             +║   ███████╗ ██████╔╝███████╗██║                                 +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝                               . +║                                                                +║        ██████╗  █████╗ ███                                     +║       ██╔════╝ ██╔══██╗█                                       +║       ██║  ███╗███████                                         +║       ██║   ██║██╔══                                           +║       ╚██████╔╝██║                                             +║        ╚═════╝ ╚                                               +║                                                                +║            >                        .                          +╚═══════════                                .                    + loading table lights... + ENTER - START + [?25l +╔═══════════════════════════════════════════════                 +║                                                                +║   ███████╗ ██████╗ ██╗      █████╗ ███╗                        +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗                     . +║   █████╗   ██████╔╝██║     ███████║██╔                         +║   ██╔══╝   ██╔══██╗██║     ██╔══██║█                           +║   ███████╗ ██████╔╝███████╗██║  ██                             +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝                                 +║                                                                +║        ██████╗  █████╗ ███╗                                    +║       ██╔════╝ ██╔══██╗███                                     +║       ██║  ███╗███████║█                                       +║       ██║   ██║██╔══██         .                               +║       ╚██████╔╝██║                     .                       +║        ╚═════╝ ╚═╝                                             +║                                                                +║            >>>                                                 +╚═════════════                               .   .               + loading table lights... + ENTER - START + [?25l +╔══════════════════════════════════════════════════              +║                                                                +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                  +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  █ .                  +║   █████╗   ██████╔╝██║     ███████║██╔██╗                      +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚                        +║   ███████╗ ██████╔╝███████╗██║  ██║██                          +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝                            +║                                                                +║        ██████╗  █████╗ ███╗   █    .                           +║       ██╔════╝ ██╔══██╗████╗                                   +║       ██║  ███╗███████║██╔█   .                                +║       ██║   ██║██╔══██║██                                      +║       ╚██████╔╝██║  ██║      .                                 +║        ╚═════╝ ╚═╝  ╚                                          +║                                                                +║            >>>  P                                              +╚════════════════                .       .                       + loading table lights... + ENTER - START + [?25l +╔════════════════════════════════════════════════════            +║                                                                +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                  +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                  +║   █████╗   ██████╔╝██║     ███████║██╔██╗ █.                   +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██                      +║   ███████╗ ██████╔╝███████╗██║  ██║██║    .                    +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═                          +║                                                                +║        ██████╗  █████╗ ███╗   ███      .                       +║       ██╔════╝ ██╔══██╗████╗ ██                                +║       ██║  ███╗███████║██╔███               .                  +║       ██║   ██║██╔══██║██║╚                                    +║       ╚██████╔╝██║  ██║██                                      +║        ╚═════╝ ╚═╝  ╚═╝                                        +║                                                                +║            >>>  P R                        .                   +╚══════════════════                                              + loading table lights... + ENTER - START + [?25l +╔══════════════════════════════════════════════════════          +║                                                                +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                  +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                  +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                  +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗█                    +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚█                      +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝                         +║                                                                +║        ██████╗  █████╗ ███╗   ███╗█                            +║       ██╔════╝ ██╔══██╗████╗ ████                              +║       ██║  ███╗███████║██╔████╔                                +║       ██║   ██║██╔══██║██║╚██                                  +║       ╚██████╔╝██║  ██║██║                                     +║        ╚═════╝ ╚═╝  ╚═╝╚═                                      +║                                                                +║            >>>  P R E                                          +╚════════════════════                                          . + loading table lights... + ENTER - START + [?25l +╔════════════════════════════════════════════════════════        +║                                                                +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                  +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                  +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                  +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                  +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚███                    +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚                      +║                                                                +║        ██████╗  █████╗ ███╗   ███╗███                          +║       ██╔════╝ ██╔══██╗████╗ ████║█                            +║       ██║  ███╗███████║██╔████╔██                              +║       ██║   ██║██╔══██║██║╚██╔╝              .                 +║       ╚██████╔╝██║  ██║██║ ╚═                                  +║        ╚═════╝ ╚═╝  ╚═╝╚═╝                                     +║                                                                +║            >>>  P R E S                                        +╚══════════════════════                                        . + loading table lights... + ENTER - START + [?25l +╔═══════════════════════════════════════════════════════════     +║                                                                +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                  +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                  +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                  +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                  +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                  +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══                   +║                                                                +║        ██████╗  █████╗ ███╗   ███╗██████                       +║       ██╔════╝ ██╔══██╗████╗ ████║██╔═     .                   +║       ██║  ███╗███████║██╔████╔██║██                           +║       ██║   ██║██╔══██║██║╚██╔╝██║                             +║       ╚██████╔╝██║  ██║██║ ╚═╝ █                               +║        ╚═════╝ ╚═╝  ╚═╝╚═╝                                     +║                                                                +║            >>>  P R E S S                                      +╚═════════════════════════               .                       + loading table lights... + ENTER - START + [?25l +╔═════════════════════════════════════════════════════════════   +║                                                                +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                . +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                  +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                  +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                  +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                  +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                  +║                                                                +║        ██████╗  █████╗ ███╗   ███╗███████╗                     +║       ██╔════╝ ██╔══██╗████╗ ████║██╔═══                       +║       ██║  ███╗███████║██╔████╔██║████                         +║       ██║   ██║██╔══██║██║╚██╔╝██║██                           +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║                             +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚                               +║                                                                +║            >>>  P R E S S                                      +╚═══════════════════════════                                     + loading table lights... + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                                +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                  +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                  +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                  +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                  +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                  +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                  +║                                                                +║        ██████╗  █████╗ ███╗   ███╗███████╗██                   +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝                     +║       ██║  ███╗███████║██╔████╔██║█████╗                       +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔═                         +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║██                           +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝                             +║                                                                +║            >>>  P R E S S   A                                  +╚═════════════════════════════                                   + loading table lights... + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                  +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                  +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                  +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                  +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                  +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                  +║                                                                +║        ██████╗  █████╗ ███╗   ███╗███████╗█████                +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔                  +║       ██║  ███╗███████║██╔████╔██║█████╗  █                    +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝                       +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║█████                        +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══       .                  +║                                                                +║            >>>  P R E S S   A N Y                              +╚════════════════════════════════                .        .      + loading table lights... + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                  +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                  +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                  +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                  +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                  +║                                                                +║        ██████╗  █████╗ ███╗   ███╗███████╗███████              +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔══                +║       ██║  ███╗███████║██╔████╔██║█████╗  ███                  +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚                    +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████                      +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚════                        +║                                                                +║            >>>  P R E S S   A N Y                              +╚══════════════════════════════════                              + loading table lights... + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                  +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                  +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                  +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                  +║                                                                +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗             +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════              +║       ██║  ███╗███████║██╔████╔██║█████╗  █████                +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚══                  +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗█                    +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════                      +║                                                                +║            >>>  P R E S S   A N Y   K                          +╚════════════════════════════════════                            + loading table lights... + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                  +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                  +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                  +║                                                                +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗             +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝             +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████              +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════ .              +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███                  +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚                    +║                                                                +║            >>>  P R E S S   A N Y   K E                        +╚══════════════════════════════════════                          + loading table lights... + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                  +║                                                                +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗             +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝             +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           . +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║             +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗██████               +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚═══                 +║                                                                +║            >>>  P R E S S   A N Y   K E Y                      +╚═════════════════════════════════════════                       + loading table lights... + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                                +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗             +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝             +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗             +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║             +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║             +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚═════               +║                                                                +║            >>>  P R E S S   A N Y   K E Y  <                   +╚═══════════════════════════════════════════                     + loading table lights... + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗             +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝             +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗             +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║             +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║             +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝             +║                                                                +║            >>>  P R E S S   A N Y   K E Y  <<<                 +╚═════════════════════════════════════════════                   + loading table lights... + ENTER - START + @@LOOP@@ + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l + ╔══@═══════════════════════════════════════════════════════════╗ + ║                                                              ║ + ║   ███████╗ ██#███╗ ██╗      ███*█╗ ███╗   ██╗                ║ + ║   ██╔════╝ ██╔══██╗██║     ██╔═%██╗████╗  ██║                ║ + ║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ + ║   ██╔══╝   ██╔══██╗██║     ██╔══██?██║╚██╗██║                ║ + ║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ + ║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ + ║                                                              ║ + ║        █████&╗  █████╗ ███╗   ███╗███████╗███████╗           % + ║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝█0╔════╝           ║ + *       ██║  ███╗█████>█║██╔███&╔██║█████╗  ███████╗           ║ + ║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ + ║       ╚██████╔╝██║  ██║██? ╚═╝ ██║███████╗███████║           ║ + ║        ╚═════╝ ╚═╝  ╚═╝1═╝     ╚═╝╚══════╝╚══════╝           * + ║                                                              ║ + ║            >>>  P R E S S   A N Y   K E Y  <<<               ║ + ╚══════════════════════════════════════════════════════════════╝ +  JACKPOT CORE: SIGNAL SPIKE + ENTER - START + [?25l + ╔═══════════════════════════════════════════?══════════════════╗ + ║                                                              ║ + ║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ + ║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                $ + ║   █████╗   ██$███╔╝██║     ███████║██╔*█╗ ██║                ║ + ║   ██╔══@   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ + ║   ███████╗ ██████╔╝███████╗██║  ?█║██║ ╚████║                ║ + ║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ + ║                                                              # + ║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ + ║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ + ║       ██║  ███╗███████%██<████╔1█║█████╗  ███████╗           ║ + ║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ + ║       ╚██████╔╝██║  0█║██║ ╚═╝ ██║███████╗███████║           ║ + ║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ + ║                                                              ║ + ║            >>>  P R E S S   A N Y   K # Y  <<<               ║ + ╚═════════════════════════#════════════════════════════════════╝ +  JACKPOT CORE: SIGNAL SPIKE + ENTER - START + [?25l +╔═════════════════?════════#═══════X════════X═════════════════<╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                1 +║   ██╔══&═╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     █>█████║██╔██╗ ██║                ║ +║   ██╔══@   ██╔═%██╗██&     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +?       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██X════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║█*╔══╝  ╚════██║           ║ +║       ╚#█████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   # E Y  ?<<               ║ +╚═══════════════════════════════X══════════════════════════════< + JACKPOT CORE: SIGNAL SPIKE + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      ███%█╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███0███║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════* ╚═════% ╚════?═╝╚═╝  ╚═╝╚═0  ╚?══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗██████@╗           ║ +X       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║0█╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═@  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K ? Y  <<<               ║ +╚══════════════════════════════════════════════════════$═══════╝ + JACKPOT CORE: SIGNAL SPIKE + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔═[38;5;82m═══╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l + ╔══════════X═══════════════════════════════════════════════════╗ + ║                                                              ║ + ║   ███████╗ $█████╗ ██╗      █████╗ █>█╗   ██╗                ║ + ║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ + ║   █████╗   ██████╔╝█0║     ███████║██╔██╗ ██║                ║ + ║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ + ║   ███████╗ ██████╔╝1██████╗██║  ██║██║ ╚████║                ║ + ║   ╚═══?══╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ + ║                                                              ║ + ║        *█████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ + ║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ + ║       ██║  ███╗████?██║██╔████╔██║█████%  ███████╗           ║ + ║       ██║   ██║██#══██║██║╚██╔╝██║██╔══╝  ╚════?█║           ║ + ║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗>██████║           ║ + ║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚@═════╝╚══════╝           ║ + ║                                                              ║ + ║            >@>  P R E S S   A N Y   K E Y  <<<               ║ + ╚══════════════════════════════════════════════════════════════╝ +  JACKPOT CORE: SIGNAL SPIKE + ENTER - START + [?25l + ╔═════════════<═════════════════════0══════════════════════════╗ + ║                                                              ║ + ║   ████&██╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ + ║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ + ║   █████╗   ██████╔╝██║     ███████║██╔██╗ %█║                ║ + ║   ?█╔══╝   ██╔══██╗██║     ██╔══██║██║╚█0╗#█║                ║ + ║   ███████╗ █████&╔╝██████>╗██║  ██║██║ ╚████║                ║ + ║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ + ║                                                              ║ + ║        ██████X  █████╗ ███╗   ███╗███████╗███████╗           ║ + ║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ + ║       ██║  ███╗███████║██╔████╔██║█0███╗  ███████╗           ║ + ║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ + ║       ╚████@█╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ + ║        ╚═════╝ ╚═╝  ╚═1╚═╝     ╚═╝╚══════╝╚══════╝           ║ + ║                                                              ║ + ║            >>>  P R E S S   A N Y   K E Y  <<<               ║ + ╚═════*════════════════════════════════════════════════════════╝ +  JACKPOT CORE: SIGNAL SPIKE + ENTER - START + [?25l +╔══════════════════════════<══════════════════#════════════════╗ +║                                                              ║ +║   ████X██╗ ██████╗ X█╗      █████╗ ███╗   ██╗                ║ +║   *█╔════╝ ██╔══█$╗██║     ██╔══██╗1███╗  *█║                ║ +║   █████╗   ██████╔╝█1║     ██████1║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██>     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚███X║                ║ +║   ╚═════*╝ ╚>═>══╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚══#╝                ║ +║                                                              ║ +║        ██?███╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██*══██╗████╗ ████║██╔════╝██╔══*═╝           ║ +║       ██║  ███╗█*█████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════1╚══#═══╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + JACKPOT CORE: SIGNAL SPIKE + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START + [?25l +╔══════════════════════════════════════════════════════════════╗ +║                                                              ║ +║   ███████╗ ██████╗ ██╗      █████╗ ███╗   ██╗                ║ +║   ██╔════╝ ██╔══██╗██║     ██╔══██╗████╗  ██║                ║ +║   █████╗   ██████╔╝██║     ███████║██╔██╗ ██║                ║ +║   ██╔══╝   ██╔══██╗██║     ██╔══██║██║╚██╗██║                ║ +║   ███████╗ ██████╔╝███████╗██║  ██║██║ ╚████║                ║ +║   ╚══════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═══╝                ║ +║                                                              ║ +║        ██████╗  █████╗ ███╗   ███╗███████╗███████╗           ║ +║       ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝           ║ +║       ██║  ███╗███████║██╔████╔██║█████╗  ███████╗           ║ +║       ██║   ██║██╔══██║██║╚██╔╝██║██╔══╝  ╚════██║           ║ +║       ╚██████╔╝██║  ██║██║ ╚═╝ ██║███████╗███████║           ║ +║        ╚═════╝ ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝           ║ +║                                                              ║ +║            >>>  P R E S S   A N Y   K E Y  <<<               ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START diff --git a/assets/animations/dbd_hook.ans b/assets/animations/dbd_hook.ans new file mode 100644 index 0000000..9f9aa1e --- /dev/null +++ b/assets/animations/dbd_hook.ans @@ -0,0 +1,6233 @@ +,:;!!;!!!i!!!:;:iLi;i0!!t!. ,it!fftt::!C!i!,. .:... ,,. ..,,,;;.,.,,::;;!:::::,,,..,::::;!iffititttt!!!;;tfiiii!fLtfGLtit; +:,,,,,...,;!.:C!;!i;;0#i:..,,:iLi:!i!if!!ft!, ...,. .:,. ,:..;, .,ifLftL!::f!:,,:;!;:,,,:!i!::;::!!;:!ttii;!8GCGCGt!tfCttt;:; +;;!::i:,,:G!,ifLCL!;C!i8:,:;ti:,::;ifCC;,,,. . ..,.::;;!;:;!;;ii;!L:::;::;!,,,;ii;:!::!C8;:C##@GLftiitii!;;;ii!i,:C +:0i:GL;ffiCt0!:ftCCf!!;!8!:::,,!!if0C!:, . ... .:t, .fGtG;,!t!,.!t!t!::,,,,,,;!:;:::::!i@C;ifG0LtLG;;;:;itt:;Lf;;,:f +it:,f0!:::i8#f,.,,:!G0C;i@!,,;;tGGf;:. .,, ,, ,,... .,!80: .;:!f:,;:;, :!if!::,.,,:;;;;:;;tL;!iLi:;;t;::;!!;!f!!!!:iCti:,;t +,.. :8;...!GL#;. ,:!;i!G#!;ifi;:,. . ....,:,. ...LL8L, ,..:;;::::,:,.:t;::,,:ififi!t;iLft!i!!;;i!ii!!!fLfftit!tfii;:i!t +:!:,:i0: :8Lt@:. . .:;it0C,,,,. .... . ..,. .ft,..,;!i!:, :,;itttLt;;;::;;;;:,;ii!!!;;;::;;!CCfftCCLC08LfLLt;tf!;ti!;:::!t +!iti:;Gf, ,Lfii#!, .;!ift:,. .,..... .,.,,,. ..,,iL!;fGf;;!:.:t;,:;:;:::;;!;:;;::;!i!!t;,:;!i!ifii!!!!!!ii!;;;::;;::tit!;;;!f +,:!:;!;G: ,i!!!t#C;::ti::,. .,,,,, .,!!::,:;!fG0Lf!:::,:::G!:!,:...,!!;;;ifL!ifCtiti:!tGLffi;it;;;:,,;;:,,,:!f;!!;!!ii;;i +;,,...,:i. !G;G!f#8ti:,,.,,.,,,....,,,,::::;!8GL!:!##!;:,,.. ,::t!Ct,....,:;;:!C8Ltiffftt!;:;;;!t!;;:;;;!::;::::;!i!!tf;;:!!;!t +:,, ,;;i0i:G;!!;,,,,::,;:!:;,,.;C!i@Ltf;,!@!:;@#i, ::,,..:,..i::,...:,,;::f8f!!tLGG8Gi;;:::;t!:::!;:;!it!!!!ifCiiCit!tiiCGC +it;:,,.,;8;i0!;;;:,,,,,:::::;::::::!0i8@!iGi,;;;;##!,.,::::,:,, ,,,;::,,:;:::;iti;!!iitft!:;it!iCtiii;;;;;!iiiii!iiiiiiiitfi!tL +tiiiLt;!if8LG!;tttti!!!i!i!iti,;:Ci;iti!:L#f,.,!##!, .;!;;::!i. .i,:;;,,:::::i;!iifi!iiifi!;;;!!iL!!;;;;;::;:,:!!!!ftff!ttCt!;if +LtitCCiiG0C@Ci:;;;:::::::::;::,;!ii!GC, :@@i,:!##!:.,:;:.,:,,,..:;;.,,,,::,;t!!tCfi!tffCLiii;;iit!;:,:;!;::!;:!itti!!LL!!f!iiLCG +#LffLLffC#GG@t::;,,,,,,:::;:;..::L0!ii: :@0;:t#G!;:::ii:::::,...,t:,,,;!;::tCiiG0t!;itiititf;:;;!!;,.,:ti:;!iif88@C;;ti!!!!tLff# +#GG8G00GG08G8Liiii!;::,,,,,,...,:!fiL8i;!Lt!t#i:;;!::;!tttii;,..,,,,..,:;::ii!iLt!!;;i!!t;;;:;!;fC!;;;!!;;iftfttttii;!i;fLGii!!C +@@##@###GLL00CLfCLi;,,..,,,,..,,,:!!i088Gif##;,...:!:.,,:;i!!!, .,. .:!L!,!i!!tttt!if!!ti!!;;;!GLfttfti;:;:;!!;!;;;tGfifftii!;! +#0####@00CGLtfLi!;;:,,,,,:,:;,!!::,,,i#@tf#@!. ,:;f!. .,iCCt:..,!;:,,tGt!;iCtifLGG;;!!tLtGfitifti;;!!!;::i:;ft;;!!iC@GCG0iLC!GL +80888#CG#@fCitLf:,:;;;:!;,,,,:!f!:,,:!fL##i;:;!;!Gf;!ii!ittt:. :t:;:;;:;;:!fGi!titi;!i!fi!iiii!ff!,.:i:;::t!;;;:;;::ti!!!!!fi!ii +L88#LfftfCGtfi;fi,,::,:::,::,;ittf;.,0t0@i:,;f0Gt!t!!8@8#8Lfi!!!;:,,,,,,;;;!!!iii;:!i;!!;:ifLC;;;:,.,::,,:!fi::,,,,,,,,,:.,::!t! +;ii;iL;,,::;i.,::,,.,,.,.:;i:,:::i:,;f#t!ti,,:;:,...!8CtCGCffLLLLLtt;;:,:tii!;;tf!;:;;iLt:i!!;:;;;:,:;i;;;!i!i;:;;;!!::,,;::,;;! +,., .,,.. :!,.,......,:::.,;.,:!08t!:Gi:..... ;C!:;!tCCffLLC0CL!;;!t0G;::!;;,.,!;;:::,,,:fit::;fftfC;:!;;tCL!ft!!;:tC!:;;; +!. ,C: . .; .i.:i:!,:C#t!CttCLf,.:,,:..:;;:::;!f0GftffCLttLfCti!;:!:,,;!;;::;iti!!iC!:!!Lt!ii;!L:iLL!tLit::t!;!LiLL +;!!!:. .;;;:;t! ::,:::;!;f;,;iLf;,;CGtLL:..,,,,.:i,.,,,,:;!;;;;;;!!fG:t0f:;ii;;fL;!,,:G00t;!L;,;ittt!f::,,,:,;CL!!;i0ftfffff +#####G;. .iCGCfLf:::!Li:fiiLi;i,,:if!;ii;:f!::;,,::::,,.,,,:::,,,:!;;;!!;,:;:,;iifit!;;:,,;ii;;!;::::::,::;:,::,,;0f;:;8#######8 +#######t,,:;;;;iG!;!!:;:,;::;,,;.:LCGf0C:;i!!@#f!tft;!;, ...,::..:tLf;t::.....,,,,..;it:,,:!!;;:;:ti;,..:iiifL!,ifii;;tffffL8## +###@GG##t;;. ,i;..,,,:;,;:.,.;i:;i;;;!i!:;C#f;00:.:8G..:!!;;:,..,,,,,:L:!;!:,. ..,,::,,,;!!:,,!i!!:,!!::i!,,,,:t!!tft:!::!; +@fi!;!t!:,!,. ,i. it:!f:;:,;,;;. .:;:,:@@:.::,.:::,:t0###8i:t:,;i!!ii;;ii;:,,,::,..,,,,,,... .,::.... .:. .:,,:::;::,,..,: +f;:,,::; .!. ,!, .:L!;t:;:,i,.,,,,!tfiifi;:.. .!!:..,:!C###C!,,@######C;::::;;;;;:::::;;!,. ,:,:.;:. ,..,:! +f!::::;!;::; ,t, :G!,:,,,:. .!!::;;!!;:;;,,..,:;i:,,:;itti;::!@#####8;;;;:,,,........,...,,,,. ..... .. .. .....!: +!:,:;ittfLC, ,t; .,,.. . ;:!;::;;;;:,,,::;;!!Lt!iitfLLfff::iii;;;:,.,..... .,,,,,,,. ... ,:::,, .. ,,, ,,, +!:,,::!i;!!: .;i. . .,., .,itii:,,,,,.!!!if!::;;!iiiii:!i;;tC: ., ...,,,.....:!tfttti;::,,,,,..,:,,,,,,,:;, .,,,.: +ti;,:::,,:!t,. ,i, . ,,,. : ,.,,:::;:::;;;::::.,.,,::,,. ;0!,;C;!!,...;!,,,..,,;!:::!ii!itfffi!;;:,:,;;::,.,,:!,.,,:!t;,! +t;::::::;iLC: .;. ...... .. .!LGLffLC!:,!tttL;iifL!f!!0ifti!@#Lf;!!!;::;::;it;:::!!!;;;;!!:,,....:,....:::!tiit;::,,: +i::::;!!;;!i; : . .,,,..,.,, .fGfti!i;:,:;tfLLfffffLLLt!i00;!iG8CG0LfftfLf;:::,::,,::,,,,,... ,::,,,,;!!ititf!;::,: +!:,::;ii!::!i. , .,,,. , .08;:,.,:,,,,,,:::,::::::,.:;;,..,::!t!;;!!!;:,...,::,:;::,.....,..,!tt!;:,:::::::::;;:!! +i:,:;::i!:;!t, .., . .... .:itf!:,,,:i!iffttt,,:::,,::::!C!;;;:,,:tii!iii!!!:::::::;:;;:,:::,,::::!!;,,,:;:,:::,,,:::! +ii;::,::,::::: ,: .. ..,::. :####0,:Ctf@G######@:CGLCf0C!C0G00G0Gt:CG080C080GtGi;;;:,:,,:;;,::;:::,..,,,,,,,:;;;;;:,,,:; +;:;;:,,....,,:,. .. . ..::.....,,;####C,,::C####G08L;::;:;8f::!ti!;;;;,,:;!!i!tfftitt;;:,,,,..,,,,,,,,,...,:,,..,,,,,,,,,:::; +:,,,,,.....,,:;!;,. .,,.,:!!;:;!!;;:,,!::;i;,.. .,. .CC. ...,,,,;:;::::,,.,::,,....,,,:,,::,,....,,,,, +:,,,,,,::,,:,,,,!i!. ,;i!;:,,..;!!iitf!!. .::. .;ttfi;:::;,:;:,,,,:,.,,,::,,,.,,,:,,,, +;;;;!!!!;!!;;:...,,;:,:,::::,.. . ,ifLi!i, .;:, .::,. .,:::;::;::;:;;;:;:::::;::::,:,,:::: ,:;!!;!i!ii!!:;:iLi!iG;!ti. ,it!fftt::!C!i!,. .:... ,,. ..,,,;;.,.,,:::;!::::::,,..,::::;!!ffitittti!!!;;tfi!ii!tfttGLtit; +:,,,,,...,;!.;C!;!i;;0#i:..,,,iLi:!t!if!!ft!, .,,,. .:,. ,:,.:, .,ifLffL!::f!:,,:!!;:,,,:!!i::!::!!;:!tti!;!8CLGCGt!tfCttt;:; +;;!:;t::,:G!,ifLCL!;C!i8:,:;ti:,::;ifCG;,,,. ,,,.:::!!;:;!;;t!;!L:::;::;!,,,;ii;:!::!C8;:C##@GLttiitiii!;!iiii,,C +;0t:GL!LfiCt0!;fiCCf!!;!8!:::,,!!if0Gi:, ... :t, .tGtG;,!ti,.!t!t!::,,,,,,;!:::::::!i@C;ifG0LtLG;;;:;itf:;Lf;;,:f +it:,L8!;::i8#f,.,,:;G0C;i@!,,;!tGGf;:. .,, ,, ,,... .:;C8: .::!f:,;:;, :;!fi:,...,:;;;:;;;tL;;iLi:;;t;::;!!;!f!!!!:iCti:,;t +... :8;...!GL@;. ::!;i!G@!;ift;:,. . ...,:,. ...Lf8L: ,..:;;::::,:,.:f!::,,:ifif!!t;iLft!i!!;;i!ii!!ifLfftit!ifii;:!!t +:!:,:i0: :8Cf@:. .:;it0C:,:,. .... .. ..,. .ff,..,;!i;:,.:,;tfttLt;;::;;;;::,;ii!!!;:;::;;;CCfftLLLC88LfLLt!tf!;tt!;:::!t +!it!::Gf, ,CLti#!,. .;!tLt;,. .,,.... ,.,,,. ..,,iL!;fGf;;!:,:t!:;;;;:::!!i!;;;::;!!;!i;,:;!i!ifii!!!!!!!i!;;;::;;::tit!;;;!f +,:!::;;G: ,!;!!t#C;::ti;:,. .,,,,, ..,!!:,,::!fG0Lf;:::,,!:C!;i,:..,:ii;;;!fL!ifCi!ii:!tGLff!;ii!;;:,,;!:,,,;;t;i!;!!ii;;i +;,,...,:i. !G;G!f#8tt:,,.,,.,,,....,,,,:::;;!8GL;,;##;;:,,.. ,;:!!Gf,..,,:;;;;iG@Ciiffftt!;:;;;!t!;;:;;!!::;::::;!i!!tt;;:!!;!f +:,, ,;;i0i:G;!!;,.,,::,;:!:;,,.;G!i@Cff;,!@!:;8#i, ,:,,..,,.,f;:,...:,:!;:L#Ci!tL0G80i;;:::;t!:::!;:;!it!!!!ifCi!Cit!tiiCGC +ii;::,.:!8;i0!:;;:,,,,,:::::;::::;:!0i8#!t0t,;;;;##!,.,::::,:,,..,;,;::,,:::::;ifi!i!iitft;::it;iCtiii;;;;;!iiiii!iiiiiiiifti!iL +tiiiLt;!iL8f0i;tttt!!!!!!!!iti,;:Gi;iti!:L#f,.,!##!, .!i;;:;!i, .t,,;;,,:;:::i!itiLfiiitLi;:;;!!iL!!;;;;;::;:,:!!!!ftff!ttCt!;if +CiitLLifC8G@Gi:;;;:::::::::;::,;!ii!GC, :@@i,:!##i:.,:;:.,:,,,,.:;;.,,,,:::;t!!tLLiitLLGCt!i;!!it!!:,:;!;::!;:!itti!!LL!;f!iiLCG +#CffLLffC#G0@t::;,,.,.,:::;:;..,:L0!ii: :@0;:t#C!;:::it:::::,..,,t:,,:;!;::tCiiGGi;;itiititf;;;;!!;,.,:fi:;!iit88@C;;ti!!!!tfff# +#G00GG80G08G8fiiii;;::,,,,,,,...:!f!L8i;!Lt!t#i:;!!::;!tttii;,,.,,,,.,,:::;i!!iCt!;;;!!!t;;;:;!;fC!;;;!!!;iftLttttii;!i;ffGii!!L +@8##8###GLL0GCLfCLi:,...,,,.....,:!!i088Gif@#;,..,:!:.,,:;i!;!;. .,. .:!t;,;;;!fttt!!f!iti;!;;;!GLtttfti;:;:;!!;!;;;tGfitfti!!;! +#0####@00CGLtfLi;;;:,,,,,:,:;,;!::,:,i##tf#@!. ,:;f;. .,!CLi!..,i!;:,tGt;:ifi!fLGG;;!ifLiGfitifti;;!!!;:;i:;ft;;!!iC@GCG0iLC!0C +00888#CG#8fCitLf:,:;;;:!;,,,,:!fi:,,:!fL##i;:;!;!GL!;itiittt;,.,t:;;;;;;;::fGi!titi!!iiL!!iiii!ff!,.:i:;:;t!;;;:;;::ti!!!i!fi!ii +L88#LttitL8ffi;Li,,::,,::,::,;ittf;.,0t0@i;,;f0Gt!ti;G#8@@LLti!i;;:,,,,,;;;!!!iii;:!t!!!;:tfLC;;;:,.,::,,:!ti::,,,,,,,,,:.,::!t! +;!!;if:..;;!i.,::,,.,,.,.:!!:,:::i:.;f#i;ft,,:;:,.,.;GGfLGGfffLLLLff;;;:;tii!;;tf!;:;;!ft;t!;;:;;;:::;!;;;!i!i;:;;;!!::,,:::,::! +,., .. . :!,.,......,:::.,;.,:!G@t!:0i:........:Lt;:;!LCLffLLGCLf;;!i00;;;!;;,.,!;;:::,,,:fit::;fftfC;:!;;tLf!ft!!;:tC!:;;; +!. ,C: . ; .i.:i:!,:C@t!CftCLf,.:,,:,,:;!::::;iG0LttfLCftLtftii;:!:,,;!;;::;iti!!iL!:!!Ct!ii;!L:iLL!tLit::t!;!LiLL +;!!!:. .!;;:;t! ::,:::;!;f;,;iLf;,;CGtLL:..,,,,.,i,.,,,,:;!;;;;!;;!tC::0G:;ii;:fL;!:,:G80t;!f;,;ittt!f::,,,:,:LL!!;iGftfffff +#####0;. .iLGGfLf:::!Li:tiifi;i,,;it!;ii;;f!:,;:,,;::,,..:,,::,,,,;!;;;;;,,;;::itfii!;;:,,;ii;;!;::::::,::::,::,,;0f;:;8#######8 +#######t,,:;;;;iG!;!!:;:,:::;,,;.:LGGf0G:!t!;L#8!!tfi!;, ...,:..,ifL!t::,....,,,,.,;ti:,,,!!;;:;:i!;,,,;iiifL!,if!i;;tLfffL8## +###@GG##t;;. ,i;..,,,:;,;:.,.;i:;i;;;!i!;:i@G!C0;,:00, ,;!!;:,..,,,,,,L!;;!;:. ..,,,:,,,;!;:,,!i;!:,!!::i;,,,,:i;!tft:;:;!; +8fi!;!t!:,!,. ,i. it:!f:;,,;,;!.. .:;:,,f@f,,:,.:;:.,!C@###L;i!,,ii!it!!!i;:,,,::,..,,,,,,.. .,::.... .:. .:,,,::;::,,..,: +f;:,,,:; .!. ,!, .:L!;t:;:,i,.,,,,!tftiti;;,. .:i:. .,!f@##0t:.;#######!::::;;;;;::::;;;!,. ,:,:.;: ,..,:! +fi;;::;!;::; ,t, :Gi,:,,,:. .!!::;;!!;::;:,..,::!:,,,:!tti!:.:0######!,;;:,,,........,..,,,... . .. .. .. .....!: +!:::;ittfLC, .t: .,,.. .. ;:!!::;!!;:,,,:;;;!;tf!i!itffftf::!tti;!:,.,,.... ,,,,,,,. .. . ,:,,,, . .:, .,, +!:,,::;i;;!: ;i. . .,., .,itti!,,,,,.:i!ifi::;;;iiiii;!i;:ift:,,, ...,,,.....:;ttttt!;::,,,,,..,,,,,,,,,:;, .,,,.  +ti;:;;:,::!t,. ,i, . ,,,. : ,.,,:;;;:::;;!::::,,.,,::::,.:0t,,!tiG;.. :!,,,..,:;!;::;ii!itffft!;;:,:,::::,.,,,!,...:!t;,, +i;::::::;iLG: .;. .,.... .. .;CGCfLfGt;,!ittC;iifC!tti0tii!tC#CL;;!!;::;:;!tf!:::;!!:;!;!!:,,....:,....:::!titi;::,,, +i::::;!!;;!i; : . .,,,..,.,, .i0fttii!;::;tfLLffffffLCfi!G0i!!t80L0CLftfLf::::,::,,::,,,,,... ,::,,,,;!!ititt!:::,: +!:,::!ii!::!i. : .,,,. , .G8!:,,,,,..,,,,::::,,:::,.::;,..,::;!i;;!!!;:,,..,::,:;::,........,!ti!;:,:::::::::;;:i! +!:,;!::i!:;!t, .., . .. . .:itt!:,:,,!;;tftit;::::,,,,,:;f!::::,,,!ii!iiii!!:::::::::;::::::,,::::!!:,,,:::,:::,,,,!:! +ii;::,::,::::: ,: . ...::. :####0,,CC!CLL######LLGLGf8C!C000GL0Gt:Lf080C080GtGi;;;:,:,:;;;:,:;:::,..,,,,,,,:;!;;;:,,::; +;:;;:,,....,,:,. .. . ..::.....,,;####G:,::;########8;::;;88;:;ii!;;;;,,,;;!i!tfttitt;;:,,,,..,,,,,,,,,...,::,.,,,,,,:,,.:::; +:,,,,,.....,,:;!;,. .,,.,:!!::;!!;;!:,:::;it;;;;, .::. !L. ....,,,,;:;;:,,,,.,::,,.....,,:,,::,,....,,,,, +:,,,,,,::,,::,:,!i!. ,;i;;:,,..;!!i!if;i, ,,. .;ttfi;:::;,:;:,,,,:,.,,,::,,,.,,,:,,,, +;;;;!!!!;!!;;:...,,;:,:,,:::,.. . ,iffi!i; .;:, .::,.. .,:::;::;::;;;;;:;:::::;::::,:,,,::: ,:;!!;!i!iii!:;:iLi!tG;!t!. ,it;fftt::!C!i!,. .:... ,,. ,.,,,:!,:.,,:::;!::::::,,..,::::;!!ffitittti!!!;;tfi!ii!tftfGLtit! +:,,,,,...,;!.:C!;!i;;0#i:..,::iLi:!t!if!!ff!, .,,,. ,:,. ,::,:, .,ifLffC!::f!:,,:!i;:,,,:!i!::!::!!;:!tti!;!8CLGCGt!ffCttt;:; +;;!::i::,:G!,iLLCL!;C;i8:,:;ti:,::;ifCG;,,,. ,,,.:::ii;:;!;;i!;!C:,:!;:;!,,,;i!::!;:!C8;:C##8GLftiitiii!;;ii!i,,C +;0t;GL!LtiCt0!;fiCCf!!;!8!:::,,!!!f0Gi:,.. ... :t, .iGfG;,!t!,.!f!t!,,,,,,,,;!:::,:::!i@C;ifG0LtLG;:;:;itt:;Lf;;,:t +it:,L8!::,i8#L,.,,:;G0C;i@!,,;!tGGf;:. .,, .,, ,,. .:;f8; .::;t:,;:;, ::!Li:,...,:;;;:::;tL;;iLi:;;t;::;!!;!f!!!!:iCti:,;t +,.. :8;..,!GL#;. ::!;i!G#!;ift;:,. ...,:,. ...Lt0C:.,..:;;::::,:,.:L!::,,:ifif!!t;iLft!ii!;;!!i!!!ifLfftit!ifii;:!!t +,!:,:i0: :8Cf@:. . .:;it0C:,:,. ..,. .. ... .Lf,..,;!i;:,.:,:fLftft;;;;:;:;:,,;ii!!!;;;::;;!CLfftLCLC08LfLLf!tf!;ti!;:::!t +!iti::Gf, :GLti#!,. .;!iLt;,. .,..... ,.,,,.. ..,,iC!;fGf;;!;,:!i:;;;;:::!ii!;;:::;!!;!i:,:;!i!ifii!!!!!!ii!;;;::;;::tit!;;!!f +,:!:,:;G: ,i;!!t#C;::ti;:,. .,,,,, .,!!::,::!fG0Lf;:::::i:L!;!::..,:!i!;;!fL!iLCi!ii:!tCLLfi;ii!;::,,;!:,,,:!t;i!;;!ii;;t +;,,. ,:!. ;G;G!f#8tt:,,.,,.,,,....:,,,:::::!8GL;,;##;;:,,... ,!::;Gf,..,,:;;;;iC8Ciitfftt!;:;;!!t!;;:;;!;::;;:::;!i!!tt;;:!!;!f +:,, .,;;i0!:G;!!;,.,::::;:!:;,,.;C!i@Cff;,!@!:;8#i, ,:,,..,,..f;:,..,:::;;:L#C!;ifGC80t;;:::;t!::;i;:;;it!!!!ifCi!Cit!titCGC +ii;::,,!!8;i0!:;;:,,,,,:::::;::::;;i0i8#!t0i,;;;;##!,.,::::,:,,..,;,;::,,::::;;tLt!i!iitft;::it!iCtiii;;;;;!iiiii!iiiiiiiitti!iL +tiiiCt;itL@f0i;tttt!!!!!ii!!ti:;:Gt;iti!:L#f,.,!##!, .!i;;::!i: .i,,:;,,:::::i;tftCfi!itCi;;;;!!iL!!;;;;;::;:,:!!;!ftff!ttCt!;if +GtitLLffG@G@Gi:;;;:::,:::::;::,;!ii!GC, :@@i,:!##!:.,:;:,,:,,,,.:;:.,,,::::;t!!tCCfttLfGGt!i;!!it!;:,:;!;::!;:!itti!!LL!;f!iiLCG +#CffLLLLG#GG@t::;,,.,.,:::;:;..,:L0!ii: :@0;:f#C!;:::it:::::,..,.!;,,:;!;;;tC!!CCi!!ifitfttf;;;;!!;:.,:ti:;!iit88@C;;ti!!!;tLff# +#G80GG8GG00G8f!iii;;::,,,,,,,...:!f!L8i;!Lt!t#i:;!!::;!ttt!i;,:,..,,,,,::,;ii!!ft!;;!ii!f!;;:;!;fC!;;;!!;;iftLiittii;!i;fLGii!!L +@8##0###GLL0GCLfCLi:,....,,,....,:!!i088Gif@#;,...:!:.,,:;i!;;;. .,. .:;!,,:;:!Lfft!!f!iti!!;;;!0Ltttfti;;;:;!!;!;;;tGfitfti!!;! +#0####@0GCGLtfLi;;;:,,,,,:,:;,;i:,,:,i#@tf#@!. ,:;t!...,!CL!!...!!;::tGi::!i!!fL00;;!itfiGfitifti;;!!!;:;i:;ft;;!!iC@CC00iLC!0L +00000#CC#0fCitLf:,:;;;:!;,,,,:!fi:,,:!ff##i;:;!;!GL!;itiitft;,..i:;:;!;;;:,tL!!titi;!i!f!!iiii!ff!,.:i:;:;t!;;;::;::ti!!!!!f!!ii +L0G@LttifC@ffi;fi,,,:,,,:,::,;tttf;.,0t0@i;,;f0Gt!ti:f@8@@CLftit;;:,,,,,::;!i!iii;;!i!!!;:ifLC;;;:,.,::,,:!fi::,,,,,,,,,:.,::!t! +:!!;!t:,,;;!i.,::,,.,,.,.:;!:,:::i:.;f#i;ft,,:;:,.,,,fGLfCGLffLLLLLf;;;,;fii!;!ff!;:;;ifi:i!!;:;;;:,:;!;;;!i!i;:;;;i!::,,;::,::! +,., .. :!,.,......,:,:.,;.,:;G@t!:Gi:. ... ..,fL;:;!fCLfffLGGCL!;!iG0;:;!;;,.,;;;:::,,,:fif::;fftfC;:!;;tCf!ft!!;:tC!:;;; +!. ,C: . ; .i.:i:!,,L@t!GftCLf,.:,,:,,,;i::::;!L0CttfLCLtfffLi!:;!:,,:!;;::;iti!tiL!:!!Ct!ii;!L:iLL!tLit::t!;!LiLL +;!!!:. .;;;:;t! ::,:::;!;f;,;iLf;,;CGtLL:..,,,,.,i;,,,,,,;;;;;;!!;;iLt:00;;ii::tL;!:,:G80f;if;,;itti!f::,:,:,;CL!!;iGftfffff +#####0;. .iCGGfLf:::!Li:tiiLi!i,,;if!;!i;;fi,,::,.::::,..,,,::,,,,;i;;;;;::;;::itt;!;;;:,,;ii;;!;:::::::::;:,::,,;0f;:;8#######8 +#######t,,:;;;;iG!;!!:;:,;::;,,;.:LG0f0C;!t!:!#@;;tft!;,. ...,:,.,;fLt!;:,....,,,,.,;ii:,,:;!;;:;:i!;,,,;iiifL!,ifii;;tLfffL8## +###@0G##t;;. ,i;..,,,:;,;:.,.;i:;i;;;!i!;:;8#i;0t::G8; ,;!!;:,..,,,,,,it;;!;:. ..,,,::,,;!;:,,!i;!:,!!::!;,,,,:i;!tLt:!::!; +8fii;!t!:,!,. ,i. it:!f:;,,:,;!.. .:;:,,!#8,.,,.,;:..;L@###C;;t:,!i!!t!;!i;:,,,:,,...,,,,,... .,::.... :. :,,,::;::,,..,: +f;:,,,:; .!. ,!, .:L!;t:;:,i,.,,,,!tfiiif!;:. ,i:. .,;f8##@L!,:#######i::::;;;;;:::::;;!, ,:,:.;: .,..,:! +fi;:::;!;::; ,t, :Gi,:,,,:. ,!;::;;!i!;:::,,.,,:;;,.,:!itii;,:C######L:;;:,,,........,...,,.,. . . .. .. .....!; +!:,,:!ttffC, ,t: .,,.. . ;:!!:::!!;::,,,:;:!;if!!!itffftfi:;tti;;::,,,.... ,,,,,,,. .. ,:,,,, . .,, .., +!:,,::;!;;!: ;i. . .,., .,ittii:,,,,.,!!!tt;:;;;!ititi;ii;!fC: .. ...,,,,....:!ttttt!;::,,,,...,,,,,,,,,:;, .,,,,, +ti;:;:,,::!f, ,i, ...,,,, : ,.,,:;;;:;:;;!;:::,,,,,:;::,.,i0;,!0!i;,. .!:,...,:;!;::;!!!itfffi!;;:,::;:::,.,,,!,...:it:!! +i;::::::;iLC: .;. .,.... .. .:LGCLCfGfi:;iitC;iitC!tt;CGi!tCi@@L;;!!!::;;;!tLi;::!!!;;!;!!:,,....:,....:::!tiii;::,,, +i;:::;!!:;!i; : . .,,,..,.,. .i0fttttt!:;!ffLLffffftLGft;f0L!!i88L0GLftfLf;::::::,,::,,,,,... ,::,,,,;!!itiiti:::,: +!:,::!i!!::!!. : .,,.. , .G0!::,,,,,.,,,:::,:,,::::,,,;:, .::;!t!;;!!;:,,..,::,:;::,.....,..,!ti!;:,:::::::::;;:!! +!:,:;::i!:;!t, .., .. . .:itt!:,::.:t;!tiii!:::;,,,,,:;!i::::,,.;ti!i!!i!!:::::::::;;:::::,,::::!!:,,,:::,:,:,,,:::! +i!;::,::,,:::: ,: . ..,,:. :####G,,CGttLf#######tCCCtGL;CG00GLG0t:L!G80C080GtGi;;;:,:,:;!::,:;:::,..,,,,,,,:;;;;;:,,,,; +;:;;:,,....,,:,. .. . .,::.....,,;####0;,;::@########t::;:t0;,:!ii;:;;:,,:;!i!tfftitt;;:,,,,..,,,,,,,,,...,:,,..,,,,,,,,.,::; +:,,,,,.....,,:;!;,. .,,.,:!!;:;!!;;ii:.::!it!;;;:. .,. .L! ...,,,,;;;;:,,,,.,::,,.....,,:,,::,,....,,,,, +:,,,,,,::,,::,:,;i!. ,:!!;:,,..;!!i!if;i; .:, .;ttfi;:::;,:;:,,,,:,.,,,::,,,.,,,;:,,, +;;;;!!!!;!!;;:...,,;:,:,,:::,.. . ,ifLii!!. ;:, .::,,. .,:::;::;::;;;;;:;:::::;::::,,,,:::: ,:,.,....,::;::;iiftt0i,:::. :;;;!:,!L!;!!;, . .,.. ..,,,;:.,,,,,,,........ ....,::;:,:::;;;::;;;;::::,:!i!ifftit;;!i +,...,,,;::;;;:;t!t!t:i@tCG! ,fC!tCtLf;!C0f: ,::..:::.,.i;,:. .:,::::::;:,... .:::::. ..::::::;;;;:;:,,,:,,::!!:;ii;;,:;:i +,.,:;:!!!if8C:!L!f!:,;8#i;,,;;:!!!!itffG:!::,. .. .,. ,,,,::;;;titttiiLG:,,,,,,..,,,,,,;;Ct;!!ftt:,,,,;i!;!!;;!;!Ci;;!::,i +;;!i:;;;;:i0!:itLLL;;;:i8;,:ii,,:!!i00f:,.. . . ,;, .iG0f:::;tf!!Li:,:;i;:,.,,!ii:;i;;!i;!iti!;;C0LGCCt;itLttt;:;!:. +,f0:!G;,;;;tt8;:i!iti;;;!8!::::ifC0Gi;,..,, ,, ,.. ..,i0: :!it;:!:,:t!!L;:;;:!!:,,;ti;:i;:!G0:!0##8GLftitiii!;!iiii::C!ft +!f:,:8!,,:;t8#!,...,!LGf;i@!;itfCt;:, . . ,, .. .,L!C0;. .i!fii..:;!fi::,,,,,,!::;:!;;!i@f;tf0GffGL::;;iit:;LCi;::iftt +:,, .i8: ,:GLL#; .,:;;iiC8!!i:,. ,.. ....::, , ,!:;:,., ,:;;!;,,,,;C!,,..,::;;;;!!fC;;!t!,:;!;:;!ii!ffii!;!Gft;,!iL8L +:!!::;8f. ,C#f#@;.. ,:;!ifi:,,.., ....,..,:, !G:. .,::,. .,:;::i;it;;;::::;:,.,it!ti;!;;tii!!!;::;!!!!tLGCLtfftiCt!!:;;!ii! +;!tt;:!0:.,GLGt##!. ,!tti:,...,,,,,.. .,, .!,...,.,;C!:;LLi,..:i:f;,:::::;;;:,,::,,!i!!!!;:::::;LLi!!tttfCG!!ii!;!!;;fi!;;:;;i;t +:;;;,,:tt.,!C!Ct##t;!t;:,,. ..... . ..:t;:,,,,!LGLfi;:::.:i::!;:..,:;fi;::;;;;;!i!ti::itfitf!!:::;;;!!;,,,,,,;:!itft!i!i;:t +;,.. .,,.!8;!Cf#@C!,..::,,,,,,,..,,,,,::!:i@Cf!:i#t;:,,. .. ,;,,CG::,,:;ii!;!fGCtffi;;;;i!fLiti;:;::;::,;;,,,::::;ii!!!!::::;C +:.,. ,:!ft0;:C!:;:, ..,,,:,:,!:i8iCL!C;,:C@;:!#8: .,.:;:,.,:::;;!!f@Giiii!!!;;!::::;i::,:i!i!!!;;;!;;i:;Ctt;;!!iti!C +!,:;:,,ii@Cf8!;;;,,,,,,,,,,,:,,::;!80f#LiGi,,:::;#C;,...... . .!,,,,.,:;;!:;00i;:ttttGt::::::it!;;;;!;;!tii!!!!!;!ftiittfCCi!G +t;;tftiLLC80C!:ft!!!!!!i!i!!i!,;:i;iif8;i8f:;::i#!:.,::,,,,,,,,.,.,;;:,,::;;;iffiiiii!it!::itiiLCfLf!;ii;;;::iLt;!!itiftCfi!!;;t +@fLGLG8G0#0#G!:;;:,::::::::::,,;!t;i8!,,L#G::!8#!,..,;:,::::;;,, ,:,.,::,:it!LCC0CfLfGCi!;;!!!iti!;;!;;:::,:!ii!!!tGi;fLtiifff0 +#GGGG0800#0G0i:;!;:,,::;::::,..,!Ct8G: ,0#i;i##i;;::ii:,::,,,,,...,,,,,:::!L!iG0LftfCC0Gftt;;:t!;i,,,;L;,:iiiCC0G!:if!;;:!fLC@#8 +80##0###GL08Gtiiff!!:,,,,,,,,..,;Li!i;,,LL!!##i;;:::!iiit!:,..:. .;:;!i;:tLfiiCfi!!ttfffit!:::;i!;:,,;i;:;!tfCCLf!:!i!;;;;!!i@LC +@###@#@8CLLCfCi!i;:,,...,,,,,,,,:::!8f!;!fG#C!;;;!::,:::::,.,:. ,,,,:;;::!!;!fti!;!CfCt;:::;:!0t!i!!!!::;:;iii!!;;iL!;iCi;;!;!C +88#8#0CG@LCf!tf;,,,,,:,::,:;;;i;,,,;C#8!i##i,..,,:t: ,;iii!!!;;:,. ,if:,;;;!fC0G!!ifftii!;!;fffifLLt!:;:,:t!!!::!G8i!titL!ft!t +80CGCGfC#CLLitLt::::;,:!,,:::it;:,;,!#Cf#t;:,::;Lii!:t@@@@@000G0f;;;::;;::!t!!LL0L;;ifCfiL;:;!fi;:;ii!;:;f;;;;:;!,!0C!!LGi0ttLtL +tiCCi!;!t#Gt;;;L!,,::,,,,,;;:it!;i,:tf@@!:,,tCLfGLi!tLGLtffCCCCLGGG8L;:,,,itittt!!ifi!i!!!i!!;fi:,,tL!!;!ii;::::,,:;;::;:;!!i!;t +;:,:i!, ,::, .!:,,,,:,,,.:::,::,,;,;@@t;!!,:!fi;:;:::;L!:;:!LG0CfLCCG0t!!!tL;:fi;;!i;!i!:LLLt;!!:::!tt!!;!ti!:::,:::,,,,.,;!t!!i + .. . .. ,L;......,..,.,;,; ,;08f;;Gi,.... .,;!;,,,::;ift!!ifCCLCCi!!!fi!:,:!!i;!!;;:;Ltf:;tG0Lfti:::;iti!fi;!::iti;;::! +!. .. .tC, ,. ;:.!::f:,,,!8Ct0i!0t:. .,;;fL,.....,,:::;!iiiitf!8@fi:,,:;!!;::;!!;!tti;;tLfiif;;t:;fGtfLit::ifGff;:;t +:. ii;;;if:.,:!;:;:;L;!i,;!!i!ifCGfLL, ,;;:;i;;;::.....::;,.,!Lfti;,!8t!!;,,tLiti;;iG0f;!C!,ifGf;;t!ititt;;fLii!!fffft;;fL +itttt;. ;tLCLLG!!itCC!ifiit:;:,:ti!,;f;;Cf:,!#@;!tft;!;, ...,..,:;;,,,;;;:!!;:i!;::,,LGf:;!!:,,:;;;:!;;;;::,,CCi;i0@####Lfft +######C,,,,:::!Li,:;;;!:::,,,.!,,tLi!fi;!f!,:8#i;0G:.;8C..;!!!;,.... ,:;..;!i;;;:!;,;;!;::;:,,:::,,,,!iitt!;;Ct!!!tffC###### +#######i::. ;;. .i,:f:,!..,,f::fGL00CGCf,;@@:.::,.,:,,:t0###8i;f;,;ii;!!;,,,,.,. .,;;!i!!ii!:!,ifi!;,;i!;if!,:;;ff!ii!:;iiitL +#0Ltffi:,!, ,i. ;f;;L;:;,:::;:::;;;;;;,.i!;:..,;L!, .,:iG###Gt,:8######L!t;. ......,,,,.::,,..,:;;,.:;..;:..:,::;:::,.,..,:: +L!:::!; :; ,!, .,Ct!t;:;,!;.,:::,,,,:,:;::;:,:CLi!;,..,:!iti!:,i#######;!:::;!;;:,,...,... .. .. ,;:.,.:. . :f: +i;:,,:;:,:; ,f, .:Gf,,,.,,. .!t;!iiitt!:,,,,.,:;:;f!;;;!itftff,:!iii!!;;,;!!;::;,,,,:;!:::,. , .,: ., . . :f; +ti!;;;ifGL, ,t: .,:. .. ::!!;;;!;:::,,.:,..,:;ii!itttft!ii;:it; . ..,,,.. ....... ,:,.. . .... . .. ,,: +;;;!tfiiCC, .i! . .,.: .,iti!!;;::;:::;::,..:,:,:;;;:,.;0!,:i!;;. . ,..,, .,::::,,,,.. ,:,,,,...,,. , +iii:;;::!i;. :!. ...,,,, : ,,::!;iLCCLCfCCL;;!iiL;iitC!ii;i8C!!Lt@#t;;;;::;;:::;;::iffftffi;::,,,,.,,,,,,::;;i; .,;,  +i::::;!itGf. .: ,,,.. .. .:iGfttif0CtitLfLLffffftfGLfi!G0i!L@@0CGfttLLLifCL!:;;!!!itttft!;:,,,:!:::.,:;;!:::;;:,.., +i:,;;;;;itf, :, . ..,....,.,. .G0!::,:;!:,,:::::::,,,:::,.,;i,.,:;;;!i;;;!;;;!!i!:,:::,:::;::,.. .,,...,it!ittti;:,,,, +i::;!i!::!i, ,, ,,,,. , ,:!tf!;,:;:tC!::,.:,..:;:::,,:;;;;:::,,..:!!!!;!;!;:,::,,,,,,...... .:;;::::::::;;::;!;;i! +i::;ii!:;!!: . .. . ,####0..CCfttt0CC8@#tiCGGfGf;CGG80LG8C;L,;GfLCffGLG!,:,::!;;:,..,,,,,,,:it!:::,:,,,,,,,::!i! +!!!::!;;;;!i :, .,,, ,fCC0!.,:;;8#8#######::;:!ti::;;;;:;00;.:!Lfiiii!i!;:::::::;;;:,:;;,,:,,:::,,,:::;;;:;:,,;:; +i;:::,,,,,:;, ., .. .:,,,. .,:i;;;;::,,.,G####tii!,. .Ct .,:. ,,. .CCf!!!;::;!!;;::,,,,,,,::,,,,,...,,,,,,,,:::;:,,,,; +!!!:,,,,,,,;!, . ,.. .:!tiiffLLLLLii;,:;;,. .,, .fC. .,::,,::;;!i;;:,,,,,,,,,,,,,,,.,,,,,::,,,...,,,,,,,: +;;;!;;;::;;:::;:. ..,,,,...:,::;iffft. .,;;;!!;!;;;:;!;;:::;::::;;;;;:::::::,,,  ..:if!;:,,;!::,::,,. :!: !.it.!!ttt!. . ., .;, . ,:, ,,::,,........,:::,...,... .,,,.,... . + :;::!!,.!Lt!, .,,, .!: .:,:8f!t!:. .., .,:. ...:::f, . .:,::,. ......,,. ...,,,,......,::: + .,.,,, ....::;,. i8;:;!, .,::!f;;C8t:. ::,.,;;,.,.!;..,!; .. ., ..,,,,. ,,........,,,,....::;!!;;;::,,,:::; +!i!itt!. .. . . ,,..;@8tG!.....iLiLC8t;;:,. .. .,,. :,..::!;, .:, . .::,,... .,,,,. ..,;iti;:,::,,,,:::::;;;::,; +tttLt;,. :;,.. ,:::i!;;;;f##!:,!i,.;if00t:.. . . ,!, .L0C: ,:::,.,:,, ..,,,,,,,.,!;!:.,:,,,:;;::,,... .,;!ifff!f!:! +ttL:,,,::::;:;,!G:!GCGC;!:;#C;;;::;!CGi:,.,,. .. ..... .,i0: .:;!!!;!tLi!;:!C:. ...,,;;::..,,:;;;:::::;:!;,,,:,,,:!!!iLi!;:i; +!i,.,:tC!;Li:!:LtG!:f!:;i!;i#C;:;fGC;:, ... ., .,,,,,,..,fGi, .:C0L::;:;t;;CL:,.,:::,,...,,;:iG!!!iii:,:,,;fi!!!;!i;fCt!!i;; +;:,::if;.;8!,!!iG#i.. .;ttiL#ftLt;:. ...::, ,f;,. ,:iG!iC:,;!,:ttiC!,,;!t!;,..:iti;!!;!ti;!ttit!f8C0GLt;;;!iit:;Gf +!:;if:,, :Gi,.,i8C#;. .,;!tfLt::,.. ... .. . :tC;...:,,.:!;CL;,fi:;!;:.,itCt:;;!;!i;.,!fi;:!::i@f:C###GCCtiii!!!i:!ti;::ft +;i;!:;!i!:!8: .L#L@#;,..:iCL!,....,......., ,,..;,.,!0G,.,,,,,!C;!f,.;;;::;,,:,;i!:::,,,:,:;;;!!i!;;i8i;tfGtiiL;,;!i!!;:tCt;::;t +;tt,;iift;;Gt.i0fLi##i::tf;:. .,,,,,.. .i!,,;;:,:tt;;;!i;:!:.,. ,ti!!:;;:;::::::.,,:!;!:ittG0!;ii!:;!i!!iiiitCtti!;fti!:i!L +.,;,:;;:,,,:!.,i0iLf##ti::,....,...,.,.. .,it:,,.,,!0GfLi:..:. ,:;:;:,,:::;:;,,,!:,,it;;!;;;;i!!tfi!;tfLCG0GCCCtiff:!ti!;;:!t +;,.,. . .::;t0;Gti!;,,::;::;:;,;,;:t: .,:,,,i0i:..!@!;;::,..,. ,C!Gf,...:;;;;:,::,,:!i!!!:,;!!!!Lt!;:;;!!ii!!!;::;;:;iti!;!!f +;,.,,,;, .,tt8iL!;:;,......,...,.,,,,;GC:;fi;:i!0C::i#f:,,::::,,: ,!ff;,:,.,:!t!:,:!!!;iLftf!:iLGLCf!;;:,::,,:;:,,,,:!;i!!;;!;;t +;,,,,:;::;ifC#LGi:!;;!:::,,,...,.,:,!!tf0;;;;Lt;;!!8#!::!!,.,..:, ,t,.,::,,:;!!;!t00ftittti!!;!!!if!:::::;;:;;;::::;;;ft;::;!!f +t;iCfi;;!L0G#G@0i:::,::::,,,,,,,:,;:!;ttCLi8tGt,,!##!, .,,..,.,,, .:,...,,:;::;:i8Gt!;itfCL!:;:::;fi;;;i;:;!iiii!!!ti;ti!;!!iGC +LiL##CffLCC0#0G8i:,,,,,,,,,,,.,..,:;it!!CG#@iLG!i##!,.. ....,. .,,,::::,:;!:::iLt!;;;;!i!::;tt!tCtiit;;!;;;;;!ft!!!ii!;!ttt!t +#CC800#00#GG0G0Ct!!i;::,,.,...,. .,:C0;;iit;;GL@#i;:.,:;;!;:,,. ,,i!,,:;::;;;;;!ifttLi!iiti::;!!!ifi;;;!!:::;:,:;;;;ttCf;!CfiiL +#8@CG##@###CfC0CLffLt;,,...........:iiiL0i..;f##!,,::t008@GLfi;;;;::,.....,:::;fif00GtiLLC@f!!i;;!f!;!,::;i::!ttittLL!!ff!!;:!fC +###GG###8@8GCLffCi;:;::,,,,:.,:,::,,:0f!!;,,t#L!;:::!@0fLC0GCLG80GGi;:. .,:::;LLiG#0t!!ftfft;fi;:;!!!:,.,:t;:;!it800C!:!i!;;;!!L +@GCC0G0#GC#8tGttff:,;!!;;!!,,,::;i;;!!;;0ii@#ti!i!!;;Lt;;;iLG0CLCGG08L!;::i::fi!!tCt!;;!fif!:;::!:!Gt!!!!!!;;i;itifti;;!f!;tCi!L +fG!LG@LttifC8tii!C!,,::::::::::!iitft:,;f##GtG!::,,..,:,,,::;!tt!!ifG808Gi!!,:;::!ttft!tfiti!!!!;;iCftfLGfi;;;;:!i!!;:;f@f!tti!f +,::;!;tt, ,::;,.;:,,,,:..,.;!i;!:::i::;i8@Cii::i. ,:!:,.....,,:;;;!iitfGG;;;!i!;!fLGG!!!ifftGLittfii;;itt!;;Li;!;;;;;:C8LifGtfC +L;,,: .,.. ,f: ,,..,..,,:::::..::!0@ftfGf,,,;;:;CLt,,,..,::,.,!Lfi!it:;8#Ctf!!tiii!!tit!!ittiitf!:,;Cti;;it;:::;:,,;!;:;:::i +08;. . ,Ci. . :. !.:f:!..!@#t;0C!;it!;!GC!iti:. ..,,,..,:ii:!,.,C8i;:;!ii;:;ti!;;:;LCG!;!;:::!i!;:;it;;::,,,,:,,,. ,! +ftC;:. .,::,:t!. :,.,,,;;;f;,,:8#!,:f#!;8##Litii!8@: ... .i,;!ii!;::tfi:,:;;tt;!!!;;;ii!,;!Lf!;;i;;!!!!;;ti:;,:!!i +t;iiCC:. tLft!fi:,:!f::t:iL;ii,:!ii:,;##!;88t:GG, :8@: :fLi!;:,,;, .,!if0i::!!;,.,!:;::,,,::ttf!::!fi!tL:;!;!tCfiLii:,:t0L +!:iitLt. .,:;!!LC;!i!;t::!::;,!,.!C;tffGGit08;.::. ,::,,!L@###@i!t:,;tt!!;;:!tf;;i;,,:!!!;;:;iti!!iC;,;!L!;ii;iC!fff;iLti;:iftt +:,,,:;;;,,.. .;f:.::::!,::,;,,i,;iit8!:iLfi;;,:, .:,..,;iL080f;,,@######f:,;:;:!i;:!CC!t;,,G80i;if;,;iiii!f::::::,.;Gt!!i8#@8 +8CCG0@#8!,;. ,t, tf:iL:!!,;,;L:,i0C!;!;;;;!;:::,.,!,. .,;!!;;,,i#######:,.,,:!tt!;!!!;:.,;i!:;;;:,::::,::::,,:,:.;Ci;;!G8## +########i ;,. ,i, ,if!!f:!;,:::i,,!0fCG;:::,,.;i!,,it:;;;itfftft,,;!!iti;::. .,,,..:!fi,,,,;;:::;:ii;:,.,!i!itf:.!i!ti;!tti +########; .i. :!, .L8!;i:!,;t,., ,:;!;:;::. .,,,;tti!itffft;!t:,;;;,. ,,,,::,. .,,,:::;:;!!::,:i!;;.,!;,:!;,.,,:i;;!iL! +8ftii!tf: ,:. :L, :Ct..,.,,,.::;:..,:::;:;:;;:,,,::;:;!!;:,.:L!::!i::, .ifLi:. ......,,,,..,... .:::..,. .;. ,,,,:,:;:. +f!:,,,:;!!!, :f: .,,. ,,. ::tfi:!LCLfCf808Cti!if;ttfCii!:i@0t;L0t#G;::;ittt!;:;;;;:::::::,... :;,,.;:.. +tt;;::;;;LC: :f: ..:,.:.. .,tti;tLtttt00CtiiffLLffttfitCtfCffftiL##CCtfCGG0Gti!:,,.,,.,:;::::,.. , .,,... . +;:::;iti:!L: ,i, ..,:,,, : ,,,,:08;,,:::,..,,::::,,,,,:::,,:LC:.,;ii;;;;!!!;:,. ..,,,,,. .,,.,....,,.,.  +i;::,:;;:;!: .;. ,,. .. .:ifLt;,:;;;:,. .,;;:;:::::;ii!::,,,,,;;;:;;;;:,.....,;!;;!;:::,,.......,,..,,....,.  +i;:,,,:::iC: :, . ..., .,,. :####0..LL8@0LLftft;:CGCGLGCiCGC88LGGi,L!;G0C0GCGtC;,:iti::;iiiitffti!:,::,,,,,,,,,,:::!:  +i:,,;;;;;tC: :. .,,,,. , :G8@#i.,:!fCL#######!:;;:!!;::;!f!;;!!;,,,!fi!i!;!;;;ifCf!,::!!!!ititti;;,.,,,;,.,..,;;;!;:; +!;::!!i!:!i: , . , .,,,. . .@#########: :L: :L: ,t;:::,,:::;;:::;,,,:,,,,::::,. .,,....;ttiitti +!;:;iti!;;i: .,. .. .. .ifL#G;;;;,. !C; .,. :i;:::;i!!!;::,,::,,,,,,,,,,.... .:!!;;:::;;;;;;! +!tfi!ffttii; . ..... .. .. ;t. !tttiiftiitttiiii!i!!!!!;;:;:::::::;!i!!;;;!!;;;;;  .,;::it!;:,,:,,.,,,,,;t: ::tf ,!!fft; ,,,,. .: .... .. ,, ,,::;:,::,,..,,;!;,,,,,,,,,,... ,:,,.... + .iCC!:,.,:;,. ., . .!i: ,!:0i!fLf!.... .,. ..,,;ii, ;i: ...,:;;,.,.... .,:;!. .:;:,....... . . + ,;:;i!. :Lf!. ,::,,:;, ..;i!i@Lf:,. .;: .,;!,..!;,.:L: .. .,,..,::;:,.. . . ..,,,. ... ......,,...,,::, + .,. ..,,,,:;, .0#itCi .,!ifC0iC;:, ,.....::, .;,.,::!;, .. ,, .,,,,,,. ,:...,.....,,.....,,;;;::!!;,::;:;: +,:!;;;;;. .. ..,,,:.,ii##L!,,::.!LiL@8t;.. ,:, ,C8L, .:, ,:,,,,. .,,,,.....,:!i!;:,;:,:,,,,::;;;;;:,! +fCLG0L!....::...:f:;Giti;Gt@0:,!t::!tG0t;,.,.... .. .;0; .;if:.,:;;:,,,:,,...,,,,,,,..,;;!:.:;::;:::::,,,....,;:!ttiif::t +!!ff!!;:;i::::!:Li;iCCGLf!!!#G;:;!tGCi:, .,, ,. ,,.,....,:0G;. .,!CtfLGfti,;G:. .,:;!;;...,:;:;:::;::,;:..,,,,,;i;;fL!!:;;; +!:;,::;Gf:!G;;!;tL0;:i:::fGft#f;fGf;:, . ...::,:C;,,.:,,;CCC!!i!;i;;LL::..,::,,,,..,,:iL;;;ttt:,,,,;ti!!;;!:;CLi!f;;; +!:,;tLt:, !8;.,;fC@!. ::;iLL0;::,....,, ..,:t:,.,::, ,!!Cit;iC::tt,,!tiC!:::!t!:,,,:tt!;i!;!i!;itiii!G0C0LL!;;!tifi:!Ct +:;:!!;;::,;0!. ;##8#!,,.,:!LCi:, ....... .,, ,,..;t8C:,;i!:.;CiCC:,Li:,:;;.,:iCt;!;i!!i;,,!ft;;!;:t8i:G##@GGCtiii!;i!;tt!;,!tt +!tC;::itti:i0:,f##C##!,.:LLi:. ....,,,,. .. :,,i!,,;t8;,,::::;f;:i;,:::.,;,,:,:i!:;:,:::,,;;!!!i!;!t8!;tLGtttL;:;ii!;:;CLi;,,;f +;,!;,ii!;::;C:,ii!ii##i:t;:,.. .... ,. :L!:,:;,,!G!:!ti,,:, ,,..!:::,::::::::;:,,,:;;;;itfGG;;ii;:;!i!!itiitCtti;iLti::i!L +:, .,.... ,,,.;0:;ff@0!,,.,:.,,,.,.. ,,, ...,,it:,..:LGLLi:,..:. ,i!;;:,.,,:;:;:,:!:,,it;;!;;;!!!!tfi!;tfLC00GCGLiift;iti;;:;!t +;,..,,,, ,;;ft8!:C;::, ..,,::;,:. ;G:.:;,,:;00:.:C#!::,,...:: ,G!GC,..,:;;;;::::,,:!i!!!;::;!!!Lt!;:;;!!ii!!!;::;;:!iti!;!if +;,,,:;:;:,;it@Gf8!!;;,,,,,,,,:::,,:,,,tCL;:i::itLG;;##i:,,:;:,,;:.,:C!;::,,,:;i!:,:!!!;iLtfLi:iLGLCf!;!:,::,,:!:,,,,:!;ii!;!;;;t +i::!i!!!!iL8G0@8L;;f!!!!i!!!!!!i!,!:!;!i8t;::!C!::i##!,:!i:...,:: ,i, ,::,,:!;;:;iG0Lftttti!!;!!!!f!:::::;;:;;;::::;;;Lt!::;!!L +f!t8#CfitL@0##0#t:::::::::::::::,:;:::;!f@f0t!C!:i#0;, .,,. ..:;. ,;,....,:;::;:;GGti;iifCLi:;:::;fi;;;i;:;!itii!!!ii;ii!;!!iCC +CfL##0C0G8G0#88@f;;i;:,,:::::,,. .,,;i!;0@##!;Lf@#t:::!!!!!!;;,. .!,,:,:::;!;::ifi!;;;;!!!;::it!tCfttt;;;;;;;;;ffi!!!ii;itttit +#08880#####CLG@GtttLf!:,,,,,,,.. .,,!8C!itff;if##!,,:G#@@@@80Gf;!i;::,,;;::::;::!ititf!;!!i!::;!!!itt!;;!!;::;::;;!!;iiLL!!LfiiC +####G####@0GLLLfC!!;;:,,..,,,,,,,,,,!ftiGf,,!##t;:.:!@GffLC0GCG0G00Li;,...,::;!fitLGLiifffGt;!t!;!t!;!,,:;t::;ttitfCG!;iL!!;:;LC +#00G000#8C@@tCfitt,.,;;:::;;,:!;ii,.:80!!!::8#f!::::!Lt!!!!iL0GLfLCG@0i!;::;;ifCtG#8t!!fffft;tf;:;;i!;:.,:t;:;!!iG0CCi;;!!;;;!!L +C8iLGCffftG0ffLt!G;,;:;;:!;,,:::;;;:!i!;CLf@ffCii!!;:;:,::,,:;!!!;!ifG0@8tt;,;t!if0fi!;!fffi;;;:;!;CL!!!!i!;:i;;titi!!;!ti;iff!L +:!;;!ii;:,:iCii::;t,,:;,,,,,:!:;!!if!::!L#8i!0C;:,,.,:;,,,..,,,,,:;!ittfG0;;;;;;;!tttf!iLiti!!!!;;iCfffLCLt;;;::;i!!;::i8C!!tiiL +:,,;, ,;,. ,.,.,i:.::,::,,.::;,::,,;:;i8LtC!;;;!..,,,ff;,....,:,..:fCCt!;,;@#tii;!ttC0i;!itftCCitttti!;itti;:iL;;;;:;;:i0Ci!fC!C +GG;,. ,,. :C;. .,..,..:,:;,!. ,!0@fitff!;!;:;Li!ii; ... .:;::;, ,C#0ff!;iiit!;itii!iittiiLi;,:LLti;it!::::::,:;;::;::i +G#8: .. ,Lt : ;..i,:C;:,,i@G;:8@!;t#@itfii!@@: .,,. :i.:!ti;;;!ii!;:tt!;!;;LC0f;;!:::!ii;::;ii;;::,,,:,,,..,! +ftti!:, .!!;:;f!,,:;!::::;f;t!,;;ii;.:f#t;@0i:00, :88:.!LGt!!:,,i: ...,tLt!;::!Lt:,:!;if;;i!!;;!it:;!fLi;;!!:!iii!!it;:;:;!t +f:!;f8t, .!tfffGL!ttfCf;fi!t!:!,.:i!,.:8#i;88,.::,.:::,:!L@###8tit;:!fti!;;!L0C;:;!;:..:;::,:,,,,;ftt;:;ft!!Li:!!;tfGtfti!::!LC +i:!itfC;..,,,:::tf:,;;;!;:;::;,::.;t;iiiGGf;!;:,:,.!i:. .,;!fCGCt;,,@######f;!ff!;!!:,,;!!;;:;!ii!!!Lt:;;tf!;ii!Cfiffi!Lt!i;;ftt +:,,,,:::;i;. :;, .t:,L::i,,:,t;:i;f8i;if;:!!;:..::,:.. .,:;;;:,,!0######;,i::,!i!::LGtt!:,f08G;!tt::!iii!if;;::::,:LC!!!t@#@ +0CLLCG0i::!, ,t. .;L;;C;:i,:::t;,,f8i:i;:::,,,,::,,!i:;;!itfftft,,::;ifi;:,,,.,;it!;;!!!;,,:!i;:;;:,::::,,::::,::,::fL!;;iC0@ +########: ;, ::, .:0!;f:;!,!:,;,.:LCi::;::.,!iti:;ft!!itffft!!i:,;;!,:..,:. .,,,,.:;tf:,,,;;:;::;:i!;,..:!i!ift,,i!;f!:!ii +#######L, .; ;i. .!G:,!,,,;;.., ,:;:;::::,,:;:::::;:;!!;:,.;f;,,!t;::.. .,,.. .,,:;;;;:!!;:,,;i;;:.:!;,:!:.,,,:t;;!tt +8LftiiiC:., ;i, ,,, ...,. .;:,:. :LCLfCfi!t;it!!f;ttLCii!:t#Gi:L8t#0;::;Cfi!::::,,....,,,..,,.. .,::,..,. .;. ,,,,:,::. +f;:,,,::if: ;i, ,.....,,. ::ft!:fCffttG88CftLffftfttfitCtfGfiittf##fCffLftfLtfti;;;:::::::.... .::,:.!;. +f!::::::!Li ;i. .:!,,, :fi::08;,,:;!;::::::,:,,,,,::::,:GG:.,;ii;::::;i!!!:,,:,.,,,:;;::::, ., .,,...  +!::;!ii;;f!. :: .....,,. ,: .,!tfLt;::!;;:, .,;;:;:::::;ii!::,:,,,:;;;!!;;:,. ..,..... .,,,,,....,....  +t!:,,:;;;i!... ,. , . ... ,####0..CG@@0L!itti;;CGCGLGCiCCL@@CGGf:L!iG0CGCCGLGi....,,,;;::::::,,.. .,,..,,....,,  +t!:,,:::!ft. :. ..,,,.,,,, ,G@8#i.,:ifLC08#####;:;;:;;::::!8G;:!!;:,,!fi!!!;!;:,,;ift;:ittiifLfi!::,,,,,,,,,,,,::;;!;  +!:::;;;;!Cf. : .,,,.. .: .,::,. . :##########: ,;, .,, .Lt .t!,,,,..,;iifCf!::;!;!!ittfft!;:..,,;:,:..,:;;;:, +i;:;iti;;ii. . . . :;: :####C!!!;,. tG! .,, ,ft!!!;:::;;;;;;;!;::::::::;;;:,.. .,,....;tfi!tt +iitfLfffti! .. . . ,i, ,tttiiitttttii!;;!!;;;;:;:,::,,,. .,:;::;;;;;!!i!  ,:;t::;:::::,,:,,,,, .:i: !,tt ;!tttt: ,,.,. .:, ... . .,,::::,:,,...,:!;,,,,:,,,,,. ...::,...  + ..:tGC:,.,;i:. ,,. !i, :,:8t!tti:.... ..,. ..,:;it, . . ,!!. .,:;;:...... ..,.,. .,,. .... ..... + . ....,::!. :ft!... :;,,;!, .,,:;;!L@fi,. ,;:..:;;, .!;,.:f; .. .. .,..::::,,.. ....,.,.. ....,,,,,,...,:;;::: +.,::,;;, .. ,,:,. .;8i!Gf. .:tiLL8Lif;:. ......::...:,.,,:!;, :, ,. . ..,:,.. ,:........,,,,....:;!!;;;!;;,,::::::; +ifLLf:.. ., ..,:,;;,:i;f#L!:,;;,:t!t08G!,.. ,:, ,C0L, ,,. .... .,,,.....,,,,,. ..:!iti;:,;:,:,,:;;;;!;;::,!ft +tG0!:,.,:,,,.,,tL,!GfGf!L;!@;,;i:,;iL0L!,....... ... .!0: .;!t;:::;:,,,!:,.........:::!;;:.,::,:;;;::,,.....:ittLLtif::tt! +if:,::iii;i::!;Gii!LLLff!!;i@i;;;iGGt:, .,. ., .,,,,. ,;CL; ,..:CtiLf!fi,;G:..,.,,::,,..,,,;;:::::;;;!:,,,:,,,;i!ifL!!::;:L! +!:,::iC;,L0!i!!t08;,;,,:tGC!G@!tCf;:,. .... ., :L;,,.;:tttf!;i!;!;;ff,,,:;;,.. .,:;;iC!;;!;;::::,;Li!i!;ii!GLf!t;;i;, +!,;LC;,, i8!,,;GC#i, ::!iLf0L:::. ..,. ,:i:,.,,:,:,:!!0L:!f:iLt,.;!iL;,:ift;,..:iti:!!;!fi:!fffLiCGLGft!;!!itti:iGLf! +;;!!;;;:,;0!,,t##8#!:,.,:iCCi:,. ....... ,.. ,:,..t8G::;!,.,,tG!f;,L;::;;, ,;tG!::;;;!;,,!ti::;:;t@f:C@##GCGii!!!;t!;ffi;:;ttfi +i0;,!titi:t0;!@8GfG#i:,:Lf!:, .. .,,,,. . :::;i:,:i0!:::::;:;f;,,,,;:.:;,,::;!;::,,,::::;!!!!!;;i0i:!tLi!!!;;!tii!!!CLi;,,;f0C +.;;,i!;;::;L::if;ii##L;t;:,.. ........,. ,Cf:,,,,:!8i:tt;,.,!,,,,.:,,,:;:;;:,:;:,,:;t!i!ittG0i!ii!:;!!!!!!tLLCfff!tLii:,!;tti +:.., .. ,,,,;0;;Gt8C!..,,:.,,,,,,,.,;,....::tC;,.,!#Ctt:,. ,:.:C!:;,.,,:;:::,,;;,,tt;;;;;;;!!!tCti!fLLC00ftff!!i!;!ti!;;;!;!i +;:::,,, .!!!ii8!:t;,,. ...,,:,,,.,;0:,!;,:i!08,.;##!,,,....,:,:0i0f,.,:;::::,:::,;!i!;i;,:;!i!Li!;;;;!!!i!;::,,,::!!tttiiii;! +!;ti;:;:;itt@Lf0!!::,,,,,,,,,,:,,:,;,LG;,;::iL;ff;;##i::;;::,.,;,,;0!;;;,,:;i!:,:!ti!fCtiii:!fGLLf!;;;::::::!:,,::::;ii!!!!;;;!f +iiffi!;iL#@G0@@f;;t:;;!!!!;!!!!!:!:;:!tt:;:i0!:,:!#8!,,;,.....,:, ,i:,,,,,:;;;:;iGGtiittti!;;;;;!f!:::;;;!;!!!;!!!i;;Lfi;:!!iLfi +fC##LttfC08#@0#t::::,,::::::::,,,;;;;;0Gf@8t0i,:t#i:. ... .....:. ,::,,.,,;::!:;GGt!;ttLCCt:;:::;fi;;;!;;;;itit!!!!!!!i;;!iiLfGt +00#@G000#GG@008f;!i;:,,:,:,,,,. .,;GL!tC8#!i0ii##;, .:;!!!!!;;:. .!,;:::,:;:::!tii!!;!!!!;::ititCLfft;!i!;;;::tfi;i!ti;ifft!iit +@8008#####CLG@GtffLL!:,,,.,.... .,;80;!ii;:itL#8;:,,:L@@@@@88Gf!!;;:,,:,,;::::i!itfCi!!iti;;;!!!!it!!;;!;;:!:,;itti!!LC!!LiiiLLC +##8C#8@@@8GLLLtC!!;;;:,,,,,,,,,,,.;ttiGG, ,f##i:,;!;;08LfLCG0GCGGCGLi;,.,,:;iLiifGf!!iLfGL;if!::!!;i:,,;f:::itiG0@8!;if!!;:;fff@ +0GG0CG#0L##tCLitL:.,;!;;:;:,:;;;!,:L0!tt!,!#8i;::;;;:iL!!!!if00LfLLG@@ti;::i08ff0Ci!;itfft!it;::;ii;:,,;!;:;!ifLLti!!!i!;!ti!iiC +GiCCGffttLCLfLt!G!,::;::!:,::::!!!!i;!8#t0#ft;!!!;::::;:,::,:;;;!!!itC088!;t;;itGLti;;CCCL;:;;::;GL!ti!!!;:!::!!!;;;;iCt!ii!!!!i +!;;;!i!,.,;i!i::;i,,,:,,,,,:!:!ii!f;;;t##CiCf:,,,,..;L!,.,...,,,,:;!!itfCG;:;;;iLLCGi!ffLfiii!i!!LttiLft;::;::!t;;;:;t@GtfL!iGiG + ,;. ,;,. . . ,t:.,:,::,,.,,::::,,::;iLLCi;::!,..,;;!GL;,.. ..,:..,tCLft!:!@8i;!tfC0i;!tLLiff;;!iti::;ii;::if;::::;!,!Ct;;!;!Git +C:.. ,,. ,Li. ....,..:.,!,;..,!88i!!!i:;!ii;iL!!ii;. . ......,:;:;, :@#f;;!ii!!tiii!;!ii!!!f;,,,ff!!;iii;:,,,,,,::.,,.,:;t +Gf, ... ,tf. :. :,.;::L;,,,t@L:i8i:;ft@#iit!!!@@: .,,. ,!,itt!:!ti;:;it!;!;:CCCt;!!:::!tti!;!i!!:::::;;:,,,,,:;i +t!ft;, .ii!;;ti:,:;i::;:;f;ii,;;!!,,t8G;GiL0i:GG, :88:.;LCt!!:,,!;. .;0Li;:;ti;,,!;!i;!;!;::itL:;tG0Lfti::::itt!tt!!!:;Lt!; +t;t8G; .;ttftCL!ttfLL:tt;!!:!,.:tt:;0#L!CLL0:.::,.,::,:!L@###@tif;:!tti!!iG0;:;!::,,:;;;::::::;ttt!!iffi!t;:i;;tLCtCti!,:ttCLL +i;;;!!...,,,,,:!L;,;;;;;:::,!,:!,:itGCLCfLCf!::,:,,;;:, .,:!fG0Gt;,,@######fiit::!:,,!i;i!;!!tLt;;Lf:;iLC!:;t;tiiti:!Cf!i;!fffft +:;;;!;:;i!. :!, .t!,fi:i;,;,it:;f8i:;t!;;:;;::,,,,,:, .,:;!;:,,!8######;::,;!!::tt:,,,,f08t:!!;:,:;;;;!!;;;::,,:GCi!!0##### +######t::!, ,t, :C!;Ct;i,,::ii,:!!;i;,::::,,:i:.,:i!:::;itfffft,,:;;iti;::..:iti;:::::,:;ii!;;;,,:::,,,,:;i!ii;;;Li!!!ifffG# +#######, ;, :;, ,Gt!f;:!.:i,,:..!G0t,;;::..i!:..;ft!!itffft!!i:,;;;,. .,, .,,,. ,;i!,;;itii:;!:ft;;:,;i!:iti,,;:;C!!i;::t +##@0G#t, ,: ,f, .:0i,;:.,,;,.,. ,;;;;;;;::,;;:,,,::;:;!!;:,.;f!,:!i::,. ;,. .,,,,:,:;;::,,:;;;:.:!,.,;,.,,,:::,:,,,! +Gi!;;!L:,, :t, ,,, ..... .;;::,..;LGLfLfLLC!ii!!f;ttLCiii:t#Ct;L8t#C:::;t!;;;;::,....,,,... .:,. .. , :;.,.... .. +i;,,,::iL: :f, .,....,. ,:LfiiiLLfftiG@8LttffLftfttfitCtf0fiiftC##LLtifffG0LLt!::::;;!;,. .,:,. :. ,, +t!;:::,!Gi :i, ..:;,,, ,!t;::0G;:,,!!;:,,:::::,,,,,::::,:GG:.:;i!:::;!i!;;::,.....,,,..,,,,,. . .. ,  +i::!i!,;L;.. ,;. .,...,. : ,.:!tfft;,:!;;:,. .,;;:;:::::;ii!::,:,,,:;;;;;;;:, .,,:::,,... .... .::,:,. .. . +i:,:;;:;t!. , ., .. ... ,####0..CG@88Ci!iti;:CGCGLGC!CCL8@CGGt:L!!G0L0000LG!,,:;;ifffft!;::::,,,,..,,,,,,,,,:;:  +t:,;;;;!Cf. :, ...,,.,.,, ,C8@#i.,;ifLL00#####!:;;:;;::::!0G;;!!!:,,!ti!i!!!;;;tCLi;;!ii!tfffffi!;;,,:,:::::,.,,:;.... +t;;;;;:!ft. : .,,,.. , .,,::,. .::##########: ,;, .,, .Ct .!;:,,,,,:;;i!;;::!!i;;!!!i;:,,....:,.....:::!tii! +t;!!ii;;!!. . . . .;; :#####i!!;,. !Gt .,, ,ft!;:;;;;::,,,:::::::,,,,,,.. ......,;iiiittti +ttfLfftti! .. .. , ,i: ,iiiittttttti!!!!!;;!;;;:::,,,,,.,:!!!!;;;;;;;;;;;  ,;:i!::,.,;::,:,.,.. ,!!. !.ti !!ttti: ,..,, .:. .... .,,::::,:,....,;!:,,,,:,,,,,. ..,:,,  + .;LC!,..!fi, .,... .i!. :,:8t!ii!,.... ..,. ..,:;it, .. . ;!:. .:;;:,... . ..... .,. .. . ......... + .. .,,;:.:!t!. . .t;::;;, .,,,;i;!L8f!,. ,;,..:;;, ,i;,.:f: ... ....,.,;:,,,... .,,.,.... ....,,,,.,,..,::;;,,: +.::::;: ...,,,.. ,f#iLG! . .!ttCL8fii::. ....:,...:,.,,:!;, ,!. . .. .::... ....,,........,,,,..,;;;i!;;;::,,,,,,:::; +tCLf;... ,, ..,::t;::!!@#t;,,;;.:tif00L;,.. ,;, ,C0L, ,,. .., .,,.....,,,,,,.. ..,!itt;:,,;,,,,:;;;;;!;,,.:fLi +fGi:,,,;,.,,,.,C,:LGCG!:f;i8;:!!,:!iCGt;,..,.... .... ,f0: ,;!f;::;!:,,;i:,.... .:;:;;,:..,:,:;!!;:,,.....,!ffLLL!t:,;ti; +t;,::!tt;;i:;:iii!!fftii;;;f@!;;!fGC!:, .,. ., ,,,,,. ,!Cf:.:..;Ci!f!!f:,fC:.,..,,,,.,,,,,:;::,,;!i!!!,,:;:,::!!itCt!::;:;f; +!,:;;Lf,;0i:!!;t@f:,,..:tGti80!LGt;:, . ... . ;t:,,.::f!Ci;;!;:!;;G;,,::;:,. .,;;;:Lf;;!;:;;!;:;Cfiiti!tiLCfi;;;!;;, +!:tCi:,.,0t,,,iGG#i, .,:!tftGi::,.. ..,. . .:!,..,,,,:::i!G;;Lt!fLi,.;;if::!tfi!,.,!ft;;!;;tC!:fGGGLfGLLCii!!!ittt::GLLi! +!;!!;;;::i8;:!8####i::.,;fGL;,, .,..... .....,:,.,f8t,:!;.,,;LG!t:,f;::;;,.,;tC;::;;;!,,;ii;:,:;!G@!t0##0C0f!!!!!if:!Lf!;:ifttL +LL:;tttt!;0f;0#G0L##i:,!Ct;,. ,,,,,. .!::!!:,:!C;::::;;,;f;.,.,!,.!:,:::!i;:,,,::::;;;;;i;:iLL;;iti!!!!!!tfii!;iGti:,;tGCG +.;::i;;:::;t:;iL!ff##t!i::,.... . ...... ..;Ci:,.,.,!8!!fi:. ,!,,,,.,,:::;;!!::;!:,:;tiii!tifGfi!i!;:;!!!!!fCCCfLLtiCi!;:!!!tii +:... . .,:::!G;CitCf:..,:,.:,:,:,:,::,,,,,:;Lt:. ,!@ti!:,...,:.:C;:,..,,:::::,:;:,!fi!!!;;;!!!!CLi!iftfL0L!iti;!i;;ti!;;;;;i;f +;::,,,, ,fiG!tt;:;,,.. .....,,,,,.:fC,!i::i;;8f..!#G:,,,...,,:,;CiC:...::::::,:;:;!ii;ti::!it!tfi;::;;;!!;:,:,,,;,:iitttt!i;;t +!ft:;;;;!ttL#fGi:;,,,,,,,.,,,,,.,:,:;0i:,,:!L;;L!:i#C;:;;:::,,,!,,:f::;,,,:!!:::!fLifLL!;i;!iLCtfi;::::::::;:,,::;;:;ti!!!;;;!!C +itLfi!!C0#G0G#0i:!!::;;!;;;;;;!!:!::;ii;::;0i:::!0#!:.,:..... ,;, ,:.,..,,::;;:!L8fiiti!!;;!;;;:!t;:,:i;!!!!!!!!!if;iCit;!i!LLif +CG##ftLLGG@#G08i:::,,,:::,:,,,,,,;;:;t0fL8iGL:,!##;, ... ,:. :,,,,,,:;:;!:i0f!:;tfiLf::::;:!fi;;!;!;;!ttti!i!!!!iiiiitftLiL +88#008088G0@GGCt;!!;:,,:,:,,.,. .,!G!;it8!;GG!L##!,,,:;!!!!!!;,. .,:,;;;,,::::;iii!!!!!!!!::;ti!fCfffi;ii;;;;:;fi!itifittGfii!ii +@008##@###CL08LfffCt;:,......,. .!0!;i!::;CL0#t;;,,:C#@@@@@@0t;;;;:,,:,:;,,:i!!ttCfiiiif!;;!;;!ii!;;;!!;::i::!ifti;i0t;ffiifCf0 +##C##@88@0CLLCfGi;;;::,,,,:,,,,,,.!!iiC;,.!@#8!::ii;;@0LfLCG0CCGGCGLi;,.,,:;tLitGLi!;fffL!!ft:::t!;:.,:ii::;tif@8@f;!ti!!!!fftG# +GCGGG@#LC#LiGitC!,.:;;;:;;:,:;:!;,;Gf!!!:;8#f!;:;;;;;ff!!!!ifG0LfLC0@8ti;:;L8GtLGt!:;itti!;f;:::!L!;:,:;!;:iiffffiii!!t!ttGii!!L +fiGLLftiiLLiift;G:,::;,:!:,:::;!i!ii;i8Ct##t!:!!;:,:::::,::,:;!!!!!ifG080!!C!!itCfi!:iGfL;:;;;;:iGttiii!!:;::;!!;;;;!fGtiftti!;! +:;;;!!;,.:;:!,,::!,,,:,,,,,!!:it!it;!;t##iif:,,,.,.:f!:,.,...,,,,;;!iitfGC;:!!!tCG8C!!tfft!tt!titit!ftt;:::;:;t!:;;!i08LCGGt0ifG + ,: ,:.. ,i,.:,,::,..,,,,::,,,:;iLLf!:.,,..,;f;tCt:,.. ..,:..:tLLft!:!@0t;iCLGL!!tL0f!f;;!itt;::;;;,,;f;;::::;:;ft!;!!iLi;t +i... .,,. ;G; ....:..;.,;:i..:i80fi;::::!ttiLL;!ii:. . ......,:;;;, ;#0t;iti!!iftit!;!i!i;ii::.;t;::;it!::,,,,,,,.,:.,,,:f +L!,. .,, :G; ;..;.,t::L;:,,G@!!8G:,iif#@itt!!!@G, .,, :::fft;;iti;;!i!!ii:tCLt;;!;::;!i!!!!ii!!:::::!;::,:::,:! +itCf:. :ti!;iC!,,:!!::::tt;f;,;;i!,;0#!;ftCG!:GC, ;8G,.!LCi!;:,,i, ,C@L!:;ii!:,,i;!;;;;;::itL;,iL0GfLf;:;:itf!!fi!i!;tLi!! +iiG8L, ,;itffGf!ttfLt:ti:!;:!,.!fi:i#@i!Lt00,.::,.,:,.;iC####8!it::!tti!it8t:!i::,,;!!;;:;;!;;itf!:!fLfiii:;t:ifCitLit::f!tfCf +!::;:. ....,,,;tt,,;;;;:::,,;,;:,:!L0LLfCCft;;:,:,,;:: .,;iL00Ct:,:#######t!f;:!;:,;ftif;!!tG0!;!C:,ifGf!;f!;;!i!::iLi!!!tfffft +:!!!!;:!!;. .;:. .f:,L;:i,,;,t!,!GG;:!!;;;:!;::,,,,,:. .,;;;;:,,t#######;:::;!!:!i;;::,:CGt:;!;:,,:;;;:!;;:::,,.!Gi!:L@##### +######i,:;. ;i .:L;;C!:!,:::i;,:i!ii:,::::,,;!,,,;t;:::!itfftf!,,;;!tii;::.,!ii!::,,;,,:;!;:;;:,,:::,.,,;iitti;,iti;iifffff@ +######8..!, ;:. :0!;f::!,i;.,, .t0G;,;;:,.:!;,.,ifi!!tfLfft!;i,:;;:. .,,,.,,,... ,;!;;!!tti!:!:if!;;,,!!:;tt,,:::Ctiffi,:i +#@GLC#!..;, !i. .:G:.:,.,:,.,, ,;:;:;;::;;;;:,,,::;:;!!;:,,ii;,;t;,,. .i;: ....,,,::::,.,:;;;..;: .;, .,,::;::;,,,: +C!::;tf:,, !!. .,. .., !;::,,,!LGLfLC00C!ii!!f!ttLCii!!@#Li!0CL#i,:;!i;;;;;:::,....,,... ,,, . . .;:.,.:, .. +i;,,,:;fL, ;i. ,.....,. ,:CtitiiLfftt08GfiifffftttffifCfC0tttft8#CLfttLLC00fft!::::;!!;,,. .. . .,,,.,. ,, +f!;::::t0; ;!. .:;,,, ,!t;::CC;,,:!;:,,,:::,,,,,,,::::,:GG,,:!i!:::;!!!;;::,.....,,.. ..,:,.. . .... . . +!::ii;,!L; :, ,...., ., ..,!tffi;,:;;;:,. .:;;:;:::::;ii!::,,,,,:;;;;;;;,, .,:::::,,... ,:::,,. .... ,, +i:,:;;:iL; ., . , ,. ,####0.,C0@88Gi!iti;;CGCGLGC!CCL88CGGt:L!!GGL0000fG!,:!!ifLLLLfi!;:::,,,..,,:,:,,:::!!,  +i::;;;;iG; :. ...,,.,.,, ,C@##i.,:iLLC00####0;:;;:;;::::!8f;;!!;,,,!ti!ii!!!!!LCt!;!iiiitffLLfi!!:,:,;;:;:,,,::;,,,,: +t!!;;;;it; : .,,,.. , .,,::,. ,.:##########, ,;, ... ,L; .!;:,,,,::;;;;;;:;!i!:;;;!;::,.. ..,... .:!:;ttti! +t!!it!;;!: . . . ,;: :#####i!!;,. fG! .,, ,fi;::!!;;::,,:::,:::,,,,,... .,,,,,:;!!ittit! +tfLLfttti; . .. .: :i, :iiitftttttii!!i!!;!!;!;:::,,,,,,:;!!!!;;;;;;;;;;:  ,;;i!:::,,::::;,.,., ,!!. !.tt !!ttti: ,..,, .:. .... .,,::::,:,....,;i:,,,,:,,,.,. ..,:,, .  + ,;LC!,..;ti, .,... .i!. :,:8t!ii!,.... .,,. ..,,;ii, .... ;!:. . .:;;:,... .. ..... .,. ... ......... + . .. .,,;:.:!t;. . .t;::;;, .,,,;i;;L8f!,. ,;,..:;;, ,i;..:f, ... ....,.,;:,,,... .,,.,,... ...,,,,,.....,::;;.,: +.:;:,:, ...,,,.. ,f#iLG! . .ittCL8fii::. .. .:,...:,,:,:!:, ,;. . . ..,,.. ...,,.......,,,,,..,:!;i!;;;::,.,,,,::;; +tCCt;... ,. ..,,:t;:;!!@#t;,,;;.:tif00L;,. . .:!, ,C0L, ,,. .., ..,... .,,,,,,. ..,!ttt;:,,:,,,,::;;;;!;,,.:fLi +tGi:,,,;,.,,,,,C,:LGC0!;f;i8;:!!,:!iCGt;,.,,.... .... ,G8, ,;!f;:,;!:,:;i:,.... ..:!:;;,:..,:,:;!!;:,,.....,!tfLLL!t:,;ti; +t;,::!ft;;i:;:ii!i!fftii;;;f@!:;!fGC!:, .,. ., ,,.,,. ,i0f,.:,,!Ci!t!!f:,fC:.,...,:,.,,,,,:;;::,:!i!!!,,:;:,::!!itCt!::;:;f; +!,;:;Lf,;0i:!;;t8t:,,..:tGti80!fGt;:, . ... . ;t:,..::L!Ci;!!;:!;;G;,,::::,. .,:;;:Lf:;!;:;;;;:;Cfiiti!tiLCfi;!;!;;, +!;iCt:,.,0i,.:i00#i, .,:!tftGi::,.. ..,. .:!,..,,,,:,:!;0;;Li!fLi,.;;if::!tfi;,.,!ft;;!;;tC!:tGGGLfGLLC!i!!!itif::GLLi; +!;!;;;;::i8::i@####i:,.,;fGf;,, .,..... .,. ,:,.,f8t,:!;.,,:Lf!f:,f;::;;,..:iC;:::;!!,,;ii;:,::!G@!t0##0C0f!!!!!if:!Lf!;:ifttL +LL:;titt!;0f!@#G8L##i:,!Ct;,. ,,,,, .!::!!:,:!C;::::;;,;t;,,.,!,.;:,:,:;!;:,,,::::;;;;;i;:!fL;!iti!!!!!!tfii!;iGti:,;tGCG +.i;:i;;:::;t;!tL!ff##t!i::,.. .......... ..;Ci:,.,.,!0!!fi:. ,!,,,,.,,;::;:;!;,:!:,:;tiii!tifGfi!i!;:;!!!!!fCCCffLtiCi!;:!!!tii +:,.. . .,:::!G;CitCf:,.,:,.:,:,:,:,::,,,,,:;Lt:. ,!@ti!:,...,:.:C;:,..,,:::;:,;!:,!fi!!!;;;!!!!Cfi!ittLL0f!iii;!i;;ti!;;;;;i;f +;::,.,. ,tiG!tt;:;,,,. .....,,,,,.:fC,!i:,i;;8f..!#G:,,,...,,:,;CiG;..,:::::,::;:;!ii;ti::!it!tfi;::;;;!!;:,,,,,;,:iitttt!i;;t +!fi:::;;!ttL#fGi:;,,,,,,,.,,,,,.,:,:;0i:,,:!L;;f!:i#G;:;:,::,.:!,,:L:::..,:;!:::;fLifLL!;i;!iLCtfi;::::::::;:,:::;;:;ti!!!;;;!!C +itLf!!iC@#G0G#0i:!!::;;!;;;;;;!;:!::;ii;::;0i,::!0#!,,,:......,;, ,;,,..,::::::!L8L!!ti!!!;;;;;:!t;:,:i;!!!!!!!i!if;iCit;!iiLLif +CG##LfLCG0@#G88i:::,,,:::,:,,,,,,;;:;f0fL8iGL:,!##;, . . ::. :,,,,,,:;::;:i8L!:!ttiLf;:::::!fi;;!;!;;!ttti!i!!!!iiiiitttLiL +88#008088G0@GGCt;!!;:,,:,:,,.,. .,!G!;it8!;GG!L#@!,,,:!!!!!!;:,. ..;,;;:,,:::;;iii!!!!;;!!::;ti!fCfff!;ii;;;;:;fi!itifittGfii!ii +@0G8##@###CL08LfffLt;:,..,...,. .!0!;i!::;CL0#i;:,,;8#8@@@@8Ct;!;;:.,:,:;:,:ii!ttCfi!iiL!;!!;;!ii!;;;!!;::i::!ifti!i0t;ffiifCf0 +##C##@8880CLLCLGi;;;::,,,,:,,,,,,.;!iiC:,.!@#8;,,ii:!#GffLCGGCCGCCGf!:,.,,:;if!iGLi!;ffLGi!ft:::t!;:,,:ii::;tif@8@f;!fi!!;!fftG# +CCGGC@#LL#LiGttC!,.:;;;:;;:,:;:!!:;Gf!!!,;8#f!;:;;;:;Lt!!!!iL0GLfLC0@Gi!;;;f0LitCi;:;itti!;f;:::!Li;:::;;;:!!ffffiii!!t!ttGii!!L +f!CLfttiifLitft;G:,::;::!,,:::;!ii!i!i8Ct##t!:!!;::::;:,:::::;!!!!!iLG08L;!t;!!ifti!:iCtf;:;;;;:iGttiii!!:;::;!!;;;;!fGtiftti!;! +:::;!!;,.,;:!,,::!,,,:,,,,,!!;!i;!t;!;t##iiL:,.,.,.:fi:..,....,,,;;!ittf0t;;i!;iLC0C;;!tti!tt!iifit!ttt;:::;:;t!:;;!i08LCGGt0ifG + ,: ,:.. . ,i, ::,::,..:,,,::,,,:;iLLf!:.,,.,,;f;LC!,,.....:,..:fLLti;:C#Gt!!LCGL;;tfGt!f;;;tti;::;;;,,;f;;::::;:;ft!;!!iLi;t +i... :,. ;G; ....:..;.,;:i..:i80fi;::;;ifttCt!!i;. . .......,;:;:..f#Ct!itti!tCtit!;!i!i;ii:,.;t;:,!it!::,,,,,,:,,:.,,,:f +Li,. .,, :G; : .;.,i::L;:,:G8!!80:,if8#Giti!;L8; ..,. ;.:tft;!fLt!;ii!!ii:tLLt;;!;::;!i!!!!ii!!:::::!;::,:::,:! +itCf:. :ti!;!L!,,:!!:;;:tt;f;,;;i!,;0#!;tL8L;iG: .i0: ,tCLi!;,,:!. ,0@L!:!ii!:,,!;!;;;;;::itL;,iL0GfLf;:;:itf!!fi!!!;tCi!! +i!G8L, ,!itffGf!tffLt:ti:!;:!,.;ti:i#@i!Cf8C.,,,..,,..;t0####L;f;::tti!!!t8i:;i;::,;!!;;:;;!;;itf!:;fLfiii:;i:ifCiffit::t!tfGf +!::;:. .....,,;ft,,;;;;:::,,;,;:,:!L0LLLCCLi;;:::,:;:, .,:;tC00L!,,t######Ci!t;,;;:,;ftif;;!tG0!;iC:,itGf!;f!;;!!!::iLi!!!tfffft +:!!!!;:!!;. .;:. .f:,L;:i,,;,t!,!GG;:!!;;:;!;::,,,,,,. .,:;;;;,,;0######0;:::;!!:!i;::,,;GGf:;!;:,,:;;::;;;:::,,.!Gi!:L@##### +######i,:;,. :i .:L;;C;:!,:::i;,:i;ii:,:::,,:i!,,:ii:::;!ifftff,,:;!itii;:..,!ii;::,,;,,:;!;:;::,,:::,.,,;iitti;,iti;iifLfff@ +######8..!, ::. :0!;f::!,i;.,, .t0G::;;:..!!;,,;fti!itfLLfi!i!,;;!,. .,,..,,,,. ,;!;;!!iti!:!:if!;;,,!!:;it,,:::Ctifft,:i +#8GLC@!..;, !i. .:G:.:,.,:,.,, ,;;;:;:::;;!;:,,,::;:;!;;,.;C!,,;L;,, ;!;: ...,,,,::::,,,:;;;.,;: .;, ,,::;:;;,,,: +C!::;tf:,, .!!. .,. .., .!;::,,:iCCLtCG0GL;!!!!L!ttLC!i!i#Lt!!0f#G!,:;i!;;;;;;::,....,,... ,,, . . .;,.,.:, .. +i:,,,:;fL, ;i. ,....,, ,:Ctit!iLffif@8LttifffftttffifCi0fiiitt##ffftfLfC00fft!,:::;!!;,,. . .,,,.,. ,, +f!;::::t8; ;!. .;;.,, ,!t;:,fC;,,;;:,,,,:::,,,,,,::::,:fG!.,;i!;:::;i!!;;::,.....,,.. ..,:,.. . ... . . . +!::!i;,iC; :, ,...., ., ..:!tffi;,:;;;:, ,::;:;:::,;!i!;;;,,,,,:;;;;;;;,, .,:::::,,... ,:,:,, ... ,, +i:,:;;:iC; ., .. ,. .. ,####0.,C0@80L!!it;!!CGCGLGC!CCG@8CGGt:L;i0CL0G00tG!,:iitfLLLLfi!;:::,,,..,,,,,,,,::;!,  +i:::;:;iG; :. ..,,,...,, ,G@##i,,;tffG0#####i::;;:;;:::;L8i;!i!;,,,ii!!ii!!!!!LLt!!!!iiitffLLfii!:,:,;;:::,,,::;,,,.: +t!!:::;it; : .,,,. , ,,,::,. :,L#########C .::. ,,. tL. ,!:,,,,,::;;;:;;:;!i!:;;;;;::,.. ..,... .:!:;ttti! +t!!ii!:;!: . . . ,;: ..L####f!!!:, .CC. ,,. ,t!:::!!;;::,,,::::::,,,,,... ..,.,,:;!!!tttt! +tfLLfttti; . .. ,, !! !iiitftttttii!!i!!;!!!!;:::,,,,,,:;!i!!;;;;;;;;;;:  ,;;i!:;:::::::;:.,., ,!!. i.tt !!ttti: ,..,, .:. .... .,,::::,:,....,;i:,,,::,,,,,. ..,:,, .  + ,;LC!,,.;ti, .,... .i!. ;,:8f!ii!,.... .,,. ..,:;ii, .... :!;. .:;;:,...... ..... ,,. ... . ......... + , .. .,,;:.:!t;. . ,t;::;;, .,,,;i;!C8t!,. ,;:.,:;;, ,i;,.:L, ... ....,.,;:,,,... .,,.,,... ...,,,,,..,..,::;;,:: +.:;:,:, ....,,,.. ,L#iLG!... .ittLL8fii::. ....:,...:,,:,:!:, ,;. , ....::... ..,,.......,,:,,..,;;!i!;;;::,..,,,::;; +tCCf; . ,, ..,,:t;:;!!@#t;,,!;.:tif00L;,. . .:i, ,G0f. ,,. .., .,,,....,,,,,,.. ..,!ttt!:,,;,,,,:;;;;;!;,:.:fLi +tGi:,,,;,.,,,,,C,:LGCG!;f;i8;:!!,:!iCGt;,.,,.... .... :80, ,;!f;::;!:,,;i:,.... .,:!:!;,:..,:,:;!!;::,.....,!ftLLL!t:,;ti; +t;,::!tt;;t:!:ii!i!Lftii;;;f@!;;!fGC!:, .,. ., ,,,:,. ,f8t,.:,,iGi!f!!f;,fC:.,,..,,,,,,,,,:;;:::;!i!!;,::;:,::!!itCt!::;:;f; +;:;;;Lf,;0i:!;;t0t:,,..:tGfi80!fGt;:, . ... . ;t:, .,;C!Ci;!!;:!;;G;,,::::,. .,:!!:Lf:;!;:;;;;:;Cfiiti!tiLCfi;;;!;;: +;:iCt:,.,0t,.:i00#i, ,,:!tft0i::,.. ..,. . .:!,..,,,,:,,::0;;Lt!fLi,.;;if::!tfi;,.,!ft:;!;!tC!:fGGGLfGLLCii!!!itif::GLLi! +i;;!;;;::i8::i#####i:,.,;fGL;,, ....... .....,:,.,f8t,:!;.,,:C;;f:,f;::;;,.,:iC;:::;!;,,;ii;::::!G@!t0##0C0f!!!!!it:!Lf!;:ifttL +LL::iitt;;0fi##00L##i:,!Ct;,. ,,,,, .!::!i:,:!C;::;:;;,;!:;,.,!,,!:,:,,;!;:,.,::::;;;;;i;:!fC!!iti!!!!!!tfii!;iGti:,;tGCG +.t;:;;;:::;t!ifC!ff##t!i;:,.. ... ....., ..;Ci:,,,.,!8!!fi:. .;.,,,.,,;;::,;;:,:;:,:;t!ti!tifGfi!i!;:;!!!!!fCCCfLLtiCi!;:!;!tii +:,.. . .,:::!0;GitCf:,,,::.,,:,:,:,::,,,,,:;Lt:. ,!@ti!:,. .,, :C!::.,,,:,:;:,;!:,ifi!!!;;;!!!!Cfi;ittLL0L!iti;!i;;ti!;;;;;i;f +;::,.,. ,ti0itt;:!,,,. .....,,,,,.:LC,!i;,i!;8f..!#G:,,,...,,:,;GiG!..,::::::,:;:;!ii;tt::!if!tfi;::;;;!!!:,:,,,;::iitttt!i;;t +ifi,:;;;!iiL#fGi:;,,,,,,,,,,,,,.,:,:;0i:,,:!f;;L!:i#C;;;:,,:,.:;.,:C;:;..,:!!:::;fLifLL!;i;!iLCtfi;::::::::;:,:::;;:;ti!!!;;;!!C +ttLfi!tG80CGG#0i:!!:;;;!;;;;;;!;:!:,:ii;::;0i,::!0#!,,,:......,;. ,;,,,,,:::;::!L8fiiti!!;;;;:;:!t;:,:i;!!!!!!!i!if;iCit;!iiLLif +CG##LLCC88@#G88i:::,,,:::,:,,,,,,;;::f0fL8iGL:,!##;, ....:,. ,,,,,,,:;::;:t@L!:!ffiLf;:::::!Li;;!;!;;!tttiii!!!!iiiiifttCiL +80#08@8@@008GGCt;!!;::,:,:,,.,. .,!G!;it8!;GG!L#@!,.,;!!!!!!;:. ..;,;::,:::::;iti!!;!;;!!::;ti!fCfff!!ti;;;;:;fi!ittLittGfii!ii +@8G8##@###CL08LffLCt!:,.,....,. .!0!;i!::;CL0#t;;,,i@@8@@@@8Li;!;::.,:,:;:,:ii!ttCf!!iiL!;!!;;!ii!;;;!!;::i::!ifti;i0t;fLiifCf0 +##C##@88@0CLLCLGi;;;::,,,,:,,,,,,.;!iiG:,.!@#8;:,ii:f@CffLCGGCGGCGCi;:,.,:::iL!iGLi!;LfLGi!ft:::i!;:,,:ii::;tif@8@f;!ti!!!!fftG# +CCCCC@#LC#fiCttC!,.:!;;:;;:,:;:!;,;Gf!!!:;8#f!;:;;;:;Cii!!!tC0GffLC8@Li;;!:tGf!tLi!;;ittii;f;:::!Li;:::;!;:!!ffftiii!!t!tfGii!!L +t!Cftttiiffiffi;G:,::;,:!,,:::;!iiii!i8Ct##f!:!!;::,:;:,::,:;;!!!!!tC080i;!:;!;!ti!;:iCtf;:;;;;:iGttiiii!:;::!!!;;;;!fGtiftti!;! +::::!;;,.,!:i,,::!,,,:,,,,,!!;ii;it;!;t##iiL:,,,.,.:f!,.....,,,,:;!!itfCG;:;!;;!fLGC;;!tii!ti!iifit!ttt;:::;:;t!:;;;i08LCGGt0ifG + ,: .,... . ,t,.::,::,..:,,,::,,,:;iLLf!:.,,.,,;t!CL;,.. ..,:,.,!CLfti:!##ft;!LLGL;:!tCt!f!;;tft;::;;;,,;f!;::::;:;ft!;!!iL!;t +i... .:, ;G; ....:..;.,;:t..:i80fi;::;!!tifLiiii;. . .....,:;;!, :##Cfiiti!!iLtii!;!i!i;ii::,;i;::!it!::,,,,,,:,,:.,,,:L +L!,. .,, :G; ;..;.,i:;L;:,:G8!!0G:,fL@#ift!!!@@: .,,. .;.!fLt!iffi;;it!!ii:tCLt;;!;::;!i!!!!ii!!:::::!;::,:::::! +itCf:. :ti!;!C!,,:!!:;;:tt;f;,;;i!,;0#!;LC0!:GG, :88:.!LCt!!:,:i: :08f;:!tii:,:i!i;;;;;::itL;,iL0GLff;:;:itf!!fi!!!;tCi;! +iiG8L, ,!itffGf!ttfLt:ti:!;:;,.!fi:i#@i!0G0,.::,.,::,:!L@###8iif;:!tti!!iG8t:!t;::,;!i;;:;;;;;itf!:!fLfiii:;t:ifCiffit::t!tfCf +!::;:. .....,,;ft,,;;;;:::,,;,;:,:!L0LLfCGt!;:,:,,;::. .,;iLG0Ct:,,#######f!tt;:;;;,;ftif;;itC0i;iC:,ifGf!;f!;;!!!::iLi!!!tfffft +:!!!!;:!!: .;:. .f::L;:i,,;,f!,!GG;:!!;;:!;:::,,,,:, .,:;;;:,,i#######;::,:;!;:!i;::,,;GGf:;!;:,,:;;;:!;;:::,,.!Gi!:L@##### +######i,:;,. :i .:L;;C;:!,:::i;,:i;!i:::::,,:i;,,;t;:;:!itfftf!,,;!!tii;::..,!ii;,,,,;,,;;!;:;;:,,:::,.,,;iitti!,iti;iifLffL@ +######8..!, ;:. :0!;f::!,i;.,, .t0C:;;:,..!!;::ifi!!tfLLLi;;i::;;;.. ,,,,,,,,,. ,;!;;!!iti!:!:ifi;;,,!!:;it,,:::Ctifft,:i +#8CLC#!..;. !i. .:G:.:,,,:,.,, ,;;;:;:::;;!::,,:;:;;!!;;,.!!;,;f;,,, .t!;: ...,,,,::::,,,:;;;..;: .!, ,,::;:;;,,,: +L!::;tf:,, .!!. ... .., .!;::,,:iCCftG08Lt;!i!iC!tffL;i;f@it!00f@ii:;!i!;;!;;:::,....,,... ,,, . . .;:.,.:, .. +i:,,,:;fL, !i. ,....., ,:Ctii;iCLti0#GttttLfffttffttfffGttfft@#LLftffffC00fft!,:::;!!;,,. . . .,,,.,. .,, +f!;::::t8; !!. .:;,,, . .,!t;,:fG;,:!;:,,,,:::,,,,,,::::,;GC,,:!i:::::;i!!;;::,.....,,.. ..,:,. . ... . . +!::!t!,iC; :, ,....,. ., ..:!tfLi;,:;;:, .,::;;:::::,!ii!;;;,,.,::;;;;;;;,, .,::::::,,... ,:,:,, .... ,, +i;,;!;:iC; ., ,. ,. .. ,####8.,G888Li!tti;GtGGCGLGC!CG8@0GGGt:L;t0CL0GG0tG!,:itfLLLLLft!;:::,,,..,,:,:,,:::!!,  +i;::::;iC; :. ...,,.,.,, ,G@##i,,!fLCG0#####!::;;;;;:::i8f;;!i!:,,;Li!!!i!!!iifLi!!!!iiitfffLfii!:,:,;;:;:,,:::;,,,,: +t!;::::!t; : .,,,. , ,,,::,. ,:##########: ,!, ... .Lt .!!:,,,,,::;;;:;::;!i!:;;;;;::,.. ..,... .:!:;ttti! +t!!it!:;!: . . . ,;: :#####i!!;,. iGi .,, .ii!;::!!;;::,,,::::::,,,,,... .,,,,,:;!!itttt! +tfLLfttti; . .. :. ,t: .iiiitftttttii!!i!!;!!!!;:::,,:,,,:;!i!!;;;;;;;;;;;  ,;;i!:;:,,::::;:.,,, ,!!. !.tt !!ttti: ,,.,, .:. .... .,,::::,:,....:!i:,,,::,,,,,. ..,:,,  + .;LC!,,.!fi, .,... .i!. ;,:8t!ii!,.... ..,. ..,:;t!, .... :!;. .:;;:,.. . .,... ,,. ... . ......... + , .. .,:;:.:!t;. . ,t;::;;, .,,,;i;;C8f!,. ,;,.,:;;, .i;,.:f. ... ......,;:,,,... .,,.,,... ...,,,,,.,,..,::;;.:: +.:;:,,, ....,,,.. ,f#iLG!... .ittCL8fii::. ....:,...:,,:::;:, ,;. , .. .::.. ....:,........,:,,..,;!;i!;;;::,,,,,,::;; +tGCf; .. :, ..,,:t;:;;!@#t;,,!;.:tif00L;,.. .:!, ;GGi..,,. .., ,,.....,,,,,,.. ..,!itt!:,,:,,,,::;;;;!;,,.:fLi +t0i:,,,;,,,,,,,C,,LGCG!;f;i8;:!!,:!iCGt;,..,.... ..... :8C. ,;!f;:,;!:,,;i:,.... .,:;;;;,:..,,,:;!!;:,,.....,!ftLLL!t:,;ti; +t;,::!ft;;t:!:ti!i!Lftii;;;f@!;;!fGC!:, .,. ., ,,,,,. .,L8!,.,.,fG!!f!!f;,LC:.,,..,:,.,,,,,:;;:,,;;i!!!,,:::,::!!itCt!::;:;f; +!:;;;Lf,;0i:!;;t0t:,,..:tGti80!LGt;:, . ... . ;t:,.,:;GiCi;!!;:!;;G;,,,:::,. .,:;;:Lf;;!;:;;;;:;Cfiiti!tiLCfi!;;!!;: +!:tCt:,.,0i,.:iG0#i, ,,:!tffGi::,.. ..,. .:!,..,,,,:,;:!0;;Li!fLi,.;;if::!tfi;,.,!ft;;;;;tC!:tGGGLfGLLCii!!!ittf::GLLi! +i;;!;;;::i8;:t#####i,:.,;fCf!,, ....... .....,:,.,f8t,:!;.,,;C:;t:,f;::;;,.,:tG;::::;!,,;ii;:,::!0@!t0##0C0t!!!!!if:!Lf!;:ifttL +CL::iitt!;Gfi##00L##i:,!Ct;,. ,,,,,. .!::!i:,:!C;::::;;:!:,!,.,!..!:,:,:;!;:,.,::::;;;;;i;:!LC;;ift!!!!!!tfii!;iGti::;tGCG +,L;:;;!;,:;t!ifC!Lf##t!i:,,.. ........... ..;Ci:,,,.,!8!!fi:..,:.,,,.,,:::::;;:,:;:,:;t!ii!tifGfi!i!;:;!!!!!tCCCfLLtiCi!;:!;!tii +:,.. . ..,,:!0;GitCf:,,,::.,,:,:,:,::,,,,,:;Lt:. ,!@ti!:,. .:. :C!::..,,:,,:,,;!:,!fi!!!;;;!!!!Cfi!iftLL0L!iti;!i;;fi!;;;;;!;f +;::,.,. .:tiG!tt;:!,,,. .....,,,,,.:LC,!i::i;;8f..!#G:,,,...,:,,;GiG!..,::::::,:;:;!ii;ti::!if!tfi;::;;;!!!:,,,,,;,:iitttt!i;;t +!f!,:;;;!LLL#fGi:!,,,,,,,,,,,,,.,:,:;8i:,,:!L;;L!:i#G;:;:,::,,;,.,:G;:;,,,:;!::,;fLifLL!;i;!iLCtfi;::::::::;:,:::;;:;ti!!!;;;!!C +tfCLiif00G0GG#0i:!!:;;;!;;;;;;!;:!:,:ii;::;0i,::!0#!,,,:.....,:, ,!,,,,,,:;;;:;f8Li!ti!!!;;;:;:;t;:,:i;!!!!!!!i!it;iCit;!iiLLif +CG##GLCG888#G88i,::,,,:::::,,,,,:;;::f0fL@iGL:,!##;, ...,:. ,,,,,,,:!:;!:t@L!:;ffiLf;:::::!fi;;!;!;;!ttti!i!!!!iiiiifftLiL +80#0@@8@@008GGCi;!!;::,:,:.,.,. .,!G!;it8!;GG!L#@!,,:!!!!!!!;:. .!,;::,::::;;iti!!;!;;!!::;ti!fCfffi!ti;;;;:;fi!ittfittGfii!ii +@8G0##@###CfG0LtffLt;:,,,....,. .!0!;i!::;CL0#t;:,;G#@@@@8@0f!!;::,,::,,;:,:ii!ftLf!!iif!;;!;;!ii!;;;!!;::i::!ifti!i0t;ffiifGf0 +##C##@88@0CfLCfCi;;;:,,,,,:.,,,,,.!!iiG:,.!@#8!,,ii!00LfLLG0GCGGCGLi;,..,:::!L!iGLi!;LffC!!ft;::i!;:.,:ii::;tif@8@f;!fi!!!!fftG# +CLCCC@#LC#fiCttG!..:;;;:;;:,:;:!;,;Gf!!!,;8#f!;:;;;;iLi!!!ifG0CfLCG#@t!;!i;tCtitLi!;;itti!;f;:::!Li;:::;!;:!!fLftiii!!t!tfGii!!L +t!CLtttiifL!tfi;G,,::;,:!,,:::;!!!!!;i8Ct##f!:!!;::,::::::::;!;!!!ifG88f!t!:i!:!iii;:iCtf;;;;;;:iGttiii!!:;::!!!;;;;!fGtiLtti!;! +::::;::,.,!:i,,::!,,,:,,,,:!!:ii!it;!;t##tiL:,.,.,,;t;,.,...,,,,:;;!itf0f::;;::!tLGL;;!tti!tt!i!fit!ttt;:::;:;f!:;;!i0@LCGGt0ifG + ,, .,... . ,t, :,.,:,..,,,,::,,,:;iLff!:.,,.,,:ttGt:,.. ..,:,.,tCLtt!:i@Li!;;tfCL;:!tCt!L!;;tfi;::;;;:,;f!;::::;:;ft!!!!iLi;t +i... .,, ;G; ....:..;.,;:i..:i80fi;;;!i!tiLt!ii!, .. ......,::;;. ;@GLL!iii!!iLi!i!!!i!i;ii:,.;i;::!it;::,,,,,,,,,:.,,,:f +L!,. .,, :G; ;..;.,i:;L;:,:G8!!80;:G8#0ifi!;f8t ..,. :.,itftitfLt;;!t!!tt:tCLt;;!;::;!i!!!!ii!!:::::!;::,:::::! +itCf:. :ti!;iC!,,:!!::;:it;f;,;;i!,;0#!!08L;;G! ;0; ,tCLi!;:,,!. .!88L!;!ti!:,:i!i;;;;;;:itL;,iL0GLff;:;:itf!!fi!!!;tCi!! +i!G8L: ,!ttffGf!ttfLt:ti:!;:!,.;ti:i#@ii8@G.,,,..,,..;t0####C;t!::iti!;;!G0t:!t;::,;!i;;:;;!;;itt!:!fLfiii:;t:ifCiffit::t!tfCf +!::;;. ....,,,;ft,,;;;;:::,,;,;:,:!L0LLfCCi!!:::,:!:: ..:;iC0Gfi,,i######C!!fi;:!!;:;ffif;;ifG0i;!C:,ifGf!;f!;;;i!::iLt!!!tfffft +:!!!!;:!!;. .;:. .f::L;:i,,;,t!,!GG;:!i;;;!;::,,,,,:. .,:;;;;:.:0######0;;:,:;!;:!i;::,,;GGf:;!;:,,:;;::!;;::::,.!Gi!:L@##### +######i,:;, :i .:L;;C;:!,:::i;,:i!!i:::::,,;i;,,it:::;itfffff,,:;!ifii;::..,!i!;,,,,;,,:;!;:;::,,:::,.,,;iitti!,ifi;iifLffL# +######8..!, ;:. :G!;f::!,i;.:, .tG;:;;:. .!!!;!tti!itfLLf!!i!,;;!:,..,,,,,,,,,.. ,;!;;!!iti!:!:!fi;;,,!!:;it,,:::CttLft,:i +#8GLC#!..;. .!i .:G:.:,.,:,.,. ,::,:;:::;;;:::::;:;;!!;:.:C;:,!L;::,. ,L!;: ..,,,,,::::,,,:;;;.,;: .;, ,,::;:;;,,,: +C!::;tf:,, .!!. ,,. .., ;;::,::iLLtf080i!;ii!iC!ttff;;i#C:ii0f#8it:;ii;;;!;;:::,....,,.. ,,, . . ,;:.,.:, .. +i:,,,:;fL, .!i. ,....,, ,:Ctt!;tCfiL@@LitttLffftfftffttGLtttif##fLttfftfC00fft!,:::;!!;,,. ... . .,,,.,. ,, +f!;::::t8; .!!. ..:;,,, . ,!t;,:C0:,!;;,,,:::::,,,,,::,:,:CG:.,;i;:::::;i!!;;::,.....,,.. ..,:,.. . ... .. . +!;:it!:iG; :, ,....,. ., ..:!tLLi:,:;:,. .,::;;:::::;ii!;:;;,,.::;;;;;;;;,, .,::::::,,... ,:,:,, .... ,, +i;:;!;:iC; ., ,. ,. .. ,####8.,0@8Ciittt;:CtGGCGLGC!G8800CGGf:L:C0CL0GG0tG!,:itLCCLLLft!;:::,,,..,,,,,,,,::!!,  +i;::::;iC; :. ...,,.,.,, ,C@@#i.,iLfG0#####i,::;;;;;::;LG!;!ii;,,:iLi!!ii!!!iiffi!!!iiiitffLLfii!:,:,;;:;:,,:::;,,,,: +t!;::::!t; : .,,,. , .,,,::,. f#########! .;;. .. tC. ,f!::,,,,::;!;:;;:;!i!:;;;;;::,.. ..,... .:!:;ttti! +t!!ii!:;!: , . , ,;: i####f!!;,. .CC. ,,. ,f!!;::!!;;::,,:::::::,,,,,... .,,,,,:;!!ittiti +tfLLfttti; .. . ., !i :tiiitftttttii!!i!!;!!!!::::,,,,,,:;!i!!;;;;;;;;;;;  ,;;i!:;:,,,:::;:.,., ,!!. !.tt !!ttti: ,,.,, .,. .... .,,::::,:,....:!i:,,,::,,,,,. ..,:,,  + .;LC!:,.!fi, .,... .i!. ;,:8t!ii!,.... ..,. ...:;t;. .. . :!;. .:;;:,.. . .,... ... ... . ......... + , . .,:;;.:!t;. . ,f;::;;, .,,,;i;;C8f!,. ,;,.,:;;, .!:.,;f. ... ....,.,;:,,,... .,,.,,... ...,,,,,.,,..,::;;,:: +,:;:,,, ....,,,.. ,L#iLG! .. .ittCL8fii::. ....:,..,:.,;:;;:. ,;. , .. .::.. ...,,.......,,:,,.,,:!;i!;;;::,.,,,,::;; +tGCf;... :, ..,,:t;:;;!@#t;,,!;.:tif00L;,.. .:;..iGC: .,,. ... ,,... .,,,,,,.. ..,!ttt!:,,:,,,,::;;;;!;,,.;fLi +tGi:,,,;,,,,,,,C,,LGLG!:f;i8;:!!,:!iCGt;,..,.... ..... .;8i .:;!i::,;!:,:;i:,.... .,:;;;;,:..,,,:;!!;:,,.....,!ffLLL!t:,;ti; +t:,::!ft;;t:!:ti!i!fftii;;;f@!;;!fGC!:, .,. ., ,,,,,. .,0G;..,.,CG!!f!!f;,LC:.,,..,:,.,,,,,:;;:,,;;t!!;,,:::,::!!itCt!::;:;f; +!:::;Lf,;0i:!;!t8t:,,..:iGti80!LGt;:, . ... . ;i:,.::;GiCi;!!;:!;;G;,,::::,. .,:;;:Lf;;!;:;;;;:;Cfiiti!tiLCfi;!;!;;: +;;tCt:,.,0i,.:iGG#i, ,,:!tffGi::,.. .,,. . .:!,..,,,.,:!!CG:;fi!fLi,.;;if::!tt!;,.,!ft;;!;!tC!:fGGGLfGLLCii!!!ittt::GLLi! +!;;!;;;::i8;!L#####!:,.,;tCf!,, ....... .....,:,.,f8t,:!;..,!C!Li,,f;:;;;,.,:tG;::::;;,,;ii;::::!G@!t0##0C0t!!!!!it:!Lf!;:ifttL +GC::iitt!;GLf##08L##i:,!Ct;,. ,,,,,. .!::!i:,:!C;::::;;;t;,!..,!..!:,:,:;!;:,.,,:::;;;;;i;:!fL;!ift!!!!!!tfii!;iGti::;tGCG +,C;,!;!;,::i!itCiff##t!i:,,.. ........... ..;Ci:,,,.,!8!!fi:.,;, ,,,.,.,:::,;;:,:;:,:;t!ii!tifGfi!i!;:;!!!!!tCCCfLLtiCi!;:!!!tii +:,,. . ..,,:!0;CitCf:,,,::.:,:,:,,,::,,,,,:;Lt:. ,!@ti!:,. ,:. :C!::...,,,,:,,;!:,if!!!!;;;!!!!CLi!ittLL0L!iti;!i;;fi!;;;;;i;f +;::,.,, ,;fiC!tt;:;,,,. .....,,,,,.:LC,!i::i;;8f..!#G:,,,...,:,,;GiG!...:::::,,:;:;!ii;ti::!it!tfi;::;;;!!!::,,,,;,:iitttt!i;;t +if!,,:!!iCGC#fGi:!,,,,,,,,,,,,,.,:,:;8i:,,:!L;;L!:i#G;:;;,::,,!, ,:G;:;..,,;!::,;fLifLL!;i;!iLCtfi;::::::::!:,:::;;:;ti!!!;;;!!C +tfCLtiL80G80G#0i:!!::;;!;;;;;;!;:!:.:ii;::;0i,::!0#!,,,:,....,;, ,!,,,,,:::;;:;f8Liitt!!;;;;:;:;t;:,:i;!!!!!!!i!if;iCit;!iiLLif +CG##0LCG08@#G88i,::,,,:::::,,,,,:;;::f0fL8iGL:,!##;, ...,,:.. ,:,.,,,;!;!!:i8L!:;tfiLf;:::::!fi;;!;!;;!ttti!i!!!!iiiitfttLiL +80#8##08@008GCCi;!!;::,:,:.,.,. .,!G!;tt8!;GG!L#@!,,:!!!!!!!;,.....!,;::,:;;:;;iti!;;!;;!!::;ti!fCfLfi!ii;;;;:;fi!!ttfittGfii!ii +@0G0##8###CfC0ftffLt;:,,.....,. .!0!;i!::;CL0#t;:,;8#@@@@@8Ci;i;::,,::,:;:,:ii!ftLt!!iif!;;!;;!ii!;;!!!;::i::!ifti;i0t;tfiifCf0 +##C##@8880LfLCfG!;;;:,,,,,:,,,,,,.!!itG:,.!@#8;,:i!i@GLfLCG0CC0CCGf!:,.,::;:!f!iGLi!;LLfC!!ft;::i!;:,,:it::;tif@8@f;!fi!!!!fftG# +CLCCC@#LL#fiGttC!..:;;;:;!:,:;:!;,;Gf!!!,;@#f!;:;;:;Lfii!!iL00LfLC0#0i;:ii!tfiitLti;;itti!;f;:::!Li;:::;!;:!!ffLfiii!!t!tfGii!!L +i!CftttiiLL!ift;G,,::;,:!,,:::;!!!!!;i8Ct##f!:!!;:,,;:::::::;!!!!!iL088!!f::i;;!tii!:tCtf;:;;;;:iGttiii!!:;::!!!;;;;!fGtiLtti!;! +:::::::..,!:!,,::!,,,:,,,,:!!:ii;!t;!;t##tiL:,.,.,,;i:..,....,,,;;!itfL0!;;;;::!fLGC;;!tti!ti!i!ftt!ttt;:::;:;t!:;;!i08LCGGt0ifG + ,, .... . ,t, :,.,:,..::,,::,,,:;iLff!:.,,.,::tLL!,.....,:,.,;LLftt;;8#t!;:;ffCL::!tCt!f!;;iLi;::;;;:,;f!;::::;:;ft!!!!iLi;t +i... .,,. ;G; ....:..;.,;:i..:i80fi;;;i!;!tLiiti;. ......,.,:;;!, ,L#Ltt;!ii!!iLt!i!;!i!i;ii:,,;i;::!it!::,,,,,,,,,:.,,,:f +L!,. .,, :G; ;..;.,i:;L;:,:G8!!00::8#@ifLi!;@@: .,,. . .;.:ittittfft;;it!;ii:tCLt;;!;::;!i!!!!ii!!:::::!;::,:::::! +itCf:. :ti!;!C!,,:!!::;:it;f;,;;i!,;0#!!88i:GG, ,G0:.;LCt!!:,,!: ,i0GL!;!ti!:,:i;i;;;;;::itL;,iL0GLff;:;:itf!!fi!!!;fCi!! +i!G8L: ,!ttffGf!ttfLt:ti:!;:;,.;ti:i#@!i08:.::,.,:,,:!L@###8i!f;:!tti!;;iCGt:!t;::,;!!;;:;;!;;itf!:!fLfiii:;i:ifCiffit::t!tfCf +!::;;. ....,,,;ft,,;;;;:::,,;,;:,:!L0LLfGf!;;,;:,;!;,..,;!fG0Ct:,,#######t:;ti;:;!;:;ffif;:!fC0!;!C:,ifGf!;f!;;;i!::iLi!!!tfffft +:!!!!;:!!; .;:. .f::L;:i,,;,t!,!GG!:ii;:!!;:,,,,,:, ..,:;;;:,,i#######:,::::!!!:!i;::,,;GGf:;!;:,,:;;::!;;::::,.!Gi!:L@##### +######i,::. :i .:L;;C!:!,:::i;,:i!tt;:::,,::!;,:t!:;;!iffftL!,,;!!tti;::. .,!i!:,,:,;,,:;!;::::,,:::,.,,;iitti!,iti!iifLffL# +######8..!, ;:. :G!;f::!,i;.:, .fC;:;:,..,;!i!ifi!!tffLfi;;i,:!!;.,..,:,,,,,:,.. ,;!:;!!iti!:!:!fi;;,,!!:;it,,:::Cttfft,:t +#0CLC#!..;. .ii .:G:.:,.,:,.,, .:;:,:::::;;;:::::;;;;;;:,,ii:,:f;::....!f!;: ..,,,,,::::,,,:;;;.,;: .!, ,,::;:;;,.,: +L!::;ff:,, .!!. ... .., ;;::,!:!LLtC08C;;;ii!tC!fttf;!@#i,!0f0#i;L;!i!;;;;;;:::,....,,.. ,,, . . .;:.,.:, .. +i:,,,:;fL, .!i. ,....., ,:Cti;;tCti0#8titttLffftfftffiGGiifti##fLLtffitfC00fft!,:::;!!;,,. ... . .,,,.,. .,, +f!:::::t8; .!!. .:;,,, . ,!t;::00::;;:,,,,,::,,,,,,:,,,,;Gf,,:;;::;:::;!!!;;::,.....,,.. ..,:,.. . ... .. . +i;:iti:t0; :, ,....,. ., .:!fLLi;,:;:, .,::;;:::::;ii;;:::,,,;;;;;;;;;;,, .,::::::,,... ,:,:,, .... ,, +t!:;!!;iG; ., , ,. .. ,####8,;888Liiffi;!CfGGCGLGC!G8GG0CCGf:LiG0LLGGG0tG!::ifLCCLLLft!;:::,,,..,,,,,,,,::!!,  +t;:::::!C; :. ...,,.,.,, ,C8@#i,:fLG#######;,;:;!;;;::!C!;;!ii:,,;Lti!!!ii!!iiLf!!!iiiiitffLLfii!:,:,;;:;:,,:::;,,,,: +t!;::::!t; : .,,,. , ,,,::.. :##########, :t: .Li .;t;;:,,,,::;!;:;;:;!i!:;;;;;::,.. ...... .:!:;ttti! +t!!ii!:;!: . . , ,;: ,#####!;;;,. iG! .,, ;i!!;::!!;;::,,:::::::,,,,,... .,,,,,:;!!itttti +tfLLfttti; .. .. . ,t; !iiiitftttttii!ii!!;!!!!::::,,,,,,:;!i!!;;;;;;;;;;:  ,;;i!:;:,,,,,:;:.,., ,!!. !.tt !!ttti: ,,.,, .,. .... .,,::::,:,....,!i:,,,::,,,,,. ..,:,, .  + .:CCi:,.!fi:..,... .i!. ;,:8f!ii!,.... ..,. ...:!t:. .... ;!;. ..:;;:,...... ,,... ... ... . ......... + . .. .,:;;.:!t;. . ,t;::;;, .,,,;i;;C8f!,. ,;,.,:;;, .!,.,!t ... ....,.,;:,,,... .,,.,,... ...,,,,,.,,..,::;;,,: +,:;:,,, ....,,,.. ,L#iLG! .. .ittCL8fii::. ....:,..,,..;:;;,. ,;. . ....::... ...,,.......,,,,,..,;!;i!;;;::,,,,,,:::; +tGCf; :. ..,,:f;:;;!@#t;,,!;.:tif00L;,. . .,: .f0L, ,,. ... .,,. ..,,,,,,.. ..,!itt!:,,:,,,,:;;;;;!;,,.;fLi +tGi:,,,;,,,,,,,C,,LGLG!;f;i8;:!!,:!iCGt;,.,,... .... .;0: .:!i;::,;!:,:;i:,.... .,:!:;;,:..,:,:;!!;:,,.....,!ttLLL!t;,;ti; +f:,::!tt;;t:!;t!!i!fftii!;;f@!;;!fGC!:, .,. ., ,,,:,. .,0L: ...:CG!!f!!f;,LC:.,,..,,,,,,,,,:;;:,:;;i!!!,::;:,::!!itGt!::;:;f; +!:::;Lf,;0!:!;!i0f:,,..:tGti80!LGt;:, . ... . ;!,,.:,;GiC!:;!;:!;;G;.,,:::,. .,:;;:Lf;;!;:;;!;:;Cfiiti!tiLCft;;;!;;: +;!tCt::.:0i,.;iGG#i, ,,:!tftGi::,.. ..,. .:!,..,,..,:i!Gf,;fi;ffi,.;;if::!tti;,.,!tt;;;;!tC!:tGGGLfGLLC!i!!!ittf::GLLi! +i;;!;;;::i8!iL#####i:,.,;tCf;,, .,..... .,...,:,.,f8t,:!;..,iCiG!.,f;::;;,..:tG;::::;;,,;ii;::::!0@!t0##0C0t!!!!!if:!Lf!;:ifttL +GL:;titt!;GLC##0@L##i:,!Ct;,. . ,,,,,. .!::!i:,:!C;::::;:;t!,!..,!,.!:.:,:;!;,,..,:::;;;;!i;:!LC;!iti!!!!!!tfii!;iGti:,;tGCG +,C::i;!;:::i!itLiLf##t!i;:,.......,...... ..;Ci:,,,.,!8!!fi:.,!, ,,,.,.,,,:,;;:,:;,,,;t!ii!tifGfi!i!;:;!!!!!tCCCfLLtiCi!;:!;!tii +:,,. . ..,,:!0;GitCf:,,,::,:,:,:,,,::,,,,,:;Lt:. ,!@ti!:,..,,. :C!::...,,,::,,;!,,if!!!!;;;!!!!Cfi!ittLL0f!iti;!!;;fi!;;;;;i;f +;:,,.,. ,!LiC!tt;:!,,.. .....,,,,,.:LC,!i::i!;8f..!#G:,,,...,:,,;GiGi...,,,::,,:;:;!ii;ti::!it!tfi;::;;;!!!::,,,,:,:iitttt!i;;t +!t!,,:!!fG0C#fGt:;,,,,,,,.,,,,,.,:,::8i:,,:!L;;L!:i#C;:;:,::.:!,.,:G;:;..,,;;,,,;tLifLf;;i;!iLCtfi;::::::::;:,:::;;:;ti!!!;;!!!C +tfCLiiL00@@0G#0i:!!::;;!;;;!;;!;:!,.:ii;::;0i,::!0#!,,,:.....,;, ,!,,.,,,:::::;f0fiiti!!;;;;:;:!t;:,:i;!!!!!!!i!if;iCit;!tiCLif +LC##CLCCG@8#G08i,::,,,:,:,:,,,,,:;;::t0fL8iGL:,!##;, ..,:,., ,:,,,::;!:;!:i8L!:;ffiLf;:::::!fi;;!;!;;!ttti!i!!!!iiiitfftLiL +00#0##08@008GCLi;!!;:,,:,,.,.,. .,!G!;tt8!;GG!L#@!,,:!!!!!!;:, ....!,;;:,:;::;;iti!;;!!;!!::;ti!fCfff!!ti;;;;:;fi!!tifittGfii!ii +@0G0##0###CfCGftffLt;,,......,. .!0!;i!::;CL0#t;:.;8@8@@@@8Li;!:,,,,::,,::,:ti!tift!!iiL!;;!;;!ii!;;;!!!::i::!ifti;i0t;tLiifCf0 +##C##88080LffLfC!;:;:,,,,,:,,,,,,.!!iiC:,.!@#8;::!:i@CffLCGGCCGCCCt;:..,:;;:!f!i0Li!;LLLC!!ft:::i!;:.,:ii::;tif@8@f;!fi!!!!LftG# +LLCCC@#fL#fiGtiC!..:;;;:;!:,:;:!;,:Gf!!!,;@#f;;:;:,;Ct!iiitL0GfLCG8@Ci;:it!iiiitLti;;itti!;f;:::!Li;:::;!;:!!ffffiii!!t!tfGii!!L +i;LfiitiiLL!ifi;G,,:::,,!:,:::;!!!!!;!8Ct##f!:!!;:.,;::::::;;!i!!ifG8@0!!f:!;:;!iii!:iCtf;:;;;;:iGttiiii!:;::;!!;;;;!fGtiftti!;! +,:::,,,..,;:!,,::!,,,:,,,,:!!:ii;!t:!;t##tiL:,,,.,,;;,......,,,:;;!itf0G;:;::::ifLGC;;!tti!ti!i!fti!ttt;:::;:;t!:;;!i08LCGGt0ifG + ,. ,i, :,,,:,..:,,,::,,,:;iCLf!:.,,,,::fLf;,.. ..,:,.,!Lfttt:!@0i;;:;ffGL::!tCt!L!;;iLi;::;;;,,;f!;:::;!:;ft!;!!iLi;t +i... .,, ;G; ....:..;.,;:t..:i80fi;;!ti;!Lfiiii:. ......,.,:;;i, :@@tii;;!i!;ifi!i!!!i!i;ii:,,;i;::!it!::,,,,,,,,,,.,,,:L +Li,. .,, :G; ;..;.,i::L;:,:G8!!80;;8#8iCt!;i@G, .,,. :,.!itii!iiti;:it!;tt:tCLt;;!;::;ii!!!!ii!!:::::!;::,:::,:! +itCf:. :ti!;!C!,,:!!:;;:tt;f;,;;i!,;0#!i#G;;Gf. :0t,,iCCi!;:,,i, .,iCGL!;!ii;:,:i;!;;;;;::itL;,iL0CLLf::;:!tf!!fi!!!;fLi!! +i!G8L: ,!itffGf!ttfLt:ti:!;:!,.!ti:i#@!t80,,::,.:,,.;iG####G!ti::iti!;::tCGt;!t;:,,;!!;;,;;!;;itt!:!fLfiii:;i:ifCiffit::t!tfCf +!::;:. .....,,;ft,,;;;;:::,,;,;:,:!L0LLLG!;!;:;,,!;: ..:;iLGGf!,.;######G!;iii!:!!;,;ffif;:!LC0i;!C:,ifGf!;f!;;!i!::iLi!!!tfffft +:!!!!;:!!;. .;:. .f:,L;:i,,;,f!,!GG!:t;;;i;:,,,,,,:. ..,:;;;;:.,L######8:;::::!!!:!i;;:,.;GGf:;!;:,,:;;::!;;::::,.!Gi!:L@##### +######i,:;,. :i .;L;;C!:!,:::i;,:i!t!::::,,::!;:!t;;;;itfLfff,,:;!ifii!;:. .:!i!:,::,;,,;;!;:;::,,:::,.,,;iitti!,ifi;iifLffL# +######8..!, ;:. :G!;f::!,i;.,, .fi:;::,.:,;ifitti!itffLf!!i!,;;i::,.,::,,,,::,.. ,;!;;!!iii!:!:!f!;;,,!!:;it,,:::CttLft,:t +#0CLC#i..;, .!i .:G:.:,.,:,... .,:,,:::::;;;:::::;:;;;;:.:C!,,!L;::...,iL!;: .. ..,,,,,::::,,,:;;;.,;: .!, ,,::;:;;:,,: +L!::;ff:,, .!!. ,,. .., ;::::!;!fffC88f;!;iiitC!tttf;i@fi:f8f#G!!L;ii!;;;!;;:::,....,,... ,,, . . .;,.,.:, .. +i:,,,:;fC: .!i. ,....,, ,:Ct!:;tCtL@#CttfftfffttftfLtiGttfLit#8fLftft!tfC00fft!::::;!!;,,. . . .,,,.,. ,, +f;:::::t8! .!!. .:;,,, . ,!t:,:00;:;;,,,::::,,,,,:::,,,:L0;.,:!;::!:::;i!!;;::,....,,,.. ..,:,... . ... . . +i;:ifi:f8; ;, ,....,. ., .:!fLLi!:;;:, ,,::;;::::;!i!:::::,,,;:::;;;;;;,, .,:;;:::,,... . ,:::,, .... ,, +t!:;!!;iG; ., ,. , .. ,####8:G@88Cffff!:iCtGGCGLGC!00LG0LLGt:LfLGLf0GG0tG!::itLGGLLLft!;:::,,,..,,,,:,,,::!!,  +t;::::;!L; :. ...,,.,.,, ,C@@#i:!LL8######L,:::;!!!;::it;;!ii!,,,!Li!!!iiiiiitLf!!iiiiiitffLLfii!:,:,;;:;:.,:::;,,,,: +t!;::::!t; : .,,,. , .,,::,. t#########! .tf, iL. ,t!::,,,,:::;!;:;;:;!i!:;;;;;::,.. ..,... .:!:;ttti! +t!!it!;;!; , . . ,;:. ;#0##f;;;,. ,CC, . ,,. ,t!;;;::!!;:::,::::::::,,,,,... .,,,,,:;!!ittti! +tfLLfttti; .. .. !t. ,iiiiitftitttii!ii!!;!!!!::::,,,,,,:;!!!!;;;;;;;;;;;  ,;;i!:;::,,,,,;:.,., ,!!. !.tt !!ttti: ,,.,, .,. .... .,,::::,:,....,!i:,,,::,,,,,. ..,:,, .  + .:CGi:,,;fi: .,,.. .i!. ;,:8f!ii!,.... ..,. ...:!t: .... ;!;. ..:;;:,...... .,... ,,. ... . ......... + , . .,:;;.:!t;, . ,t;::;;, .,,,;i;;L8f!,. ,;:.,:;;, .!,.,ii ... ....,.,;:,,.... .,,.,.... ...,,,,,.,,..,::;;,,: +,:;:,,, ....,,,.. ,f#iLG! .. .ittCL8fii::. ....:,..,,..::!;, ,;. .. ....::... ...,,.......,,,,,..,;!;i!;;;::,,,,,,:::; +tGCt; .. ,. ..,,:f;:;;!@#t;,,!;.:tif00L;,. . .,, .L0L, ,,. ... .,,....,,,,,,.. ..,!itt!:,,:,,,,:;;;;;!;,,.:fLi +tGi:,,,;,.,,:,,C,,fGLG!;f;i8;:!!,:!iCGt;,.,,... .... .;0, .;!i;::,;!:,:;i:,.... .,:!;;;,:..,:,:;!!;:,,.....,iftLLL!t:,;ti; +f:,::!tt;;i:!;t!!i!fftii!;;f@!;;!fGC!:, .,. ., ,,,,,. ,0f: ..,:CG!!f!!f;,LG:.,,..,:,,,,,,,:;;:::;;i!!!,::;:,::!!itCt!::;:;f; +!:::;Lf,;0!:!;!t8t:,,..:tGti80!LGt;:, . ... . ;;,..:,;CiL!;;!;:!;;G;.,,:::,. .,:;;:Lf;;!;:;;!;:;Cfiiti!tiLCfi!!;!;;, +;!tCt::.:0i,.:iGG#i, ,,:!tftGi::,.. ..,. . .:!,..,,..,:!!Gt,;fi!ffi,.:;if::!tt!!,.,!tt;;;;!tC!:tGGGLfGLLC!i!!!ittf::GLLi! +i;;!;;;::i8!iC#####i:,.,;tGL;,, ....... .....,:,.,f8t,:!;..,tf!G!.,f;:;;;,..:tG;::::;!,,;ii;::::!0@!t0##0C0t!!!!!if:!Lf!;:ifttL +Cf:;tiit!;CG0##8@L##i:,!Ct;,. . ,,,,,. .!::!i:,:!C;::;:;:!i;,!..,!,.!:,:,,;!;:,..,:::;;;;;i;:!LC;!iti!!!!!!tfii!;iGti:,;tGCG +,L::!;!::,:fitfCiff##t!i;:,.............. ..;Ci:,,,.,!0!!fi:.,!. ,,,.,..,,:,;;:,:;,,,:t!ii!tifGfi!i!;:;!!!!!tCCCffLtiCi!;:!;!tii +,,,. . ..:,:!0;CitCf:,.,:,,:,:,:,,,::,,,,,:;Lt:. ,!@ti!:,..:,. :G!::....,,:;,,;!,,!t!!!!;;;!!!!Cfi!ittLL0f!iti;!i;;fi!;;;;;!;f +;:,,.,. ,;CtC!ft;:;,,.. .....,,,,,.:LC,!i::i;;8f..!#G:,,,...,:.,;0iG!...,,,::,,:::;!i!;ti::!if!tfi;::;;;!!!::,,,,:,:iittit!i;:t +if!:,;!iL08G#fGi:;,,,,,,,,,,,,,.,:,,;8i:,,:!L;;L!:i#C;:;:::,.;;,.,:0;::...,;;,,,;tLtLLf;;i;!iLCtfi;::::::::!:,:::;;:;ti!!!;;!!!C +tLGLffL@8#@GG#0i:;!:;;;!;;;;;;!;:!,.:ii;::;0i,::!0#!,,,:,...,::. ,!,,...,:::::;t0fiiti!!;;;;:;:!t;:,:i;!!!!!!!i!it;iCit;!tiCLif +LG#@CCGC0@8#G08!,,,,,,:::,:,,,,,,;;,:t0fL8iGL:,!##;, .,,:;. , ,:,.,,,;!:;!:i0L!:;tfiLf;:::::!Li;;!;!;;!ttti!i!!!!iiiiifttLiL +00#0@@088G08GCLi;;!;:,,,,,.,.,. .,!G!;tt8!;GG!L#@!,,;!!!!!!;:. ..,!:;;;,:;::;;!ti!;;!!;!!::;ti!fCfff!;ti;;;;:;fi!!tifittGfii!ii +@8G0##0###CfLGftffCt;:,......,. .!0!;i!:,;CL0#i;:,!8@8@@8@8t;;;:,,:,;:,,::,:ti!tift!iiiL!;!!;;!ii!;;;!!;::i::!ifti;i0t;tfiifCf0 +##C##88080LffLfC!;:;::,,,,,,,,,,,.!!iiG:,.!@#8;,,i:f@CffLG0GCGGCCLi;,..,:;;:!f!iGfi!;LLLG!!ft:::t!;:.,:ii::;tif@8@f;!fi!!;!LttG# +LLCCC@#ff#fiGtiC!..:!;;:;;:,:;:!;,;Gf!!!,;@#f;;:;::;Ci!!!itC0CfLG0@@t;::ititiiitCti;;itti!;t;:::!L!::::;!;:!!fLLfiii!!t!tfGii!!L +i;Cfiit!!fL!ifi;G,,::;,:!,,:::;;!!!!;!8Ct##f!:!!;:.,:::::::;!!i!!iL088f;ii:i;:;!tii!:iCtt;:;;;;:iGttiii!!:;::!!!;;;;!fGtiftti!;! +,:,:,., .,;:i,,::!,.,:,,,,:!!:!i;!t:;;t##iiL;,,,.,:;:,......,,,:;;!itf8f;:;:;::ifLGC;;!iti!tt!i!fti!ttt;:::;:;t!:;;!i08LCGGt0ifG + .. ,i, :,,,:,..:,,,::,,,:;iCLf!:,,:,:::fLi:,.. .,,:,.:tLtiti;f@f;;;:;fLGL::!tCt!L!;;!Lt;::;;;,,;f!;::::;:;ft!;!!iLi;t +i. . ,. ;G; ....:..;.,;:i..:i80fi;;!ti;iLtiii!,. .. ....,.,;;!;..;@C!!!;;ii!;ifi!i!;!i!i;ii:,,;i:::!it!::,,,,,,,.,:.,,,:L +L!,. .,, :G; ;..;.,i::L;:,:G8!!0G:!@#0iCi!;L8i .,,. .;..!ii!!!!iti::!t!!tt:tCLt;;!;::;!i!!!!ii!!:::::!;::,:::::! +itCf:. :ti!;!C!,,:!!:;;:tt;f;,;;i!,;0#!i#C:!C; ;0; ,fCLi!;,,:! .,iLCL!;;i!;:,:!;i;;;;;;:itL;,iL0CLLf;:;:!tf!!fi!!!;fCi;! +i!G8L: ,!itffGf!ttfLt:ti:!;:!,.!fi:i#8it8L.,,,..,,..!t0###@L!f;:;tti!;::tCGt:!i;:,,;!!;;,;;!;;itt!:;fLfiii:;i:ifCiffit::t!tfCf +!::;:. .....,,;fi,,;;;;:::,,;,;:,:!L0LLLC!;;:;:,:!;: .,:;iLGCt;,,0######f;:iit!:!;;,;ffif;;!CG0i;!C:,ifGf!;f!;;;i!::iLi!!!tfffft +:!!!!;:!!;. .!:. .f:,L;:i,,;,t!,!GG!:i;;!i;:,.,,,,,....,:;;;;,,!8######!,;;:::;!;:!i;::,.;0Gf:;!;:,,:;;::!;;:::,,.!Gi!:L@##### +######i,:;,. :i .;L;;C!:!,:::i;,:i;i;::::,,,,!;;ii:;;!tffLfft,,:;!tLt!:,:. .,!!;:,,:,;,,;;!;:;::,,:::,.,,;iitti!,iti;iifLffL# +######8..!, ;:. :G!;f::!,i;.:, .t;:;::.,;,;tfiti!!itffft;!i:,;;!,;i,,::,,,,,:,. ,;!;;!!iii!:!,ifi;;,,!!:;it,,:::CttLft,:t +#0CLC#i..;, .ii .:G:.:,.,:,... .::,,::::;!;;:::::;:;:::,,;f;,:i!:::.,.,tL!;:.... ..,,,,,:::,,,,:;;;.,;: .!, ,,::;:;;,,,: +L!::;ff::, .!!. ,,. .., ;:::;!;;ffLC@0t;!;iiitL!tiif!C@ii!00t@i!tL!ti!;;;;;;:::,....,,... ,,, . . .;,.,.:, .. +i:,,::;fC: .!i. ,....,, ,:Cf;:;tCt8#8LttfftfffttftfCtfCtLLLt0#LLfftft!tfC00fft!:::;;!!;,,. . . .,,,.,. ,, +f;::;::t@! .!!. .:;,,, ,it:,:00;:!:,,,:::,,,,,,:::,,,;Gf,,:;;::;;:::;!!!;;::,....,,,.. ..,:,, . . ... . . +i;:tfi;f8; ;, ,....,.. ., .:itLLi!:;;:, ,,::;;::::;!!;:::::,,:;:::;;;;;;,, .,:;;:::,,... ,:::,, ... ,, +ti:;i!;tC; ., ,. , ,. ,####8:0@@80LfLf;;tGtGGCGLGCi00LGGfLGt:CffCff0G00tG!:;itLGGCLLti!;:::,,,..,,,,:,,,::!!,  +t;::::;!L: :. ...,,.,.,, ,G@@#i;tLG#######:,:::!i!;;:;i;:;!ii!,,:Lf!!!!iiiittiLf!!iiiiiitffLLfii!:,:,;;:;:.,:::;,,,,: +t!!;:::!i; : .,,,. , .,,::,..#########f. :Gi .Lt :t;::,,,,::;;!;;!;:;!i!:;;;;;::,.. ..,... .:!:;ttti! +t!!it!:;!; , . . ,;:. .f@C##!::,. :Ci. . .,, ,t;;;;::!!;;:::::::::::,,,,,... .,,,,,:;!!itttii +tfLLfttti; .. .. .t! ;iiiiitttitttii!ii!!;!!!!::::,,,,,,:;!!!!;;;;;;;;;;;  ,;;i!:;::,,,,.::.,., ,!!. !.tt !!ttti: ,..,, .,. .... .,,::::,:,....:!i:,,,::,,,,,. ..,:,, .  + ,:CGi:,,!fi: .:,.. .i!. ;,:8t!ti!,.... ..,. ...:!t: .... ;!;. .:;;:,.. . ,,... ,,. ... . ......... + , .. .,:;;.:!t!. . ,t;::;;, .,,,;i;!L8f!,. ,;,.,:;;,..;,,,ti ... ....,.,;:,,.... .,,.,,... ...,,,,,.,,..,:;;;,,: +,:;:,,, ....,,,.. ,f#iLG!... .ittLL8fii::. ....:,..:,.,::!;, ,;. , ....,:... ....,,.......,,:,,..,;!;i!;;;::,,,,,,:::; +tCCt;. . :. ..,,:f;:;;!@#t;,,!;.:tif00L;,. . . ,:, ,C0L, ,,. ... ..,.....,,,,,,.. ..,!itt!:,,;,,,,:;;;;;!;,,.;fLi +tGi:,,,;,.,:;,,C,:LGCG!:f;i8;:!!,:!iCGt;,.,,.... ..... .!0, .;!t;:::;!:,:;i:,.... .,:!:;;,:..,:,:!!!;:,,.....,!ftLLL!t:,;ti; +t:,::!ft;;i:i:t!!i;fftii;;;f@!;;!fGC!:, .,. ., ,,,,,. ,0t, . ,:CG!!f!!f;,LG:.,,..,,,,,,,,,:;::::;!i!!!,,:::,::!!itCt!::;:;f; +!:::;Lf,;0!:;;!i0i:,,..:tGti80!LGt;:, . ... . :;,. ,,;CiLi;!!;:!;;G;.,::::,. .,:;!:Lf:;!;:;;!;:;Cfiiti!tiLCfi;!;!;;: +;;iCt::.:0i,,;tGG#t, ,,:!tftGi::,.. .,,. .:!,..,,. ,:;;Gt,;fi!fLi,.:;if::!tt!!,.,!ft;;!;;tC!:fGGGLfGLLC!i!!!ittf::GLLi! +i;;!;;;::i8tfG#####i::,:;tGf!,, ....... .....,:,.,f8t,:!;..,tt;G!.,f;:;!;,..:tG;::::;;,,:ii;,,::!G@!t0##0C0t!!!!!it:!Lf!;:ifttL +Lt:;tiit!!G####8#C##i::iCt;,. . ,,,,,. .!::!i:,:!C;::;:;;i!:,!..,!,.!:,:,,;!;:,..,:::;;;;;!;:!LC;;iti!!!!!!tfii!;iGti:,;tGCG +,f,:i;;:::!CffLGiLf##tii::,.. .......... ..;Ci:,,,.,!8!!fi:,,;. ,,,.,..,,,,::,,:;,.,:t!ii!tifGfi!i!;:;!!!!!tCCCfLLtiCi!;:!!!tii +,,,. . .,:,:!0;CitCf:,.,::.:,:,:,,,::,,,,,:;Lt:. ,!@ti!:,..:, :G!::. ..,,:;,,;!,,!f!!!!;;;!!!!Cfi!ittfL0L!iii;!i;;fi!;;;;;i;f +::,,.,. :;CtL!ft;:;,,.. .....,,,,,.:LC,!i::i;;8f..!#G:,,,..,::.,;0iGi...,,,:;,,:::;!i!;ti::!it!tfi;::;;;!!!:,,,,,:,:iitttt!i;;t +it!::!ttL08C#fGi:;,,,,,,,.,,,,,.,:,,;8i:,,:!L;;L!:i#C;:;:::,,;:..,:G;::...,;!:,,;tLtLLf!;i;!iLCtfi;::::::::;:,:::;;:;ti;!!;;!!!C +tL0LLC0#0#8GG#0i:!!:;;;!;;;;;;!;:!,.:ii;::;0i,::!0#!,,,:....,;, ,!,....,,::::;f0fiiti!!;;;;;;:!t;:,:i;!!!!!!!i!if:iCit;!tiCLif +fG##CCGC080#G08!,,,,,,:,:,:,,,,,,;;,:t0fL@iGL:,!##;, .,,:;. , ,:,.,,,:;:;!:i0L!:;tfiLf;:::;:!fi;;!;!;;!ttti!!!!!!ii!iifttLiL +08#0@@088G08GCLi;;!;:,,,,:.,.,. .,!G!;tt8!;GG!L#@!,,;!!!!!!;,. .,!,;;:,,;::;;!ti!;;!!;;!::;ti!fCfff!!ii;;;;:;fi!ittfittGfii!ii +@8G0##G###CfLGftffLt;,,......,. .!0!;i!::;CL0#t;:,t@@8@@8@0i;;;,,,:,::,,::,:ti!tift!iiif!;;!!;!ii!;;;!!!::i::!ifti!i0t;tfiifCf0 +##C##8808GLffCfC!::;:,,,,,,.,,,,,.;!iiG:,.!@#8;,:!:C8CffLGGCCGGCCfi:,..,:;;:!f!iGfi!;LLLG!!ft;::t!;:.,:tt::;tif@8@f;!fi!!;!LftC# +ffLLC@#ft#t!GtiC!..:;;;:;;:,:;:!;,;Gf!!!,;8#f!;:;::!Li!!!ifG0CfCG8@8t;,:itiiii!iLii;;ittii;f;:;:!L!;:::;!;:!!ffffiii!!t!ttGii!!L +!;Lfiii!!ff!!fi;G,,:::,:!,,:::;!!!!!;!8Ct##f!:!!;:.,::,::::;!ii!!tC888!:t!:!;::!iii!:iCit;;;;;;:iGttiii!!:;::;!!;;;;!fGtiftti!;! +,,,:,., .,;:!:,::!,.,,,,,,,!i:ii;!t:!:t##iiL;,,,.,:;:......,,,:;:;iitL0!;;:,::;iLCGC;;!iii!tt!i!ftt!ttt;:::;:;t!:;;!i0@LCGGt0ifG + .. ,i, :,,,:,..,,,,::,,,:;iCLf!:,::,,::LCi:.....,::,.:ffi!ii;G@i;;;:!LLGL::!tCt!L!;;!Lt;::;;;,,;f!;::::;:;ft!;!!iLi;t +i... ,. ;G; ....:..;.,;:i..:i80fi:;!fi;tLtiii;. . ....,.,:!;i:..!@f;!!;!ii!;ifi!i!;!i!i;ii:,,;t;::!it!::,,,,,,:,,:.,,,:f +L!,. .,. :G; ;..;.,i::L;:,:G8!!0G;!##ftGi!;08; .,,. . .!..!!i!;!!iti;:!t!;tt:tCLt;;!;::;!i!!!!ii!!:;:::!;::,:::::! +itCf:. :ti!;!C!,,:!!:;::tt;f;,;;i!,;0#!t#f:iG: .i0: :LGfi!:,,!; :,:!LLL!;;i!;:,:i;i;;;;;;:itL;,iL0CLLf::;:!tf!!fi!!!;fCi!! +i!G8L: ,!itffGf!ttfLt:ti:!;:!,.;fi;i#8!i0! ,,,.,:,,:!f8###8t!f;:!ttii;::tLGt:!i:,,,;!!;;,;;!;;itf!:!fLfiii:;i:ifCifLii::t!tfCf +!::;;. .....,,;fi,,;;;;;::,,;,;:,:!L0CLLf!:;:;:,:!;,..,:!tLCLi;,,@######t::iit!:!;;,;ffif;;!CG0i;iC:,ifGf!;f!;;!i!::iLi!!!tfffft +:!!!!;:!!;. .;:. .f::L;:i,,;,t!,!GG!:i;;!!:,,.,,,:,...,,:;;;:,,!8######:,;;:::;!;:!i;::,.;0Gf:;!;:,,:;;::!;;:::,,.!0i!;L@##### +######i,:;,. :i .:L;;C;:!,:::i;,:i;!;::::,,,,!;;ti:;;!tfLLffi,,:;;tLt!:,;. ,,!!;;,::,;:,;;!;:;::,,:::,.,,;iitti;,iti;iifLffL# +######8..!, .;:. :0!;f::!,i;.,, .!:::::.,;,!LLtti!!ittffi!!i,:!i;.!L,.,:,,,,,:,. ,;!;;!!iti!:!:if!;;,,!!:;it,,:::CttLft,:t +#0CLC#!..;, .ii .:G:.;,.,:,... .,,.,::::;!;;;::::;:;:::,:f!:,;C;:;:,,.,tL!!:... ..,,,,,::::,,,:;;;.,;: .;, ,,::;:;;,,,: +L!::;ff::, .i!. ,,. .., ;::;;!:;tfLC@G!;i!ititL!tiifi@@!ii0fC#iitL!ii!;;;!;;:::,....,,... ,,, . . .;:.,.:, .. +i:,,,:;fC: .!i. ,.....,. ,:Gt;:;tLf8#0fttfftfffttftLLtLLtCfti##fCfftti!tfC00fft!,:::;!!;,,. .. . .,,,.,. .,, +f;:;;:;f@! .;!. .:;,,, . ,!t:,:00;:;:,,::::,,,,,,::,,,,!C!.,:;;::;;:::;i!!;;::,.....,,.. ..,:,.. . ... .. . +i;:tLt;L8; ;, ,....,. ., .:itfL!!;;:,. .:,::;;::::!!!;:::::,,:::::;;;;;;,, .,:;;:::,,... ,:::,, .... ,, +ti:;!!;iC; ., ,. ,. .. ,####0:08CGGLLLL!tfGiGGCGLGCf0GLGGfLGt:GttCLfGG00fG!:;iifGGCLLti!;:::,,,..,,:::,,,::!!,  +i;:::::!f: :. ...,,.,.,, ,C@@#i;fL0#######::::;ii!;;:;;;;;!i!;:,;Ci!!!!iiitfttCf!!iiiiiitffLLfii!:,:,;;:::,,:::;,,,,: +t!!;:::!i; : .,,,. , .,,::,.,#####0@8f;. !G: ,L: .!i:::,,,,::;;!;;!!:;!i!:;;;;;::,.. ..,... .:!:;ttti! +t!!it!;;!: . . , ,::. .tfL#f,.. ;t, .. ... .i!;;;:::!i;:::,::::::::,,,,,... .,,,,,:;!!itttti +tfLLfttti; . .. :t: !iiiiitttitttii!ii!!;!;!!::::,,,,,,:;!!!!;;;;;;;;;;;  ,;;!i:;:,,,,,.::.,., ,!!. !.ti !!ttti: ,..,, ,,. .... .,,::::,:,....,!i:,,,,:,,,,,. ..,:,, .  + ,:C0i:,.!fi, .,,.. .i!. ;,:8t!ii!,..., ..,. ...:!t: .... ;!:. ..:;;:,. .. ..... .,. ....... ........ + , .. .,:!;.:!t;. . ,f;::;;, .,,,;i;!L8f!,. ,;,.,:;;, .;,,:t! ... ......,::,,,... .,,.,.... ...,,,,,,::,.,:;;;,,: +::;:,,,. ....,,,.. ,f#iLG!. . .ittCL8fii::. .....:,..:,.,::!;, ,;. .. . .:,... ..,,.......,,,,,..,:;;i!;;!!!,..,,,::;; +tGLt;... ,. ..,,:t;:;;!@#t;,,!;.:iif00L;,. ,:, ,C0f, ,,. ... .,.. .,,,,,,. ..,!ttt!:,,:,,,,::;!!!!;,,.;fLi +tGi:,,,:,.,:;,,C,:LGLG!:f;i8;:!!,:!iCGt;,.,,.... .... .i0, .;!t;::,;!:,:;i:,.... ..:;:;;,:..,:,:;!!;:,,.....,!fLCCL!t:,;ti; +f:,::!tt;;i:i:t!!i!fttii;;;f@!;;!fGC!:, .,. ., ,,,,,. ,0t, . ,:CG!!f!!L;,LC:.,...,,,.,,,,,:;;::,;!i!!!,,:::,::;!itCt!::;:;f; +i:::;Lf:;0!:;;;t0i:,,..:tGti00!LCt;:, . ... . :;,. ,,;CiC!;;!;:!;;G;.,,:::,. .,:;;:Lf:;!;:;;;;:;Cfiit!;iiCCfi!!;!;;, +;!iLt;:.:0i,,;tGG#t, .,:!tft0i::,.. .., . .:!,..,,. ,::;Gt,;fi;fLi,.:;if::!tt!!,.,!ft;;!;!tC!:tGGGLfGLLCii;!tftif::GLLi! +!:;!;;;:;i@fLG#####t::,:;tGf!,, ....... .....,:,.,f8t,,!;..:fi;G;.,f;:;!!,.,:tG;::::;!,,;ii;::::!G@!t0##0CGt!!!!!;i##tt!;:ifttL +Ci,;tiitii@####@#C##t::!Ct;,. . ,,,,,. .!::!!:,:!C;::::;;i!:,!..,!,.!:,:,,;!;,,..,:::;;;;;i;:!fL;;!ti!!!!!!tfi!!@#tii:,;tGCG +,t,:i!!;:;iGCLC0tLL##t!i;:,.. ... ...... ..;Ci:,,:.,!0!!fi:,,;. ,,,.,..,,,.,,,,:;,.,:t!ii!tifGfi!i!;:;!!!!!fCCCffLiiti;;:!;!tii +,,,. .. .,:,:!0!CitCf:,,,:,.,,:,:,,,::,,,,,:;Lt:. ,!@ii!:,..:. :G!::. ....,:,.:!,,!t!!!!;;;!!!!Cfi!ittLL0f!iti;!!::i!!;;;;;i;f +::,,.,..:;GtL!tt!:;,,,. .....,,,,,.:LC,!i;:i;;8f..!#G:,,,..,:,.,;GiG!...,,,::,,:::;!ii;ii::!!t!tfi;::;;;!!!::,,,,:,:iitttt!i;;t +tt!:;!ttL00C#fGi:!,,,,,,,.,.,,,.,:,,:8i:,,:!L;;L!:i#C;:;:,:,,;,..,:G;::. .,;!:,,;tLifLf!;i;!iLCtfi;::::::::;:,:::;;:;ti;!!;;;!!C +fC0CCG8#0#8GG#8i:!!::;;!;;;;;;!;:!,.:ii;::;0i,::!0#!,,,,....,;, ,!,,...,,::::;t0fiiti!!;;;;:;:!t;:,:i;!!!!!!!i!if:iCit;!iiLLif +fG##GCGG880#G00!,,,,,,:,:,:,,,,,,;;,:t0fL8iGL:,!##;, .,,:;. , ::,.,,,:;:;!:i0L!:;tfiLf;:::::!fi;;!;!;;!ttti!i!!!!ii!itfttCiL +08#0@8G88G08GCLi;;!:,,,,,,.,.,. .,!G!;tt8!;GG!L#@!,,;!!!!!!;,. .,!,;;:,,;::;;iti!;;!!;;!::;ti!fCfff!;ii;;;;:;fi!!tiLittGfii!ii +88G0##G###CfLGttffLt;,.......,. .!0;;i!:,;CL0#t;:,t@@8@@8@G!;;:,,::,::,,,,,:ti!tiffiiiit;:;!;;!ii!;;;;!;::i::!ifti;i0t;tfiifCf0 +##C##8800GLffLfC!::;:,,,,,,.,,,,,.!!iiC:,.!@#8;,:!;G8LffCGGCC0GLLf!:,..,:;::!f!iCfi!!ffLC;!ft;::t!;:.,:ii::;tif@8@f;!fi!!;!fftG# +ffLLL8#ft#t!GtiC!..:;;;:;;:,:;:!;,;Gf!!!,;@#f;;:;::iL!!!!iLG0LLCG8@0i:,:iti!ii!iLii!;itti!;f;:::!L!;:::;!;:!!ffLfiii!!t!tfGii!!L +!;Lfi!i!!ff;!fi;G,,:::,:!,,:::;;!!!!;!8Ct##f!:!!;,.:::,,,::;!i!!ifG888!:t;:;:::;!ii!:iCtf;;;;;;:iGttiii!!:;::!!!;;;;!fCtiftti!;! +,,,:,., .,::!,,::!,.,:,,,,:!!:ii;!t:;:t##iiL:,,,.,:;:......,,,:;;!!itC8!;;:,:::!fLGL;;!iti!ti!i!ftt!tti;:::::;t!:;;!i08LCGGt0ifG + ,. ,t, :,,,:,..,,,,::,,,:;iLff!:,::,,,:LL!:,...,,::.,;ft!!ii;0@i;;;:!LLGL::!tCt!L;;;!Lt;::;;;,,:f;;::::;:;ft!;!!iLi;t +i. ,. ;G; ....:..;.,;:i..:i80fi:;!fi;tCtiii;. . ....,.,:!;i:.,!@t;!!;!ii!;ifi!i!;!i!i;ii:,.;t;:,;it!::,,,,,,,.,:.,,,:f +f!,. .,. :G; ;..;.,i::L;:,:G8!!0G;!##tfGi!;88: .,,. . .,i,,!!!;;;!tfi;:!t!;ti:tCLt;;!;::;ii!!!!ii!!:::::!;::,:::,:! +iiCf:. :ti!;!C!,,:!!:;;:it;t;,;;i!,;0#!t#t,tG: ,tG:.;LGf!!:,,i: .i,:!fff!;;i!;:,:i;i;;;;;;:itL;,iL0GLLf::;:!tf!!fi!i!;fLi;! +i!G8L: ,!itffGf!ttfLt:ti:!;:!,.!ti;i#8ii0; ,,,.,,,,:!L@###8iit::!tiii;::iLGt:;i:,,,;!!;;,;;!;;itt!:;fLfiii:;t:ifCitfii::f!tfCf +!::;;, .....,,;fi,,;;;;:::,,;,;:,:!L8CLLt;:;:;:,;!;,..,:!tLCfi:,:#######t::iii!,!;;,;ftif;;!C00i;iC:,ifGf!;f!;;!i!::iLi!!!tfffft +:!!!!;:!!: .;:. .f:,L;:i,,;,t!,!GG!;!;;i!:,..,,::,...,,:;;;:,,i8######:,:::::;!;:!i;:::.;0Gf:;!;:,,:;;::!;;:::,,.!Gi!:L@##### +######i,::. :i .;L;;C!:!,:::i;,:i;!:,,,,...:!!;t!;;;ifLLLtf;,,:;;tLfi;,:. .,;!;;::,,;,,;;!;:;::,,:::,.,,;iitti!,iti;iifLffL@ +######8..!. ;:. :0!;f::!,!;.:, .!:,,:;;,..iCCtti!!ittffi!!!,;!i:.!C:.::,,,,,,. ,;!;;!!iti!:!,!f!;;,,!!:;it,,:::CttLfi,:i +#0CLC#!..;. .ii .:G:.:,.,,, .,, .;G8!::;;:,,,,:::,,,,:C!,.;G;;!;,. .iL!;:.. ...,,,,::::,,,:;;;..;: .;, ,,::;:;;,,,: +L!::;ff::, .i!. ... .., ,:!ff;,;LCLC8LiitiifitGififCf##tif#C##fftGitftti!!!!!;:,....,,... ,,, . . ,;,.,.:, .. +i:,,::;LG: .!i. ,....., !###@;:t@88@#@8888888@@@8@@@@###@#@####@#@@88888888G0Ci,:::;!!;,,. . .,,,.,. ,, +f;;;;:;L@! .!!. .:;,,, . ,Cfi!:,0@!;!;;;!!!!!!!!!!!!;;;!if!!!!i!!!!!!!!!i!!!!;;,.....,,.. ..,:,.. . ... . . +i;;tLt!L8; :, ,...., ., ,!tff!!;;;,, . ..::::;;::::;;;::::::,,,::::::;;;;,, .,:;;:::,,... ,::,,, ... ,, +t!:;!!;iL; ., , ,. .. ,####0:0GL8CLCGGiffGtCGCGLGGC0GLGGtCGf:GitCLf0G00L0i:;!ifCGCLfti!;:::,,,..,,,,,,,,::!!,  +i;:::::!f: :. ..,,,...,, ,G@@#i;fL8#######::::;tt!;;;;;;;;ii!;:,!Li!!!!iiitfftCf!!!iiiiitffLLfii!:,:,;;:::,,:::;,,,.: +t!!;:::;i; : .,,,. , .,,::,.,#####Cffi:. .LC, :f. ,i!:::,..,::;;!!!!!:!!i!:;;;;;::,.. ..,... .:!:;ttii! +t!!it!:;!: . . . ,:, .!iL#i. .;;. . . ... ,t!;;;:::!i;;:::::::::::,,,,,... ..,.,,:;!!itttt! +tfLLfttti; . . ;t, .!iiiiiittitttii!ii!!;!;!;::::,,,,,,:;!!!!;;;;;;;;;;;  ,;;!i:;::,,,,.::.,,, ,!!. !.tt !!ttti: ,,.,, ., .... .,,::::,:,....:!i:,,,::,,,,,. ..,:,, .  + ,;C0t:,,!fi, .,,.. .i!. ;,:8t!ii!,.... ..,. ...:!t: .... :!:. ..:;;:,.. . .,... ,,. ... ............ + , ,. .,:!;.:!t;, . ,t;::;;, .,,,;i;!C8f!,. ,;:.,:;;,..;,,,ti ... ......,;:,,.... .,,.,,... ...,,,,,.,,..,:;;;.:: +::;:,,:. ....,,,.. ,f#iLG! .. .ittLL8fii::. ....:,..:,.,::!;, ,;.., . .,,.. ...:,........,,,,..,;;;i!;;!;;,..,,,::;; +tGLt;... ,. .,,,:t;:;!!@#t;,,!;.:tif00L;,. . ,:, ,C0f, ,,. ... .,,....,,,,,,.. ..,!itt;:,,:,,,,::;;;;!;,,.;fLi +tGi:,,,:,.,;;,,C,:LGLG!;f;i8;:!!,:!iCGt;,..,..,. .... .;0, ,!!f!::,;!:,:;i:,.... .,:;:;;,:..,:,:;!!;:,,.....,!ffLCL!t;,;ti; +f:,::!tt;;i:i:i!!!!fttii!;;f@!;;!fGC!:, .,. ., ,,,,,. ,0t, . ,:CG!!f!!L;,LG:.,,..,:,.,,,,,:;;:::;;i!!!,,:::,::!iitGt!::;:;f; +i:::;Lt:;0!:;;;iG!:,,..:tGti00!fGt;:, . ... . :;,. ,,;CiCi;;!;:!;;G;.,::::,. .,:;;:Lf:;!;:;;;;:;Cfiiti!tiLCfi;;;!;;: +;;iLt;:.:0!:,;tGG#t: ,,:!tft0i::,.. .,,. .:!,..,,. .::;Gt,;fi;fLi,.:;if::!tt!!,.,!ft;;!;!tC!:fGGGLfGLLCii!!!itif::GLLi! +i:!!;;;:;t@LLG#####t::,:;fGf!,, .,..... .....,:,.,f8t,:!;..,tt;0;.,f;:;!;,.,:tG;::::;;,,;ii;:,::!0@!t0##0C0t!!!!!if:!Lf!;:ifttL +Gi,;titt!t#####@@G##t;:iCt;:. . ,,,,, .!::!i:,:!C;::::;;ii:,!..,!,.!:,::,;!;:,..,:::;;;;;i;:!LL;!iti!!!!!!tfii!!iGti:,:tGCG +:i,:t!!;;;t00CC0tLL##t!i;:,............. ..;Ci:,.,.,!8!!fi:,,!. ,,,.,..,,,.,,,,:;,.,:t!ii!tifGfi!i!;:;!!!!!tCCCfLLttCi!;:!;!tii +:,,.... .,:;::!0!GitCf:,,,::,:,:,:,:,::,,,,,:;Lt:. ,!@ti!:,..:, :C!:, ..,.,,,,:!,,!t!!!!;;;!!!!Cfi!ittLL0L!iti;!!;!fi!;;;;;i;f +;:,,.,,.:!GtL!ft!:;,,,. .....,,,,,.:LC,!i::i!;8f..!#G:,,,..,::..;GiG;...,,,,,,.:::;!ii;ti:,!it!tfi;::;;;!!!::,,,,::;iitttt!i;;t +fLt;;iffL00C#f0t:;,,,,,,,.,,,,,.,:,,;8i:,,:!L;;L!:i#G;:;:,:,,;:..,:G:::. ..;;,,,:tLtfLf!;i;!iLCtfi;::::::::;:,:::;;;!ti!!!;;;!!C +LG@GLG##0#8GG#8i:!!,:;;!;;;;;;;;:!:.:ii;::;0i,::!0#!:,,:,...,;,. ,;,... .,::::;t0fiiti!!;;!;;;:;t;:,:i;!!!!!!!!!it;tCit;!iiCLif +fG##GG0G@80#G08!,:,,,,:::,:,,,,,:;:,:t0fL@iGL:,!##;, ..,:..,.:,,.,..:::;!:i0f!:;ffiLf;:::;:!fi;;!;!;;!ttti!i!!!iii!iitttLiL +08#0#8G08G08GCfi;;!;,,,:,,.,.,. .,!G!;it8!;GG!L#@!,,:!!!!!!!;:,,..,!,;;:,,:::;!iti;;;!!;;!::;ti;fCfff!!ii;;;;:;fi!!tfLittGfii!ii +88G0##G###CfLGttffLt;:,......,. .!0!;i!::;CL0#t;:,;0#@8@@@@GfCf;::,,::,,,:,:ti!fiftiiiit;:;!!;!ii!;;!!!;::i::!ifii!t0t;ffiifGf0 +##C##8800GfffLfC!::;:,,,,,,.,,,,,.!!iiG:,.!@#8!::!!!G0LfLLC00GGGGGCi:,.,,;::!L!iGf!!;LffC;!ft;::i!;:,,:ii::;tif@88f;!ti!!;!fftG# +ffLLL0#fi@t!CiiG!..:;;;:;;:,:;:!;,;Gf!!!:;8#f!;:;:::iLiiii!iL0CfLC0#0i;:iti!ti!iLii!;itti!;f;:::!L!;:::;!;:!!ffftiifi!!;ttGii!!L +!:Lf!!!!!ff;!fi;G,,::;,,!,,:::;;!!!!;!8Ct##f!:!!;,.,;:::::,,:;;!;!ifG@0!i;:::::;!!i!:iCtf!;;;;;:iGttiiii!:;::;!!;:;ifLLiiftti!;! +,,,,... .,;:;:,::!,,,,,,,,,!!:ii;!t:!:t##iiL:,,,..,:!:..,...,,,,,;;!tfG0:i!;;::;tLGL;;!ttt!tt!i;ftt!ttt;:::;:;t!:;iC##GLCGGt0ifG + . ,t, :,,,:,..:,,,::,,,:;iCft;!:;:,,::!ii;,.....,:,..,fLfft:,;@@i::;LLGL::!tCt!L!;;!Lf;::;;;,,:f!;::,;8#fti!!!!iLi;t +i. .,. ;G; ....:..;.,;:i..:i80f!;tC8i;!tfi!i;,. ....... .,:;i:. .!Gt;;!ii!;!fi!i!!!i!i;ii:,.;i;:,;it!::,:!;:,,.,:.,,,:f +L!,. .,. :G; ;..;.,i::L;:,:G8!!0CiC#8!GG;::00, .,:,. ;f,..,:tfttft;:!t!;tt:tLLt;;!;::;ii!!!!ii!!::::;!;::,:::::! +itCf:. :ti!;!C!,,:!!:;;:tt;f;,;;i!,;G#G@L::::. .::. ,tGGt!!:,:i, .:f. .,:;!!ti;:,:!;i;;;;;::!tL;,iL0GLff;:;:!tf!!fi!!!;tCi!! +i!G8L: ,!itffGf!ttfLt:ti:!;:!,.!fi;t#0!::,,..,::.. .:!C@###8itt::ititf;,.,,,,:;;:,,;!!;;,;;!!;itf!:;fLfiii:;i:ifCitfit::t!tfCf +!::;;. .,...,,;fi,,;;;;:::,,;,;:,:!L0GLi;;!!;,.:tt;;...,:!tCCLi:,,#######t;!;,,::::,!ffif;;;L00i;iC:,ifGf!;f!;;!!!::iLi!!!tfffft +:!!!!;:!!;. .;:. .f:,L;:i,,;,t!,;CG!;:;!::,. .:::::,. ..,:;;;,.,!fG####@:;;:,::::;tt!;::.;00f:;!;:,,:;;;:!;;:::,,.!Gi!;L@##### +######i,::. :i .;L;;C!:!,:::i:,:i;::,,,.. .:!!;if;:;;!tffftf:..,,;fLf!,...,::,,:;:,,:,.:;!;::::,,:::,.,,;iitti!,iti;iifLffL@ +######8..!, ;:. :0!;f::!,i;.,..,,,:.,ii:.,tLCttti!itffLf!!!!,:;i,,iGf::::,,. ..,,,:!!iii!:!,!f!;;,,!!:;tt,,:::CttLft,:t +#0CLC#!..;. .ii. .:G:.;,.,,, .:.,,,,.:L8!;;;;;:,,,::;::::,:f;.,;t:,::;fLtf!:, .:,..,,,,::::,.,:;;;.,;: .!, .,,::;:;;,,,: +L!::;ff::, .i!. .,. .., ;!tLL;:;tLLC8Gtii!ititGittfCif#Lti0#C#fitCfLfti!!!!!!;:. ,..,,... ,,, . . .;,.,.:, .. +i:,,::;LG: .!i. ,....,, .i###@;:C#88@##8888888@@@8@@@8@#@@######8@8088888888G0C: .:;!!;,,. .. . .,,,.,. ,, +f;;;;;;L@! .!!. ..:;,,, . ,iGLt!;;@#i!!!;!!!!!!!!!!!!!!!!;!fCi!!!i!!!!!!!!i!!!!;:, ....,,.. ..,:,.. . .... . . +i;;fLt!L8; :, ,,..., ., ;;::.,!t;:,,:,. .::, ... .. .,::;:::,,... ,:::,, .... ,, +t!:!!;;iL; ., ,. ,. .. .,... ,, t0fitffffi,,., .CC. ... ,i;,,,.,::;::;;!itCCCLfti!;:::,,,..,,:::,,,:;!!,  +i;:::::!f: :. ...,,.,.,, .,.,,.. ,!LtG######@. .::, .;:. ,t!. .ff!!!::!!ifffCL!!!iiiiitffLLfii!:,:,;;:;:.,:::;,,,,: +t!!;:::;i; : .,,,. , .;!:,!i.,.G########8!. ,GG, ,Lt. .;Li;!;,,:;;;!!!!!!:!ii!:;;;;;::,.. ..,... .:;:;ttti! +t!!iti:;!: , . . .,!. .:. .;0L##i:::. ,fi, . .,, ;t;;;:::!!;::::::;:::::,,,,,... .,,,,,:;!!iittti +tfLLfttti; .. .. !i ;iiiiitttitttii!ii!!;!!!;;:::,,:,,,:;!!!!;;;;;;;;;;:  ,;;!i:;::,,,,.::.,,, ,!!. !.tt !!tttt: ,,.,, ,. .... .,:::;:,:,...,:!i:,,,::,:,,,. ..,:,, .  + ,;C0t:,,!fi, .:,.. .i!. ;,:8t!ti!,.... .,,. ....,!!, .... :!;. . .:;;:,...... .,... .,.. ... ............ + . .,. .,:!;.:!t;, . ,t;::;;, .,,,;i;!L8f!,. ,;,.,:;;, ,i. .,t, ... ....,.,;:,,,... .,,.,,... ...,,,,,.,,..,:;;;,,: +::;:,::. ....,,,.. ,L#iLG!... .ittLL8fii::. ....:,...:,.::!;,. ,;.., .. .::... ....,,.......,,:,,..,;!!i!;;;;:,,,,,:::;; +tCLt;....,. .,,,:f;:;;!@#t;,,!!.:tif00L;,. . . .,!..C0C, ,,. ... .,,....,,,,,,.. ..,!ttt!:,,:,:,,:;;;;;!;,,.;fLi +tGi:,,,;,.:!;,,C,:CGCG!;f;i8;:!!::!iCGt;,.,,..,. .... .;8f..;!;;,::;!:,:;i:,.... .,:!;;;,:..,:,:;!!;:,,.....,!ffLLL!t:,;ti; +f;,::!tt;;i:i:t!;;!Lttii;;;f@!;;!fGC!:, .,. ., ,,,:,. .,08;. .,.!Ci!f!!L;,LG:.,,..,,,,,,,,,:;;:::;!i!!!,,:;:,::!iitCt!::;:;f; +i:::;Lt:;0!:;:!!C!::,.,:tGti00!LGt;:, . ... . ;i:,.,,;C!Ci;!!;:!;;G;.,::::,. .,;;;:Lf:;!;:;;!;:;Cfiiti!tiLCft!!;!;;: +!:iLt;:,:0!::;tGG#f;. ,,:!tft0i::,.. ..,. .;i, .,,..,:!;f8;;Lt!fLi,.:;if::!tt!!,.,!ft;;!;;tC!:tGGGLfGLLC!i!!!ittf::GLLi! +!!!!;;;:;t#CC0#####t;:,:;fGL!,, .,..... .....,:, :f0i,,;;...;C!CC:,f;:;!!,.,:tG;::::;!,,;ii;:,::!G@!t0##0CGt!!!!!it:!Lf!;:ifttL +C!,;titt!t#####8@G##t::iCt;:. . ,,,,, .!:,!!,,:;f;:,,,,,,!;:!,.,!,.!:,::,;!;:,..,:::;;;;;i;:!fL;!iti!!!!!!tfii!;iGti:,;tGCG +,!,:i!!;;!f@CLC0tLL##t!i;:,.. ....,..... ..;f;,,.. .!C::!:,.... ,,,.,..,,,.,,,,:;,.,:t!ii!tifGfi!i!;:;!!!!!fCCCfLLtiCi!;:!;!tii +:,,......,:;::!0!GitCf:,,:::,:,:,:,:,::,...,,:i!:,..,!:!;:. ... ;C!:, ...,.,:,,;!,,!fi!!!;;;!!!!Cfi!ittLL0f!iti;!i;;ti!;;;;;i;f +;:,,.,,,!iGtL!ft!:;,,,. ....,,,,,,.:LG,:;;::;!fft;::;:,. ...,:;CiC: .,:,,,:,,,:,:;!i;tt::iif!tfi!::;;;!!!::,,,,::;iitttt!i;;t +LCL!!tffL00C#f0t:!,,,,,,,,,,,,,,,:,:;0!:,:f:,,:;;!!!!;ii. ,;;!;::,t::, ...::,..:!t;!it;;!;!iLCtfi!;:::;:::;:,:::;;:;ti!!!;;;!!C +C@#8L8#80#0GG#8i:!!,;;;!;;;;;;!!:!:.:!!,:;i:...,.:Gf,,::. .:,:!:,...,:..,.,,:,,:!Ct!!i!;;;:;:;;;!t;::;i;i!!!!!!!!if;iCit;!i!LLif +f0##GGGG@80#G08!,:,,,,:::,:,,,,,:;:,:i0it8;::,.,,:;;,....,....,,. .,;:;;:!i;t0f!:iLt!LL;:::;:!f!;!!;;;;!ttti!i!!!iiiiitfttCiL +G0#0#@G08008GCLi;;!;:,,:,,.,.,. ..!G;;tt8!:Ci::,,,..,:::::!!ttift!!!!;;:,:;;!i!iLt!;;!;:;!:,:t!;tLtft;;!!:;;;:;fi!!ttfitt0fii!ii +80G0##G###CfLGftffLt;:,......,. .;G;;i!:,;LCC;::,,,.,:!;fL80CCLLC08888Li!:,,::;;;!;;!i!t;:;;;;;!i!;::;;;::i::!ifti!i0t;ffiifGf0 +##C##8000GLffCfC!::;:,,,,,,,,,,...;!!!C:,.!##0,.:,,. ,t;;iCCt!iLfffLLG8@@Gi!!;:,:;;;ftfL;;ti;::i;;:.,:i!::;i!t@8@f;!ti!!;!LftG# +ttLLL8#ti@t!CtiG!..:!;;:;;:,:;:;:,:Ci;!;,:8#f!;.,,. .,;fL;;::;!;!tfLftfG##0!,,:tt!;!ii!!;f;:;:!f!::,:;;::!!fLLfiit!!t!tfGii!!L +!:Lf!!i!!tf!!fi;G,,::;,:!,,::::;;;;;:;8Li#8t!:L!,,. ,t!,,!:,,,::;;!tiiL##t,:fii!:tLtt;::;;;:iGii!iii!:;::;!!;:;;ifCtiLfti!;! +,,,,.....,;:;:,::!,,,:,,,,,!!;!i;!i,::i##iiL:,:L,.,,,. ,,,,;:,,:,.,...,,.:!!!ittfCf;;!iti!i!!i;ftt!tii;:,:::;t;:::!t88LCGGt0ifG + . . ,i, :,,::,..:,,,::,,,:;ifffi;,:;;;!:ffi;..;:,:,,;:. . .:tL;;ftGL:,!tGt!f;;;!LL;::;;:,,:f!::::;!:;Lt!;!!iLi;t +i. .,. ;G; ....:..;.,;:i..:i0Ct!;;;;:,fGG!tG!:,,:,;ft;,. .: ,tL!!ii!;;ti!i!;!i!i;ii::.;t:,,;!t;::,:,,,::.,:.,,,:L +L!,. .,. :G; ;..;.,i::L;:,,G8!;0G;,t!,:;i;::tL;,:.,,;G0i;,. .,,,.. .:Ctff;:!i;;ii:tCLt:;!;::;!i!!;!ii!!::::;!;::,:::::! +itCf:. :ti!;!C!,,:!!:;;:tt;t;,;;i!,;0#!;L;. . .,:ti,.:.,!f0@Gi!;:,,i. ,tfi!!:,,!;i;::;;::itL;,iLGCfft::;:!iLi!fi!i!;fLi!! +i!G8L: ,!ttffGf!tffLt:ti:!::;,.;f!;i##i!Ci:.,:,:,,,:;:.,;..;!C@###8ftt: ,LLC##@Li;;;!!;;,:;!;;itt!:;tft!ii:;t:!tLiffii::t!tfCf +!::;;. ....,,,;ft,,;;;;;::,,!,;:,:!L8CffCCtC!,;!iit;:..::... .:iC@###8f!.:#########!ftif;;:iGC;;!C:,!tCt!;f!;!!!!::tLi!!!tfffft +:!!!!;:!!;. .;:. .f::L;:i:,:,f!,!CC;:!i;tf!,.,:::::,::!!;:.. .,;!!!!;:.,;iitG####i!;:,,..iL!,;!;:,,::;;:;;;::::,.!Gi!;L@##### +######i,::,. :i .;L;!C;:!,:::i;,:i!it;,::,..:!;:!iitCC88i;, .....,;:... ,;!!;:,,,;,,,:;::;;:,,:::,.,,;iitti!:ifi;iifLffL# +######8..!, .;:. :0!;f::!,i;.:. ,L00tt!;,.,fCf;:;!iitGti:. .,:::::;!,.,,,,.. ,;!::;;iii!:!,!f!;;,,!!:;it,,:::CttLft,:t +#0CLC#!..;. .ii .:G:.;,.,,, ,;::;f0!:;ii!!!!!;::,,,,.....,,:::;::,.!L!;, .....,,:::,,.,:;;:.,!: .;, .,,::;:;;,,,: +L!::;ff::, .i!. ,,. ..., :;!t!,.:iLLLGCLLGL0@0fCiiitfiit!iiLttCfLGf!iftii!!!!!;:,....,,... ,,, . . ,;,.,.:, .. +i:,,::;CG: .!i. ,....., !###@i;L####8CCCG00#@8888888888888@8@@@80#@@8888888G0Ci::::;!!;:,. .. . ,,,,.,. ,, +f;;;;;!L@! .!!. ..:;,,, ,Cfi!!!80titfttti!;;;!!!!!!!!!!!!!!!!!!iCC#Li!!ii!!!!;:.....,,.. ..,:,... . . . +i;!LLfiL8; ;, ,,...,. , :!i!;,.:08fG! .!;tL: .... .,::::::,,... ,:,,,,,,.... ,, +t;:!!!;iL; ., ,. ,. .. .,:,,,.,!!;;, .,,.::: .::;;;!;;;iiiLCLLfti!;:::,,,..,,;!ii!i;:!!,  +i;:::::;f: :. ..,,,.,.,, ,.,,,, .!;;.,:;,. ;C, ;C! :tiiifffCL!!!iiiiitffLLfii!:,:,!!::,,,:::;,,,,: +t!!;:::;i; : .,,,. , ,,.. ;!. ,:;;,0@C!ii!iit!,. ,,. :t: ,!;:;;;!!!!!!:!ii!;;;;;;::,.. ... .;!:;ttti! +t!!iti:;!: . . . .,, .:,, . :ifiL0#######: :; , :!!!;:::::;;:::::,,,,,... .,,,,,:;!!!tttti +tfLLfttti; ,. .. ... ... !##G#########,.!; :!. :tiitttii!iii!;!!!;;:::,,:,,,:;i!!!!;;;;;;;;;;  ,;;!i:;:,:,,,.::.,., ,!!. !.tt !!ttti: ,,.,, ,. .... .,,::::,:,....:!i:,,,::,,,,,. ..,:,, .  + .;C0t:,.;fi, .,... .i!. ;,:8t!ti!,.... .,,. ... ,;i, .... :!;. .:;;:,.. ... ,,... .,. ... . ......... + . .,. .,:!;.:!t;. . ,t;::;;, .,,,;i;;L8f!,. ,;,.,:;;, ,t, ,t, ... ....,.,;:,,,... .,,.,,... ...,,,,,.,,..,::;;.,: +,:::,;;. ....,,,.. ,f#iLG!... .ittCL8fii::. ....:,...:,,::;;,. ,;. , . .,,.. ....,,..... .,,:,,.,,;!;i!;;;::,,.,,,:::; +tCLt;... ,. .,,,:t;:;;!@#t;,,!;.:tif00L;,. . .:i,.f0G; .,,. ... .,.....,,,,,,.. ..,!itt;:,,:,:,,::;;;;!;,,.;fLi +tGi:,,,:,.:!:,,C,:LGLG!:f;i8;:!!,:!iCGt;,.,,..,. .... .;8L..:!;!:::;!:,,;i:,.... .,:;:!;,:..,:,:;!!;:,,.....,!ffLLL!t:,;ti; +t;,::!tt;;i:!,t!;;!ftiii;;;f@!;;!fGC!:, .,. ., ,,,,,. .,G8;,..,.!Ci!f!!f;,fC:.,,.,,,,.,,,,,:;;::,;!i!!!,,:::,::!iitCt!::;:;f; +!:::;Lt:;0!:::;iC!;:,..:tGti00!LGt;:, . ... . ;t:, ,,:C!Ci;;!;:!;;G;.,,:::,. .,:;;;Lf;;!;:;;!;:;Cfiiti!tiLCfi;!;!;;: +;;tLt;:,:0!::!f00#f!,.,,:!tLtGi::,.. ..,. . .:!,..,,,.::;:;0;;Li;ffi,.;;if:,!tt!!,.,!ft;;!;!tC!:fGGGLfGLLCii!!!itif::GLLi! +!!!!;;;:;i#CG@#####t;:,:;fGf!,, .,..... .....,:, ,f0t,:!;.,,;C;!L:,f;:;!;,.,:tG;::::;;,,;ii;::::!G@!t0##0C0t!!!!!it:!Lf!;:ifttL +L!,;iitt!t#####88C##t;:!Ct;:. . ,,,,,. .!:,!!,,:!L;:::::;:i;:!,.,!,.!;,:,,;!;:,..,:::;;;;!i;:!fC!!ifi!!!!!!tfii!;iGti:,;tGCG +,!,:!!;;;tC8CLLGtLL##tii;:,............. ..!Ci:,,,,:!0;;t!,..,,.,,,.,..,,,.,:,,:;,.,:t!ii!tifGfi!i!;:;!!!!!fCCCfLLtiCi!;:!;!tii +:,,. ...,::;::!0!GitCf:,,:::.:,:,:,,,::,...,::ft::,:f@!!;:,..,:,.;C;;, ..,..:,,:!,,!t!!!!;;;!!!!CLi!ittLL0f!iti;!i;;ti!;;;;;!;f +;:,,.,,:tiCtL!ft!:;,,,. ....,,,,,,.:LC,;;:;i:;fitf;8C: .,, ,::;;!LiC: .,:,.,,,.:::;;!i;ti::!it!tfi;;:;;;!!;:::,,,;,:iittit!i;:t +CGCiitffL@0C#f0t;!:,:,,,,,,,,,,.,:,:;0i:,,;C!:::;;;;;:, .,:;,:i,,:....::,..:iLitff;;!;!iLCtfi;::::;:::;:,:::;;;;ti!!!;;!!!C +G###C##G8#0GG#8i:!!::;;!;;;;;;!;:!:.:ii:::!0i,,,,,,;,.....,,. ,,. ...,....,,,,,:iGf!!ii!!;;;;;;:!t;:,:i;!!!!!!!i!if;iCit;!tiLCif +f0##80GG#80#G00!,,,,,,:::,:,,,,,:;:,:t0tf8i0C:,,,,::!;::;;!!: . ..,.. .,:,;!:i0f;:!ftiLf;:::;:!fi;;!;!;;!ttti!i!!!iii!itfftLiL +G0#0@@G08008GLfi;;!;:,,,,:.,.,. .,!G!;tt8!;GG!i;,::::::,..,:;;;;!:it!;!!;;:::!ttfi;;;!;;;!::;ti!fCfff!;ii;;;;:;fi!!ttfittGfii!ii +80G0##G###CtLGttffLt;,.......,. .!0;;i!:,;CL8@:,;:::,,:, .tCfG0ftfttfCGCLfi!;;;iifi!iiit;:;!;;!ii!;;;;!;::i::!ifti!i0t;ffiifGf0 +@#C@#00G0GfftLfC!::;:,,,,,,.,,,,,.!!iiC:,.!##0;;.,,,,...;,;!;!f8tiiffttffLG@8f!;ii!;;LffL;!fi;::i!;:.,:ii::;iif@8@f;!ti!!;!fftG# +itLLL0#ti@t;CtiG!..:;;;:;;:,:;:!;,:Gf!!!,;8#f;:;L;,::,. .:!:;Gt;!;iti!iffftfC##CL!!!;iii!;;f;:::!L!::,:;;;:i!fLLfiii!!t!ttGii!!L +;:Lf!!i!;tt;!fi;G,,::;,:!,,:::;;;!!!;;8Ct##t!,;!G0;,.. .:Gi;;i;:::::;;!!itL##f!i!:iCtt;:;;;;:iGiiiiii!:;::!!!;:;;ifCtiftti!;! +.,,,.....,!:;:,::!,,,:,,,,,!i:!i;!t:;:t##iif:,,::!:,;:;:. .:,:;i:,,,..,..,;:,i!!!LGL;;!iii!ti!i;ftt!ttt;:::::;t!:::!i88LCGGt0ifG + .. . ,t, :,,::,..,,,,::,,,:;iLff!:,:;:::!L!Lf!;..i:.,:,,::,.. ...,:!LfGL:,!tGf!f;;;!fL;::;;;,,:f!:::::!:;ft!!!!iLi;t +i. ... :G; ....:..;.,;:t..:i8Gfi;;;;:,fGCfC!LG!,,,,,,tf;,.. .;:,!tft!;!fi!i!;!i!i;ii:,.;i;:,;it;::,,,,,::,,:.,,,:L +L!,. .,. :G; ;..;.,t::L;:,:G8!!80;,t!,:!t;;:::LL:::.,,;f0t;,. .,,, . ...:Lt!;!i!;ii:tCLt;;!;::;!i!!;!ii!!:::::!;::,:::::! +itCf:. :ti!;!C!,,:!!:;;:tt;f;,;;i!,;0#!;L!. . ,:!f!..::,!f08Gi!;:,,i. ,tt!:,:!;i;:;;;::itL;,iL0Cfft::;:!tL!!fi!!!;fCi!! +i!G8L: ,!itffGf!ttfLt:ti:!;:!,.;fi;t#@i!Ci,.,:,,,,;;,:!, ,!,,;iL@###0ftt;.,ffL##8f!;!!;;,:;!;;itf!:;tft!ii:;t:ifCiffit::t!tfCf +!::;:. ....,,,;ft,,;;;;:::,,;,;:,:!L8GfLCCtC!,;!!it!:,..,:..,, .,:iL8###@Gf,:#########!!f;;;i00!;iC:,!tGt;;f!;;!!!::iLi!!!tfffft +:!!!!;:!!: .;:. .f::L;:i,,;,f!,!GC;:ii;tL!,.,:::::::;!i!!;,.. .,:!!!!!;,:;iit0####;::,.,LGt:;!;:,,::;::;:::::,,.!Gi!;L@##### +######i,::. :i .;L;;C!:!,:::i;,:i!it;,:;,.,:!!:!iitGG88@C:;,. ....,,::.,. .,;!!::,;,,:;!;::::,,:::,.,,;iitti!,ifi;iifLffL# +######8..!, ;:. :G!;f::!,i;.:, ,L00tt!;,.:LCf;;;;!tif8L!!,. .,::::;!i:::,.. ,;!::!!iii!:!:!f!;;,,!!:;it,,,::CttLft,:i +#0CLC@!..;. .ii .:G:.:,.,:, . ,;;:;f0;::;!!!!!!!:,:::,,....,,,::::;:;tC!;: ...,,,,:::,,,,:;;:.,;: .;, ,,::;:;;:,,: +L!::;tf;:, .i!. ,,. .., :;!t!,.:tLCLLfttCL088GLiiifLiiiifiLttCfLf0!iffii!!!!!;:,....,,... ,,, . . ,;,.,.:, .. +i:,,,:;C0: .!i. ,....., !###@i;C########GGG8@88888@@88888@@@8@#@#888@888888G0Gi,:::;!!;,,. .. . .,,,.,. ,, +f;;;;;!L#! .!!. ..;;,,, :Cfi!!!80tiiffffti!;;;;!!!!!!!!!!!!!!!!!iC@8tiiii!!!!;:....,,,.. ..,:,.. . ... .. . +i;!LLfiC8; ;, ,....,. ., :!i!;,,:;CLLGt. .iiCt. .... .,:::::,,,... ,:::,,. .... ,, +t;:!!!;if: ., ,. ,. .. .::,,,..:L!:;, .,:,,,, .:,:;!!i!;;i!ifLLLfti!;:::,,,..,,,:,,,,:;!!,  +i;::,::;f: :. ...,,.,.,, ,,..,.:,,,,,.,:;:,. .LC,;;. ,tiiiifffCLi!!!iiiitfLLLfii!:,:,;;:;:.,:::;,,,.: +ti!::::;i; : .,,,. , .,,.. !;. ,!ii!;08Cii!,:!!:. .:,,fC, ,i;::;;;!!!!!!:;!i!;!;;;;::,.. ..,... .:!:;ttii! +t!!iti;;!: , . . ,:, .::. .,,,,:ififLLC####f, .,,. .!;:!!;:::,::;:::::,,,,,... .,,,,,:;!!!ittti +tfLLfttti; . ... .,...... ;0fL#########,.ti !; :!itiittiii!iii!;!!!;::::,,,,,,:;!!!!;;;;;;;;;;:  ,;;!i:;:,::,,.::.,,, ,!!. !.tt !!ttti: ,..,, ., .... .,,::::,:,....:!i:,,,::,,,,,. ..,:,, .  + .;C0i:,.;ti, .:,.. .i!. ;,:8t!ii!,.... ..,. ..,;!t:. .... ;!;. ..:;;:,...... .,... .,. ... .. ......... + . .,. .,:;;.:!t;. . ,f;::;;, .,,,;!;;L8f!,. ,;:.,:;;, .;:,,!t. ... ...,,.,;:,:,... .,,.,,... ...,,,,,.,,..,:;;;.:: +,:;:,;;. ....,,,.. ,L#iLG!. . .ittCL8fii::. ....:,..,,..;:;;,. ,;.., . .,,... . ..,,.......,,:,,..,;!!i!;;;::,,.,,,::;; +iCLt;... ,. .,,,:t;:;;!@#t;,,;;.:tif00L;,. . .:: !GC: ,,. ... .,.....,,,,,,.. ..,!itt!:,,;,:,,::;;;;!;,,.;fLi +tGi:,,,:,.;!,,,C,:LCLG!:f;i8;:!!,:;iCGt;,.,,.... ..... :8i ,;!!::,;!:,:;i:,.... .,:;:;;,:..,:,:;!!;::,.....,!ffLLL!t:,;ti; +t;,::!tt;;i:;,i!;:!fiiii;;;f@!;;!fGC!:, .,. ., ,,,,,. .,CG;....,CG!!f!!f;,LC:.,,.,,,,,,,,,,:;;::,;!i!!!,,:;:,::!iitCt!::;:;f; +!:::;Lt:;0!:::;iC!!!,.,:tGti00!fCt;:, . ... . ;i:,.:,;GiC!;!!;:!;;G;.,,:::,. .,:;!;Lf;;!;:;;!;:;Cfiiti!tiLCfi;;;!;;: +;;tCt;:,:Gi;;tL80#Ci:.,,;!tLtGi::,.. ..,. .:!,..,,,.::i;fC:;fi!fLi,.:;if:,!tt!!,.,!ft;;;;!tC!:tGGGLfGLLCii!!!itif::GLLi; +i;!!;;;;;t#G0######t;:,:;fGL!,, .,..... .,...,:,.,f0t,:!;..,!C!fi,,f;:;!;,.,:tG;::::;!,,;ii;::::!G@!t0##0C0t!!!!!if:!Lf!;:ifttL +f!:;iittiL#####88C##t;:iCt;:. .. ,,,,,. .!::!!:,:!C;::::;:;t;,!..,!,.!:,;:,;!;:,..,:::;;;;;i;:!LC!!ift!!!!!!tfii!;iGti:,;tGCG +,i,:i!;;;L08CLLGtLL##t!i;:,............. ..;Ci:,,:,:!0!;fi,.,;, ,:,.,..,,,.,:,,:;,.,:t!ii!tifGfi!i!;:;!!!!!tCCCffLtiCi!;:!!!tii +:,,. ...,:;;::!0!GitCf:,,,::,:,:,:,,,::,.,.,,:ft:,,:f@i!!:,,.,:. ;C;;, ..,..,,,:!,,!t!!!!;;;!!!!CLi!ittLL0L!iti;!i;;fi!;;;;;i;f +;::,,,,:iiCiL!ft!:;,,,. ....,,,,,,.:LC,;!:;;,;Lii!;8C:..,,.,::,.iLiC: .,:,,,,,.:::;!i!;ti::!it!tfi;::;;;!!!::,,,,:,:iittit!i;:t +C0CttfLfC#0L#f0t;!:,:,,,,,,,,,,.,:,,;0i:,,;C!,:;!!;;;;, . ,;,.,ii,,:....:;,.,:tLifLf!;i;!iLCtfi;::::::::;:,:::;;:;ti!!!;;;!!C +G###G##G##0GC#8i:!!,:;;!;;;;;;;;:!:.:ii:::!0i,,::,,;:,.....,..:. ., ...,..,,,,:t0f!!ii!!;;;;;;:!t;:,:i;!!!!!!!i!if;iCit;!tiLLif +LG##80GG#8G#G00!,,,,,,:,:,:,,,,,,;:,:t0fL8i0C;;!:::;!;!:::;!;,,:,,:::,,,,...:;,!0f;:;ffiLf;:::;:!fi;;!;!;;!ttti!i!!!!ii!iifttLiL +GG#088GG80G8CLf!;;!;:,,,,:.,.,. .,!G!;tt8!;0Gi00:,:::::;,,,,:!fLLtttfttt!;;;;;;!ii;;;!;;;!::;ti!fCfff!;ii;;;;:;fi!!ttLittGfii!ii +80GG@#G###CtLGttffLt;,......... .!0;;i!::;CL0#i:,::::,,:;..iCi!GGttttffLLLCLft!!!ft!ii!t;:;!;;!ii!;;;!!;::i::!ifti;i0t;tfiifCf0 +##C@#00G0CfttLfC!::;:,,,,,:.,,,,,.!!iiC:,.!@#8;:,;..,,...,i::;;!fGt!;iftitffLLfLLfi;;LffL;!fi:::i!;:.,:ii::;tif@8@f;!ti!!;!fttG# +itLLL0#ti8t;LtiG!. :;;;:;;:,:;:!:,:Gf!!!,;8#f;;:;;!;::::..,;!;f0!;!;!!;;;itffiitL@L;;itt!;;f;:::!L!;:::;;;:i!ffLfiii!!t!ttGii!!L +;:Lt!!i!;tt;!ti;G,,:::,,!,,:::;;;!!!;!8Ct##t!:!!;:t8G:,.... ,:it:,!i::::::;;:!t;Li!;;iGtt;:;;;;:i0tiiiii!:;::!!!;;;;!fGtiftti!;! +.,,,.....,!:;:,::!,,,:,,,,,!!:ii;!t:;:t##iif:,,,.,:i0:,;!!, .,,..:;:,:!;;::..,,,:!if;;!iii!ti!i;ftt!ttt;:::::;t!:;;!i0@LCGGt0ifG + . . ,t, :,,::,..:,,,::,,,:;iCLf!:,:;:::!Cti;;Ci!, :t,.,,..;,,,. ,,:C@0;:!tCt!L;;;!ff;::;;;,,:f!;:::;!:;ft!;!!iLi;t +i. ... :G; ....:..;.,;:t..:i80fi;;;;::LGCfCLf!;Ci,,,,:,,tf;,... .. .,:;!GLi!i!!!i!i;ii::,;t;::;it;::,,,,,,:,,:.,,,:L +L!,. .,, :G; ;..;.,i::L;:,:G8!!80;,t!,:!t!;:;:,:!C;,:,.:,:t0L;,. .:::. .tL!;tt:tCLt;;!;::;ii!!!!ii!!:::::!;::,:::,:! +itCf:. :ti!;!C!,,:!!:;;:tt;f;,;;i!,;0#!;L!. .. .,,,!L!,..;,,;tG8Ci;;:,,;..,!,.:;;:;i;:;;;::itL;,iC0GLLf;:;:!tL!!fi!!!;fCi!! +i!G8L: ,;itffGf!tffLt:ti:!;:;,.;fi;t#@i!Ci,.,:,,,,;!:,,:!; :i,.;if0##8Gtii;.:CC0##Ct!;:,:;!;;itt!:!fLfiii:;i:ifCitfit::f!tfGf +!::;;. .....,,;fi,,;;;;:::,,;,;:,:!L@GfLGCtC!,;!!it;:,,,,,,,. ,;, .,:iL0###80f,:########!:;;tG0!;iC:,ifGf!;f!;;!i!::iLi!!!tfffft +:!!!!;:!!: .;:. .f:,L;:i,,;,f!,!GC;:ii;tL!,.,:::::::;ii;;!i:.,. .,:!!ii!!,,;if@####:..:CGf:;!;:,,:;;::!;;:::,,.!Gi!:L@##### +######i,::. :i .;L;;C!:!,:::i;,:i!it;,:;,.,:i!:!tttG08GC0G!,::. ....,,:... .:;!i;;,,:;!;::;:,,:::,.,,;iitti;,ifi;iifLffL# +######8..!, ;:. :0!;t::!,i;.,, ,L00ft!;,,;LCt;;!;!iiiC@C!;!,. .,:,,:!i::,. :;!::!!iii!:!:!f!;;.,!!:;it,,:::Cttfft,:t +#0CLC@!..;. .ii .:G:.:,.,:, .. ,;;:;f0;::;!;::;!!;;,:;;,,,,.,,,,,:,::::ii!; ....,,,,:::,,,,:;;;..;: .!, .,,::;:;;:,,: +L!::;tf;:, .i!. ,,. .., :;!t!:,;tLCLLfttftfG008ttitCtii!ttGLtCfGfC!;itti!!!!!;:,....,,.. ,,, . . ,;:.,.:, .. +i:,,,:;CG: .!i. ,....., !###@i!C##@#########G8@888@888888@@@@@@@#@008888888G0Gi,:::;!!;,,. .. . .,,,.,. ,, +f!;;;;iL#! .!!. ..;;,,. :Cfi!!!GGittttittti!;;;!!!!!!!!!!!!!!!!!!i8#fiiii!!!;;:....,,,.. ..,:,,. . ... .. . +i;iLCfiC8; ;, ,,...,. ., :!i!;,,::;iitt. ,ttL, .,,.. .,,::::,,,... ,:::,, .... ., +i;:!!!;if: ., ,. ,. .. .::,.,.,,iGiL: ..,.,:;:,,:!iiii!!i!ifLLLfti!;:::,,,..,,,,,,,,:;!!,  +i:::,::;t: :. ...,,.,.,, :,..,!8!,:::.. .Li,.,tii!!iiitfLLLi!!!itiitffLLfii!:,:,;;:;:.,:::;,,,,: +t!!::::;i; : .,,,. , ,,.,. :80: ,ii!;,,;;:... .,:L;,!!;::::::;;!!!i!:;!i!;;;;!;::,.. ...... .:!:;ttti! +t!!it!;;!: . . . ,:, ,::, .,,,,:,08f;ititfff!,. .,,.;;::::;!:::,,::;:::::,,,,,... .,,,,,:;!!iittt! +tfLLfttti; . .. .... :; #########8,t ;! !!!!ittittiii!ii!!;!!!;;:::,,,,,,:;!!!!;;;;;;;;;;;  ,;;!i:;:,:;:,.::.,,, ,!!. !.tt !!ttti: ,,.,, .,. .... .,,::::,:,....:!i:,,,::,,,,,. ..,:,, .  + . ,:CGi:,.;ti, .:,.. .i!. ;,:8t!ti!,.... ..,. ...:!f;. .... .;!;. . .:;;:,...... ,.... ... ... ......... + . .,. .,:;;.,!t;. . ,t;::;;, .,:,;i;!C8f!,. ,;,..:;;, .!:,,!f. ... ....,.,;:,,.... .,,.,.... ...,,,,,.,,..,:;;;,,: +::;,:!;. ....,,,.. ,L#iLG!... .ittCL8fii::. ....:,..,:..;:;;,. ,;. . . .,,.. . .,,........,,,,..,;!;i!;;;::,,,,,,::;; +tCLt;... ,, .,,,:t;:;;!@#t;,,;;.:tif00L;,. . .:: !GL: .,,. .., .,,.....,,,,,,.. ..,!itt!:,,:,,,,:;;;;;!;,,.;fLi +tGi:,,,:,.;;,.,C,:CCLG!:f;i8;:!!::!iCGt;,.,,.... ..... .;8i :;!i:::;!:,,;i:,..... .,:!:;;,:..::,:;!!;:,,.....,!ffLLL!t:,;ti; +t;,::!tt;;i::,i!;:ifiiii;;;f@!:;!fGC!:, .,. ., ,,,:,. .,GG;..,.,LG!!f!!f;,fC:.,,.,,,,,,,,,,:;;:::;;i!!!,,:::,::!iitCt!::;:;f; +!::;;Lt:;0!:::;iC!ii:.,:tGti80!fGt;:, . ... . ;i:,.::;GiCi;;!;:!;;G;.,,:::,. .,;;;:Lf;;!;:;;;;:;Cfiiti!tiLCfi;!;!;;, +!;tCt;:,;0tiiLC@0#Gt;,,:;!tftGi::,.....,. .:!,..,,,.,:!;LG:;fi!ffi,.:;if:,!tt!;,.,!ft:;!;;tC!:fGGGLfGLLC!i!!!ittf::GLLi! +i;i!;!!;!f#8####@@#f;:,:!fGL!,,. ,,..... .,,..,:,.,f8t,:!;..,!C!fi,:f;:;!!,.,:tG;::::;!,,;ii;:,::!G@!t0##0CGt!!!!!if:!Lf!;:ifttL +fi:;titttC#####88C##t;:iCt;:. ... ,,,,,. . .!::!i:,:!C;::::;;;t;,!..,!,.!;,;,,;!;,,..,:::;;;;;i;:!LL!!ifi!!!!!!tfii!;iGti:,;tGCG +.i::i;;;!CGGCLC0fLL##f!i;:,.......,..... ..;Ci:,,:,:i0;!fi:.,;,.,:,.:..,,,.,,,,:;,.,:t!ii!tifGfi!i!;:;!!!!!tCCCfLLtiCi!;:!;!tii +:,......,::;::i0!CitCf:,,,::.:,:,:,:,::,.,,,::ff:,,:f@!!!:,,.,:..!L;;, .....,,,:!,,!f!!!!;;;!!!!Cfi!ittLL0f!iti;!i;;fi!;;;;;!;f +;::,.,,,iiLiL!ft!:;,,,. ....,,,,,,.:LC,;!!i;,!fft;;8L:..,,.,::,.ffiC, ..:,,,,,,:::;!i!;ti::!if!tfi;::;;;!!!::,,,,;,:iittit!i;:t +C0CitfLfC#GL#f0t:!,,:,,,,,,,,,,.,:,,;0i:,:ft;:;;!!::;:, ,;..,t!,,:....:;,,,:tLifLf!;i;!iLCtfi;::::::::;:,:::;;:;ti!!!;;;!!C +L@##@##@##0CC#0i:;!::;;!;;;;;;!;:!,.:ii::;!L!,:::,;!,... ,. ,, . ....,:,,:t0fiiii!!;;;;;;:;t;:,:i;!!!!!!!i!if;iCit;!tiCLif +fG##@0G0#0G#C00!,,,,,,:::,:,,,,,:;:,:t0fL8i8L;::::;!!!::, ..,::::;::,,...::;;:i0f;:;tfiLf;:::::!fi;;!;!;;!ttti!i!!!!iiiiifftLiL +G0#00GCG80G0CLf!:;!::,,,,:.,.,. .,!G!;tt8!;00!f;,:::::;,.;iitfCGGCCCCLft!!!;::itti;;;!;;;!::;ti!fCfff!!ii;;;;:;fi!ittfittGfii!ii +80CG@#C###CtLGtttfLt;,,......,. .!0;;i!:,;CC8@;,::::,.,:iG8GCLCCffLCG800##Gi;;!ttfi!ii!t;:!!;;!ii!;;!!!;::i::!ifti!i0t;tLiifCf0 +@#C##88G0CfttLfC!::::,,,,,,.,,,,,.!!iiC:,.!@#8!::..,,,..,:!Lti!!!;;!ttfLG00@0;,!Lt!;;LffL;!fi:::t!;:,,:ii::;tif@8@f;!fi!!;!fftG# +!tLfL0#ti8i;LtiG!..:;;;:;;:,:;:!;,:Gf!!!,;8#f!;:!i;::::.. ,!:,!i:::;;;:::::!L,,CC!;;;itt!!;f;:::!Li;:::;!;:!!fLLfiii!!t!ttGii!!L +;:Lt!!i;;tt;!ti;G,,:::,,!,,:::;;!!!!;!8Ct##t!:!!:t0L,,.,. ,;,:!!!iti, .,,,.:CLii!;iGtf;:;;;;:iGtiiiii!:;::!!!;;;;!fGtiftti!;! +.,,,.....,!:;:,::!,.,,,,,.,!!:ii;!t:;:t##iif:,,,,:!!,:;i!. ,,,..,!;,. ..,,:i88;;!iii!ti!i;ftt!ttt;:::::;t!:;;!i8@LCGGt0ifG + . . ,t, :,,,:,..,,,,::,,,:;iCff!:,:;:::;Li:!f!;..!!,::,.....,,,,,,:,. .;t;:!tCt!L;;;!ff!::;;;,,:f!;::::;:;ft!;!!iLi;t +i. . . :G; ....:..;.,;:t..:i80fi;:;;::LGCfCC!iC!,,,::,!fL;..;;;!tttt;Li;;;;:iLi!i!;!i!i;ii:,.;t::,!it!::,,,,,,:,,:.,,,:L +L!,. .., :G; ;..;.,t::L;:,:G8!!80;,t!,:!t!;;;::tL:,;.,,:!C8i;::,:!!i::iGffCCLtt!;tt:tCLt;;!;::;!i!!!!ii!!:::::!;::,:::::! +itCf:. :ti!;iC!,,:!!:;;:tt;f;,;;i!,;0#!;L!. .. .,:if:. ,!,,if08f!!;,,,..,!titt!::i;i;;;;;;:itL;,iL0Cfff;:;:!tf!!fi!!!;fCi!! +i!G8L: ,!ttffGf!ttfLt:ti:!;:!,.!fi;t#@i!Ci,.,:,,,,;!:,:!. ,i,.,!iC###@Gti;,.!LC@#@L!;;;;,:;!;;itt!:;fLt!ii:;i:ifCitfii::f!tfCf +!::;:. .,..,,,;fi,,;;;;:::,,;,;:,:!L@0fLGCtC!,;!!it;:,,,,,,..,; .,;tG@##@8L:,0#######i:f;;;tG0!;iC:,ifGf!;f!;;!!!::iLi!!!tfffft +:!!!!;:!!;. .;:. .f::L;:i,,;,t!,!GC;:!t;tL!,.,::::::;;iiit;,,. .,;!ii!;::;itC####f,,:.:CGf:;!;:,,:;;::!;;:::,,.!Gt!:L@##### +######i,:;. :i .:L;;C;:!,:::i;,:i!it;,:;,.,;i!:itttG0@#8C:::.. ....,,:,,,. ,;!!;::;,,:;!;::;:,,:::,.,,;iittt!,iti;iifLffL# +######8..!, .;:. :0!;f::!,i;.,, ,L00ft!;:,!CCt;;!;!ttG0f;!:.. .,,:,:!i;;;,,. ,;!;;!!iti!:!:!f!;;.,!!:;it,,:::CttLft,:i +#0CLC@!..;. .ii. .:G:.:,.,:: .. ,;;:;f0;::;!;:::::,::::,,....,.,,,::;:;LLi!: ..,,,,,::::,,,:;;;..;: .!, ,,::;:;;,.,: +L!::;tf::, .!!. ,,. .., :;!t!:,;tCCCLfttftfLfti!iifLiii!fiCftLfCLf!tftti!!!!!;:,....,,... ,,, . . ,;,.,.:, .. +i:,,,:;CG, .!i. ,....., !###@tiL##@###########@G88@@88888@@@8@#808G88888888G0Gi,:::;!!;,,. . . .,,,.,. ,, +f!;;!!iL#! .!!. .:;,,, :Cfi!!!LLiiitttttii!!!!;;!!!!!!!!!!!!!!!tG#t!!ii!!!!;;,.....,,.. ..,:,.. . ... .. . +i;iLCLiC8; ;, ,....,. ., :!i!;,.:!itLt. !tit, .,,,,....,,::::,,,... ,:::,, .... ,, +i;:!!!;it: ., , ,. .. .::,,,.,fC!C: .,,.:;;,,,,;itiiti!iiifLLLfti!;:::,,,..,,,,:,,,::!!,  +i:,,,::;t: :. ..,,,.,.,, :,..,!;:;::,...,,.. .L;,:Li;!!!!ttitfLCLi!!!itittfLLLfii!:,:,;;:;:,,:::;,,,,: +t!!::::;i; : .,,,.. , ,,.,. .!!..!tti;,LCf!ii,.,;:. .,fi:ti;;;::::::;;!;!i!:;!i!;;;;!;:,,.. ..,.. .:;:;ttti! +t!!it!;;!: , . . ,:, .:,. .,,,,,t@t!fLfL8##C;. .,,;t;::::::!!;::,,::;:::::,,,,,... .,,,,,:;!!itttti +tfLLfttti; .. .. ,... ;!.########## !t ., !!iiiiiittittiii!ii!!;!!!;;:::,,:,,,:;!!!!;;;;;;;;;;;  ,;;!i:;:,:;;:,::.,,, ,!!. !.tt !!ttti: ,..,, ,,. .... .,,::::,:,....,!i:,,,::,,,,,. ..,:,, .  + ..;C0i:,.;t!, .:,.. .i!. ;,:8t!ti!,.... ..,. .,!tf: .... .;!;. . .:;;:,...... ,,... .,. ... .......... + .,. .,:;;.:!t;. . ,t;::;;, .,:,;i;!C8f!,. ,;,..:;:, .;;,:fi ... ....,.,;:,,.... .,,.,,... ...,,,,,.,,..,:;;;,,: +:::,:!;. ....,,,.. ,L#iLG!... .ittCL8fii::. ....:,..,,..;:;;, ,!. . . .,,.. . .,,........,,,,..,;!;i!;;;::,,,,,,::;; +tCLt;.,..:, .,,::t;:;;!@#t;,,;;.:tif00L;,. . ,:, !GL, ,,. .., .,,... .,,,,,,.. ..,!itt!:,,:,,,,:;;;;;!;,,.;fLi +tGi:,,,;,.;:..:C,:GCLG!:f;i8;:!!::!iCGt;,.,,.... ..... .!8! ,;;;::,;!:,,;i:,..... .,:!:;;,:..::,:;!!;:,,.....,!ffLLL!t:,;ti; +t;,::!tt;;i,:,ti;:ifii!i;;;f@!;;!fGC!:, .,. ., ,,,:,. .,CC;.. .:LC!!f!!f;,fC:.,,.,,,,,,,,,,:;;::,;;i!!!,,:;:,::!iitCt!::;:;f; +!::;!Lt:;0!:::!iCitf:,,:tGti80!fGt;:, . ... . :i:,.:,;GiL!;!!;:!;;G;.,,:::,. .,;;;:Lf:;!;:;;;;:;Cfiiti!tiLCfi;!;!;;: +!:tCt;;:;0tttLC@0#0f;,::;!tLfG!::,.. ..,. .:!,..,,,.,:i;CL:;fi!ffi,.::!f:,!tt!;,.,!ft:;!;;tC!:fGGGLfGLLC!i!!!ittf::GLLi! +t;i!;!!!iL#8####8@#L!;::!fGL!,, ,,..... .,...,:,.,f8t,:!;..,iC!fi,,f;:;!!,.,:tG;::::;!,,;ii;:,::!G@!t0##0C0t!!!!!if:!Lf!;:ifttL +tf;;titff8#####88C##f;:iCt;:. .. ,,,,,. .!::!i:,:!C;::::;;;i;,!..,!,.!:,;:,;!;,...,:::;;;;;i;:!LL!!iti!!!!!!tfii!;iGti:,;tGCG +.t::i;;!tCGCCCC8fCL##fit;:,.......,..... ,.;Ci:,,:,:i0!!fi:.,!,.,:,.:...,,.,,,.:;,.,:t!ii!tifGfi!i!;:;!!!!!tCCCfLLtiCi!;:!;!tii +:,,..,..,::;:;i0!CifCf:,,:::,:,:,:,:,::..,,,:;ff;,.:L#!!!:,,.::..iL;;, ..,..,,.:!,,!t!!!!;;;!!!!CLi!ittLL0f!iti;!i;;fi!;;;;;i;f +;;:,.,,,!iLiL!tt!:;,,,. ....,,,,,,.:fC,;ft;;;i0f!:;8L:..,. ,,:,,fttC:...:,,,,,.:::;;i!;ti::!if!tfi;;:;;;!!!::,,,,;,:iittit!i;;t +8@GitfLfG#GL#f0i:!:,:,,,,,,,,,,.,:,,;0i,:f!;::;!!!;!::. .;..:t!,,:....:;,,,:tLtfLf!;i;!iLCtfi;::::::::;:,:::;;:;ti!!!;;;!!C +L8##@#####0CC#0i:;!::;;!;;;;;;!;:!,.:ii:;;;,,::,:tL, .,::. ,:, ... ..,,,,:t0fiiii!!;;;;;;:;t;:,:i;!!!!!!!i!if;iCit;!iiCLif +tC###GG0#0G#C00!,,,,,,:::,:,,,,,:;:,,t0tf8;:;::::!!;...,:;!fG!. ,,;,,,:,,:;::;:i0f;:;tfiLf;:::;:!fi;;!;!;;!tttt!i!!!!iiiiifttLiL +G0#00GCG8GG0CLf!:;!:,,,:,:.,.,. .,!G!;tt8!;Gt:;:::,:,,;fGG8#f!;,;t;,;!i!:::;,:itti;;;;;;;!::;ti!fCfff!;ii;;;;:;fi!itifittGfii!ii +00CG@#C###LtfGttffLt;,,......,. .!0;;i!:,!CC@!,::,..,!GLL08CCtLiCi;,,,,....,:!!itfi!!iit;;!!;;!ii!;;;!!;::i::!ifti!i0t;tLiifCf0 +@#L##88G0CtttLfC!::;:,,,,,,.,,,,,.!!iiC:,.i@#8; ,,,,. :!tL8;:::,:,,. ,:!;,,,;tf!;;fffL;!ft:::t!;:,,:ii::;tif@8@f;!fi!!;!fftG# +!iffL0#ti8i;LtiG!..:;;;:;;:,:;:!;,:Gf!!!,;8#f;!!::;:, .::;i, ...,;!t!:. ,iL!;;;itt!!;f;:;:!L!;:::;!;:!!fLffiii!!t!ttGii!!L +;:t!i!!;:ti;!fi;G,,::;,,!,,:::;;!!!!;!8Ct##t!,;0G,,,,. ....... ,!;:,,. .,!!;!;:iCtf;:;;;;:iGtiiii!!:;::;!!;;;;!fGtiftti!;! + ,.,. ...,;:!:,::!,.,:,,,.,!!:!i;!t:;:t##iif:,,;i,:!i!. ,::. .:tt;,. ,!;:!tCL;;!iii!ti!i;ftt!ttt;:::;:;t!:;;!i0@LCGGt0ifG + . . ,t, :,,,:,..,,,,::,,,:;iCLf!:,:;:;;:iL!;..!!;i:,.,.,,,:;itLi!:;i::iiCL:,!tCt!L;;;!tfi::;;;,,;f!;::::;:;ft!;!!iLi;t +i. .. ;G; ....:..;.,;:t..:i80fi;:;;::LGGi!G!,,,,,:iCL;,:!!;!i!!tL!Ci;,:!i!;!fi!i!;!i!i;ii::,;i;:,!it!::,,,,,,:,,:.,,,:L +L!,. .,, :G; ;..;.,t::L;:,:G8!!00;,t!,:!t!::!C!:;.,,:i80i;;;::;;;;:;iG;,;ff;:!i!;it:tCLt;;!;::;ii!!!!ii!!:::::!;::,:::::! +itCf:. :ti!;iC!,,:!!:;;:it;f;,;;i!,;0#!;L!. . .:ti,.,;,;tC@0t!;:,,;,.,;!ii!!;;:,,!;i;:;;;;:itL;,iL0CLff;:;:itf!!fi;!!;fCi!! +i!G8L, ,!ttffGf!tffLt,ti:!;:!,.;fi;t#@i!Ci:.,,,,,,,:;:.,i,.;it8###8Cii;,.;LC8#8L!:::;!;;,:;!;;itt!:;fLf!ii:;i:ifCitfii::t!tfCf +!::;:. .,..,,,;fi,,;;;;:::,,;,;:,:!L@0fLCCtC!,;!!ii:,.,!,.,, ..:iL8###@Gt,,8#######8!itif;;;tC0i;iC:,ifGf!;f!;;!!!::iLi!!!tfffft +:!!!!;:!!;. .;:. .f::L;:i,,;,t!,!GC;:!t;tL!,.,:::;:::;ii;,.. .,:!!i!!;:,;itf8####!:;;:,.;GGf:;!;:,,:;;::!;;:::,,.!Gi!:L@##### +######i,:;. :i .:L;;C;:!,:::i;,:i!it;,:;,.,;ii;ifttC8@L::.. ....,:::... ,;!!:,,,,;,,:;!;::;:,,:::,.,,;iitti!,iti;iifLffL# +######8..!, .;:. :0!;f::!,i;.:, ,L00tt!;:,iCCt;!!!iGLi!;.. .,,:,:;ii,:::,,.. ,;!::!!iti!:!:!f!;;,,!!:;it,,:::Cttfft,:i +#0CLC@!..;. .ii. .:G:.:,.,:: .. ,;;:;f0;::;!;:::,:::..,,....,,,:;;!::;GLf!;: ...,,,,::::,,,:;;;..;: .;, ,,::;:;;:,,: +L!::;tf;:, .!!. ,,. .., :;!ti:,;fCCLLfttftftiii!iitLtffitiffL8f0iftLftti!!!!!;:,....,,... ,,, . . .;,.,.:, .. +i:,,,:;CC, .!i. ,....., !###@fiL##@###############@888@888@@#@80C008888888800Gi::::;!!;,,. . . .,,,.,. ,, +f!;;!!iL#! .!!. .:;,,, :Cfi!!!LLiffLLft!!!!!!!!!!!!!!!!!!!i!itf@Ci!!iii!!!!!;,.....,,.. ..,:,.. . ... .. . +i!iLCLiC8; ;, ,....,. ., :!i!;,:Gf0t. .CLiL;. .,:,,,...,,::::,,,... ,:::,, .... ,, +i;:!!;;!t: ., , ,. ... .::,..:i;;, ..:,,,:;:,,,,:!ffiittiiiitLLLfti!;:::,,,..,,,,:,,,::!!,  +i:,,,,:;t: :. ..,,,...,, ,,..,.,,.,,::,. .f!,. :ii!!!iiitiitfLCLt!!!ititfLLLLfii!:,:,;;:;:,,:::;,,,,: +t!!::::;i; : .,,,.. , ,, . .;, ,:;!,f@0fi!;;iii:. .:!L..;t!;;;;:,,:::;;;;;i!:;!i!;;;;!;:,,.. ..,.. .:;:;ttii! +t!!iti;;!: , . . ,:. ,:. .,.,;fitGC8#####i ,,..Lt;;::;:::;!:::,,::;:::::,,,,,... .,,,,,:;!!ittiti +tfLLfttti; .. .. ,....,. 8#L#########G !f. . .ii!iiiiiittittiii!ii!!!!!!;::::,,:,,,:;!!!!;;;;;;;;;;;  ,;;ii:;:.:;;::::.,,, ,!!. i.tt !!ttti: ,,.,, ,,. .... .,,::::,:,....:!i:,,,::,,,,,. ..,:,, .  + . .:C0i:,,!t!, .,... .i!. ;,:8f!ii!,.... ..,. ..:iLf, .... ..;!;. . .:;;:,...... ,,... .,. ... . ......... + .:. .,:!;.:!t;. . ,t;::;;, .,,,;i;!L8f!,. ,;:.,:;:,..!!:;C; ... .. .,.,;:,,.... .,,.,,... ....,,,,,.,,..,:;;;.:: +;::,:!;. ....,,,.. ,L#iLG!... .ittLL8fii::. ....:,..::.,::;;, ,;.., . .,,.. ....,,.......,,,,,.,,;;;i!;;;::,,,,,,:::; +tCLt;....:, .,,::t;:;;!@#t;,,!!.:tif00L;,.. . .:;, !Gf. ,,. ... .,.....,,,,,,.. ..,!itt!:,,:,,,,:;;;;;!;,,.;fLi +tGi::,,;,.;,..:G,:GLLG!:f;i8;:!!::!iCGt;,.,,..,. ..... ,G8! ,;;;::,;!:,,;i:,.... .,:;:;;,:..,,,:;!!;:,,.....,iftLLL!t:,;ti; +t;,:;!ti;;i,:,ti;:ttiiii;;;f@!;;!fGC!:, .,. ., ,,,,,. .:GC!., .:LG!!f!!L;,LG:.,,.,,:,.,,,,,:;;::,;;i!!;,,:;:,::!iitCt!::;:;f; +!::;!Lt:;0!:::!iLifL;,,:tGti80!LGt;:, . . ... . ;!:,.:,;CiLi;!!;:;;;G;.,,:::,. .,:;;:Lf:;!;:;;;;:;Cfiiti!tiLCfi;!;!;;: +!:tCt;;:;0titLC@0#0f!,::;itLfGi::,.....,. .:!,..,,,.,:!;LL:;fi!fLi..:;!f:,!tt!!,.,!ft;;!;!tC!:fGGGLfGLLCii!!!ittf::GLLi! +i!t!;!!!iC#8####88#L!:::!fGL!,,...,..... ..,..,:,.,f8t,:!;..,iL;L!,,f;:;!!,.,:tG;::::;!,,;ii;::::!G@!t0##0CGt!!!!!it:!Lf!;:ifttL +iL;;iitfL@#####80C##f;:iCf;:,. ...,,,,,.. .!::!i:,:!C;::::;;;;;,!..,!,.!;,::,;!;,...,:::;;;;;i;:!fC!!iti!!!!!!tfii!;iGti::;tGCG +.t;:i;i!tCGCCCG8fCC##fii;:,.,.....,.,.... ..;Ci:,,:,:i0!!fi:.,!..,:,.:..,,..,,,.,:,.,:t!ii!tifGfi!i!;:;!!!!!tCCCfLLtiCi!;:!!!iii +:,,..,.,,::;:;i0!GifCf:,,:::,:,:,:,:,::,.,,:;!Lf:,.:C#i!!:,,.:, .iL;;, .....,..:;,,!t!!!!;;;!!!!Cfi!ittLL0f!iti;!i;;ti!;;:;;i;f +!!;:,,::!iLiL!tt!:;,,,. .....,,,,,,.:fL:t!iiitfGt;;;8L: .,...,,,,fttC, ..,..,,,.,::;;i!;ti::!if!tfi;::;;;!!!::,,,,:,:iittit!i;;t +##8ttfLLG@GL#fGi:;,,,,,,,,,,,,,.,:,:;0!it!;;;;;;!!!!::. .!..:f!,,:....:;,..:tLifLf!;!;!iLCtfi;::::::::;:,:::;;:;ti!!!;;;!!C +C0@@88####0CC#0i:!!::;;!;;;;;;;;:!,.:ti;;;::,,:!!80, .. .,::,,!,.......,,,,:tGfi!ii!!;;!;;;:;t;:,:i;!!!!!!!i!if;iCit;!iiLLif +tC##@GG0#GG#CG0!,,,,,,:::,:,,,,,,;:,:t0tLi::::;;f8!,.,,;:,.,;;i!;..;:.,,,::,:::i0f;:;ffiff;:::::!fi;;!;!;;!ttti!i!!!!iiiiifttLiL +G0#0GCCG8GGGCLf!:;!:,,,:,,.,.,. .,!G!;tt8L::::::;;:,:tL:,:;:;;,,. ,,,i!:,;:,:iiti;;;;;;;!::;ti!fCfff!;ii;;;;:;fi!ittfittGfii!ii +0GCG@#C###LtfGttttLt;,.......,. .!0;;i!;:if!:;:,,.,t@!,,;f!. .:;,..,,,;!!itLt!!iit;:!!;;!ii!;;;;!!::i::!ifti!i0t;ffiifCf0 +@#L##88GGCtitLfC!::;:,,,,,:,,,,,,.;!iiC:,.i#L.,,,. .!G: .,::,,,,.,,,,L!,,:;;:::;if!;;LLfL;!ft:::t!;:.,:it::;tif@8@f;!tii!!!fftG# +!iftf0@t!8i;LtiG!. :;;;:;;:,:;:!;,:Gf!!!,;8#f,,;:,. ,,,,,,:;;;i!::t;::;itti;,,,iC!!;;iti!;;f;:::!L!;:::;!;:!!ffftiii!!t!ttGii!!L +;,i!;!!;:ii;!fi;G,,:::,,!,,:::;;!!!!;!8Ct##tif:,,,. .. .,,:;;;!t;;Lf!;:,:..:!!!!;:iGtt;:;;;;:iGtiiii!!:;::;!!;;;;!fCtiftti!;! + ,.,. .. .;,!:,::!,.,,,,,,,!!;ii;!t:;:t##iif;:,,ti!,.,:;. ,:;iLCt;;f8#f,.. .;;:itCL;;!iii!ti!i;fti!ttt;:::;:;t!:;;!i88LCGGt0ifG + .. . ,t, :,,,:,..,,,,::,,,:;iCLf!:,;:,!Gi;..!!;i:,,::!ii!;;itfCi;:::i::itCf:,!tCt!L!;;!fti::;;;,,;f!;::::;:;ft!;!!iLi;t +i. .. :G; ....:..;.,;:t..:i80fi;:;;::fCLL;::,,:tGt:,;tftft!::if;i8!:;::!!;;!fi;i!!!i!i;ii::,;i;:,!it!::,,,,,,:,,:.,,,:f +L!,. .,, :G; ;..;.,i::L;:,:G8!!80;,t!,:!i;;L!:,,,;L@L!;;;!!;!::::,;Gf,,;iti::!i!;it:tCLt;;!;::;!i!!!!ii!!:::::!;::,:::::! +itCf:. :ti!;!C!,,:!!:;;:tt;f;,;;i!,;0#!;L!. . .,i:.;:,if0@Gi!;:,,!,..:;!i!:::ii;,,,!;i;:;;;;:itL!,iL0CLLf;:;:itf!!fi!!!;fCi;! +iiG8L, ,!ttffGf!ttfLt:ti:!;:!,.;fi;f#@i!Ci:.,,,:,,;.,!,,!iG@###0tii:..iCLG08i:::,,,;!!;;,:;!!!itt!:!fLf!ii:;i:ifCifLit::t!tfCf +!::;:. .,..,,,;ft,,;;;;:,:,,;,;;,:!L@0fLCCtCi,;!!it:...,. .,!f8###@0L;.:#######0C!,,;Ltif;;;tC0t;iC:,ifGf!;f!;;!!!::iLi!!!tfffft +:!!!!;:!!; .;:. .f:,L;:i,,;,f!,!GC;:!t;tL!,.,::;::,:;;, .,:;!!!!;;.,!tff0####L:,!i!;:,.;GGf:;!;:,,:;;;:!;;:::,,.!Gi!:L@##### +######i,::. :i .:L;;C!:!,:::i;,:i!it;,:;,.,;ii;tftf8G:. .....,::,.... .:!!;:;:,,,,;,,:;!;::;:,,:::,.,,;iitti!,iti;iifLffL# +######8..!. ;:. :0!;f::!,i;.,, ,L00tt!;::iCLt!itfLLi, ..,,,,:;!!. .;!;::,.. ,;!::!!!ti!:!:!f!;;,,!!:;it,,:::CttLft::i +#0CLC@!..;. .ii .:G:.:,,,:, .. ,;;:;f8!::;;;:::::,,... .,,,,:;;:::.;GGCLi!: ....,,,::::,,,:;;;..;: .;, .,,::;:;;:,,: +L!::;tL;:, .!!. ,,. .., :;!ti:,;fCCLLfttftttiit!iittiii!it8CL8CttGLLftti!!!!!;:,....,,.. ,,, . . .;:.,.:, .. +i:,,,:!CC, .!i. ,....., !###@ftL#####################888@#####CC8888808888800Gt::::;;!;,,. . . .,,,.,. ,, +f!;;!!iC#! .!!. ..:;.,, . :Cfiii!CLttLft!!!!!!!!!!!!!!!!!!iLiiit80t!!!ii!ii!!!!;:.....,,.. ..,:,.. . ... .. . +i;iLCfiC8; :, ,....,. ., :!i!::ftC, ,CiC8i,. .,::,,,,..,,::::,,,... ,:::,, .... ,, +i;:!!;;!i: ., ,. ,. . ,. .::,,::;;,,,. ..:.,,:;;::,,,:;tLfttffiitifLLLfti!;:::,,,..,,:,:,,,:;!!,  +i:,,,,::t: :. ...,,.,.,, ,..,!;.tLt!:;..,;, :f,.. ;ti!!!iiitiitffLLt!!ittitfLLLLfii!:,:,;;:;:,,:::;,,,.: +t!!::::;i; : .,,,. , ,. ,..,,.;0!;fLLC8##i. ,,:f, ;t!;!;::,,,:::;;;!i!;!!i!;!!!!;::,.. ..,... .;!:;ttii! +t!!iti;;!; . . . .:. , ;tif########: ., .,. .tt;:::;:::;;:::,,::;:::::,,,,,... .,,,,,:;!!itttti +tfLLfttti; . .. .,.,..,,. G#####iG0Gf, ,ii . ,ti!iiiiiittittiii!iii!!!!!;::::,,:,,,:;!!!!;;;;;;;;;;;  ,;;ii:;:,,;;::;:.,,, ,!!. i.tt !!ttti: ,,.,, ,,. ...... .,,::::,:,....:!i:,,,::,,,,,. ..,:,, .  + .,;C0i:,,!fi, .,,.. .i!. ;,:8f!ti!,.... ..,. ..,!fL: .... .,;!;. .:;;:,...... .,... .,. ... . ......... + .:. .,:!;.:!t;. . ,t;::;;, .,,,;i;!L8f!,. ,;:.,:;:,..;!::fi ... . .,.,;:,,.... .,,.,,... ....,,,,,.,,..,:;;;.:: +!;:::!:. ....,,,.. ,L#iLG!... .ittCL8fii::. ....:,..::..;:;;, ,;.., . .,,.. ....,,.......,,,,,..,;;;i!;;;::,,,,,,:::; +fCLt;....,, .,,::t;:;;!@#t;,,!!.:tif00L;,.. . ,;, !Gf. ,,. ... .,.....,,,,,,.. ..,!itt!:,,:,,,,:;;;;;!;,,.;fLi +tGi::,,;,,:,.,:C,;CLfG!:f;i8;:!!::!iCGt;,.,,.... ..... .t8! ,;!;::,;!:,,;i:,.... .,:;:;;,:..,,,:;!!;:,,.....,iftLLL!t:,;ti; +f:,::!ti;;i,:,ii;;CLiiii!;;f@!;;!fGC!:, .,. ., ,,,,,, .:GL;.. .:LG!!f!!L;,LG:.,,.,,:,.,,,,,:;;:,,;;i!!!,,:::,::!iitCt!::;:;f; +!::;!Lt:;0!:::!ififf;,,:tGti80!LGt;:, . . ... . ;!:,.;,;CiLi;!!;:!;;G;.,,:::,. .,:;;:Lf:;!;:;;;;:;Cfiiti!tiLCfi;!;!;;: +!:iCt;::!0ttfCG@G#0f!:::;itLfGi::,.....,. . .:!,..,,,.,:i;LL:;fi!fLi,.:;if:,!tt!!,.,!ft;;!;!tC!:fGGGLfGLLCii!!!ittf::GLLi! +i!i!;!!!tC#8####88#L!;::!fGL!,,. .,........,..,:,.,f8t,:!;..,!C;ti,,f;:;!!,.,:tG;::::;!,,;ii;::::!0@!t0##0CGt!!!!!it:!Lf!;:ifttL +iL;:iifC8#8####80C##f;;iCf;:,... .,,,,,... .!::!i:,:!C;::::;;;!;,!..,!,.!;,;:,:!;,...,:::;;;;;i;:!fL;!iti!!!!!!tfii!;iGti:,;tGCG +.t;:!!tfCGCLCCG8LCC##fii;:,.,.....,..... ..;Ci:,,:,:i0!!fi:.,!..::,.:..,,..,,,.,;,.,:t!ii!tifGfi!i!;:;!!!!!tCCCfLLtiCi!;:!;!iii +:,,..,,,:;:;:;i0iCifCf:,,:::,:,:,:,,,::,,,::;;Lf:,.:C#i!!:,,.::..tL;;, ... .,..:;,,!t!!!!;;;!!!!CLi!iftLL0f!iti;!i;;ti!;;:;;i;f +!i!::;;:iifiL!tt!:;,,,. .....,,,,,,.:f0:ifttti!Gt::;8L: .,...,:,,LttC, ..,..,,..,::;;i!;ti::!if!tfi;::;;;!!!::,,,,;::iittit!i;;t +###ffGGCG@GL#fGi:!:,,,,,,,,,,,,.,:,,;0t!;!!;;:;:!!!;::. .!..:f!,,:. ..:;,,.:tCifLf!;i;!iLCtfi;::::::::;:,:::;;:;ti!!!;;;!!C +G@#8G@####0CC#0i:!!::;;!;;;;;;;;:!,.:fi;,,,,:!,,;80, .. .,::,.,!:.......,,,,:t0f!!ii!!;;!;;;:;t;:,:i;!!!!!!!i!if;iCit;!iiLLif +tC##@GG0#GG#CG0!,,,,,,:::,:,,,,,:;:,:f8t;;::;!t:8#!,,,,:, ,!Li,.::;::,,,,::,:::i0f;,;ttiff;:::;:!fi;;!;!;;!ttti!i!!!!ii!iifttLiL +CG#0GCCG0GGGCLf!:;!:,,,:,,.,.,. .,!G!;fGG!;::::;!;:;fC;,:;,:;, . ..,!t;,;;,,itti;;;;;;;!::;ti!fCfff!;ii;;;;:;fi!ittfittGfii!ii +0GCG@#C###LifGtitfLt;,.......,. .!0;;ti!t;:::,...;G@;!:!f, .,:,:,.,,,;;;itLt!ii!t;:!!;;!ii!;;;!!!::i::!ifti!i0t;tfiifCf0 +##L##88GGCtiiLfC!::::,,,,,:,,,,,,.!!iiC:,,t!:,,. ;0!,.,:::,,..... ,C;.,,:;;:,:;!f!:;fffL;!ft:::t!;:.,:ii::;tif@8@f;!fii!;!fttG# +!iftfG8ii8i:LtiC!. :;;;:;;:,:;:!;,:Gf!!!,;#@:;;, ,,,,,,:;!ii;:;t:.,::,!tti;:,,iCi!::iit!!;f;:;:!L!;:::;!;:!!ffftiii!!t!ttGii!!L +;,i;;;!;:tt;!fi;G,,:::,,!,,:::;;!!!!;!8Ct##0f,,,,. ... .,::;!!f;:::;Lf;;:::.,:ii!!;:iGtt;:;;;;:iGtiiii!!:;::;!!;;;;!fCtiftti!;! + .., . .;,!:,::!,.,,,,,,,!i;ii;!t:;:t##iiCf,!ti,.,:;, ::;iLGf!,tLf@@:... ,!!;ifGL:;!iii!ti!i;fti!ttt;:::;:;t;:;;!i08LCGGt0ifG + .. . . ,t, :,,,:,..,,,,::,,,:;iCff!::!:!L!:,!!:i;,,;;!iii!;!fttt!:::,;i::itCL:,!tCt!L!;;!fti::;;;,,;f!;::::;:;ft!;!!iLi;t +i. . ;G; ....:..;.,;:t..:i80fi;:;;:,tCi!!:,:tGi,,!tLffft;:;tt,!8!;;;::!!;;!fi!i!!!i!i;ii::,;t;:,!it!::,,,,,,:,,:.,,,:f +L!,. .,, :G; ;..;.,i::L;:,:G8!!80;,t!,:;:!t!,,,;L@f!;;;!i;;;;:;:,!8L::,;!ti::!i!;it:tCLt;;!;::;!i!!!!ii!!:::::!;::,:::::! +itCf:. :tt!;!C!,,:!!:;;:it;f;,;;i!,;0#!;L!. .,:,;,:tL8@Ci!;:,,!,..;:!!tL;,,;!!;,.,!;i;;;;;;:itL;,iL0CLff::;:itf!!fi!!!;fCi!! +i!G8L, .;ttffGf!ttfLt:ti:!;:!,.;fi!f@@i!Ci:.,,,,,,,;,:if0####Gii!,,;LCCCGL!,.:!:,,,;;!;;,:;!!!itt!:!fLf!ii:;i:ifCitLit::t!tfCf +!::;:. .,...,,;fi,,;;;;:,:,,;,;:,:!C@0fLCCtC!,!!!!!..,..,:iG####@Ci,,@######8Li::;:,;ftif;;;tC0t;iC:,ifGf!;f!;;!!!::iLi!!!tfffft +:!!!!;:!!; .;:. .f:,L;:i,,;,f!,!GC;:it;tL!,.,:::::;;, .,;!!!!!;,,;tffC#####;;;;:!i!;:,.;GGf;;!;:,,:;;;:!;;:::,,.!Gi!:L@##### +######i,::. :i .;L;;C!:!,:::i;,:i!it;,:;,,:;ti!fLGG;. .....,,::....::;!!!:,;!;;,::,;,,;;!;::;:,,:::,.,,;iitti!,iti;iifLffL@ +######8..!, ;:. :G!;f::!,i;.:, ,L00ti!;:;iCLtifLLt:. .,:,,::;!:. .:f8!:::,,,,. ,;!:;!!iii!:!:!f!;;,,!!:;it,,:::CttLft,:i +#0CLC@!..;. .ii. .:G:.:,,,:, .. ,;;:;f8!:;;;;::::,.....,,,,,:,,::,,;CCLCLi;: ..,,,,,::::,.,:;;;..;: .;, .,,::;:;;:,,: +L!::;tL;:, .!!. ,,. .., :;!ti:,;fCCLfttttiiiiii!iiitiitittGGGC!ffLfLftti!!!!!;:,....,,.. ,,, . . ,;:.,.:, .. +i:,,,;!CC, .!i. ,....., !###@LiC#######@####################GL088800888888800Gt::::;;!;,,. . . .,,,.,. ,, +f!;!!!iG#! .!!. ..:;,,, . :Cfii!!CCttt!!!!!!!!!!!!!!!!!!iiititf#L!!!!i!!!ii!!!;;:.....,,.. ..,:,. . ... .. . +i;iLCfiC8; :, ,....,. ., :!!::!i, ;L:G#@;,. . ,,::::,,..,,::::,,.... ,:::,, .... ,, +i::;!;:!i: ., ,. ,. ,. .,:::,:::,. .,:,,,!t;!:,:,,,:iLCftfffittifLLLfti!;:::,,,..,,,,:,,,:;!!,  +i:,,,,::i: :. ...,,.,.,, .:!:;88Ctfttfft,. ti,.. ,;i!i!!!iiiiiiiffLLt!!ittitffLLLfii!:,:,;;:;:,,:::;,,,,: +t!!::::;i; : .,,,. , ,..,.,,,:ftt########, .,,,,,,f, ,fi;;;!;::,,,,::;;;;!!;;!i!;!!!!;::,.. ..,... .;!:;ttii! +t!!iti;;!; . . . .;,:i.;##@#######G, ,Li. ,:. ,fii;;::;:::;;:::,,::;:::::,,,,,... .,,,,,:;!!itttt! +tfLLfttti; . .. ..,. t##### :!: . ;tii!iiiiiittittiii!iii!!!!!;::::,,:,,,:;!!!!;;;;;;;;;;;  ,;;ii:;:,:;;::;:.,,, ,!!. i.tt !!ttti: ,,.,, .,. .,,.... .,,::::,:,....:!i:,,,::,,,,,. ..,:,, .  + ,;C0i:,,!ti, .,... .i!. ;,:8f!ti!,.... ..,. ...:;f;. .... .:;;. . .:;;:,... .. .,... ,,. ... ......... + ...,. .,::;;.:!t;, . ,t;::;;, .,,,;i;!L8f!,. ,;:.,:;:, ,!:,,;f. ... .. ...,;:,:.... .,,.,,... ...,,,,,.,,..,:;;;.,: +!;;::;:. .,..,,,.. .:L#iLG!... .ittLL8fii::. ....:,..,:.,;:;;,. ,;.., . .,,.. ....,,.......,,,,,.,,;!;i!;;;::,,.,,::::; +fGLt;....:, .,,,,,i::;!!@#t;,,!;.:tif00L;,.. . .:;..iGL, ,,. ... .,,,....,,,,,,.. ..,!itt;:,,:,,,,::;;;;!;,,.;fLi +fGi::,,;,,:,,,:G:!LLfG!;f;i8;:!!::!iCGt;,.,,.... ..... .;8i :;;!::,;!:,:;i:,..... .,:;;;;,:..,:,:;!!;:,,.....,!ffLLL!t;,;ti; +f;,;;!ti;;i,::ti!f@0ftit!!;f@!;;!fGC!:, .,. ., ,,.,,.. .,0G;..,.,LGi!f!!L;,fG:.,,..,,,.,,,,,:;;:,,;!i!!;,,:;:,::!!itCt!::;:;f; +!::;!Lf:!0!;:;iitfCL!:::tGti00!LGt;:, . ... . ;i:,.::;GiCi;!!;:!;;G;.,::::,. .,;;;;Lf;;!;:;;;;:;Cfiiti!tiLCft;;;!;;: +i;iCf;;:!0ftfC0@G#Gf!:::;itLtGi::,.. ..,. .:!,..,,,.,:!;LG:;fi!ffi,.::!f:,!tt!!,.,!ft;;!;!tC!:fGGGLfGLLCii!!!ittf::GLLi! +t;i!!!!!fC@8####00#L!;:;!fGL!,,...,..,.. .,...,:,.,f8t,:!;.,,;C!tt,,f;:;!!,.,:tG;::::;!,,;ii;::::!0@!t0##0C0t!!!!!it:!Lf!;:ifttL +iL;;iiLG##0####8GC##f!;iCf!:,.....,,:,,. . .!::!i:,:!C;::::;;:i;,!..,!,.!;,;:,:!;,...,:::;;;;;i;:!LC;!ift!!!!!!tfii!;iGti:,;tGCG +,f;:!iLG@@CGGCG8LCC##fit;:,.......,.,.... ..;Ci:,,,,:i0!!fi:.,;,.,:,.:..,,,.,,..,:,.,:t!ii!tifGfi!i!;:;!!!!!tCCCffLtiCi!;:!;!tii +::,,.,:;!!;;;;i0iGifCf:,,,::,:,:,:,:,::,,:::;;Lf:..:C#i!!:,,.,:..iL;;, ., .,..:;,,!t!!!!;;;!!!!Cfi!tttLL0f!iti;!!;;ti!;;;;;!;f +ii!:;!;:tifiL!ft!:;,,,. .....,,,,,,,:LL;tLfti!!Gi:,:8L: .,..,,::,LtfC, ..,..,,..,::;;i!;ti::!if!tfi;::;;;!!!::,,,,:,:iitttt!i;:t +##8fG#0C0@Cf#f0i:;:,:,,,,,,,,,,.,:,:if!!;!!;;::;!!;;::. .;,.:f!,,:. .::...:tLifLf!;i;!iLCtfi;::::::::;:,:::;;:;ti!!!;;;!!C +G@880#####GGC#0i:!!,:;;!;;;;;;!;:!,.:;;:,,,::,.,;80, .,,.,,...:, :!:.. . ..,,,,:t0f!!ii!!;;!;;;:;t;:,:i;!!!!!!!i!it;iCit;!iiCCif +tC##@G00#GG#CG0!,,,,,,:::,:,,,,,,!:,,!i;::;!ti:!##!:,,,.,tt!:. .::!::.,,,,:,::,i0f;:!tfiff;:::;:!fi;;!;!;;!ttti!i!!!!ii!itfftLiL +CG@0GCCG0GGGLLf!:;;:,,,,,:.,.,. .,!G;;f;::::;:;8#tif::,,;!:,,, ,,.,,:ii::!:,,itti;;;!;;;!::;ti!fCfff!!ii;;;;:;fi!itifittGfii!ii +0GLG@#C###LifGtitfLt;,.......,. .!0!!f;::::,.,!t0C:i;t:. !! !t;,.,::,,,,,;;!iiLt!ii!t;;;!;;!ii!;;;!!;::i::!ifti;i0t;ffiifCf0 +@#L##80GGCi!iLfC!::::,,,,,:.,,,,,.;!itG;,.,,.. ,fC;,,:,,.. .,,..,LG;:,,,::!;:::;!f!;;fffL;!ft;::t!;:.,:ii::;tif@88f;!fi!!!!fftG# +!iftfG0it8i:LtiC!. :;;;:;;:,:;:!;,;Gf!!!,::::. .:::,,::;!!;,;!,,,::;::;tftii,,:tC!!;:!ii!;;f;:::!Li;:::;!;:!!fLftiii!!t!ttGii!!L +:,!;;;!;:ii:!f!;G,,::;,:!,,:::;;!!!!;!8Ct#C:,,,. .....,::;!f;,,:;;i8f;;;::,,,;!i!!;:iCtt::;;;;:iGtiiii!!:;::;!!;;;;!fCtiftti!;! + ... .;,!:,::!,.,:,,,,,!i;ii;!t:!:t##tL:!fi,.,:;. ::;tCL!,:tCGC##:.....,!::!fGL:;!iii!ti!i;fti!ttt;:::;:;t!:;;!i0@LCGGt0ifG + .. , . ,t, :,,::,..,,,,::,,,:;iLLfi;,!Ct;,!!:i:,.;;iti!;;itttfL;;;;:::;::itCL:,!tCt!L!;;!fti::;;;,,:f!;::::;:;ft!;!!iLi;t +i. . ;G; ....:..;.,;:i..:i80fi;;;;:!tfi:,:t0!,,!LGCLLf;:;it::@#!:!:;::!!;;!fi;i!;!i!i;ii::.;t;:,;it!::,,,,,,,.,:.,,,:f +L!,. .,, :G; :..;.,i::L;:,:G8!!80;:t!,,:if:,,!C8t!;;!!!;;;;:::,;L#t!;;:;!ti::;i!;it:tCLt;;!;::;ii!!!!ii!!:::::!;::,:::::! +itCf:. :ti!;!C!,,:!!:;;:tt;f;,;;i!,;G#!;L!. .,,,:,:tL8@Cii!;,,!, .!!iit@LLf:,;!!;,.,!;i;;;;;;:itL;,iL0GLff;:;:itf!!fi!!!;tLi!! +iiG8L, .!ttffGf!ttfLt:ti:!;:!,.;ti!L@@i!Ci,.,,,,:;,:iL0####8Lf;,,t@0@#@GCft;,;i:,,,;;!;;,:;!!;itt!:!fLf!ii:;i:ifCiffit::f!tfCf +!::;:. .,..,,,;fi,,;;;;:::,,;,;:,:!C@GfLCCtC!,;!!;;,..,:iC8###8Ci,:#########@!,,;;:,;ftif;;;tG0i;!C:,ifGt!;f!;;!!!::iLi!!!tfffft +:!!!!;:!!; .;:. .f::L;:i,,;,f!,!CC;:it;tf!,.,::::;:, .,::;;;;:,,;itti0####!,,;;;:!i!::,.;GGf:;!;:,,:;;;:!;;:::,,.!Gi!:L@##### +######i,:;. :i .;L;;C;:!,:::i;,:i!it;,::,,:;ttifGC,. ......,::....,,;!t;,,.,;!!;,:,,;,,;;!;::;:,,:::,.,,;iitti;,iti;iifLffL# +######8..!, ;:. :0!;f::!,i;.:, ,L00ti!;:!tCLffLCi,..,::::,:;:. .,it;0!,:,,,,,. ,;!;:!!!ii!:!:!f!;;.,!!:;it,,:::CttLft,:i +#0CLC@!,.;, .!i. .:G:.:,,,:, . ,;;:;f8!:;;!;:::,....,,,,,,,.....,:iLffLL!;: ..,,,,,::::,,,:;;;.,;: .;, .,,::;:;;,,,: +L!::;tC;:, .!!. .,. .., :;!ti:,;fCCLfttiiiiiiit!iiitittiiiftiiiGfCffftti!!!!!;:,....,.... ,,, . . ,;,.,.:, .. +i;,,,;!CG: .!i. ,....., !####LiC#######@#####################@8@8808888888800Gt::::;;!;,,. . . .,,,.,. .,, +fi;!!!tG#! .!!. .:;,,, :Cfi!!;8@tii!!!!!!!!!!!!!!!!!iiitttC#Gi;!!!i!!!ii!!!!;:.....,,.. ..,:,,. . ... . . . +i;iLCfiL8; ;, ,....,. ., ,;!;;:, !C:C#@:,. . .,::::::,..,:::::,,,... ,:::,, .... ,, +i::;!;:;!: ., , ,. .. :i!:::, .::,,;f;;:,,,,,:!fCLLffffitttfLLLfti!;:::,,,..,,,::,,,::!!,  +!:,,,,,:i: :. ..,,,.,.,, ,;:f8Gt;;!!i;. ,t:.. .:i;!i!;!ttiii!ittLLt!!ittiffLLLLfii!:,:,;;:;:,,:::;,,,,: +t!!::::;i; : .,,,. , .::,.,!tiLG@####t. . ;t:i: ,t!;;;;;::,,,,,,::;;;!!;;!i!;!!!!;::,.. ..,... .:;:;ttti! +t!!iti;;!: . . . ;;!.;##0########. . ..,i: !fi!i;;::::::;;::,,,::;:::::,,,,,... .,,,,,:;!!itttti +tfLLfttti; .. .. . L####G;tti, !L; :iitti!iiiiiittittiii!ii!!;!!!;::::,,,,,,:;!i!!;;;;;;;;;;;  ,;;ii:;:::;;:;;:.,,, ,!!. i.tt !!ttti: ,,.,, .,. .::,... .,,::;:,:,....:!i:,,,::,:,,,. ..,:,, .  + ,!C0i:,,;ti, .,... .i!. ;,:8t!ti!,.... .,,. ....,!!, .... .:!:. . .:;;;,...... ,,... ... ... ............ + .,.,. ,::;;.,!t;. . ,t;::!;, .,,,;i;!L8f!,. ,;,.,:;;, ,t:..:f, ... .. ...,;:,,,,.. .,,.,,... ...,,,,,.,,..,:;;;,,: +!;;::;:... .,,.,,,.. ,L#iLG!... .ittCL8fii::. ....:,...:,,::;;,. ,!.., .. .:,... .. .,,.......,,:,,..,;;;i!;;;::,,,,,,::;; +fGLt;....;, ,,,::i::;!!@#t;::!!.:tif00L;,. . . .:i,.t0G: ,,. ... ,,.....,,,,,,.. ..,!ttt!:,,;,,,,:;;;;;!;,,.;fLi +fGi::,,;,,:,,,:G:!CLLG!;f;i8;:!!::!iCGt;,.,,.... ..... .;8L..:;;!:::;!:,:;i:,.... ..:!;!;,:..,:,:;!!;:,,.....,!ffLLL!t:,;ti; +f;,:;!ti;;i,,,tt!f@Cttit!!;f@!;;!fGC!:,. .,. ., ,:,,,,. .,08;..,,.!Gi!f!!L;,LG:.,,,,,:,.,,,,,:;;:::;!i!!!,,:;:,::!iitGt!::;:!f; +i::;!Lt:!0!;:;iitfCf;:::tGti80!LGt;:, . . ... . ;i:,.,:;C!Ci;;!;:!;;G;.,::::,. .,;;;;Lf:;!;:;;!;:;Cfiiti!tiLCft!!;!;;: +!:iGf;;:!0ftfC0@G#0f!:::;itLf0i::,.. .,,. . .:!,..,,,.::!;t8;;fi!fLi,.:;if:,!tt!;,.,!ft;;!;!tC!:fGGGLfGLLC!i!!!ittf::GLLi! +i;i!!!!ifC#0@###88#L!;:;!fGL!,,..,,.,,.. .,...,:,.,f8t,:!;.,,;C;tL:,f;:;!!,.,:tG;::::;;,,;ii;:,::!0@!t0##0CGt!!!!!if:!Lf!;:ifttL +tC;;itC0#@0####00C##f!;iCf!:,.....,,:,,. . .!::!i:,:!C!;;;;;;:i;:!,.,!,.!;,;:,;!;,...,:::;;;;;i;:!LC;!ift!!!!!!tfii!;iGti:,;tGCG +,L;:it88#8G0GCC8LCC##fit;:,.........,..,. ,.;Gt;,,:,,f0!!Lf;,,,,.,,,.:,.,,..,,,.:;,.,:t!ii!tifGfi!i!;:;!!!!!fCCCffLtiCi!;:!!!tti +::,,,:;iii;;;;i0iGtfCf:,,:;:,:,:,:,,,;:,,:::;;Cf,...;i;:::,,:,,..iL;;, ... .,..:!,,!t!!!!;;;!!!!Gfi!ittLL0f!iti;!i;;ti!;;;;;i;f +ii!::;:;fit!L!ft!:;,,,. .....,,,,:,,:LC:tfffi!;!:,,::,. ..,,,fttC, .,..,,..,::;;ii;ti::!it!tfi;::;;;!!!:::,,,:,:iitttt!i;;t +##8LLGGGG8Lf#f0t:!:,,,,,,,,,,,,,it!itf!!;!!;;:,.,:i0i;;;. .,,.,,,:f!:::. ..:;...:tLifLf!;i;!iLCtfi;::::::::;:,:::;;;;ti!!!;;!!!C +0@8#0#####GCC#8i:!!,:;;!;!;;;;:!f!;;::::;;;f;,:,;8#!:,::.......,,,;,:;,.,,,,,,,;t0f!!ii!!;;!;;;:;t;:,:i;!!!!!!!!!if;iCit;!iiCLif +fC##@G00#GG#LG0!,,,,,,:::,:,,,,,::::,,!if0t8C!:i##!:,,. .,:. . . ..:;!!:;!:f@L!:;tfiLf;:::::!fi;;!;!;;!ttti!i!!!!iiiitfftLiL +LG8GGCCG0GCGLLf!:;;:,,,:,,.,.,. ,!f!::;!!!iGiG#0ttL:,:::!,:!:.,,::....,,:;!;!tiLf!;;;;;;!::;ti!fCfff!!ii;;;;:;fi!ittfitt0fii!ii +0GLG@#C###fitCtittLt;,.......,. ,!G;;:,,,,::i8ft@8;i,tf;;..ti.;fLi:;;;,..,,:;;;;;;t!!i!t;:!!;;!ii!;;;!!;::i::!ifti!i0t;ffiifGf0 +8#L##00CGLi!iLfC!::::,,,,,,,,,,,,.!!t!:,,.. .::;00;,.,,,,. .,.,:fC:.,,,,;!iffi;::!;;fffL;!ft;::i!;:,,:ii::;tif@8@f;!ti!!!!LftG# +;ifttC0it8!:LfiG!. :;;;:;;:,:;:!;,:Gf;;;,,, ., ,i:,, .,:,.,:,:,,:,,,,,!fCff!:::tLi;itt!!;f;:::!Li;:,:;;;:!!ffLfiii!!t!tfGii!!C +:,!;;;;::ii;if!!G,,:::,:;,,:::;;;!!!;!8Ltt. ... .,,:;i;,,::;it0t:!;;:,,,;Lii!:iGtt;;;;;;:iGttiii!!:;::;!!;;;;!fGtiLtti!;! + .., .;,!:,::!,,,,,,,,,!!:ii;!t:;:t##!,:!;..,;:.. .,,,!ft:,;LLCGC#8,.,,,.,iitfGL:;!iii!ti!i;fii!ttt;:::::;t!:;;!i88LCGGt0ifG + .. . . ,t, :,,::,..:,,,::,,,:;iLfff!:Gf::i;!t:..;!;!ii!;!tCLtLi;!!f;,;t:;ttCL:,!tCt!L!;;!tt!;:;;;,,:f!:::::;:;Lt!!!!iLi;t +i. .. :G; ....:..;.,;:t..:i80fi;;!;;fCi;:;C0;,,;fGLLLLi;;ii:,;##t:!;;::!!;;!fi!i!;!i!i;ii::,;t;:,;it!::,,,,,,:.,:.,,,:L +L!,. .,, :G; ;..;.,t::L;:,:G@!!80;,t!,:!f;::t00t;::;!!!!i!;,,,,i@#i;;;:;!ti::!i!;it:tCLt;;!;::;ii!!!!ii!!:::::!;,:,:::,:! +itCf:. :tt!;!C!,,:!!:;;:tt;f;,;;i!,;0#!;L!. .,:i:!fG@8Lti!::!;::tfffif#C;Gf;:;!!;,.:!;i;;;;;::itL;,iL0GLLf;:;:itf!!fi;!!;tLi!! +i!G8L, .;ttffGf!ttfLt:ti:!;:!,.;ti!L@@i!Ci,,,,,;:,;fG@####0L!:;######8CLitCt:;i:,,,;;!;;,:;!;;itt!:!fLfiii:;t:ifCiffit::t!tfCf +!::;:. .....,,;ft,,;;;;:::,,;,;:,:!C@GffCCtC!,;!;:,..,;iLCG00Gf,;##########t;i;,;;:,;ftif;;;tG0i;iC:,ifGt!;f!;;!i!::iLi!!!tfffft +:!!!!;:!!;. .;:. .f::L;:i,,;,f!,!GC;:!t;tf!,.,:,:::. .,,,:;;;::;iii!f####i,:::;!;:!i;;:,.;GGt:;!;:,,:;;::!;;:::,,.!Gi!:L@##### +######i,:;, :i .;L;;C;:!,:::i;,:i;it;:!!:,:;ttiLf,.,:,,,::;;,...,::;t#f, .,;!!;,::,;,,;;!;::;:,,:::,.,,;iitti;,ifi;iifLffL# +######8..!, .;:. :0!;f::!,i;,:, ,f00fLti:itLLLLLt;::;!!!;:;;. ..,if,i#@;,,,,,,. ,;!;;!!iii!:!:!fi;;,,!i:;it,,:::CttLft::t +#0CLC@i,.;, .ii .:G:.:,,,:,.:, .,;;;:::;!iit;::,!iiiiii;:!,,,::!;,:f#@LLLi!;. ...,,,,,::::,,,:;;;.,;: .;, ,,::;:;;:,,: +L!::;tC;:, .i!. ,,. .., .!;::::::::!itt;. .,,,,,.,::,:;it,. .:;;ii!;;,,,,:;::,....,,... ,,, .. . ,;,.,.:, .. +i;,,:;iGG: .!i. ,....,, ,:CffffGf!tf!:,,...........;0;..,L!;i, ..,,,,,:::!!;;;;::::;;!;,,. . . .,,,.,. ,, +fi;!!!t0#! .!!. .:;,,, ,!ti!!@@!;,..:;;;;;;;;;;;,;G!::;!L#8; ,;;i!,;it!:,,.......,,,.. ..,:,.. . .... . . . +i;iLCfiL8; ;, ,,...,. ., ..,,;:;;: ........... ...,CG:0##i:,:,:;,.:;;;;;:::,,,,::::::,,... ,::::, .... ,, +i::;;;:;;: ., ,. ,.. ,. ,;::;;:, ,;:,,!fii.,;:::,:tLCCLfffftfttfLLLLfi!;:::,,,..,,:::,,,::!!,  +i:,,,,,:i: :. ..,,,.,.,, ,,;;G@80ti,.,. ,!, . .;t!i!!!ti!!!!iitLLt!!ittiffLLLLfii!:,:,;;:;:,,:::;,,,,: +t!!::::;i; : .,,,. , .;:,,:iftLGCCCC8!. ,f:,;, ,f!!;;;::,..,,,::;;;!!;;!i!;!!!!;::,.. ..,... .:;:;ttii! +t!!iti;;!; . . . :::;:8@C########, . ...,L, ,ffii;:;:::::;;:::,,::;:::::,,,,,... .,,,,,:;!!ittiti +tfLLfttti; .. .. . #####G8@@L: .tt ,!tttiiiiiiiittittiii!ii!!;i!!;::::,,:,,,:;!i!!;;;;;;;;;;;  ,;;ti:;:,:::::;:.,,, ,!!. i,tt !!ttti: ,..,, .,. :;,... .,,::::,:,....:!i:,,,::,,,,,. ..,:,,  + .;C0i:,,!ti, .,... .i!. ;,:8f!ti!,.... ..,. ...,,!!, .... .:!;. .:;;:,.. . .,... ... ... ......... + .,.:. .::;:.,!t;. . ,t;::;;, .,,,;i;;L8f!,. ,;,.,:;;, ,i,..:t. ... .. ...,;:,,.... .,,.,,... ...,,,,,..,..,::;;.,: +!;;::;;.. .,..,,,.. ,L#iLG!... .ittCL8fii::. ....:,...:,,;:;;,. ,;. , . ..,,.. .,,.......,,:,,..,;!;i!;;;::,..,,,:::; +fGft;.,,.;, ,,,::i::;;!@#t;,:!!.:tif00L;,.. . .:i..f0G: ,,. ... .,.. ..,,,,,,. ..,!itt;:,,:,,,,::;;;;!;,,.;fLi +tGi:,,,;:,:,,,:G:iGLLG!;f;i8;:!!::!iCGt;,.,,.... ..... .;8f..:!;!::,;!:,:;i:,..... ..:;;;;,:..,:,:;!!;:,,.....,!ffLLL!t:,;ti; +f;,::!ti;;i,,:fi!f8Liiii!!;f@!;;!fGC!:, .,. ., ,:,,,. .,00;..,,,iG!!f!!L;,fC:.,,..,,,.,,,,,:;::::;!i!!!,,:::,::!iitCt!::;:;f; +i:;;!Lf;!0!;:;iitfLf;,::tGti80!LGt;:,.. . ... . ;i:,.,:;C!Ci:;!;:;;;G;.,,:::,. .,:;;:Lf:;!;:;;;;:;Cfiiti!tiLCft;!;!;;: +!:iGf!;;i0ftLG0@G#8L!::;;itLfGi::,....,,. .:!,..,,,.::!;L0;;fi;fLi,.:;!f:,!tt!!,.,!ft;;!;;tC!:fGGGLfGLLCii!!!itif::GLLi! +t!iiiiifGG@G####00#Ci;:;!fGL!,,. .,,.... .....,:. ,f8f,:!;.,,!G!Ct,,f;:;!!,.,:tG;::::;!,,;ii;,,::!G@!t0##0C0t!!!!!it:!Lf!;:ifttL +fC!!LGC###G####0GC##L!;iCf!:,... .,::,,.. .!:,;;,,:!L;::::;:;f!:!..,!,.!;,;:,:!;,...,:::;;;;;i;:!LL;!ift!!!!!!tfii!;iGti:,;tGCG +:C!!fL8##G00GCC8LGC##fit;:,........,,... ..;L!,..,.,!G;;ti:.,;,.,,,.,..,,,.,,..,;,.,:t!ii!tifGfi!i!;:;!!!!!tCCCfLLtiCi!;:!!!iii +;::::!ftti;!;;t0iGifCt:,,,:,.,.,.,.,.,,,,,,,,:t!,. ,!8!!;,,. ,:,.!L;;, ... .,..:;,,!fi!!!;;;!!!!Cfi!tftLL0f!iti;!i;;fi!;;;;;i;f +ii!;:;:;t!i!f!ft!:;,,,. ......,,.,,.:tf,;!:,!;;0t .;#L:.,....,;:,tftC, ..,..,,,.,:,:;!!;ti:,!if!tfi!;;;;;!!;:::,,,:,:iitttt!i;;t +##0CLLGCG8Lf#f0t:;,,,,,,,.,,,,,.,:,::0!,,,:;L;;L!:i#f;:;:,,,.,!,,,!;,,,. .::...:!f!ttt;;!:!!LCtfi!;;::;:::;:,:::;;:;ti!!!;;;!!C +0@8#8#####GCC#8i::;,:;;;;;:;:;;;,!,.:ii:::;0i:::!8#!,,::... .;, ... . ...,..:iGf!!i!!;;;;::;:!i;:,:i!ii!!!!!i!if;iCit;!iiCLif +fL###G00#GG#L00;.,,,.,,,,,,,,,,.,;:,,t0fL8iGL:,;##!;:::,,,,. .,.,,:,,.....,.,:.!Ct;:!ttiLf;:::::!f!;;;;;;;!ttti!i!!!!ii!itfftLiL +LG8GGCCG0GCGLti;:::,,..,,,...,. .,!G!;tt8!;GG!L#Ltf0@0CLffti!;,..,i:::::..,,,,:;!!;:;;;:;;:,;i!;fLitt;;!!::;::;fi!ittfittGfii!ii +0GLG@@C@##f!if!!iii;:,.......,. .!G;;i!:,;CL8#fC@#88@#@GLL0@@Ct;;;,:,:.,,..,i!;iit!;!i!i;:;;;;;ii!;;;;;;:,:,:!ifti;i0t;fLiifCf0 +8#f##00CCL!;;tif;,,,,,...,,.,,,,,.;!!iC:,.!##G!LftttLCttC8GtfL@#@Gi;,....,,.;f;!Ct;::ffff;!ti:::i;;!,,,i!,:;iif@##L;!fi!!;!fftG# +;ititL0!!L:,!!;L; :;;:::;,,:;:!:,:Gt!!;,,0#f;::::,,:;!!iLt,:Lit8@@8;,,;;;t!ti!if!;::!ii!!;t;:::!f!;:,;!!;!!!fCCfLLt!!t!ttGii!!L +:.!;;:;::!!,;!:if..::;,,;,,,:::;;;!!!!8Cf#@f!:,.,;,,,:!!:,,.,;,:;!!!L,:80:!C@0::i!!;:iCLLi!!!!i!f0Lfttftti!i:::,,,;;!fCtiftti!;! + ..,. .,.,.,,,,...,,,,.,;!:!!;;f8C!L####G::;!:..;i;. ,::.:!f;:;!!;!:,.:!;:,!tCf;i!!tLLftftfCCCCCLt;:,.. .,;;:;i0@LCGGt0ifG + .. ...,:,,;.., .,,,..,,,,,:,,!#@;:!ii!:,;80; ,!,.,:;::,..:tLiLL;,.. ..,::;!!;:::;!!!!;;!!!!!!!!;::;!!!tfCCt:;ft!!!!iLi;t +i. .:!:;tf,,:;:,,,::,.,,,,,!!!;!i;:!i!,,.:;;:,:,. .!LCCi!:,,:::if;!C:....,:;;;;:;;;;;;;;iif;;;:;;fGLLfC00Liii!;:,,:,,:.,,,:L +Li,. .i!,,,:,. ,tiitf:;!!titt!!;;;,:;;:,. .,,,tCL!!!;;;;!i:!t;..,,!#8!;i;:!tLGCftLGLf0G!G88Gi!t;;;ifLfttftt!!:::::!;::,:::,:! +itCf:......,::::,.,::::;!!:::;;;:;;:,;LG::L;..;::;iC08@0tii!;:t;,,i;:!8#;:tLf!!!ii!;:!t!t!!!!!;;!tL;,iL0CLLf::;:!tf!!fi!i!;fLi!! +iiG8L, .;!iff0t:;:...,,,.,.,;..fGt!G##!i8L:,,:!:,;iC8####@ft;:!L0GGLLLt;!t0t:!i:,,,;;!;:,:;!;;iit!:!fLfiii:;i:ifCitfit::t!tfCf +!::;:. .,,,,,,;Lf,.:..;,.,.,i,;;,;tC#0ffCCtCi,:;;:,.,:!tCGGCf!,;##########!:!t;,;;;,;ftif;;;tG0i;iC:,ifGf!;f!;;;!!::iLi!!!tfffft +:!!!!;:!!;. .!:. ,f::L;:i:,;,f!,!GC;:!t;tf;..,,,:!, .,,:::,,:!ffffC####!.,:,:;!;:!i!::,,;GGt:;!;:,,:;;::!;;:::,,.!Gi!:L@##### +######i,:;, :i .;L;;C;:!,:::i;,:i;it;:!!;,:!fftL;::;;;!!;;;, .,:;!CC;. ,,;!!;,::,;,,;;!;::;:,,:::,.,,;iitti!,iti;iifLffL# +######0..!, ;:. :0!;f::!,i;.,, ,f00fLfi;tfCCLLfitttfLLfiii,.,,!tt:08;::::,,,,. ,;!;:!!!ii!:!:!f!;;,,!!:;it,,:::CttLft,:i +#0CLC@i,.;. .ii. .:G:.:,.,:,.,, ,;;!!!!iii!!:::::;;;;;:!!!,,,;;;:;;!!CGCL!;: ..,,,,,::::,,,:;;;.,;: .;, ,,::;:;;:,,: +C!::;fG;:, .!!. ,,. .., .!;::::;!LCCG0fi;;;it!!f;!;!C@fi,;CL!Ci!t!ttti!!;;;;;;::,......... ,,, . . ,;:.,.:, .. +i;,,:!iG0: .!i. ,....., ,:CffLL80LCGLfitfttfffLtftiL@fi;!CG#0!!tfttftitLC00Lft!,::::;!;,,. . . .,,,.,. ,, +fi;!!!t0#! .!!. ..:;,,. ,!t;;!88!i:,,,,::,,:::::,,:::;C;,f#0;,,::!:::;i!!;;::,.....,,.. ..,:,.. . .... .. . +i!!LLfiL8; :, ,....,. ., ..,!tffi!;;:, .:,::;;:::!t;:!ff!::,:,:::;!!!!!!!;,,,,::::::,,... . ,:,::, .... ,, +!:,;;::;;: ., , ,. .. ,####0fG88Liitt!;LfGtCGCGf0C;LCfGGifCt:Gif0G88888G8CttfttfLLLLfi!;:::,,,..,,,::,,::;!!,  +!:,,,,,:i: :. ..,,,.,.,, ,G@@#i!ttL0######!::::;;;;!G;,;!!;:::,:tfiiiiiiiiiiiifLt!!ittifLLLLLfi!!:,:,;;:;:,,:::;,,,,: +t!!::::!i; : .,,,. , .,,:;::;8C########, .;:.,,. !! .;i;,,,...,,,,::;;!!;!!i!;!;!!;:,,.. ..,... .;!:;ttti! +t!!iti;;!: . . . .:,:!!:#####L!;;,. .CL.,: ,: ;i;::;:::;;::,,,::;:::::,,,,,... .,,,,,:;!!itttt! +tfLLfttti; .. .. :.it, .. : ;!iiiiiitiittiii!ii!!;!!!;::::,,,,,,:;!!!!;;;;;;;;;;:  ,;;t!:;:,:::::;:.,,, ,!!. i,tt !!ttti: ,..,, .,. ,!:... .,,::::,:,....,!i:,,,::,,,,,. ..,:,,  + .;C0i:,,!fi,..,... .i!. ;,:8f!ti!,.... ..,. ...:!t:. .... ,;;. .:;;:,.. . .,... ... ... ......... + .,.,. .::;;.:!t;, . .t;::;;, .,:,;i;;L8f!,. ,;,.,:;;, .!,,,ii ... .. ...,;:,,.... .,,.,,... ...,,,,,..,..,::;;.,: +i;;::;;... ....,,,.. ,L#iLG!... .ittCL8fii::. ....:,..,,..::!;, ,;. , . ..,,.. .,,.......,,:,,..,;!;i!;;;::,..,,,:::; +fGft;.,,.;, .,,,::i;:;;!@#t;,:!!.:tif00L;,.. . . .,, .L0L, ,,. ... .,.. ..,,,,,,. ..,!itt;:,,:,,,,::;;;;!;,,.;fLi +fGi::,,;:,:,,,:G;i0CLG!;f;i8;:!!::!iCGt;,.,,..,. ..... .;0: .;!!;::,;!:,:;i:,..... ..:;;;;,:..,:,:;!!;:,,.....,!ffLLL!t:,;ti; +f;,;;;ti;;t,::ti!L8Liiit!!;f@!;;!fGC!:, .,. ., ,,,,,. ,0L: ...:GG!!f!!L;,fC:.,,..,,,.,,,,,:;::::;!i!!;,,:::,::!iitCt!::;:;f; +i:;;!Lt;!8i;;;itttLt;::;tGfi80!LGt;:,... ..... . ;!,..:,;GiC!:;!;:;;;G;.,,:::,. .,:;;:Lf:;!;:;;;;:;Cfiiti!tiLCft!!;!;;: +i;iCf!!;t0LfLG88G#8L!:::;ifLf0i:;:.. .,,. ,:!,..,,..,:!!Gt,;fi;fLi,.:;!f:,!tt!!,.,!ft;;!;;tC!:fGGGLfGLLCii!!!itif::GLLi! +t!itttfL0080####G0#Ci;:;!fGL!:,..,,,,... .....,:,.,f8f,:!;..,tL!G!.,f;:;!!,.,:tG;::::;!,,;ii;:,::!0@!t0##0C0t!!!!!it:!Lf!;:ifttL +LC!iG0G###0####0GC##L!;iCf!:,.....,::,,. . .!:,!!,,:!C;::::;:it;,!..,!,.!;,;:,:!;,...,:::;;;;;i;:!LC;!ift!!!!!!tfii!;iGti:,;tGCG +;GiifC@##G800CC8CGG##fit;:,,,.....,,,.... ..;Ci:,,,.,!0;!fi:,,!. ,,,.,..,,,.,,..,;,.,:t!ii!tifGfi!i!;:;!!!!!tCCCfLLtiCi!;:!!!iii +;;::;!ttti!!!!t8tGtfCf:,,:::,:,,,:,,,::,,,,,:;fi:. ,!@ii;:,..:,. ;C;;, .. .,..:;,,!f!!!!;;;!!!!Cfi!iftLL0f!iti;!i;;fi!;;;;;i;f +tii;;;:;i!i!f!fi!;;,:,....,..,,,,,,.:fL,!i:,!;;8f..!#C:.,,...::..tfiC, ..,..,,..,::;;!!;ti::!it!tfi;::;;;!!;:::,,,:,:iitttt!i;;t +##0GCCGCG0Lt#fGi:;:,,,,,,,,,,,,.,:,::0i:,,:!L;;L!:i#C;:;:,:,.:;.,,!!,,:. .:;...:iLifft;;!;!iLCtfi;;:::::::;:,:::;;:;ti!!!;;;!!C +0@8#@#####GLL#0i:;!,:;;!;;;;;;;;:!:.:ii:::;0i:::!0#!,,,:....,::. .,, . ....,,,,:i0f!!ii!!;;;:;;:;t;:,:i;!!!!!!!i!it:iCit;!iiCLif +fL@#@000#GG#LG0!,,,,,,,,:,,,,,,,:!:,,t0fL8iGL:,!##;, .,,:;. ,,;,.....,,.::,!Gt;:!ttiLf;:::::!f!;;;;!;;!ttti!i!!!!ii!itfftLiL +LC8GCCCG0GCGLft!:;;:,,,,,,.,.,. .,!G!;tt8!;GG!C#@!,,:!!!!!!;:. ,i:,:;:..,,,,:!!i;;;;;;;!::;ti;fCtft;;ii;;;;:;fi!ittfittGfii!ii +00LC8@C@##f!iLiittfi:,.......,. .!0;;i!:,;CL0#i;:,!8@8@@@@8i;;;::;,,::,,,..,i!;iifi;!i!t;:!!;;!ii!;;;;!;::!::!ifti!i0t;tfiifCf0 +8#f##00CCLi;!ftL!::::,,,,,:,,,,,..!!iiC:,.!@#0;::!:f@CfLLG0GCGGCCLi;,..,,:,,!f!!Cf!:;fffL;!ft;::i!;:.,:ii::;iif@8@f;!fi!!!!fftC# +;ititC0!!G;:ft!G!. :;;::;;:,:;:!;,:Gf!!!,;8#f;:,;:,;Cti!iifC8CfLC0#@f;::t!;tti!if!;;;!ii!;;f;:;:!Li;:,:;;::!!ttftiii!!t!ttGii!!L +:.i;::;;:ii:if;!G,,:::,,!,,:::;;;!!!;!8Li##f!:!!;,.,:::::::;!it!!iL08@L!i:,!;:::;;!;:iCtt;;;;;;:iGtiii!!!:;:,;!;;:;;!fCtiftti!;! + .., .:,!:,::;,,,:,,,,,!!:ii;!t;!;t##tiL!,,,.,:;;,......,,:;!;!itf8L:::,,:,:!tCL::!iii!ti!i;fii;tii;:::::;t;:::!i88LCGGt0ifG + .. . ,t, :,,::,..,,,,::,,,:;iCLf!;.::,,,:fLt;,.. ..,:,.:tCtitt;t@L:,;,:itCL:,;tCt!f;;;!ti;;:;;;:,;f;;::,::,;ft!!!!iLi;t +i. ,. :C; ....:..;.,;:i..:t8Gfi;;!t!;iLfiii!,. .. ...,,.,;!!!. :8G!,:::;!;;!fi;!;;!!!i;ii::,;t;::!it!::,,,,,,:.,:.,,,:L +L!,. .,, :C; ;..;.,i::L;:,,G8!!8C;!@#0iLi!;f8i .,,. .. .!,,;;!:,,;!t!::;i!;!i:iLLt:;!;::;ii!!!!!!!;:::::!;::,:::,:! +itCf:. ,ti!;!L!,,:!!::::it;t;.;;i;,;G@!i#C;!G; ;0;.,fGCi!;:,:!. .,::!!;::;!!;,.,!;!;::;;::itL;,iL0Cfff::;:!tf!!fi!!!;fLi!! +iiG8L, ,;itttCf!itfft:ii:!::;..;t;!L80!i8C.,,,..,,.,!f8###@L!f;:;tt!!;:::;t!:;!:,,,:;!;;,::;:;itt!:;tft!ii:;t:ifLiffit::t!tfCf +!::;:. ....,,:ti,,;;;;:,:,,;,;:,:!L8Gttf!;!;;!:,::,..,:!tCGCf!,,G######t:,!!;,,;;:,;ti!t;;:!if;;!C:,!tCt;;f;;;;!!:,iLi!!!tfffft +:!!!!;:!;;. ;:. .f:,L;:i,,;,t!,;LC!:!;;!i!:,,,:;!:....,:;;;;,,!#######::!:,,,;;;:!!;:,,,:!!!,;!;:,,:::;:;:::::,,.!Gi!:L@##### +######i,::. :i .;L;;C!:!,:::!:,,!;i;::::::;!ftift:;;!tffffft,,;!!ifi!;:!. ,,;!;;::,,:,,,:::::::,,:::,.,,;iiiti!,iti;iifLffL# +######0..!. ;,. :0!;f::!,!:.,. .i::;;;.,ffLCCfti!!itttfi;!i:,;;;....,::,,,,,.. ,:;::;;!!!;:!,!f!;;.,!!:;it,,:::CttLft,:i +#0CLC@i, ;. ;! .:G:.:,.,,,... .,:,,:::!ii!!;:,::;:;:::,.;t;.:;!:,,.,.,it;;, .....,.,::,,.,:;;;..;: .;, ,,::;:;;:,,: +C!::;fC;:, .!!. .,. . ::;:;!;!ffC00Ci;!;iiitL!tiiL;f@ii;C00#!itL!!i!;;;!;;::,,........ .,, . . ,;:.,.:, .. +i;:,:!i00: !i. ,....,, .:CL;:;tCt0@0fttfftfffftftfCttCtLLtG##ttLCfLftfLG00fft!,,:::;!;,,. . .,,,.,. ,, +fi!!!!f0#! ;!. .:;,,, ,!i:,:00;:;:,,,::,::,,,,:::,,,;GL::!i;,::;:::;!!!;;::,......,.. ..,:,. . .... .. . +i;!LLt!f8; :, .....,. . ,!fLLi!:;;:. ,,::;;::::;!i;:;;::,,,::;;!!!i!!!;,,,,:::::,,,... . ,::::, .... ,, +!:,;;:,;;, ., . , . ,####8:0@@80LfLL;;tGtGGCGLGCi00LGGfLGf:CLC808@@88G8CitfttfLLLLft!;:::,,,..,,,::,,::;!!,  +!:,,,,,:!: :. ..,,,...., ,G@@#i;tLG#######;,:::!i!!;::!;:;!ii!,,:fLtiiiiiiiiiifLi!!ittiffLLLLfi!!:,:,;;:;:,,:::;,,,,: +t!!::::;!; : ..... . .,,,:,..@########G, ,Ct. .Lf ,i;,,....,,,::;;!!;!!i!;!!!!;:,,.. ..,... .;!:;ttti! +t!!iti;;!; , . . .,,.. .f#G##!;;:. ,Ct. ,. .,,. ,t;:::,:;;::,,,::;:::::,,,,,... .,,,,,:;!!itttt! +tfLLfttti; .. . .ii .iiiiiitiittiii!ii!!;!!!;::::,,,,,,:;!!!!;;;;;;;;;;:  ,;;i!:;:,:::,:;:.,,, ,!!. i.tt !!ttti: ,..,, .,. ::... .,,::::,:,....:!i:,,,::,,,,,. ..,:,, .  + ..;C0i:,,!ti, .,,.. .i!. ;,:8t!ii!,.... ..,. ...:!t: .... ,;:. . .:;;:,...... ,,... ... ... . ......... + .,,,. .,:;;.:!t;, ,f;::;;, .,,,;i;!L8f!,. ,;,..:;;, .;,.,ti ... ., ...,;:,,.... .,,.,,... ...,,,,,..,..,::;;.,: +i;;::;:... .,..,,,.. ,L#iLG!... .ittCL8fii::. .. .:,..:,.,::!;, ,;.., .. .,,... ....,,........,:,,.,,;!;i!;;;::,,,,,,:::; +fGft;.,,.;, .,,,::t;:;;!@#t;,:!!.:tif00L;,.. . ,:, ,C0L, ,,. ... .,,.....,,,,,,.. ..,!itt;:,,:,,,,:;;;;;!;,,.;fLi +fG!::,,;:,:,:,:G:iGLfG!;f;i8;:!!::!iCGt;,.,,..,. ..... .!0, .;!i;::,;!:,:;i:,..... ..:!:;;,:..,:,:;!!;:,,.....,!ftLLL!t:,;ti; +f;,;;!ti;;t:::ti!tGtiiii!!;f@!;;!fGC!:,. .,. .,.,,,:,. ,0t: . ,:CG!!f!!f;,fC:.,,.,,,,,,,,,,:;;:::;;i!!!,,:::,::!!itCt!::;:;f; +i:;;!Lt;!0i!;!iittLL;::;tGfi80iLGt;:,... . ... . :;,..,,;CiCi;!!;:!;;G;.,,:::,. .,;;;:Lf;;!!:;;;;:;Cfiiti!tiLCfi;!;!;;: +i;iCf!!;iGffLG88G#8L!:;;;ifLf0i::,....,,. . .:!,..,,..,:;;Gt,;fi!fLi,.:;!f:,!tt!!,.,!ft;;;;!tC!:fGGGLfGLLC!i!!!ittf::GLLi! +t!iittfC00#0####G0#Ci;;;!fGL!:,..,,,,,....,...,:,.,f8f,:!;..,tt!G;.,f;:;!!,.,:tG;,:::;!,,;ii;,,::!G@!t0##0C0t!!!!!if:!Lf!;:ifttL +LC!iG0G###8####0GC##L!;iGf!:,.....,::,,. . .!::!!:,:!C;::::;:ii:,!..,!,.!;,;:,;!;,...,:::;;;;;i;:!LL;!itt!!!!!!tfii!;iGti:,;tGCG +!GitC0#@8G8GGLC8CGG##fit;:,,,.....,,,..,. ..;Ci:,,,.,!0!!fi:,,!. ,,,.:..,,..,,..,;,.,:t!ii!tifGfi!i!;:;!!!!!tCCCfLLtiCi!;:!;!tii +;;;;!iii!!;!;!t8tGtfCf;,,:;:,:,:,:,:,::,,,,,:;Li:. ,!@ii!:,..:, ;C;:, .. .,..:;,,!f!!!!;;;!!!!CLi!ittLL0f!iti;!i;;ti!;;;;;i;f +tii;;;:!i!i!f!ft!;;,:,....,..,,,,,,.:fC,!i:,!;;8f..!#C:,,,..,:,..iLiC, ..,...,,.,::;;i!;ti::!it!tfi;::;;;!!!:,,,,,:,:iitttt!i;;t +##0CCCGCG0ft@fGt:!:,:,,,,,,,,,,,,:,::0i:,,:!L;;L!:i#C;:;:,:,,;:..,;t,,:. .::...:tLifff;;i;!iLCtfi;::::::::!:,:::;;:;ti!!!;;;!!C +0#8#######GLL#8i:;!,:;;;;;;;;;;;:!:.:ii;::;0i,::!0#!,,,:....,;, .,, . ....,,,,:t0f!!ii!!;;!;;;:!t;:,:i;!!!!!!!i!it;iCit;!i!CLif +fL@#@000#GG@LG0!,,,,,,:,:,,,,,,,:!:,,t0fL8iGL:,!##;, .,,:;. ,.:,.....,,.::,!Gf;,;ttiLf;:::::!f!;;!;!;;!tttt!i!!!!ii!iitttLiL +fC8CCCCG0CCGLff!:;;:,,,,,,.,.,. .,!G!;tt8!;GG!L#@!,,;!!!!!!;,. ,!:,:;:..,,,:;!!i;;;;;;;!::;ti!fCfff!;ii;;;;:;fi!ittfittGfii!ii +G0LC8@C@##f!tCtittfi;,.......,. .!0;;i!:,;CL0#i;:,t@@8@@8@0i;;;,:!,,::,,,..,ii;iift!!i!t;:;!;;!ii!;;;!!;::i::!ifti!i0t;tfiifCf0 +8#t##00CCLi;iLfC!::::,,,,,:.,,,,,.!!iiC:,.!@#8;,,!:L8CffLGGGCGGCCLi;, .,,::,!L!!Cf!;;LffL;!ft;::t!;:.,:ii::;tif@8@f;!fi!!;!fftG# +;ititCG!!0;:ffiG!. :;;;:;;:,:;:!;,:Gf!!!,;8#f;;:;::!Li!!!ifG0CLCG8#8t;,;ti;iti!if!;::!ii!;;f;:::!L!;:::;!;:!!ffftiii!!t!ttGii!!L +,.i!::!;:ii:if;!G,,::;,,!,,:::;;!!!!;!8Ct##f!:!!;:.,::,::::;!ii!!tC888!;f:,;::::;;!;:iCtt;:;;;;:iGttiii!!:;::;!!;;;;!fGtiftti!;! + .., .:,!;,::;,.,:,,,,,!!:!i;!t;!:t##tiL;,,,.,:;:,.....,,,:;;;!itL8!;;,.,:,:!tCL:;!iii!ti!i;fti;tit;:::;:;t!:;;!i88LCGGt0ifG + .. :t, :,,::,..,,,,::,,,:;iCLf!:,::,,::fLi:,....,::,.:fft!ti;G@i:,;,:itCf:,!tCt!L;;;!tt;::;;;,,;f!;::::;:;ft!!!!iLi;t +i. ,. ;G; ....:..;.,;:i..:i80fi;;!t!;tLtiii;. . ....,,.:!;i:..!@f:,;::!!;;!fi;i!;!i!i;ii::,;t;::!it!::,,,,,,:.,:.,,,:f +L!,. .,. :G; :..;.,i::L;:,:G8!!0C:!@#ftGi!;08; .,,. .. .!..;;!:::;!t!::!i;;ii:tCLt;;!;::;!i!!!!!!!;:::::!;::,:::::! +itCf:. ,ii!;!C!,,:!!::;:tt;f;,;;i!,;0@!t#f:iG: .i0: :LGfi!;,,!; ,,:;iii;:;!!;,.,!;!;;;;;::itL;,iL0GLft::;:!tf!!fi!!!;tCi!! +iiG8L, ,!itffCf!ttfLt,ti:!;:!,.;t!!L@0!i0i ,,,..,..:!f@###8t!f;:!tt!i;::!iLt:;i:,,,;;!;;,:;;;;itt!:!fft!ii:;t:ifCiffit::t!tfCf +!::;:. ....,,:ti,,;;:;:::,,;,;;.:!C@Ctff!;;:;;,:::. .,:!tLCLi:,,@######f:,!ii:,;;:,;ft!f;;;iLC!;iC:,itGt;;f!;;;!!::iLi!!!tfffft +:!!!!;:!;;. ;:. .f::L;:i,,;,t!,!CC!:!;;!!;,,,,:;;,...,,:;;;:,,!@######:,;::,:;;;:!i;::,,:ffi:;!;:,,::;;:;;;:::,,.!0i!:L@##### +######i,:;. :i .;L;;C!:!,:::i;,:!;i;::::::;!fftf!:;;!tfLLtfi,,:;;tfi!:,;. ,,;!!;::,,;,,:;;;::::,,:::,,,,;iitti!,ifi;iifLffL# +######0 .!, ;:. :0!;f::!,i;.,. .!:::::.:LfLCCti!!!ittffi;;!,:!!;.,!..,:,,,,,,. ,;!;:!;!ii!:!,!fi;;,,!!:;tt,,:::CttLft,:t +#0CLC#i..;. !i. .:G:.:,.,,,... .,,.,:::iii!!::,::;:;:::,:t!:,;C!;;:,,.,iL!;: ..,,,,,::::,.,:;;;..;: .;, ,,::;:;;:,,: +L!::!fC;:, .!!. .,. . , :::;!!:;ffG00f!;!;iiitL!tiifi@@!i!88#@!ttL!ii!!;;;;;:::,........ ,,, . . .;,.,.:, .. +i;:::;i08: !i. ,....,, .:GL;:;tLf8@GftffftfffttftLCtLLtCft##@ttLLfLfitLC00fft!,::::;!;,,. . . .,,,.,. ,, +fi!!!if0#! ;!. .;;,,, ,it;,:00;:;:,,::::,,,,,,::,,,,!C!,;!!:,::;::::;!!;;::,.....,,.. ..,:,.. . ... . . . +i;!fCt!f0; :, .....,. ., .:itfLi!;;:,. .:,::;;::::!!!;:::::,,,::;;!!iiii;;,,,,::::::,.... ,:,,,, .... ,, +!:,;;:,;;, ., , .. .. ,####0:08GGGLLLL!tfGiGGCGLGCf0GLGGfLGt:GfL088@888C8LitfttLLLLLfi!;:::,,,..,,,,:,,,:;!!,  +!:,,,,,:!, :. ...,,...,, ,G@@#i;tL0#######:::::!i!;;:;;;;;!i!;,,:Ctiiiiiiiii!!ffi!!ittitLLLLCfi!!:,:,;;:;:.,:::;,,,,: +t;;::::;i; : .,,,. , .,,::,.,#####0##L;. ;C; .L; .:;,,,....,.,::;;!!;!!i!;;!!!;::,.. ..,... .;;:;ttti! +t!!iti;;!; . . . .::. .ffL#L,.. :t: .. .,. ;!::;:,:;;::,,,::::::::,,,,,... .,,,,,:;!!itttt! +tfLLfttti; . .. :t: ;iiiiiitiittii!!!i!!;!!!;;:::,,:,,,:;!!!!;;;;;;;;;;;  ,;;i!:;:,,:::,;:.,,, ,!!. i.tt !!ttti: ,..,, .,. .,... .,,::::,:,....:!i:,,,::,,,,,. ..,:,, .  + .,:CGi:,,;fi, .,,.. .i!. ;,:8t!ti!,.... ..,. ...:!t: .... :;:. . .:;;:,.. . . ,,... ,,. ... . ......... + .,:,. .,:;:.:!t;, . ,f;::!;, .,:,;i;!L8f!,. ,;,.,:;;, .;,.:ti ... .. ...,;:,,.... .,,.,.... ...,,,,,.,,..,::;;.,: +f;;::::... .,..,,,.. ,L#iLG!... .ittCL8fii::. .. .:,..:,.,::!;, ,;.., .. .,,... .. .,,.......,,,,,.,,;!;i!;;;::,,,,,,:::; +LGfi;..,.;,. .,,,::t;:;;!@#t;::!!.:tif00L;,.. . ,:, ,C0L, ,,. ... ..,.....,,,,,,.. ..,!itt;:,,:,,,,:;;;;;!;,:.;fLi +fG!::,,;,,:,;,:G:iGffG!;f;i8;:!!::!iCGt;,.,,..,. ..... .i0, ,!!t;::,;!:,:;i:,.... ..:!;;;,:..,:,:;!!;:,,.....,!ftLLL!t:,;ti; +f;,::!ti;;i:;:ti;iCi!iii!!;f@!;;!fGC!:, .,. .,.,,,:,. ,0t, . ,:CG!!f!!L;,fG:.,,.,,:,,,,,,,:;;:::;;i!!!,,:::,::!!itCt!::;:;f; +i;;;!Lt;!0i!;!ttttGC;:::tGfi00iLGt;:, .. ..... . :;,. ,,;CiCi;!!;:!;;G;.,,:::,. .,:;!:Lf;;!;:;;;;:;Cfiiti!tiLCfi!!;!;;: +i;iCf!;;i0LLCG@8G#8L!:::;itLf0i::,....,,. . .:i,..,,..,::;Gt,;fi!fLi,.::!f:,!tt!!,.,!ft:;;;!tC!:fGGGLfGLLCii!!!ittf::GLLi! +t!!iiitL00#0####G0#Ci;:;!fGL!:,..,,,,,....,...,:,.,f8f,:!;..,ti;0;.,f;:;!!,.,:tG;::::;!,,;ii;:,::!G@!t0##0C0t!!!!!it:!Lf!;:ifttL +CC!!C00###8###@00C##L!;iCf!:,.....,:,,,... .!::!i:,:!C;::::;;i!:,!..,!,.!;,;:,:!:,...,:::;;;;;i;:!fL;!ifi!!!!!!tfii!;iGti:,;tGCG +!C!!fG#8880CGLC@CGC##fit;:,,,.,...,,,..,. ..;Ci:,,,.,!8!!fi:,,;. ,,,.,..,,..,,..,:,.,:t!ii!tifGfi!i!;:;!!!!!fCCCffLtiCi!;:!;!tii +;;;!iti!!!;;;;t0tGtfCf:,,:;:,:,:,:,:,::,,,,,:;Li:. ,!@ti!:,..:, :C;:, .. .,..:;,,!t!!!!;;;!!!!CLi!ittLL0f!iti;!i;;ti!;;;;;i;f +fttit!;!t!i!f!ft!;;,,,.......,,,,,,.:LC,!i:,i;;8f..!#G:,,,..,:,..;CiC: ..,...,..,::;;i!;ti::!it!tfi;::;;;!!!:::,,,:,:iitttt!i;;t +##0CCGGCG0ft@fGi:!:,,,,,,,,,,,,,,:,,;8i:,,:!L;;L!:i#C;:;:,,,,;:..,:f,,:. .::...:tLifLf;;i;!iLCtfi;::::::::;:,:::;;:;ti!!!;;!!!C +0@8#######GLf#0i:;!,:;;;;;;;;;!;:!:.:ii;::;0i:::!0#!:,,:....,;, .,:.. ...,,,,:t0f!!ii!!;;;;;;:;t;:,:i;!!!!!!!i!if:iCit;!tiLLif +fL8@@000#GG#LG0!,,,,,,:::,,,,,,,:!:,,t0fL8iGL:,!##;, .,,:;. ,.:,.....,,.::,!Gf;:;ttiff;:::::!fi;;!;!;;!ttti!i!!!!iiiiifftLiL +fC0CCCCG0CCGLff!:;;:,:,:,,.,.,. .,!G!;tt8!;GG!L#@!,,;!!!!!!;,. ..,;;,;;:..,,,:;!!i;;;;;;;!::;ti!fCfff!!ii;;;;:;fi!ittfittGfii!ii +G0LC88C###f!iCtittfi;,.......,. .!0;;i!::;CL0#t;:,t@@8@@8@G!;;:,,!,.::,,,..,ii;iift!!i!t;;!!;;!ii!;;!!!;::i::!ifti!i0t;tLiifCf0 +0#f@#00CCL!;iCfC!::::,,,,,:,,,,,,.!!iiC:,.!@#8;,,!;G8LffLGGCC0GLLLi:, .,,:,,!L!!Cf!;;LLfL;!ft;::t!;:,,:ii::;tif@8@f;!fi!!;!LftC# +;!iitLG!;G;,ffiG!. :;;;:;;:,:;:!:,:Gf!!!:;8#f!;:;::!L!!!!iLG0LLCG8@0i:,;ti;!ti!if!;::iii!!;f;:::!Li;:,:;!;:!!ffftiii!!t!ttGii!!L +,.!;::;;:ii:iL!!G,,:::,:!,,:::;;!!!!;!8Ct##f!:!!;:.:::,::::;!ii!ifG888!;f:::::::;;!;:iCtt::;;;;:iGtiiii!!:;::;!!;;;;!fGtiLtti!;! + ,.. .:,!;,::!,.,:,,,,,!i;ii;!t;!:t##iiL;,,,.,:;:......,,,:;;!!itC8!;;,.,:,:!tGL:;!iii!ti!i;fit;iit;:::;:;t!:;;;i0@LCGGt0ifG + . :t, :,,::,..,,,,::,,,:;iCff!:,:;,,,:LL!:,...,,::.,;fti!ti;0@!,,;,:itCL:,!tCt!L!;;!ft;::;;;,,;f;;::::;:;ft!!!!iL!;t +i. ,. ;G; ....:..;.,;:i..:i80fi:;!fi;tLtiii;. ......,.,:!;t:.,!@f:,;::!!;;!fi;i!;!i!i;ii::,:t;::!it!::,,,,,,:,,:.,,,:L +L!,. .,, :G; ;..;.,i::L;:,,G@!!0C:!##tfGi!;88: .,,. .,i,,;;!:::;!ti::!i!;ii:tCLt;;!;::;!i!!!!ii!!:::::!;::,:::::! +itCf:. :ti!;!C!,,:!!:;;:tt;f;,;;i!,;0@!t#t,tG: ,tG:.;LGfi!:,:!: .!,:!ttt;:;!!;,,,!;i;;;;;::itL;,iL0GLLf::;:itf!!fi!!!;tCi;! +i!G8L: ,!itffGf!ttfLt,ti:!;:!,.;t!!L@0!i0; ,,,..,..:!L@###8iif;:!tiii!::!tCt:!i:,,,;!!;;,:;!;;itf!:!fLfiii:;t:ifCiffii::t!tfCf +!::;:. .....,,:fi,,;;;;:::,,;,;;,:!C@GfLt;:;:;:,:;:...,:!tLCfi:,:#######f:,!ii;,;;:,;ftif;;;tCG!;!C:,ifGf!;f!;;!i!::iLi!!!tfffft +:!!!!;:!!; .;:. .f:,L;:i,,;,f!,;CG!;!;;i!:,.,,:;;,...,,:;;;:,,i8######:,:::,:;;;:!i;;::,;LCt:;!;:,,:;;;:!;;:::,,.!Gi!;L@##### +######i,:;. :i .;L;;C!:!,:::i;,:i;!:::::::;!fftt!;;;itLLLff!,,:;;tfi!:,: ,,;!!;,::,;,,:;;;::::,,:::,,,,;iitti!,ifi;iifLffL# +######0 .!, ;:. :0!;f::!,i;.,, .!::::,.!LtLCCti!;!ittff!!!i,;!i;.,i,.::,,,,,,. ,;!;:!!!ii!:!:!f!;;,,!!:;it,,:::CttLft::t +#0CLC#i..;. !i .:G:.:,.,:,... .,,.,::;iii!!::,::;:;:::,:C!:,!G!:;:,,.,iL!;: ..,,,,,,::,,,,:;;;..;: .;, .,,::;:;;:,,: +L!::!fC;:, .!!. .,. .., :::;!!:;ffGGGt;;!!itiiC!tiifi#@!ii@C#8!tfC!!i!!;;!;;;::,....,.... ,,, . . ,;,.,.:, .. +i;:::;i08: .!i. ,....,, .:Gf;:;iLL8@CftfLftfffttftLLiLftCfi##@ftLLfLtitfC00fft!::::;;!;,,. .. . .,,,.,. ,, +Li!!!!tG#! ;!. .:;,,, ,ii;,:00;:;:,,::::,,,,,,::,,,,!L:,:!;:,:::::::;!!;;::,.....,,.. ..,:,.. . ... . . . +!;!fLt!f0; :, ,....,. ., .:itff!!;;;,, . ..:,::;;:::;!!;::::::,,,::;!!iiiii!;,,,,:::::,,,... ,:,:,, .... ,, +!:,:;:,:;, , , .. ,. ,####0:00L0CLCGGiffGiCGCGLGGL0GLGGtLGt:GfC888@888G8LitftiLLLLLft!;:::,,,..,,::,,,,::!!,  +!:,,,,,:!, :. ..,,,.,.,, ,G@@#i;fL8#######::::;ii!;;;;;;;;it!;:,;Liiiiiiiiii!!fLi!!ittifffLLLfii!:,:,;;:::,,:::;,,,,: +t;!::::;!; : .,,,. , .,,::,.,#####CLft:. tC, :L, ,!;,,,....,.,,:;;!!;!!i!;;!!!;::,.. ..,... .:;:;ttti! +t!!iti;;!: . . . ,::. .!iL#i. ;!, . . ... .t;::;:::;;::,,,::::::::,,,,,... .,,,,,:;!!itttti +tfLLfttti; . .. ;t, ,!iiiiiitiittii!!!i!!;!!!;;:::,,:,,,:;!!!!;;;;;;;;;;;  ,;;i!:;::,::::;:.,,, ,!!. i.tt !!ttti: ,..,, ,,. .... .,,::::,:,....:!i:,,,::,,,,,. ..,:,, .  + . ..,;CG!:,,;fi, .,,.. .i!. ;,:8f!ti!,.... ..,. ...:!t: .... :!;. . .:;;:,... . .,... ,.. ... . ......... + ,,;:. .,:;:.:!t;, . ,f;::;;, .,:,;i;!L8f!,. ,;,.,:;;,..;,,:ti ... ....,.,;:,,.... .,,.,,... ...,,,,,.,,..,:;;;.,: +f;;::::... .,,.,,,.. ,L#iLG!... .ittCL8fii::. . ....:,..:,.,::!;, ,;.... . .,,.. ...,,.......,,:,,..,:!;i!;;;::,,.,,,:::; +LCft;.,,.;,...,,,::i::;;!@#t;,:!!,:tif00L;,.. . ,:, ,C0f, ,,. ... .,.....,,,,,,.. ..,!ttt!:,,:,,,,:;;;;;!;,,.;fLi +fGi::,,;:,::!,:G:iGtfG!;f;i8;:!!::!iCGt;,.,,..,. ..... .i0, ,!!f;::,;!:,:;i:,..... .,:!;;;,:..,,,:;!!;:,,.....,!ftLLL!t:,;ti; +f;,:;;ti;;i:!;ti;f0fiiii!!;f@!;;!fGC!:, .,. ., ,,,,,.. ,0t, . ,:CG!!t!!f;,fG:.,,.,,,,.,,,,,:;;::,;;i!!!,,:;:,::!iitCt!::;:;f; +i:;;!Lt;!0i!!!ttff8G!::;tGfi80iLGt;:,.. . ... . ::,. ,,;CiCi;!!;:!;;G;.,,:::,. .,:;;:Lf:;!;:;;;;:;Cfiiti!tiLCfi;!;!;;: +!;tGf!!;t0CCC0@@G#0L!:;:!ifLf0i:::....,,. . .:!,..,,..,::;Gt,;fi!fLi,.::!f:,!tt!!,.,!ft;;!;!tC!:fGGGLfGLLCii!!!ittf::GLLi; +t!iiitfC00#8####G0#Ci;:;!fGL!:,...,,,,.. .,...,:,.,f8t,:!;..:fi;0!.,f;:;!!,.,:tG;::::;!,,;ii;:,::!0@!t0##0C0t!!!!!if:!Lf!;:ifttL +Gf;!LG8###8###@00C##L!;iCf!:,.....,:,,,. .!::!i:,:!C;::;:;;i!:,!..,!,.!;,;:,:!;:...,:::;;;;;i;:!fL;!ifi!!!!!!tfii!;iGti:,:tGCG +!L!tLC0GG80CGLC@CGC##fit;:,,,.,...,,,..,. ..;Ci:,,,.,!8!!fi:,,;. ,,,.,..,,..,,..,:,.,:t!ii!tifGfi!i!;:;!!!!!tCCCffLtiCi!;:!;!tii +!!iL#Ci!!!;;;;t8tGtfCf:,,:;:,:,:,:,:,::,,,,,:;Li:. ,!@ti!:,..:, :C!:, .. .,..:;,,!t!!!!;;;!!!!CLi!iftLL0f!iti;!i;;fi!;;;;;i;f +fffCLfiit!i!f!ft!:;,,,....,..,,,,,,.:LC,!i::i!;8f..!#G:,,,..,:,.,;GiG: ..,..,,,.,::;;i!;ti::!it!tfi;::;;;!!;:,:,,,:::iittit!i;:t +##0CCGGCCGft@fGi:!:,:,,,,,,,,,,,,:,,;8i:,,:!L;;L!:i#C;:;:,:,,;:..,:C:::. .::...:tLifLf;;i;!iLCtfi;::::::::;:,:::;;:;ti!!!;;;!!C +G@8#####@#GLf#0i:;!,:;;;;;;;;;!;:!:.:ii;::;0i,::!0#!:,,:,...,;, ,;... ...,,,,:t0f!!ii!!;;;::;:;t;:,:i;!!!!!!!i!if;iCit;!iiCLif +tL88@000#GG#LC0!.,,,.,:::,,,,,,,:!:,,t0fL@iGL:,!##;, .,,:;. ,.:,,....,,.::,!Gf;,;ttiff;:::;:!fi;;!;!!;!ttti!i!!!!iiiiitttLiL +fC0LCCCG0CCGLff!:;;:,:::,,.,.,. .,!G!;tt8!;GG!C#@!,,;!!!!!!;,. ..,:;,;;:..,,,:;!!i;;;;;;;!::;ti!fCfff!!ii;;;;:;fi!ittfittGfii!ii +C0LC88C###f!tGtittLt;,,......,. .!0;;i!::;CL0#t;:,t@@8@@8@G!;;:,,!,,::.,,,.,ii;iift!!i!t;;!!!;!ii!;;;!!!::i::!ifti!i0t;tfiifGf0 +8#f@#G0LCL!;iCfC!::::,,,,,:,,,,,,.!!iiG:,.!@#8;,,!;G8LfLC0GCC0GLLf!:,..,,::,!L!!Cf!;;fffL;!ft;::t!;:,,:it::;tif@8@f;!ti!!;!fftG# +;iiiifC!;C;,ffiGi. :;;::;;:,:;:!;,:Gf!!!,;8#f;;:;::iL!!!!iLGGLLC08@Gi:,;ti!!tiiif!;;:!ii!!;f;:::!Li;:::;!;:i!ffLfiii!!t!ttGii!!L +,.!:::;::ii:!L!!G,,:::,:!,,:::;;;!!!;!8Ct##f!:!!;:,:::,,:::;!t!!if0888!;f:::::::;;!;:iGtt;:;;;;:iGtiiii!!:;::;!!;;;;!fGtiftti!;! + ,.. .,,.!;,::!,.,:,,,,,!!:!i;!t:!:t##iiL;,,,.,:!:......,,,:;;!!itG8!;;,.,:,:!tGL:;!iii!ti!i;fit;iit;:::;:;t!:;;!i8@LCGGt0ifG + .. . :t, :,,::,..,,,,::,,,:;iLLf!:,::,,::LL!:,,..,,::.,!fi!;ti;0@!,,;,:ttCL:,!tCt!L!;;!ft;::;;;,,;f!;::::;:;ft!!!!iLi;t +i. .,. ;G; ....:..;.,;:i..:i80fi:;!fi;tLtiii;.. . ....,.,:i!t:.,!8t,,;::!!;;!fi;i!;!i!i;ii:,,;t;::!it!::,,,,,,:.,:.,,,:L +L!,. .,. :G; ;..;.,i::L;:,,G8!!0G;!##ffGi!;88: .,,. .,t,,;;!:::;!ti::!i!;ii:tCLt;;!;:,;!i!!!!ii!!:::::!;::,:::::! +itCf:. :ti!;!C!,,:!!:;;:tt;f;,;;i!,;G@!t#f,iG: ,tG:.;LGfi!:,:i: ,t,:!ttt;:;!!;,.,!;i;;;;;::itL;,iL0CLLf;:;:itf!!fi;!!;tCi!! +i!G8L: ,!itffGf!tffLt:ti:!;:!,.;t!!L@0!i0; ,,,..,..:!L@###8iif;:!tiit!::!tCt:!i:,,,;;!;;,:;;;;itt!:!fLtiii:;t:ifCitfit::t!tfCf +!::;:. .....,,;ft,,;;;;;::,,;,;;,:!C@CfLt;:;:;:.:;:...,:!tLLfi:,:#######t:,;it;,!;:,;ftif;;;tC0!;!C:,ifGf!;f!;;!i!::iLi!!!tfffft +:!!!!;:!!;. .;:. .f::L;:i,,;,t!,;GG!;!;;!!:,.,,:;;,...,,:;;;:,,!0######:,:::,:;!;:!i!::,,;CCt:;!;:,,:;;;:!;;:::,,.!0i!:L@##### +######i,:;. :i .;L;;C!:!,:::i;,:i;!;:::::;;!ftit!;!!ifLLLtf;,,::;iti!;,:. .,;!!;,:,,;,,:;!;::;:,,:::,,,,;iitti;,iti;iifLffL# +######0 .!, ;:. :0!;f::!,i;.,, .!::::,.iLfCGCi!!;!itttt!!!!,;!t: ,!:.,,,,,,,,. ,;!;:!!!ii!:!:!f!;;,,!!:;tt,,:::CttLft,:i +#0CLC#i..;. .!i .:G:.:,.,:,... .,,.,::;iii!!::,,:;:;::,,:G!:.!0!:;:,,..;L!;: ...,,,,::::,,,:;;;.,;: .!, ,,::;:;;:,,: +C!::!tL;:, .!!. ,,. .., :::;!!:;tfGGGt!;!!iiiiL;titfi#@!!i8L#@itfC;!i!!;;;;;:::,....,,.. ,,, . . .;,.,.:, .. +i;:::;i08: .!i. ,....,, .:Gf;:;iLL@@CffffftLffttffCCtLttGfiG##LLfLtLtitfC0Gfft!::::;;!;,,. . . .,,,.,. ,, +Li!!!!tG#! .!!. .:;,,, . ,ii;,:00;;;:,,::::,,,,,:::,,,,;f:,:;!;::::::::;!!!;::,.....,,.. ..,:,. . ... .. . +!;!fLt;f0; :, ,...., ., .:itff!!!;;::.., ..::::;;:::;;;;::::::,,,;:;!iiiii!!;,,.,,:::::,,... ,:,:,, .... ,, +!,,:;:,:;, ., ,. ,. .. ,####0:0Lf@0CC00iffGiCGCGLGGC0GLGGtCGt:GLG8008888C0L!ttitLLLLLft!;:::,,,..,,,::,,,:;!!,  +!:,,,,,:!, :. ...,,.,.,, ,G@@#i;ff8#######::::;tt!;;;;;;;;it!;:,!Liiiiiiiiii!!ffi!!ittiffLLLLfi!!:,:,;;:;:,,:::;,,,,: +t!!::::!!; : .,,,. , .,,::,.,#####ffti:. .CC. :t. ,!;,,.....,.,,:;;!!;!!i!;;;!!;::,.. ..,... .:!:;ttti! +t!!iti;;!: . . . ,:, .;!tC; .::. . , .. ,t;::::,,;;::,,,::::::::,,,,,... .,,,,,:;!!!tttt! +tfLLfttti; .. .. ;i. ,!iiiiiitiittii!!!i!!;!!!;::::,,,,,,:;!i!!;;;;;;;;;;;  ,;;i!;;::,::::;:.,,, ,!!. i.tt !!ttti: ,..,, ,,. .... .,,::::,:,....,!i:,,,::,,,,,. ..,:,, .  + . ..:;C0i:,,!fi:..:,.. .i!. ;,:8f!ti!,.... ..,. ...:!t: .... :!;. . .:;;:,... .. .,... ,,. ... . ......... + ,:;:...,::;:.:!t!, . ,f;::;;, .,,,;i;!C8f!,. ,;,.,:;;,..;:,,ti ... ......,;:,,.... .,,.,,... ...,,,,,.,,..,::;;.,: +t;;:::;... .,,.,,,.. .,L#iLG!... .ittCL8fii::. . ....:,..:,.,::!;, ,;... . .,,.. ....,,.......,,:,,..,;!;i!;;;::,,.,,,:::; +fCft;.,,.:,...,,:;:!::;;!8#t;::!!,:tif00L;,.. . ,:, ,C0f, ,,. ... .,.....,,,,,,.. ..,!ttt!:,,:,,,,:;;;;;!;,,.:fLi +fGi::,,;,,:!!,:G;fGtfG!;t;i8;:!!::!iCGt;,.,,..,. ..... .!0, .!!t;::,;!:,:;i:,..... .,:!;;;,:..,,,:;!!;:,,.....,!ftLLL!t:,;ti; +L;,:;!ti;;i:!:itiC@Cttit!!;f@!;;!fGC!:, .,. ,, ,:,,,. ,0f: . ,:CG!!t!!L;,fG:.,,.,,,,.,,,,,:;;::,;;i!!!,,:;:,::!!itCt!::;:;f; +i:;;!Lt;!0i!!!ftfL@G!::;tGfi80iLGt;:,... . ... . :;,. ,,;CiCi;;!;:!;;G;.,,:::,. .,;;;;Lf:;!;:;;;;:;Cfiiti!tiLCfi;;;!;;, +!;tCf!!!t0CCC0@#G#0L!:::;itLf0i:;:....,,. . .:!,..,,..,::;Gt,;fi!fLi,.::!f:,!tt!!,.,!ft;;!;!tC!:fGGGLfGLLCii!!!itif::GLLi! +t;!iifLCGC#8####00#Ci;;;!fGL!:,..,,,,,.. .,,..,:,.,f8t,:!;..,tt;0!.,f;:;!!,.,:tG;::::;!,,;ii;::::!0@!t0##0C0t!!!!!if:!Lf!;:ifttL +Gt;!C0##8@0###@00C##L!;iCf!:,.....,:,,,. .!::!!:,:!C;::;:;:ii:,!..,!,.!;,;:,:!;:...,:::;;;;!i;:!LL;!iti!!!!!!tfii!;iGti:,;tGCG +!f!fLCGC080CCLL@CGC##fit;:,,,.,...,,,..,. ..;Ci:,,,.,!8!!fi:,,!. ,,,.,..,,,.,,,.,:,.,:t!ii!tifGfi!i!;:;!!!!!tCCCfLLtiCi!;:!;!tii +!ifG#fi!!i!;;;t8tGtfCf:,,:;:,:,:,:,:,::,,,,,:;Lt:. ,!@ti!:,..:, :G!:: .. .,..:;,,!t!!!!;;;!!!!Cfi!iftLL0f!iti;!i;;fi!;;;;;i;f +fLC@GLiit!i!f!ft!;;,,,....,.,,,,,,,.:LC,!i::i;;8f..!#G:,,,..,::.,;GiG;. .,..,,,.,::;;i!;ii::!it!tfi;::;;;!!;:,:,,,:,:iittit!i;:t +##0C000CCGft@f0i:!:,:,,,,,,,,,,,,:,,;8i:,,:!L;;L!:i#C;:;:,:,,;:..,:G:::. .::...:tLifLf;;i;!iLCtfi;::::::::;:,:::;;:;ti!!!;;;!!C +G@8@####@#GLf#0i:;!,:;;;;;;;;;!;:!:.:ii;::;0i:::!0#!:,,:,.,.,;, ,!,......,,,,:t0f!!ii!!;;;;;;:!t;:,:i;!!!!!!!i!if;iCit;!iiCLif +tL088000#GG#LG0!.,,,,,:::,,,,,,,:!:,,t0fL@iGL:,!##;, .,,:;. , :,,....,,.::,!Gf;,;tfiff;:::;:!fi;;!;!;;!ttti!i!!!!iiiiitttLiL +fC0LCCCG0CCGLff!:;;:,,:;,,.,.,. .,!G!;tt8!;GG!L#@!,,;!!!!!!;,. ..,,!,;;:..,,,:;!!i;;;;;;;!::;ti!fCfff!!ii;;;;:;fi!!ttfittGfii!ii +C0LC88C###f!tGtittLt;,,......,. .!0;;i!::;CL0#t;:,i@@8@@88G!;;:,,!:,::.,,,.,ii;iift!!i!t;:!!!;!ii!;;;!!;::i::!ifti;i0t;tLiifCf0 +0#t##GGLCL!;iCfC!::::,,,,,:,,,,,,.!!iiG:,.!@#8;,,!:G8LfLC0GCC0GLft!:,..,,::,!L!iCf!:;fLfL;!ft;::t!;:,,:ii::;tif@8@f;!fi!!;!fftG# +;iiiifC;;G;,ffiGi. :;;::;;:,:;:!;,:Gf!!!,;@#f!;:;::iL!;;!iC0GLLC088Gi:,;ii!!ti!if!;::iti!!;f;:::!L!;:::;!;:i!ffffiii!!t!ttGii!!L +,.;:::;;:ii,!L!!G,,:::,:!,,:::;;;!!!;!8Ct##f!:!!;:.:::,,,:;!it!!tL0808!;t;::::::!;!;:iGtt::;;;;:iGiiiii!!:;::;!!;;;;!fGtiftti!;! + ,.. ..,.!;,::!,.,:,,,,,!!:ii;!t:!:t##iiL:,,,.,:;:......,,,:;;!!!tG8!;;:.,:,:!fGL:;!iii!ti!i;fit;iii;:::;:;t!:;;;i0@LCGGt0ifG + .. :t, :,,::,..,,,,::,,,:;iCLf!:,::,,::LLi:,,..,::,.,!fi;;tt;0@i,,;,:ttCL:,!tCt!L!;;!ft;::;;;,,;f!;::::;,;ft!!!!iLi;t +i. .,. ;G; ....:..;.,;:i..:i80fi:;!fi;iLtiii;.. ....,...,;i!t:.,!8t:,;::!!;;!fi;i!;!i!i;ii:,,;i;::!it!::,,,,,,:,,:.,,,:f +L!,. .,. :G; ;..;.,i::L;:,:G8!!0G:!@#CiGi!;G8; .,,. .,t,,;;!;::;!ti::!i!;it:tCLt;;!;:,;!i!!!!ii!!:::::!;::,:::,:! +itCf:. :ti!;!C!,,:!!:;;:tt;f;,;;i!,;G#!i#L:!C: .!G: :LGLi!;,:!: ,f,,;ttt;:;!!;,,,!;i;;;;;;:itL;,iL0CLLf;:;:itf!!fi;!!;fLi!! +i!G8L: ,!ttffGf!ttfLt:ti:!;:!,.;t!!f@8!i0i ,,,..,..,!f8###8tif;:!ttit!::!fGf:;i:,,,;!!;;,:;!;;itt!:!fLf!ii:;t:ifCitfit::t!tfCf +!::;;. ....,,,;fi,,;;;;:::,,;,;;,:!C@CfLf!;;:;;,:;:...,:!ifLfi:,,@######t:,;it!,!;:,;ftif;;;tC0!;!C:,ifGf!;f!;;!i!:,iLi!!!tfffft +:!!!!;:!!;. .;:. .f::L;:i,,;,t!,;GG!;!;;!!:,,,,:;;,...,,:;;;:,,!C@#####:.,::,:;!;:!i;;:,,;GGf:;!;:,,:;;;:!;;:::,,.!0i!;L@##### +######i,:;, :i .:L;;C!:!,:::i;,:i;i;:::::;;!ftiti:!!ifLLLff!,,::;iti!;,:. .,;!!;,::,;,,;;!;::;:,,:::,,,,;iitti;,iti;iifLffL# +######0 .!, ;:. :0!;f::!,i;.:, .!:::::,!LfCCLi!!;;iittt!!!!,;it; .;;.,,,,,,,,. ,;!;;!!!ii!:!,!f!;;,,!!:;it,,:::CttLft,:t +#0CLC#i..;. .!i .:G:.:,.,:,... .:,,,::;!ii!;:,,,:::;,:,,:Ci:,!0!:;:,,..,L!;: ..,,,,,,:::,,,:;;;.,;: .;, ,,::;:;;,,,: +C!::!tL;:, .!!. ,,. .., :::!!!:;ffGG0f!;i!itiiL!titLi@@!!i0f##iitG;;!!;;;;;;:::,....,,.. ,,, . . .;,.,.:, .. +i;:::;i08: .!i. ,....,, .:GL;:;iLL8#GfffLffLffftffCCtLttGfit##GCfLtffiifLGGfft!::::;;!;,,. . . .,,,.,. ,, +Lii!!!iG#! .!!. .:;,,, . ,ii;,,G0;;!:,,:::::,,,::::,,,.:f;.,:!!::::::::;;!!;::,.....,,.. ..,:,.. . .... .. . +!;!fLt;f0: :, ,...., ., .:itff!!t;:::..,...::::;;::::;;;::::::,,::;!!!iiii!;:,..,,:::::,,... . ,:::,, .... ,, +!,,:;:,:;, ., , ,. .. ,####0:Ltt@8CC0#ttfGiCGCGLGGC0GLGGtLGt:GLG8GG8888C0f!ititLLLCLfi!;:::,,,..,,:::,,,:;!!,  +!:,,,,,:!, :. ...,,.,.,, ,G@@#i;CL8#######::::;tt!;;;;;;;;if!::,!Li!!!!ii!i!!!ff!!!ittiffLLLLfi!!:,:,;;:;:,,:::;,,,,: +t!!::::;!; : .,,,. , .,,::,.,#####ftt!,. .LG, :i. ,!;,,.....,.,:::;!!:;!i!;;!!!;::,.. ..,... .;!:;ttti! +t!!iti;;!: . . . ,:, .;!it: .::. . .: .. ,t;::::,,;;::,,,::::::::,,,,,... .,,,,,:;!!itttt! +tfLLfttti; .. .. ;i. ,!iiiiiitiittii!!!i!!;!!!;;:::,,:,,,:;!i!!;;;;;;;;;;:  .,;;ti;!;;:::::;;,:,, ,!!. !.ti !!ttti: ,..,, ., .... .,,::::,:,....,!i:,,,,:,,,,,. ..,:,, .  + .. ..:!C0t:,:!fi:.,:,.. .i!. ;,:8t!ii!,.... ..,. ...:;t: .. . ;!:. .:;;:,... . .,.. .,. .. . ....... +..,;!:...,::!;.:!t;,.. ,t;::;;, .,,,;i;!L8f!,. ,;,..:;;, .;:,,ti ... ......,;:,,,... .,,.,,... ...,,,,,.,,..,,:;;.,: +t;;;;;;,....,,,,,,,,. .:L#iLG!... .ittCL8fii::. .... .:,..,:..::;;, ,;. , . .,:... .,,.......,,,,,..,;!;i!;;!::,,,,,,::;; +LGLt;,,,,:,,,,,::;;!::;;!@#t;,:!!.:tif00L;,.. . ,,, ,L0f, ,.. ... .,,,. .,,,,,,.. ..,!ttt;,,,:,,,,:;;;;;!;,,.;fLi +fGi;:,:;,,:i!,;G!L0LfG!;f;i8;:!!::!iCGt;,.,,.... ..... .;0: .;!t;::,;!:,,;i:,.... ...:;:;;,:..,:,:;!!;:,,.....,iffLLL!t:,;ti; +L;,;:!ti;;!;!:tttG#0fttt!!!f@!;;!fGC!:, .,. ., ,:,,,. ,0L: ..,:CGi!t!!f;,LG:,,,.,,,,.,,,,,:;;::,:!i!!!,,:::,::!!itCt!::;:;f; +i;;;!ft;!8i!!iffLL8C!::;tGfi80iLGt;:,... . ... . :!:. ,,;CiCi;;!;:!;;G;.,,:::,. .,:;;:Lf:;!;:;;;;:;Cfiit!!tiLCfi!!;!;;, +!!tCf!!!f8GGG0##0#0f!:::;itLf0i::,....,,. . .:!,..,,...,;!Gf,;fi;ffi,.::if:,!tt!!,.,!ft:;!;!tC!:tGGGLfGLLC!i!!!itif::GLLi; +t!ittfLGGG#8####08#Ci;:;!fGL!:,...,,,,.. .,,..,:,.,f8t,:!;..,tf!0!.,f;:;!!,.,:tG;::::;;,,;ii;,,::!0@!t0##0CGf!!!!!if:!Lf!;:ifttL +Gi;!LC8#@#0###@08C##L!;iCf!:,.....,,:,,.. .!:,!!:,:!C;::::;;it;,!..,!,.!;,;:,:!;,...,:::;;;;;i;:!LL!!iti!!!!!!tfii!;iGti:,;tGCG +iLfCCCCG@00CCLL@CGC##fit;:,,,.,...,,,... ..;Ci:,,,.,!0!!fi:.,!. ,,,.,..,,..,,,.,;,.,:t!ii!tifGfi!i!;:;!!!!!fCCCffLtiCi!;:!;!tii +ttG##Lfiii!!;;t8tGtfCf:,,:;:,:,:,:,:,::,,,,,:;Li:. ,!@ii!:,..:,. :G!::. .. .,..:!,,!t!!!!;;;!!!!GLi!iftLL0f!iti;!i;;fi!;;;;;i;f +LLG@GLiii!i!L!ft!;;,,,....,..,,,,,,.:LC,!i:,i!;8f..!#G:,,,...,:.,;0iG!...,......,::;;i!;ii::!!t!tfi;::;;;!!;::,,,,:,:iitttt!i;;t +##GCG00CCCft@f0i:;,,,,,,,.,,,,,,,:,,:0i:,,:!L;;L!:i#C;:;:,,,.:;,.,;G;::. .:;...:tLifLf!;i;!iLCtfi;::::::::;:,:::;;:;ti;!!;;!!!C +G@8@####@#GLf#0i,;!,:;;;:;;;;;!;:!:.:ii:::;0i,::!0#!,,,:....,::. ,!,. ..,,,,:t0f!!ii!!;;!;;;:;t;:,:i;!!!!!!!i!if:!Cit;!iiCLif +tL088000#GG#fC0!.,,,,,:;;,,,,,,,:!:,,t0tL8iGL:,!##;, .,,:;. , ,,,....,,.::,!Gf;,;ttiff;:::::!fi;;!;!;;!ttti!i!!!!iiiiitttLiL +fG0LCCCG0CLGfff!:;;:,,,;:,.,.,. .,!G!;tt8!;GG!L#@!,,:!!!!!!;,. ...,!,;;:..,,,:;!!i;;;;;:;!::;ti!fCfff!;ii;;;;:;fi!!tiLittGfii!ii +C0LC88L###t;tCtittLt;,.......,. .i0;;i!::;CL0#t;:,!8@@@@08G!;;:,.;;,::.,,..,ii;iift!!i!t;;!!;;!ii!;;!!!;::i::!ifti;i0t;tfiifCf0 +G#t@#CCLLf!:iCfC!::::,,,.,:.,,,,,.!!iiC:,.!@#8;,,!:L@CfLC0GCC00Lft!:,..,,::,!L!!Cf!:;fffL;!ft;::i!;:.,:ti::;tif@8@f;!ti!!;!fftG# +;!!!itL;;G;,ffiG!. :;;;:;;:,:;:!;,:Gf!!!,;8#f!;:;::!C!;;!iC0GLLCG88Gi:,:ii!iiiiif!;::iii!;;f;:::!L!;:::;!;:!!ffLfiii!!i!tfGii!!L +,.:,,:!!:it,;L!!G,,::;,,;,,:::;;;!!!;!8Ct##f!:!!;,.,;:,,,:;!tt!!iL0800!:t!:!::::;;!;:iCtt::;;;;:iGtiiii!!:;::;!!;;;;!fGtiftti!;! + ,. ..,,!;,::!,.,:,,,.,!!;ii;!t:!:t##iiL:,,,.,:;;,.....,,:::;!!!iL8i;;:,,:,:!fGL:;!iii!ti!i;fit!tii;:::;:;t!:;;!i08LCGGt0ifG + .. :i, :,,,:,..,,,,::,,,:;iCff!:.,,,,::fCt:,,..,::,.,!fi;;!t:t@f:,;,:ttCf:,!tCt!L!;;!ft;::;;:,,:f;:::::;:;ft!;!!iLi;t +i. ... :G; ....:..;.,;:i..:i80fi:;!ti!!Lfiii!,. .,,...,;i!!:..:8L;:;::!!;;!fi;i!;!i!i;ii:,,!i;:,!it!::,,,,,,,,,:.,,,:f +f!,. .,. :G; ; .;.,i::L;:,:G8!!0G:;@#8iGt!;t8f...,. ...,i,.;;!;::;!t!::!i;;ii:tCLt;;!;::;ii!!!!ii!!:::::!;::,:::,,! +iiCf:. :ti!;!C!,,:!!:;;:tt;f;,;;i!,;0#!i#G;;Gi ;G;.,tCCi!;:,;; .i,,!fff;:;!!;,.,!;i;;;;;::itL;,iL0Gfff::;:!tf!!fi!i!;fLi!! +i!G8L: ,;itffGf!ttfLt:ti:!;:;,.;ti!f@@!i0C.,,,..,,..;t0###@L!t;:;ttii!::;fGt:!i:,,,;;!;;,:;!;;itt!:;fLt!ii:;i:ifCitfit::t!tfCf +!::;:. .....,,;fi,,;;;;:,:,,;,;:,:!C@CfLC!;!;;;,,!;, ..:;ifLLi;,,0######G;,;tt;,;;:,;ftif;;;tG0i;iC:,ifGt;;f!;;;!!::iLi!!!tfffft +:!!!!;:!!: .;:. .f:,L;:i,,;,t!,!GG!:i;;!i;:,,,:;;:...,,:;;;:,,;L88####;.,::,:;!;:!i;;:,.;GGf:;!;:,,:;;::;;;:::,,.!Gi!:L@##### +######i,::. :i .:L;;C!:!,:::i;,:i;i;::::::;!ft!tt;;!!tfLLfft,,,:;!ti!;,,: .,;;!;,::,;,,:;!;::::,,:::,.,,;iitti!,ifi;iifLffL@ +######0..!. ;:. :0!;f::!,i;.,, .!:::::.:LfLLLii!!;!ittfi;!i;:!!!. ,;..,,,,,,,. ,;!;:!!!ii!:!:!f!;;.,!!:;it,,:::CttLft,:i +#0CLC#!..;. .!i. .:G:.:,.,,,... .,,.,:::!!i!;::,,,::;:::,,!C;,;L!::,.,...fi;: ...,,,,::::,,,:;;;..;: .;, ,,::;:;;:,,: +L!::!tL;:, .!!. .,. .., :,:!!!;!ffCG0Li;!!tiiiL;titL!C@iii0Lf#t!tC;;!!;;;;;;;::,....,,.. ,,, . . .;,.,.,, .. +i;:::;i08: .!i. ,....., .:0C;:;iLf8#8LfffffLffttftLCtttiCCt!L@0GffittiitfGGfft!::::;!!;,,. . .,,,.,. ,, +Lti!!;iG#! .!!. .;;.,. . ,it;,,LG;;!::,,::,::,,,,:::,,.:t!,.,:!;:::::::;;!;;::,.....,,.. ..,:,.. . ... . . . +!;;fLt;tG: :, ,...., ., .:itff!;i!;::,.:,,.,,::;;::::;;;;:::::,,:;;!!!!ii!!;:,..,,:::::,.... ,::,,, ... ,, +!,,:;:,::, ., , .. .. ,####8,;Lt88CCG#CitGtCGCGLGCt0GLG0tLGf:GCC0CC8088C0t;iiiifLLCLfi!;:::,,,..,,,,,,,,::!;,  +!:,,,,,,!, :. ...,,.,.,, ,G@@#i:fL0#######:,::;it!;;::;;;;iL!::,;Li!!!!!!!i!!!ff!!!ittitffLLLfii!:,:,;;:::,,:::;,,,.: +i;!::::;!; : .,,,. , .,,::,..#####ftt!:. iC; ,i, .!;,,.......,,::;!!:;!i!;;;!!;::,.. ...... .:!:;ttii! +i!!iti;;!: . . . .:, .:!!t;. ,:, . .;. ,t;::::,,;;::,,,::::,:::,,,,,... .,,,,,:;!!iitit! +tfLLfttti; . .. :i, ,!iiii!itiiitii!!!i!!;!!!;::::,,,,,,:;!!!!;;;;;;;;;;:  ..:;!!f;;:,:;:,,:;,:,. ,:!, i.ti.iittti, ,..., ,, .,,, .,,:::;,,,....,:!:...::,,,,.. ...,,,  + .,,...:tCL:,:tCt;,::.,,, :!. .;,;8f!i!;,..., ..,. ...:;t:. . . .;,. ,:;;:,. . ..... . ........,...., +,,,;;,...,:::,;!i!,... ;0!:;!: .,:::!f;;C8t;. :;,.,;;:, .;,,,!f;,.. ., ....;:..,,.. ...,:.,,... ..,,,,.,.,::,:;;;!,.,; +t::,,:,,,,.,,,,,,,,, ..;0#t0f,....;ftfLC8i!;:,. .. .:...,,..::;;:!,!:.. .. ,:..,.,...,..,,....,,:,..,,;!!!!;::,.,,,,::::;;; +Lt;:.,,::;:::::;;!i;;;;:i##i;,;i;.:!tL0Gi:.. . . .,, .fGL, ,,,. .,.. ......,,,,...:, .,:!tti;,,,:,,,,,:;::;;;:!,,fCfi +Li:,::;::;ti:;Cit8GC0C;!::G8!;!::;!tCC!:..,,..,. ..... .;0: .:;!!::;t;:::i!, .. .,;!;::..,.,,:;!!!:::,.....,!fftLL!!::,ii;: +t,,:;ti;!f!;;iLif8#Gt!ii!;!88!;;iCGf;:. .,. .. ,,,::,. ,0L: .. ,GC;;!:tf:;G;,,, ..,,,,,,,;i:::!if!;;,:;;;:;;!iiiCf!;:,,:t;: +i;;;ti;;fGfiifLLfG#t:::!tLit@CiLL!;:. . ..... .;;,, ::t;!G!:;;::t:!C:.,::,,..,,!i!:tf:;!;;!ii!!;CGffLf!itLCtf;;;!!::, +itfL!iitC00GG@#G0#Ct;:;;!iftfC;::,.,..., .. . :i;. .,:,.,:!!0t,;L!tft:.,;!G!.;ii!!:,,;ft!;!;;iG!:f##@GLCftLi!!!!!ttt;:GLff;! +f!iitL800@8####8G#8f!;;!tCCt;,,..,,,,....,....,;,.;G0:.:;,,,,fCiG;.i;;;!;:.,,;Ci,,,:::,,;;;;:;::;f@i!C8#GCGC;;;;i!t:;CL!;:!fttLC +CiifCC@###0##@0G0C##t!!LL!;:......,:,,,.. ,i:,!!:,;it;;:;;!,;f!:,..!!:!!,::,:;:,....,::;;;;!tt:;if;:;ii!;itiitLit!;!Gtt::!tGCfG +0C0GCLCGGCCLLL8fffG##tt!;:,,,,,,,.,,,,,. ,iC;,,,,,;GCiLt;,.,!,.::,,,,,,,..,,.,;,..:t!!i!i!!fti!!;:,:;i!!iC00GfLCf;Ci!;::;!ii!t +0G##Ltii!;;;;t@i;GiCt!:,::;::;:;,;,::i:.:,,,:!0;,.,!#G;;:,,..,,.,Lf;t, ....,,.,;,.;i!!!!;:;;!!!Cf!::!!ttLf!ii!;;!;;it!;;;;;i:if +0GGCLti!i!!!if8i;;;,,.....,...,.,..,i@!;ti:!t:t0,.;##!,,,....,:,,iifC: ,..,,,.,:;;;!i!tf:,itLtfLi;:,:::;;;:,,,,,;;;t!iitt!!;:;f +##CC880CG0tt8L@!!;,::::,.....,,.,. ,88;,::!L!:!!:;##!:!:.... :;,,,t;,:. .,:..,:LGLLft!!!;i!iLitt;:,::::::::::::;!;!ft;!!!!!!;tG +8@0#@###@#CtL#f;:!,,:;;::,::::;:;;.,iLt;!:CL:..,!#0;,.,. .,;, ,:, .,..,,.:t0f!!!!;!!;:::::;f;:,:i;;!ii!iiiitL!!Cit!itiCC!!C +LC800G008C8GL@i,.,...,,,;i,,,,,,;;::;0GG@!fG;,:t#i,. ....:,.,,;,.,,..:,::,:Cf;,:i!:;t;,:;!:!Li;;!;!;;;iiiti!!i!iititffiit!;L +GGtL8CCGCLLLLG!::!;:,,,,::,... ..:Gf!!t0i:C8!i##;,.,,:!!;;:,, .::!::;:,..,,:;;!!;;;;;::;:::ii;tLttti!i!;;;::;i;;!ftCtit0fii!iif +GttG#C0##G!;LLiitff!:............:t!!G!,,;GLf#@!:,,:f08@@GCL!;;;::;,,,..,..,ti;itfi!itif;;!!;;!ii!;:;;!;;:i;;!itti!iGf;it!tfCf8# +0ti#GLLfLt;;!iif!::::,,,,,,.,.,:,:;!!i;: ;08@i;:!i,!@GfLG0GCC08CLL!:, .,,,,;L!!CL!:;ffit!!ft:::!!;:,,,!f:;;i!t88@C;;ii!!;!ttiL#G +;:;!ifi:!G,!t:!0;..;;;;:!;,::::!;;tt;ii;:f#G!::;;:,;Ci;;;iL0GCLCG8@8i;::i;;f!;;t!;;:!i!;!;i;:;:!Ci;;;;!!;;tifftftiii!t!fL0i!;!if + .:,,:i::i!;C;:fC,,,::,:;,::::!!ii;:;8#f@#f!::::,..:!::,,::!tfi!tfG@0Gf!i;:;:,:!!!!:iGii;;;;;;;iGfttffti:;;:;!;;!;;!f0ftLtti!;!i +,. ..,:L:,:;,.,,.....;t!!i!:t!::i##fi!::,..,,:i!:.,...,:::;:;!!if8C;;;:,,:ifGG;:!iitiLfififti;!!!!:::i:;t!:;;!!0@CCG0iGti0L +., ...;:..:,,,., .,::,,,,::;iCCtft..,,::;fiff;,,,..:::..:ti;;!f;;@8;;,,iifL;:!tLf!t!!!itf!:.:f;;,:t!;;::;;::!i!;!;!i!!i! +, .. !L, .. .: .:,i,,!.,;8@8i;;!!!!ttLCiiii;. ..,,...,:it!i, ,CG;:,:!!;:;ft!i!;;itL!;!:,.:!:,,:;ti;::,,,,,,.,,..,,!Li +t;, ,,, ;G: .: .:.,i:;t::,!8Cif8;,L0##ifCi!;88: .,,. ...,;!.:!i!::;tt!:;!!;tf:!ft!;;!;:,:;!!;!!ii!i;;;;;i;::,:;;:::! +iG0!,. itti:iL!,,;t;:!:;L!:t::;!!:;0@!;GG@i,LG, ,CG:.!LCt!!:,,i, ,!,t00i:;!!:,.,i;;:::::::itf!,;tGLfLL;;!;!tLtifi!;;:fG!:;; +iC0Gi ,!ittfGiitftL!:t;:!,:;.,ft!t00ti8LG:.:,,.,,,.:iL@###0iti::itiii;!iGL;!i:,,:!ii;;,;!ii!!if!:;tLtiii;!L:ifL!tLit;:t!;;tif +:::;,. ... .,,!C!.:;;:!:::,,:.i,,;L8f!tL0t!:;:;,.!!, ..,;!tLLf!,.:#######i:;i!,;!;,;CGtL!;:L80i;!C;,!tCfi;L!:,,,:,.!Ct!i!CLftff! +iitii;:!!. ,t: ;L::C:;i,.::L:,fG!:!!;;:i!:::;;;;;,...,:;;;;:.,iG8####G,,::,:;;,:!!!;:,,ii!::!;:,,:::::::::,:,,.!Gi!:t@###### +#####8;,!, ,t; ,if;!C;;;,:::i,,,!LC:::::::iCL!!ff!;!!ifLLLff:.,::!i!!!::;. ::,,.,;;i!,:,,,,:::,,:::,..,!titff;,it!i!!fLfftL8 +######; ,!. ,!: .!0!;t:;:,f,., ,Gi::::,,iLftii!i!;!itttt!!!;,;it: .;,..,,::, ,,:;;!!:!i!:;,:t!;!,,!!:;ii,.,,:LiifLL;!:; +#LttGC: .;. ,f: ,fG,.:.,,,. .. ,:;,,:::!ii!;,,,,,::;:::,.:0!,,!G;::,, iLi: ..,,,.,,,,...,:::..:, .;, ,,:,;:;;:,.,: +f;::;fi;:. :f: .,,. .,, :;t;;!;iLLL8@0L;!;tiiiL;tttL;i@Li;L0t#8iif::;!!;;;;;:::,,..,,,... ... ;:.:,;: ,., +i;;::;f#L, ,t; .,..,.,. .t0L!::iLtG@@CtffffLffftfffCftf!fGf!i@#0Ct!!iiitLCLiit:,,,:;!!:::, .. , ..,... . +fti!;!f#@: ,i: .,;:,, . .:i!:,,fC;;!;,,,::,:::,,,::::,.,:t:.,:!;:,,:::;;;!;::,. ........ .,:,,,... ..... .. +!;!Lt;!fL, .!. ,...., , . ,!fff!::f;,::.,::.,,::;:::::::;;::,,:,,:i!!!!!iii!;:,,,,::::::,,,.. .:,,,,....,. ..  +!,,::,,::, ,. , .,.. .. ,####8.;0tt08CG##L!CfGGCGLGC!GGfG0tfCf:GLfCCL0GG0f0fiti!tLCLLfffi;;::,,,.,,,,,,,::;!!; ., +!:,,,,:;i. : ,.,,,...,, ,G@@#t:i@G#######@:,::!ti!;:::;:;!L!::,:t!;!;!!!!!!!if!;!!!iiitfLLCLt!;,.,,;;,:,.,:;;;:,::;: +ti;::::;!, : .,.,. , ,,,,:,..G####Liti!,. .CC. .!: .;;,,....,,,,,::;!,,:::::;;;;:,... .,,,...,it!!tttt!; +ti!tt!:;i, . . . .,, .:;;i!. .::. ..!: .i;:::,:!!!;:,,,:::,,,,,,,,,.... .:;:::::;;;;!!;!!! +tfLLtttti: . .. . .!: .iiti!iftiittiiiii!!!i!!;;::::::::::;!i!!;;;!;;;;;;::  ..:;!!L::,,:;:,.:;,:,. ,:!, i.ti.iittti, ,..., ., ,,. .,,::,;,,,....:;!:...::,,,,......,,,  +. .,,...,tCL:,,tCt;.:,.,,, ;!. .!,;8t!i!;,..., .,,. ...:;t;. . .;:. ,:;;:, ... ..... . . .......,...., +:,:!!,...,,:;,;;!!,... ;0!:;!: .,:::!f;;C8t;. ,:,.,;;;, .!:,,;f.... ., ....::,.,,.. ...,,.,,... ...,,,,....,,,::;;!..,; +t;::::,,,,..,,,,,,,,..,;0#t0f.....;LtfLC8ii;::. ....:...,,..::;;:..!: . .. ,,....,....,,,,....,,,,..,:;!;!!;::,.,,,,:::::;; +Li;;,,:::;:,,::;;!i;!;;:i##t;,;i;.:!tL0Gi;,. . . .:; .iGC!,,,,. .,.. ......,,,,...:, .::!tti;,,,:,,,,,:;::;;;:!,,fLti +Li:,::;;:;ii;!Cit8GC0C;!::G8!;!::;!tGC!:,.,,..,. ..... .;8i :;!f;:;t;::;i!, .. .:;i;::..,.,,:;!!!:::,.....,!fftLL!!:,,ii!: +i,,:;ti;!f!;;iftf@#Gt!ii!;!88!;;iCGf;:. .,. ,. ,,,::,. .:0G;... :G0;;!:tf:;G;,,, ..,,,,,,,;i:::!if!;;,:;;;:;;!iiiCf!;,,,:t:: +i;;;ii!;L0fttLLLLC@t:::!tLit@CiCL!;:, .. ..... .;!:, ,:i;C@!:;;::t:!C:.,::,,..,,!i!:tf:;!;;!ii!!;CGffLf!itfCtf;;;!!::, +itffittfL0@GG@#G0#Ci;:;;!ifffC;::,.,.,,, .. . :i;. .,:.,,:!;Gf:;f;tft:.,;!G!.;ii!!:,,;ft!;!;;iG!:f##@GCCLtLi!!!!!tti;:GLff;! +fittLG0G08@####8G#8f!;;!tCCi;,,..,,,,,...,....,:,.;G0:.:!,,,,tG!f!,i;:;!;:.,,;Ci,,::::,,;;;;:;::;f@i!C8#GLGC;;;;iit:;CL!;:!fttLC +CttL00G###0##@0G0C##f!!LL!;:......,:::,.. ,i:,!!:,;it;;;;;!:;f;,,.,!!:!i,::,:;:,....,::;;;;!tt:;if;:;ii!;iiiitLit!;!Gtt:,!tGGLG +8G#GLCGGGCCLLL8fffG##tt!;:,,,,,,,.,,:,,. ,iC;,,,:,;GCiLt;,.,!,.::,,:,,,,..,,.,;,..:ti!i!i!!fti!!;:,:;i!!iC00CfLLf;Ci!;::;!ii!t +08#Gftii!;;;;t@i;GiCt!:,:;;::::;,;,::i:.:,,,:!0;,.,!#G;;:,,.,,:.,Lf;t, ....,,.,;,.;i!!!!;;;;!!!CL!::!!ttff!ii!;;!;;ii!;;;;;i:if +0GCfti!!!!!!!f8i;;;,,....,,.,.,,,,.,i@!;tt:!t:t0,.;##!,,.....,:,,iifC: ...,,,.,:;;;!i!tf:,itLtffi;:,:::;;;:,,,,,;;;i!iitt!!;:;f +##CC@@0CG0tt8L@i!;,::::,.....,,,:,.,88;,::!L!,;!:;##!:!:.....,!,.,t;,;. .,:..,:LGLfft!!;;i!iLitt;:,::::::;:::::;;;!fi;!!!!!!;tG +8@0#@#####GtL#f;:!,,:;;:::::::;:;:.,iLt;!:CL:..,!#0;,.,. ,;, .:, ....,,.:t0f!!!!;!;;:::::;f;:,:t;;!iiiii!itL!!Cit!itiCC!!C +LC800G0G8C8GL@i,.,...,,,,t!,,,,,:;::;0GG@!fC;,:t#i:, ... ,:,.,;,.,,..:,::,;Ct;,:i!:;t;,:;!:!Li;;!!!;;;iiiti!!i!iititffiit!;L +GGtL8CCGCfLLLGi::!;:,,,,,:,......;Gf!!t0i:C8!i##;,.,,:;!!;::,. .:,!::;:,.,,,:;;!!;;;;;::;:::i!;tLftii!i!;;;:,;i;;!ffCtit0fii!iif +GttG#C8##C;;LLiitfL!:,......... .:t;;G!,:;0Lf#@!:,::iG8@#GCCi;;;::;,,,..,..,ii;itfi;ttif;;!!;!!ii!;:;;!;;:i;:!itti!iGf;it!tfCf8# +0ii#GLLfLt;;!iif!::::,,,,,,.,.,,,:;!!i;: ;08@i;:!i;;88LLG8GCC08GLCi:, .,,,,;L!!CL!:;tf!t!!ft;::!!;:.,,!f:;;i!t88@C;;ii!!;!ttiL#G +::;;!fi:!0,!t:!0;..;;;;:!;,::::!;:tt;!!;:f#G!;:!;;;;Lt;;;!LG0CLCG0@8i;::!;;fi;;t!;;:!i!;!;i;:;:!Ci;;;;!!;;tifftftii!!t!fL0i!;!if +....,:i,:i!:C;:fC,,,::,:;,::::!!i!!:;8#f@#t!::::,.,:;;:,,::;iLt!ifG80CC!;:,:;,:!!!!:iGti!;;;;;;iGfttffti;;;:;!;;!;;!f0ftLtti!;!i +.. ...:L:,:;:.,,.....;i;!i!:t!::i##fi!,:...,.,iL;,,,..,:::::;!!!tG0;:::,::ifGG;:!iittLfififti!!!!!:::i:;t!:;;!!0@CCGGtGti0L + , ..,;:..:,.,,, .,::,:,,::;tCCtft..,,,:;L!iCi,,,..,::,.,it;;;it;8@!:,,iifL;:!tLt!t!!!itf!:.:f;;,:t!;:::;;::!i!!!;!i!!i! +, .. !L, .. .: .:,i,,!.,;8@@i;:;!;ifLfCt!!!;,. ...,,. .:it!i:.,i8!,,:!!;:;Lt!i!;;itL;;i:,.:!:,,:;ti;::,,,,,,,,,...,!Li +t;,. ,,, ;G: .: .:.,i:;i::,!8Cif8;,tLG#8tCi;:L8! ..,. ....,i.,ii!::!tt!:;!!;tf:!fi!;;!;;,:;!!;;!i!!!;;;;;i!::,:;;::;! +iC0!,. ift!:iL!,,;t;:!,:L!:t::;!!:;0@!;GL@C;;C; ;0; ,fCLi!;,,!: .:,;08i:;!!:,.,i;;:::::::itf!,;tCLfLL;;!:!tLtift!;;;fG!:;; +iC0Gi :!ittfGiitttL!:t;:!,:;.,ft;t00ii0L0L.,,,..,..,!t0###8f!f;:!ttii;;!CC;!i:,,:!ii;;:;!ii!!if!:;tLtiii;!L:ifL!tLit;:t!;;tif +:::;,. ... .,,!C!.:;;:!:::,,:.i,,;L0f!tC0fi;!:;:.;!:. .,:;iLCLi;,,8######f;:!i,;!;,;CGtL!;:L80t;!C;,!tCfi;L!:,,,:,.!Ci!i!CLftff! +!itii;:!!. ,t: ;L::C:;i,,::L,,fG;:!!;;:!i;:;;;;;!:...,,:;;;:,,;L8@####:,::::;;,:!!!;:,,ti!:;!;:,,:::::::::,:,,.!Gi!:t@###### +#####8;,;, ,t; ,if;!C;;;,:::i,,,!LC:::::::;CL!!iLi:!!!tLLLfft,,,:;i!!!;:;,.,:::.,;;t!,:,,,,:::,,:::,..,!iitff;,!t!i!!fLfftL8 +######; ,!. ,!: .!0!;t:;:,f,.: ,GG:,:::.;LLi!!!ii;;!tttti;!!::ii; ,:..,,::,. ,,:;;!!:!i!:;,:t!;!,,!!:;i!,.,,:LiifLL;!;; +#LtfGL, .;. ,f: ,fG,.:..,:. .. ,:;:,:::;ii!;,,,,,::::::,,.!L;.;C;,:,,. ,Lt: ..,,..,,,,,..,:::..:, .;. ,,:,;:;;:,.,: +f;::;fi;:. ,f: .,,. .,, :!i;;;:iLLf0#8G!!;tiiiL;ttff!;G@t;i0tf#t!f:,:;!;;;;;:::,,..,,,... . .;:.:,;: ,., +t;;::;f#L, ,t; .,..,.,. .f0Lt;:iCtf@@0ttfftLffftfftLLtLtiCCi!C@00f!;!iitLCCiit:,,,:;!;:::, . , ...,... .. +fti!;!t#@: ,i: .,;:,, , .:i!:::fC::;;,,,,:::::,,,,:::,,.:t;,.::!;::::;;;;!;::,. ....... .::,..... ..... ., +!;!ft;;fL,. .;. ,.,.., , . ,!fff!:,i!:::,.,:,,,::;;::::::;;;:,,:,,:t!!!!!ii!!;:,,,,::::::,,,.. .:,,,,....,. ..  +!,,::,,::, ,. , .,. ,. ,####8.,CfiG#GLG#8!CfGGCGLGC;G0LGGffGt:CLfCCL0GG0f0f!ti!tLCLLfffi;;::,,,.,,,,,,,::;;!: ., +!:,,,,:;i. : .,,,... ,, ,G@@#t.:CCG#######;,::!ii!;:::;;;;!L!,,,!!!;;!!!!!!!if!;!!!i!itfffLLt!;,.,,:;,:,.,:;;;:,::;: +ti;::::;!, : .,... , ,,,,:,. ,#####ftti:. fC: :!. ,!,,....,,,,,,:;!,,:::::;;;;:,... ..,....,!t!!tttt!; +ti!it!:;i, . . . . .,, .:;!t:. .,:. . ,!. !;:::,:;!!;:,,,:::,,,,,,,,,.... .:;:,:,:;;;;!!!!!! +tfLLtttti, . .. . ;! !iti!iftiittiiiii!!!i!!;;::::::::::;!i!!!;;!;;;;;;::  ..:!!!L;:,,:;:,.:;,:,. ,:!, i.ti.iittti, ,..., ., . .,,, .,,:::;,,,....:;!:...::,,,,......:,,  +. .,,...,tCf:,,tLi;.:,.,,, ;i. .;,;8f!i!;,..., .,,. ...:;t;. . .;:. ,:;;:, . . ..... . ........,...., +:,:!!,...,,,;,:;!;,.. ;0!:;!: .,:::!f;;C8t;. ,:,.,;;;, .!:,.:f. .. ., ....;:.,,,,. ...,,,,,... ...,,,,...,,,,::;;!..,; +f;;:::,,,. .,,,,,,,, .,;0#t0f,....;LtfLL8i!;::. .. .:,..,,.,:::;:,.!: . .. ,,....,.. ...,,....,,,,..,:;!;!!;::,.,,,,::::;:; +Ct;;,,:::;:,,,:::!i;;;;:i##i;:;i;.:!tL0Gi:.. .. .:!. ;GCi,.,,. .,.. ......,,,,...,,..::!tti;,,,:,,,,,:;::;;;:!,,fLti +Ci::;:;::;i!:;C!t8GC0C;!::G8!!!::;!tGC!:,.,,..,. ..... .;8L. ,;!f;,;t;::;i!, .. ,,;i;::..,.,,:;!!!::,,.....,!fftLL!!:,,!i!: +i:,:;ti;!f!;!iftf@#Gtiti!;!88!;;!CGf;:. .,. .. ,,,::,. .;G8!,.. ,tG;;!:tf:;G;,,, ..,,,,,,,;i:::!ifi;;,:;;;:;;!iiiCf!;,,,:t:: +i;;;ii!;fGLLfCCLLG@t:::!tLit@CiLL!;:, . .... .;!:,.,:!:!0!:;;::t:!C:.,::,,..,,!i!:tf:;!;;!ii!;;CGffff!itfCtf;;;!!::, +itffitftL8#G0##GG#Ci;:;:!ifffC;::,.,..., . . :i;. .,:,,,:;:tC:;C!tft:.,;!G!.;ii!i:,,;ft!;!;;iG!:f##@GCCftLi!!!!!tti;:GLff;! +fitfC08G0@#####0G#8t!;;!tCCi;,,..,,,,,...,....,;,.;G0:.:!,,,,iC;;i:i;;;!;:.,,;Ci,,::::,,;;;;:;::;f@i!C8#GCGC;;;;i!t:;CL!;:!fttLC +CffC@8G###0##@GG0C##f!;LL!;:......,:::,.. ,i:,i!:,;it;;;;;!::i:,,,,!!:!i,::,,;;,. ..,::;;;;!tt:;if;:;ii!;iiiitLit!;!Gtt:,!tGCfG +8@#0CGGGGCCLLL0fffG##tt;;:,,,,,.,.,,:,,. ,iC;,,,:,;GCiLf;,.,:,,:;!;:,,,,..,,.,;,..:t!!i!i!!fti!!;:,:;i!!iC00CfLCf;Ci!;::;!ii!t +8##GCtii!;;;;t@i;0iCt!:,:;;:::::,;,::i:.:,,,:!0;,.,!#G;;::,.,.,.,G0G0: ....,,.,;,.;i!!!!;:;;!!!CL!::!!ttff!ii!;;!;;it!;;;:;i:if +88GLfti!!!!!if8i;;!::,,.,,,.,,,.,..,i@!;tt:!t:t0,.;##!,,,...,::,,iifG: ...,,,.,;;;;!i!tf:,itLtff!;:,:::;;;::,,,,;:;i!iitt!!;:;f +##CL8@0CC0tt8L@i!;:;;::,,....,,.:..,88;,::!L!:!!:;##!:!:.....,;,..i:,:. .,:..,:L0Lfft!!!;i!iLiti;:,::::::;:::::;;;!ft;!!!!!!;tG +@80#@#####GtL#f;:!,,:;;;:::;::;:;:.,iLi;!:CL:..,!#0;,.,. .:, .:, ..,..,,.:tGf!!!!!!!;:::::;f;:,:t;!!iiiiiiitL!!Cit!itiCC!!C +CC80GGGG0C8CL@i,.,,..,,,,;L;,,,,;;::;0GC@!fG!,:t#i:,. ... ,;, ,;,.,,..:,::.;Cf;,:i!:!t;,:;!:!Ci;;!!!;;;iiiti!!i!iitittfiit!;L +GGtL0CCGCfLffGi::!;:,,,,,,,,.....;Gf!!t8i:L8!i##;,.,,,;!!;::,. .:,!::;:,..,,:;;!!;;;;;::;:::!i;tLftii!i!;;;:,;i;;!ftCtii0fii!iif +GttG#C8##G;;fLiitff!,,.......,...:i!!G!,:;GLf#@!:,::!C8@#0CCf;;;:::,.,..,..,ti;itfi;ttif;;!!;!!ti!;:;;!;;:i::!itti!iGf;it!ifCf8# +0ii#CLLfft;;iiif!:::,,,,,,,.,,,,,:;!!i;: ;08@i;:!t!:G#CfG00GCG80LCi;,. .,,,!L!!CL!:;tt!t!!Lt;::!!;:.,,!f:;;i!t88@C;;ii!!;!ttiL#G +::;;!fi,;0:!t:!0;..;;;;;!;,,:::t!;ft;!!;:f#G!;:!;;!:tL!;;!fG0CLCGG8@C!::!;;tt;;t!;;:!i!;!;i;:;:!Ci;;;;!!;;tifftftii!!f!fL0i!;!if + ..,:;,:ii;C;:LC,,,::,::,::::itti!:;8#f@#f!::::,.,:;;:,,,:;!ff!itL08GGt;:::;,:;!!!:iGii!;;!;;;iGfttffti;;;;;!;!!;;!f0ftLtti!;!i +.. .,:L:,:;,.,,.....:t;!i!;t!::i##fi!,:...,.,if;,,,...,::::;!!!iL0i:,::,:ifGG;:!iitiCfififti!!!!!;::i;;t!:;;!!0@CCGGiGti0L + , . ..,;:..:,,,,, .,::,,,,::;tCCtfi..,,,,;L;;Lt:,,..,::,.,!f!;;!t:;@C;,,!ifL;:!tLt!t!!!itf!:,:t!:,;ti;:::;;::!i!;!;!!!!i! +, .. !L, .. .: .:,i,,!.,;8@@i;:;;:!tCtfL;;ii:. .,,...,!ti!;. :8f:,:;!;:;ft!i!;;iiL!;i:,.,;:,,:;ti;:::,,,,,,,,...,!Li +t;,. .,,, ;G: .: .:.,i:;i::,!8Cif8;:ftf##tLf!!!@8: .,,. ...,;:.iii;:;tt;:;!!;tf:!ft!;;!;:,:;!!;;!i!!i;;;;;i!::,:;;:::! +iC0!,. ift!:iL!,,;t;:!::L!:t::;!!::G@!;0tL@i:GG, :8G,.!CCt!;:,,!. ..:08i:;!!:,.,!;;::::::,itf!,;tGLfLL;;!;!tLtift!;;;fG!:;; +iC0Gi :!ittfGiitttL!:t;:!,:;.,ft;i00tiGLL0:.::,.,,,.;iC@###0!t!,:iti!!!ifC;!i:,,,!ii;;,;!ii!!if!:;tLtiii;!f,ifL!tLit;:t!;;tif +:::;,. ... .,,!C!.:;;:!:::,,:.i,,;L0f!tCGfi;;;::.,!:, ..,;!fCCf!,.:######@i:;i:;!;,;CGtL!;:L80t;!C;,!tCfi;L!:,,,:,.!Ci!i!CLftff! +!iiii;:!!. ,t: ;L::C:;i,.::L:,fG;:!!;;:;i!:;::;;;;,...,:;;;;:.,iG8####f,::::;;,:!!!;:,,ii!:;!;:,,:::::::::,:,,.!Gi;:t@###### +#####8;,;, ,t; ,if;!C;;;,:::i:,,!fG:,;::::;fC!;!ff;;;!ifLLftf,.,::!i!!;,:;.,:,:.,;;i!,:,,,,:::,,:::,..,;ittff;,!t!i!!fLfftL8 +######; ,!. ,!: .!0!;t:;:,L,., ,G0;,;::.,fLi;;;!ii;!itttt!!!;,;it: .,..,,::, ,,:;;!!:!i!:;,:t!;!,,!!:;i!,.,,:LiifLL;!;; +#LtfCL, .;. ,f: ,f0,.:.,::. .. ,:;:::;:;!ii!,,,,,::::;;:,.:0!:,!G;;:,. .tt: ..,,..,,,,,..,:::..:, .;. ,,:,;:;;:,.,: +f;::;fi;:. :f: .,,. .,, :!t;;!:iCCfC#88fi;itiiL;ttff!it#8!it0f##tf:,:;!;;;;;:::,,..,,,... .. .;:.:,;: ,., +t!:::;L#L, ,t; ,..,.,. .f0ff!;iCfiG@@LtfffLLLfttfffLLfLttGt;t@#80i;;!tfLCC!it:,,,:;!;:::, .. , ..,,... . +fti!;!t@@: ,i: .,;:,, , .:i!:::LG:,:;:,,,,::::,,,,,::::,.:t:.,:;!:::;;;;!!;::,. ....... .,:,,. .. . .. ., +!;!ft;;fL,. .;. :...., , . ,;tLfi:.:i::::..:,,,::;;::::::!!!::::,,,;!!!!!ii!!::,.,,:::::,,,,.. .,,,,,....,. ..  +!,,::,,::, ,. , .,. .,. ,####0. t0if@0LC8#tGfGGCGLGC!C00GGLfCt:LtLCLL0G00f0t!ti!tLLLffffi;;::,,,.,,:,,,,::;;!: ., +!:,,,,:;i. : ...,,... ,, ,G@@#f,,iGL########:;:;!ii!:::;;;;!L!,,,;t!;;!!!!!!!it!;!!!i!itfffLLt!;,.,,:;,:,.,:;;;:,::;: +ti;::::;!, , .,.. , ,,,,:,, .0####Lttt!,. .CL. .i, ,i:,....,,,,,::;!:,:::::;;;;:,... .,....,!t!!ttti!: +ti!it!:;i, . . . . .:, .:!!t!. .::. .;, :i;:,,:;!!;:,,,::,,,,,,,,,,.... .:;:,:::;;;;!!!!!! +tfLftttti, . .. . ,!: ;tti!iftiittiiiii!!!i!!;;::::::::::;!i!!;;;;;;;;;;::  .,;!!iL;:,,:;:,.::,,,. ,:!, i.fi.i!ttti, ,..., .: . .,, .,,:::;,,,....:;!:..,::,,,,.. ...,,,  + .,,...,iGf:,,tLt;.,,.,,, ;!. .!,;8f!i!;,..., .,,. ...:;i!, . .;,. . ,:;;:, ... ..... . ........,...., +:,,i!:...,,:;,:;!!,.. ;0!:;!: .,:::!f;;C8t;. ,:,.,;;:, .!;..:L,... ,,.....::,.,,,. ...,,.,,... ....,,,...,,,,::;;!..,; +L;;::;,,,. .,,.,,,,. .,;0#t0f,....;ftfCC8i!;::. .. .:,...,.,:,:!:,.!: . .. ,,....,.. ..,,,....,,,,,.,:;!;!!;::,.,,,,::::::; +Ci;;,,:,:;:,.,,::!i;;;;:i##i;,:i;.;!tL0Gi:.. . .:i, :GGt,.,,. .,.. ......,,,,...:,..::!tti;,,,:,,,,,:;::;;;:!,,fLti +Ci::;;;::;i;:;L!t8GLGC;!::G8!!!::;!tGC!:,.,,..,. ..... .;80, ,;!t:,;t;::;i!, . .:;!;::..,.,,::!!!:::,.....,!fftLL!;:,,ii!: +i:,:;ti;!f!;!tftf@#Ct!ii!;!88!;;!CGf;:. .,. ,. ,:,:,,. .;L8t,.. .iC;;!:tf:;G;,,, ..,,,,,,,;!:::!ifi;;,,;;;:;;!iiiCf!;:,,:t:: +i;;;ii;;fCLLL8GCLG@t:::!tLit@CiCL;;:. .. ..... .!i:, ,;:!G!:;;::t;!C:.,::,,..,,!i!:tf:;!;;!ii!!;CGffff!itfCtf;;;!!::, +tttfitttC@8G8##G0#Ci;:;:!ifffC;::,.,.,,,. . . :i;, .,:,,:,,,;C:;C!tft:.,;!G!.;ii!i:,,;ft;;!;;iG!:f##@GLCftLi!!!!!tti;:GLff;! +LiffC8808######0G#8t!;;!tCCt;,,..,,,,,...,....,;,.;G0:,:;,,,,!C::t:i;;;!;:.,,;Ci,,::::,,;;;;:;::;f@i!C8#GLGC;;;;iit:;CL!;:!fttLC +CffL80@###0##@GG0C##t!;LL!;:......,:,,,.. ,i:,!!:,;if;;::;!:,;;,.,.!!:!i,::,,;:,,..,,:::;;;!tt:;if;:;ii!;iiiitLtt!;!Gtt:,!tGCfG +8##GCGCGGCLLff0tttG##tt;;:,,,,,...,,,,,. ,iC;,,,,,;GCiLf;,. .:,,:,,,,,,,.,,,.,;,..:ti!i!i!!fti!!;:,:;i!!iC00GfLCf;Lt!;::;!ii!t +8#80#Lti!;;;;t@i;GiCt!:,::;:::::,:,::i:,:,,,:!0;,.,!#G;;::,.:...,Cf;t, ....,,.,;,.;i!!!!;:;;!!!Cf!::!!ttff!ii!;;!;;ii!;;;;;i:if +80GCLLi!!!!!if8i;;;,:....,,,,.,.,..,i@!;tt:!t:t0,.;##!,,,...:,,::tiLG: ...,,,.,;;;;!i!tf:,!tLtffi;:,:::;;;::,,,,;:;t!iitt!!;:;f +##CL0@0CCGit8L@i!;:;;::,,....,,.:..,88;,::!L!:;!:;##!:!:......:;,,f!,:.. .,:..,:L0Lfft!!!;!!iLitt;:,::::::;:::::;;;!ft;!!!!!!;tG +@8G#@#####Gtf#f;:!:,;;;;::;!::;:;:.,iLi;!:CL:..,!#0;,.,. .,:.,:: .,..,,.:t0f!!!!!!!;:::::;f;:,:t;!!ii!ii!itL!!Cit!itiCC!!C +CC0GGGGG0C8Cf@i,,,,,,,::,,tf:,,,;;;:;0GG@!fC;,:t#i:,. ... ,;, .;,..,..:,::.;Cf;,:i!:;t;,:;!:!Ci;;!!!;;;iiiti!!i!iititffiit!;L +CGtL0CLGLffffGi:;!;::,:,,,,,,. .,;Gf!!t8i:C8!i##;,.,,,;!!;;:,, ,;;,;:,..,,:;;!!;;;;;::;:::!i;tLttii!i!;;;::;t;;!ftCtit0fii!iif +CiiC#C0##G;;fLiitLf!:,...........:t!!G!,:;0Lf#@!:,:,:f0@@@CCL!;;:;t!!,.....,ii;itf!;ttif;;!!;!!i!!;:;;!;::i;:!itti!iGf;it!tfCf8# +Gii@CLftfi:;!iif!::::,,,,,,.,.,:,:;!!i;: ;G8@i;:!t!,i@GfC00GCC00LCti;, ..,,!L!!CL!::tt!t!!Lt;::!!;:.,,;f:;;i!t88@C;;ii!!;!itiL#G +:;;;!Li,;0:;t:;0;..;;;;;!:,::::t!;ft;i!;:f#G!::;;;!,;Ci:;!iC0GLLCCG00i;::;;tt!;t!;;:!i!;!;i;:;:!Ci;;;;!!;;tifftftiii!t!fL0i!;!if + , ,;;,:ii;G::LC,,,::,;;,:::;ftti!;;8#f@#f!:;::,.,,:;:,,,::!tfi!ifG80CC!::,:,:;!!!:iGti;;;;;;;iGfttffti;;;:;!;!!;;!f0ftLtti!;!i +,. .,:L:,:;:.,,..,.,;i;!t!;t!;:i##fi!,:...,,,ti;:,,...,:::;;!!!itGG;:;:::ifGG;:!iittCfiftfti;!!!!;::i;;t!:;;!!0@CCGGiGti0L + , . ..,;,..:,,,,, .,::,:,,::;tCCtfi.,,,,,;C!:fL!,,,.,,::..:tt!;!t!;@@i,,iifL;:!tLt!t!!!itf!:,:ii;,:t!;:::;;::!i!;!;!!!!i! +, .. !L, .. .: .:,i,,!.,;8@@i;:;!:;tGf!C!;!!;. ..,,,. .:it!!,.,CG!,:;!;:;ft!i!;;iiL!;i:,.,;;,,:;ti;::,,,,,,,,,...,;Li +t;,. ,,, ;G: .: .:.,i:;i::,!8Cif8;:fit8#Gif!;:C8; ..,. ....,!.;!!;:;tt;:;!!;tf:!fi!;;!;:,:;!!;!!i!!i;;;;;i!::,:;;:::! +iG0!,. itti:iL!,,:t;:!::L!;t::;!i::0#!;0it@L:!C: .i0: ,fCfi!;,,!: .,L8t;:!!:,.,!;;::::::,iff!,;tCLfLL;;!:;tLtift!;;:fG!:;; +iC0Gt :!ittfGiitttL!:t;:!,:;,,ff;i08ti0ff8t.,,,..,,.,!t0###@f!f;:!tti!!!iC;!i:,,,!ii;;:;!ii!!iL!:;tLtiii;!L,ifL!tfit;:t!;;tif +:::;,. ... .,,!C!.:;;:!:::,,,.i,,;L0t!tCGff!;;::,.;;,. .,:!iLGCt;,,8######f;:t:;!;,;CGtL!;:L80t;!C;,!fCfi;L!::,,:,.!Ci!i!CLftff! +iitii;:!!. ,t: ;L::C:;i,.::L:,fG;:!!;;;:!!::::;;;;,....,:;;;;,,;L8@####::;::;!,:!!!;:,,ii!::!;:,,:::::::::,:,,.!Gi;:t@###### +#####8;,;, ,t; ,if;!C;;;,:::i:,,!fG;,!:::::!Li!!iLi:;;!tfLLfft,,,:;i!!;:,;,,:,:.,;;i!,:,,,,:::,,:::,..,;iitff;,!t!i!!fLfftL8 +######; ,;. ,!: .!0!;t:;:,f,., ,G8i,;;::,iLi;::;ii!;iittti;!i;:!i;. ...,,,, ,,:;;!!:!i!:;,:t!;!,,!!:;i!,.,,:LiifLL:!;! +@LtfCL, .;. ,f: ,f0,.:.,:,. ,, .:;;::;:;;ii!:,.,,:,::;;::. ;C!,;f!::, ;t: ..,,..,,,,...,::;..:, .;. ,,:,;:;!:,.,: +L;::;fi;:. ,t: .,,. .,, ;ii;;!;iCCff8@8Cf;itiiL;ttfL!i;i@tfiCCC#ti:,,;;;;;;;:;:,,..,,,... .. .::.:,;: ,., +t;:::;f@L, ,t; .,..,.,. ,L0ftt!tCfif@@GtfftLLLftftfttLLtfiCC!!L@80t!;!tfLCCiit;,,,:;!;:::, . , .,,... . +fti!;!t@@: ,i: ..,;:,, . .:i!;,;C0;,:::,,,,,:::,,,,,,::::,:i!,.,:!;:;!;;;!!;::,. ....... .,:,..... . .. .. +!;!ft;;fL,. .;. :.,.., , . ,;tLLi:.,!;:,,. ,.. ,:;;::::::;!!;:::,,.;ii!!!!i!!:,..,,:::::,,,,. .:,,,,....,. ..  +!,,::,,::, ,. , .,. . ,####0. iG0tGGCLC#ttiGGCGLGCiCG000LLLt:L!CGCC0G00f0t;ii!tLLLftffi;;::,,,.,,:,,,,::;;!: ., +!:,,,,:;i. : ,,,,... ,, ,G@@#f,.:LCG#######;,:;!ii!:::;;;;;if;,,:ii!!!!!!!!!it!;;!!i!iifffLLt!;,.,,;;,:,.,:;;;:,::;: +ti;::::;!, , .,.. , ,,,,,,, .#####Lfft;. tC: ;i. .;:,....,,,,,::;;:,:::::;;;;:,... ..,....,it!!ttit!: +ti!it!:;!, . . . . .:, .;!if;. :;, . .: .. .i:::,:;!;;:,,,:::,,,,,,,,,.... .:::,:,:;;;;!!!!!! +tfLftttti, . .. . ;! ,tii!iftiiitiiiii!!!i!!;;::::,::,::;!i!!!;;!;;;;;;::  .,;!!if;;,,:;:,.::,:,. ,;!, i.ti.i!ttti, ,..., .: . ,,, .,,:::;:,,....:;!:...::,,,,.. ...,,,  + .,,...,iGf:,,tLi:.:,.,,, ;!. .!,;8f!i!;,..., .,,. ..,::ii, . .;:. . ,:;;:, ... ..... . ........,...., +:,,!!,...,,:;,:;!!,.. ;0!:;!: .,:::!f!;C8t;. ,:,.,;;;, .!:,.:f,... .,.....::..,,.. ...,,.,,... ..,,,,...,,,,::;;!,.,; +L;:::;,,,...,,,,,,.. .,;0#t0f,....;LtfLC8i!;::. .. .:,...:.,:,:!:,.!: . .. ,,....,.. ....,....,,,,..,:;!;!!;::,.,,,,::::;;; +Ci;;,,::::,..,,:;!!:;;;:i##i;,;i;.:!tL0Gi:,. . .:i, ,C0f,,,,. .,.. ......,,,,...,, .::;tti;,,,:,,,,,:;::;;;:!,,fCti +Ct;:;:;::;!:::LiL8CLGC;!:;08!!!::;!tGC!:,.,,..,....... :08: ,;!t:,;i;::;i!, . ,:;i;::..,.,,::!!!:::,.....,!fftLL!!::,ii;: +t:,:;ti;!f!!ifLfC8#Ct!ii!;!88!;;iCGf;:. .,. ,. ,,,::,. .!f0f:. ;L;;!:tf:;G;,,, ..,,,,,,,;i:::!ifi;;,,;;;:;;!iiiCf!;:,,:t:: +i;;;ii!;tCLCC#0CLG@t:::!tLit@CiCL!;:. . ..... .!i:,. ,::;G!:;;::t:!C:.,::,,..,,!i!:tf:;!;;!ii!;;CGffff!itfCtf;;;!!::, +tfffttffC@0G@##G0#Ci;:;:!ifffC;::,., ,,, . . :i;, .,:,,:,::;C:;L!tft:.,;!G!.;ii!i:,,;ft;;!;;iG!:f@#@GCCftLi!!!!!tti;:GLff;! +LiffC0808##@###0G#0t!:;!tCCt;,,..,,.,,...,....,;,.;G0:,:;,,,:iCi;f:i;;;!;:,,,;Ci,,::::,,;;;;::::;f@i!C8#0CGC;;;;i!t:;CL!;:!fttLC +CttfCG####8##@GC0C##t!;LL!;:......,:,,,.. ,i:,i!:,;if;;;;;!:,;i:.,.!!:!i,:;,,;:,,...,::;;;;;tt:;if;:;ii!;iiiitLit!;!Gtt:,!tGCfG +8@CCCGC0GLLLff0tftC##tt;;:,,,,,.,.,,:,,. ,iC;,,,,,;GCiLf;,. ,!:,:,,:,,,,.,,,.,;,..:ti!i!i!!fti!i;:,:;i!!iC00CfLLf;Lt!;::;!ii!t +##G##Lft!;;:;t@i;GiCt!:,:;;:,:::,;,::t:,:,,,:!0;,.,!#G;;::,.:.,::Ct;f, ....,,.,;,.;i!!!!;:;;!!!CL!::!!ttff!ii!;;!;;ii!;;;;;i:if +8GGGGLt!!!;!if8i;;;,,.....,...,.,..,i@!;tt:!t:t0,.;##!.....,::,::tiLG: ...,,,.,;;;;!i!tf:,itLtffi;:,:::;;;::,,,,;:;t!iitt!!;:;f +##CC0@0LCCii8L@i!;:;:::,,.,,,,..,..,88;,::!L!:;!:;##!:!:......,!,,f;,;. .,:,.,:L0Lfft!!;;!!iLitt;:,::::::;:::::;;;!ft;!!!!!!;tG +#8G#@#####Ctf#f;:!,,:;;;::;t!:;:;;.,iLt;!;CL:..,!#0;,... ,;..:, ..,..,,.:tGf!!!!!!;;:::::;f;:,:i;;!ii!ii!itL!!Cit!itiCC!!C +CC0GGGGGGC8Lf@i,,,,.,,,,,,:L;,,,;;::;0GG@!fC!,:t#i:,. ... .;:.,;,.,,..:,::.;Ct;,:i!:!t;,:;!:!Ci;;!;!;;;iiiti!!i!iititffiit!;L +CGtf0CCGLtfffGi:;!;::,,,,.,,,....;Gf!!t8i:C8!i##;,.:.,:!!;;::,. ,i::;:,..,,:;;!!;;;;;::;:::!i;tLftt!!i!;;;::;i;;!ftCtit0fii!iif +CiiL#C0##C;;LCiifLL!:,.,....... .:t!!G!::;GLf#@!:,,,:i0@@#GCGt;;;;:,.,..,..,ii;itf!;ttif;;!!;!!i!!;:;;!;;:i;:!itti!iGf;it!tfCf8# +Gi!8LLftfi::!ttf!:;;:,,,,,,,,.,,,:;!!t;: ;08@i;:!i!:;@0fLG0GCC08CCf!;,...,,!C!!CL!::tf!t!!ft;::!!;:,,,;f:;;i!t88@C;;ii!!;!itiL#G +:;;;!f!,;C,;t:!0;..;!!;;!;,::::ti;ft;ii;:f#G!;:;;;!,;Ct;;;!LG0CLCC08@L!;::;tti;t!;;:!i!;!;i;:;:!Ci;;;;!!;;tifftftiii!t!tL0i!;!!f + , ,:;,:!;;G;:LC,,,::,;;,::::tfLi!:;8#f@#f!:;::,.,::::,,,::;!ft!itC08CGf;,,:::!!!!:iGii!;;!;;;iGtttffti;;;;;!;!!;;!L0ftLtti!;!i +,, ..:L:,:;,.,:..,.,:i;!ii;t!;:t##fi!::...,,:t!::,.....,,::;;!!!iL0i:::::ifGG;:!iittCfififti;!!!!;::i;;t!:;;!!0@CCGGtGtt0L +.: .. ..,;,..:..,,,..,::,:,,::;tCCtft,,:,,,:Ci:iLt,,,..,::,.,ifi!;ii;0#L,,iiff::!tLt!t!!!itf!:,,!i;,:t!;:::;;::!i!!!;!i!!i! +, . !L, .. .: .:,i,,!.,!@@@i;:;!::iCf!Lt:!i!:. .,,...,;ii!:..!@t::;!;:;ft!i!;;iiL!;i:,.,::,,:;ti;::,,,,,,.,,...,!Li +f;,. ,,, ;G: .: .:.,i:;i::,!8Cif8;:Li;f##iti!;!8C, .,. ....;.,!!!;;tt;:;!!;tf:!fi!;;!;:,,;!!;!!i!!i;;;;;i!::,:;;:::! +tG8!,. itt!:iL!,,:i;,!::L!:t::;!i::0#!;0i!C8!:GC, ;8L,,iLLi!;:,,!. .i8t;:!!:,.,i;;::::::,iff!,;tGLfLL;;!:;tCtift!;;:fG!:;; +iC0Gi :!ittL0iitttL!:t;:!,:;,,ff;i08ti0tf80,.::,.,,,.;iC@###G!t!,:tti!!!iC;;i:,,,!ii;;:;!ii!!tL!:;tLtiii;!f,ifL!tLit;:t!;;tif +;::;,. ... .,,!C!.:;;:!::;,,:.i,,;L0t!tGGtLi!!;::.,!:, ..,;iLGGf!,.;######8!;t:;!;,;CGtL!::L80t;!C;,!tCfi;L!:,,,:,.!Ci!i!CLftff! +ittii;:!!. ,t: ;L::C:;i,,::L:,fG;:;!:;;;;i;::::;;::,...,:;!;;,.,i0@####f:;::;!,:!!!;:,,ii!:;!;:,,:::::::::,:,,.!Gi;:f@###### +#####8;,;, ,t; ,if;!C;;;,::;i:,,!LG;.::,,,::fi!!!tf;;;;ifLLftf,,,:;!i!!;::,,:,:.,;;i!,:,,,,:::,,:::,..,;iitff;,!t!i!!fLfftL8 +######; ,!. ,!: .!0!;t:;:,f,., :08C,:!!;.,ft;:::iti;!ttttt!!!!,!!i, ...,,,. ,,:;;!!:!i!:;,:t!;!,,!!:;i!,.,,:LiifLL:!;! +#LttCL, .;. ,f: ,f0,.:..::. .,;;::C8i;;;!:,...,,:,:;:,. :G!,,!C;:, ,t: ..,,..,,,,,..,::;..:, .;, ,,,,;:;;:,.,: +L;::;fi;:. ,f: .,,. .,, ,;iti;:!CCLLG80G0titiiCitfC0iitt#0CtL#C#Gi;!!iii!!!!!;:,,..,,,... . .;:.:,;: ,., +t!:::;f@L, ,t; ,..,.,. ;###@f;f#0GG@###@@888@@@8@#@@88@###@#@###@888888888CGG!,,,:;!;:::, . , .,,... . +fti!;!t@@: ,t: .,;:,, . ,LLii;!@@i;!!!!;;;;!!!!!!!!!!!!!!!!f!!!!!!!!iiiiiii!!:,. ....... .,:,..... . . .. +!;!ft;;ff,. .!. :...., , :!;!;: ,;:... .::. ,,,.,:;;,....,,:::::,,,,. .:.,,,....,. ..  +!,,::,,::, ,. , .,. .. .,. ,G;!tLLLLt:,., .CC. ;;:,,::::;;!i!!tfLLffffi;;::,,,.,,;,,,,::;;!; .. +!:,,,,:;i. : ,,,,....,, , .:..!Lt8######8. .::. .;;. ,t: ,i:,..,,:;!it!;;!!i!iifffLLt!;,.,,;;,:,.,:;;;:,::;: +ti;::::;!, : .,.,. , ,,.. ,: .G####0LGCt:. ,GC. ,Ci ,;:,..,,,,,:::;!:,:::::;;;;:,... ..,....,it!!tttt!: +ti!it!:;!, . . . . ., .:iiLC, ,i;. , .,, ;;:,,:;!;;:,,,:::,,,,,,,,,.... .:::,:,:;;;;!!!!!! +tfLLtttti, . .. . ,i: iti!iftiiitiiiii!!!i!!;;::::,::,::;!i!!!;;!;;;;;;:: . .,;!!if;;,,:;:,.:;,:,,. ,;!, i.fi,iittti, ,..., ,. . .,,, .,,:::;:,,....:;i;..,:::,,,......:,,  +...,,,,,,!Gf:,,tLi;.,,.,,, .;!. .!,;8t!t!;,..., .,,...,..:;t, . . .;:. . ,:;;:,. .... ..... ... ........,...., +:,:;!:...,,:;,:;!!,.. ;0!;;!: .,:::!f!;C8f;. :;,.,;;;, ,i, .,i:... ,, ....;:,.,,.. ...,,,,,... ..,,,,.,.,:,,:;;;!,.,; +C;:::;,,,,..,,,,,,.. .,;0#t0f,....;ftfCC8ii;::. .. .:,..,.,.:,;!:,.!: . .. .,:....... ..,,,....,,,,,.,:;!!!!;::,.,,,,:::::;; +Gt;;,,:::;:,,,:;!ii;;;;:i##i;:;i;.:!tL0Gt;,. . . .,:; :G0L,,,,, .,.. ......,,,,...,, .::!tti;,,,:,,,,::;::;;;:!,,fLfi +Gt::;;;;:;;:::Lf0#GCGC;!::G8!!!::;!tGC!:,.,,..,. .,.... .:C0: ,;!i::;t;::;i!, .. .:;i;::..,,,,:;!!!:::,.....,!LftLL!!::,ii!: +t:::;ti;!f!;itLLC8#Gtiii!;!88!;;iCGf;:. ..,. ,. ,:,::,...!f0t:, :t;;!:tf:;G;,,, ..,,,,,,,;i:::!ifi;;,:;;;:;;!iiiCf!;:,::t:; +i;;;!i!!tCfLC@GCLG@t:::!tLtt@CiCL!;:. . ..... .,!i:,,.:,,;G!:;;::t:!C:.,:::,..,,!i!:tf:;!;;!ii!!;CGffLf!itfCtf;;;!!::, +ftfLtffCGG0G8##G0#Ci::;:!ifffC;::,...,,,. .. .:t!:,,,;,,;,:!!G:;C!tft:.,;!G!,;ii!i:,,;ft!;!;;iG!:f##@GCLftLi!!!!!ttt;:GLff;! +LiffCC@88######0G#0t!:;!tCCt;,,..,,,,,...,....,:,.i00i::!,..,iLLiC;i;;;!!:.,,;Ct,,::::,,;;;;:;;:;f@i!C8#0CGC;;;;iit:;CL!;:!fttLG +CttfLG####8##@GC0C#@t!;LL!;:......,:::,... ,t::ii,,::,...,:.:,;f!,,.!!:!i,:;,,;;,...,,::;;;;!ft:;if;:;ii!;ittiiLtt!;!Gtt:,!tGGfG +8CLCG8G0GLLLff0tttG##tt;;:,,,,,.,.,,:,,. ..,fC;:, .!;,. ,!:,:,,:,,,,.,,,.,;,..:tiii!i!!fti!!;:,:;i!!iC00GfLCf;Ct!;::;!ii!f +#C0##Lft!;;:;t@i;GiCi!:,:;;::;::,;,::i:.,,.:::, .,:, ,.,,,:.,::Ci;t, ....,,.,;,.;i!!ii!!!ii!!Cf!:;!!ttff!ii!;!!;;ii!;;;:;i:if +8GG0GLt!!!;!if8i;;;,,....,,,,.,,,,.,i@!:i;:,. .;@8:.,,...::,!;t!LC: ,..,,,.,;;;!iftC0!:CG0LLLi;:::::;;;::,,,,;;;t!iitt!!;:;f +##CC080LCC!i8L@i!;,;;::,,.,,,,..:,.,@@!,;!:,,. ,;##i;!:......,!:,f;,:,. .,:,.,:L0LLLLCf!:,:!!fLf!!:::;;::;:::::;;;!ft;!!!!!!;tG +@8G#@####@Ctf#f;:!,,:;;;:::tL;;:;;.,t8i,;:.....,;@L;,.,. .;,.;, ..,.,,,.:tGf!!ii;, ,;i;:,:tiiiit!iiiiiL!!Cit!itiCC!!C +CGGGGGGCGC8Cf@i,.,,..,,,,,,ii:.,;;::!G!::,...::i@!,,..... ...,::,,,. ,,.:,::,;Cf;,:fL!::, .!t;::;;;;;;ttitii!iiiititffiit!;L +CCtf8CCGLtftfGi::!;:,,:,,,.,,. .,;0L!::,,,..:i##;,.:,.:::;iittffttfi!!;,,,,,:;!!!;;;!!!f0: .;if!!i!;;;::;;:;t!;!ffCtit0fii!iiL +CiiL#C8##C;:LCiifLL!:,......... .;Li:..,,.:;t#0!;::,,::,:G@0CLCLLC8@@@GL!:,,ti;itfi!tftGt;,,.:ti!;::;:::::t;:!itti!iGf;it!tfCf8# +Ci!8Lfftfi:;!ttf!::;:,,,,,,,,.,,,::,..,,,.:0@i::ifi;;it,,;f0fttffttfLC088C;;f!iGCi!!LCGi;,,,.,i!;;:..,;i::;!;!008L!!ii!!!!itiL#G +:;;;!fi:;L,:t:!0;.,!!!;;!;,::::i!!,..,,,,.:;;:,!!;i;;ii!;!f;:::!!!!!ittf080Ci;tCftfttt!!:,,..:;;L!;;:;;;;:!;ititiitt!t!fL0i!;!if + . ,:;,,;::G;:LC,:::::;;,::::tit!;;;!t!:.....,,,,:;,,,C8f:,,,,,,,,:::::!L0@0::!!;!;:::,:;!!!i;!Ctitiiii;;:,:;;::;;!t0ftLtti!!!i +,, ..:L:,:;:,,:,,,,,;i;!i!:i;:,;8@!::,,.. :,.,!0!.::.........:;,:!it:..,::. ,;tfL0CLfitit;;!!;;::!::i;:;;!;C@CCG0tGti0L +.: . . ..,;:..:,,:,,..,::,,,,,::!ttt0L,:,:::. :,:.....,,. . .. ,;:,,;;fC::ifGCifii!!tf!:,,;!;,:ti::::;;,:ii!!!;!i!!i! +, . !L, ....: .:,i,,!.,;80G!;;!!:,tC;.,,. .,:;!;,.,. ,fLiitii;;ti!i!;;!tf;;!:,.,:::,,;i!;:::,,,,,,,,..,,!Li +f;,. ,,, ;G: .: .;.:i:;i::,;8C!f8;:ft,,:;:.:t;.,;;.,!GG!;:. .,.,. .,!Ltft;::;;;tt:!fi!;;;;;,:;;;;;;iiii;;;:;i!::,:;;::;! +f08!, ift!:iL!,,;t;:!:;L!;t:::;!::G#i;0i, ,,:!:.,,.,;f080i!!;,,i, .:;;;;,.,!;;:,::,,,iff!,!tCftff;;!;;ifi!Lti;;:fG!:;; +fG00t :!ittL0iitttL;:t;:!,:;.,tf;!G8ti0f!,,:,,;,,::..:, ,:!L8####Ctt:.:LffG8f!:::!ii;;:;;!!;!if!:;ift!i!;!L,iff;ifit;:t!;;tif +!;;;,. ... .,,!C!,:;;:!:::,,,.i,,;f0t;iGCtLf,:;!iti;,:!:,, .:!L8##@C!,.0#######0;!CCtL;!,;fC;;!C;,!tfti;f;:::::,.!Ci!i!CLftff! +tttti;:!!. ,t: ;L::C:;i,.,:L,,fG;,;!:;f!,.,;;;;;:;;i!;,. ,:;!!;:,,:itf0####;;!!!;:,.:;;,:!;:,,:::,:::::,:,,.!Gi!;f@###### +#####8;,!,. ,f; ,if;!C;;;,:::!,,,!LG!,:;,.,!ff!!!;;Ctf0t:....,,,:::;;.... .:!!:,.,:;i!,,,,,,:::,,,::,..,!tttff;,!t!i!!fLfftL8 +######; ,!. ,i: .!0!;t:;:,f,.: :00Lfti;::if!:::,::;ftt!::::;!iti!i,.,i,,::,. ,,;;;!;:!i!:;.:t!;;,,!!:;i!,,,,:LiifCL;!;! +#LtfCL: .!. ,f; ,fG,.:..::. . .,:::;f0!;;;;:::;:,,:,,,,,,,,:::;!!;:;,.!fti: ..,,..,,,,...,:;;..:, .;, ,,:,;:;!::.,: +L;::;fi;:. :f: .,,. .., ,;iti:,:ifttCCGC0C8@GtCiiiffiii!i!tL80f0Giiitfti!!!!!;::,..,,,... .. .;:.:,;: ,., +t!:::;f@L, ,t; .,..,.,, :###@t:i##ftLGCG@@@##@@888@@888888@###GG###@8888888C0G!,,,:;!!:::, .. , ..,,... .. +fti!;;t@@: ,t: ..,;:,,. . ,Lfi!!;@@i;!fi!t!;;!!!!!!!!!!!!!!!!!!;i0itCCfiiiiii!!:,. ....... .,:,,,... . .. ., +!;!ft;;fL:. .!, :...., . :!ti;,.:C:,: ,,. ,:. ,:,:;:,....,,:::::,,,,... ..:.,,,....,. ..  +!,,::,,::, ,. , .,.. .. .::,. :,::,::::,. . .:, .,,. :;;::::;!i!!tLLLftffi;;::,,,.,,;:,,,::;!!; ., +!:,,,,:;i. : ,,,:,...,. :..,, ,!tt;G8CLti..,,. ,Ci .LC, .!,,,:!!it!;;!!i!iifffCLti;,,,,!!,:,.,:;;;:,::;: +ti;::::;!, : ..... , ,, . .!:..,:::!tiiCCLC0@G!. .,,. ,,, .!!, .:,,,,,::::;!:,:;:::;;;;::... .,,....,it!!tttt!; +ti!tt!:;i, . . . ., ,..,:: .tGt#########, ,CC. .;. :;;!!;:,,,:::,,,,,,,,,.... .:;:::::;;;;!!!!!! +tfLLfttti: . .. . #####i!GGGf, ,. ,!, ;fiiittiiiii!!!i!!!;;:::::::::;!i!!!!!!;;;;;;;: ... .,;!!if;;,,:!:,.:;,:,,. ,;!, i.fi.iittti, ,..., , ,,, .,,:::;:,,....:;i:..,::,,,,......,,,  +...,,,,,,;CL:,:tLi:.,,.,,,..;!. .;,;8f!t!;,..., .,,. .,..,;t, . .;:... ,:;;:, ... ..... . ........,..,., +;,:!i:,..,,:!,:;!!,.. .;0!;;!: .,:::!f;;C8t;. ::,.,;;;, ,t, ,i, .. ,, ....::..,,.. ...,,.,,... ..,,,,...,:,,::;;!,.,; +C;;;:;;::,.,,,,,,,,. .,;0#t0f,....;LtfLC8ii;::. .. .:,..,,,,::;!:,.!: . .. ,:....,.. ,.,,,....,,,,..,,;!;!!;::,.,,,,::::::; +Gt!!,,:;;;:,,,:;iii;;;;:i##i;,;i;.;!tL0Gi;.. . .:!:.f0Gt.,,,. .,.. ......,,,,...:, .::!tti;,,,:,,,,,:;::;;;:!,,fCti +Gi;:;;;;:;!;:;LL0#GCGC;!::G8!;!::;!tGC!:,.,,..,. ..... .;8G,.:;;;::;t;::;i!,... ,,;i;::..,.,,:;!!!:::,.....,!fftLL!;:,,ii!: +t:,:;ti;!t!;itfLL@#Gfiit!;!88!;;iCGf;:. .,. ,..,,,::,. .;C0!,:. :t;;!:tf:;G;,,, ..,,,,,,,;i:::!tfi;;,:;;;:;;!iiiCf!;::,:t:: +i;;;!!i!fGLLC@GLLG@t:::!tLtt@CiCL!;:, .. ..... .!i:,..::,;G!:;;::t:!C:.,::,,..,,!i!:tf:;!;;!ii!;;CGfLLf!itfCtf;;;!!::, +fitfitf0G0#08##G0#L!::;:!ifffC;::,...,,,. .. . :i;, .,:,,;:::;G:;L!tft:.,;!G!,;ii!!:,,!ff!;!;;iG!:f##@GCCftLi!!!!!ttt;:GLff;! +LittCC@88######00#0i;::!iCGt;,,..,,,,,...,....,:,.;G0:,:;,,,,!C:;C:i;;;!;:.,,;Ci,,::::,,;;;;:;::;f@i!C8#GCGC;;;;iit:;CL!;:!fttLC +GftffC####8##@GC0L#@t!;LL!;:......,::,, . ,i:,!!:,:it;:::;;,,:i:,,,!!:i!,:;,:;;,,..,,::;;;;;tt:;if;:;ii!;itiitLtt!;!Gtt:,!tGCfG +#G00C8G0GLLLffGtttC##tt;;:,,,.,.,.,,:,,. ,tC;,,.,,;GL!ti:,. .::,,.,,,,,,.,,,.,;,..:tiii!t!!fti!!;:,:;i!!iC00GfLCf;Li!;::;!ii!t +#G###Lft!;::;t8i;GiCt!,,:;;::::;,;,::i:.,,,,:!C;,,,!@L;;::,,:,,,:C!;t, ....,,.,;,.;i!!!!;;;;!!!Cf!::!!ttLf!ii!;;!;;ii!;;;:;i:if +8000GLt!!!;!if8i;;;,,....,,.,.,,,..,i@!:i!:!f;;i!!iC8;. ,,,,;:,;:t!CL: ,..,,,,,;;;;!i!ff:,itLtfLi;:,:::;;;::,,,,;:;i!iitt!!;:;f +#@CL0@0LCL!i0L8!!;:;:::,,.,,::,.:,.,88;,::!0t:,:::;;::. .,,:,f;:;, .,:..,:LGftti!!!;!!ifitt;:,::::::::::::;;;!ft;!!!!!!;tG +80G@8###@@Cif#f;:!,,;;;;:::iGt;:;;.,iLi;i:CL;,,,,,,:,..,,..,. .:..,,. ..,,,,,.,tGf!!!;;!;::::::;f;:,:i;!iii!ii!!iL!!Cit!itiCC!!C +fC0GGGGCGL8Lf@i,.,,..,,,,,,:!;,,;;::;0GC@!fL;,::,,,:i;,:;:::. . .,,;:,;,!Cf;,,i!:!t;::;!:!Li;;;;!;;;iiiti!!iiiitittfiit!;L +CGtf8CCGLtftfGi::!;:,,,,,..... .,;Gf!!t8i:C8!!C;:::::::,.,,:;;;:;;:;!!!;:,:,,!tt!;:;;;::;:::!!;iLtiii!!!;;;;:;t;;!ffCtit0fii!iiL +CiiL#C0##C;:LCiifLL!:,...........:i;;G!::;GLf#0;:::::,.,,.!fG8CffffLCGGCfi!:::;;;t!;tt!f;;!!;;;i!!;:;;;;::t;;!itti!iGf;it!tfCf8# +Ct!8Lfftfi::;ttf!::::,,,,,,,,.,,,::;;i;: ;88@i!:.,,,,. .::!it@ftitfttfffG@@Gi;::;;::tt!t!!ft:::!!;:,,,;t:;;i!t88@C;;ii!!!!itiL#G +:!;;!fi:!L,:t:!0;.,;!;;;!;,::::t!;t!:ii;:f#C!:;L!,::,, .!LCLi!;!it!ifLLffL@#G!ti;;:!i!;;;i;:;:;Li;;;;!!;;i!tttttiii!t!fL0i!;!if + . ,:;,,;,:G;:LC,:::::;;,:::;ttfi!:;8#f@#t!,:!C0;.. ,!L;:i!:::,:;;iiitf@#8t!!;:iCii;;;;;;;!Gtttttti;;::;!;;;;;!f0ftLtti!;!i +,,. :L:,:;:,,:,,,,,;i;!i!;t!::t##fi!::.,:!;,:::,. .,,;!!:,:,....,:;,:i!!!tCG;:;iitiCtitifti;!!!!;::i:;t!:;;!!G@CCGGiGti0L +.: . . ..,;:..:,,:,,..,::,,,,::;iLLtft,,::;;!G!fLi!..!,,::,;;,.. ...,,,:i!LL::!tLt!t!!!!tf!:,,;!!,:ti;:::;;::ii!;!;!i!!i! +, . !C: ...,: .:,i,,!.,!8@8i;:;!:,tGGLL!fG!,,,,,:ti:,. :!,:!;!i!;;ft!!!;;itf!;!:,.,:::,:;ti;:::,,,,,.,,..,,;Li +L!,. ,,, ;G: .: ,;.,i:;i:;:!8Cif8;:Lt,,:;;:,,:fL;::..,;C0i;,...,,.......iLii;;!!;tf:!ft!;;!;:,:;!!;;!ii!i;:;;;i!::,:;;:::! +f8@!,. ift!:iL!,,;t;:!:;L!;t::;!i::0#i;8i, .:if!,.:,:iL88Ci!;:..i. :ft;:.,i;;::::,:,itf!,;tCLfLL;;!;!tLtiLt!;;:fG!:;; +fG80t :!ittLGiitttL!:t;:!::;.,ff;!G8ti0f!,,:,::,,:::!: ,!,,!iC@##@Gtit;..ifC##@f!!!!;;:;!i!!!tL!:;tft!ii;!f:ifL;iLit;:t!;;tif +i!!;,. ... .,,!C!.:;;:!::;,,:.i,:!L0t;tGGtLf::;!iti;,:;,,,.:, .,;tC@##@8Gt,,#########fiL;;:tGGi;!C;,!tLti;f!:,,::,.!Ci!i!CLftff! +ffftt!:!!. ,t: ;L::C:;i,,,:L:,fG;:;!:;f!,.:;!;;::;;i!:,,,.. .,;!!!!!;,,;iitC####i;;:,,!!!,:!;:,,:::::::::,:,,.!Gi!;f@###### +#####8;,!, ,f; ,if;!C;;;,::;i:::!fG!,;;:.,!ff;!!;;CLfiiL!;, ....,,::... ,:!;::;t!,,,,,,:::,,:::,..,;ittff;,!t!i!!fLfftL8 +######; ,!. ,!: .!0!;t:;:,L,.: :08CLti;:,!t!:,,,::::f0fi,. .,:::::;i,,:;:,. .,:;;!!;!i!:;,:t!;!,,!!:;ii,,,,:LiifCL:!;! +#CffCL: .;. ,f: ,fG,.:..::. . .:;;:;f0;,,:::::;::,::;;,,. ..,,,::::;:;LCfi: ..,,,.,,,,...,::;..:, .;. ,,:,;:;!:,.,: +C!::;fi;:. :f: .,,. .,, :!tti:,:iLLLffLL0C0@0C0tiitfiititiLttGfLf8iiffti!!!!!;:,,..,,,... ... .::.:,;: .., +f!:::;f@L, ,t; .,..,.,, :###@t:i##@###@L880###@@888888888@@@@@@8888@@888888G0G!,,,:;!;;::, .. , ..,,... .. +fti!;;t@@: ,t: ..,;:,, . ,Lfi!!;@@tiiffffti!;!!!!!!!!!!!!!!!!!!!!iL##fiiiii!!!:,. ........ .,:,,,. . . . ., +!;!ft:;ff,. .!. ,...., , :iti;,.,:GCLGi :;!Gf,.,,,::......,::::::,,,.. .,.,,,....,. ..  +!,,::,,::, ,. , .,. .. .::,.. .:t!;:. .,:.,::. ::::,:::;i!;iLLfftffi;;::,,,.,:;:,,,::;!i: ., +!:,,,,:;i. : ,.,:....,. :,..,.,..,,.,:;:, .Cf,;i, .;,,,:;;it!;;!!!!iitffCLt!;,.,:t!,:,.,;;;;:,::;: +ti;::::;!, : .,... , ,,., !; .:;!,G@0!i!;!iii,. .,,,tC, ,,,,,,::::;!:,:;::::;;;:,.. .,,....,!t!!tftt!; +tiitt!:;i, . . . ., .,,. ...:!fifLC8#####: .,,. .::;!;;:,,,:::,,,,,,,,,.... .:;:,:::;;;;!!!!!! +tfLLtttti, . .. ,,..... ,##L#########; :t; !i .:!tiiittiiiii!!!i!!;;::::::::::;!i!!!;;!;;;;;;:: . .,;!;!L;;,,:!;,.:;,:,,. ,;!, i.fi.iittti, ,..., ., . ,,, .,,:::;:,,....:;!;..,::,,,,......,,,  +...,,...,!CL:,,tLi:.,,.,,,..;!. .;,;8f!i!;,..., ..,. ...:;i!. . . .;:... ,:;;:, . . ...... .. ........,...., +:::!i:,..,,:;,:;!!,.. .;0!:;!: .,:::!f;;C8f;. :;,.,;;;, .!:..:t.... .,.....;:..,,.. ...,,.,,... ....,,,...,::,::;;!,.,; +G!;;;!;::,.,,,,,,,,. .,;0#t0f,....;LtfLC8i!;::. ....:,..,,..::;;:..!: . .. ,:....,.. ....,....,,,,..,,;!;!!;::,.,,,,::::;;; +Gt!!::!!!!:,,:;!ttt;;;;:i##i;,;i;.:!tL0Gt:.. . . .:;. !GG!.,,,, .,.. ......,,,,...:, .:,!tti;,,,:,,,,,:;::;;;:!,,fCfi +Gt;;!!!!;;!;:;CG8#0C0C;!:;08!;!::;!tGC!:,.,,..,. ..... .;8t..:;!i::;t;::;i!, .. .,;i;::..,.,,::!!!:::,.....,!fftLL!!:,,ii!: +t:::;ti;!t!;!ttfL@#Gf!ii!;!88!;;iCGf;:. .,. .. ,,,::,. .;GC;.:. ,fC;;!:tf:;G;,,, ..,,,,,,,;i:::!ifi;;,:;;;:;;!iiiCf!;,,,:t:: +i;::;;;;fCLCC8GLfG@t:,:!tLtt@CiLL!;:, .. ..... ..!!,,.,:t:!G!:;;::t:!C:.,::,,..,,!i!:tf;;!;;!ii!!;CGffLf!itfCtf;;;!!::, +i!ttittLC0#08##G8#L!::;:!tfffC;::,...,., .. :i;, .,;,,::i;fL,;L!tft:.,!!G!,;ii!!:,,;ft!;!;;iG!:f@#@GLCftLi!!!!!ttt;:GLff;! +Litf0C008######00#Gi;::!tCCt;,,..,,,,,...,....,:,.;G0:,:!,,,,tG!i!,i;;;!!:,,,;Ct,,::::,,;;;;:;::;f@i!L8#GCGC;;;;iit:;CL!;:!fttLC +0ffLLG####8##@GCGL#@t!;LL!;,......,:::,.. ,i:,i!:,;it;;::;;,;f;,...!!:!i,::,:;;,....,::;;;;;tt:;if;:;ii!;ittitLit!;!Gtt:,!tGGfG +#G@0C0G0GLLLffGtitC##tt;;:,,,,,...,,:,,. ,tC;:,,,,;GL!ft;,.,;,,,,.,,,,,,.,,,.,;,..:ti!i!i!!fti!!;:,:;i!iiC00GfLLf;Li!;::;!ii!t +@G###Lft!;::;t8i;GiCt!:,:;;::;::,;,::i:,,,,,:!G;,.,!#C;;::,,:,,.,C;;i, ....,,.,;,.;i!!!!;;;;!!!CLi::!!ttLf!ii!;;!;;ii!;;;;;i:if +8GG0GLt!!!;!if8i;;;,,....,,,,,,.,..,i@!;ti:it:!f:!;C8!..,,,,;::::fiCf,. ,..,,,.,;;;;!i!tf:,itLffLi;:,:::;;;::,,,,;:;i!iitt!!;:;f +#@CL0@0LLL!i0L@!!;:;:::,,,.,:;,.,,.,88;,::i0!:::;;!;;:.. .,:,.,C;::,...,:..,:L0Lfft!!;;i!tLitt;:,::::::;:::::;;;!ft;!!!!!!;tG +00G@8###@8Lif#f;:!,,;;;;:::;00!:;;,:tLi;!:CC;,,,,,,::,... .,..:. ,;,. ..,..,,.:tGf!!!!;!;;:::::;f;:,:i;;!ii!iiiiiL!!Cit!itiCC!!C +tC0GGG0CGL0ft@i,.,,.,,,,,,,:;;:,;;::;0GG@!fC;::;,:::!!;,:,:!:....,,,,:,,...,:,;Ct;,:i!:!t;,:;!:!Li;;!;!;;;iiiti!!i!iititffiit!;L +CGtf@CCCftttfGi::!;:,,,,,.......,;Gf!!t8t;C8!i#i,::::::;,...,:;!i!i!fft;;;!!;:;!!;;;;;::;:::i!;iLttt!!i!;;;::;t;;!ffCtit0fii!iif +CiiL#C0##L;:LCtifLL!:,........ ..:t;;G!::;0Lf#8;;:::::,,:;:.,tGt!0ftitttLGGCCt!!!fi!ttif;;!!;;!i!!;:;;;;::i;:!itti!iGf;it!tfCf8# +Ct!8ffttt!::;ttf!::::,,,,,,.,.,,,:;!!i;: ;08@i;;;;.,,,,..:t:,:!!iLGii!ifttfffLLfLi;;tt!t!!ft:::!!;:.,,;f:;;i!t88@C;;ti!!;!ttiL#G +:!;;!fi:;L.:f:!0;.,;!;;;!;,::::i!;ti;ii;:f#G!;:;;i!:,,::..,!;,iGG!;;;!ii!!tfff!iG@L!ii!;!;i;:;:!Ci;;;;!!;;iifftftii!!t!fL0i!;!if +. . .:;,,,.:G;:LC,,::::;;,:::;itft!:;8#f@#t!::;:,,f8i:. .::tC!::!!::,,,:;;;!!iC@LfCii;;;;;;;iGttttfti;;;:;!;;!;;!f0ftLtti!;!i +,: ,L:,:;:,,:,,,,,;t!!ii;t!::i##fi!::...,:;iG,,:;;. .,:,:!t;,,,,..,..,;,;iti;!iitiCfififti!!!!!;::i;;t!:;;!!0@CCGGtGti0L +.: . . ..,;:..;,,:,,..,::,:,,::;iCCtLt,,::;;!0fi!;!Li!, ;i,.,:,,:,,,, ..:C0;:!tLt!t!!!!tf!:,,!;!,:ti;:::;;::ii!;!;!i!!i! +:. . !C: ...,: .:,i,,!.,!@@@i;:!!:,t0GffLfL;;G!,,,,:,;it:,.. ,:,;!fLt!i!;;iif!;!:,.,:::,:;ti;::,,,,,,,,,..,,!Li +C!,. ,,, ;G: .;.,;.:i:;i:::!8Gif8;:Lt,,:;;:,:::,:tL;,;,.,,;L0i:,..,:,. .!f!:tf:!fi!;;!;:,:;!!;!!ii!i;:;;;i!::,:;;:::! +L8@!,. ift!:iL!,,;t;:!:;L!:t::!!i:;0#i;8i, ,,,:ff!,..;,,!f00f!;:,..: ,:::;::::::,iff!,;tCLfLL;;!:;tLtift!;;:fG!:;; +LG80t :!ittLGiitttL!:t;:!,:;,,ff;!08ti0fi,,:,:;,,:,.,,:i: .!!.,!tL@#@0Lii!:,;LfL@0Li;;:;!ii!!if!:;tLtiii;!f,ifL!tfit;:t!;;tif +i!!;:. ... .,,!L;.:;;:!:::,::.i,,;L0t!tGGtLf::;!ifi;,,:,,,,!,.,!. .,;tC@##@8Gt:G#######@!;:f00t;!C;,!tCfi;f!:,,::,,!Ci!i!CLftff! +fffft!;!!. ,t: ;L::C:;i,,::L:,fG;:!!:;f!,.:;;;;:::;ii::,:::,,. .,;!ii!!!:;itL#####:.,!i!:;!;:,,:::::::::,:,,.!Gi;:t@###### +#####8;,!, ,f; ,if;!C;;;,::;i,,:!L0!:;;:.,!ff;!!;;CCCL;;iC!,:,. ....,::,,. .:!!!;:,,,,,,:::,,:::,..,!iitff;,!t!i!!fLfftL8 +######; ,!. ,!: .!0!;t:;:,L,., :08CLti;:,!t!:,,,::;:,t0Gt!;,. ..,:,,;!i;;:. .:;;!!;!i!:;,:t!;!,,!!:;i!,,,,:LiifLL;!;! +#GffCL: .!. ,f: ,f0,.:.,::. . .,;;:;f0;,.,,..,:::,,,;!!:,,,.,,,,,::;:::iCf: ..,,,.,,,,,..,::;..:, .;. ,,:,;:;!:,.,: +Gi;:;fi;:. ,f: .,,. .,, ,!tti:,:iLLfftttLtC8GC@tfttCtii!tiGLtCfGfC!;ifti!!!!!;:,,..,,,... .. . .;:.:,;: .., +L!:::;f@L, ,t; .,..,.,, :###@i:i##@########0@@@@88@@88888@@@@@#@#@00@888888G0G!,,,:;!;;::, . , .,,.,. . +Lti!;;t@@: ,t: ..,;:,,. . ,Lfi!!;@@tittttttti!;!;!!!!!!!!!!!!!!!!!!i8#Liiiii!!!:,. ........ .,:,..... . .. ., +!;!ft:;ff,. .!, :...., , :iti;,,:,;ftff, ,tfL!,..,:,.. ..,::::::,,,.. .:.,,,....,. ..  +i,,::,,::, ,. , .,. ,. .::,.. ,,!0ii: .,,.,,:!:,:,,:::;!!;ifLfffffi;;::,,,.,:::,,,::;!!: ., +!:,,,,:;i. : ,.,,... ,, .:,..,!8;,:,,,. .Li::. ;!,.,::;;it;;;;!!!iitffLLt!;,.,;f;,:,.,:;;;:,::;: +ti;::::;!, : .,... ., ,,., !0t, ,!ii!:,!;:,,. . .,,iL. ,:,.,,,,::::;!:,::::::;;;:,.. ,,:....,!t!!tttt!: +ti!it!:;!, . . . ., ,:,. .,,,,:,G8t;tttfffL!, ,,. .;:,;!;;:,,,:::,,,,,,,,,.... .:;:::::;;;;!!!!!! +tfLLtttti, . .. .,.... :: #########0;i ;i ,!!ttiittiiiii!!!i!!;;::::,:::::;!i!!;!!!;;;;;;::  .,:!;!L;:,,:;::,:;,:,,. ,;!, i.ti.iittti, ,..., ,, ,,, .,,:::;,,,....:;!:..,::,,,,.. ...,,,  +...,,...,!CL:,,tCi:.,,.,,,..;!. .;,;8f!i!;,..., ..,. ..,;!f;. . . .;,. . ,:;;:, ... ..... . ........,...., +:,:ii:.. ,,:;,;;!!, ;0!:;!: .,:::;f;;C8t;. ::,.,;;:, .;;,,!t.... ., ....::..,,.. ...,,.,,... ..,,,,.,.,,,,::;;!..,; +G!;;;!:,,...,,,,.,,. .,;0#t0f,....;ftfLC8ii;:,. .. .:,..,,..;:;;:..!: . .. ,:....... ..,.,....,,,,..,:;!!!!;::,.,,,,::::;;; +Gf!;::;;:;,,,:;!ttt;;;;:i##i;,;i;.:!tL0Gi:.. . .:: .!GC; .,,, .,.. ......,,,,...:, .::!tti;,,,:,,,,,:;::;;;:!,:fCti +Gt;;!!i!::i::;GG8#0G0C;!::G8!;!::;!tGC!:,.,,..,. ...... .;0! .:;!i::;t;:::i!, . ,:;!;::..,.,,:;!!!:::,.....,!fftLL!!:,:ii;: +t:,:;fi;;i!;!itfL@#Ct!it!;!88!;;!CGf;,. .,. .. ,,,::,. .;Gf:.:. :GC;;!:tf:;G;,,. ..,,,,,,,;i:::!tfi;;,:;;;:;;!iiiCf!;,,::t:: +!;;:;;;;tCLGC0GLLC8i:,:!tLit@CiCL!;:. .. ..... .;;,,.:;f;!G!:;;::t:!C:.,::,,..,,!i!:tf:;;;;!ii!!;CGffff!itfCtf;;;!!::, +ittttttLC8#08##G8#L!:,;:!ifffC;::,.,..,, .. . :i;, .,:,,,:i;Cf,;L!tft:.,;!G!,;ii!i:,,;ft!:!;;iG!:f@#@GCCftLi!!!!!tti;:GLff;! +CffLGG800##@###00#Gi;::!tCCt;,,..,,,,... ,....,:,.;G0:,:!,,,,fG!i;,i;;;!!:.,,;Ci,,::::,,;;;;:;::;f@i!L8#GCGC;;;;i!t:;CL!;:!fttLC +0CLCG0###@0##@GCGL#@t!;LL!;:......,::,,.. ,i:,i!:,;if;;::;!:;t;,,..!!:!i,::,,;;,...,,::;;;;!tt:;if;:;ii!;iiiitLit!;!Gtt:,!tGCfG +#0#8GGG0GLLLffGittC##tt;;:,,,.,...,,,,,. ,iC;:,,,,;GC!ft;,.,!,,,,.,,,,,,.,,,.,;,..:ti!i!i!!fti!!;:,:;i!!iC00CfLLf;Ci!;::;!ii!t +@####Lfti;;:;t@i;GiCt!,,:;;:::::,;,::i:.,,,,:!0;,.,!#C;;::,,:,:.,C;;i. ....,,.,;,.;i!!!!;:;;!!!Cf!::!!ttff!ii!;;!;;it!;;;;;i:if +8000GLt!!!;!if8i;;;,,....,,,,.,.,,.,i8!:ti:ti;if;!:C8!..,,,,;,,,:fiGt, ,..,,,,,:;;;!i!tf:,itLtfLi;:,:::;;;::,,,,;:;i!iitt!!;:;f +#@CL08GLLL!i0L8!!;:;:::,,,,,:;:,:,.,88;:::iG!;:;;!;;;:.. .. ,;..,G;::....,:..,:L0Lfft!!;;i!ifitt;:,::::::;:::::;;;!ft;!!!!!!;tG +G0G@8###@0Lit#f;:!,,;;;;::::f0t:::,:iLi;!;CL;,,::::;:.... , :. ,;,. .,..,,.:tGf!!!!;!;;:::::;f;:,:i;!!iiiii!!tL!!Cit!itiCC!!C +tC0GGG0CGL0ft@i,.,,..,,,,,,,:;:,:;;;!0CC@!fC;::;,::;!!;,,..,,,,,,::;:::,...:;,;Cf;,:i!:;t;,:;!:!Li;;!!!;;;iiiti!!i!iititffiit!;L +LCtf8CGGfitif0i::!;:,,,,,........:GL!!f8t;C8!i@!,::::::;,,:iftLLffLCCCLt;;!;::ifi;;;;;::;:::!i;tLtti!!i!;;;::;i;;!ffCtit0fii!iif +CiiL@CG##t,:LCiifff!:,........ ..:t!!G!::;GLf#8;;:,:::,,:!f;f@CCLfLLffLCG000CtiitLi;ttif;;!!;;;i!!;:;;!;::i;:!itti!iGf;it!tfCf8# +Cf!8fftit!::;tif!::::,,,,,,.,.,:,:;!!i;: ;08@i;;!:.,,,,..:::!CLt!!ii!tLCG0LC8@GfL!::tt!t!!ft;::!!;:.,,;f:;;i!t88@C;;ii!!;!itiL#G +:;;;!ft:;f.:t:!0;..;!!;;!;,::::ti!tt;i!;:f#G!;:!;i!:,::,. .:L!::!!:,::;;!!tL!i8!,;;:!i!;!;i;:;:!Ci;;;;!!;;tifttftiii!f!fL0i!;!if + . .;!:,,.:G;:LC,,:::,;;,::::ttft!;!8#f@#f!:;;;,:C8!:,... .,::,i;,::,,,:,,,,,::!L!:tGii;;;!;;;iGttttfti;;;:;!;;!;;!f0ftLtti;;!i +,: :L:,:;:,,:,,,,,;t;!i!;t!;:t##fi!,:...,:!LC,;;!;. ,,...,:!;:. ,:;,;f00;;!iitiCfififti;!!!!;::i;;t!:;;!!0@CCGGtGti0L +.: . . ..,;:..;,,:,,..,::,:,,::;tCCtft,,::;;!0fii;tf!;..!!,,,,,,,,,.........:;:;;!tLt!t!!!!tf!:.,!;!,:ti;:::;;::!i!;!;!i!!i! +:. . !C: ...,: .:,i,,!.,!@@8i;:;!:,t0GffLff:tL;,,,::,!ff:..!;;!!;i,,:;:. ;L!!!;;itL!;!:,.,:::,:;ti;::,,,,,,,,,..,,!Li +Gi,. ,,, ;G: .;.,;.:i:;i::,!8CiL@!:Lt,,:;;:::::,:Li:,;.,,:!C8!::,,:!i!,,C0Li: ,!;tf:!fi!;;!;:,,;!!;!!i!!i;;;;;i!::,:;;:::! +C@#i,. ift!:iL!,,;t;:!:;L!:t::!!i;;0#i;8i, ,,,:fi,. ,!,,iL80t!;:,,:.,;fi!;,,,:;::::::,itf!,;tCLfLL;;!:;tCtift!;;:fG!:;; +C088f. :!ittLGiitttL!:t;:!,:;,,ff;i08tiGf!,,:,:;,,:,.,,:i, ,i,.,!tC###8Lii;,,iLC@#Gf!::,;!ii!!if!:;tLtiii;!L,ifL!tLit;:t!;;tif +t!!!;,.... .,,!C;.:;;:!::;,,,.i,:;L0t!tGGtLf::;!iti;,,:,,,;!..,; .,;tG@##@8L:,8#######i:;:L00t;!C;,!tCfi;L!:,,,:,.!Ci!i!CLftff! +ffffti;!!. ,t: ;L::C:;i,,::L:,f0;:!!:;f!,.:;;;;:::;!i:,:::,,. .:;!ii!;::;itC####!..,ii!:;!;:,,:::::::::,:,,.!Gi!:f@###### +#####0;,!, ,t; ,if;!C;;;,::;i,,:!L0!:;;:.,!ff;!!;;CLLt;iLf:::.. ....,,:,., ,:!!::;,,,,,,:::,,:::,..,;iitff;,!t!i!!fLfftL8 +######; ,!. ,!: .!0!;t:;:,f,., :08GCfi;:,!t!:,,,:::,;08L!!,. .,::,:!!;:;,. ..:;;!!;!i!:;,:t!;!,,!!:;i!,.,,:LiifLL;!;; +#CffGC: .!. ,f: ,fG,.:.,::. . ,:;;:;f0;,.,.. .....,:;!;:,...,.,,,:,;;::LCf: ..,,,.,,,,,..,:;;..:, .;. ,,:,;:;!:,.,: +Gi;:;fi::. :f: .,,. .,, ,!tff:.:iLLfftttLttLttGttitCiii!tiGftLfCfG;!tfti!!!!!;:,,..,,,... .. .;:.:,;: ,., +Li;::;f@f, ,t; .,..,.,, ;###@i:i##@###########@888@@88888@@@@@#@@8G08888888G0G!,,,:;!;:::, . , .,,... . +Cft!;;t8@: ,i: ..,;:,,. . ,Lfi!!;@@tiiiiittti!!!!!!!!!!!!!!!!!!!!!iL#0i!ii!!!!;:,. ........ .,:,..... ... .. +i!iLt:;ff,. .;. :...., , :!ti;,,,:;iiL! .ftL: ...,,. ..,:::::,,,,. .:,,,,,...,. ..  +i::::,,::, ,. , .,. .. .::,.. ,:0ftL, .,,,::,,,.:,,,,:;!;;iffftfffi;;::,,,.,:::,,,::;!!: ., +!:,,,,:;i. : ,,,,....,, .:,..,;C!::::.. ;C:.,!:::..,,:;;it;;;;!!!!ifffLLt!;,.,!L;,:,.,:;;;:,::;: +ti;::::;!, , .,.,. ., ,,., ,Gt,,;ii!;,!t!;;;,..,, ,:C,,i:,,..,,,,::::;!:,:::::;;;;:,.. ,::....,it!!tftt!: +tiitt!:;!, . . . ., ,:,. .,,,,.i8C!tftfCC#L;. ..,;;:::,:;!;;:,,,:::,,,,,,,,,.... .:;:,:::;;;;!!!!!! +tfLLfttti, . .. .,... ,; C#########,!i ;, :iiii!!ttiittiiiii!!!i!!;;::::,::,::;!i!!;;;!;;;;;;:: . ..,,;!;!L;:,,,;;,,;;:::,..,;!, i.ti.iittti, ,..., ,, ,,, .,,:::;,,,....:;!:...::,,,,.. ...,,,  +...,:,..,!CL:,,tCi:.,,.,,,..;!. .!,;8f!i!;,..., ..,. ..,;!f:... .;:. . ,:;;:, .... ..... ... ........,...., +:::ii:...,,:;,:;!!, ;0!:;!: .,:::!f;;C8t;. ,:,.,;;:, .;;,,!t.... ., ....::..,,.. ...,:.,,... ..,,,,...,,,,::;;!..,; +0!;;;!:,,...,,,,.,,. ,;0#t0f,....;LtfLC8ii;::. .. .,,..,,..::;;:..!: . .. ,,..,......,..,....,,,,..,:;!;!!;::,.,,,,:::::;; +Gfi!::::::,,,::!ttt;;;;:i##i;,;i;.:!tL0Gi:.. . ,:, .!GC: ,,,. .,.. ......,,,,...:, .::!tti;,,,:,,,,,:;::;;;:!,,fLfi +Gt;;!;i;::!::;0G@#0C0C;i::08!;!::;!tGC!:,.,,..,. ..... .;0! .:;!i::;i;:::i!, .. .:;i;::..,.,,:;!!!:::,.....,!fftLL!!:,:ii;: +t:::;fi;;i!;itfLC8#Lt!ii!;!88!;;!CGf;,. .,. ,. ,,,::,. .:Gf:.:, :GL;;!:if:;G;,,, ..,,,,,,,;i:::!tfi;;,,;;;:;;!iiiCf!::,,:t;: +i;;;;!!!tCCCC#GLLC0!:,:;tLit@CiCL;;:. . .... ..;;,..:;f;!G!:;;::t:!C:.,::,,..,,!i!:tf:;;;;iii!!;CGffLf!itfCtf;;;!!::, +tfffttfLC@#08##G8#L;:,;:!ifffC;::,....., .. . :i;, .,:,,,:i;Ct,;L!tft:.,;!G!,;ti!!:,,;ft!:!;;iG!:f##@0CCftLi!!!!!ttt;:GLff;! +CLLLGG@00##@###00#Gi;::;tCCi:,, .,,,,,...,.,..,:,.;G0:,:;,,,,fG!i;.i;;;!;:.,,;Ci,,::::,,;;;;:;::;f@i;C8#GCGC;;;;iit:;CL!;:!fttLC +8CLC00###80##@GCGL#@t!;LL!;,......,::,,. ,i:,!!:,;it;;::;!:;t;:,..!!:!!,::,,:;,....,::;;;;!tt:;if;:;ii!;iiiitLit!;!Gtt:,!tGCfG +#@#8G0G0CLLLftGiitC##tt;;:,,,,,...,,,,,. ..,iC;,,.,,;GCift;,.,!,,,,.,,,,,,..,,.,;,..:ti!i!t!!fti!!;:,:;i!!iC00GfLLf;Li!;::;!ii!t +@####Lfti;;::i8i;GiCi!:,:;;::;::,;,::i:.,,,::;0;,.,!#G;;::,,:,:.,C!;!. ....,,.,;,.;i!!!!;;;;!!!CLi::!!ttff!ii!;;!;;it!;;;;;i:if +@880CLi!!;;!!f8i;;;,,....,,,,.,.,..,i@!:iii!;;iLi;:0@!..,,,,:::,:Li0i,. ,..,,,,,:;;;!i!tf:,itLtfL!;:,:::;;;::,,,,;:;i!iitt!!;:;f +#@CLGGGLLL!i0L8i!;:;;::,,,,,:;:,,,.,88;,,;t;::;;!::;;:.. .;..,G;::,. .,:..,:LGLfft!!;;!!iL!tt;:,::::::::::::;;;!ft;!!!!!!;tG +08G@8###88L!t#f;:!,,;;;:::;:!Gf:;:,:iLi;!;i;,,::,:;,.. .. .. .:,..,.,.,,,.:tGf!!!!;!;;:::::;f;:,:t;;!iiiii!itL!!Cit!itiCC!!C +tG0GGG0CGL0tt8i,,,,.,,,,,,,,:::,:;;;;0GC@!Lf;,,::;!!;,...,:;!!!;!!!;:,:,,;::;:!Cf;,:i!:;t;,:;!:!Li;;!!!;;;iiiti!!i!iititffiit;;L +LCif8CGGfitifGi::!;:,,,,,,...,..,;Gf!if8t;C@!;;:::::::,:iLG08880@@0i,::,.,:,:itfi;;;;;::;:::!!;tLttii!i!;;;::;i;;!ffCtit0fii!iif +Ci!f@LG#@i::LCtifLf!:,...........;t!!G!;:;GLf@t:::::,,,iGGLtttfG8i;:,if:,,,,:;;itLi!ttif;;!!;;;ii!;:;;!;::i;:!itti!iGt;it!tfCf8# +Ct!8ftiii;,,!ttf!::::,,,,,,.,.,,,:;!!i;!,!08@i;,.,,,,..:;ii!!ifL:. ;!:it:;:,:..:Li;;tf!t!!ft:::!!;:.,,;f:;;i!t88@C;;ti!!;!itiL#G +:;;;!ft:;i.:t:!0;..;!;;;!:,:::;Cf!ft;ii;;f#G!;:ii::::,. .;tfLGC, ....,,... ,,;!:!i!;!;i;:;:!Ci;;;;!!;;tifftftii!!f!fL0i!;!if + . .;!:,: :G;:LC,,:::,::,:::;LCCfi;!8#f@#f!:::!0G,,... .,,:;:.. .., .:;;!;:iCii;;;;;;;iGttttfti;;;:;!;;!;;!f0ftLtti!;!i +,, :C:,:;:,,:,,,..;i;!i!;t;;;t##fi!::..,;!:,;!!, .,, .. .,;,..,iitfGL::!iittCfififti;!!!!;::i:;t!:;;!!0@CCGGtGti0L +.: . . ..,;:..;,,:,,..,::,,,,::;tCCtft,,::;;!G;!Ci;, ;t:!!,. .,,,::itii;!::i!ff::!tLt!t!!!!tf!:,,!:!::t!;:::;;::ii!;!;!!!!i! +:. . !L: ,..,: .:,i,,i.,!@@8i;:!i:,f0GfLL!Gi,,,,:,;LC;,,!!!ittiCf!t;:;!!;:ti!i!;;itL!;!:,.,:::,:;ti;::,,,,,,.,,...,!Li +Gi,. ,,, ;G: ,;.,;.:t:;t:;:!8Cif8;:Lt,,:!;::,::L;::,.,,;L8i;;:::;!;;:;LG!:tt!;;!;tf:!fi!;;!;;,:;!!;!!i!!i;;;;;i!::,:;;:::! +C@#i,. ift!:iL!,,;t;:!:;L!;t::;!!:;0#i!8i,. ,;fi,.,!,,if08fi;:,.,,.:;fi!;;:.,i;;::::::,itf!,;tCLfLL;;!:;tLtift!;;:fG!:;; +C08@f. :!ittLGiitttL!:t!:!::;,,ft;i8@tiGf!,.:,::,,:,:!; .!:.,!iC###8Cii!:.:fC0@8Li!!!;;,;!ii!!if!:;tLtiii;!f,ifL!tLit;:t!;;tif +fiii;,......,,!C!,:;;;!::;,::.i,:;L0fifGCiLf::;!iti;,::,,,.,;. .,;fG###@8L;,f########f!L;::L00t;!C;,!tCfi;L;::,,:,,iCi!i!CLftff! +LLffti!!!. ,t: ;L::C:;i,,,:L::f0!:!!:;f!,.:;;;;::::;;,::,.. .:;!ii!!;,:!tf@####i;;:.,ii!:;!;:,,:::::::::,:,,.!Gi;:f@###### +#####0;,!, ,t; ,if;!C;;;,::;i:,:!fG!:;;:.,!ff;!!;;CtiLLf::,. ....,,::... ,;!!::;i!,,,,,,:::,,:::,..,!tttff;,!t!i!!fLfftL8 +######; ,!. ,!: .!0!;t:;:,L,., :00GCfi;:,!t!:,,,,,:L0Li!,. .,::,:;ii::;::,. .,:;;!!:!i!:;,:t!;!,,!!:;i!,.,,:LiifLL;!;! +#CffCC: .;. ,f: ,fG,.:.,::, ..,:;;:;f0;,... ... ,;;::,,....,,,::;;::LGCLt: ..,,,.,,,,...,:;;..:, .;. ,,:,;:;;:,.,: +G!;:;fi::. :t: .,,. .,, ,ifLL:.:iLLfftttLttLtit!iitfitfitiLtfGLCfftfffti!!!!!;:,,...,,... .. .;:.:,;: ,., +L!;::;t8f, ,t; .,..,.,,. :####i:i##@##############@88888888@@@@8GGG888888888G0G!,,,:;!;:::, . , ..,,... . +Lti!;;i8@: ,t: .,;:,, . ,LLi!!;@@tttffffi!!!!!!!!!!!!!!!!!!!!;!t0@t!!ii!!!!!!:,. ...,.... .,:,..... .... ., +t!ift:;ff,. .!. :...., , ,!ti;,:tLfGt .Ctfi, ..,,. ..,:::::,,,,.. .:,,,,....,. .  +t::;:,,::. ,. , .,. .,. .::,..,t!;!, ..:,,:!:,,,,.,,,,,:;!;;ifffftffi;;::,,,.,:::,,,::;!!: ., +i;:,,,:;i. : ,.,,... ,, .:,,.,,,,,,.,:;:,. .Li,.,t!;;;:..,,:;;it;:;;!!!iitffLLt!;,.,iL;,:,.,:;;;:,::;: +fi;;:::;!, , .,., , ,,., .!. ,;i!!:080iii:;ii!,. .,tL.,i!:::,..,,,,::::;!:,:;::::;;;:,.. ,:,....:it!!tftt;: +fi!it!:;i, . . . . ., ::. .,,.:ififLLG#####: ,,.;t;:::,,:;!;;:,,,:::,,,,,,,.,.... .:::,:::;;;;!!!!!! +tfLLfttti, . .. ,...... :8Cf#########; !t ., :!!tti!iftiittiiiii!!!!!!;;::::,:::::;!i!!;;;;;;;;;;:: . ..,,:;;;L;;,,,;;:,;;:;::,,:;!, i.ti.iittti, ,..., .,, ,,, .,,:::;,,,....:;!:...::,,,,.. ...,,,  +...::,,,,!CL:,,tCt:.,,.:,:..;!. .;,;8f!i!;,..., ..,. ..:iLf, . .;:. . ,:;;:, .... ..... ... ........,...., +:::!t;...,,:;,:;!!,.. ;0!:;;, .,:::!f;;C8t;. ,:,.,;;:: .!;:;L; ... ., ....::..,,.. ...,:.,,... ..,,,,...,,,,::;;!..,; +0!;;;!:,,...,,,,.,,. .,;0#t0f,....;LtfLC8ii;::. .. .:,..:,.,::;;, .!: . .. ,,..,......,..,....,,,,..,:;!;!!;::,.,,,,::::::; +0f!!::::::,,,,:!iti;;;;:i##i;,;i;.:!tL0Gi:.. . .:;, !GL, .,,. .,.. ......,,,,...:, .:,!tii;,,,:,,,,,:;::;;;:!,,fLti +Gt;;!;!;::;,:;CC@#0C0C;i::08!;!::;!tGC!:,.,,..,. ..... ,C8i..:;!!:,;t;:::i!, .. .:;i;::..,.,,::!!!:::,.....,!fftLL!;:,:ii;: +t:::;ti;;i!!tffLL8#Li!ii!;!88!;;!CGf;,. .,. ,. ,,,::,. ;GL;,:,,f8L;;!:if:;G;,,, ..,,,,,,,;i:::!tfi;;,:;;;:;;!iiiCf!;:,,:t;: +i!;;!!!if0GGG#0CLL0!,,:;tLit@CiCL;;:. . .... ..;;,..:;GLiG!:;;::t:!C:.,::,,..,,!i!:tf:;;;;!ii!!;CGffLf!itfCtf;;;!!::, +fLffitfLC##0@##G8#f;:,::!ifffC;::,....., .. . :i;. .,:,.,:!:Lt:;L!tft:.,;!G!.;ti!!:,,;ft!:!;;iG!:f##@0CCftLi!!!!!tti;:GLff;! +GLLLCG@08##@###00#Gi;::;iCCt:,, .,,,,,...,.,..,:,.;G0:.:;,,,,ff;!;.i;;;!;:.,,;Ci,,::::,,;;;;::::;f@i!L8#GCGC;;;;iit:;CL!;:!fttLC +8CLC@8###00##@GCGL#@t;;LL!;,......,:,,,.. ,i:,!!:,;if;;::;!,:;:;,..!!:!i,::,,;:,....,::;;;;;tt:;if;:;ii!;iiiitLit!;!Gtt:,!tGCfG +#8#800G0CfffftGiiiC##tt;;:,,,,,.,.,,,,,. ..,tC;,,,,,;GCift;,.,;.,,,.,,,,,,..,,.,;,..:ti!i!t!!fti!!;:,:;i!!iC00GfLLf;Li!;::;!ii!t +#####Lft!;:::i8i;GiCi!:,:;;::;::,;,::i:.,,,::!0!,.,!#G;;::,,,:. ,C!!;. ....,,.,;,.;i!!!!;;;;!!!CLi::!!ttff!ii!;;!;;it!;;;;;i:if +@800Cfi!!;;!!f8i;;;,,....,,,,.,,,..,i8!,ft;!!!LC;,,C8!. ,,,,,,,.:fiGi.. ,..,,,,,;;;;!i!tf:,!tLtfL!;:,:::;;;::,,,,;:;i!iitt!!;:;f +#8CLCCCLLL!i0L8i!;:;:::,,,,,,;;,,..,88;:i!;;;;;;!;;;:, .; .:G;::,. .,:,.,:LGLfft!!;;i!iL!tt;:,::::::;:::::;;;!ft;!!!!!!;tG +8@G@8###88L!t#f;:!,,:;;;:::::LL:::,,iLi;i;,::,,,iG: . .. .,,,;!:,...,.,,,.:tGf!!!!;!!;:::::;f;:,:i;;!iiiiiiitL!!Cit!itiCC!!C +L00CCG0CGLGit@i,,,,.,,,,,,,,::::;;;;;0GC@!:;::::!t:..,::!:..,,,;ii;.,::,,;::;,!Cf;,:i!:;t;,:;!:!Li;;!!!;;;iiiti!!i!iititffiit!;L +LLit0CCCfiiifGi:;!;:,,,,,,...,..,;Gf!!f8t;G!,::::::::iGL,,:::i!,,, ,:!:,,:,:!tfi;;;;;::;:::!!;tLttii!i!;;;::;i;;!ffCtit0fii!iif +Ci!f8LC@@!,:LCttfLf!:,...........:t!!G!::!8Li;:::,,,:L@i,,!f!,. ,:,..,,:;;itfi!ttif;;!!;!;i!!;:;;!;::i;:!itti!iGf;it!tfCf8# +Ct!0ftiii;,,!tiL!::;:,,,,,,.,..,,:;i!i;:.!8@8,.:,,. .i0: .:::,.,,.,,,:L;,:;;,,:;i!:;tf!t!!ft;::!!;:.,,;f:;;i!t88@C;;ti!!!!itiL#G +:;;;;tt:;i.:t:!0;.,;!;;;!:,:::;ft!ft;ii!;f#C!!,:;:, ,,,,,,:;;;!!::t;::titi:,.:f!;;:!i!;!;i;:;:!Ci;;;;!!;;tifftftii!!f!fL0i!;!if + . .;i:,:.:G;:CC,,:::,::,:::;G00Li;!8#f@#f!:iC,,,,. ....,,:;;;!t;!f!;:,,..;tii!:iGii;;;!;;;iGfttffti;;;:;!;;!;;!f0ftLtti!;!i +,, :C:,:;:,,:,,,..;i;!tt!t;;;t##Lti::::,,!i;, ,::. ,,:!tLt!!C@L:,..,;;itGG;:!iittCfififti;!!!!;::i:;t!:;;!!0@CCGGtGti0L +.: .. ..,!:..;,,:,, .,::,,,,,:;tLLtLt,,;;;;!Gi;..!i;i:,,,:;!!!;;!tfC!:;i::i!fL::!tLt!t!!!!tf!:.,!:;::t!;:::;;::!i!;!;!!!!i! +:. ,. iL: ,..,: .:,i,,!.,!@@8i;;!!:,f0G!Lf;,,,,:tGt:,:iiitt!:;tf!0i;::!!;::ft!i!;;iiL!;!:,.,:::::;ti;::,,,,,,.,,...,!Li +Gi,. .,,, ;G: ,;.,;.:t:;i:::!8Gif@!:Lf,,:!;::LL::.,,;f@C!;;!!;;!:::::!8;:!ff!:;;!;tf:!fi!;;!;;,:;!!;!!i!!i;:;;;i!::,:;;:::! +G##i,. tft!:iL!,:;t;:!:;L!;t::!!i;;0#i;8t:. .,;f,.::,if0@Gi!;:,,!,..,!iL!:;!!:.,i;;::::::,itf!,;tCLfLL;;!:;tLtift!;;:fG!:;; +G8@@L. :!ittLGiitftL!:t!:i::;,,ft;i08ti0fi,.:,::,,:;.,!,,!iC@###Gtii:..!LC0#8t;,,:!ii;;,;!ii!!if!:;tLtiii;!f,ifL!tLit;:t!;;tif +fiii!:......,,!C!,:!;;!::;,,:,i,:;L0tif0GtLf,:;!iti;,:;,,. .,;f0###@8C!,,#######@C;!CGtL!::L80t;!C;,!tCfi;L;::,,:,,iCi!i!CLftff! +LLLLfi!!!. ,t: !C::C:;i,,,:L::f0!;!i:;f!,.:;;;;:,,,;::. .,:;!ii!!;,,;tfL@####L;!!!;:,,ii!:;!;:,,:::::::::,:,,.!Gi;:f@###### +#####0;,;,. ,f; ,tf;!C;;;,::;i:,:tLG!:;;:.,!ff;;!;:iiCt:.. .....,::,... ,;!!;:,.;;i!,:,,,,:::,,:::,..,!tttff;,!t!i!!fLfftL8 +######; ,!. ,!: .!0!;t:;:,f,., :G0CCti;:,;i!:,,.,ifii, .,,,,:;!i, ,:::::,. ,,:;;!!:!i!:;,:t!;!,,!!:;i!,.,,:LiifLL;!;! +#CffGC: .;. ,f: ,fG,.:.,::, .:,,:;;:;f0;.... .::,,.. ..,,,:;;;;;:,!fGCLt: ..,,,.,,,,...,:;;..:, .;. ,,:,;:;;:,.,: +Gi;:;fi::. :t: .,,. .,, :ifLC:.:iLLfftttftttiit!iittiii!it00CG8Ciftfffti!!!!!;:,,...,,... .. .;:.:,;: ,., +L!;::;t8f, ,t; ,..,.,,. :####t:t##@#################@G888@###@@G88888888888G0G!,,,:;!;:::, . , ..,,... . +Lfi!;;i8@: ,i: .,;:,,. , ,LLi!!;@@ftLLft!!!!!!!!!!!!!;;;!!itiitL#L!!!iti!!!!!!:,. ...,.... .,:,..... .... ., +i!ift;;tf,. .;. :...., , ,!ti;:ttCf. ;CfGC:.. ..., ..,,::::,,,,.. .:,,,,....,. .  +i::;:,,::, ,. , .,. .,.. .::,.,::;, .,:,::::::,,,,.,,.,,,;!;;ifffftfft;;::,,,.,::,,,,::;!!: ., +i;:,,,:;i. : ,.,,....:, :,.,,!, :;:,.. ;L:,. ,t!;;;:..,,:;;ii;:;;!!!iitffLLt!;,.,it;,:,.,:;;;:,::;: +ft;;:::;!, , .,.,. ., ,... .: .,, :0L;ifttfff!,. ,,iL. :i;;::,..,,,,::::!!:,::::::;;;:,.. ,:,....:it!!tftt;: +fiiit!:;!, . . . . . :,. ;tit########0. . ,,. .fi;::::,:;!;;:,,,:::,,,,,,,.,.... .,::,:::;;;;!!!!!! +ffLLftfti, . .. .,,,,..,,. C#####8####C, ;f; . :i!itti!iftiittiiiii!!!!!!;;::::,:::::;!i!!;;;;;;;;;;:: . ...,,:;;!L;;,,,;:::;!:;;::,:;!, i.ti.i!ttti, ,..., .,, . ,,, .,,:::;,,,....:;!:..,::,,,,......,,,  +...:::,,,!CL:,,tCt;.,,.:::,,!!. .;,;8f!i!;,..., ..,. ..:ifL: .. . .;:. . ,:;;:,. ... ..... . ........,...., +::;it;...,,:;,:;i!,....;0!:;;, .,:::!f!;C8t;. :;,.,;;::..!!,;L! ... ,, ....::..,,.. ...,,.,,... ....,,,.,.,:,,::;;!,.,; +0!;::;,,,...,,,,.,,. .,;G#t0f.....;ftfLC8ii;::. .. .:,..:,.,::;;, .!: . .. ,,....,.. ...,,....,,,,..,:;!!!;;::,.,,,,::::;:; +0t!;,,::::,,,,:!tti;;;;:i##i;,;i:.:!tL0Gi:.. . .:;, !GL, ,,,. .,.. ......,,,,...,, .::!tii;,,,:,,,,,:;::;;;:!,,fLti +0t;:;:;:::;,::CL##GC0C;!::G8!!!::;!tGC!:,.,,..,. ..... ,C8!..:;!!:,;t;:::i!, .. ,:;i;::..,.,::;!!!::,,.....,!fftLL!!:,:ii!: +t:::;i!;!ii!tfLCL0@fi!ii!;!88!;;iCGf;:. .,. ,. ,,,::,. ;Gf;,:,,i8L;;!:tf:;G;,,, ..,,,,,,,;i:::!ifi;;,,;;;:;;!iiiCf!;,,,:t:: +i!;;itttL@GCG#0CLL0!,,:!tLit@CiCL!;:. .. ..... .;:,..;;CfiG!:;;::t:!C:.,::,,..,,!i!:tf:;!;;!ii!!;CGffff!itfCtf;;;!!::, +LLfLtfL0G##08##G@#f;:,::!iftfC;::,...,,, . . :i;. .,:,.,:i;Lt:;L!tft:..;!G!,;ii!!:,,;ft;:!;;iG!:f##8GLCftLi!!!!!ttt;:GLff;! +8@GCCG@88##@###00#Gi;::;tCCi:,, .,,.,....,....,;,.;G0:,:!,,,,tL;!;.i;;;!!:,,,;Ci,,::::,,;;;;:;::;f@i!C8#GLGC;;;;!it:;CL!;:!fttLC +8GCC@8###G0##@GLCf#@i;;LL!;,......,:,,,. ,i:,i!:,;tt;;;;;!::;:;,..!!:!i,::,,;;,....,::;;;;!tt:;if;:;ii;;iiiitLit!;!Gtt:,!tGGfG +#@#8G0GGCfffftGiiiC##tt;::,,,,,.,.,,,,,. .,tC;:,,,,;GCift;,..!.,,:.,,,,,,.,,,.,;,..:ti!i!t!!fti!!;:,:;i!!iC00CfLCf;Ci!;::;!ii!t +####@Lft!;:::i8i:GiCi!,,:;;::;:;,;,::i:.,,:;;i0!,..!#G;;::,,,:, :C!!; ...,..,;,.;i!!!!;;;;!!!CL!::!!ttff!ii!;;!;;ii!;;;;;i:if +8880Cfi!!;;!!t8i;;;,,....,,,,,,,,..,i8i!tfitfifC;,,L8!. ,,,,,,,,:fiG!.. ...,,,.,:;;;!i!tf:,itLtfLi;:,:::;;;::,,,,;:;i!iitt!!;:;f +#8CLCCCLLL!i0L8!!;:;:::,,,,.,!t:,..,88ii!!!!;;;;;:;;:, .!..:C:::, .,:..,:LGLLft!!!;i!tLitt;:,::;:::;:::::;;;!fi;!!!!!!;tG +08G@8###88f!t#f;:!,,:;;;:::::tL;::.,ift;:,:,,:;:!8; ,, .,:,.:!,,......,,.:tGf!!!!;!;;:::::;f;:,:i;;!ii!ii!iiL!!Cit!itiCC!!C +fG0CCG0CGLGii8i,,,,.,,,,,,,,,,,,:;;:;0GGi;:::;i!8f:.,,,,:,.,;i;,:;,;:,:,.:,:;,!Cf;,:i!:;t;,:;!:!Ci;;!;!;;;iiiti!!iiiititffiit!;L +fLit0CCCtiiitGi:;!;:,,,,,,...,...:Gf!!f8C::;:::;;;::;Ct,,::,::,.....,:i!,,;,:itfi!;;;;::;:::!i;tLttti!i!;;;::;i;;!ffCtit0fii!iif +Ci!f0fC@@i:;LCttfLf!:,...........:t!!G!;;!C!;;:,,.,i8L:;:tt. .:;:,..,,:!;itLi;ttif;;!!;;!i!!;:;;!;;:i;:!itti!iGf;it!tfCf8# +Ct!Gtii!i;,,!tiL!::;:,,,,,,.,..,,:;!!i;: !#8,,,,. .!0;..:::,,,,.....tC;:::;;:,:;!!::tf!t!!ft;::!!;:.,,;f:;;i!t88@C;;ii!!;!itiL#G +:;;;;ti:!i.:t:!0;.,;!;;;!;,::::ti!ft;ii;:f#G:.;:, ,,,,,,;;!ii!;;t:,::;!tti;,,:fi;;:!i!;!;i;:;:!Li;;;;!!;;tifftftiii!t!fL0i!;!if + . .!!:,:.:G;:CC,,:::,;;,:::;ffLfi;!8#f@#ti;:,,,. .....,::;!!f;::;ii;;:,:.,;fii!:iGti;;;!;;;iGtttffti;;;;;!;!!;;!f0ftLtti!;!i +,, .:C:::;:,,:,,,..;i;!ii;t;;:t##fi!,;.,ii;..,:;. ,:;iLGf;;Lf8#;,...,!!ifGG;:!iitiCfififti;!!!!;::i;;t!:;;!!0@CCGGiGti0L +.: .. ..,!:..;,,:,, .,::,:,,::;tLCtLt,,::!Gt;..i!;i:,,;:!ii!;!ittfC;;::t::iifL::!tLt!f!!!itt!:,,!:;:;t!;:::;;::ii!;!;!!!!i! +:. .,. iL: ,..,: .:,i,,i.,!@@8i;;!!::f0LL;;:,,:f0!,.!tffffi::!fi!@C!:::;!;;;ft!i!;;!iL!;!:,.,::,,:;ti;::,,,,,,,,,...,!Li +Gi:. .,,, ;G: ,;.,;.:i:;i:::!8GtL8!:Lt,:;;::Lt;,,,!C8i;;;!i!;!;;:;:;L@!,:;tt!::;!;tf:!fi!;;!;;,,;!!;!!i!!i;;;;;i!::,:;;:::! +C##i,. tfti:iL!,:;f;:i:;L!;t::!!i;!0#i!8t:,. .,:,,!,:tL8@fi!;:.,i,..!;!it:,:;;:,.,i;;:::::;:itf!,;tCLfLL;;!;!tLtift!;;:fG!:;; +C0@@L. :!ittLGiitftL!:t;:i::;,,ft;i08tiGLi:,:,,:,:,::,:if0###@Cii!,,;LLCCCL:,,,,,:!ii;;:;!ii!!iL!:;tLt!ii;!L,ifL!tfit;:t!;;tif +Ciii!:.....,,,!C!,:!;;!::;,::,i::;L0t!tGGtLf:;;!it!:,::..,;iG####8Ci,,@#######ft!;,;CGtL!;:L80t;!C;,!tCfi;L!:,,,:,.!Ci!i!CLftff! +CLLfft!!!. :t: !C:;C:;i,,::L::f8!;!i:!f!,.:;;;:,,,::, .:;!!!!;;,,;tffC#####;;,;!!!;:,,ii!:;!;:,,:::::::::,:,,.!Gi;:f@###### +#####0;,!,. ,t; ,tL;!C;;;,::;i,,:fG8i:;;:.,!ff;;;,;GC: ......,::...,,::!!!::,,.,;;i!,,,,,,:::,,:::,..,;iitff;,!t!i!!fLfftL8 +######; ,!. ,!: .i0!;t:;:,f,.,.,;08CLfi;:,;i!:,.,LGi, .,::,::;i,...;C!::::,. ,,:;;!!;!i!:;,:t!;!,,!!:;i!,.,,:LiifLL:!;! +#CffGG: .!. ,f: ,fG,,:.,::, .i::;;;:;f0;. .. .,::,.....,,,,,;::::,,;ifGGLt: ..,,..,,,,,..,:;:..:, .;. ,,:,;:;!:,.,: +G!;:!fi::. ,t: .,,.. .,, :tLLC;.:iLLfftttfiiiiii!iittiiiiftGC0Giitttfffti!!!!!;:,,..,,,... .. .;:.:,;: ,., +f!;::;t8f, ,t; .,..,.,,. ;####t:i##@#####################@@@#@CC888888888888G0G!,,,:;!;:::, . , ..,,... .. +Lti!;;i8@: ,i: ..,;:,,. . ,LLi!!;88tttt!!!!!!!!!!!!!!!!!!iiittf0Gi!!!ii!!!!!!!!:,. ........ .,:,.. .. ... .. +i;iLt;;tf,. .;. :...., , :!t!;;!i. .LCi08;... ... ..,,:::::,,,.. .:,,,,,...,. ..  +t::;:,,::, ,. , .,. .,.. .::,::,::;:. ..,::,:!::::,,,,..,,.,,,:;;;ifffftffi;;::,,,.,,:,,,,::;!!: .. +i;:,,,:;i. : .,,,....:, ,,;i:;080tiiitti:. .f;,,. ,i!!;;;:..,,,;;it;:;;!!!!itffLLt!;,.,!!;,:,.,:;;;:,::!: +ft;::::;!, : .,... ., ,. .,.,,,:tfi08######i ...,,,!L. :t!:;::,..,,,,::::;!::::::::;;;:,.. ,,,....,it!!ttit!: +fiiit!:;!, . . . .,:..;,:##G########; ,Li ,,. :f!::::,,:;!;;:,,,:::,,,,,,,,,.... ,::,:,:;;;;!!!!!! +fLCLftfti: . .. .. ,. .#####; .. :!: ... ;i!itti!iftiiitiiiii!!!i!!;;:::::::,::;!i!!;;;!;;;;;;:: ,.,,,,,;;;!L;;,,:;;::!!:;::,,:;!, i.fi.iittti, ,..., ,, . ,,, .,,:::;:,,....:;!:..,::,,,,......::,  +,.,:;:,,,tGL:,,tCt;.,,.:::,,!!. .;,;8f!t!;,..., ..,. ..,;!f:... .;:. . ,:;;:, .. ..... ... .......,...., +::;it;...,,:;,:;i!,....;0!;;!: .,:::!f!;C8f;. ,;,.,;;:, .!;,,!t.... ,,.....::..,,.. ...,,,,,... ...,,,,.,.,::,::;;;,.,; +G!:::;,,,,..,,,,,:,. .:;G#t0f,....;LtfLC8ti;::. ....,...,,..;:;;,..!: . .. ,:....,.. ...,,....,,,,..,,;!!!!;::,.,,,,::::;;; +Gt;;,,:::;,,,,:!Cft;;;;:i##i;:;i;.:!tL0Gt;,. . . .:, iGC: ,,,. .,.. ......,,,,...,, .:,!tti;,,,:,,,,,:;::;;;:!,,fCfi +0t;:::;:::;,:;CC##GL0C;!::08!!!::;!tGC!:,.,,..,. .,... .;0; .:;!!::;t;::;i!, .. .:;i;::..,.,,:;!!!:::,.....,!LftLL!;:,:ii!: +t:::;!;;iti!tfCGLG@fi!ii!;!88!;;iCGf;,. .,. ,..,:,::,. .;0f:.:,.:GC;;!:tf:;G;,,, ..,,,,,,,;i:::!tfi;;,,;;;:;;!iiiCf!:,:,:t:: +t!!!fLLL0@GGG#0CLL0!,,:;tLit@CiCL!;:. .. .,,,. ..;;,,.:;fi!G!:;;::t:!C:.,::,,..,,!ii:tf:;!;;iiii!;CGffff!itfCtf;;;!!::, +0CCGLLC@0##0@##G@#f;,,::!iftfC;::,.,..,,. .. .:Li:.,,:,,,:i;Ct,;L!tft:.,;!G!,;ii!!:,,!ft!;!;;iG!:f##@0CCftLi!!!!!ttt;:GLff;! +8##GGG888##@###00#Ci;::;iCCi:,,..,,,,.. ...,;:...iLC!:;!,,,:tC;;;,i;;;!;:,,,;Ci,,::::,,;;;;::::;f@i!L8#GLGC;;;;!it:;CL!;:!fttLC +80GG@8###G0##8CLCf#@i;;LL!;:......,:,. ..;i!. .::;::,,:!::!:,,..;!:!!,::,,;;,,...,::;;;;;tt:;if;:;ii!;iiiitLtt!;!Gtt:,!tGGfG +#8#8G0G0CfffttGiiiC##tt;::,,,,,.......,,::,... ..,tt:i!:..,;,,,:.,,,,,,..,,.,;,..:tiii!i!!fti!i;:,:;i!!iC00GfLCf;Ct!;::;!ii!t +####@ffi!;:::i8!:GiCt!,,:;;::;::,:..,;ii;. .:,,,,;@f::,....., :C!!; ..,,::;;,.;i!!!!;;;;!!!CL!::!!ttff!ii!;;!;;ii!;;;:;i:if +8888Cfi!!;;!!t8i;;;,,....,,,,,,,,:;ii!;:,,,;t,tG,.;##;,,. ...,,.:fiG!...,:::;:,;!;iiit!tf:,itLfffi;:,:::;;;::,,,,;:;t!iitt!!;:;f +#8CLCCCLff;!0f8!!;:;:::,,,,.,:t:!tt!;:,,.,iG!:!!;;##!:!:. .. ,!,.,t:::,.,!,... ,f08Gf!!;;!!iLitt;:,::::::;:::::;;;!ft;!!!!!!;tG +08G@8###88t;t#f;:!,,:;;;:::::ffi!!;::;;!t;LL;.,,!#G;,.,,,,,...:. ............ .,;!ifi!;::::::;f;:,:i;!!ii!ii!iiL!!Cit!itiCC!!C +tCGCCG0CGLG!i8i,.,,..,,,,,,;;;!;;:::!00G@!tL;,:f#!,::!itfi;;,. .,..,,,,.::::.:;. ,LLii;,:;!:!Li;;!!!;;;iiiti!!iiiititffiit!;L +fCit0CCCt!!itGi::!;:,,,,,.,,,:;;,,it!LC8i;L0!!##;:;L###0!::,,, ;i:.;::,.,,,,;iLi:,,,;;!t;::ii;tLftti!i!;;;::;t;;!ffCttt0fii!iif +L!!t0fL@@i,;LCttfLL!:,.......,,,,,:;;;;;:;0Lt#0i!t@8#8t:;L;:G;:,:L;,,,.....,!!!tGL;,...:ii!!;!;i!!;:;;!;;:i;;!itti!iGf;it!tfCf8# +L!!Giii!!;,,!tiL!::::,,,,,,,:,,::,,,,,,:,!it0!:;C@C0f,,,;fttiti!,.,,;,,::,,;Lii0GCt:,,.,,!Gt:::!!;:.,,!f:;;iit88@C;;ii!!;!ttiL#G +:;::;tt::!.,i:!8!.,;!!;;!;,::::tii;::::,.,,;;;.,:!CL, .,,,,,.,... ,t;;0i,:tLfttt!;:;;!;:;t;:;:!Ci;;;;!!;;tifftftiii!t!fL0i!!!if +. . .!i:,:.:G;:CC,,:::,;;,::::ttLfi!iLG!, :,.,..,:,.:,..,,...,,,:;tt#C:,::;;::,:::;CfCf!;!;;;iGttttfti;;;:;!;;!;;!f0ftLtti!;!i +,, .. :C::;;:,,:,,,,,;t;!i!;t!;:i##!:, ,.., .......,:,,tCfG#!.. ...,;!G8;:!tfftCfififti!!!!!;::i;;t!:;;!!0@CCGGtGti0L +.:. .. ..,!;..;,,:,,..,::,:,,::;iLLL@G:::,. ,:i::,. ,;:::::;:;iitt!:::,,;;!GC0G;:!tLt!t!!!!tf!:,,!:;:;ti;:::;;::!i!;!;!!!!i! +:.. .,. iC: ,...: .:,i,,i.,!@@8i!!it!LL;:;i:!fL;,.,ifLiitt!:!ti,!8f:!i;!tt!;;ft!i!;;iiL!;i:,.,::,,:;ti;::,,,,,,.,,..,,!Li +@f:. .,,, ;G: ,;.,:.,i:;t:::!8Gif8!:Cf;;;fL!:::!C@f!;;;;;!;;!;:::,!@t;!;;;tt;:;!!;tf:!fi!;;!;;,,;!!;!!i!!i;;;;;i!::,:;;:::! +8##t,. .tfti:iL!,:;t;:i:;L!;t::;!i;;0#i!0i:.,,:;,:,:if0@8fi!!:,,!, :!ittLLL!::!!:,.,i;;::::::,itf!,;tCLfLL;;!;!tLt!ft!;;:fG!:;; +0@##G. :itttL0iitftL!:t;:!::;,,ft!i08tiGfi:,,,,::!,,!iG8####Gtt:,:G#@##@Gft;;i:,,,!ii;;:;!ii!!if!:;tLt!ii;!f:ifL!tLit;:t!;;tif +Cttfti,.,,,,,,!C!,;!!;i::;,::,i,:;C8t!tGGtLf:;!!!!:,, .,;tG@###0f;,f#########L,;!;,;CGtL!::L80t;!C;,!tCfi;L!:,,,:,.!Ci!i!CLftff! +GLLLLLi!i, :t: !C;;C;;i,,::L::f0!:!i:!Li:,:;;:,.,:, .,:;!!;;:,:!iiif@###i,:;!,:!!!;:,,ii!:;!;:,,:::,:::::,:,:.!Gi!:t@###### +#####0;,!,. ,f! ,tL;!C;;;,;;;i,,:iL0i;it!,:;tt;::!C;...,,,,,,:;,..,,:;i;;,. ::,:.,;;i!,:,,,,:::,,:::,..,;iitff;,!t!i!!fLfftL8 +######; ,!. ,i: .i0!!t:;;:L:.::::G80GGC!::!i;,.;CL!:,,:;!!!:;:. .,ii0G::;:::,. ,,:;;!!;!i!:;,:t!;!.,!!:;ii,.,,:LiifLL:!;! +#GffGC: .!. ,L; ,f0,,:,,::, :GCi!!!;!!;:;;;:,,::::,,,,:;:::;,:;;;,;!!tLGCft: ..,,,.,,,,,..,:;:..:, .;, ,,:,;:;!:,.,: +Gi;:;fi::. :f: .:,,...,, .:8#Ct:,:itfL880Lf;;!!;i;!;!f:;t!i;C0!i;i;!iiiii!!!;;:;:,...,,,... .. .;:.:,;: ,., +L!;::;t8f, ,t; .,..,.,,. ,L@Lft;fCLfL00Lffiittfftttii!t0Lt!f0tff!ttitffLC00Gttt;,,,:;!;:::, , ..,,... .. +Lti!;;i8@: ,t: ..,;:,, . .:i!:,:C8!tt::,,,,,,,:,:,,,,,:;::;;i@8;,:;:;!;;!!!;::,. ........ .,,,..... .. ., +i;iLt;;tf,. .!. :...., , . ,!tfLi;,:,,. .,,:,:::::::,,:G;!fGt:.:::::;;;!!;;:,...,,:::::,:,. .:,,,,,...,. ..  +i::;:,,::, ,. , .,.....,.. ,####G::tCt!;,i!tCtCiCGCGLGL;LttLGLff;!G!iCCL0000fG!:!;:iffffffft;;::,,,.,,,,,,,::;!!: .. +i::,,,:;t. : .,,,,,...:, ,G###i:0ftLGLLLCi;;:::;;:;:;C:::;::,,:ii!;!!!!!!!!!;!t;:;;!!!!itffLLt!;,.,:;;,:,.,:;;;:,::;: +fi;::::;!, , .,... ., ,,,;!;:!fiG#######, ,,. ...,f, .i;::,,,....,,,,:::!!:::;::::;;;:,,. ;,,....,it!!ttit!: +fiitt!:;i, . . . . .;!tt:##########L, ,LL. ,;, .ttt!:::::,:;!;;:,,,:;:,,,,,,,,,.... .,::,:::;;;;!!!!!! +fLCLftftt: . .. G#### ,!; ;tii!itti!iftiittiiiii!!!i!!;;:::::::::;;!i!!!!!!;;;;;;:: !;:;;;ti!;;:,.....,...,::;i;. ;,,Ci;;;!ii!, . ., .:: .,:::,,.... .:,:,...,,,,...,..,,.,. .....,,, +!:,..:,..,,.. .:;:,.;f;::!:. .,,:,:!::i8i!f:,....:...,:....,;:t;.. ....:,::,. .,....,,. ...,,,,,.,,,,::::;;:::;;: +:::......,,. .,fGf!:;@G!CCi .,!iifffLGi:fLf;,. .:,..:;;, ,:,:..,!, ...,:.,,. ,,...,....,,,....,,:::;;:;::;;!!,,,::;;;!;;: +;,,,,::,,,,;ftt!itft!t##t;:::;:tfitLffC0i,,,,. ... .... ....::;:,.. ..,.. ...,,,,. . .:;i!::;;:::::,::;;;;;;::!!:;LLLCC!L +!:,,,;;;;:if##ftttiiCi!#L;;it;,:!itL0Ci:,. ,. .. ,i, .tGC;,,,::, .....,,,;:;,.,:,:::::::,,,,..,::;tfi!f:,ff!;fLiii!;i +fi:!!t!;ttL0088ttLffii!!#0!:::!tfCGL!:,..,, .,...,.. ..,f0: ,;;!tti:tG:. .,:,.,...,:;;:::::;:;;,,,:,,,:i;;fL!!:;,;t:,:;;!iitt +GffC#GfCG#GLfL0!:;;;f0G!i@0!!iLGf;:,. . .. ,:,,. ,L;:!,.!..:;;!!;ft,,,,,...,::;;Ct;;ii!:,:,,;fi!!;;i;;CLi;t;;;:,..,;G0@@@ +8C@8G880@##C80f:,,::;!iiif#0!!;:,. .,.. ,,,..,,,,:,;;:,.,::ifi,.;!!C!!i!;,.,iti:;!;!tt;!ttttiL0C0Cfi;;!tif;:tLt,..,,:;!iit +#0GGC##@###G0#t;::::;!ttfft;:,,... ... ..,... :Ci,,!!;:,::LL,:i;C;;;:,,,!0!,:;!,,;tt;:;:;i@C;L@##GGCtiii!!i!;tt!;:ft!ii!!;;;;::; +#0#0GG0###G@L0#f;::!tfLf;,,.,,.,,,... ..,,.;;.:C0:,,::::!i:;:if;!:,;,:;.:f;..,::;;;!!!i;:i0t;itCtiit;:;iii;:;GLi;::!tt0CLCCCCGt! +@00#0fLGCLft0f##8i!ft;:,,.......,,,,,. .t:..::,:iG;:!ii,,,..,;!::!!::,,,::,.,:t!i;!ftC0t!ii!:;!i!!iiitfCttt;iLii:!!iLi!ttti!iCf! +@CCLfi!;:i8itGf##8i::,,,,,,,....,,,,...,:f;,..,:fCLfi:,.., ,i;:,,,,.....;;,,!t!;;;;;;!!!iCfi!tfLC00LLLL!if!;tti;;:!!!;::::,,:;GL +@Lft!;;;;t0i;0i;!;:,,::;:;;;.,.,,!t:,::,,;8f,,;0#;::::..,. :C:..,,..,,..,,,:;!!;i;,:;!i!fti;;;;!!ii!!;;,::::itti;!!i!:;!!!!iittt +0fiiii!8;fC!!!!::,,,,::::::,,,,,,Lf!f;:,,;00;;##!,,::::.,,.,;:,....;:.,,:it;tft!!i:!tGCLf!;;;::::,:;:,,,:::;ti!;!;:;;;tC0!00G80t +#8CC8f!i8GL;ifii!!!!!!!;;!!,;;f;;itG!:,,,,:;i##!, ..,.......,;:,,..,,,,;LGf!!tiii!;;;;!;i!:::;!;;;!;;;;;;!:;Cti;:i;tfitLfttLCLft +#####GL;L#i,::::::::::::::,,:;LL@Cffi,.. .!##!,.,.,,.,,,,:.:::.::..:.,fGt;:ttffCt:;:::;ti;;;!;;;!itii!!;!;!tti!itLCGifLff;CG0iL +fG0LffL!i8i..;,..,,,:;::,,..::!@#!iCt:,,,:t#@!::,..,:;!!!!;:,. ..,,.,,;!!!;;;;;;!;::ifiiLLtft;;!!;;;:;ft!;iifittCfiiiiitfiiiLttL +800@i;iit0i:;!!::,,,,,,,.. .,::!::L@G:::!@#i::,!:,:!G88@#@8Cf!;!;,..,i!;!if!;!!!!;;;!!!!ii!;;;!;;:;::!itii!i0f;tCtitCfG@80!C0#f0 +LfCCL:,:Gftiifi;,............,!,.:CCi::i##i:::i!,:L#@0GG08@@8@880f;,;!;!Ct;:!LfLf;if!;:!!;i,,,;t::;iitGG8L;!fi!!;!LLL##LGttifG@L +Li;;;:.:!!iL;,:::,,,,,,.:,,;:!!: :GG!;i##i;:,:!!!;08fifftttfCCCLf08ti!;tf!::;iii!!it;:::!i;:,,:;;,;!tfLttti;!i;!!fitiftiif!ftitL +!f!,:; :t::0;,:!!!:;!,...,:!;8#t;!GLf##i;;:;::,:::;!:,:::;it;;iCGCCG@0iiii!:;fLti;;;;:;;CLii!!!;:::,;!!;;;;!tCi!ttiii;;;if!ii!fC +,;;:,,,;G;,;C:,::,,:,,::,,!!!i##0itG#8;, ..:C, .,:::,,..,::::;!G80CiLLL80f!!!!ii!ii!!;!ftiitti::::::i!;;:;!08ffCti0tGL!i!;!:;8G + ,f:;:,;,,:,.,.,;i;::,.:;fCt0@t;:, ,;;;:::::ti!;..,..,:;:i::;;::;f8!:08!;tL!tt;:;!ti::;!!:::ti;::::;,:ft!;!;!Gt!i;!i;!ittL + , . ,i!,.:,.,...,:::,,,. ,!08i;:;ti!tfti!!L!;!i!,.,!:,,,,, .tf::,..;fi!!t;!!!!!;t;,.,t!;:;if!::,:,,,,,.,,.,:;t:,;;!C#0#0 + iG: .. .;..i,!!:i.,i#L!;,,;ff@#0!00;::!8G, ..,:!!!,. ,!t, .,::;!!;:CLf!;;!::;!i!!!!!!;;:;:::;:,,,::;:::,:;i@80@G + .,,,..!G; .;.,;,:i;;f:,,!88!!i;..!@#t:::;, :Lt,.,::::::;!:::, ....,,...,:::;!i;::!ff:ifGCfft;,::!if!!fi;;,;Cf;;;!!!iititf + !ffft!iC!,,:ii:;!:ft;i:,:;if;tf!:,:;;;::;;;. ,..:tCCGLii!;:;f:.::,.,:!::;!;;:,:!!!;;ii!;!ti!it::i,!tf!ffi!,;i!iifiGC;t;:f!f +. ,;!itttGt;tt!i!,;!,::,;..iL!ittLi;;;!tti:::,. :.,!tC@####0ifi:;fCCLff!;tGLGLi:;LG!,:::;!i;!::t!,,,::,,iLi!;!LfffLfft!::tiiC +0!,.:,.,,,;f!,,;::;:,:..:,,;,:!fi!!;;::;;;;:,,,:!!:::..,:!tG8@0L;,,@#######f!ii!;:,LGL::i;,.,,,,,,,,...,...tCi;:0#######@fttfGiL +#@;!:,.. .!: ,L;:ti:!:,;,;!.,:;:,,,,,:;;;!!;:fGGL:;;, .,:;;:,.,;tLL####G:::;!,:;!;::;;:,:::;,,,,,,,,,..;i;:!tLfftfG#####@L!L +8i:;;,,. .!i .:L!!ft:!;,:,:!::::::,..;ti:,,.,!;;:;tL;:::;!!!!!!, ..;!;!;,. .,;;;!i!iii:;:,ti;i;;ti,,!;....,f!tfL!:::!iiitf;;L +#; .i, .;:. .:0C!i!:;,;:;i!!;!i:,.,,,,. :GfiiitffLfi;i:.,:i!:!:, .....,,,,,:,,,..,:;;,,;: .!,.:,,::;:;:,...,,,,,,,:L +0, .;. !t. .;0i,,,.:,!i;;;;;;;::..,::::::,,.,:::;:;:;;;:,!!:.:!;,::,.,::::,. ..... .. :!:,,:;, ,.. :!:;:,:! +Cf!;, !i, .::,. .. :L;;!i;:!ti;:,;fLftLttit;!!!iC;i!tf;;0@!.;GifC;;i;;;;::::,,,::::,. , ...: .. . .,!:i!;;i +CC0G, ;t, .,,.,. . ::,,:::if!;:::!ttttfLtttttfffftfftttiC8t!itG#C!fLiftittfLf:,,... ,:,,,... .... .,, ..,:,::! +GCLC: :!. ...::. .,,,,..;Lti!:,:GG;i;:,,,,,::::,:::,,,,::;GG::iCi::;;;::;;;:,.,,::,,:,.. ..:,.,,,...,. .,,. .!; +t;!f: . ,: ,,... ;!i;,.,,:i;!ifLi!:;;;:, .,:::::::,,;ii;:!!;,,,::;;;!!!;;!ttttfft;::,,,,,,,,,,,::;:!, ..:!!. :, +;:;;, : . .,. .:!:;, .,:####@!!0888L;,,::,LtGGCGLGC;08fGGfLGt:CitGGC880CiC!;;!itffft!;:.,,,;....,;;;!!!!!::,. .,, +i!!i; ,, ,,.,,.. .. ... ,C@##t,:ittCGCC0#8t:::;;:;;::LG;;!!!;,,:;;!!!!i!!i;:,:,,::;;::,. .,,,..,fLiiftti!;:,,,,,:! +t;:;!. ,. .... .,,. .,,,,:,t8C########. ,:, .. :L, ,:::,:,,,,,,,.,,,,,..... :!ii;::;;::::::::!!;!;,:! +t;:;;. . .. .. . ,.,@####Lttt!,. !Gt ... :iii;:;!!;;;;:;;!;;;,,,,,,::::;tt!:,,:;::,,,,::::;:::; +ffti!. .. ... ..,, tt .i: .!ittttttiiiiiiiii!!i!!;;;!;;;;;::;;;;!!!!iiiii!!!;;!!! :::,. ::. ...,,:,,,,;, .;;:!L!,;!!ii: .,:. ..,,,:,.. .. .,,,,..... ...,.,.,, ...,,,,,::,,,,,,: +;,.,. .,;,..:;;:,;@@!;!!; .,::::;;ii!;;;i0fLt,....,:...,:,,..,;;f,.,:,. ...,:,,,.... ...,,,,,,.. ..,:;,,,::.......,::,., +!:::;!!;;!!,:if!i!f#@LL;.,,.:CGitGfft!iC!Li:;:, .,,..,::..;!,;,.,:: ,,.... ..,.....,,,,...::;!;!;!:.....,,:;;:;;!!!;;;!iCt::t +ii;tf00i0#C;!tt!;CCt##!:,!i;::;iitffttL!:,, . .,..,:!;,,......,. .,:. ,,:!!;;:,,,,,,:;;;;;!;:,,;LL!!08800fCCLf!;!i +t!;;itif8@CfL00i!!!;!0@;:!:,,:!!iC0Gi:,,. .,, ,t!. .fGLL:. .,::;:. .,::,::;!;:::,.....,!ftfCL!i:,!t!:;tttttttti!;;Cf +GttitffLLf0C!!!;!ifL!!C@!::;fLCGCt!:,. ,,. .,. ,... ..,f8G, .:;!iG:....,,,,,,;L!;;itfi:;,:;!;:;;!iitGt!::::f!,,!;ttG#8@0Gffff +#GG@C##GLtL!,..,::ifii!8@iifCf!;:,... . . ..,,. .,C;;f!,,. .!;ft:,,,,,iti:!t;;!!;itti!!0GfLLfittLCfi;;;i;:...:f0@###00G0ii +###08##GL#t;,,,,,,:!iittGG;::,. ,,,. ,,....:!!::!f;.,!, .,.,,;iG;;;,,;ft!:!;:i8i:C##@0CLftLii!!!itti,iGff;,::::;!!!!;;;:;; +###8###0CG#f;::;;;!tfGL!::, ........ ..,...!C:,;:,::!fLt, :i:,,,;,,,;G;,,,;:;!;!!;;t8!;L8@CLGL;;;!iii:!Cf;;;fftLCit!;!;::,::::;, +#0G##8CL@f##G!;;!tft!;:,.,,..,,,,. ....;;.:CL;::;!!::::..,:;t:,!;:,,;::;;;;!iiCG;;!!;:;i!!!ittiLfii!;iCt;,!!GGCGCCLCiCt:!tfi!!i +@Lfftt8it8f###itt;::,............. .f:,,,.:!0f!CLi,,:,,,,.,:;,,::;,..;i!:!;!!;!!!ii;:,;!iitfC00CfLCi!Ci!::;!ii!!!i!;!!!;ttt!;;i +L!;::t@i;8ft8LL;,,.::,:,,.,..,:::::,,;0;:,,!#f!!;:,....;C;!,.:..:,,..,;!!!!;:;;;!!Lf;,,:;iifi!ii!;!!;;ti;;;;;!:;:::::::ii!i;!!!L +f!!t;t8i:!t:,:,,. ..,,,:,,,,,;CC!fi!::L8::!##;,,..., ..ifiC,.,.,::;;;;!ttff!:ifCLLL!;:,,::::::,,,,:i:!!!iiti!!:;if!ttift!GfittfG +Li!8GL8!!;::,,,,,,,,,::,,;.;GiLf;::,,,;i;!##!, .,,!!,,,,,,:;C0Ltiitti!!;!i!it!:,::;:::;:::::!;;;t!;;!!!!;iG0!fCLCttCfttttG +8Li!88L;:f!;!!!!!!!!!!i!:!;!8t!t;... .:i##!,. .. . ,:,.,,!,.:LGt!;iifCL!:::::;f!::;i::!iiiii!itf;tti!!!!CG!!fi!;!tf!!GCLC0fG +8GG!i@i,,,:,,,:::::::::,:i:;LLiLi,...,:t##!:,,,,,,,,.,,:!,.::;,,!ti;,:;;;;i;::it!iCt!ii;;;;;i!!it!!!iii;!it!!t!:;:;::!i;;fi!iii8 +!it!!Li,.::,,,,::;::::,.,;,;08i::::,,;C#f;:;;:;;;::;,,;:i,.::,.;i!!;!;;;;;;:;;;!!iLt!!!!!;::;::::::itLf!!Ciiiittfti!!ttiftttfii8 +L:!iiCi;!!ti;:,,,,,,,,,..;,!@G;::!ii!C#t:,..,:,,,,::,::;!;;:,.,i;!ft;:tffCi;!i;;;t!;;,:;!;::i!iiitt!!tL!;:;if00###8tLC8LtLLG0fi8 +i:,,f0fL!;;:,.....,,,,. ..,;Li;:::;i##!;t;::;:,..:!i:!0GGG8GtiC!;i!;,,!i!!!!Li;::;!!:,.,!!:;;iiG@0Gi:!i!;:;iti88LLfttfii!ittt!i0 +;, .;GtG!..,,,,,,::,:;:;!!!iCGii;:i##i:;;iiiti!,.,,,.;@8GLC8@8Cfi!!ii;;;:!!;;;:;:;Gf!!!!!!;!!;ttfti!;!f!;tGi!i!;;fC!CCi!ttCC!!f0 +,, !Gii0:,;;;;:!:.,,,;0##8G#C;:!8#i:;:,.,:;!!:,:,,,,,;Gt!iittLCLftfGCtt;!fi;;;;;iCftfLCfi:;:::!;!;:;t@f!ttfLif!;!!!!!f0!tCti!i8 +,::.!C;:!C:,::,,,:,::,;0##ti!!;;##i;:!f:,,,;LCi,,;fC,,;f;;;;;;:!fCfitCGt;ff;Lf!iifti;!iti;:;f;;;::;;:L8f!tGtGiif!ti;i;!!!;!LLtL@ + ,;;!:,:,,:,,,.;!!,,;!:;.,;i#0ti0Ci!tCf:;iLi:!iti!iL;,,,,,..,:;;;;!!!L!:;ttti!tf;,,iLii;iti;::::,,;;::;:;;;!;;;!!tCftiitffttG + :L;..,...,.,,:::.,;.,:t@@!fGCitttitii;:::::;:!G0t,,.,,. ,,::,.:i;;!ff;!CGCi;!;::;ii!;;!ti!::::::::,,,,::i!;!!t@##8LGG#@iiC + ,CL, .. .! ,t,i!:!,:0#f;::::,,:::::;!i;:,!i:!ii;... ..,:,..:tftft;;!!;:;it;,ifGfi!i:::;iti!fi;!:;tti!!;;!!fftii!t0f!i8 + ,:,,.,if, ,;,,:,;t!;f:,:f8t;,.. .. .:!!;i8#8;!t!i!GG: .. ... ,if!:,,,,,:itf!:;tti!t;:!:;fCLtCti::itCfL!ff;!;;!;:;!!!!t8 +:tfftt;tf;,,;ti:ii;Lt;t;,,!!it;,::,;,,;:,,!C@i:G0: :88: :tfi!;:,,!, :t::;!ii;;iC;:!tL!:;t;i!it!:iCt!;!fffLftit;!;ti;iiti;L88 +.:;;!i!tC!;ii;!!:;:,::,!..tLit;,;;;;!:....:08:.:::.:::.,!L@###8!it:,iti!;:,,:CGL::!!:,,::;:;;;;;::,.;0t!;G@#####@LttfCi;;ti!!fG8 +, ...;L;.,:::::,:..;,:i:;iii;,,:;;:,...,i;;:,:,;t:: .,;iL8#0f:,:######t,.:;i!::;:,,:::,,,:!iitt!,!Li!iiLfff0######8t;;;tf;!GG +,.. .. ,i: ,L!:tt:!:,;,!f,,:!!:;ifi;:,.:i;:;!;:.,;:::. .,:;!!!:.,t#####@,;:;;!ii!:!:!f!;:,;i!;it:,:,;C!ift:,;!itittt;;!!!:;!it +,..... .!! .:Lt!it:!:,:::!. ,!:,;::,..,!!;::::,,,,:ft:;;;!itfftf,.:;iiii;,...,,,::,,.,:;;:.:;..;:. ,,::;:;:,...:,.,,,,;LC;,!LCi +;.... .!:. ,G0!;!:;,!t,,:::::,,:::,,,!i!;,.;!ii!tfti!itttft!!i;,!t!, . ..,,... .,. . .;:.,,;. , .:!:;::;!!:,:CL! +;,.. .it. .;0L,,,,,:,,;tLi;;iittti:,:;;::,::::::::::;:;;:,.:G!,:L!;, ..,,,;!!:,,. . .., .. . .:;;i!;!ii::;;;; +,. ;i, ,:::,..:,. .:!Li;:;!!!!:::iCLftLft;!!ti!iC;ttfL;!i@G;!C0#L!if;::;;;::,. .,,.. .. .... .. ,.,,,,:;i:;!!,: +, :t, ,:,,;,,:,.. .:Lfi!ifft;:::iCLtfCfitfftLfffttfftfffftLG!L#@CfLtitffffff:,,.. .,:,,,,...,. .,,. .,,,.,,., +:.. :i, ..,:;:,:..: ,tGCfti;;;:,:fC;,::,,,,:,:::,,,,,,::,,,!!:,:!;::::;;!tfLi;;!;:::,,,.,,,,,,::::;;....:!!. .. .. +;., .;. .,.,....... ,:;!::..,;tffi;,:;;;:. .,:;::::::;;;::::,,:;;!!itti!i!itLfi;:.,,,;....,::;iiii;::,....,,:;!;;:: +; : . .,. ..,.. .,,. :####8,.C8@8Gffffft;;CGCGLGC!C00GGCLGt:C!t00G8000tC!:;;:,.. .,,,..:!i!itti!!;:::::;iiii!iti +!. ., .,.,, , ,,. , :8###i..:iLf0#######::;;!it;::;;;;!Gi,,:!!!!!i!!!!;:..... ,;ii!:,::::::!;:;!:;;:::::,:;;! +!. ,. ... . ..,:, .,::. ;#########i. .CC. ... ... .ti,.,,,,,::::,,,.,,:,,:!t!:,,::::::::::::::,;,,,,,,; +i, .. . :@LL#f:::, .::. ..ti .tt::::::::;;!!;::;!:::,:::,,::::;!!!i!::,:::!;:;:,,! +i: . .... . ... :, :i!iiiiiii!!;;;;;;;;;;:;;;;;;;;;;;;;;!;;;!!;;!;;;!!! :,....,:,. ,,,;:,,,:, .:!::!L!,;;!!!: .,, ...,,,,.. .. .,,,,,.... ..,.,.. ::,,,,,,::,,..,:;:, +::. .;!:.:ii,,,!0@!;iti. .,::;;!!if!i;;;i0LLi,.. .,:...,:,...:;!f:,,,. ..,,,,,,... ..,,,,,,.. ..,:,::::.......,,,,,,,. +:;!iii;;!!:;i,,i!iC#Lf:,,,,,LGt!GLff!!iCiL!:;:, ,,..::,.,!;,;,.,:,...... .,......,,....::;!;!!!;.....,,:;;:;;!!!;;;!it!:;f;; +ttfG@0!f#L;!ii;;CGii#i:,;ii::;;!ifftttf::,, .,,..:;!:, ...... ..:. ,,:!;:;:,,,,,,:;;;;;;;::,;LLi!08800tCGLt!;!!;i +ii!iftf#@0LfC0Liii;:!@L;;;:,:;!!f00L!:,. .,. .:f;. ,L0C:..,::::. ,::,::;!;:,:,.....,;fffCL!!::!ti:;tttttttti!;!L!:t +0CCffLCffGC!!!;;tLG!;i8L;::tLLGGt!;:. ,,. ,,..... ,,:G@C, .:;tL,..,,,,,,,:Li;!iffi::,:;!!;;;!iiiGf!::::ti,,!;ttG#88G0Lff;;t +#8#C@#CLtf!,..:::!t!!;i#C!tCLi;:,.. ....,,,,,,tC:;t:. .;C;,:,:,!ti:;t;;!!;itti!!GGfCLLiitLCfi;;;i;:..,:L0@###0888!:iL +##08##GL#t;,,,:,,:;iiitt0i::,. .,,. ... ..:!!:;fC!,:,.. ...:;ff::,,:tt!:!;;i0t:C###0CLttfii!!!itti:iGff;,:::;;!!!!;;!;:,if +#80###8LC#f!::;;;!tfGC!:,,. ..,.... ..,...;f:.:,,,:ifLt, :i,,!,:!,,tL:,:;:;!;!!;;i8i;f08CLGC;;;!iii,!Cf;;;tftLLif!;!;:::::!:,,:! +#G#00Cf@tG#8i;;!tft!;:,..,..,,,,. ....:;.,Cf;:;;i!::::..,i;!f:,!:.::;!;!:!iiCG;;!!;:;ii!!ittifLti!;iCt;,!iGGLGCCLCiCi:!fti!ii;: +Gfi!i8it#t0##fti;::,............ .t,,,,,:!0ftGC!,::;::,,,,;;,,;:..:i!;!;;!;!!!it!:,!!ttfLG00CfLCt;Ci!::;!ii!!!i!;!!!;tti;;:;CL +i;::t@i;8Gi0tf;,,.,:,,,,,,,..:::,:,,;0!!:,!#t!;;;,...,LL;t:.,:..:..,;!!!!;::;!!!fL!:,:;iiti!ii!;!!;;ti!;;:;!:;::;::::i!!i;;;!iiC +fif;t8i:!i;,:.. ...,,,,,:::,L0ifi!!;L8;:i##;. .,, ..,fifC:;,. :;!;;ifttft:!fCCLC!;;,,::::::,,,,:!:;!!iiti;!:;ififtiLi!GtiitCfiG +t!@CL8!!;:,,,,,,,,,,::,,:;Gt:tG!:::,,;i;!##!, . ,,,L!,:.,,:;C0Ltiittt!!!!!!it!:,::;:::;;::::!;;;f!;;!!!!;iG0!tCLCtiLfttti!t8 +fi!88f;:t;:;;!!;!!!!!i;:!!8L:!L!... .,i##!, ,.. .. ,i:,..:;:C0f!;iiLCCt:;:::;fi;:;t;:;!iiii!itf;if!!!!!CG!!fi!;iif!;fLCCGtiL8 +CG;i@i..,,,,,,::::::::,:!!LG!!Gi,...,:i##i:.,,,,,,.,:,;i:,:::::tt;:::;;;!;::it!!Cfiit;;;;;!!!iti!!iii!!iii!i;:;::::;!;;iiitiiC00 +!t!!Ci,,;::,.,::;::,:..,,!0@i;:;::::;0#t:,:,;;;::;,,:;:f,.,::.,ti;!;;;!;;::;!!!ift!!;!!;::;:::;;;itLL!!Ctiiittftt!;iiifLtfCi!L00 +;!!iGt:!iti;:,,,,,,,,,..:;0G;:;:iti!G#t,. .:,,,,:::,,:;!;;;,..:ffi::iLfCt;!t!;;t!;!,,:;!::iiitifL!;iC!;::if00###0ifL8LiffCGt;fC0 +,,,fGff;;::,.....,.,,....:i!;;:::;i##!;!:,;:,..,!i!;.;8LG88LiiGft!::;!!!!!Lf;::;!!;,,,;i::;iiC8GGi:!i!::;!tiG0LLftitii!iiii!;tCG +: ;GtC;. .,,,,,::,:;:;i!iiLti!;;i#8!:;!i!!!!,..,,,,,:G#CCC8@8Ctitfi!;;!i;!!;:;;CL!i!!!!;;!:ittti!;ifi;tCi!i!;;tC!LLi!iLGLi!itLC +, ;Ci!0:,::;;:!:.,,:t@#@G#0!;:!8#i!!,.,,:!!;,,,,:,. .;LL!!tttLCLffLCGt!i!it!;;!CfffLCf!:;:::i;!;::t@f;tffLifi;!!!!!f0!tLti!iLfC +,:.!L;:;C:,::,:::,:::C##ttfit,;##t;!L;:,,;LGt::!LG;, .:L!;;;;;;;fCLitLGftLf;!!!tti;;iii;:;L;:;::;;:f0t;iCtGi!t;ii;i!i!i;!tLtLGLG + ,;:!:,:.,:,,,.;!!::!;,:.:;t#GiGCi;tCf::ift:!fL!;:;iG!,,,,,,.,:;;;;!!!f!;iii!iL;,.;Li!;iti;::::,,:;:,:::::;;;;!!f0fLittfttiifG + :L;........,,:::.,;.,:!88itf!!iiiti!;:;:,,;::,iC0f:,.,,...,::,.,!;;;iL0G0t;!;::;iti!;!ti!:::::;::,,,,::;!:;;t@##8fLC#@!!itt + ,Cf, .. .! ,i,i!:!,:C#i::,,,.,::::;:;!i;::ii:!ii;... . ..,:,..:tff;!!!!;;tfi,iL0Cfti;:::tff!ft;!;;tf!;!!!!iffti!;i8t;!GLt + ,,,.,if, .;,,:,:i!;f::;t8i:..... .:i!!i!i8#8;!i!!;GG: .. ... ,i!:,::::!ff!:;fLt!i!:!::fCLtCti::i!ftL!LL;i;;t;:;!i!!fCtL +;tttt;tf;,,:tt:ii:Lf!t;,,!it!,::,::,;::::,!L8i:G0: :88: :tfi!;:,,!. :!;!fLi;!C;,itCi;;f;!;;!;:iGt!;!ffffLfft;:;f!!i!Ct;G8Cii +,:;!i!tC!!ii;!!,:;,::,!..tCf!:::;;!:...,,,:08,.::,.,::.,!f8###8!ii::tti!;;:CGC::!!:,,:::::;;;::::.;8f;;C@######0ftfGt;;!t!!fGfi0 + ...;f;.,::::;,,,.;,,i:;tt;,,:;;:,,,,:fi!;;:,,,i;,, .,;!L8@0t:,!######C!;i!::;:,,:::,,,,ittffi,;fii!iffftf0#####0!:::tt:iCi!C +. ,i: .L!:tt:;:,;,;L:,:!;;ift;;:,:t;i;:;;;,,,.,;,. .,:!!!;:.,t@#####:;!!iii;;:;fi;;,:i!;!t;,,,;L!itf!,::!iiiti;:;i!:!ii!;; +.. .!! .:ft!!t:!:,:::!. ,;,:::,,.,,:!;::::,,,,,:fi:;;;!tfffff,,:;!!i!;,.,,,::,,.,:;;;.,;. ::. ,,::;:;;,...,,,,,,,:iC;,;GC;ff +. .;:. ,C0!;!:;.;f,,,.,,:,:::::;!:!i!;..!!!;;itt!!itffft;!i;,if;, , ..,... .. :;,,,;, ,...:!:!::;!i:,;Li;!t +. !t. :GG,.,.,,,,;;!!!ttttttii:,:;;::::::,::::::;:;;:, ;G;.;Ci;, .,,,;!;::,. . .,... ....,::!;;!it:;!;,;;! +. !i, .,::,..,, :;fi;;!!!!;:,:,iLLftCtt;i!tt!iC;ttff;;i@L;iG##tiit;:;;;:::,. ...... ..,.. .,, ..,,,,:;;:;;;,,,, +. :t, .,,,:,,:... .:Cfiitttt!;:::iGLtLGLttLftLLffttfffftftiCGiG#@CftifffffLLf:,,. ...:,.,,,,,:: .,,. . ..... . +,. ,i, ..,:::,,..: ,!CLfti;!!!:,:LG;,;:,,,,:,:::,,,,,:::,,,!!:,;!:::;;;!tttt!;!:::,,:,,,,:::::::,;,,,,;!!,., ..,,,,,.. +,, .;. .:.,,...... .,;;::..,:!tfLi;,:!;;:, .,:;::::::;;;::::,:!;:!iiiii!!;iti;:....:.....,::ittt!;:,,,.,::;tiiti!;; +. : , ..,....,,. .,,. :####8,.C8@8GLLfL0f!;CGCGLGC!C00GGCCGi:C!i00C0GGL!C;::,. ,:,,,,;;!!tii!!;;;;::;!ii;;!iiti +. ,, .,.,,. .,. ... .,, ;##8#i..:tCf8#######::;;!ii;::;;;;iG;,:;;;!!!!!!;;::..... .;iti;,,:::::::;i;:;;::::,,,::::; +. ,. .... ., :;: .,:,.. i#####G#8L;. .GL. .,,. .,. ii:,,,,,::,:,,,,,,:,,,;!!:,,:;:;;;:;;:,:,:::,,,,,,,:! +. .. .. :8fL#t,.. .::...!L, !t;:;::::::;!!;::;;::,,,,,,,,:::;;;!!;:,,,:;;;;;;;!!! +, . ... ... ... ., ,!!iiiiii!!;;;;;;;;;;;:::;;;;;;;;:::;;;;;;;;;;;;;;;;; ;;;:,,::. .. i0i.:;::. ,:,:,:;!!ii;,::Li:!i;;;, ..,, ...,,,,,,,,,.. ..... .,,:,,,:::,,,,,,:,,,.,,::::,, +:,:::. .!;;t@fLCt. ,fGt!CLLLLf!:!C!;;L0Li, .,:.,,,,...,::iL. ........,,,,.......,::,,,,::;,..,,.....,,:::,::,..,::::;:,; +!:i#t:;!!;:;fCfi#8i:,:;;;i;;tti!iiii!fC!i;:::. .,.. :i.,;,,::, . .:;!;:::::,:,,,,:;:,:::;;;;tiii;:iffi:!L!;;iift!;::; +!t@#CfG08G;;i;,,!#@;:it;,,,::!iitLCCt!:,.. ,,, ,:!i, .......,::;::,,,,..,:;:itt!f::tLt;CGCCC!!t!!!!i!;L0i:;;::::; +GL0L@Gii!;;i;;!;;iG@!:,:;iti!tG0Gt;:,.. .,. .. ,ff;. ,LL;,,:i:::;;i!;!:,,:,,,,;!;!Ct!:;:!i::!itffttti!!fGi:i0i,:tt:,:! +#GCfL!:..,,,:tGtLi;L@i;ifLCLLi;;:, .,. ..,...,,..;:;,.;C8C, ,,:!i;iL!;!;:;;;;:;Lf!!!;!i;tCt;i;;;;,.:;f0@###80GGt!;if!:LLi;::! +#G##t:,,,;,,:;!i!!!iL8Cift;:,,. .. .,;tC,:L!C!.,;!:,:. :i!:!;;iC!:tGCCff0LL0if!;;iit;:tff,..,:;itfCftfCC;;fLt!;!;;!!if +#8G##i;:!:::;i!ttttii!;:,,. ..,. . .,, .,iGC:,if;,:,.. ..,:;!;::::;t8i!G##GCGi!i!i!!i:!fi;:Lt!t!!!;;;;::,,,::,,iLfi!;itiitL +G#Lf##f;:!!;!tfLLi:,.. ,,,,.. ... .:,.,:;;i:::,,;i:,!,::,,!,;i!!;tf;;iL;;!ft!!!!;!iti!;;tGt;:;!tf0fCLCLLt;:;;;;;:::::::tLLLCC +Li@tf##8i!!tfi:::,. ,::::.... . ,ff;;CCi,,,,,,!i;;:,,,;i!,;ft!;ffi!i!;:;!!!!!ifLCttf!!Ltt;!!!Ci!fLtiitf!iLCttLi!:,..,::;;;i +f;!@if#L8C!:::,,,,......,,:::::L;:,,,iC0Cfi;,:,:f!;!;,,:..:ii,.:i!:;!!!fCi;!ttLC0fiffi!ii:;ft!;;!!!;::;:,,:iiiiiii!!LC!;;:;::;:; +;,:f0!ti:;,.::;::;,,,:;!;f!tffif@C!:!#8!;:,,...:G!GC,.,:::;fi,.!t:!iffiLi;:::;;!!!;:::,:;:;ift!iii!:;!!!;iiiiii;itifiC80Lfftt!!i +::!!;;::,...,,,,,,,..,:;!0i:!:,;8L;i##!, ,:: ,;L!:,.:fCtit:.:fi!!iLiit!::::::::!:,,::;;;!i!;!;;;;;f8Ci0G88i0i;;!!itttti!i!;;;i +i;ii;!!!;;::,,:::.,,,,,,;Ci,. ,:;!##!, .......,t,..:fCt!!t:.;Gi:::::;f!:,:i;;!!!!!!!!ii;ffi::i!ffifLiiiLLtttt!!i!ifC!Li!!!!!if +!,:::,::::,,,,,,,::;:;,,;LG:....,!##!:,,,,,,::,,;;,;,;Li;,;f;.;0t::;!:!Ci;;!!!;;!ttii!!!!!!i;!itfLCiLtt;;CG;;LiitifGCf!!ttiL#t!C +;. ,. ...,....,.:;;:!!:;ii:,:::i##!::,:,.:;!;,!f!::;;!!;;!!;.:f!::!i;iCftti!ii;;;;:;i!;iifi!iCfiiittLt!!ffiiffffit08i:!GGGCGtfC +;::;;:,,,:,:.....,,,:!!;!!:::t;i##!,,,,,,..,,.,:;t:t!:!ittiC,.;Li;!;;;ii!;::!!;::!:;itfi!!CC!itiiLCf##8ff8@fC88@@GffGi,;!i!!!!!f +iitfCt!:,......,,..,:iiLGLi;!;i#G!;,..:;::...,:!f:!L!;fii!;,,.Lf!ft;::;!;;.,:ii::!ti8@@0!;it!;;!fLL#LLfitffLiitffi!fLt!!!!!tffLG +iL;::::,....,.,,.,,,:;iii!:;;t#f!ii;..,:::,.,:!t:!iit!iCGLi!iCfti!;:::;ff!;;!!!;;i!Lfffi!!!t!iLCiii!!tL!iGt!iittt!ttt!tCfttLCC0# +:C;. ,:::::;:,;;:!f!;,,,..,;8#!::::,:,.,,,.. .,,,:;:,:;t8GCGG0GCfi!;!;!CLfffffi;;:;;;;!;;;f8ftfttii;!ii!;!fC!fCi!!iLi;!i!!!itttL +,:G;,,:;,:!,.,,,i0Ci:,,..,!##;,.:f!:,:;tL!,.,,::..,,,,;;;CLtttttfLffffGft!!!i!;:;i:!i;:!;;G@Cf0CiGiGLtL!!;!i!!itt;fLt!t!;:;!tLf0 +.,;C:.,,,,,,,:;,!LG!!!,t!i#0i!!:ifG!,;tGi::,!!:,;,,!,,;!;Ct!i!!!!if0CtfGL;,,:i!:!t!;;:;;::;!;;!;;!iii!tiiffttifftiifffCCtiiiiitC +.!,,:..:,,,.;;;,.;;:!,;i8#t;tLt!!ii;:!!:,. ,::,,,,:!iitLC!:,,,,,,,:;;;;!if:,;;;::;ti;:::,:::,,,,,,;t!!ii8#@@C8G#8!iii;!iG0CLtif0 + f: ....,.,,:,,,:i,.,!##!,,:::::;;;:;:,,,,,,;;;;::C0G0L;,.......,:,,.,;;;ttiLt;;!;:;;ii!!fi;!:!t!!;;:;!ftiii!f@f!t0i;!itLLC0tG# + Lf, , .i,.t.,f:;,,i@L:,..,,,:;!iittfi;!!;!i;;tt;!ii!;. . .. .,:::..:i!t!tfi;f!:;;;fGLtLt;:!iCLti;i;:;;;;:;!!!!LCiLGCi;;!!fGG + !f, :,,:,:;;;f;,:iCi;:,,;!:::::;;:;;:::,;@#C;ii;!;ff, .. . .. .ii:;iL!;!t;f!iti;iCt!;iLLLLti!;,:;t!!!i!;G8fiitt!;;;;;if +:!f;,,:it:;t:iLi!i,,;!ttii!;,,,...,........;L#i,G0: ,08: :tfi!;,,,: .:,,::;;!i;;;:::.;0t;i8#####@GtitCt;!!!;!C0fL0GLCLGfi!iC +;iCt;tti!t::!::;,:: ,C!::;:,,::!!::,,,,::,.,C8:.,:. .,,,,!L8###G;t::!fti!::::::,::!iiii!,!Li!!tLffL######@t;::ti;LGif0CffGGCLtfC + ,ti,,::::;,,:.,:.!::!::;:;;;;CCGL!;!;;i!,;;:;:. . .,;iL@#Gi,,@######;!fi;;,,ii:if;,::!L;iti,:;iiiitf;:;!!:!tt!!ttitfLft!iL + :;. if:;L;:!,,:,t!,;;;,,,.,:;;:,,,,,:,:t:,::::;::;:.. ..,:!ii;,,;fG###@:,;;;;.,;, :;. ,,::;:;,....,,,,:,:if;,;0f;LCCCG888Ciif + ,i. ,it;;t::;,,:::!,,:,,,::,,....:::;!!;;::,,fCffLi;:;;!ifLLff!,:,::!;:. .,, .;:,.:;. ,. ,!;!;:;!!:,;f!;ii!!!iti!iCC + ,:, :Gi;!:::,t;.,:;;;;!ifi;;::;;;;;!ii!:..::;:;!ii!!itftfi!!!,!f:, ,, . ., .. . .;:i!;!it:it:,!::,::!;,,;!i + ,t, .;Gi..,.,,,,:i:,,,,:::,.,,,..,,::;;:,,,,...,,::;:;;::.,Lt::f!:,.,..,,,.... .. ,, ...,,,:;:,;i,....,:;,,::;i! + ,i: ,,,. ., .::;:,,,,,.... ..,,,;LLftLtt!i!ttiiL;ttfL!i!f8!!fG#tftL;:;;:::;:::,,,,,,,:: .,. .,. . . .,,;: + ,i; .,..,.,.. .: ;Ct!i;!;!;;:::!!!;tGLftLLttfffLfLftttfftLLi!fG!i0@G8GCGGCCCCGGii!:::::::,;,,,,;;: ,. ...,:::::,,,,........ + .!; ..,::,,. :,: .:ii!ti::iiit!!::,;G0;,::,,,,:,:::,,,,,,:::,.::,,:;;!tttfLffti!:,,,:....,;:ifft!;::,,,,;;ittffttttiii!;:::: + .;, ,..,,...... .,:,,..,,:::,,:ifLt!,:;;;;;,, ,:::::::;;;;;::,;;;;iii!!;::,,,,:,,,:;;!!!!!!!!!;;;;::;;!!!!;;;;!ittti + ,. .:....,.. .,....,.. :####8,,CG@@8C@CLLLGtiCCGfGL!C080GG0G;:L;iCCL0GGGtC;:ifi;,,,,::::;;;:;;:,,,,,,,,,,,,,::;;;;! +. ,.,,.. .: . .:. ,!;:::G@8#i..:;iCfG#######8;;:!ti;:;;;;!C;,:!;;!!!!!!;!;:,:!!:,.,:;;;;;;:,:,,;:;;::::;;;;!!;;:;;; + , .,,. .. ,:: ..,!..,,,. . .#####GLffi:. ,Ct .,,... :;:,,,::,..,..,,,..,,,,,,,:::;,,,,::;;!iiii!;;;;::::;; + . . .. .. .!ti@#, .,,. .CL. .i!:;:,,,,,,,,,,,,,,,,,:,,,..,,,,,,,,,,,:::,,,..... . + .. ......,. ,;;;;;;;;;;;:;;;;:;:;:::;;!!;;::::;::::,,,.  ,:;;:;;!f0C, ....;!!tLLfffttti!ii!!i:;;;ffii!,. .. . ..,::::::;:::,,:,:::::;;:;:;::;!!!!;!;,,:;;;i!;;;:;!!i!;;!!;!;:;;; +i;:!0GL:.;@C;,,;!!,..,:;;;;;:,::!ii!iCtGfi,,.. ,,,,..:!!;;:,,,i:....,:::!!!;i::fCt!G8000tGGGt;;t!;tLtt!;:;:,:,,:!;:;i;ti:,;!! +ifftiti;::!0@!:!!,,,:,,:!;;;!i!!LGCLi::::. .,:,,,,:;;;,,,:it;fLi;;::i!;;ttit!i!i!;!f!:!8t;;!;,,,...:,,:,:::!:,,::! +.;!!tL0Cii!;!8f;:,:itiiiii!tL00f!;;:,. . .,,:::,.:!:fLfti!!;i!!fC!;;;:!t,,!;itCLLfLtfGi:!L!,iLt,.,,..,:;,:!,,::..,:! +;i:,:it!!tt::!88!!ittifCCft;;;;,. ,.... . ..,:,,tLfG0i;f::!!!tGG0tL;!tCff;;;!!:...:C0@##8808i;;tt;;f!;::::,,:f;::;;,;!:,:;t +::::::;::;;;;itCGLitti;;::,,. . .;;!tfC:;ft88LGf:..;Gfiiii!!;;tfi::CiL;,,,;;!!i!!!!!:,tLf;;!;;!!t!:!i!;::;;;;::;;!f +!:;!!:ii!!!!ttt!!;:,,,.. .,,,.. .,,,,,,;!!!i!!;:!CC!;:;:.i0i:;;ti:,:LGt;;iftCfif!;;::,,,,,..:ii;;;Lfitfi;!L;;;:::;!;;iftf +i!;!!iitffft!:,,. ..,,. ....,:::,.,,::i!;t!;,,:;:;fti!i!;;,.:tfttitLti!;;CLt:!!L0LCCCCCtC;:!i;;;;;::,,:tfLCCti!i!:;;;;:!f!:tii +;;!ttti;:::,.. . ..,::,:,!i!CLtti!i,,,:;;!;;::;,;;;!Lfi!f;.,8@CCGLttLf:iLi;:;!ii!;!t!;!!!;fLt!::Lt:..,:;;;;::!!;,:;:;:;;,,,,: +Ci!;:::,... .. ..:,:i!ffti0CCt!!;:;Li::::!!!ii;::;!t!!ti;;;: ,ft!!!!::!;;;ti;:;!!!:::;:,:;t!!i!!;!tLi!;:i:;:,,,:::,,,:,:::,:::: +;:,..,:,:,,.,,:.:t!tif8f;;f#i:,....:C!iC!ttt!;;!;!!fCtfi;;!i, ,!;!:,,,,:i;i!!;!i;;::!Lf!ttLi!Ciiitfiff!;!it!::::;tt;::;::;:::i!f +.. ...,,,.,,,.!8!,:!0i,i#i,.,..,.:!0i!i!!!!!!;;i::;:;i;;;i:.:L!;;::::;;;tt;:;i!!i!C0iiGLGiitttti!tfi;:!t!;;,:!;tf!;iiiiLi!!;!C +,,,,,,,.,:,::,,,;0!,.,,;i#0:..::::,,t0!t::tttLLf;;::::;t!;;:.,Cfittii!!ii;i!!;itL0Cifi!;iff!ifCCGttLCit;!tGt!;i!i!!i800CCCL0t;t0 +:;;;;;!:,!:i;;!:!it:,,:!##;,..,,,,:;i!!t!!!!;;!;:,:it;tLiif:.:CL!;;;iti!!iii!iLfiii!;!;::!!!ittftiG8t;!tLC#@iffCLt;f8Lfi!!f!;;L8 +.,:::::,,!;;;;;!itf:,!i##!, .,...,ti!i!fCiiti!i;:;;;;!!i!i!i,.;i;;::!ii!!!LL!iGtitffGCL;;LfiCLLGfiC0i:LLftii!!!ii!!tii!;::;;::!L +:;!!!!;..,:!;;;ii!;!!;0#!,.,:::,,;fii0!t!:;fLfL!ifi!;:i;!f;;,.:i;!ttG08C!;if!;;!fC8#88L!!L8iiitL!;fCt!itiiitt!!!i!!ii;f!,:;:,:if +:,:,,,,,.:;!tiLLt!::;C#!,.:;!i;:;tii0i!t!::!ii!;;f;:::;ifCf;,,!i;itL0Ctti;!t!:;t!ttCttt!!ii!!!!;:;tLtG0CLG@@@8t8@8tLi!;;;;!;;L08 +,,.,....,,,:ii!!!;:;f#!,..,,:::,,::!:;L!:,:tfit;;;;::;!G@C:,:!f;:::;!!;;;!tGt!iti;i;!it!!ti!fGt;:!Lf!iffitfffttfLtiL8Liit!fiiGG@ +.,,,.,:,;;.,,:;!;;;L#i;:,..,,,!,.,,;,,!!;:,;!!ii!tt!i!LG!;;i0@t!!!!;!::::!L@CfCLiGiGt!i!!;ititi!;iCt!i!!;;!f!iL;!L!!LLitLiC!iGC8 +:;:.,,,;!ti!!!tCLi0#iiGi,,,;!i:;,,;,;,::!:,,!ift!t!:;!i, :0#0fffL0GL!;:;;:!t!;;;!fti!;tiiftffttiifCLf8Ci!;!!!!!!if!;!!;Ciii;!80G +::,,,,:tGLG0Ci!tf8#i;ft;:;!;:,::.,::,;i;;::i!;;!;;;;;t, ,ftii!iittffftfGt;:,,,..,!t::!i8#@0000Gittt!tGGLftiiffL0t!fC!iii;!!ttfC +,,.,;i:;;!;!f:!!0#!:,,,::;;;:,:,,:,:;it!;:;;i:;t!:fti;:.,:!t;ti;;;;;iLC0C88;,;:;!!;::,:!Ctitit#G!i0i;!iC0G8fG@###f!t!;tf!!;!CftL +,,.,:,,. ..,.:!0#t!;:::!tLfii;,:iit;::;!;,.,;i;!:;::;!tCtGCii;:,,,,,::;!tifL::iiGC!!:!;;;;;::!ii!f0tfLf!!i!iLffffiiCt!fCttiiGGLC + ....,.;.,!..i##ifftii;;;;;;;,:!ifGi:;!;,,,,;::,::;;i0@88!!i:.. .....,,,,,::;;iLLLfi!t;:;!t!!!!:f8Ciiti!!;;;;;;:!;i0tGfGtGffLfL8 + .i.,i.:i::,:@#i;:;:::,,,,,:!,.,:;!!i,:;:,,tf!;::if!;!!!;:. ., .. .,:;;,.,::t8#####0Lfif0i!!i!;f0LC8CCCGCt!iL!!i!;!i!itttiL0GtL + ,:,:!;;t::;iii!,,,.,,,:::;!;,.:,.,::,:;;::!i@#L!i!!;!:;;:. . ......!!!itffL0######G!;;ii:iGitLtitLffiLL!tCLLtC!!tffifLfiC +:,!t;tLi!!,,,iCf;:::;:;ii,,i!. . .,;:::,:t##f.;0C,,08!.,!i!;:,., ,iC!;i!:;!iiiit!:;!!:;iti;i!!ittttti!ittiifC!!!:;CL;;C +;i::!::;,,: ,ff;!t;,..,:, ,,..,;:,,,,:,,. ,t#t ,;:..::,,!L8###t!::tfti;:::;::,....,,:,:,:i!,:GC!GLffCG0GLCtfL0fiit!i!;:!tf::f + .:,,:..:.:!:::.,,:,.,,,,..,:!!;fLftftii!,.,t,;C!. . .,;iG##L,,######!.,,,;. ,. ,i!i!;;;;:;i!;i!!!iti!!!t!ii!i;;i!;:;C8L;!i +;.,t!,;,,;,;i... ,,:;!!!;::;ii:;;!!;:;;;:,,ff;:;;:,:;::. ...:;ii!,,;ttft;, . ...;:!;;!f;;i!,:,;;!i!;:::::;::!!:;!;;LCCLif; +,i;;!!,;:.::,:, .:,,::::,..,,,.... ..:!!;;;,. ,tfi!:;;!itfLff!::, ... .. ., ..,...,,,,:,. ..:,,,,::i::t;,;,,,:iiii!!;,, + ,tL;:;,:,,t,.,. ..,. .. .;!!!!:, .;!!i!!!tttti;!!;t,:;;:,.,;!;. .:: ...,.... ..,..,:,.... .::::,,... + ,!G;......,!:........,..... . ,:;:;::,,...,,:::,:;;:,.,tL:,;t!:;,:;;:,,..,;;,. .,,;!!i!:;!;:::::::,,,........:!::;,, + ,,, . :,;!:;:::::;:;!;:,,,;:::,,.,tfttLtt!i!tfttL;iitLiii!LLf!t@Gf;f;:::;;!iti!::,,,,;iii!itii!!!!iffti;;;;:,,:. ...,,,. + ......, .!tt!ii;;;!ii;;t!!;ii;:!t:iCfffLLiitffLLLLfffttttCft;G0!iCi!tfffffffff!!;:!!;!;:::,:;;::::;;;!;;;;!;,..,.,,.,..,:, + ,:,.. : .:t!!,,,;ii;;,,,:if!i;,,,,C8!:;::,,,,,,::,:,,,,,:::,,;;:..,,:;!i!;;;;::,,:::::,:;::::;:;;;!!;:;;:::::::,,..,:,..., + , .... .. .,,....,,,,. ,!,:,,;!ffii;!i!;;!;;::,.,,. ,,,,,:;L;;;::;:;;!!;!!!;!:;;;,,,,:;!!!iii!!;;;;:!;,:;!!!!;,.... . + ., ..... .,,.,:,,.. ... :####8::GG0G08@GG0L8G#0LLiCL;CCL00C0GLiC!iGCL000GtC:,,,..,,,,,,:,,,,..........,,,,::. .  + .......: . ., .,:f, ,G@8#i..:;;;;iCtG#######8;:;0i:!ii!;;;;;;;;;;!!!;!::.. .,,.....,,,.. .,,,,.  + .,,. ., .:. ... .,,,. .##L##tiii!,. ,;, .fL. .:,.::...... ..,,...,...,,:;!!!:,,,::,:,.,,...,,;!!:.  + .::.... .;!:!!. .:,..;!;:,,,,,,,,,.,,,,,;:,,..,,,,::,,,;i!;:,,.,..,...,,.  + ,,. .:;;;:;;, ... ..,,,,::;;;;;;;;;;:::;:::::,,:;;;:,,:,:;::,:,.. ....   ,fGi,,:::,,,;:!tfftfi!titiiii!:;!!it;!ittiti!:, . ..... ..........,,.. . ..,,,:,,:::::,,:::,.:!!.,. . .,,:!iiii +,,,,,!0G;;!;,.,,:;ttLiii:,,,:!iii!fGGfiif;,.... .,:,.. .:,...:t, ... ..........,,.,,,:!:,::::!;:,.,,.::.,:,,..,;!,;::,,:;: +ii!;;::t8!;;:!ifi;fi;!!iti!i!f000Li!;:,,,. .;;;:. .:!!!;!,,,..,:,,;;::,:;!;::!;::,,,,,:;;,::::.,,,,;;,:::::,:!f,.;i! +;!tt:,,:!GGfttifitii!itCG000L;;!;:,. .,.. ....,,.;it:. ..:LGCL!;ti;ifti;;;;,:::!i;;i!i!,,::::,:,:!;,.,,.:i;,:;;;...::,.,:; +i;;::,!;;iCLtt!itCLti!;;;;;;,. ,,.. .,::::;:.;Ct;!t:iG!:i;,::!tfi!Li:!0t;!!;::,..:::::;;i;,:::,,,::;;:;,::,i;;:,,,,,,:::,.,,; +t!;!iiiittiffL;,:::,,. ,:;;;;itLCLGGtt!80!t!iii:C0C.,!L@@CLGf:!f!:LGt,,,..,!;,;:;;:,,,,,,;:;,:!;!t;;t!t!:::,:i!;:,,,;t +itfLCGGLi;:,:,, ..,:;;;!f#@880CLLLttit;;tL;:LCG;:;;:.,G##0G@L!;fL!!f!;;:::,;i!:;;;;!,,,;::,;i;;;!i;!!i!fii!;!!L!!;:::iC +!i;;;;;:,. .. ,:::,.,:!ifLCLf@#CCG0i!!!ti!;,;Cf;:ttttii: ,;ii!;;;:,,fCt!;;!iit!;ii;:;;;:;:;!tt!;!i!ttiL!it!!;it!;!t!ittii!iC +.. . .....,iCCti:,;;itttitffi!tttiiLtii!;!Gf:,:!fLC8t.,GLi::;;;::;;;:,!LffLt!ti;;:::!;;tLLLfittitfiiiifittit;:!;;:iiffiit +.... . ,;;;;:;;ti!ii;::::f0CiiffftLCCG0CLtfCL;Lt!,:!;titG!.,tft!tGLiii;:,..,:;tLtttt;:;;!:it;t!!!::::::,..,:::::,,,...,,:::::; +,,:.:i;:,;@@;iiiLL::Ci;!ti!fLi!;;;;!!ti!!!;;;i!;it!;;;;;;!f: .!!f!iii!!!CL!;::;:!!;:;;,,,:,:;:,,,,,,,,,,,...,:t:::,;::,,...,..,; +:,:,!0it;L#t!tttt!;!!!!tGLfCi!;!::::::;:,,,,,;i;t!i!tt!!;!C:.;tfti!i!iiftL0CffLti;;,:;!::::::;:::;iii!!!:;::;Litft!!ii;;;;;;;;;: +:,,,!0!:t#0!!iiiifG;;i::;;;!t;:,:;!::;!;::::;!;;ii;;;!!!!f:,.08G0iftiii!ffti!it!;::;;ff;:;;!i!;::f0Gt!!ittC!!L!!Li;!C!:!ffLtiLCt +;:::ii;!G#i;!ffff8G;ti::;::!f!;;;!;::;!tiii!!ti;tt!;;!iLLi,.,!fftiittft!tGfi;!i!!;;!!!iitLffLtL;;f0L;ft!!iL!;!!;!!;!!;;;!i!;!CCt +;,,:LLft#f!!!!!!!i!;t!:!ft;tCfttt;;!;;;!!;!i!!!!ii!!!i!!!;:, ,!ii!i!!!;i80i;itf@iiffft!C@GCiiCt;i0@C;iCi;!ifLCCGGGGGCCLft!;:i0Gt +:,,;tit#8iiff!i!!if;:;;;!!!itt!;;;!;::::,::;;;iitL!;L!!!ii:..:!fftftii!i00!tCLtiiti!tt!itti!;;;:;ft!t;;;;!L#############fti;L80f +!!::;!##ftf!!;itft0;;ti!!!:!i;;,,:;i:,:;iiLLGf!;!Ci;:;!C@8: .tC08iLfLCi!CGiittiitti!it!;!:f!:;:,;ii!;!!;ifC8###########0LLL;tCff +!::!!f#tiLi;;:;iif!!fGt;::::!i;,,,:i:::!it88Cfi!;!i;;iC88i,:fGffti!iti!!fLfCCLL0888f0@Ltii!;;;;;t8@f;L!;;!iifLCCCLLCCG@t!i!!L0tt +:;!;t#C;!!;:::;ii;,Ct;!:,:;:!Gi!i!!!!;:;:!iti!!;;ifif8C!;;;C8CfCt!fLftiiLtitfiitffftffii88iii!fff08!;ii!iCfiiii!iit!!itt!!iC##tf +!:;t##!:;i!i!i;it;:;;:,;!;!;fftiffLL!:::,,!;;!::;L0G0!,,:00ti!;!itiii!ifffi!i!!ittiG!!L!ifitLff!fCt;!LLfCtfL00fLiGCffL0Gf!;i@#i! +!:!##i!;;fiLG;::!iL!;:!!!ii!fi!;;!ii;::f;::::;;,:itLf. .Cfi;;;;;!;;i!;;!!!tffGftiit!itt!;;;it!i!tGt:!!i!!t;!f0i;iitiifttLi!L8L!C +!;G#i;;:;iiif;:;!i!Lf;!!!ii!if;,,!f!;:;!f;::,,,,,,:::. .:!;!tfLft;;fi;!!;:;!tCLtLfCLL#G!tt!!!!iiLfi::i;;;;;:!i!:;L;;itttti!LGt:i +!t#i;:::;i!!;;!!!::!!;;fCCfi;!;::;iii!;!!i!;::;!!i!:::;!iCGffLCi!tt:,,,,,,,,,:;;iC88##Ltii!ti!ii08i!iiiiii:;!Liii;;iLG800f;L0t;f +t#t!;;;;!ifti::::!;!f!:i!;;::it!:tfGGLffi:;;;fGGfLtf!t@@@GGf::::::,. ......,,,.,:ittttCt0CftftLfLLLGiGLtf!!;ififf;::!iii!::fLitC +8G!!GL;::!i!;:,.,i;:::,,,,,,:ftt;;tfftit;:t:!LCttttitCi!!;::,, . .,,....,:;!;!!!!!!ii;!tfCtttGCt!iitt!!;ifi!!!;:;;!;:,,;!!;iL +8i!!LLt;!if!,,:;ii!;;:;!tti!;;if:!tLCi!!L;:,,:,!8@t!!:::;::;;,. . tt. :0@8GCtCftCi:!!tti!tCGii!iCffift0fiti!!;;i;i!;L@L:!! +t;::;i!t;:!!;,:fGC!ti,:t880t,!i;:,::::,::::,,,,;CC0@t,,0G,;8G:,tf!;,:,i;,...;LLfftfi;;!!i!G!!!:!0f!C!!i!!t!it!!ifLf!!;!itf@#G:,; +;!;:::;;:::;;;;;!!;;;:::!ii;:;;:,,,,;,,..:ii!!;:,:i@8:.:;,.::,;f8##0!;fCG8GiLttfftLt!!fi;iti!;,!ti;i;:;;;;;!:,:i;::::ti;::if;.,! +fL;,,:,..,,::::..,;;it;..:;;!!!;;;,!i!;:.:;:,::i! :08: .:!t00;@#####f;;;!!!CGLfL!t;ift::t@f!t;:ft:,;;::;::.,,;!;,.,::,,:! +!!;,,,,,,,,,,. .,,,,,,,:,,::,,...,::, .tfi;:!!;,,,. .,:;!;;;ttti!:,,,:,;!i!i!!:;;!!;!CGCtt;;!::;:!;iL!!::!!t;.,!!;,.,: +;!;;i!!!t!;!i:.. ............ :t;::;!:tt;!!::;;!tfLft: .. ,;:.,;;i:!f:;;,,;iii!!:,,:..,;:,,;it;.,ii!. ,:;:,.,: +.,;iLfti!!;!!:,,,,:;;;:,::::;:,...,. . .i;::::,.;!;!iii!itti!!!:... . .,,.,;:,,, ,;:,,,..,. .., ,,. .,. ::, , +,..::;:,,.......,;!;:,,,,...... ..,:::,::,..,:,:,:;;;::, :C;;t;:;::,,..,,,,,,,,...,...,::::,:. .:,. .. . . +..:..... ,.,.. ... .,,:::,,:iitiii!;!!iiitL;titLiti;ii0Li@G008ttttiiittti;;;:,,,. ..,,,,,,,,.. .,;:,,:::::::,,,,,: +,,,..... .::,,..,;;!itLCt;C0Lf!ifffLfitffffffffttftfLi!GiLCLLLLLtiitff!ii!!i:,,,..,:,,::;;:,,,.:;;;;!i!iftiift!tf! +:;:,,,...,,::....,,,,:::::,:::!i!!;;;;:;8@!;t;;;;;:,,,,,,,,,,,,,:::.,,,,;:::;::::;!;::!!;;;;!;;:,,,,.,....,:;..;i!:::::;::;;!i;; +:ii::::,:!iii;:;!;;!ifLi;,!!,;;:::i,:!fLLi;;iiitii!::;;;;:. . .,;!;!;;:::;;!!!!;!::,::;!!i!;:.., .. .,,.,,... ...,, +,t;::i!!;ii:::!it!i;!t;,.,;,... ,:;.:####0:iGf08000CG8888@ftGCGft!iiCGfG0f;C;iGCtCCCGiC, ........,:, .,. .,. +.;!:::;:,,....,,:;,,,,, ,, . .,:;G88#f:ti;;!!;;;;;fff########@;G!!ii!;:::,;;;;!!;;,,..,.. ,it;. .,,.. . + .;!:,,.,.. ...,.,!;,::,... .it;;!!!;;:, ;#####Lffti::!,.ft,:,....,,::;, .,:i!;.... .,,, . .,:, .; + ... .::;:.,. . . ..,;;tt;:,..,::;!!ii!!!;. . :##L##: ,::;::,,..,,,,,..,:;:::,,.,. .. .,..,:, ...,., + . :: ...... .::::::::,:,::;;;:.,:;;:;;:,,:,..,,.,,,.,,::;;;;::,.,.,,: ,:! .,,,...... ..,,,:, .:;i;;!Li:;;i!i!: .. . ., ...,,,:,.,.... ...,,,,,. ,,.,,,. ... .;,,,,.,... +i;;,.,.....:,..;8L;;i!; .,::::;;;ti!t!;;i0fLf:.....:.........,;i!:;;, . .,,..,,,,,,. .. .. .. .. +i!;:;!t!:::.,;;if#8Cf;..,.:CCitCLCftiitCtCf;;:, ,:,.,::,,:,:;:.:L,.. .,,..............,.. ..,,...,,, ..;,. ...,:: +iii;i@#!t0i!;;L0Ci#8!:,!i;::;!ttfLfifLL;::,. ... .. .,..:::;:, ....,,...,,....,:::;;:.....,,,::::;;!;;;!!;!::;,,,:::,;!! +it!f@@GfLL80fiti;;!8@;:!;,,:;!ifG8Gf;:,, ., .., :!:. .fG! .,. ..,:,,:;!;:,..,,,:;::;;;:,:ift;tGCC0tLGGL!;ii;!Cfii:,:i +8LGCLtt0!;;!;!!iCt;!L8!::!fLCCCLi!;,. .,. ,,..... ..::,.,f8L, .;;: .. ,,,,,:;;;;:;,.....,;ttfLL!t::tt;;ftii!!!ii!;it;:f8i:;!;:! +#0#GLifi:...::,!L!!;!0#tiLGCt;:,,. . .. ..,.,f!GG,.;f!,:. :..,,,:tt;;;tft;;:,:;;:;:;!!tGt!:!::f,,;:;!tLfLLLfLC!;if!,tGL;! +@##0L#f:,.,:,,:;!iitttC0!:;:. ,,,. ....,.,:;L;!C!:,....:,:;,:ti!;t!;!i;!tti!!LCtLftiiiLCf;!;!!:,..,iG8@##8888i;ift!;i!!if +###@Lf#f!:;;:;;ttCGCf!::,.... .. . . .,::,,.,!CL,.ti,,:,.:!,;;,,if!:;;:!GG;t###0CLttCi!!!;!ti!:LCCt:,,:;!!!!!!!!;::fLL!i;;!iL +#0Cf@if#@t;!;itffi;;,..,..,,,.. .., .;;,.,:::!:::,,;!::!,;ii,,;:,;;;;;;:!8C;fG@GCCC;;;!i!i:!Cf;:!ftfCtti;;;::,,:::,,;;;:;:iffL +ii8!t@iC##8!it;:,. . ..,,,, ,.. .. :Ci:;LL!,,.,.:ifii;,,::,,i!;:iitGi:!i!::!i!!iiiitfii!;iCt:,!iGCCCCCGfLG;:tfii!!;:,,,,:;!t +:f@!;@Gi8fGt::,,::,,......,::,,.,L;:..,iGGLti;:;::!i:;;:,,:.,:.:i;;:;;!!;!i!;,;!!tLfLG0CtfCt;Ci!::;!ii!!!i!!!!;!tti!;;CL!:::;:;! +,0L;:iG!,:,,..,:::;;:,.,:,!G;!;:,i@f:,i#L;;::,,,,,G;iC:,,,,,,.:Li;:,:;!!;!Li;,,:!i!i!!i!;;!;;tt!::;;!:;::;:;;;i!!!;!;itfCCLfLttt +:@t:!!;;:,,,,,::::::,,,::,!0!:!:,;0f:!#0:.,::!;:.,;ti!:;,,!t:.;0f!!:;tCCtLi!;,,:::::::,,,:;:;i!!!i!;;:;tCiLff0iiCii!ittfii!iiiif +L0i:!f!ii!ii!iiiiii:;::!:,if!,,:,,,:!#L:,..,,,,...:C;.,,:!G0i.;LLi!;!;!!;!i;:,:;;;::;;:::;;:;L!;:;!!!!tGCifLLGtittttiitG!;!;ttif +L8!.:::,::::::;;;::,:;::::t0f,....:i#t:,.,,..,....;i:,..;CLLi.,G0Gf:!;::,;t!;;!;;!;!iii!!!t;!t!!;!iCG!!Li!;fLf!fLCC8ffLCf::!ifG# +;8! .;,...,,:::;::..:,:;;:;;;:,,:!G#i:,,,,,,,:;;:.:i:..,;!iL: ,ti!;::!ft;tLffi!;!i;:;;;ti!!!ii!i!itii!;;!;;!i!iiffLftt8C!,;fGC## +;G!::;!::,,,.,,,,...,,!;:;:::;i!i##!:;:!;,;:,:;;,,;C:.;!!i!;:,!t;:::;;;;!!fi;;:!;;:::,:;!!;itGi;fftifff0CC;tCLtGCC00tfCC!;ttiitL +ftt!iti;,,.. ..,.. .,;t;!ttt!;t##!,:,,,,:;;:,,,::f;::L0LLLtLG0Ctf;;i;:;;t;;,.:;t;,;ittLCGi;iLi;;;ifL8#88Liif8f!iitt!!LCi!ii!!iL +i:!f;,,,,,,,,,..,,.::;;;!!!;;;i##i;:;;,.,!ti!,,;if:,,tifCtffG8GCLttifi!;;!ti;:,;t!:!itL0CLti!ii;:ii!!tLttt!ti!!;!!!;:!fttG0CCC8# +!,:G!.,;;;;;!:.,.:;L@f;!ii!;!0#i!i;;!;:::,,,,,.,:;,.,:::!L!!iiitLCLftCGt;i0GLi!!!!;!:;iii!!;!tLiiti!!!;!it!!i!!ifC!::ifi!ittiifC +i.,:G:,,:,,::,::,;G#@t;;;::!##!,.,:;i;:,,,::,..,,,;..,:;t!:;:;::;!fLiiC0ftf!!Cti;:;;::!!:;;;!G0tfC!tftGt!i!!;!C!tt!!;tft!i!!;;t0 +!,:,,!..,.,..,;i;:;i;:i,,:i#0!;::;;t0G:,;t0i,,.;!;:;!tCC;,,,,,...,::::!!!!:::;!;:,,ii;::::;,;fi;;i;!iit!;t!!tftfii!!ifCLf0Li!!t0 + ,i, .:,.,:, .,,:,,. .:;i8#i!;:LC!;tit;;tLt;,:::;:;tG08i,..,....,:;,.,;!;!!,:,;!;::;i!;:,,,,:::,,,..,:i:;!!C#08LGftt!iti!itfffL0 +..tt, ....,. :.,t:!..;G#8!;!;it!:;::;,,:::;!!;:;f!;tti; . .. ..,:,..,!t!;:::;ii!;;;i!i::;;;i!:,,;::,,,,!!0Ctfi!i@8!iCi:;;f@@0# +, iG: : ;,.;::f;,,,C#i:,..,:::::;;;;:;!:G##L;ii;;;@G: .,, .. ,!;if:,iCGfff!:;;;tCtifi:::!Gi:,:;!i!i!;::;ii!i0t!f!!iitC +,,!f;..:;;::::;t;i!,;!it;,,,.,!!;!iitft!!!:iC0!:GG, :88:.!LCi!;::;: !!t;:!tti!!;:f,!ff!tfi:,;ii!::!Gt;i;L!;::::!0L!:;;:::;f +;itC!;iiLCf;ti!i!:;,.:C0f:i!,!;,,:::;;::::,:00,.::, ,::,:!L8###C!t::iftii!tL;:!tfi;!i:,,,:,.!Ci;:i00fftfLfi!tii!!i!;C8Gi!iiiiitL +.,;fi,:;:;;::::,;,,!.:fi;::::,...,::,,,,.,!;;!;,:,:.,, .,:!tCGf;,,@######t!:,,:::::;:::::;,!Gt;!f0########000;!;!i;i8ft88GGG800 + .i:. .;,,t:,i:,;,;t:;;.,:,,,.,:iLf,,;;,;;;!i!;, .,;,....,:;!!;,,;tC###@;,,,,,:,,.:!ttfCi;iiiG!ttttttf0####i!!!!;:!f!;!i!!iitC + :i !L::fi:!,,;:!!,,,!i;::,,Li::!:.,;;;::::,,..,tf;:;;!tfLLfLi,:,::!!::.:.,!;::.,!::;!:,:,;;;::;,,.,:;!!!;;fCt:;ii!;;!;;!!iL + :: .:f!;t;,;,,i,,; .,,,...,:,..,,..;ii;:.:!!!;!iii!!itttfi!!!:!f;, .,::, ., ,, ,;,.,.,.... .,:,:::;;:,,L0!fCtitLCGG + ::. :0C:::,:,i:,,:,:,:,,:!;::::;:,,;;::,:::,,::,::::;;::.,fi::L!::.,.. ,:,..:. ,,.,;;!i!;:::,;!;;;!;;!!ii! + ;i. .;C: .... .;!ititttiii;:,,,:,,!LLftLti;!;ttiiL;ttfL!i!f8!!Li@8fiC:.,,::;;::,,.. . ...:,;;::;t;:ii,.;,:;!ii!! + ;i, .,,, .,. ,::!!;;:;::,.... ,;tGfftffitfffLLLftttfftLLtit0i!0@8f!;;!tfCG0Gtt!:::,,, .,. .. ... .,,,,::.....::,,,; + ;i, . .:,., .;ti!;;;;::::,. .;88;,:,,,,::::::,:,,,,:::,.:i:,,;:::;;::;;!!;::,,,,,,,:::!i: .:: . + :!. .,,... : ,;fi!!!::;iit!;!fLCt;,,;;;::,. ., .::::::::;;;:::,,!;;;!!!!!!;;:,,,:;:;:,:::::::!:.. . ..,,:::::::::,,,,. + ,: ,, . .. .,:::;::,:;;:;####8,,CG@@0C#LLG00!tCCGfGCiC000GCCG!:Gif00G8880LG; .,... ,!!!ffti:,,::,,:!itttfffffttttf! + .. .... .,:,,..,. ,C@8#i,,:!LCL########::;;ii!::;;;;!0!,:i!;!!!!!i!!:, ,:::,::;;;;;::;!i!!;;!;;::;!;;;;;;;;i +. ...,, ,. ,: :!;,,,,:.... .@####Gffft:. fC, .,, ... ,;,..,,.......,.,:!ti;:,::,,::::;::;:::,,,,,,,,,,,;;:! + , .... , .,:. ..!i.... .!LiG#: ,,. ,L! ,!::;;:;;:::::::,::;;:,,:::;!!!!;,,,,,::,::,,:!;;;!!;! + . , :!!!!!!!!!!;;;;;;;:::;;;;;::;;;;;;;;;;;;;;;;;!!;;;;;;; . . .,, .....,!;,:;!,... .,.,:itiif; ;;C, ,! . ,.. .,::,,,,. ., ,, ., .,,,,. ,,..,. .,,...,... +.,,,. .... .,,....:t,....,,,,,..,,;iL, ::LG;tf. .. ,;:....,:,t!. ..,:. .,, . ;; ... ... ,,:,.... .,,,,,.., +:itt,::,,....,,,,:,!;,.. ... ...,;;:!;, ,ii8C;,, .;, ,;!..!;,...,,. ,;. . .:, .,,..,;. .;;,.,,.. ..,,,,,!i!!:,:: +,;;:,;!!:..,:;!!:,,:,,.,.,,;!!!!!0@iLC, . :Gi!:. ... ., ,,,!i!:!. ,;,. .. .,:;;;::;:!i:....,,,,,,. .,;!!i;,.,,..,,; +:;!::;;;::;!LGi;:::;,,:;;!C#8#@0Ct#0f;:;;,!0;.. .,;i.!GGf,. ...::,,.,,,,:!itLCGLft;::G!. ,!;!:, .,,,,,. .,::;f +ftffL00CLLL@#0t!!;;;:;;!Lt@##80CCit#!:it;t0;,,,....,..... ,GG,,:;;:,,:;:::,;t;::!;:L00!:;;!;;;::!0:......,,,,,,,,!;:..,.,!!!:;t +ttLCC0###8@#8CftfttttttffLCGCL0GL0it#!;;tf:,...... .,..,., ,L!,:; .;;;,,..,:::.,:;!iiL!,::!i,,if;tt,.,..,,::;;::i!!;;,,:iti;:tt +itCLLLG###8CLfffL80GG00@8C#CLftGi;tL@L:f;,. . . ,,,.,;:;t;:::,.,::;:;:ff:,;C;;!i!;!,:::tG;::,,;i;:,,:,,,,,,,;;:;;:;;! +fLtiiffC08GCLLLLCCCG#G##@08#0G@f;,,!iC;,,.,,.,. .. ..,:,::.:i!0LLG;ii;::,,,!it:;t,!i;:;:::,:!:.;C;::,.,::,,,:. ..,:;;;::;itLt +i!!ftfffC##0#@0#0C00@80#@0###0#L;,::t:,,,,,,.,,...,.,...;ii;,,tLiG!;Lf:::::,::,:,,.:,.,ti;;!:.,:,.,,,.....,:,,,:,.,:it!fi!i;!fff +t!iC0LL00##0##0##88G##@0G###CL8#t:;f:.......,,,,,. ..,,.,,:tf:;t!i:.,tf,:i!:..,::,:.,,:,:,,,.. . ....,..:;:.;ti;;;;;;:::;i +fiifLfLC#0GG8880@0GCG@Cttti!!CL@#i;::,,,,,,,:,,,.,,,,:....,:;f!:,,,,!f!!:,,. . .,. ;G!i;,,..,,. .,......,,.:;!!;;t!,:!!!if +f!!iiiiL00fG##G###Gti!;:,.,,i0f0L;,:::;;:!;i;!::,;C:.,..:,,,.;G:,i;i8;:!:.,,.,,,,,,,:ftG;:!,.,:. ..,. .::.,,:;i!tfCiitt:!tGCfC +f!!iiiitLLLC@0GC08Li!;:;::;ff8t!;:,,,::,:::::,,,,!0!;;!:,,,,.:t;;80@!:;i::;:;:;i!!i:.,t:,... . .,,. ..,.,:fGLttittti!;;;;;;t +LttfffffCGCfiLCiCfff8CfLG;;800!!ti!;;;:;::::;:,:;8iif!!!:,;;::;,;@8i!;f;,,,,,,,,,,,..,;,, ....,,....,fGt!::ifCGCt;::::;t +i;;;;!!!iii!!it!!CC88####f!i#i:,:::::::::,,,,,,;!Ct!f!;ii!!!::::,ttC0!ff,.... ....,,,;,.........,::::..,,,,,:ii;,,,:;;!!;::itiiC +i:::;;::if!;!!!tfi!CLfGLi!tiGi..,,,.,,,:::,,..,,;Ctif!;!!;::;i0,,:!0!;8C:..:,..,,.:i:!;,:::::::,,::;,,..,,:!;!;;!:::::;:,::;!!iL +Li!ifttiC@fLGLfff;!;tGtCt::iGi;;i!:,,..,,.,,...,;tttLtiii;:!C#t,:G!.,!#C:,.,:,,,,:;::i:,..,,.,,,.........:ti;itfi:!iitt;:!!;;!fL +CCftLG0ft8fLCCf!;!i:!!tii, !fti;!;,......,,,...:i0LitCCL!;!0#!,,!!:. f8i:,,:;!;::it;;;::,...,,;::...,,,,:tf;!CL!::it;!i;!tf;:;!L +!;;::;!;!!!;!:,i .!:;;;,...;;!t:.,,:,:::;,:;::it@CGLiii!!iLGi:,t;!!::G@t;;:!:;!,:;;:,ti;;,..,!::..,,:;:,tt!;;i;;i:;!!!;!:i;:!;;L +,;;;;:,,;Li!f;,,. ...;L!..:L:;G:.:;;;:!!,,,,:f00tiiCGtiiiitfCCti;t8LL08!;:;;,.,;:,,,.:;:,..;!,,,. .,,,,,,:,:;;!!,:LGii;::::;;;0 +ffLffii;i8L!G8f:. .,,:,:L,:L;,:::,::,,:;,:!tt!:;;f0LittfLCCf!!if0iii:,;:,,,,if,,,,,ii:.,:;if!,.,,:;:,,,:;;ifGC;,;itt!iti!i;tC +t!!;!ittiGfitttLfi;:. .,.,:,.;,::,,.,::,.,..,:,,:;;;;;!;!!itfti!;,..:0#t!Gtiitfi:;fC!:;!if!:,;;ii,,:!;;,:tiLC;,:tfC!!L;::!tC +ti!;;!!;;Lf!LiiG0@@C;. ,t, ....:..:.,. ,..,;:,,,..,;!!!!!;;;::.., ;###8CLftLLfi!ii!:;;;:,,..:;:,,;::;:;!;;:;tf;!;:;!i!!;iL +tttiitti;tfiiLfiLtL08; .,,;L: :..;..!;;!i!ift!;,.,,..,tLCLi, .,,!,. .:!0L;::::;;;;;;;:::,,:::::!;!!:,,:!it!:;!i;;!!::LCGC;;t +;:::::;i;tC!!i!;!itLL0i:. .LLtL!,:;i::;,:0#@88t!;0G, .,. ,:::, .;:!C;. .:;:,..,,:;!!tiiiit;;itfii;::;!i!;:;i;;,,,;:ii;!;!!;:;t +,.:.,:;;;ttttt;;iLCG0C00: .:tCGiitttt,;;;C#t!L: .;!.,tCfi!:,,,, ,C@8, ..:i!,;,,,:,::!::;:::::;;:,,;:;fG;;!!:,,.,::::,:,,,::ft +....,!i:,,:;;!fttfftifGGCt..,;f;,:;;;!,,:fL:,,, ,;:,;f@###8t!t::;i;!iii:,.,,:;;,......,.. ....,,,,;;.,,,;ti,:!::,:!;;i;:!!ii!!!t +!;;!!ttttffLC0##@@#LL####!,:.,!, if:tf,,;;;!;:.,8#!::!tLCfi;,:######GC8:,:::,:,::;i!:,,,,,:::;;:;;,.,..,:,,;!;:,iff;i::,C88G;;t +08@@########@@8@@8#######t.;..;: ,tLit!:;;::,,..:8@;.,::;;;;,:L########L:,,,,:!:LftLi;:;!;ifi,.:!: ....;!!;:;;;!;:.,;ii::;! +#@#@@888@008088@##G##Gf8#! :..;, ,G0:!i;:,.. ,!f@i!itLLLLff::!ii!ii!i@t..:::;:::::,,..,,,:,..,,,,,,... .,,.. ,;if!,,,,:,,;: +Gti!!!!i!!iffffL8#fL#f!L#f;, .!: .:f;,,,,,: :00;:;!iiii;!!;,!!;!. ,,, .,,,,.,,,..,::,,,:;i!!!ifff!i!::, .,,:;;;::!i!: +Ci;:::;;::;;!!;;!!itiiC@C00, .!; ,!,,:;:,...:;;,,,:,:...;0!,,:C!,:,. . ., ::,:;;;;;;:::!i:;;!ttttffft!,............ .,,, +L!::;::;::;!iii!::;!!iti!ii;..;; :!::tfi;tit;;;tt!iC;ii!f@Ci;!CCt#Gii!f;::,,:;;;::,,......,.,...,,,,:;!;;;;:;;;:::,,.....  +f;:;;;!;;;:!i!;;;:!fGLfi:;Ci..:, :.:!;iLi:;!fiitttfffffLCft!!CGfiiL#8GGfCCti;ifLCC!;;. . .:;i!!;::,:,.,,,,::;;:,,  +f;!;!i!!!;;::;;i!;;!fii!;!f; .. ,,,:00;;,,,,,,,,,,::::::,.,!t:,,::!;:::ii!;:;!i;::;,,..... . .,,,:,,. .......  +f;::::::,,,,:!ti!;;::i!;;;i!, . ,;iti;;;tLLft!::;::,,,:;::;;;;:::::::,,,;;!!!!!!!!;:,;;;:,.,....,, .,:;:. ..,:::::,.  +L!!!!!;::::::;;;;:::;;;;;!CG: , ..:####ftf######tCGGtC;CGCGLG0CGGfC0CGGf:L!f00G0G80tG!:;::,::::;;:,,,:,.,,::,,,,,;!!ffffffi;:, +Ctiiii!!!;!!ii!;;!!!f!;!!!L8: ,, ,C@8G@######8i::;::;i!!;:;;;;;:;Lf;;;:,,::;;;;ii;;;;:::::::::;!;;:;:,,,:;:;::i!::;!!ii!!itti +f!;;;;!!i!!!itii!iit!fi!t!iC: :, ..,:,::!tL;:,, ,Ct .,, .!; .,,:::;!!!::;;::::::,,.,,,,,,,,;::;!!!i!!;:;;; +!!;;;ittfi;!!!!!ii!!!!ti;!!t, , .,,:, .,,. .Lt. !!!!;;::;;!;;;:::,:,,,:;;:::,,,,,;::::::::,,,: +;ittftfffLLLLftti!iitttti!!;!, .. :, ..,;;,:!iiittti!itti!!ttiiiii!!!!;!!;:;;::::,,,: ... :. .;,.:i!:..,,:;::,,.,,:,,, .::t,iC, :. . ,. .... .:;: ., .,,:,,,. ,, ., .,::,. ...  + ,. .... .,,:;,,:;!:,,,:;:.. ,f: ;Gt:t! .. .,;. ::i!:i: .:;,,..: . ,,. ,, . .;;, .... .,,,,..,... +:,.. . ...,...,,!;,,,...,,. ...;, .:i8t;,. :; ,.!, .:. .,iL;:,:::::.., ..,. ...;. .,!;,. .:;:,,,,.. ....  +ti:;;:,....,,:;;:,,,,,::!:,,,,.. .!i!;: t!L; .,.,. ,, :.,;;!::tt!i;,. ., .,;. .. .,,:;;;:::,:t!::,,:,,...,....,:;: +fiC!tt!:,,,,:ifCi;!;,,,;;!!;,,,:!ti;,i@tGt.:;L,,. . .,:;.;GGC,.,,,, . .;;. ...,:;::;iitCLt!t0!:,,......,,,:;;;:,,..  +;!8i:!ffitti!!tttf0t::;ittf;:;iC###Ctt#8i::;C!,,...,...... ,C0: ,;;::. ..:::,,,,,!, ,!;;L0Ci!;!:;!;;;!0:. .,,:!!;,.,,,,,,,, +t!Cf!tLCL##@GCL80##L!!!tti!!;;i8##880Lf#i;;Gi,..,.,...,.., ,0C, ,..if:,i;ttLtfi!;;,, ,:;f!iL;:;:::,,i;:Lt,.....,,,:::,,:::!tt; +i;fCi!fLLG#####8##0LCfLftfLLLffCGCftCft8#!L;,...... ..,:,.::::!Gf:iC:;;;:;::,.,:::ti,,!i:ftffi!,,;!!G;..,;;;:::itii;:::::; +!:t8t;tCffC8##GC0CLfL#0GLC8@##G8#Gfifi;L8i:,....,,. . ..::i!0G,,:ii!L!,!;::!;,,;ift;!::C:,:;;;;:,,,,!G!:::!!,,,:;:::::,..., +!;t@f!ittitLC0GCCGCGGG0CG#80##08##0#f;:;i;,,,,,,,,...,.,,..,!,;Gi0G::::,!C0;:;,,,,,:::::,,!:,,,:,:!;,;!;:;;;;,,,.......,:,,, ., +fti0i:;;iffLL0#0L##G#8C#GG88##G###G##i:i!,:,,.,,,:,,,....,,::,;f!!;:;i!:,:!L:,,,:,,,,,,::,,,.,:,.,,...,...,.. . ..:,.,;,..,i +!;;;;::;!tGL8##0C008GGCCC0###CG0GfiL#8!!::,,,..,,,,,.,,,.:!!;;:;,.t:,,,,,,;Lf!i!::;;!!!:,:.;t;,: ., . .. .,,.,:,.:!i +!:,,:;;;!!ifL8#CCG#G#GGGCLLft!;:,,tt8#!,;:::,,:,,,,,::f!..,,,,,;::;t!:...!@!;Ct,:i;,,,,....;L!Gi...:!,..,:. .. .,..,,,,,::;;!i +i;::;i;!;;!!!tfLL0#GCG##f!:::,,::!f!!;,..,,,..:,,,,,;:ft,,,,.:;i!L!iG;;:i#0;;;i,:f;,::,,::::!f:,,::,;;,,,,. ..:, .::...:fCLfGL +###@GLi!;!!ii!!itffLfLGLfifti!!:GtC!,::,,,,,,,,,,,,,,;fitftt!:!i;i;::;;L#Li8!:,;f!:;;::,:;:,,;. .....,.... ... . ..,..:!Cfiiii +#####GCtitffLtttfiifGL!LtG##C8G!!#0!:i!;!!!;;;;;;;;::;Cittift;tt:,;::i@@!,:0@tGCC!,,,,.......,.,,,.,.:,...,.....,,:..:,.!Gt;,,tf +#GLfti!!iti!;;;!;;;!ttiitCLLG0Lf!i0;,::,,::::::::,,,:;f!;!ii!tGt,:;i@#i!;,,i##@tCL:,,. ...,;:,,,,,,,,,,,,,,::::,.,,.,,:!!!;::;! +t;:;;i;!i!;;;;;;;;;;i8Gfi!tift!;;tf!:!!:,,,,,..,:;:::;;!;:!ttG0:,!C#G!,:G!:;iC;!@C:,.,...,.,i!:;:,:;;;;;;;,,::;,,,,,.,ii;i!ii;!t +i:!itf!;;!!tCLiiLLftG@f!!:!fL8L,;GLftff!,.....,i@8CCfiti!;!ifG!.:@#t!!!!i!;G; .t#t::.,;:::,:::,.,:,,,,,:::,,.,,,,,,.,ii;!Lt;::if +i!!;iCt!fftC0CGLfC08i!;.;:;;!::.:LtC!,:::,,,,:f###Lfttiiiti;ti. tGi!tf!;0t;!;,,G0i::::;!;:!::i:::;:,,,,;!!;:,.,;;:,,!L!!tGi:,:tf +fLi!;Gi:!!;;;!!;;!i!... .,.!!, .;ti0; .;!!;;:t8ftC8tittitti!!!::t!:,;!:!i!:0f;!@#ti!!!;!!;,:fiitt!!ti,..,,,...,,;:,;t;;:;;:;!::t +;;:,:;;::!!!!!!!!;;;;;:. ,;,.,f!;G!.;::::,,;t!:;tCt!itfLLi!!iftti:;ii:!:;i00C@8i;;,,,..;i:,:,:;!;;:,..,,,. ..,,,.,,,:;;!!,!f +;!!!ifi;ifCCGLLftftiL@0!,, .;,,;:.;:::.,..,,,,:::;;;!!;;;itfLttt:;::;i0008Lt:;f, ,::;C;,,:,iGf,.,:iLL!,,,,:;:,,,,;:!iLGL;,; +C00008i!!tiitttiii!it0GL0t:. . ,!, ,.... .,,,,,,.:ii!;;;;:;:;;;,,C!,0#8#@0!,;;!!;;0Li!tCf;:iLL::!itf;:,;!ii:.,!i;:,;iifL:,; +;!i!ifLtft;!iftti!!;!Ltt0@8!, ,t, , .:;!f!fi;;,...:iff!:. ..,;it;,,,::;@C!;:;!L0Gtiffttfti!!t!;::::,....:;:,,,;:;::;!;;:;tt +!:::;it;:;!;;!!;;iti!Lf;!Cf0f, .tif;,,::i@@G8t;!8G,.,,..,,. ,:!!!iL!. ..:;!:!,.,:;:,,,:::;;;;!!!:::,,,:::::!!!!;,,,!!ti!:;!it +titLL0C;;!;;:,:,:!!!!Lt:,:;!tf;,,t80iitiL0#t!i: ,t;.:LGt!;:,,:. ..,iG@@: ...,:i;:... .,;:;!iitftttti;;itLii!::;;!!;::;!;:,,:i +t;tGf!tCGf!i:..,:fi:;:;;:::;!f8t,:!f;,::;tL:.,. ....;C##@8C!i!,:!!!ttti!,:..,:;fi,,:,,:;,::,,,::;;;:;::::::;:::.,::!Cf:;!;,:..,! +..,:, ,;;::,,,.,::;::;!iifGffCf!:;,;, ;,:;;!!:. .:.,;itffi!,,t######Lf0#;.:::::;,,,:;!;,..,....,,. ....,,,:;..,.:!f;,;;:,,:;; +!;;;;!!!iitfffffffLG@##########i,;,;: ,i!;:,:,.,.,;,,,::;;;:,!##########f!!;:,,;,,,:;::,,,,;i!:,:,,,,:::;;:;;,.,,.,,,,,;!;:,iLt +GG00888@#@##############@@@@0@#t ;,,, ,t!:,.,,,,!.,ftitLLLffi:;i!!!iii;t#@0i::,:!;!tt!;;;;iLLCL,;:i!;tLi,.:!;, ....,;!!:,;;, +8008880GG0CLLfLLLLLLfLGC00##GC#G:,,!, .:,,,,::...:.:i!!iiti;!i;:!;;!. .,,;!!;,,;;;,,:,,...,,:::,,.....,:, ... ,,.,..;: +Ci!iii!!;;;;;;;;;;;;;!!tttttit@#0:.;,.t;,:;;:,,.,,,,,,:,:,.,!0!,,;G!,:,. , . ....,,,,,...,.,,,,,...,::::::;;!;;;;:,.  +f;;;::;;;::;;;!;;i!;;!iii;::;;;tG;.;,,i;:tft!fttifitiiiC;ii!8#Li;i8Ci#0iiiL;;!::,:;!!!itti!;:,;!;;!!;;:;;ti;i!tCCLLCGCLt;. . . +f;it;:ii!!;:;;;!!!!!;iti;;;;!!;!f!,:..t;iLi:;!ttttftfffffCCtfiiCLfttL#@fCffCGCfitfLf;;;::,,,..,,,,,,,.,,,,,,,,::;:;;;!!;::::;:,, +t::;::;;;:::;;!ttii!!;;;;!itLCiif; , .,:0G;;,,,,,,,,,::::::,..:L!,,,:;;;:::;!!:::;;:,.. .....,,,. . .,:::;::::::, +t:.,;!!::;;:::::;;;;::;!i;;;;!!!;, .:iti;;!fLLti;:;;::,::;;::;;;:::::;;:,,.,:;!!!!!!!;:::;;;:;!;,..... . ,,,..... .,.. +!,,::;;!;;;;;;:,,,,,:;!!;:,::;iiL; ,####ft8#####fGGGGfCiCGCGL0GiCGLGGCGGt:L:i00000G0L0L:!ii;:::,,:;;::... .:, . ....  +i;;;!;!!ittfti;;;!;;;!!!!!;!t!!tCL, :C@8L######@t;:;;:!ii!;;:;;:::;!ti;;;,,.,,;!!!;;;!!;;L;,;;,,,;;::,,,::,,,,,,......,::,,, ., +ti!!;!iti!;!!!!!ii!!iiiittttff;t0f,:..,.,:ifi:,, .CC. :Ci .,. i,.,!::::::,,:::::!ii!;:::;,,,,,:::::,:; +i;;;;;;;;;;;!itfft!!!!!iii!iiftiLt.., . .,,. . .: .,, ;!!, .,;:;!!;!!;;;;!;;;;!;::::,,,,:!ii;it!:: +ttttttii!tffffLLCCLLfttiititttft!!, ;i. ,,, ;;;;!!!iittfffttttiii!!!;;;;;;;;;:;;;!!i  .,,. . ,,:!i!!!!!!!;;;: . .:.,,,,. .,!: ,.. . !! !; . .,:,. ,:;:. ., ..,,,,,,,. : ..  +.,:. ,:,.. :,. .,,. .,:;:, ...,..,. :8G,, ::. ,ft!;:tL:.,.,, .:!:....,!: ,:. .... ,. ,i.  + ,:...,:,.... ..,.. .,tt::,. :i;,,...,,. ;#8; ,!, ,i;!;tC!,::,.,,;,. .:L;. :;..,:,,,...,. .,,.... + ,:,,.: ., .,;;!,,. ,,,,:i!, .!it:.,,,:,..:G8,. ,: ..!, .,:!;,...:Lf,;,.;;!:.... ,C;. .,.,::,,,::,. :, .:::::, .i;ii +;fft:,,...,,....,,:;:, ,.....,:, :i,...,.....:fi,.... ... ,G0C, .!:,,..,,.. :L:,t:. ;!;,,::,. .,,::;;::,!LCLft!. ,;Gi! +.:!iii;::;::!...,,,,,....,,:::;;;;::,,,,,,,,,;;i8!... .:t:,i!:..,,., .:,...;ii!:. .,:::,:::,. if:i080t!::;;:::,,,:;L: +:;;:::;!!;;!i;:::if;::,,,,!tfffffLL;;;;;!:ifL@#8#G;,,.... ..tG: ,Cf, .,,.,iti;!iif!;;;:;!i:!t!;i, .::!f!t8;,::::::,,;i:,!! +!LLt!;C0GGLLLCCi;iCL0GGLfttLLtfLGf!;:::;:;!C###8##!,,..... .,:,,::,,,:t,.::,!i:;LLttG0GC0f;!:,,,,,:::::::;i!,:!f,,!fttt!;:,.,,;t +iii:;CfCGGGtiC8itfLC0####0GGCLC##fiiiiitffLfGGCf0@!,...... :CiG:.:;,,iLi;!Lt::::!Ci;ti:,::,..,;;:!ifL!,:;:C;,.:;;;;::,,,..,t +::::;;!;!!!;;!!!ittfLG8##CC##GLGCLLC8CC08##GC#CtfG!,,,,.,,.. .;Gf0;,C:.,:;fft;:,...,.:t!0t:!Lt:.,,,;i;::,..;!,,.,,:,;!;.,;::,,, +.:ti;;!:,::::::::!;!tfLCCLC##0LCC0GGG0G#00##8##8GGi,::,,,,,,..,:ftt,:t:.,.,:::t;,,:!;,,,;iG!;;;:,:,.,:,,,.,,,, .,:,..,. ...:!,, + .,,,,,,:;!ii;;,::!tt8fffLG008#0###LG@0088##0###0#t,:,....,:,, ,;:,,,.,:,:;:,,:if;::;!::.:!8t;!i;,,:;iitti,:!,::::,:. .,....... +i:,,,:,,..,:i:,,:itttLttCC@#G0#@0#8GLCC0###G08Gff#f::,,,,,,,,,.,!::i,.,::;ii:,.,:if::...,;8Litf!::;:!i;i0G;,,t!Ct;Gi,. ,,:,,  +Ci;iLt#!....,!,,::;;;;;!itLG@8C@#0#GGGCLLft!;:,.;#0:!:;:::;!;;::f!LL: ..,,::,,,,,:!C:,:,!##!,,::,:,,,;:;L00,.:i:;L!:....,,,..,,. +GLtffG#f!Li,.,;;:,,,,,:::::!ittL08@0##f;:::,.,,:iC!:,,,...,,,..:!!tC;,::!iittitt;,;L;:;t#8i:,.::;!!;:,GL!i!;,;f,,!:,,,;;;;!;:,,, +80CC00#GfG@! .,,,,,,:::!;;::!ifLLGCGG0LiiCtti;:0ff;;;:.,,,.....,i::;!tfitLCGCiit:,:;!t0#t;,,.,;:::,,.,;08:,:;t:,:i,:.,:,,,::...  +##fitG####@f.....,,,:::iCiiiL#########@it##G#C;!@!:!;,:;;;::::,,;,;!:;!;;;!!;!:;;,;iC#@i:,,..:;,,:..,,,i@L!CG!:.:,, ,, +8Gt;!0#GC08G. ....,,,:iGitLC########8Cii0CLti!iL!:,,..:;;:::,,,:,,,:!i!:,:,,,,,::i@0i!;::::,;;,,:;::;;:t#@iiLt,:!.. .. .,,,, +##i;i##G8@8!. ...,,:i!;;!tfLLCCCLttii0Cfti!ifCffi;:,.....,..,..:,:;!;:::,,,,;iC@fiii!:;!!:;:,.,,:G;:;!fG;i#t:t:.,. .,, ,i!:: +#8Lit8#ftLLi;;!!!!;:,.:!:;;;!;:::::;ifGi!!f8#GtttfLCCLi:,,,,:,.. ;::i;:!!:,;:!L@GiiLLLi;;!;::i!;!:iti;G0,.;@#L;,,.:,,,,..,,:,.: +tt#G!iG;:tG0L8@@##0Gtti!;;;;::::;!!!!Li:.;0@8Citttfffttti!ifLt;,..,;ftt!!;:::!GGt!;!tft;;;;;:;LLfLCi@8;t!: ;#L;,,,,;;!;:,:ii:,,, +!i!!:;:::;iiittL#GLG###LGG;,:;;!ifL!;i, ,!i!!;;!itLftii!ifLLCCt!:!;!L!fLttLfi;!!;;!!!!!;!i!;!t!;;:!G!,;L: !#G,.!;;:;!;,:!ii!!i! + ,;;;!;;!!!!i!;!88tL@G0C8#!,:!ii;;;:::;:,:..,,,::;!!i!!!!!tLfftttt,.:ttti0##8f!!fiii;;!!i!;;:!i:,:,;::,tGCit@L;:::,,...,;:,,:,,: + :!;!;;!i!iiit!i#0tf0LGf0#!:i!itiiiiiii;fCi. .,,;iittii;:;::,,,:!!;,!00,,G#f##CLt!!i!;:;!!;;,;t!!ii!!,,:!##ft:,L; .....,L; .,, + tfiii!!!iiiii!i#0t00L8CG#!:tLCG88800@f!!LCi;:!t!!!;;,.. .....tCLL!;:. ,,,;#8ti;;t;:;:::;:,:!:,:::,,,:;G#0;,;t;::,:ft;!;::;;!; + tfCLftitiiitf!!@#ff8C@fL#!:iiitiiiiifGiitG#@0i:0C,,:, .:!!..:ittfGi;,. ,;!tL;!!::!:,::::;;;:::,,::fG!!!;tt:!CCf!CCt!;tLt!;; + iLttiiiiiiitti!@#tt@LGL8#!:!!ii;;;;!if;;L@t!;..:::L@Ci;:,,,.. .:C8###0L:.,,:,;t;,:,:;;!!i!tftffti!!i;iLi;!!::!!tt!::;;!!!;;;!! + tii!!!!i!itff!;G8fG8LCL8#i:ittiftfCC0C!!ii:.... ,G##@0Li!,:;;it;!it8Lii;::,.,,;!,,;::ft!Ltitii;:;!tti:i8f::. .,.. ,::,,:::, + !tti!!!;!!ii!!!0CtC8L0LL@;,tft!i!;Ct!tGL:,:;!:....:iii!;;,t######ftt;;!it;,.,,:,:!,::,:,:!;::,. .,,,:80!;;, .. ..;!!;!tti! + ,iftttiiiiiii!!@0ff@LL!!!:,:;:,,,,::,;ti;,:,,,.. .:::::,!#########8,f##f:;;;,,,:!;ii!!!!!;!;;;:,:;:,;Gf!tC:.,:;:,:;,,:::::::: +,.!ftttfLfttLCi!88i!Cii!!!!ttitttffffLL88;:,. ,:; .iffCLft;:!i!;!itt!!;!tG88#L:,,,;@######@##@@0CLfGC,:!t:iL;.,,::;!::..,:,.,,, +:.:!;;!!iiititi;CC;;!iLG0000GG08@@######i,.,.,!#!. ,iiiii;;i:,;:::, ,ti,i8####C;:::t#@0@#@##@@@0G08@f!;!, !t:..,:::::,,,,,;!!:  + .::::::;;::;;:i!::!tLLLLfffLCLLLLCCL0t;::,:!0@#: ,,,,,..!0!:,:!L;,,,::,!Cttf@@:,:,:ftiiitttfti!;f08C0Gf;;i!::;;itt!!!!!:iLGGC, +,,,....,:,..,,,,::;!ii!!!!;;;;!!!!!!!tf!:ti!i##@ft;iiiiL;;0#C!!!8@i8G!tii!L;:;it!:;:::fi!!!itff;,,:::;;i;!Lf:.,,,;::,,,,.,;::;:. +!!;::!!!fi;;;!;:!!!ii!i!;:::;;!ii;!!!tG!iL;:C88f;!iifffCLtLftttfCLi##tiftifGGG8LtL0C;fi!;;;!!iti:::,..,,,:;;:,,,,,,.....,.  +i!;;!tfftt!!;;i!;;!!;;;::::;;:;i;;!!;!::Gf:;!!:,..,,,:::::,,C0t:,,:!Lif;,,:;;tG!:i!::!i;;:,,,::!iii;:;!t!:;!!tii!!!;;!;i!;,,,:,. +!,:!i!;::;::!!ii!!!!iti;;:;i;::;!;!i!tLtttLCCfi;,:::;::,::;!it!;:::;!i!!:,,,,;ti;;;;!i!;::....,,::::::;;;;:::::::::!!!:,::..,::, +:,,,,,. ...,,,,,,,,::;;;;;i!;;;;!;;:!##########tLC0CGCfCtCG88CGC!CGCGGCCGt:Lit00G0080fGf;,,::,:,,,::;;;!;;:,.......,,.... ... +;;,,,::::,,,,,,...,,;!;!!!;!!iitii!!!G0LG###Li;::;;!ii!:::;tC!;::!i!;;;;;,,,::;;;;;!i!:!C::!i;!;;!ii!!::;;;::,,::,.,.,,::.....  +::::;;!!!;:,,,,.,,:;!!!!;;;!!iti!;;;!it!;iLi, iC; ;C: ,,. ..,:,!;;!!!;,,::;;!!!;;:::,,,,,::::;:::.. +;:;;!;::::::,,::;;!;;;;;!!!!!;;;!;;!tL0@0tCf. ,,. :i: ..!i:. ,. ., .,,,;. .,,t:,:,,;:::,::;::::::,,,: +;!!!!!!;!!!!!!iiiiittfttffftttiiLfLCCCCLLft: ;f: :. .,.,:;;,,. , . ;t ,.,;!!!!!!!!!!;;;!!!;  ,,,. .,.,,,::;!!;::::::,,:, . .!!: , :: ii i: . .,::::;::. :;, . ..,,,,,,.,:  + :;... . .,,,,::,,,:::;:,. ,. .;!. . ::...., ,C!. ,LC, ,:!. ..,,,..,,. .,!;. .:, . , .. .,,  +,,,,,,. .,:,,,. .,,,ii;,;ittii;.. .; .,,,. ... ,;, .:L, .,L0;.:i,.,,;!!:,,,. ,!;. ,!; ;. .,. ..,,..::  +,!:!,.,:,. :..,;:,.. .;;,.:f;,,::;:!;:..,,.,,;C: ,, ,i. .:;;,. .!8!.;;::!t;::::::..:!, !f. , . :..,:;,.:::..,...,::  +:::,.:,.:!;;, .,::,,,.,,,,,::,,:;...,;!.,i::;;0f,:.,. .. ,G0C. . !L: ..:LCfi;,,,,..;;: .,:i,. .:,..,,,,:::;!:::!iLf! +!,!;;!;:,!!:;;;:,,.....,... .;!!!,.,,....;:..,,;,,;f,.. ,,,,ti;..:,. .,. .,:;;!,., ,,. .ft:;: ...,::,,,,::!!t0G0i!::::. +,::!888;;:::tGGLi!t., ..,...,,::;,.,,:,,,,,,,:,::!tt:..... :C!. . :Ct,... ..... :;.,:!i;;f;.:;::ii!!!, .,:;t;i8!..,::. +i0!tC0@!;C,,!i!;::i:.,:!ti;;;::,,,:,,,,:::::tf!!i0@##C!:,,,.,:,,::.,,:,,t;,: ,:!!!!!ti::;;::;;CGii!!;:;;,.,:::,:::;i!.,!C: ,!ft; +tG!ii;;!Ct:!0f!;;fLti!tGG0#800Ltt!!ii!ifii!;!t!!!t0###i:,,... ,Lit: .:f;:;i80080CGL;!CC,:CL!!C;,.,:;:. .:;:!tLL!,,!:Ct,,,,::. +;,,.:;!!;;iCLL;;CG08@Lt0CC8#####0GGLLG##LttiifLGCffCG0;,,...,,.,ftG: :0t!f88Ciifii;::;;:,:;i:!0;,;Lfi:,,,,!i;::,,.,i::,,,.:,, + :08G,:!;;::!;ifLLtititLC8##GC##GfC0GG8GC80####G0#8f;,,:,,,..:f!, ,;fC::!!;:,,,;i:,:;;:,:,,;GC:::::,,:,.,:,,,,:,,,:.,,,::.. + :!ii;:..,!!:;::;!!!;!;;!fG0LL@#0CG#0@0G0#8#8@##8###L;::,... ,!, ;C;. ::i!;::::ti;::,!i;,,:!L;,,::,,::;iiiiii!;...:::::,. + .;;::C;. .,,:;,:;iti!;:;!tCCLL0#0##G###G##G0#@#80####i;,,,.. ,;:. i8; ,,:::;i;;,,:fL::,:,..,!Lt!t!:,;tt!!i;!;::,,;ttL;CC!, + ,iCi:;,,,,...:;:,::::;!;fiiGLC#80@88@#80GG08##0ffffit8;:,:,..,Lt:..,.f8! ,::,,.,,,..,:;Li,.,,:t@!:;:,,;:,,.:,.. ,i:t8L;iC!;. +..,:!;;:..,ii;:;;Gi;!;!C;,::;;;iitfG0G##8#G@8CLfi!:,...!0!.,,:,.:ii:.,..!0; .,,,,,,,,,,,,;L,.:!8#L:,,. ,!. . ...,.:!i!tGi::;!. +::;t!;...,:!tt:,!CfitiL#t!!;:,:::::;!itLCCC8#f;;;;:,:,fiL!:::,,,,:,,,.. ;f;.,:!iit!,:,::;!!;;;i@Gi:,:,,,..,:;,::;;!;,G8;;,:i::t: +!,:,,,..,,iitL:;tCGG0G0#CL80;,,:::,,,,:;:::;tfftGLift;i@C;ifi;!!!,.;;::.!G;;ft!;!f;.,:;;LCCtt#@i;:,:,::,..:::,::,::,,:!8!,;i:,:, +!,,:::,.,,!;;!!!0##LtL8####@i,,,,,:,,::if!!iC###LG08#ti8i,:::::;;, ,,,..!i:!C!!:;L!,,::;;itG#Gi;,,;:,,:,,,,,.,!,.::..,:!G0iL::;. +::itfi,;,,:::;!tLG8t;t#@CC0#i.,,,:,::,:t0tC@0###tLff!;!t;..:,,,:;. .......,:i;,,!Ci:;!i;!L@C!::;,,;::;:::,,,,:!,.,:!;!!:L#L;;:t: +,:i;:::,;;!;;ifCL00i;C#0LC88!..,,,,,,,:ttf#CttftttLL!:!t!:;:,.,,,..,.....,.;Ct;:!G!,:!!t@@i;;:;!!;!!!!:::;::,:;:..,00::;!i!;:t!, +!;,. ;f;,!tiiiCC08#fiL#8tfCfi;;!!;;:,,:i;G@tiftttiiiti;;ifff!;:,.i;.. .:,.:0GCtiLi;!iLGt!;!!!ifGffCfi;:;;;,,,!;;:!ft;,Gt:,:CG;; +!!: itt:,;!;!!iGf8#t!Li;fL0G08G@0CCfti!!!!;;;;;itii!!!ifttfG0C,,::i::;!:,;tfftiiGti88f!;::;;;;tCtii!;!:::::,:;CfLt8@;:!!: :Gi;; +,:,. ::,.,f::;!;!tii!;::;;iitff#GLG###0LCi,,,:::;!!;;;!iffft!if:. .:tL0L:t#@#@!,;G@Gi!!ti!!::;:!ti!i;::;;;;;;;ii;:;tG:.;C: :;!,; +;;: .,,. :!;,,:;,,i!;!;!!!!ii!i0@tL#GCGG#t ,.,;;tft;:,,,,,,...,;;;,;f@i,:8@f##L!ifi;:,;tfL!;!!!iLitt;;;!!;:,,:t:..,,,:,tfft!i;,, +:,,,,!:.,:!t;,:t,,ii!;;!!iiitii#GtL8fLfC#t,!i!;!!!:. .,.. ,tCCC;::. .,,,;##0tL!:;!;;!;;ttLfLCi;;!i!::;,,,:i!,;!!;:;::0#fCt., +::!Li,.,!GtCG:!f:;Ltii!!iiiiiit#GfG0LL0C#t;@#0:,C!,,, ,:;!. .:ifffGf:. ,:!t@#Gi!tttti!;!!;if!:;;::::,,,,,;!,:iii:,,:i@0i;:: +!ftf;,,:f!;;iffi,;fCLfiiiiiiLti@#ff8fC0L8Cf#t:..,,;80t;:,,.. ..!G8###8:.,.,,:,:f##t!!!8@@f;!!,!L!!t;,;;,,,,:,::::;;:,,fL!;!i!f; +:::,:i!::,..,:!:,!Lftiiiiiittii@#ff8ffGC#t!G;.... ;@#@0f!::;!if;:;it8#L: ,.!!:,,:iti:::ifi;!!;,!C!::,,;::;;;;i!ittii!;:C8i:;;;:; +:,:,,;::, ., .if,!tt!!!!!itfLi!GGLC8fLCG#f:ti;;,..;iti!;,:######Lifi;;::;i;!Ci::;,,i;::!;;;tt!:!f!,;:::;fiffiffiti;;;;!;iGL!i, . +if!::;,,;,;;::!:,;ffii!!!!iii!i8GtL0LC0f@i,i;,,..,tt,,:::;G#########G. :###t;::!;:,:t::;;i!!t!,!L!.:Li,!t:!Cit!;:,..,;;,!@t!;:.. +:;tLt:::,;itf!::,:tftffiiiiftii#0Lf8ft!it;,!:. .,;!!;tCLfi;;!!;;!tti!!:;!f##@!,:::,,;!;;;;;;;:,,,. ,;:,...,,:,,. ..,:;::LGitC!.. +:.,,:;:,,:!i;:!Gt,!tiitLLttfCi!80iiLi!itL;..,.,!LG@L;!ii;;i:,;::,, .!Lt::!##@,iG;,,,C######@80CfttftLLtiiiiiiiiiiiiCCi!ftfiLi,, +:::::;:,;iLt;:;!:,;!;!!!tttit!;0f;!!ifG#8!::::!###8;:,,.:!0!,::!C,,,,:;;:,,;;,,L#!;;,i########################@@@GCCCt:,:!,;Li,. +tLLLGi!Lii;:,... .,,,,:::::::::!!;!ifLC0G!ii!t##8f;!tiiL!@#ff;!#@!t8i;fiftL!:::i@t;;::iG80GCCCCLLLLLLfffLLfffffttL@#8t!!;;,;f;.. +.:;;;,;i:,. ..,,:;:,,,;f:,::,,,:;itiittLt!:::C#G;,;iffCCtCftt!i0fi##t!fftf0GCGfffGGG!,;;;;::::::;::;;;;;;;;;!!;:,:;i!tG0ftLL!;:: + . ...,,:;!iii!;!tttti!;:;;;!!!;;!;;:i;,:;;;:...,:::::,:G0!,,,:Lf!C:,,::;;!t::;!;,,:!::::::::;;!;:;!;;;!tfLt:. ,:;::;f:... +!:;;::,,,,;;!ifi!itLCCLt!!!;i!:!!;;;;iffiiL8Ct!::;;;;::,::!ii!;:::;!ii!::,,,::;!;;;;;iCLiii!::;!!!i!;;;;:;:;;!!;::,,..,,,.,::,,  +itLfffi!:::::::,,,::::::,,:::::::;it!#########0LGG0CGGfCiG@0CtGC!CGfCGCCGt:L!fG0G0G008@Liti;!!!!!!!!!!!!:,,,,,,;!ii;;!ifi!!iift; +;;!!!;;::;;;!;,,.,,,,,,,,,,,.,:;;!!!iG#GC###f!;;:;!ii!;::!8@!:::::;::;;;;:,,::;;;;!!i!;:,,:;;:;;!;:;::,,,...,,,,:::::;;!;;:::::, +!;;!;:::,,,,,,,,:!;!;;;::,:,:;;!tt!!;!ii!if!, iC: .,,. .:!, :!:, .,:,tGi:!!:,,,:::!;:;;;:::;!!!;:,. ., +:,:::,,,,,,,,,:;!!!!;!;:::::it!!iii!!iiL0t!G, ,,. .fC; . ,:;:. .,:!::,!;;:;;i;:!ii!!;:::;:::,,,,; +:::::;;;!!!!;;iiiii!i!i!iitttffLLLLLLLfftiff ;; ., ,!!, .,,.,:;!!:.:,::;;;;;!!!!!!!!!!  ... .,,,. ...:,:...,::;:,,,,,,. . .. .:; t!::::,: ,..,.,,;!:,,:,,,. .;: ., . .. +,..,,,::,. ::.... .. ..:itiiittt; . , .,;. .;t,. :0!....,i.,:if, ,:it!;;:::,. ,i,.,i. ,: .::,;;. +..:;i!!tt;:;;: ,:,,:,... ,,...,,,,,,:;;, . . .,;. !,:L. ;0i... .,. .,:,,!fi;;,::!!,..;;..!; . ;. .,,..,,. + .,,:,:::;!;,.,:,,,..,. .:::.., ,t;::.... .!:,...i:.., .;; .!!:,.. :G!. ,. ,CLit:,..,,.,!:. ,t:,.. ......::! + ,;!:::,,,,,;;::!!; .,::,,.,,,,:!!:,..,:.,,,iC:..,. .. ,GGL. . .::,,. .,,,::,.. , .,,. .!!f!t!..,:,,:,..,,,:Li + ,C::Gt:!;!!!ti,,:::,,. ......,,. ,;,,::..,...,,:: . ,!:,;;:.,t;. . .,ti:,. ..,,:::::;,..!!,,!;!i;!i::tt!;;. .,,,;,  + ,f;:i:!;;C##G!;;::!LLi!;,;,..,,,,,,,,,..,,.....,:;:if!,.. ,C!. .!LL. .i,:t;:!!. ,, .iLLLGGC@8f;::Ci;t:;......:::,,,::i!;,., +.,tC!:.:L8ifL#C!Ct:;i!f!;!!tLtfLf;;t!:!::::;::,.,,:LCf#@;,..,,,:!:..,,,. ,i,:C!:it;::::;iCGCGGG00LC0t:;G;,,.,,,. ,:;:!tft;:,;!: +.!G;,.,:80!i;:;Lf;i8Ct!i8GG0C0##0CCCLt!!ifftGt!!;;ifCLffi,,... ,L!!: ...:8C,:CGi!fiG0fi!;;;!;::;tf;!G;:;!Ct!,.,::!!::,..,,,; +,i;; ,i:,,;!i!!tCLf;;00#08LC0###0##GGCLffG088GffC0@#Gtti;,,,,,!it!.. . ,.:8C:,i!::;!!;;:!:,;i;:,,::!i0L:,::::,:;,..,,,:,,,... + .. f88f,!;;::;!iitftitLG8#0@###CfCG0G8CC@0#@##0G#@t;:,,:G!:.......,,!t;. .,:!;:,,:ti;;::;!!:,::if;:,,::,:::;!itti!:,,, + ... ...,!ii!;:,,!i;:::::;;;iifLCL0@88@G###GCG80G88##8###i::.:t:,..... ;0; ,,,:::!;,,,!LL::,,,..:,;CLtti;,:iCLi!;::,,,;,, + . ,..,,,ii,;Li,::::,,,.,::;:;;itCL0#0#0G###C88C0###80##Gf;:.:t;,...,.....!8! ,,,:;::;,..,:;Ci: ,:i@!::::,.:f!::;, ...  + .,,,,,!!:::.:,.,!;,,,;ti;;;ifttLLGGCG8##800G8GLti!!;::G:,:Ci!..:::,::,t0! ..,,,,..,:,,;0;..,;G#C;,,.,,,::, ,!. ... ... + . :,..,::::,.,,,,;tt:,;Cfiiif#t!!!itL8#@#@##Gi;:,,.. ,;it.:i!:. .......:G; .,::::;;!,,::,:t!:;i@Gt;;i;,::;i;,,,.,:ii:,::: +;:,.,;,.,:,:!f:;;:,:,,iitC!:iLGLGLG#CtCL!:;!ittffff!;!f!!;::0Li::;,.,.......,;t!,;iitt:;ii!;:it,,,;!8#f!:;ifi:,:::::,.,,:::,,;,, +::;,;!,,,,,!it:,:,,,,,!!!ti;L##8fC0#@@@@i,,,,,,,,,,!Lf@8C0L;t@!:!,.:::::::::,tG;,Li!!;;i!;!;;tt::;t@0i:,,;!;;:,,,,,,,,,,,,..;:,; +::!::;;,:;;,:i,,ii,,;,:::;!ifG8Git0#GLG@L,,:;;;!;:,!0C0CfLL;iC;,::.,,,,,::,,,::,,:Li!;:::,,;:it!f@@i;:,,,,:,:,,,,,::,,,,,,,,;:,; +:,;,;!:.:Li::,,!i,,;!:!;:;ifLCCf!f##LfG8t;ifLGGGG!;iiitC!;:,if!,i; .,......,,.,..:ii!!;:;;:::itG8t!;:::,,:::;!;;;::;:,,:,::,::,; +:,.,,, ,i;i!!,,,.:i,:i!i!L008#Lif##fifff@8CLLffCLifi;!!!!:.ti;,:!. :. .,,:;;::,,ft;!titffiiG@t!!;;!;,,;;!!fGCCf!;;;,,,:,,,;!;! +,.,;!;!!!;!ii;;,.,::,::;;!!iffL#CiLf!ttC@Gfftttiii!;;:iffti!!;,,,,,.....,::ifCf:,:if!;!tiif88Gi!;ii;;;::;;;!tCfi!;;!!,,,,:,,;Lft +,:!@#@L00;:;::!;,.,,::i::;!:;tii!;::;!!i!!;;!iftt!;;;!tttfC8Lt.,!;f:::;;,,!ii!:,;!t:,,:;t0Ci!!f::!!tt!;!;;i;tCi;;::;;:::::;;!t;! +:,f0LLti!;::,,,, ,!;,:i;::::,,i!;!;!i!!i;,,,::;!;!;!!iLLffiiL;.. :GLLG0t;!@8GC:,!:!::;iCGi;::!!::::!itL!;!iitCi!i;:;;:::,,,:i;,: +;!!::;;, !fii. ,,:!,.:;t!:,!,,ii!!!iiiitt;:;:,;!!,:;::::,,..,,:!;;!f@@;:f@tf##i:.,;;i00L!::,;0t,,:;:;!!iftCLLLi;;!i;:,:,.,,,i!:; +iti,.;!, :f!;;:!L!,.,fGtGi;f,,Cfii!ititti!t@Ct!i;, ..,... ,iCGG!:;:. ,,..!#8:,:tCfttitfLLC8C!!!fiiti!;!!!it!;!;;::,,,,,,:;i;! +::,. ... .:i;iLtt;,,;L!;;tft.:LCLLtitiitCif##@;,C;,,. :;;!, .;ifffCL!,... ,:!it8L!iLLG@#####@f!0!f8@8i;;:,!f!tt;,;;:,:::;,!:,. +,,..... ,!!i:::,,;ii:,,..,!;,:CLttiiittffiC#C;..,:f@f!::,,, .,!L0####i:;,.,:::;t0G;iCftf0#@G@f;!f!!tt!;;::,iC!::,,!:::;;;;;;!i! +::,,;: ,if!;,,::.,;:,..:,.:C,:Lfi!!!!ifLLit#@:...,8##0f;,:;!tt::;i0##G!,.. ,,,,,:!fi!!i!!ii!tGt::;;i:!:!t!;:iL!,::::;!fiLtiLtiii +...,,,..tt!i,;ft:::,:;:!;;!!.,fLfti!!iitt!t@#i::,,;ii!;,t######iit!!;:;:;!:,..;:;,:fttifftfLC8G:,i!;:!itLL!:tC!:;Lt:!C;;Lf!i!!;; +!ii!!;;,::!i;,:!Li:::,!!i;;;::iCfLLffttLLit#G:,,. :;;::,i##########, ..C###i:.,!:,,;f::;!itttfi;;;:..,,,,:,.,,,.,:,.,,..,:,,,... +@8Liti!;::ii:,,,,,;,,:;;:,!GG::ttiiLLffLGitG;,. .:f@LiLt;;!!i!!tff!;!;!!iL##@!,,:,,;t:,iL#######88GCCCLfffftiiiiti!!!!!!!!!!!;;: +0Ci!ifLC:!;!fti::::::iLf:.,;:,,;;!!!iiiiti:,,...;G#8!!i;;i:,;::,. ,iCLt.:i##@, !;,:!!t#####################################@@0L +t;,,:0G;,.,GCfiifC:if;;:,. ...,,,:;;::;;!;::,:;f#L:,...!0!,::!L:.,,:;;;,,,;;,. .!!;:;:C0G808888@@@@@@800080GG08800G08@@@#8880CG +t: .,::,. ,::,,:;::;:,,,:::::;;;!!tCi;!;iGfiiti8#i;!t!i!f@tit!#@!Giii!ttfiL;::::;!!;::,:;i;::;;;;;!!!!;;;!!;;;!!!!;;!!!!iti!;!CG +t!::::;!:,,:;::;;::,.,;ittftii!tLLfi!!;!fGi::;L8i:!ifCLtftttii0fL#8!!tfffGGCCftLG0GC;!!,i!;:,,,:;;:::::::::;:;;!!;;;;;!itff:..,  +i;!ii!ttiiitfLfGCLt;;:;::;i;;!!;!i!;;;,;0!.!;:;,,.,,::::,:0G:,,,!0itf:,,::;;!;:;;!!;:,, ,Cf!;;ifLLt;;;:::;;;;i!;;;;::;;!!i!;,,.. +!;;!;;!itf!;;;!iii!::!:,.,,..,,,.,,,:ifLfCC#@C!::;:::::,:;ii;:::;!i!!;;;:,,,,,::::;;;;;..;LfifCCfi!ti;;;;!ii!!i!!;;:,,,,:::!i!:, +!;!!!!:,:::,:,:!!;:,,:,,:::::;;;:,:,;#########LLGCGLGGfCi@@fCLGC!CfiCGCGGf;L!tGGC0GC0GG; .,,::;;!;;;;:,;;::::::::;;,......,:::;! +;:,::::,,,::;:,,:,,,,,,,,::;!!!!!;,,!0@@GG##i:::;;!ii;;,!8@!:;;::::::;;;;:,,:;;;;!tt!;:,,:::. ,;!;:;;::::,,,,,,,,,..,..,,,,:! +:,.,,:!::,.,,,...,,::::::!;;::,::::;!!ii!ttt!. ,Ci .,,. .;;. . ;; ;i;:. ..,tGf::!!::::::;!!;;::::;;::! +;:;!;::::,,,,,,,::::;iii!;:;;:,::;;iitttfLG8G. .,, :CC. ;. .!. .,:;:. .::::,;:,,::;,:!!!:::;;;::; +!!!;;!;;:;;;;!;;!!;;!;;;!!!iiiii!!!iiiiitttt! i! .. : .i!: .. ,, ,:;!i:.::,:;;;;;;;;; .. .,,;;:;;, . .:. .,... . .. . ..,. !f:, :f:, . .. ,::... .,,,::;:...:;; + ; .:, ,!;;;ftti;,. .t!,.... ... .,, .,,. ,Cf:. :Lf:!.:,. .....,. ,:;;;;;;;;:,:t!,;i;!! + .;;:::,. ..,:::it; :f;;!;.,.,,,,:;,.,, .;,,!;,.,,. . iG;:;..t,,,..:,,.,,:::;. , ;tLCCCGG0@L;;!:,tLL;: + ,L:!0CLi:;:::,,;!i!:,.,.,.,.,,,,,.....,:t;:.. ,L0G; ...,,,!. .,i!;;.,it,,;ii!i;. ,...;iLLLfLfC0#8t;;..,:,.  + ,t!;f:itf8##!:;itG0Gfi!;i:,,,,,;::,,,.,,,,:;,,. ,,:ti!, .;:. ..,.. :i;,:i,,;!,:;tfG0;:!t:i!0880f::tf!;:,.,.,..  +..,,..,.. :Lit,,!Ci8##!:fi!itiiiiii!!!i;:if!!i:::,,,;;!;,.:L: . :LC. ,t,:,. ;G!:,,;;;!t;,:t0Lfti!:::;;;!f;::L;,:::;Li!;,, + .. ..,,,:;ft;.,,C0!!ii!G!iCCifC@8@88GCLi!tLi;;;tti!!!;;;;;!;:,,.,:;::, ,;,,i !8ff: ,LLtC;;,;;!!;;,,,,,. .iCii0;,;;;;;;,,, +. .ifL;,. ,t!:,:!t!!fGGCt8#0###0000CCGLtiif88088LfCC08t;:f;::,. ...,.,,L@tG;.;::;::::,,,;t!,,;!!;,,,;;;t0i,,....;;,: + .,,..,::,,,.,... ;88t:i!!!itfLCG000###0@#GfGGGGG@08#0###@ftti!f:,... ...,..,,!0Lt0!.:. ,:;i!:,,:tf!;;,,;;i!;.,:Ct:..,:,... +....,:;ti::;;,.. ,.!ti!;::,;;;!iitfLC@0G###0GG##80GG0000808##CLtf;...,,.,,.....,:,!8;.,.,:,,:;:;!;:,:LGt,,.,,,.,,;tt!;:,.. .: +:,ii;::!ft!!,. :;:!L:...,:;;i!!!tfffCG00##@####GG@GC##8#0#8i!:........... . ,,t8;...,,:,:;;:;:. .,;tt:, ,:i8!,;::;;;;;; +.,;GL,!!,,:,,.,:::,,..,f!:;,,,::;::;;;;!ffttfCC8#0G088GCLC#8#@ftti;!;...,,....,.,,:,;0G;., ........ .,:;f;.,,:i8@G;,::itfCCft +:,,::,,, ,;!;:ttit;;::::,.,,i!t:,:;:;titLfifLGGCCCCG@CLCCLfi;:.,t!;::,....,,,.,,,:.,!0:., .,:;;!!!!;:,,:!ff:,;;G@ti;,,,::;;!!!t +:.... , ::::;::;;::!:i,..,;;;::,:;;;ii!tt!t@@@LtL##0CC0Gt;:!;;;f;!;i!,,,,,,,,,,,,.,;L:...:ffGCC00Ct!i;;;!::;tGL!;,,:::::::,,:t +!:;!!;,,..;;::;,,:;,,!;i!,,:,,;iit::i;;;;;!ifLG0ftC#@LfC0t:::;8GL;::;Gi;tt;;!!!!!;;,:0t:.:;Li!!!!ii!;;!!:,:!i08i;,,,;if;:;i!,,:t +f!iC@0;;;,;,,,,,;,:.,,:ii,;;:,:ft::;i;i;;!iLGCGGti##8C00G;...:!G@:..;t:,::,,:;::::,.:L;,.,L8!:,,;i;:::::;;i8@f!;;!:::;;:;;::::!f +ft!ifi!t:.:,,:..,. ...,,,;:ti!:, :t;:!i!ttGGG@#LfC#@ftLfi;;!itti: .:!:,::,.,,:.....,.,.,:;iCf!;L8ttf;;!t@0ti!!i0C!!!;::;!;,;:;L +tii!;!:,, .:;;,:,. .:!tt!:;t!::. ;t;:;;;;!!ifL8@i!iffti80LC@###t, :iii!ti:............::;;iLff!tCiftit@@f!;;tii8C;!!!;:::::::!L +!,:;,. . :,:,,,...:i@##@!,:,:!:.!!;:i;;!!!!fLi!;::;!;!itGGLC@C::..;i;,,,,,,,,,,:,,,:!;i:,;!;::::;;!fLt!;;::::;!!:,::ii!;!!:;tC +. ..,:;;!ii!:::!CLf!:.,,:i! :!;:;fGfiiitL!!iitttiii;t0LL@t:,, ,f, :!!;;!!:,:!i;,.,!!;,.:!i!LLt!;:::::::;i:,,,:!itLi!!ifC +,. .::!CCCG88Cti::,..,.,!!:,;:::.,t@ftti!!;!fLfCGLffCt0@8G##0!:,.!, :;:;,:;::;;;;:,,,:i!;;i8@0t!;it!i:::::L0!:;;;:;;;!ttfGC +;;::,,,,:!;iffffLt;;;;:..;,;!;;;iC!..;8ttttfi!;!!itttiit88@#8L##8@8::;, .::,. ..,;ttiii!!.,;!!C@Gfi!;!iiitffLLLGGttLLtitti!!!!!i +LLLfti;:t:,:;!;;!:,.,,,,,.,,;i!f;:;:,;i!;;;;;ii!itfCfi!!!LL!:,i0LG0f00t;;G#f;,. .:::;;,,,.,fLLtifi!LtL0LG@######0tiGt;C@@8t;;:,! +tii::!;,i:..!f,. .,.,:.,;.:fi:;::,;ti:.:!;:,::;;!!!i;;;,.,, ,:::;!t#G!;0@t@##;,: ,:.,..,;ittt;;!L!;ifiLLtfC00CC8t;!L!:!tt!!;;,:i +:,. .. . :;, ......!Li;:Cf::!::,:;!i;;L!:,,..... ;LCi!,,;, .:;:,t#8:,,,t: .:G0Cii;t!tG;.:::;ii!ii!!tGi,:!;;;!;;it!;:i +:!iii!iitttfffffftfti!;;;,!!!i;ifii;:;;!iti;f#0:L, .:;!,....:i!;;;t!:, ,;;tfi:!;,:!i!i0!,!!;!!,:,:tfCGLfLLL8f:,i!;;!iitCt;;i +8####################@Ctf:,:tt,,,,:;;::;;;:;@#;::!t!:,:!. .,:!iC###@!!,.,,..,;ft:,..tf;!t:. ,;;!i!ftiti!itffffti;::,.,,,,,:,... +0GG0@8888@#8GGCCCLLL0Cttit:;;ii!;::;::;;f;,:;;::,C@8t,,;!!i;,;f8####C!i. ,..,,,,;C!,,,;G!, .0####@##@fC#######@8GCCLLffttii!; +L!;;!iiiiiti!::::::::::f0t;.:G0CLCG!ifti::,,,,::::iii:f#####f!fLti!;:;;;;:, .:,::;CC!.:Ct .!###88########################### +t;:,,,:::::::,,,.,;!:.,:;:,.,;;:;!;:!;:,,,,:!t!,. ,;;###########: ..;###t;,.:;,,;Ci,,::. :#L###GLC@888@8888@@@#@@@888@@88# +fi!:::;!!;i;!!i;:,:!;::::!::::;::;,,,,,;!!iLf;,,.,:iCLiii!!;t###@!i!;;;!f###t:::,,:i!..:; ,iCfft!!LfL;:!tt!!iiiiii!!!i!!!tG +t;;!!itti!:!iitt!::::!!!ftiittffCLt!:;;!!tLCi::,,,tt;!:;:,.,:;i;:;iLGLf..:f##C.;:,,iL. ;. ...,;:tt!;;!::,,:::::,,:::::::;::!C +f!;::::;;::;!!;!;!!:;;;;itfi!!;!itt!!i;:;!i!;,,,,::,,.,tL,.,!G;.. :;!!;:,.,:;:,.i!:;i. .. .ff;, ,;:!it!:::;;!!i;:::,,:::::;;!L +;;!;:;!!ittti!;,,,:;i;!:,:;:::,!!;:::;::!CCC!!;!!i;iti!8fi;!#@tG!;:fttLitLf::!;;!!;!!,.., ,0;. ,::,,iCL;;!tfft!!i;;:::;!;;!!!t +!::;;tfffft!;:,...,,::::,,::;:,::,,,,,,,;!i!!;i!itttCftiifttCiC#0;tfftfGfCCftfCGCCLLi;::, .,!i :if;:;!;::!!;;:::;::!!;!!!!!;!f +:,,.,::;::,,.......,,:;;,,.,,,,,,,,,,...!tfLfi!,,,,:::,.!L;,,,iGtG;,,,::;;::::;;!i!:::..::,:i::. .,,:ii;!;::,,,,,,.,,::::::,,,:! +:;:,,;;:;,,,,,,:,:;;::,,,,,,,,,,::;;:!ftf#####;,::,:::::!!!;:;!!i!!::;;;:,,,,,::;;;;::,,.:i:,. ;,::.,,,!tii;:,:;::,,,:::,,,,,,: +;;::::::::,,:::;!:;,,,,,,,,::,.,,,,,;####CL#0!;fCL0LCCtG0GGCGLGf:LCLG0CGGf;C!tGGCGG0GtC; !C, :i;;: .,,:f!!:;i!;:,,,,,,,,::; +!!!::,,...,:::,,,,,,,:,::;::,,,,,,,.:0###!,:;,,,:!8C;::;;;;;!ii;,:;;;;;;;:::;;;;;;;;;::, .,i, ,:;;:, :L:::;i::,.,::,,:::; +;,,,,,,....,,,,..,,,,,:::::,,,::::::::;;:,..:i. .,, .,. :Cf .:. ,,. .; .iG!, ....t,i::,:;;,:!i;:; +;,,:,::,,:::::;;::;:::::::;:::::::;;;;;;::,,:;. ;L: .::. .;. ,LG:.... .:ii ::;:.,,..,.;!:.,;,,,:; +:;;;;;::;!!!!!iii!!!!!!i!;;!!!!iiiiiii!!!!!!i; .:. .. ...,:,!Gi;!ii!;::,.. . ,, ,!;:,, .!. ...;;;;  .,:;:;,,, ,.....,. .iti; .,:;:., ,t. :: ;; . ..,,. .,: +;,,. . . . .:t!;!!;:. ..., .,;i. ,;C!.,i; .t0f:::;;;!!;:,,..,;:,:,,. :i!i,.,: +ifi!;,. ,,.,...,:. :, , ... .,,:.. .!f;itff: ... .,:!:, . .,.;;,.!!. .,;LftfLLC00GLt!;,:;!i!!!:. .,:!i;,, + ,,,;!, ...::,:;:,,. ........,,,. :!iCii,::::;;!i!!!!:.,;. ,GGC, .,. . ,.,,. ...:Gi;!;;;!;!ii!!:,::;;:,:,. .,t!, +iti!!!!;;::::,.... .,,,,,, .!ti;..::;i;;t0@tfLC00Li!t:,,,,,,:i!:, ,Lf, .,,:;;,,,,,.. .!C;if;. ;.,i;:::;!i;Ci:!!,..,,,,. +iCG08@@@80CCfi;,,.......... .,:,:,:!,,:;;0##ttffLLt!!it!!!i!!!,....!tG: .. . ;f:tf,!!;:;; .;8t!::!:::,:fi;tfiCi:;Lt;;:,i!:,,. +,:;;;!!!!!!iftti!;;::,,,. .. , .:Li,.:fttfff##8##LttG8GCC0Gff!;;;!:;:,.........,,,,,,,,:!:::!@G:. .;iG; ;;;,,:;;;::::tf!;:,;;t: +!;;;:,,...,,,,,......... :fL;,.,iCtLL0@###8#88@@@G088CGtGCi!fftt!:,............. .,;,i8@;::..!t0:.;;. .:!!ti:,::fC!;:,,. +i!::;;;:,:::,... .,:;:,..,:;!t##LLGGG0######@#CLC08#LC#8##88t!:.......,,..,.,.,;f!:!f,.;i:,.,!..::,,:;::!;,:;LGt:,, +!;:::,,,,,,,,,,,.,... ,, .,,,:;;:,::,:;!fGLi!tfCLC0#0G##00GG###0000G08G##Lti;:,.....,,,,. ..;it,,;;;;.:::.,:,..:::;;!, .,;fC:; +!;,,:,.,........,,,,,.,,. ,,,..:;ii;if!::ii;!t!!!iittfLCG8@##8##GC0fL8fC8####Ct:,,,..,,,,,,,,::;,;G!i:.:,:. .......... .,.:;i, +i!!,;;,,.,:,.,:,,:::,:,:. ,. .,,::;Cf:;!ii;;;:;;;;;!itfLG##GG8LfGfttt0Cffti;:,;:,.,:,::;!;i:!,;iiti,.::.,....,:;;;:::,,,,:f;, +;::::!;:,,:::::,,,,,::::, :. ...,::,::,,:,:;:::;!;;;:;;;!iiiiiGt!LLiCCi;, . ..:::,.,,,,,,,.,.,;:...::::!!;!t8##Ct!;;!iif!it +!,:!:;i!;,,::,,,,,;,;;::. .,,,,,,:::,,,,..:..::;;;:;!;;:::::i;;!i;:i;!ffi;;:;:;:;:.;Gf,,;,..,,,,,,:i:.,,:;;:,:tLLG0Ct!;;;itti;;f +;,,,,:i;:,,:,,...,;,,,,...::!iti!ti!!;itt;,, .;:!:;;;::;!;:,;fti!:;i::;;iGG@G80LfG;!8t,!!,,;;;::,:Gtt,.,:fftii8it;::::,!t!;;!!fG +,,,..,::::::,,,,.,,..,:;!ittttLftttti!fGG!i, ,:;::::,:,;f!!:;i;;i:!!!!!!t@#####Gffi!L;.,,.,:;;::::!;,. .:i!itCC;:;!!!:::;;!iC8LL +!f;:,!!i!!titttiittiifCCG#880L!tLfttt!!t!;;,.:i;,::,,,:!!it!:,.;L:,i;!i;iLLL@###t;:!t!:!;,.,,,.,.,.. ..:f!;!!ii::!ii;:;!t@@Ctii +;!ii:;ti:;C###0C8@8800fit88CCt:!CCff;;!:..:::;!;:::::iC0fi!;!;.;0;.!!:!;;;;!!tfL!!!tftiff;......,....,::!titittf!::if;!C@@f!;!ii +:,:::i:,,;iL00Ctiitiii;::;ii!;::;;:,.,:!itG0GGfLi!!!!f8#t;::tf.;ff,.;i;;:,,:;!!!;..;f!,,,,,,,,,::,,::ti!f:,:;!!!i;,:;i00i;,..,,, +:,:,,:,..,,,:;:::::::t!:::Lti;:::,,.,;L@@###GitLLGGfi!i!;;;::;,;i!i,.:i;:;::tiitt..:t, :!!!;i!:,:;i;,,,,,,!;!:;!!!iii!!;;;:::i +!;,,....,..,;;;;it!;!!!ii!itti!;;;!iC#@CLftitfttfCGCCLti!!;;,,;!!::t.:G!,f,:ftitf;.,!. :::;::;::;:;::,,,,.;:;!iL88C;,;fCLLffitf +!,.,:..,!,,:i!;fLfititifCi;CC0L!iLL08CLfi!;;!itiiiit0#@0LfCif!!;,:iL,:f!!!:;fCLtLC!i:. ::,:,,.,;tt!itit: .:;!C8Gttt!;!iiiii!!!t +;,,,,,:,,,,:::;!i!!iiiiti!itftftfiiti;;;!i!itfCCft!!iCL!:iffCG!iif@G!;;!8#!;CfftttCGf ....., .:::;:,:::,:iC0GL;,;Ltff!!!itti!f +,,,,:::,,.::,.,!i!:;!it;!:tf;::;;,,,,:,,,,:::!!;::,..,!. ,,:;;fG@0!!@@;;##ftftiiiiLG!. . , :..!..,. ,;itCi!i!:;;!!:::;:::;!!it +..:,;:.,.:,i,.,!;,,,::::;!!iiiiiiitttttiiiit!...... ...,:!:,,,;i: ,C8:.i##;iti!!!ifC:,:;,,,,:!::t,.,:L0G!!!tG; !Lti;:,,,.,.,,;i +.. ... .,,,:;!!!!!!!iifCG8@@@######8@#####!,;!!!. ,.:i;:::!;;,,,:, ,Ct,!ftti!iLLitfff;!f!Li;i,,;Cti!!t0@0: ::;tGt;;: ..!t! +.,,,:,,:::;;!itfLLffLfftifLLLLCCGGCG888@@@#@##;;::!; .::!ttG@###C:::i:,,,:;!LtiftCf,,;;;!::;;!:,,:L!::tii!!:. ,;i!;:,,,...:i! +titfttittiittii!!!!!!!!!!!!;;::;;;;;;!iiii!!!iLLL!:!!it!,:f8#####8!;titt:,,,,::!t!tL: ,!,i::!:;..:!:ff;,, ., . !8#CLLfiii!!iit +fiiiiiii!!!!!!!!!!i!;;!!!!:,,,:;!;:,,:::;;::::;f8t@#####f!fLti!!!;::;ifi;,,::,,:;!;!, ,f;!G!ti:;,i::L0; , .!##08@8GG08@## +0LLLfttti!iittfttttfi!!!!!;;;!;!!;;:;;!ifift!::iLi8#########0, ...;###f;tf!:,,:!!!, ,LCi0i;i;;,:L::ti ,tCtffffCGGGG# +8GLLftiiiii!ii!i!;;!tti;!iiifi!;;!i!;;!;;!!ti!!i:::!ti!!L###L;i!;;;:!0####Lft:,,:!tf: .tG;tt:t:!,,;,,;; ,Gi;!;;!iii!f8 +Li!;;;;;;::::,:,,,,;:;;::;;:;;;!!!iiii!;:::;;itt:,,::!::;!i;:!iLGGLtf::iG###f:.,;;tL: ,,,.,,.,,,,. :C: ,fiti:!i!!!t!L +L:,,,:!!:,,,,:,,..,,,,,.,,,,,::!itCGGCCfi;::;;!;:.,,!0;.;C!,::::;!!;:,,::tfi::,,,;fC, .... .,::. :f: .,.,,;:,,::;;!;:f +!:,,,::::;;:!!,,,,,;!:,,.,:,,,,,:;;!!!;::ii!!tif!ii!00tti@t08;i!;t;i;;fti!ti!;;;!if!;.... :;,,,... :::., ,Gi!!,,:;;:::;;:,. +t;:::,,,,;!;;::,:;;;::;:,,,,,:::;::,.,:,;ittttC0iffttLCfLfG#8ifCfLfCttLfttG80fifLCG0i!;;, ..,.. ,, ,;:t, Lf:...;GLititfLCi. +Lt!::::,,,,:,,,;:;:,,,,:;,,;;:;;;;:,:,.,t#####0::,,,,i!:,:CCCf::::t!!f;,,::!;;;:;;iL;........ ,i;f,.,,,it. :;;ii!;:;tCfi +i;:::,,,,,,,,::::::,,,,::;!!!;,,,.,::!fftC####i,:;::;;;::;!ti!;:::;;!!;::,,,::::::!i;:,.,,,,,..,, .::,;:!f!,i, ,.;Cf;;;!!!; +t;;;;;;;;:;:,;;;;;;;:,,,:::;::,,,,,,;####f;ifi;t080L00tCtGGtftGC!CGLGGLCGt:LtfCLf00GGfC; . .: .: !!::,. ,!,,,.,:;iitttii +f!!fitffti:,,,,,,,,,,,,,:;!!;,,:!!;:!8###t::::;:fL!;;:::!ii;,:::::;;;;;;;:::;iLL!it!:;:, ,, .,..,Ci. :::fC;. .,,:i!! +!:::;;;;:::,,.,,,......,,,,,,.,;;::!!::;:::;;:i,...,,. ;Ct , .,::;,.. .,..,.., .:.,L, ;t;:::;: ,;,:! +!,.......;!;;,....,.,,,;;:::,,,,,,:::,:,:,::::!: !C: ,:, ....:,,,,:., ,::,,,, .. ,i .:t;,,. ,0f., +,::::;;::,.,..:::;::!!!!!!!;;!;;;;;!!;;!!!!!!;!;. ..,;;!!;;,. . ;i, t!: :,  .. !:,.. ,,...,.. ;;;;;, ..,.!! .;, ,!i: . . + ,:if!:. . . ., ...,. :ti, ,i; . .,!fi;.. .,,,,. .,.  + ,:L00t:. ,:,..., . .. .,;:,..:!:. . .,.,.,,,.:.:i,. ..:iG:!i;;. ,;ttiti,  + ,:;Lt,;;;;:::::,... ..:::::;: .,,,. .:ftii!tLG; .::. ...... ., ,,::;:,... .,..... .,iC;:ttt::!,,:!;!L; ,.  + . .,,.;L00GCLffti!;;!!!!!!;;::::,,,...,:,,..::t;:i8#t;:,,;LC, ........ ,i:i!::,,:..,,,:::,,,;GG::;:,.,:i;,::;!L: :!i, +,;. .,::,,:!ii!!!ittLC08@@@8800Cfiti;!,,,,,!;,,:!itif##!,,;Cf!t!!i!:,.......:!::i,....,:;;,,:,.,;@8;, .;!!Gi,;!i: .,.  +,f:,,:,. .:.,.,.,,:,,,::;;!!!!!!!!!!ittffffti!;;:;tiiLC0##0G0GCtfCftif###Ct!;::,,,,,,,,. ..,,,;;,,:t0C;, .,:;;Lt:,t!f, . +;f!:tt;;, ,. ..,,,,:::;!ii;:::::,,,,:::::,,,,,,,;GL00G##G8G###CC##8#@##G88LGfi;:,,,:,,...,.,..,,,:LLi;:,;;. ,f;;t:,.,!!f, .;: +,:::;;!;:.....,::;;:!;;;;!;;::!!::!;::::;:,.......:;!!!tfLLLG@##CC####0GGG008@8GGfti!;:,..,,,,,,...,::,!i!!;. ::!f:;, ,:;i, ,;:, +;,:!:;it!,,,::;:::::::;;;!i!!;;:;::,,,,,,,:,,,,,...,,,,,::;!ifLLtf00#00@GC#####G08@#@C0Lt!:,,,,.,,,,. .,,:;:,,!L;:;L, ,,;;...,,: +t!!i;,:ft!:!!ifi,!:,,,::iLfi!!:::,,,.,.,...,,,,,,,,,,,,,,,:;f!t;;!LCC0@##8G####@CC#00####0t:;;,,,,..,:,,,,,,:tCf;,t!, ,:t, ..,. +t;;;!:,!fi;:;!iii!!!iiiii!;:,,!!!::;,,,::,,;:,:::,:;;..:,,,:;!;;::!tttLGCCLC008#00GGCGLfi;:...,,;,.,:;;;;;:;,::;;:t, :;t: .,;i; +Ltitiifi;!;::iCG##GCGGGLi!:,,:;;:::!i;:,;;;:,,::,:;;;. ,,,,:,:!!:,,:::;;;;;;tG@##0##0i;,.,:.. ..,!!::;;;:::,,..i,:,:,,,;f:. ..,. +8LttttGtLf!ii!f####8GLtf;,:!;;i!:!;!t;:,:::,,::!,:;:,..,:;;!i:;i:,:;:,,,,,;,:!iiitffi!iiii;Liii::G8t:LC;!;ii!!t!!;i;;!:!L!::,,.: +Gttii!LtCf;;ftttLft!;:::,.,,,::,,,,:;:,,:;,,..:;:,,,.,:;!fffC;:L:,tff:,:.,,,,:!:,!i::,iCt:;fC800iGC;:i;::;;;;tL!C:,,,::fLfffffit +Ltit;;iit!;;i!:::.,,,,,;;,,,;::::,,::::;!!!!!!!!!!iiifLLftffL;!L:!Lt!:;:.,,:,,,,,;:!!;!;,:t;;!t!!t;,.,,,:;;;;!::,, ...;L!::;ii!f +fLi;:;fi!;!i:,..,:::!:!Gi;;;:ttft!,ift;CG08GCG0008@0C##80i;t8!!G:,fi:.,,.,;;,,,.::;i;:,..!t;:::::ii;;!:,.,,,,,.......,;G!,:;;;;! +;Lfi,:Li!:,,,,,,,:ii;,;i!:::,:::;!;!i;;!C@#0CGCCLftiitfti!;!ti:t:.,!:,,,.,,::::;if!!:;;,,fi;!L;;iff!tL!. ....,,,...,:;if;iffftft +;:tf,,:;,,,,,:,:;::;:,;!;::,::,,:,!;,,;ifC0Lfi!i;:::,,!;:;!;:::.;. .;:;;;iffLLfft!!;:!t,,t!:ift,;L;,,,,,,,,,,::,::;t;fC,.,;;;;!i +:,:::;i!,,,,!t;,,,:;;!i!!it;;L;:;,,:;iG@@0C!!!iittt!;:i!;:::::::;::,.,iL8#####0t::i;!;::;t:,:!;;ii. .;!!;!i;,,:!t;,:,.,::,,t:t +,:;;!;::::;;;;;:,,;;:::;::;!!ti:.,:L@@Ltti!iLGCLG8@0LftLLGt;;fLLiifi .tLLGCLCLi:;,;!!;;ff!;,;GG;t: ,:::::!:,::::::. :i:.::;G +tf;::;!fi:::,:tii,,;,,!!;,,;:;!,..t@0Li;;;!ifftif800@@Lf##GtttLLftt; ,;!;!!!;:,,,,:t;L;!C!,:GL!;C!. ,:,:.,,,,;i:!i!!;...,::;tLL +,:;:iftf!,...::;::,.,,::::::,,,,,,itt!!;;ifGCft!!Li;it!;!iLGCfC8L!;::!f8i:C:..,::!fi!;;;tf!;::,,:f. .,..,, .:,;!;::;C,,:;i00f;! +:::;!tt;,,:;;;:,:;;:,,,,,;!!: .:,,:GCt;;!:;;;:,,,.;i. . .:t@#0!i@G;L##@!!ii;:;:;Cfi;tt;!;:,,,,,:,. . , . .,..;: :!;iGGL!:,!, +::i;:08t..ffft!;!ffi;....:;;, .. .:;:..,, .,,. .,, .,,,,!f: ;@0::fCt;L##@#8Gt!it;ff;;:,;:!;!t;,.,,.. ,,.i,.,::;iCi;;!;,,;;  +:,i!:if:..:;;:;::::,. .,,,,,::::::::::t;.:!t!. .,!;::;!!!:,:,. !G;.i#####L!;t::,:;!;:,:::;;ft!!i;,;:;t;:i..iG0CG;.:iffL88. +;,,.. .. ,,,,,::::;;::::::!iitfftfftttttL!;;:,, ,!!tfG####0;:;,,::,,;ifLCCL!!i!;;::;;;;;::,!i::!:!;:Liti;;:;ii!if!,;tLLf8i  +ftti!!;;!;;if!!tffttLfi!iittttfftttiiiiiiifG8f!;!itt!,,L8#####@t;iL!!t:,,,,:;L!::CGGfLGL!iifif;,:. .:,:::;;:;,,iGfG::Cti:,,,;i,  +###@00GLLCLffifLLfi!!itfGC0GG00CLfftttttftttC0t######fiftiiii!;::;!iii!!;::,;!t::;!;;!!;!:::::,.,. t!;C;;t:!.,!;iGi:;:.. :;  +#0GGCLffCCftititti!;!!fLfCttffti!!iitiiiii!;itiL#########, ..,,L##8f!ft:,:;:;;ii;;:..,:;;;;;;:. .;ft0i;f;;,:t::GL;, :.  +#GCGCLfttttfLCCL80tfft!!tf!:;:::::::::,:,::;::;;itt!iLG0L;!i!;;;::t###0#Li!,,:i!iC80Ct!;;fCCLLLGf. i0iGf;t;,;:f;,:if,  +#GCfLLLftfLftfLfCGLtti!;;::,,::;!:::::,,,.,,,,,:;;:i::::,!itLGGCi!:,i8####;:;;;!iiiiffLLi;;;;;;i!. ;t;ii:t::;,:,,,!C,  +0tt!ititti!!;:;!!!!;;!!!;;:::::::;;;!:,,::,,,,,::.:C::C;.,,:;!!;:,,,:;t##G;,,;!!;:,:;;!;:... .,,, ........,,. !Gt.  +Gi!!!i!LLii!!!!tii;:!tftffi;;:,,,::::;::!t;;;!!t::fLii@LL!;if!t;:;;tftitftf!;!ii!;!;;;;!!!;;;:;f; . ... ,:;, !G;  +Ctiti;;!!;:!ffti;;:::;;;;;;:;:,:,,:::;;;;iL8GLff!tL0tiL##tittttLtffCft0GtLffLCCftffLitfffLfttf!i: ., ,::.,.... ,;t: :..  +t!;::,,,,,,:::::,::::::;;;!!!;:;;::;;:,,ti8####;,,;!:,!08f,,:;!ift;:::;;;:::;;;t!!i!!!!!iiiiiL!,, .:. ..,. : ;t, .t!, .;t +!,..,......,.,,,,,:::;iiiffLft!;;::,:!fft!!itL#!:;!;;:;!i!;::;;;!;;::;:::,,.,,:!!!iiii!!i!ii!Lt,. ..... ., ;L:.;L:. ,G  +!,.....,,,,:::;!!::;;;::;;;;;;;:,,,.:####G,,iitGGC80GCiL;CGCCfGL;CCLG0CGGi:L:;CtLGGGGfG!:;;:;it. ,::,:..,,. :f!;i!:::,.,C: +i;;;;:::!!::;:::i:,,,,,,,,,..,:;,,. :G@@#i,,:::!;!!!!ii:::;;::::::;;;;;;;,:::!!;;!!!;!;:,,,,:;:, ... .;, ,;,.,;,,!t..,. +ttit!::;;::::,.,,,...,,:;,:;..,,,,,,,:!!;;:;:,,,.:i..CC. .. .,::,,,...........:;!. .. ,: !, !L,... , +;:::,,:,.....,:. ,,,:.....,..,,!!!;,:iiti;;;:;:!::f,.,:. . ..:,,;:,:,.,,,,,..,,:,. .: ..: ,C; ..,  +,,,,,::,,:,..,,,.,,,.,,.,,,:;;!!!!;;;;;!;!;:!;:;: .,...,:;::;;;;;!ii!;;!!;;:,. ....... . :: ;i  ;ft;.,:::, . ,,.,,,,. ,::,. .. ,:,::: .,:i, ::, :!;,,:,::,,,.  + .,tt;iLLfC0000GCGfft!!!;!!;;:::, .,,::,. ::GfL!;:, ,,,. . .,..:.. !!. .,,;C:,t!,.. :,,;i,  + ,.,!iiLfti!iii!iifLG0G088@80GGGi;;::,..,,,..,,;;;:t##!:;ifi. ............,.,,:..,,.. ,,,,,,,. ,;C!,i!!::,. ,i:;L;.,:,: +. .:..,,:::::,::::::::;;;!;!!!!!!!!tfLG!.,,,:;,:;:,,:i##iiGft!, ,:!,.........,. ,,,,::::,:..,.,::,,::,i0:,;:, ,:t!;::;!L;!itt: +:. ,. ..,,...,,,,:;;;;::;:;:,,,.,,,,,,:::,....,t!!itfCGCGLfLii;;;;;fCti!:,,.......,it;f!,..:,,;,.:::,,:L@!,. . .!!tG,.i;i:.,,,  +;,.,,,,,:::;::;:;::::::;;;::;:::,:;;,,,,.....,:!ffG80###G@8G0CftfL0ff#@CC!;;::,,,,,::::;. ....,:;,,:;!C8;,. .;::;!C;,,!;; ,, +i:..:!::,,,,:,,:;;;!!!;;::::,,,,,,,,,,.,.,...,:;;!iLLG@GG#@####0C80##GGGGG8CLLti;:,,,:,...,....,,::;C0C!::!. ,i!:ii:,.!;t, ..:,, +ti!:;!!t!,;!,:,,::iLi!;;:::,,,.,..,. ..,.,,,,,::,,::;!!ifLGG08##CL8##GLL8#8##80CCffi!!;,,.,,,.,,.,,:;;:;;!:..!:;t;:; .!;t, ,;:,, +ifi;::;;;;;;;;;;;!!!;:,,;!!;,!,,.,:,,:;:,:,,:;;;,,:,,:::!fittfCCLL##0@#08#@##8C8@##@@#8f;:,,,,.,,,,. .,;:.:!fi;:f;..,:i.,..,:, +i!;::,:iLC0CLLLfLf!;:,,:;;;::;!:,,:;;::,,,,,:;;!,.,,,,::;i!:;:;;iLGG@@##CG#8G@GCG8G#0@#@t;,;;:..,...,,,,,,,,iCG!:!t,.,:i, ..,,. +fff!!!!i0####0GCff!,:!!;!i,;!;ii;,,:::,:::!,;::,..,::;!;!;;;:;;;;;ittfLLffCCC8#CCCCfti!::, ....:...::;;;;:;,:;;!,t, ::i, .,;!!: +fLLf;;iitLC0fi!;:;:.,,,,,,,,,,:!,,,;;:,.,,;:,,,.,:;;iitiff:;f!ti:,::,::::!iLfG0LG@@f;:,:!,, . :!;::;;:::::,..;,:::,,::!.. ..:;t +i!t!:;tf!!!,,.,,,:;:,,,,,::,..:::::::,::,:,,:;!itffttttttf;:fiii:.,,,,,,,::::i;;!!ii,:tt;Ltti!,;0L!tC!;!!ii!;!!;!i;!!;f!:::,,;0f +i;!;!;;:,,:::::,,tL::;;!itfi,:itt;LffLLLLLffC00G@#88t;tCLi!:ii!;,.,..:;,,:,,:;!ii;,.,!L;:iC8C8!iG!,;;:::;;;:iL!C:,,,:;CittffiCL, +f:;;::,.,:,,;;!!,ii;:;::;:;!i:!t;;t####8###@0LtitCfi!;!fCi,:;:;,.,,..,:,,,,;ifit;;;.,ti;;iiit!:;;:.,,,,,:;:;i:;!,...,;i::;!!!i!f +!:,,.,,,,,:,:;:,,:i::,,,,,,,:!;,,;!iffftttti!!:,,;!;!;;!;:,.:,,. ;!;;iitttiit!!;:it,,f!:tGfi!;:ii;;t!,..,,,,,.... .:C!,;;;:;;iG +,::,,,,;!:,,:::,:!;;!!,;t:,!,,,....,,::::;!::i;::tt!;;;!!;:,.,,, .f80@@@#@Gi:;i;::;.:t!,;;!!;:!fL!iLi, .,.,,,. ..,:!L!tffftiLLC +i!..:;!i;,..:!::;,,:;i!;f!:,,...,,,:!!::;itttffftittLi::;!;::!!i, :8#80G0L!:,:t;;:;;;!:,:f!Lt,;f;,,,,,,,,,,,:,,,:i;tL:,:;;;!i0iC +,;;:::;;;!;;:::,,,,,,,!:;i,.:..,;;:;;;!tfG@@8GG0C!fCGGi!ttffGLfLt:,:tfii!;:,,,:!;tiGf:,;LffCt:ii. ,;!!;!i;,,:;f!:::.,,,,i:tCt8 +!CG!::,:!ift!,;::;;,...,,:,.,,:,,,:;!t080@CfftfLffttiiiLffff!;!!;fi ,;,..;,,:ii;!;!f!:it;::;:t;. ,::::,:::::::;:. ..;,,.:ii08 +;!;:,,,::;:::::::::::::,,....:,;,,!C80ftiiffLCLL0@0ftiittti!;:,.:!!, .,, .,.:Lt!;:::tf!:,,..,!Gf. :,,:.,.,;!i:!!!;,...,:;!!GG!! +;!;..!!!!:,:;i!;;::;!iti..: .. ,G@Gf!;;;!itiiif0@#@@LL8@80@@CC@##: ;0LLCti!tt;:Gi;t!;::;:::itt. ...... .;,:;:,:tf,,;;f00Gi;;f +iL!..;tf!,:!i!:,:..,,:::,,,,,,,,,:i!;;!!!ifCfi!;!LC!tLi;tf0@######G:,L####@f;;i:;!ff!!;;!ift;;;, .. , :,..!. .:i;fGGt!!;:,,! +,:,. .,:..,,::,,,,,,...,!!!iititti;:,,,:::;i!i;,,,::...,.,:iL0Cttfi:;###C8Gi;;!;;::;!::;;!;;:;G!:::,.,..:.,t,.:;:!fL!;!i!!f;,;.. +,::::,,;::::!iiiffi!;;!;;;!!ii!ii!;;;;;!i!:..,,. .:. .,,..!0! ,80,:CCt;!f!:fLCff!;;;!iff:,,!fLtfft;:i:!i;i: :G0CGt::iC08@C. .! +G0CfLttLCtiLCtittiitftLLifftiii!!!!ifLCC08t.:;!;. .,,!i;,:!!!,,,,. :8G,:i!;!;;!fL;Li!:;;,..,:::;;;!:!i:!!;::iii!f!,!tfiti,. L +@GLtCGfttittf!;;;!fCGGGLGGGCfttttttttfttfLCi;::;: ,!!ttf8@@#G:,:,,:;::;fGC!:.,:,::;;;:::,,;: ,;:i:::::,.!CtC;,C!:,,.,;. : +#LtifGtiiftfftiifttttftiiii!!!!!!;;;;!;!tLGGCt;:!!tt!.,L8######f;iL;it;:::;!f0Li!!;:;fLLffftit: :f!LL;f:;.,i;!Gt;:, ,;  +#CLftfftfL0@@@0GLLf!iti:,:::!!:,:,,,,,::;;!!it!@#####Lifttiiii;::!ittfCf;,,,;iG880GLi!!!;;tfCG, ;GifLii;,::f:,GG!. .  +@LLLffCttiittttii!;;;::,,::::;;::!;,,,,,,,..,:;f#########; ...,8###Lttt:,:;!ittii:.. .,:!i, :G;!C;t:,;:t;,;tt  +Giittfti!;:::::;::;;;!;;;;:,,:;;;;:::;;;::,,..,;itfttC###!;ii!;;:;L#####ti;,,;ii::;;;:,,,,,;;;. ...,,,:,,,,,,;;C;  +C!itLCffittttii:,;ititti!;;,,,,:::;;;;:,,:;,..,!f!:f;:!i::!tLGGCfi::!0###C:;;;;!;;iffti;;:;!i; .... .,,. ,tG,  +Ci;;!!!;;fLtt!;:::;;;;;;::,,::,,::;;;:,,.,:,,,;;;,;G::G;..,:;!i!;,,,::!LL!:,,;!!fftiiii!!ii;i, ., ,;:., ,i!. ,. .::,,  +i:,,:,,,,::::,,;:::;;;ii!;;;:!;,;;!;;::,:!ifLffL:;ifi!0LLi;tfif!:;;ffi!!itf!;!iiitii!!!!!iL!,, .:,, ..,., ,!, ,i;. ,CL;:;, +;,...,,..,.,,,::::::;!iftft!:,,,,,,,,,;:;i#####t;tL0t;!##titftfCfLLCft0GffffLLLfLfLL!!i!;if!.. ...... ,: :L;,ti,. Lt:.  +!,...:,,:,,,:;!::;;::::;;;;:,...,,.. ..,ti!tiL#:,:;!:.:LGi,,,!;!ft;::::;::::::;t!;;;:::::;;:. ,:::,..,,.. :L!!i;:::..!f : +i!!:,:!;!:::::!:,,:;,.,:;:;;:, ...,.,;tft!:::iii;;G!:,,:!;;::;;;;;;::;:::,,.,,;!;;;;;;::;;;!. .... :: ,!,.:!,:t: .:,  +iit:,:t:::,,.....,.,,.:,,:,,,.,,,:,,;####8:!GC00Gf0CLL;G!CGCGfGC!CGLG0CCCi:C;iGLtfLLC!L:,,,, .. ,;. ;, .C!,.. :L;:,  +,:,,.,,. .. ... . .,,;!;;,,:;0#@#t:!!iii;!!!:!0;::;;:;;:::;;;;;;;::i;;!;:;!!;;;!:... ,..,..: ..; ;C. .,!:,tfL, +,,,,:,. . . . ..,,,:::!;:;,,;,,::;::;,,:,,!,f, ,;, ,,,,,........,,,::, ,,,,,,. ... ,f, :L!,:;: +,.,:,... .....,,,;;;!!;!::!,.,....,:,!;,:!:;;,.. ., ,,,::..,,,,,,,;;:;;,. . .. ..,;; .:, .tf, . +..,.,,,,:,::::;,:;;;;:;!;;!:::,,:,:;:;!:::::;,::, .,,;,,:::;!!iiiii!:..,:,:::,,,,,,.,,,ift!,,. ti;  !!!itii!!!:;;:::,,:,:,....,,,,,;;;!,. .:;:;::,:itCffi:!ti!::,,,,.,,,,,. . . ,, ;;,. .!, ,....,,, i; ,:.,,::,::;;!,:;::: +!;:;!!!i;;!!;:,;:,:.,,...,...,,...,:..,,,,i;:;tLGGLLtfitLL!;!!i;:,,.....,,.,.,,.....:.,::,.,.,. .:,,,,..;0i,:. ,,!0f,,:,:.. . +i!!;;;;::,:::,,,:;,,,,:,,:,.,.,,,:::,.:,.,:;;t8####0#8#80GCLC@0L!i:,:::,,,,.,,..,..,,.,,,;:.... .::::..;@G:.,,. ::LG;,t,; .., +LLfi!;;!;:,::::::!!!;::::,,:,,;,:;::,..,,::;!!tC0#@0#########@GLi!!;i00LLft!;,,,,...:i:t;,..,,:......,!8f:. ;i,::tC;,;:;, :::, +Lt!f;,,::,:i!;t!:;i:,,:::,,,::;:,,,:..::;;:!;;!!!itCLGG00####Cffi!!iC8####G0f!:,,,..!!:;t, ..,..:,.,;C8f: .;:,,:!t:..!,! ,,,,,. +!:,;:......,,,,,,,;:,::!!;,..,:;,....,,:;;!!!ii;;;ii!!itfC@GLti!if0LC0###@0G#0fLti!!!;::,,,..,..,,,;CLi:, .:,.:!;!, :::, ,,:::, +;;,.::,.,,,,,::,.,:::;;;:,,,,,,,,:;;!itttiiiiiii!!!!;i;:;;;;!!!!t0@#C0###@#CC##C#008fi!!:,,,..,,,.,:::,::.,:!fi,!i..;,!.. .... +;:,:ft,,;!;!!fi;,;itt!CCffftittitLGCLG#88G;;iGfifi!f;i:,,,,;!;!LtiL0LfG88@#0GGGG0Lf;:,,..:,:.,,....:,,..,:;f00;:i,.,,;,. .,.. +;t!;Lt:,:,:;;:!i!:;t;;i8###88@080CLiitCCfi;;!fL!ii;i:,,.,..:::!f;,;!!;iG88#@0##Gi!, .,. ...;:,...... ..,.,;;!:!, :,!.,,,,:fi;, +i;,,:;;,...,,.,,,:i,,:!ifLCLtiii!!i;:,:!!!;:;;::,,,:,...,,,;iift;.;t!;;;;ti!!ttiff!!;!L!;;,,tGi,:!,.,,,:,, ,::,,..,!,. .;0f!:: +;:,,;;;:::,:i:,:,,:,.....,::::::::t!:::fii;:::,:,,,,.,::;iL08@##;.;Lt;:::if.,!::tLt;!ftCLCf!C0;:i!::!!!!!::;;;!;;;;;L;:::;0f;!,; +!!i!:!;!iii;fi:;,....,.,:;!;;!t!;;!!!ii!ttt!;;;ii!!!;,i!ifC8008#; :L;:!!;:::;!:,;!ifi;:!iit!C;..,,.,::::::iCii,,,::Ltttf!fL;::;: +;::,:,:;;;;;;t!,.,...:;,:;t;iffitttttCf;fCGGiiLCGGCLLi:ii!ifttfC! ,!::!!;:if!;::!0fL0;:!;:,!!;::::.,,::;;:L;::. .,:;:::::!fi,ffL +;,,,.:!!t,,;,:!,,,,.,,:,::::;!i!iiiiti!!tffLfff!ttt!!f:,i;:!t::,, .;,,!!tf!L!,:LC!!!!i!;,;ifLfiLC;....,,,:,.. . .:C;,:,,:if::!ti +!:,,..,:,,,,,,,,,,:,,,,,:::,:!i!:!iii;:;ft::;!:,....,.. .. ,,. .,:tf;;:::t!;;:,..:;!;: :iL;:;:,.. ..,,..,,:::t!!i!;!tLL;:::! +,::::,,..:!;;, .,,:;,,.::i:.,i;,,:::::;!itiiiiitttttiitffffffft!.,i!fft;:i,,!;:,,,..:CLL:.,i:. .,,,,,,,.,::fiiL:.,::;;i;!i!!iL +:;ii!!,,,:;!!: . .. .,,,:;!;;;!!iitfCG8@88####@############@,,@#iif:iC;:;:;:;;;:!t;;t,:!. .::::,;;,...,i;,,:,...;:f;:!iCG0G +;!i:,:. ..,,,,,,,,:,,,,:;!ittLftffLfttLLfLG00000088@@8@80GGG0##;,;i!t!:::ii;;:;:!!;;!::iiC!. :,,,,,::::,,:::.. .,.,,;itfGGC!;; +;,,,,,,,,,,,,:ititftiiii!iiitiiiiit!!!!iiiL88GCfifLCCLCCf!;;!!ifL:..!i!!;;:!;;!!;;,:iGC;iC0C :,,,,,.,!i!;iitf, .,:iG888t;!::, +!:;i!!itti!::;!!;!!!!;;!;;;!!!!!!!;;;!ttfCfiiiii!!!;;;;;;::;;!i;tG, .:GGLGC!i!fff!,,:;::;!;, .... .,,,:;,,:t:.,,iC80iitt;!LLf +Lttii!tftiitifLiitiii!!!!!!tttttLfttiiii!tL;:!tfCLi!!!!!!;:;i:,::;;, :;!iti;t;:;;:,. .,,:;;,... , ,..!. ,, .;!;it!!tt;::L8@G@88 +Cttti!!!!fLCCCCG0GCCLfftttttti!!!!iftt!;;;;i!i!!iL0@G8CG0Liii!;!!!i..!:,,,.::;;!;;:::;!itLCt!:!,,::;i::!.,:;tCGi!!it8L..C#G8@0G8 +0f!!i!:;t!tftttttii!!!!!!;;;;;;:!i;;ifti!;;!ii!;;tGLC8t!CLGCLfC88G;.,LCft!!;;fLCCLLi!ii!!fi:;i;t;iCtLi!;,:fGift;iLfC!,..08fii!if +8ftfC0tftii!!iti:::::;;:,,,,,,,:::::;;;;;;iLGCft!!ti::,,,:;!tfL8#f!;!f##8GGLi;!!;;iifGCf!!. ,::;:;!;::,:iLi!;L!!:::: :Ct!;;;f +8LLG0C8Gfffti!;:,,,:;!!::::;,,..,,,:i!:,,,:;;;:,...,, .,..:0@!,!@0,L#Gtiti:,....,:;!!!C! ,f;if;t:: .;!!G;!:,. ; :Ci;;iL +0i!!!!!iii!!!;;::::::::;:;!;,,::::,:::,,,,, .. ,.,::;,:!!,.:f;,,C@!,fi;;:,,,:!;,.:i: ;GiiLii;:,:t,:Gi, ,. .!L!;;if +Gi;;:;;;ft!itttfi!;:::,:!;:::;!!;::;;,.,:;!;. :!, .;:!ttfCLCG!::, .:;::tLCft!;::::,,:!. :G;iL;t:,.,f,,!L. ,L;::;!! +Gfitfi!!i;:;!!!!!;;;;:,,,,,,;;;:,,,:!::!!;!i!::;;!!it;,!G@#####0!iC;:,,,,::;iCGLii!;:,:;!. ..,,,,:,:.,.,:L: ,,,,:iLf +f;;tfiii;!:::::;;;;;::,,,,,,,:::,,,:;;!!!:,,:it!@#####fiLfttti!;:;ittL;,;,,,:!i!iittt!if: .. ..,. .fL,. . .,,.. .,,,,!!; +f:,,::::,,:;;;;iitt!!!;;;:,:,,:::,,,:::::,,::;::t#########;.,,,,.,f###CL!!,.,::;;itttf;f, .: ,:,, . ,i:,i: .iC!;;.,i!;!::! +:,..,:,,::,,:::;;!!!i!;:::,,,....,,,:;;;,,;ii;::;;!fftL@##!tLLt!!;;if8###i,,,:!i;;;;;:::. .,...... ,, :!:t;. iL:..,,;Cft!;;i +;,.,,,::::;:::::,,,:::,,,,,,,.,....,,,,,,,,:::!Ci,.fC,,;!::,;itfti: ,:f##;.,:!!!:;!;!!,. ,:::..... .it;i::::.;t. :t:CGt!;;! +!;;;;::!;:;!,,:,,,:;!!;,....,,:,:,:!:;:,.:!LGLLt;.,!!:,C!;,.,,:::,,,,,;i!;,,,:i,.,,,:!: .... .;. .!,,;;,!!..:,. .,,,ifft!! +ii!;,,,:,.,,.,:,:..:,,....,;:;::;:!;:;,,:;#####C:i;f0;;L##iiLiff!i!Cti0GCft;;!!;::;:;:, .. ... .;. ,. :G,.., ,fi!, .,;tCt +,::,...,.. .... . .,:!;;;:;::!:;:,:!tiittt!!tttLt!t##0ttiL0C0LLfitfLLLftttfttfLti!. .,:,::., . . ,C: ,t;,ifi,. .:; +::::,.. , . ..,:,:;:i;:!::;,,.,:..,LG:,:,.,ti:t;,,,:;;:,,::;;::,,.,,::::::;;;!;;i;,.,,,,,... . .,;;;..;: .ft::;!: ;i,  +,,:,.. ....,.,;,:;::!:;:,:,,,,:::::;tffi;:!!!iii!!!;::::::::::::;;;;;;;::,;;!;!!ii!!::iiii!:,....:,:G0GL: .CG:... ;0: .; +.,,.,.,:,;;:;:,!;;!;;t;:;,,:.,;;ffff!####8,;G0000G00GGC0LGGLGLGC!CGCG0G0GLiGfLGCfG000tC;,,,,;;:;:::::LGt;:. ..,,. :ti, ,,,: ,i +;;;::!;:!::!,,::,:,,;::!:,:..:!!i;;:;L80@i,,;!!!!!;;;;;;;;;;:;;:::;;;;;;;;!t!!!!;!ii;:,: ......;f;,.,,,:!!!;:. :!,;!,..., +;;,::,::,,:,,,..,........,...,,::,,:,::;:,.... ,.. ..,!;;::,,;; ;!::!tiii!!!;;: . ,iii;  +,,,:,,;,,,,,:..,,.,,... .:..,....,i;:ii:!;,,:. .,, .;.,fft!:,:,,....... ,i!:;ii!it!it;,.. :::;. . +:::,,:,,;,:;:,::,::..,..,..,,.,,.,:::;:;!;:::,,,. ..,..:!!ii!!;;;!!!i!!;;::,::, ,;!itffLLfttii;, . . . ::;;;;:,,,,, .,::;:!;:!;!;;;;;;;;iitG@#@#@##@#@80000GGCCLti!;;:::,,,,,,.. .,..,,.,;,..;, ..,,. ;f!: :;t,.:.. ,::;;:,,:t; +;,...,,,,.. ..,,::;::;:::;;!tGC!ffifCCG#G##@####@#@#00GGG@0CLft!;,,...........,... .::,,,::, .;0;. .;;0f,!,, ,,. .,,.... ,t +:,...,,. .,,:;!!!!!!!;;;;!;;;ii!!!;;LGtfLCCCGG########8#GLC8###@Cf!,,:...,,.. . .. ..,,,,,,,... ,!@t, .!!t:,:,. .. .,.,:,... +!i!;;;::;;itfi88GCCt;!ffi!t!;ti!:,::!!!i!itttfCG8##00##GCLCG0#@Lfi!,,tf;,:::,,,. ,f:!t, .,.:t8G: :;f,.;., ,,.,...,::;;:,,  +###CCCfLCLLfiif@@GCi;;tGLifi;ii;,,:,.,::;;;;!iitCGCLCG0CL@#GCf!;;:,.,t@GGf0f;;;:,..,;:,!:. ..,tGf:. .:ii!,,,, ,::,.. ..,,,.  +###0fti!i!!!;::;i!ii!!!!!;::,,:,,.,,,,,,;!!!;!!iG0ffLiiCGG#0t!::;:,,:!!0Cf!:,,.:;:,....,,,,,,,,::::,:!0!i,.:. .,. .,:::, +iii!;::::::i!:,.:!!t!:::,,,.....,.,::!i;!G0GLfiift!!;:;!!!ii;:!;,:!!f0Ci;, . ,,,,,.,. ..,:.::.:.!fGt;, ,.. .,,.:;:,.,:,.,,,, +:.,,:;;!;;::!;:;;ti!!;;:::;:,,,.,,:!iC#t;##8Ltffi:;i;:;;!.:!:::;;:,:f8G!;:,;!!:;,,.t!;,::,,,,,::,,,,;;;. ,.: ,Ci:;!!;;;;;::!!! +:::!:;!ii!!;!;!fi;!tLCi;;ifttii;!;;!itGt;0GCi;;;::,!i!::;:;;,.,!t,,:;;:ifft!LGGtC;:L8i!tfi:!;!!!;;;.,i,.,,,!:::fi;!!fCfLLtfifftt +:::i;:tfftfLitifLi;LfCCttfLGCLLiii;i;;!f;!C!;,,,,:,,;;;;!Ci::,!0f,,Lf,,CLffiiffiGt;C!:,::,,,,,::::::i;:.,:!ffitfi!!iiiiiii!;;;!t +:,::::;!!!!ii!iii!!ititttt!!!!:,;;,,t!:if:,;,:,;!,,,:i!f;!i:,;ff!,:ft.,LCLtiitt!::;!:,.,,, .,,,::,Cff;..,!;::;iGLCf!iittt!::;if +,,:::,,;!i;:!!ii;!:ft:::::,....,,.,.,..:!!.,::,,,,:tt;!;:,ii!;:;: .!!,,LLii!itt:f:ift;ff;,.....,,.,:::,.,!;::;it;;;!;:;;;!!it880 +,;,ii,,!f!,,::::::;!iiiiiittttfCLtL0tiiiiiiL@0ttLiifii:tt::;:,,:i. iC,,fti!!!tf,.,iLt!iL!,.....,,,..,.,:!LfttfGf!;::,,;:;iC80fti + ,.,..,:;::;;;!!iiLGG8888@@@##@@##############8GLt!ii;tf;;;:;:!i,.!;.,LLtti!it, ,:i:.,,,,,,,,,,..,:;;:i!:;;;!;ti;!:,:;i08t!;;Gt + .,,,::;;iLiiffLLftfLLfffLLLLCGGCG0G8##8GCCCLC@0t;::ti:,,:!;;::!;.:ti:;LLfLfftL!.,i, ,:;;:;!:,,,;it;,:,.::!:,:;;;;;LGi!!:..,;: +!i;;iiiiititi!ii!;;;;;;;;:;!;;!tLLLLLCLt!;;;!iitf!::!ii!;;;!;;;;,.iC0f;itiiLffLG:;t: ,:,:,,,::::::;;:,..,.,;,,!CfLLtiti;;!!iiit +t!!!!;;;;;;;;::::::;;:::,,:;;;:;;;;;;;;:,,,:!t;;GL;,t00CCGL!fttt..!!!:::;;;!!iit!i0: ,,.:.,..;!i;ii!i;., .:;!!fC0Lftf088@###### +L;:;:::::;;!;!!!;!!!i!:,::;tti;,::::,,,,,,,:;;;;;!:,;!!;ii;;i:::. ,i;;:::;;:,:::;!i, ..... .,,,;:,:;;.,:;ff00tt8CCLLCG08#8##0# +Ciii!!!!itttitff!;;;;;:::;;!!!;;:;::;:::;;!iCCf:;!;::!:,,. .,,,:;,,,tt!itLC;;!;;iL;. . , : .;. , .,!!!L@8;iffff!ifLLftfff0#### +8Cfttiii!i!!!;;!ii!;:;;;itiittti!!i!;!iitfL00Gf!!!!!!itfi;;;;!!ifG;,,tCtti!;::;;iCf;:;;,,:::::t, ,:!C0CC@#i,fGi!;;;itii!i!i@@8CC +Ci!;;;;;::::;:,!LLfi!it!!!;!iii!!!!!!ii!!iLfiiiiiti!!!!fLLCCt!;;tLC..f0GLt!ii;;!if;:i!ii:fftfii:,!Cfiiiii:. ;8C!!iifCC;!Cf!!i;!G +L;;::;::,,,,,,,:;;;;::::,,,:ii!ftiitfi!!;;!LGfi!!tLCLLfitfLfti;::;:,:!!!;!tiiiiiC; ,:;!:;;;;:,,tt!;ii, .:L;;!itt;;LGC!ti:;t +t:::!!;::,:;:,,..,:,..,::,,,,::;;;iLtfti!;!!i!;;;;!L0C0tt00G0Cfttf!;ft;!!:,:::,;i, ,t!L!:i::.,::!C!,. .:ti;;;;, .;i;i!!::t +i:,:::::::;!:,,,,:::,,,,,,,,,,.,,,,;;;!itii!!iti!;;!LfLt::;!itff0#8f!!t##;,,,::;:. ;Gift!i;;,;!.!C: . .CGLLifLf;,,,:!fi;:i +f;;;:,,,:!!!:::;;;:::;;:,,,:::;:;:,,::;;;;:;!fCLft!,,:,. ...,!@@!:t8;:#@t:;:iLCi :C;!t:t:;,,i:;i. .;!!;;!LGLL,.tti;:!t +Lfi;:::,,:::,,:;;;,,,,:i:,!!;;!!::::,;ii;,.,,,::,,, .,,,,.:i!: ;f:.;@@:it;tL; .,,,,,.,:. :C: .,..,::,.,:;!!;i:::,.:it +t;::,,,,,:,,,,::,,:,.,:;!!!i!::,,,:;,,::,,,., ,,, ,:;!itfCLGf,,., ,;!;!tt!L: , .,. . :!:. ,C!,,,Li:,,;;:,,,;:,..,,; +t;::;;;;;:::;;;:,,,,,,,,::::::,,,,,,,.,,:,;;:!,. ,:;!ii::i0@####@i;:!!:.,::,:;fL, :,.... , .:;:...,L;. .:tLi:::,,,,,:,,,,.,; +t;ii!ittti!!:,::,,,...,,,;:;::,:;;;:!;;!;::;::;;,:@#####ttLftii!;:,i##C;;i:,,,;!! ..,, ., ,t!::;!,!: :,CCt!!!;::,,,,,,,,! +!;:;::;;;::,,,,,,,......,,,,,,,;;;:ii;;:;;;;,,,:,:8#########:,:;;::t####f!:,,,;L; ... .:. ,,,t::;. ,:,,..,;fCGCL!:,,,::;;;i +i;::,..,,,,,,:,,....:.,,,;:::,,,,,::::,,,::,..:;,,:!ffi!f08C;tCGCLi::!f##0,,,:iL: .. .... ,!. , !f, .,:fL: .:;!!;:,,,:;:,,; +!,,,,,:::;!;;.....,,;:,;;!::;:;,:;,::,,:::;iiff0, ,.LC,,,:,,,,;;;:,.. .;i;;,:,!f. ,,:,::., .,,,.t, .i;:;!!. .:, ..;:,,,,,:; +:..,;::,.,,,. .:,;;:!,,;:;::;::;:;::!::;:;#####i. ,;i;,t:!L:. ..,,,. .,:...,!;. ....,.,.,,;ff. .. ;C!,,. .0i.,:.:i!::,:,! +, .,,.. ..,,:!::;:,;,::,;,,i::!:!;,,,;G####;,!;i!8Gt:i##0!i!!Ct0f!i;!;!:::;;::;;!:,::::!;f8G:..,,,. .iL!. .,:;.!if:.,ff,.:; +; . ... ..,;:!::!,:!:,,..,,::::::;::;,:iii!iti!;CC!GCtfiiiL0ttffCC0LittiittLLfLttLCtt!:,::,!Li;::!iii;:. .,.:!,i;.,.:!:,.,,..,: +,. ...,,::,!::;::;,,;,.,:;;;if;,,;;,.,.,00:!;itft;::::,,::,,,:,,::::::,:,::;;:;;:::::,. !;:!ttiii!i!,,:. ..,!it: ,t!. . +,,:,,!,:;::;,;t;:!::;,.;iitii!:,;:,,,;iff!;:ittti;::;;:,;C!::::::::::;;;::::,,::;;;;::,. .!:;!!;iiit!;:;: ,:;:..:.. .;, . +;!;,;,,::,,,.,:,,;,,:..:::;:::,,,,,.:####0,!G00GGGGLGGtCiGGLGLGC!CGLGGCGGt!C;!GGG080GtG!.,:,..,::!;!;;;:!;::. . ;i, . +:;,,:,,:... .. ....:..,..,::i;,;;,,;C@@#i,,;!!!;;;;;::,:,:;:;;:::;;;;;;;;;!!!ttiitiii!;:;tf:,:;;:;;!;,:!ti! .:. ,:,..  +:,,,:.,,..,..,, .. .,..,..,.,::::;:,:::;::.,.... ..,::,,,.,:;,,::!ti!;;;!it!,,::!i: ,.,;C!!::,  +:..;..,,.,;,,;, ....,..:..:,.,;,,;:,::,:t,,;::!;.,. .,:;;;:,,,,,,::::;t!;::;it:,:,,,,, ,: ,L;,,,.,, +...,..,,,;;;;:,,:,,:;::;;:::,,,,,::::;::;;::;,,:,.,. ,;!!!iii!i!;!iiiiii!!t!!!;iiiti!!;;,. ., .. .  !ii;iffLfi!!iii!;;:::::;!iiLCL! LCftitffC8@###@####@8#8@##GGLt;::. .,,... ., .,, ,t:.,,,,.,,,. if; :i,. , ....,,. ..  +tffi;iLLLfi!iLL0CLGLfi::!;;!ifL,;C!:::;;;!fffffLCG0G0##GG####0!!i:,..,...,,,,...,, . ,, .,:tCL..:0:, .. .,,::;:. +tiffiitttfLtiii!!!!::!,,;;:,;CLi.,::,,,,;,,;;;;;iCif0@#CLG80CLLti;,. ;; .. ,,.. .,..,,. .!LLL:,:0;, ,....,,:;:,,:;iffCGGf +i!!!;:!if!;;;t:,,,. .:. ,:.:fi,......,,,,.:t;if;;!!!i!!!!;i!L#@ff; .,.,,. ..,,,,,.:t:.fi,,,..,:;::;0!, ,.;;!i!iCGLt!!iiiLLftt +i!i;;::t;:.,,:,..,,,:;:,:!!!!!!;:.:i!;:::,;i!;;;::ftt;,,,,,,;ifiti, .tttLf!!;; :Ct,:;:,:!:,,,:,,:,i;!: . .,:f!:!;;;i!i;!C0CtLL +;::,,::;;;!!iiitfLLC8@@8#########L!G#GC@Giit!;:ii::!;:..:,.:t:.,:::::,t0CGGGi8L,!0!,::::,;;:;:::;:,,!:. .,:::ti,,,,,:;t:;Lt!iii; +;;;;!!itLLCGG0G088@#88@############ff##Cttti!!:tL!;i:,::;;::,, :fGGL,,:itt!!!;,i!, ......,,,,,,,,.:t, .:;fi;i!...;Ci:i:iL;:LLfi +ttfCCCfffLLfffffLLLLLLLLCCCLLLLLC8##,t#fi;:;!i;:iLC!:;:;ift::;;:,:!!!!!!tti::;,:;::,::,. ,,,::.,tt;, .,!;:;!:...:i:,..:::ii!!f +fi!iii!;;;;;;;!!ittiifLCL0@8Li!;:;i!:iGf!!::tt,.,,:;!:,:;!;,;G0t;, .C#0CCGC,.!:fLfitCf:,,....,,. :G;!,.:;;:!ft;:;;;;;;;;;!t@f;tL +f!:;i!;:,::::::::::::;;!!iiifLLi;;:;tt!!LCL:;!i!i;;;!;!!tt:.,::!L, ,LLfftLt: ,;Lt!!it:......,,,.,,,,,;tLftt!LtifLCLLC0GCfLGLLC0 +t;:::::::::::::,,:;;;::,,,,,:;;::,:!!i!:f0;,,G8GLC0GiGLt::,. .:i, :!!::;;;:. ,,i, .,,......,.,,::::!;::;fi00LtfLCCG088ff@808@# +f;;;;!!!!;!t!:,:;!tfti;;;::,,,,,,,,;i;::;;;,:;!;:;!;;i;,,. ..:!!. tC:,,,,:;:,.;, ,:::,,;:,..,!tfi;;,.,;;f@0ftffLG0LCLL#8L##0# +CtiitfLfii!!::::::;;;;::::::;;:;:::,;i;::!i!::!:,,. ..,;;:::,,:;;. iC;;;:;tLC!tf, .,,,,,,,,::,::;;:,...!!::;ttLGLiii###8CCG0C0# +Ct!!!!;!!i!;;;;;;;;;!!t!;:::::;;!ii;:::!!t!!!!itft!;;::;!it!!!!LC, :i!:::;!ttf80, ,,.,,...:;!;;i!!!, .:!ttiCCtttti!ittiC@#8!i@ +f!:;!:,;fLLt;ifiiiftiii!:::;;:;;itff!::;!ii!;:;;tCGGGf!;;;!;;ttGC,.iLii::!;::!!;. . .. .,,,,:,,:t:,;;!8@8CfLL!G@f;:i!titt!;;L +f;,::,:;ii!;;!;;::;;;!!!!!iiii!;;;;!!!!ittti:;:;!!!iti;;:::,,,:;:.,CLti!!iiti!t;,,,. . , .!. . ,;it08CCGti!i;,;fCCi!;;::,,,,:t +i;,:::,,,,,,,,,,,,,:!itiLCCCCCt!;,::!i;;;;;;;:;i!::,::::::,,,,,;. !;;::;!ittfLGLtii!,,:::;;i, ,:;L88@8!::!!;;:, .i;;!;!:,,,:::;t +fi;;i;::,.,:::,,:;;:;;::;;!;!;;:,,.,:::::,:!!:::;::,,,,::;;;::::. ;!:::,,,,::;;;:;:;!,tttfti:,!LLfCf!,. ,CffGf;,,::it!::::!t!iL +t!;;!;::::,:;:,,:,,:;!:,,,,...,,,.,,,;::,:;!ii!:,,,:::::;;;!i;,,, .:;;::;:::,, ,.:!::;;::::fti!i;. ,;!iCGCf,:Lt;:;!i!!;;;t +t:;!!!;:;;;;:,:;;;:,::::;;::,,,,,::;;:;!;iC0@@f,,,::,:!;:::;;!;;it:.,;::;it!!; :i!C;:!::,;::tC, :;;:;!!!!:::,,ii;::,,;i +t;:::::,:;!;:,,,,!i:,!;;::::;;!;;!!::!LfffLGCtii!!;:,,,,,,,:;!ttt0f ,Li::;!it; !C!L;:!:;:i,.i!. ,::;:,,::;,,.,,,,.,,,,! +t;,,,.,,,,,,::,..:!!!!i;,::,,;:::;:;tCii!!iGi!fGCGLfi!!!tittitiiii,.;t;,,:tC8; ,;:;,.::;,,,:;. .,::,,:,;;,::,,,,.,.......,:! +i;,,,,,,,,,,,,,..,,::,,,,:,.......:L8tiii!!f0Ci!itL0000fC8880GCLCii!L!;ii;iGG, . . .i! .tf,.,ti!;;;::,,.....,,,....:! +ft;;;;;;;:::...,,..,,,,,,:.,,:::;:;ffttti!!!ii!;;;;iCGL0!;!!itLff#@@t!i##!,::. .;. .. . .:i:,,.:L, ;;0Lttti:,,,,:::;!:,,..,; +i!ttti!;:,,,,,,,..,,.,,,,..,!!!iti:,::;;!iii!!iti;::;fL!, ..,:L@i!i@L:G#f::,. ,,,,. .., .!!;iti,;, .,:fLLt!:,,,:!;:,,,...,,; +!;::::,...,,,::,.,....,,,,,,,:::;:,...,,::::::;t!;;,.,,..,,,,,;tt;.;8t.,C#iCG;,. . .;. ..:f;:,,.i!;. .,:,:;;,,,,,,,..,..,!! +;, .,,::,:;,,.,,.,.,;:!;:;,,,,:,,:,,,,,::,,,,:,.. ,;;;!L@##G;;ii:,:;!!tGL, ..;. .t; .i:;t!, .:!;::,::,,,:;::; +::,,:::;;,,..,,;,:;,:;:;:;;:!,::,:::!;;;,:;::!!, .,;!tt;,:!G###0!:i##0!;,,,:!ti. .. ..,:,..; ,t!:;i: :t,,..,tCi,,:,,,:!!;i +::;:,..,. .:,:!;;:::::;:;::!,:::!::;:,:,;:;:;:, .0#####tfLtiiti;:L####Li,,,:if,,,,,,,::t0;.,:,. .CL:.. ,L,,i,::!:,;;;,.,!;!i +..,,,. . ..,:,:!:;;,;:,:,.,,:;,;::!,,:::::;!tGG: .;f##Cf###0:tLLfi;:;iG@:,,,;L!,::;;!!!f0!:;ttti;..,::,:.,!,,,:L: .:!:;;;!i;i +. .!:,..,.,;:;::;:,;,.,,:::;;::::;::;,:!;,!#####, .!;:,!ti!:,:;:,.. .;;,.:,:i. .....,t;;iiittft;:i: :.,ti:.,,!:. .;ft!:;i +, ,.,,,,;,:;::!:::::,.:;iftLCt:!t!;:,,,!;,;####i. ,L:.;;8f . ,; ,,,,,.. ....:;;!!iii!!i;:, .;ii: :,. ... ,,::.;! +,,;:,!:,;:,;,:i;:i::;,,;;!i;!;::::,,,,.,,:!ifft!:,;,.:!:, ;fi; .,,,,.,:::,,.,;!i!i;,!f;,,;;:;!!;:;t!i: ,,.. !: .,: +;:;:,:,,:,,,..,,,,,,,,.,.,,,,i;,;:,;:,;.,fLLL0CLtLftiLft;ti!i;ii;i;tiiCLCCGiii!!!i!!;;tf;!i!;!ii,::!f!, .:..,;:,..:;;:,.  +:,:,,::,,..,...,..,.,:..,...,,!,:!::!;::itt!!!i!ifiifGCftG0ttitLfftLffCLLCLttt!itfft;;!tf;::!ti,,,,,,, .. ,,iG!;;,,fGGCfi:. +,,::.:,,:,.,;,,:.....,..,,,:.,,:,:;,:,.,00::,,,,,,,,,::,:;;:,,:::::,:::::::;;::::;;;:::;:::,,:;:;;:::::,. !; ,t:,.. .:;tLCLLi +:,:,... .:.,;:,!:,;,.;;:;i,,:..,,,:,,!tfLi;:!!!!!!!;;::,::::::::::::::::;;;:!!iiiii!;!;!:!i:::!iiitttLt!!. ., .,;tft +,... .,..,,,;::!!;!!::!,,:,.,,..::,,:####8,:G0GG0000GGtCiCGCGLGC!CGLGGLLGC;CfG88088GGtGi;;;!i!:;!;;iti:::. , ;,.,,! +,.,,.:;::!:,::,::,,:.... .,.,!,,:;,.:G@##i:;;!!;!!!!!;;:::;;:;;:::;;;;;:;;!t;;!!!!iftfLfi::;;;;i;;;;i,.,,,. ..,.. ,!;.  +..::,:;,,!;!;,..:..,, .;,.;,,,;,,:,.,::;:,.;, ..;L, .. ...,,:::,,:it!!f!,,,:if! . ,!;;,,. .!:,. +..::.,;,,::::;.,:..,,,,!:,,!,,;,,,;..;;.;,... .. ..,,,,,, .....,t;,, ,:,.:. .,,,,,..:ifL!, . ..:,::. .!:: +.,,:,,:,,,,.,:,,::,:;:,:::,:,,,:.,,,..,..,.,. ........,.......,,,,,...,,,,,;,,,:,,:,,,, .,.,... .,...::;;,,. :! !i!;:::.,,,:;!!ifLLtfLL; !!!i;:!ftfG88#########8#8###8@#Gftii,... ,,.. ,. .,,..!;,,.:,. if; t!. . ..... ti  +iifLCffCCL!:;;:;ii!ifLLt,,::;,,:ttt!!ifLCLfLCCCC##80######GL8t:;;:. ...,.. ... .. , ,iLL:;0: . .,::::;;;::,:!Li +ftitfi!i;:;,,!:::;fi!;:;!..:,,;::!;:;:!Lt:!;!itLG##CC80008fi!!!!i;,. ,.:,. .:;..,,. .!tt;!8;, ,.,.,,,,:;!ifLCCLC00Lftf@i; +i!;::::, .:...!!.,tL, . .;,;:,.,;i:fii!;::ii;!iii!;!CCC0itG0f00Li ,,....;:,....,LL,,f;:..::,;Ct: ..:;tittitiiGt!itttLtfCCG8it +;:;,... . .,:,,;;:,,,,,,.::;,,!!;:::,:fii;::,,,:;;:!fftffC0Gfif: .i!i, ;Gt,:;:::;::;;,,,;.,;!!. .,:;i:!ti!iC!:,fi;tt:;fti!;i +;;;!!iiittLttf08000GGG0G0@t:;G8f!ii!:,;;::i;:..::.,LC,;ti!!it:,:;::;!,;G0!.!G;,;,,,,;;;;:::!:,:ii,.,:iif;;;;;;Gi,,:iiitt!;:;!itC +CCGG8@88####################CiLGffii;:ff;;i::::;!;!f!,,tftii;, iffG0,,!;,.;;, . .,,,,:::,,::i:,.:ft;!fC;:::t;:;tL000Ct!!f888G +GCCLLLLCCCCGGGGGGG0GLLC8@@###0,:f!;!t;:tLCi:;;:tLCi;;::tLtfttti;,,:!ti,.:,:;;::;;:...,:::;;:,f0!i..,;;!!;;::,:;;iLiiii!!;!fGfi!; +Ci!!!!ittitLLLfLCCG0Ci!!!!!it!,:;,:if;.,:::!;,:;ii;;CG;;tiitCCC0!. :#@,,;,LCLtfCC!:,,.,,,,,.,ii::,,i;ftft!tfCCG8@@C0f;!ifCGGCLft +f;:::::;;;;;!ititiiifLfi;:::;:;fif;;!!!!;;;!!;;!L!,,::,:!!i!ttfGL. ;#0; ,;if;:;;:,.. ..,:,.,:::,;;!iit8CCCG080C0@8LLG8######### +f;,,,,,,,,::,:::,,,,:;;:::!ifL;;0L;,:G80GGGLtGLi::.. .,:::;;:;!i. :f!!, ,,!, ..........,,!i;i;,,;;#8LCG0G@LL##GLC8####@##### +t!;;,,:::!i!;,,,,,,,,,,,,,:!!;:,::,,:!!!;!!:;t;,. .,;;;;:ti,,;:. ;tit!:.:t. .:,,,.::.....::,,,,,::;fCffLtCL8GLLG@@#8GGCG088@# +CCL;,:;iiii;:,,,,;;!;:;:,,,,!!:::;!;::;,... ..,::::::,::::;i!,:i;. i0GL0!;f:. ,,,,..,,,,,,,,::,, ,!:!;tLGGfiitff#@GfffLfLC00CC# +ti!;;;:;;;;;;;;;;:::::;!;;;;;::!tfi;;!!ti!!;:,,:!iti!!!iti!!;:;!f. ;fiiifLG; ,..,.. .:;;:;!iLf..:!C8@0fCfi:;!f00Gt::;;!!iti!iG +fii!!i!;i!ifitCf!:;!;;!;!ifLi:::;!i!!;!!tGGGCf!;;;;;;iCCCGCft!tL!.,i!:,:;Lt, .,,.:,.::;;f!0@#8!iL0ttf;;!!;:,,,,,:;!:,!C +LLf;;tf!;;!!;!ii;;;!!!!!!;!ii;;;!ttfi:;:!ii!!tt!!,,,::;;;!!!!ifC: !8Cti;;tf;,::,.,..:.,i. ,,:;ii80!!ii:.,ift!;;,,,,,::::,,::::;t +!;::::::,,:::;ii!tttfffi;:,::ifii;;;;;;;ii:,:;;;::,,,,,,::,..,;!, tCffLfttCfffLt::!:i!;i,.,L00@@!,. ;t!:.,;;!i!:,::;i!t!:;::;!;t +;,.,,,,:::;;!:::;iiiii;::,,,,::;::::;!!!!;::,,,,::;;;;::::,,..,:. :;;::::::::;:;;:!;;i!!::itifC;. ,G8Ci,,tff!::!ii!;;!:;;:::!f +!,,:!;,,,,::,:,,,,,,,,......,,,,;!!!,,::::;!!!;:::;!!ii;,,,,,.,:: .;i;:,,, :,:i:,,:,,,:fff:,. ,!iift::;:,:i!;;::,:,:::,,:i +i!::::,,,,,,::!:,:;:!:,..,,::;;;::::,,:!!tC08@!,;;:::;;;;::;;::;!i,.;f!;i! :f!L!:i:;,!::tf. .,:;;;;,,,.,::,,,,,,,,,,,,,! +i!!!;:,,,:!i:::::;;;::,,::;;:;:,,.,,:;C0CCCC0Gi;!;;:,,:::;:;!!iifG, ;;;!Li ,C;it:i;;,:i,:, ... .,,:;:,::,.........,:,,,...,; +i:;;::,,,,:i!::!!;:;!;;;;::!::,,,,,,!8Gtii!tt!iLCCCfti!!titttiiii;.,!tttC; .,,,,,,,;..,;i .it;.:;;:,,,,,....:,.,...,:;:,,,,: +!,,,,,::..,:;!!:;:;;,,.,,,,....,::,!8Gtii!!iLLtiitfC0C0f!080GGCCGttL00C##; . .. . .!: ;f: .:Lfii!::,,,,:;;;,:,..,,..,,,; +!:,::,,,,..,,,,,,:::,..,,,,:::::::,!0ftttt!!!!;::;;!iCCfL;;!!ifLL8#@fit@#f, ,,... , :!,.,,:!. ,!CGCf;::,:!!:,,,...,,,,,,.,; +i;:,::...,,.,[94m:,:;;;;:.,;!!!t!;;:::::;!;;itti!;;!ii;::;fC!.....,;@8!:i8!;##t;,,.,. .... ::t:!i..:,...,;;;;!::::,,,,,...,!;:::,,! +!;,,,,,,,,....,,,,,,,.,;;::!!::::;;:..,,::;::;!tffi!:.,,,,,,,::iLt: ;C:.;#@tG!:, ,: .ii,..,:!L;. .,:;;::;;:,:,:::::::,,; +:,..,,,::,. . ...:::;,,,,,,,:,,,,::,,,,,::,,,,:,,,.. :!!;t8##8i;ii;,,;;!!LC;..,., ... .t. ,!!;;!: :,,,,:ft:::,,:;!;:;!:::; +::::;:.,..,,,:,;::!:::,;,,;,,;,,;:;;:;;:,;;;,,.. .,;iit;::!G##8i:!###i:,,::;if,..,.,:L!..., iC;,. !f,!:,;;,;;!,,:!;;!:,,!! +::;;,. .:,:;:;,,;:,;,;;:;::;,:!:;:::::;:,!!!;,,.. .,@#####fLGtiii!:!####8t,;,,iL::;;i!0f:;!;:,. ,!i...:::,;;L, .,i!;:;!i!;,,,;! +,... ...,,!;:;:::,,;,::,i;,!::!,,:,,,,,,,;;!fCf,. .!@##Lf###0:fCLt::;!it:,;,:t!,,:::f!;ittttf!,::. .;,:t;,.,:i, ..,ft!;;;;!!! +:,.. .,,,;::;:;!,::....,:::,,::::,::;;::::i####8, :i;:,iit;,,:;:. , . ,,,!. .:,;!!itffti!;,,. ,!tt; ::, .. .,,,.,:;;;! +,:..,,:!:::,;:,::..,,!:;ii;,,!;,:!:;ffi;!!G####!. iL,,,L8: ;,, . ,,,,.,:,.,:;!;!!!;!t!;!. .:;.. :; .:i:! +.,,,;:,;,,!;:;::;,.:!ifttt;,;;,,,,,,:;::;itfLft;,.:,.,i;: ,;!!. ,:,..:::,,,;!!!;;fL;:;;;;!i:,!tLt; ,..,::,,.:!!;, .,:! +:!;,,;,,:,!i::!::;.,:;;;::::,,,,,,,...;:;LG0G00CiiLLiiCL;ti!;:;!;i;ti!LLLCG!;;;!;;!itti;::if!,,,:;:, .. ,,Cf::,,tC0GLi;:,,. +::;,,;,,,..,.,,,.,,.....;,;t;,!:,;,,::,:ittiiiftifiifLGLtf0GtifffLfLfiLLfLft!;!!itti;!;:,,:;;:;:::::,, .i, :i,....,:!L0GCCL!i +,,::,,..,,..:.., .:. ....,,:;::!::!;,,.,00:,,,,,,,,,,:::,:;;:,::::::,,,::::::::::;;:::,:!:,,ittitttLfi;... : ,;!fCLLf +:,::.,:..;,,::.....:..:,,:,.,;,,:,,,:;tffi;::!;!!!;;;::,::::::::::;;;:::::::;!iiiiiiii;!i!!!:;!!ittf;;i: ,. .:,,,::;! +,..: ,..::,,;,,;::;!:;i:,:...:,,,,,:####G:!CfG00G0GGCfCiCGCGLGC!CGCGGLLGt!GtL0808808G0t;!!!;;i;;;i!,,,,. .,,. ,i:. .: +, .,...,..:,,:!;!t!:;,,,:.,,,,,;:,;,:0#@#f::;;;!!!!!;:;:::;;:;;:::;;;;:;;;!::;;;;!!!!tff;;::it!!fi,,,:ii, . ;!;;:. .;!::,  +:..:;,,;,,,;,,::,:,,.:...,.,!:,::,,:,::;::;, ..:t. .,.... .,,,...,;,::, .!fL:. . ..,,,;,.. .;it!: +:,,,!,,;;;!;,.,,..:..:;,,;,,:;,,:;,.:,.:;,,. ......,,,,,:,. .,....!t,,....;:,::,,:, , .,::,., ,:,..::i!,!. ,it; +,:,,::,:;!;;;,,:,.,::,::::;:,::,,:,..:..,. .. ........,.....,,,,,,. ..,,,,,::,,;,,,,,.. ..,,::,:::. ,:,::;;;!;;:,. ;i ::, ..,:;!!ifLLftLfti ,;;;,:iiittL0@#########8@8####@#8Lftt,..... ,,,. .. .,,.,!:,.,, ,tt it. . ... ,t; ,, +tifLLL!:;::!ti!!fLfi!, :!:..;tit;;;ifLLffLCCCC8#80@#####0L8Lt0:,::. .. .. ... . ,tL;:0: . .,,::::;;;::;!tifCf +fiii;:;,,!::::t!!;:,::, .,:;,;!:;::!f:,;;;;;iC0##CLG008@Cttti!!!!;,. .,,. . ,i:.:,. .!i;;Ct, . ..,,,,;!tfLLCLCG0GfL###!t#0 +:;:, .,...;!.,iC, .,. :;:,.:i;;tit;:,:t;:i!iii;;tCfL@t!08t;!08Lt ,...;::..,...iCt.if: ,,,;tG; ,;!;titt0L!!tfttitLf0##L;C#C +,.. ... ,:,...,,,...::,;ii:,:,,;t!!:,,,,,:;::ffttttffLC0LCif: .t:.:GL,:;;:,:;;:;i:,;,,;!t, .,:!:;t!iCi:,!!:!i::ti!i!;LftL +:!!!iitiitLCLCLLLLCGC0Cf!:!Ct!ti;,,:;,:i:: .::.:Gt,iti!!!!!fL;::!!!!:,iC:;G!,:,,,,;;;!;::!:.:!f,.,:iLi::!;LL:.,;!ittti!;;!iL@CfL +G888@#################@##0i;Lffit::Lt:;!:,,:;!;!f;.!fftt!;!i;, .L@##f,:!::!, ..,:::::,.,:i;,.:tt!t;,,,:;:;;iG0800Gt!i8@#@L;! +0CLLCCCGGGGGGG000CLC8#@###Ct,!;;!t;:fLL!:;:,tCGi;;:;fLfftiiiff!;:;!;:,i:,;;;:;;:,..,::;;;:,:GL!,.:;;i!;::::;i8tiii!ii!!itti!!;:: +CiiitiifLLfffLGGGGtiiiiitLLi..,:tf:,,:::!;,,;ii;;CG:;ttitCLffG0t, .,,:,iCLffLGt:,,..,,,,..:i;,,,iiLiLLLG08@#@@@@f;!tfCGGCLLLftt +L!:;;!;;!itttttitfCft!::;;;;!it;;;!!!;;;!!;;!Li::;:,:!!iitfftffii. if, :!f;:;;:,.. ..,:,,.:::,:;:iif8G008@GG@00@@88############ +t;,,,,,,,,::::,,::;;:::!iLL;t8C;,:G80GGGLtCLi::.. .,,::;;;:::;;i..f8! .,;. .,........,:;f!!i,.,;#0CG800L##GLGG@###@8#####@## +t;,,:;;;::,,,,,,,,,,,,,:;!;::;;,.,;!!;!i:;f;,. .;;:::it,,,,:;: ,f0C:,.i. ,:,,.,:......,,,,,,:,:!LCti###LLLCC##8GCCLCGCCCC8# +t::;tttt!;,,,:;:!:,::,,,,;;,,::!;,,:, . ...,,:::,,,,,,:ii::;:;f; .L8Gf:t;. .,.,...,,,:,:,,:,. .!;!!fCtttfttL#@GiftftifCLtiiif8 +t!;::;;;;;;;;;:::::;!;;;;;::!ifi;:;;i;;!;:,.,!iit!;;!ii!!;;:::!Lf !ftttLf .. ... ,:::;!!fL,.:i0##GLCi:;tLLLf!::::::!!!;;!;!C +fi!;;;;ititCfi:;!;!i!!ifCt;;:;!!!!!;!iG0GLf!;;;!i;;LCGGGftiti:!G; ,;:;ifL; ,. .:.,;!!Lf080i!L0GLt;;;:,,,,,,,,;!:,:;:;f +t!tfi!;ii!!!!;::;;!!!!!!it!;!;ittt;;:;itiitfi!:,,::;!!!!!;iti!tC:.tGi!iiL!::::,.,.,,,;, .,:;iL@0!;i;,.!fii;;:,,,:::;::,:::::,,;f +!;;;:,,,,::!;;!!!ttti;:,::;ttt!;;;;:;!t!,,;;;::,,,,,,,:,..,,,,!t,.C0Lfi!LLfLfLi:!!;f;;!,,iG00@i,. ;L!:,,:;ti;,::!tiii:;;;!i;::;L +;,,...,,:!!;;;tfffft!:,,,,::;:::::;!!!!;;:,,,,:;;;;;:::,,,..,,,:..!!;:,:!::;;;;,:i;i;;::!iitG;. ,08f!.:Lf!:;!i!i;:;::;:::;!i!f +!;;:,.,::::::::::::,,,...,,,,,;!i!,,:::,,:;;!!;:!!iii;,,,,,..,.:;..;;:::, .!,:!:;:,,,,:LfL,. .;iit!,::,:ti;:::,,,:;;::,::;i +!:::,,,,,:;!i,.::::,,,.,,:;;;;::::,,,,:;itCG8@i,:::;;;:::;:,,::;!t,.i!!t: .ii!C!!;,,:i::C: .,,::::,,,,,,,..,,,,,,,,,...,! +i;:,:::;!::::::;;:,:::,:;;:;:,,..,,,,;f0CLCC00i;;;;:::::;;;:;!i!tL,.i;iG: iC;f!:!:;:i;:;, ..,..,,,::,,:;.........,,,,,,....,; +t;:,,,,,;t:,;;;;::;;;;!::!;:,,,,,,,,;00tii!tCiiLCCCfti!ititiiiiii;:!LLLL; ,,:,,.,,,,.,i; ;C;,,!;;::,,,,..,,,,,...,::,,,,,,,; +!:,:::..,;;;;;!:;;,,,:,:,,,.,,::::;;C8fi!!!iLCfiitfLGCGf!C0GGGGG0CC@#@0#0, . ,. . ::. ,C:. :tCLfi;:,,,:;;;;,,..,,,.....::; +!:,,,,...,,:,,,,,:,...,,,,,,:::::::;0Cfttti!!!!:::;!!fGfL!;!!!tLC8##Lit0#L:. . ,. .;:.,::!, .,tCGf!::,:!;:,,,..,::,.....,,; +!:;,...,,.,,,,:,:::,,:;;;i!;!::::;,:;!;;!tti!!;;!i!;:;!Cf,....,;8@!,!8i:C#0!,. ..,. :;i:;: ,:,...::::!;::,,,:,,,,,:;:,,,...,: +;,,,..,,...,..,.,,,.,;!;;!i;:::;;;,...,,::;::;iifLi!;.,,,,,:,;;iLt;.:t:.:8#tCi:. :, ,f;. .::it:. ..,,;::;::,:,!;:,::,,..,; +:..,,,:,,.,....,,,::,,,,,:::,,,:::,,,,,,::,,,,,,,,,. ,!!!f@##8i!ii:.,:;;;LC!. . ... .i :!!;;!: .!.,,,!L;::::,:i;;;!:,:,,: +,,::,,,.,.,,,:::;::;,,,,:,,::,:::;::::::;;;:,,. .,;!tt!;i!f##0!:!###i;,:;::if, .,,;C,.,,. iC;,. .!;.i:;:,;ii:::!!;;:,,::;; +;i:,..,.,;,::,::,;:,;::;::,,;::!:::,:;:;!;!t;,,. .,,8######0#f!i!;,;L@##@C:;,:iL:;;it8;:tti;,. .,;:.:,!:,,,!i...::,,;!t!!:::::!i +.,... .:,:!::,,:,,;,,:,:!,:;,;:,:,,:,,,,,,:;!LLi.. .:L#8LL###8:fLf!,,:;!i:,;::t!,.,:f;;tiftft::i;. .:.:fi:,.,i, ;i;::;i!!:;i +. . ...,::;:,!,,;..,..,,,:,,:,,:,::;;::::;i####C. ,!:,,!it!:,:::,., ; ..,:. .,;;!itttit!:,;. .;it, ,.. .:. .....,:!;::! +,....;::;,,!,,!,.,.,::;!;:,:;:,:;:;tti!ift@####; :L. ,!@f. ;;:, ..,..,:,..:;;;!!;:if;ii. ,,.. ::..,,, .;;;;; +..,:::;,:;::;,::.,:!tftLL!,!i,:,,,,::::;!tffLfi;..:,..!;: .:;;; ,,,,,,,:,:;!;;:;tL;:!;;;ii:,!ift! ,:.:i:,,:tCL!:,..,,:! +;,,!:,;,:i!:;!:;;.,;;;!;;;::::,,,....:!:!C00G88LitLLiiLC;tfi;:;!;i;ti!LLLLC;:;!;;!!itt;::if!,,,:::, .:. .,Ci,,.,;f00CLii;;;, +;,,,;,,,,,:,,:,,,,....,:,!i;,!:,;,,::,,:ifttifLttLiifLGftf80tifLfLfLfifLLLfi;;;iitii;;::,::;:;;:::::,. .!, ,;. . .:!CGGCGC0f +,:,,:..,. .,.., .:. ....,,:;::!::!!,:,.,00:,,,,,:,,,,:::,:;;:,::::::,,,:::::::::;;;:,,:!::,;iiitftLf;!:. .; ,:;!fttit +,;,.,:..:,,:,.....,..,,,,,,,;,,:;:,,,!tffi;::!;!!!;::::,::::::::::::::::::::;!iiiitiii!!!!i:;!!;!it;:i: :!,,.,,,i +,,:..,,.:;,,;..,,,:;::i;,,:..,.,:,,,;####0:;LC0G0G0CCCfCiCGCGLGC!CGCGGLC0fiCif0008888C0i:!;;;t;;;!i,,,:,. :::,, .;i;,...: +..,. .,..:,,,;,;ti!!;,,;..,,..::,::.;8#@#f,:;;;!!!!!;:;:::;;:;;:::;;;;:;!L;,::;;;!!!!!t!:::;fi!tt:,,,iL: . .:!;:: .,!!i!,. +,.,:,.:,.,;:,!;::!,,,...,.,;:,,;,,,:,,:;::,. .,ii. .,. .. . ......,,,,,, ;it!, . ...,,::;,, .:ft;; +,.,;:,::::!,,,:..,,..:,.,:,,:;,::,,:,..;,.:. ........,,,,:,,. ....,i!,.....;:,::::::.,, .,::,,,, :::;,,,!t:;, ,tt! +:,,::::;!i!;,,:,,,:,,:;::::::::,,:...:..,. ........,.....,,,:,,. ..,,,:,::,,:,,,,, .,,,:!;;:;: ,,:::!;;;!!::: ;t . . .,,:!itfC00GCL; i;:;;itfC08@###########88#####@0Lii:,:...... .,. .. ,,,.:;,,,:. ;f; L; . ..,,,...,. !i.  +,.. ..:;ifLLfLftt!!t.,t!!;tt!!!fCLLG#0CCG#8G0@0G088####@@iii:,, .. .,, ... .,...;fC;f0, , .,,,,..:C;:;:! +i;;;;;!::;;;!ii!;!tti!, :t,,,t!!;:;::!!!;ifLG@0##GL@#G0#0ft!!G!!i;: , ,,. .... ,;t,,:,.,!ff;!8;. . ,,:::::;!iffi;,:!;;!iL +LGfLLti;,:;:::;i!!i;;::..,,,,;f;:,:;;;,,:;L!ifLG#CtCCLC#C!iit!iGGGi ,..::. ::,.,,LC;,L;.,:;:;Gi, . :,;:,;tfCCLCfiittftttft!t#80 +i!!;;,,;..:;;,:Lt:...;:: .:;;,,;;;;!Ct,.,i!;;!ti;::ifLLLft0@0f:;!;, .!:,;::,:::,::;:,:!,,!,!;i; .i::it!LGiifLtGCC00@##@f##CG +;,.. .. .:!, .. ,:,,:!i:i;,;t;;;;:,,,:::,tfiiiitfLt, .:!ii:.iC,:Gt;iii;:;:::,,,:,,:;!, .,:;,:ti!tGf;!f;!fi!tttLftCLfCC +:,,:::;!;;!!iiittiiiii!:::,,;;ti!;:;:;iti:,.,,.:Lf:iti!!ittf!:. ;8#8;.,,,:t:,,:,,,,,...... .,L:.,,ifi;;i:!Gi::!i;;;;,,:;!it8f;;! +ffCGG0@################8GG@!,iLti!:LC;;i::,,!;;!Lt,;ftii!!!itft:,:;::,. ... ., ..... .:t!;,.:;;!C:;:;L;;tfCCfi::;iC080!;,,! +0000088000GGGG0000CL@#####CL;.:;!i!;ttti::!:;fGCi;::tLfftiiitttt, ,..i,:i;;:i;:,,,,:,.. .tG:;,:;:if::..,,:ii;;;;;:;L0i!!:,.,;; +GfttffttLtttttfCCCCttttitti:, ,;f!,,,:;!!:::!i!;fC:;ffffCLtfCLi! .i:. .ifCtfLGi:,...... ,:,:,:tLC!!t!iittfCCft!;!tC0GCftttii!; +L!;!!ii!!iftfLLLfLLLtfi;::::;!!;;;!!!;:;;;:;;ii!!ti,:ii!itfftffi: ,GL, .:;!:,:::,........,,:::!;:;it@00@###CG###Gf8###########@# +t;:,:::,,::;;;;;;;;;;::;;it:!00t;:f00GGLLifLf;:,,....,,::;;;;;!:. ,C8!.,.i, .:::,,;,,.,;ift;::.,:G#0C00@Gf##G0G8############## +t;:,::;;;:,,,,,,,,,.,..,;!:,,;;:,,;!!!!t;;C!:.. .::,,,;!,,,,:;: ,LGG!,:!. .,,,,.,,,:::::;:,. .!::iGCttL0LLfG@0@80GCG0880GG0@# +f;,:!tfft!:,::::;:,,,:,,,::.,,:::,.,, ...,,,.,,:,,,,,,;;tf;;!;!Ct ,L0Li;G; ,,.,.. .:;!;!!;!;. ,;iit@GLiitti8#0ftffLfLGGLttttf@ +t;;::;;!!;;;!;:;;;;;i!;!;;;:;itt!:;;!;;!;:..,!ttt!;;!iiii!;;;;iC; :Cft!ift . ..,,,:,,;!,:!0@@8fCf!:;!LGCf;,:;!;!ii!;!;;!G +fii!;;;!tiiLLt;;iittiitfCL!!;;!!!!!;!iG0GLt!;;!it;;LG88Gftiii;tC:,i!;:ifC;. . , .;. , ,;!t8G@Cf!tG8ffi:;;;:,,,,,,:!;,:;:,;L +f;iLi!;!!!!!!;::;!!!!!!!it!!!!!ttt;;:!ittitfi!:,::;;!!!!!;iti!ff,:0L!;iiGt:,:!,,::;!:;:..:;L8@8;:;;,.:tfi!;;:,,,::;:::::::::,,;f +!:;;;:,,,::;;;!!!iiti;:,:,:itti;;;;:;!f!,,;;;:::,,,,..,,..,,,:!i.,L0LfiiL!;iiit:iLtLii;,:fCtGC:. ,t!,,,:;ti:,::!tit!:;;;!!;::;L +;,,,..,,,;!;;;tfffft!:,,,,::;;;::::;;!!;:;;!i!;;;;;;;::,,,...,,:;::;;:,;!..,::;:;;;::,,:Ci!;t, ,08f:.!Lf;:;!i!!;;;::;:::;!!;f +!;;:,..:::::::::::::,,...,,,,,;!i!,,,:;!!tC0@@;:;!iti;,,.....,.:CL..::::, .t:!L;!::.,::;Li. ,!i!i;,;:::i!;:::,,,:;:::,::;i +!;;:,,,,,:;!i,,:::;,,..,,:;;;;::::,,,!G0LfLLCf!;!!!!!;::;;;:,,.:!f..t;!L, .tL!C!;;,::t,,t, .,,::::,;,,,,,.,,,,,,,,,,...,! +t;:,:::;!::::::;;:,:,,,:;::;:,,..,::!8Gti!!iL!!fCCCLLtttLCLLtiiii;:iffff;. ;f;!:,;,;,:,:,. .::,.,,:::,,:,,........,::,,,....,; +t;::,,,,;i:,;!;;::;;;;!::!;:,,,,,,,;08fiii!!tCLtitfLCC0LtC0G00808G0##@8#@: ..,... . . .i: .if,.,ii!;::,,...,,,,:,..,::,,:,,,,; +!:,:::..,:;!;;;:;;,,,:,:,.,..,:::;:;CLtttti!!ii!;;!!!iCLC;:;!!ifC##@LttC#G:. ,,.. ;:,,.:L, ;iGCLf!::,,:;;;;,,,.,,,.....::; +!:,,,,,.,,,:,,,:::,...,,,,:::::::::::;;;;!iiiiiitfi;::;L!, ...:8@!,!8!,f#@!,.. ..,. .;!;!t;,, ..,;fCLi;;::;;:,,,...::,....,:,; +!:;,...,,.,,,,::;;:.,;!!;t!;!::::;::,,,,,,::;;iitt;:,.....,::;;tLt;.::, :0#tCt:. ,,. .:f;,. .;!:. .,,,;;;;::,:,,,,,:;,,,,..,,; +;,,,..,,....,.,,,,,.,;;;:!!::::;;;,,:,,,:::;,,.... ,!iiL###8!!!;,.,:;;;fC;. ,: !i ;::!;: .,,..;!;::,,,!!:,,:,,,,,; +,..,,,:,... ...,,:;:,,,,,::,,,,::,,,,,,,::::;:. . ,:;!tt!;iiL##G!:!##0!:,,;::!f, .,,, :. :i;;;: t!,,,,t!::::,:!!;;!::::,; +,,::,:.,,.,,,;::;:::,;,,:,,::,:::;:::;:;!;;::,. .:,:8#####@0#f!ii;:!0###8t,;:,!C:.,,:tG:,:,, ,Cf,..,:;.i,i,.,!t:;:!i!;;,,::;! +;;,. .,.;::!,,;:,;,:;:;:::,:;::;:::,:;:;!:,,,i!, ..,;f@0Lf###8:fCLi::;!iL;.;,,if:;;!t8!:tft!;,..,:,.:::i:,.,;:..,,,.,iti!:,:::;i +.. .,,,;;:;,,:,:;,::,!;,:;:;:,:,,:,,,,,:;tfG0! ,;:,:!ii;:,:;:.., , .,,!:..,,t;;titttf!:!t, ..,tti:..!; .;:,,,!!i:;i +.. ,.,:::;:;!,:;.....,,,,,,:,,::;:;;:::,:@####: ;f.,;!8i ::., . . .:;;!!iii!ii;;;. ,;t: ,. !; ..:!;:; +....,;:;:,;;,,;..,,:::;!::,:!,,;;:!fti!ii;!iii!,.,::.,!;:..:t!; ,,,,,:::,,..., .;,,.,;;;!!!:;Liit, . .. ,:,..::, .;;i; +.,;,,;,,;;:;,,:,,:;itftft,,!:,,,,,,:;;;;!ii!!itL!t0LiiGL;ti!;;;!;i;ti!LLCCG!!i!;;;iLt;;!;;ii;,!;ft!, ;,,fi::,;fGLi;,,.,,; +:,::,::,!i::i::;,.:;;!;;;::,,,,,,.,..!i;L0CCCGGfff!tfCLftf0GtitLfLfLfifLfLLttLCLfLLCffi:,!tf:,,:,:,. :; .!C:,,,,;tG0GLtt;:: +:.,;,.,.,,.,,,.,,..,..,::ii,;!,,!,,:,,,:G0!:;;;::,..,::,,:;;:,::::::,,,,:::::;;;;;!;;;::,::;;;!;:;;:,:. .; :, . .:!LGGCGCL +:,,:...,..,..,..,,..,...,,::,:;:;i;,:!tffi;:;!!!;;:::::,::::::::::;;;;:;;:;:;;!!!!!!;;;!!:::iiiifttf!;!. :: ,,:;tiii +::..:..:;,,:.........,..:,,,:,,;,,:,:####@::G0000CGLCCfCiCGCGLGC!CGCG0CCGf!GtL80G0GCCfCi;!i!:;!;;iii:i;. :!,,..,; +,:..,,.,;,,;,.,:::!:,!!:,:...,,,,.,:;G@##t::;!!!!!!;;:::::;;:;;:::;;;;:;;;!!;;itifLtffi!;;;;;!i;;;!!,,::,. :::,, .:!!,,.. +.,. .,..,,,,;:;tti!!,,::.,,..,::,;,.,:;;;:,,, ,... . ,!! ... ..,,,,:;;:::it!!fi,,,:ft. . .;!;;, ,!!i!, +.,:,,:,,,!::!;:;!:,,,..,,,:!,,:;,,,..:;,,!:., .. ...,. .,. .!t,.:;,. . ......,,,,,..:iti;. . .,:;:;,, ,tt; +,:;::;;:::,,,::,,,..::,,;,,:;::;:,,,. .:.,,. .........,.,,,,.. .,....:; ....,::,::,,::,.,. ...,,,. .,::,;;!i;;:. ;i ,,,.,,,:;:::,!!;fftC8@########@#8#####@88@#@#@@@###0Li;:::,,,,,... .. .. ,,.,;,,:.:tt!.: ..,,::,,. !t, ::;,. ,!!,  +,....,,,,,!;!;ti;!iLCLCG#G0#@###########GG###888GG@88G8i;:,...,:!;,. .. . ,ftt:., ...,:,..,!G!,. ,:ii; :Li,  +:,.....,,;;!i!;;i;;i!!!ffLLCG00G####8@@#CfG##@#8LLCCLLL8t!;;,.:G8Lt., .... .;:,,,;LtL: .....,:;;:, ,:0f:. ..,::,,::;ti!,; +,,.... .:0CC#8:;f;;::::!ftitGCffC#0CLC#GCCG0088@GC0Gfff@8L#0!!;Ctf!..,,,. ,Ct,i!iiGG,, .,,:,. ......,:Cf,:,:;!;:!G0;;;::i +:,..,...;GCfCt:,if;,:,,;t!;!itttffffCCCCC8#0L8###0CGfi0f0#Ct8f,,:,,. ,Ct,.,,,.:::,,::!0i.. ..,,,,,,,;!!;:!t!!,,;!tf@@!:ii;;f +;;!ii!!;!ii;:;:,:f::!;::i;;:!fi!iii!iCfffC@GLCG00@Ctiii!;,.,t;, ,,.,,;t:,,,,,.,. . ,fG; . ..,,:!ttttt!;!!;;iLL,,:;iC8Gt!!!!!!tf +fLG80Cttff:,:;i:,,::!t;,;!;:;!;;;;;;;;tiitttttLfG@LG8i;:. . . ,..::,,::,,.,,,,,....,!C: ;;ttifLLfiif!i;::t0!::;tL8Ci;:ifLftLft +LfLfft!!!;;:;;::..;!;:,.,!:,:;!tt::f::iti!!iiiitttt#0Ct0Gii!;,:;,..;;!ii;:::::::::.;,;t,.,!!Ci!!!;;::;!ittiGi!!iCGftt;,::;;;!i;; +t!;;tft:,,:,...,:.,i;,,;;:..:CCtC!!i;:Cftti!iiiiiiiG0GG##CC#L;Lf; .:,::,,,:,,,,....,;t;,,!iCi!t!iiitfC#####CfG#@Ci!G8L;:,,,:t::i +!i!!!;:,......,::,.,;!itC;..:f!;;fLt:,iLCLfttiiifL!i@@fL@Lf#8:::;..,. . .... . .,CGi,.:i0!iLffCLG0#####@08Gfi!!LLt!;!:,;C;,;! +:iG!. , ,.,:, ,i;:;f;,:i:;;:,,:;;:,:Cftiiiiiitf!t@@it8fi#i. ...,i;;!;,.,.,. ,:;,,,;Gi::i;!!!!iitfLCLL!;;:ffi;;;;:::Lt:.,: + :;;::,::,,...,..:ffi,,::;;t!:..,, :C:,ffi!!!!ttfL!!8GfC8fi!, ., ,LffGL;,.... ......,::!Lt!,.,;;;;:;!!L8G!::!:i!!:;fC!;:it::::: +GGCCG0@@@8Ctit:::,;;:,,fL;;i:,::!;;!f:.tLftt!!!iii!!0GfL8C!t: ;.,;:::::,.......,,,!;!;:;:,;;:,,:::fGG!i!::;!::;!;:!!:,!f:,,tt: +##@@8@####@##Li!;!,,:ti;ifLt::;:iLCi;;:;LLfLfttitti!#0CiGG!f!;:,,,;: ,::::;:,..,:;:,,,,;:;G#fti!iLCCCfttttt!;;;;:,.. ... ,,  +8G00GCCCLffLC0Lt!:,,iLt,,,:,;;,:;i!;;GG;;ttitCLtfCf!80!;!!!ifCGt,,L: ,,,:,,,,,::::::,,.;,!8#8###@##############@00GLi!!;;;!!!;: +8GCLfCLi;;::;!!;;!i;:;;!!!;;;;;;ift,:;:,,:;!!!itiif;Lf:,::iffL#8,,,, ,,.,.. .;!!;!i!fi:!tf#8C8G##@###################@8008@###8 +t!;;;;;:,,,:::;,:G0!..;G0GGCG!fCt;,, .,,::;;;::;;:;;;;!!;!!iCf,,!, . ,,,,;,,:;!##f@##LL80G00GGGG0000080G000GG8@#8GG0@#@ +i:,,,,..,..,,;,.,;;:,.,;!;;!;:;!,......,!!!iiL!:!!;;;iffii;::!ft,,C: . , : .;. .,:!t@8CLGLtiG80f!iftiiiiiiiii!!!!!!!iii!!!!iL +i;:,:::;!!;;;;:::::!!:,,:,,,,. .,;;!!;:;!iiffi;:::;!!!iii!;;;!L!:,i:,;!,,::!::t,.,t08@i;8#tit!!ii;,::::,::,:!;:::::;::::::::::! +fi!;;!tLGCLLfffiititi!;!!i!ffi;;;;iitLi!LLC00@0:::,:!:,,:,:;!!;tG,.;!!!!!,!t!t!i:,ttitC,.:i8Gt;:,,,,,:;::,,,:::,,:;::;;;:;,:;!it +LLi;tfittitiifLtt!!ittfti!!!tCGCft!::;iGtiiitLt;;!!!!!;::::;;::iL, ,..,.,,:;::,,,:Ctt, .;!;ii;:,:!iit;:::;;;:::ii:,::,,,,,:ii +!!!!!ii!!!;;:;;;;!!iiifi;!;iti!!!;:,:!Gt!;;:;ii;itfLLCftittt!!iLi::;;,::;t,!;,,,i:;C: .:.,fC!:;iti!;i::;::;;;!;;:::,,,,,,::! +ttiffLCCCLi;:,,:ii;::;;;:::!i;;:,,,,:L0tiiii!;;!!!!itff0GtLtfCCGGC@#@C!8#t;:i::,;i:;, .!:,::::i!;:::,,,:;::,::::::,,,,,,::;! +;::;!!!!!;:,,..,::,,::;!;:,,::,,,,,,:!fitfffi!;;!!!ii!iifG!,:;!!L8#8fitiC#G;:,;..,,;. ..,.,:::,,,,,,,..,..,,,,,....,,,......,,,; +:,,...,...,,,.,,,::;:;,,,,,..,,,,,::,:,::;;;;!iiffLCLti::;,....,;8G:.i0;,i#8;.. ;: ,Ci..ti::,,.,,..,.,.,,::,,,......... .. ,; +;!,,:;:;:,,,,,:::;;:,,,,,,,,,,:::;!!:,,,,:::::;::;;;::,. .:!,:;iti:.,,, ,!fCt:. ,:,..:L, .;tft!;:,,,,::,,,.,,..,,,,,,:,,,,,,.,; +::;:;;;:::;;!;:;;;:,,,,.,,:,..,,,,,,::::,,;ii:. ,:. ,:;;t8##@i,. ,.,:;!Ct,.;;:;i;: ,tCLti!iii;:,,...,,,,,.,,,,..:;::,,: +;:;!;::;;,,,:,,,,,,.,,,::;:,,,,,,,..,::,.,::,, ,C!...:;!t;,,iG###i!C8t:, ;::;fi..!!,:. :,;,.,:::;!f!;::,,,,,;:::,.,....,,...,; +i!:,,,:,,.........,,,,,:::,,,:::;::,,,... .,..,.::;f:f#####LtLti!!;;8###0;.,;,,if. .i; :!!;,. .,::,i!!;::;!;::,,,..,,,,....: +:,,.,,,,:,..,:,:!;;;;:::::,::,:::::;:,...,,,,..,,,,itf#########!;fti;;i8#0..;,:it, ..;, ,;!::. t:.,,;:;;;itfi!!:,:,..,.....: +::,.;;;;:...;!!!!t!:;:;;;;,,::,::,:::::,,::,,. ..,:it!ittt!:,:;;,...,!;:.;;,;;:f.... ;Li. ,,,.;.!..!;::;tii;:;::,:,...,; +:....,,,,..,,,,,:::,,,,,:,,,,,,,:;;;:,;;,:;i0f! .L;..tC,:: . ,f;. ..,;0;:i!;,,.. ,,, .!,!;:,,.,,,. ,ii;:,!:;;;:,,:; +,. ,,,;;::;,,,,,:.,::,,:,:::,::,:;;;:::,:t####G. ...,:;;.::!@C,. ..:::,,:,. . .ii:iit!i!,,i,.. ...,ttt;.,: .:.,,..,:;::;!:,;! +,:,,:::;:,:;,:;,,,,,:::;::::,,:,,;::!;,.:@####L;!i;it!i0i!::fCf0;i;tLtLtL!i,,,..:;!!!iiti:!i:,!; .:i; . :: .;:::;:,,! +::;,,,;,,;,:;,,::,:,,;;,,:,,,,,,,,.,,,.,iftii!;!if0LftC0!tt!!;;!iftLtifLGLiii!!:;tLf!!i!!;;i!;!t, . ., .,:,..::,...,:!;:,:! +!;,::,,,,,;,.,,,;;,::,,:,,,,::;;:::::,,:00,.,,..,:!;::;::,:tt. .,,:,,,,::::;:::;::;;:::!;::tfLtt: :.,Ci;:.!LLt!;:,,..,;i +;:,,;;,,:.....,::;:,:::,,:,::ttiiiLf!ifLf!:,;!;;:;:;::t:::;!!;:::::::;::;:;;;;!!!!!i;!;it!:;;;!:;. .;. ,t:...,:!L00CL!!!;!t +:,;,,::..:.,;;:iff!,!ti:;,..,,::;!i;i####C,;G000GCGCGCiCiCGfLfGC!CGLGGCCGL!GfL0CL880C!Cft!,:::,::,,,. .!, .,. ,;!LG000GLt +;:,;,,,,,,,!!it!;:,,,:,,,,..... !i!!!####C,,;!!!;;;;;::,::;:::::::;;;;;;;;;;;;!!!iti;!;;::!!i!iittii;.. ,; .,;;!i!!i +!;,:i::;:..,::::,,,:,,,,,:;,.,,,,,,.,:;;:,. .. .,,,,:,;!!;,:!;::;;i!ifttt;;t: .:... ,; +,,.,,,.,,......,;,:;i:,;;,:;:::;,.,:,.,:,.... ,,;!i;!!!!!;;iiit!::i!;;!!:!:. .:.,. .;;.. . +.,,..,,..,,.,,,,,,,.,::::;;;;;,::;,:::::;:,::,,... .:;!!!iiiittttti!!i!!!tiii!!: ,:, . .,::::, .,;;, :t.if;.;t!;i:ifLftffftti;!it;!!;;;:::::::;!!!!itCL;:.;:,,,..: ,. ,. ;t:..:!!,.. . ..,,;!::;ii,. .,,,:,,:;! +t!iL:,;tt:,:ifCffGfff0GfiLiCt;:;itft;;;!!f##@@####C;:,.... . .:;,. .. ,,.i;,,:t;:;;;!;:,,,,:!tt::G0;,:C:. ,t:;.,:;,.,,::i!,. +.!ttiifi!:.:L0#0LC#80080GLfG0i!!!!!!iiLLfC00LLLCfi;:,.... :GCf. ...,:,tL:tLLL00fi:!::::,..,!Gt!ft,,,:ti,,.,:,,!i!:,.., +.088G::::::;!ttttLG##G###000800GCLtfC800CG#GLLfft!;;;:,,...,,:.;Lti. ,,. ,;,,:,,,::!!!;;!f!::!!:,,...:LLLC:.,,.,,.,:;!;,,,.  +,!ii;::;:;ti;;!iiifCCG000########@CG##8G0###@0#@000ttG;,.. :Gf..,,...tC, !C:,i, ..;;,...,ff;:,,!!!::,,:iL!,...,;;:,,,,..,:,,.. +!,;::if:,:;titLLffLCCLffCG08##@8##0C##@#@CGGCC@0CC88f80;,. :L;. ,;;i, ,,:!i,. .,,,:,,,,!GL:,,,,::;..,!Ci,:!!,,,.,;;:;,;;:,. +::;Ct:;:,,:i!!tiiL###CtfC0CLGGLf0@0G00@8@GLLfLL8CC#0L##G: ....::.:,.. .,;C:.....,,:!!:, .,iC!, ....,;Li!!!;:,,,:,,::!:,,,::: +,!!!;::,:;:,:::;!tLGCfit0#0LLGLfC#@##CL##@CL0tG0###titi;,::,...,,,.. ..... :8f, ,,.. ..,... .,!L;::;;:i8@;,:::,,,!::,,,;::,.,;; +,,,;t, ,;!:::;;!ifLLGLii##GL00CiL#0G@LLG0GCLtfCfti;, tG:,,.;:.:.,,,,,,.;0t, ..,::;;;;;!;:;!C;,i;!C@8!;i;;!:,,::,:,;:,,:;!:: +!;,::. .!!::i;iif008##Lff@#fttfiiitffffLfGCt0C;: :!G;.,,,,,,........:it.,iitf08C80!!ft;:!!::!t@Gt;:!!;;;,,,::,.:!t;!;00,, +!;:,.. :i:,:::;!iiLLG#Cif8tffC0LfLC#8Ltfftttt;,,;i:,,,.tGf;;;:,,.,,.,.,.,,,t!,;fGLffft@G;itt;::;!t80i!:,,::;;;,,:::,,:fttiiti:! +i!;,:, ,;;,::;;;;:;ttLt!!;!tLi!fCLCfttLC#0tCG;,,tLL!tf,;8t,;:., .,,,,,.,.!G;,!;!;;:::;!:::;i!!t@@L;;;t;:;,,,::;i!:;;i;::;0@;,; +;:,,!;;..;:;:LL;!;:,,!!i!!;!ii!!i!i8Ltf0CL0L0#!,;;;!;t;,,i;.... . ....,.. iL:,i!:::::!t:,,,;!t@@tti!!Ltii;,,,,::::,,!i,..:CC:,! +i;::;!!, .;:::!i;::!.,ftii!tti!iii!0@Cf0CtGf0#!,i!;;:,,.,i!::!;:..:,.. . ..,,,,fi!;;::80;,:;!GGi;;iCLtf;:::;,,,,,.,,,t!:;!!;;:;C +:t!!:,,:,:,,,;!LG;:i::ffii!!iiiiit!08Cf8Cf0GC#i,tC:, : ;LLttft; .,. .....,,:,:ttffLLLCLtiiC0CLi::;;;!!:::,,,,,.,:,,:;,,;ii!:ii, +,;:::!;!Gfi,.!Litt;t!,LLLLfiitiiifit#@CG8f8CL#t,t!,,. .:!t;,,,, ,,,,,.,,!i:,,t@######0G88ii08C;;;,:L;:i!,:;,.,,,,,;::,:::,,,,; +,,,.,,itfi,,,!!:;;!;,,:LCftiiiiiiLi!##tf@ffGC#t,ttt;;;.,!;f, , :;!,...,,,,,:!fC00C0@0Li!;iii!!!::!C;,,,,;::::;:!i;iftii:;:,.t +,;!:,,,::,.,t;,.,,,:!,:Lfi!!iiitttt!G@ff8tiLL8f,!LGCt!.:i:t: ., .,,,,,,,,,.,!:;!!iiGG!:::;;;,;Lt;:it::::,:!t!fftffit!;:;;;Cf;, +.:tii,,ft,.!;:,.;;:;fi,iftii!!!!iti!CCCf0fiCtLC::;;;;; .,.. : . :;!;!!:::.:i!CGtii,,;:,!;::;;,,i!,.tt,:t:;Cfti;:,...:;:!C0i +::ti!;:ii;:i;:;::iLLi:,:tCfffiiiitt!f8GtLC!;!f08i!!!!!!!:. .. ...,,,:,..:!iiLCCLfttfftiii!;;:,,,,.,::.....,,,,....,,:::f@i; +t;,:;t;,:,!!;;;:;;!!;!t:;ffffLCffCGi!#Lifi;:;!iL8088@@@@#t:. . ; : .,;G#@##################0GCfLLLLffffiiiiitiitfGLfC0i!! +;!;:!;!;;;;:;;::;;i!!fL:,;i!ittfftLi;LiiLi!iiiiiittLfLG88#@i;;;!;::;!;:;;,.i0C####################################80LtL@CCLCf!if +t0G;;,!G0CLtft;tLf;,,:,. .,,:;;;:;;;:!:;Lttffffi!;;;!!iiitG@GG008GG8@G!f@!!i;f!t##@GCGCC0GGGGCLLLLfffLLLffffffLLfLLfLti;::!i:;f! +!G!,..:Li;;it;:C;:. ..,,;t,.,::,::;:;;;;!ttitttfLCf;:;tii!!!L##t:i@tL@t!, .,tG!:;;;;;;;;!;:;:::::;::::::;!;:,:L88i;!;i::i!, +,::,,..., .. ,,, .,:;;;;;;!!ii!::::::;!::;;:;!!;;;!!ii;:,..,i!,::;!. :L;,t@0, :i!,,,:;::,,,:,,::;;;;;:::;!iff:.,:!!L080LGfi:: +tttti;:::::::;;;::;tfCGCLLCC00Cfi;;!;;!;!G@;,fLt;,. . ... ,!:::!i;, ,,,.:;ti,. ;L;,:;itt::::::::;ii::;:,,::;!;:,. .,;!!;!i;,,: +CCtttffffftfCC00Gf!!!!!!!!ttft!;;;!ii!!!f08;,::,:ti!:. .:: .,;iG###i ,;,::,,:f!,:::;ift!;!;::::;;;;;;;:,,,,,,,:!!,,:;;:::;;;;:: +tiiiftfCtttiitft!;!;,,,::::;::,,,,,,,,,::;;i:,. ,0@8C; ,:,,;,,iG###C!:;:, .:,:;ff,.::!;:::::,:::,,,,,,:;,,,,,,.,:::::!iiitfLCLf! +tftt!;;;;;;::i!:::::,:;!!!iiiiii!:,,,,,:,,::, .!ffi;:,t#@G#8ifLti:,;###!,.,;:,;f,,ii;;:,,,,.,,,,,,,,.,,..........,::::;::::;;:, +!::::::,::;;,,::,,,,,,,::;!ittti!!;;;;;!i:... .;CC!:!::##########:,;;f###8; ;:,:t;.,!tti;:;;:,,,:;::,,,,,,,,,,,,,,,:;;;;:.... . +:,.,,;!;,,,,,...,,,,::::;:,::::::!!!!!!it;,,.,;LC!,!ft!!iiii!ift!;fCt,:!C8: ,;,:!:..,::;!tfft;;::::,,,,,,,,,.,::,,,,:::,,..,,. , +;::;;,,,,,,,,.,.,:::;ii!:,,:,.,,,:;;;:!ii:,..:Li:. .,,;C!.:::, .,:,.. .., .,,,;,,;i,...,:;;i;,,!;!::::::,,..,....,,,,,..,,,.,: +!::;,.......,:,..,,,:::,:,,:,,:,,,,,,,:;,,:,,,,,. ... ;0!,,;G!:i, ..,,:...,. :;;:,, :i,,,!;f!;;i;!;::,,,.....,,,,,,..,! +!;,,,.,,,,,:::,..,,.......,,.,;;,:,.,,,.,,f@L!;!!t!ffi!fiCit0i##t;;fiiGfG!;,,,,,,.,...!L;. ,.., ,;itff::ii;!;::,,...::,:::,,,; +:,....,::::,,,,,,;:::::,,......,,.....,,i00###ttfffffti;L8f!;!0#CGtLfiLCLftifiii!!ii,..,!, .;;;;,,..,;!,..,:;!,,:!:,,,,,,,,,,::; +:,,:::::::::,,,,,,,,,,,;;,,..,,,,,,,. ,8####C:,::,,,,,:!;:...::;::,,,,,:;:tt;!!;;;;,...,. :,.itti:.: .t;...,::;::,,,.,,:::! +;!ii!:;::;;;;,.,,,,::,,::::::::,:,,.:;tffitfii;;::;;;:,,t::::;;::::::;;;:,:;!;!!;;;;;!:,:;, .,;it, .,. .,::;;!;,,..,,,:;i +;::!;,,,,,,,:,...,,,,:::::,:;;,,,,:::####C ,CGGGGL00GCtL!fCLG00C!CGLG0CGGt;CifGLfCfiLLC:,!!. .,. .. .,,,. .:;;!!:,,:,,..,! +,.,,,,,......,,,,,,,,,:;::,::,.,,;;,:C@##i.,:;;;;:;;;:;Gt::;;;;:::;;;;;;:::,;!!iitt!;!!;:;!:. :,.ff;: .,,,,.,;i!,,,,; +,,::..:;,.,::,;:,,::,,;:,,;:,. .!:..::;;:,... .,, . .,:::;::,:itiii!, ... .;t, :!;:::;!;!i!,:t +;;,,,,,,;::::,,,,,,,,,,,,,,,,.,:,,,,;i;;;;:.;! :;:,,;:;!i!::i!it!ii: !t .. .,;fLCCftfi::i +,:::,::::;;::;;:::;::,:,,.,,:!it!:,:;;:::,. ,: :!ii!ttttfLL!!!;!;;:,. . : ,;!i!!iii ;:ii!!!;;;;:,. .. . . .,;;;;;:..,. ;t!;;!!!!. .. ..,. ,: ,; !t:. ,iLffLfffi;;tii:.;!!iitfLLfffft;:,;::;:,.,:,,;! +0@#C;:;;,,f0GLi!ift:,.,,,,,,....,!;:!!tt00f,.,:,;f;. ,;. . ,i .. : ,LL;i::i0GGC08L:,,,:!08LLti!!tttttLit!,i!;.,. .,:i:  +ftL8;;C!,:!!;!!!ii!;;,:ii;ii!:::,:::::;!iitti!tLG#@i:,,,. ... :f!:. . ,,,i;tt;tf0t;;!;, ;;,,;tti!it;::,,,,,....:,...,,:;ii,,  +!:;i;00::LC;;;f0@CL80Lftti!tG!;i!;!!;::;;t##80@####8!,... ....iGGt . ...,;;L;:;;;::,...,,::,iGi::L!. .,,.. .,;;::;!tt!,::,; +:!!:i!!;fCfL:!G080G###@##80C0fii!iffiifLLC00LLLCLftt;,.,...,tt,,;;, ,t: ,!,..:f:.,tC0L!!,,.....,;Lt:!C:,:;Li;:,,:::::!!:,,,.;i: + .!8CCi;;;!::itif0GC8######@8@000GLLCG@GCG#0LLLLt!;;!;:... :Gi. .:ff ;L!,;,;,,,:;!ftt:,::,.,.,.;LiGt,:;:;:,,,,;i;.. ....,. + !8@0;,:,,:;;;;!iitfLGG00########@C@#@00###@0#@80LtG@;... ,,,.:,.:,:,,. ,,tf: .,.::..,,:f!:,:!!!:,:,;fC;,...:,;:,:::,,:,:::..,; +,.:it!!!:..;ffi:::;;;!!itfCG##808##LG####GGCCG@0CG#Lf#8i,,.. .:::,, . ,,!C, . .:,,:,,,:fG!:,,:;!!,.,!G!,:;:,,,,;ti!iiii!:!t:; +::;Lft:t:.,;iLf::!LftftfLfffCCLfG@@080@8#CfftLL@C0#L0##0:,:, :;,i.. . :0!. ..,,,:!!;:,,;CL:..,,,.,:t!i!!:...;;;::::::,.,G8!, +!;::;:;:,.:tiiC!;t0##CG8#8LCfftfL#####C#@GftLt88##0iii!,:f:....,:;;,..,.,.!8! ,::,...,,...::if:.;i:;t8!,:::,..,,,,,::.,:,.,;i8, +,!:,,,..,,:;;;i!iL###fiC##LLC0t;tfCCCL0G0@CttfCt!;, ,G;.::,.i,,::;,;;:tC! ..,,.,,:::ift!!G;,!;i8@f::,:,,:::,,;;i,.,,:,:,;!L +..,;!!..!!:,:::!ifCGCt;L#8ftC#t::;::,:!ttCfL@f;,.. ,;i;,,:,,...,,,,,,,;C;.;!;!!;!Gi,;fGi;!t;:!f@f!:::::,,,;,,:::;:,.::;;;.i8 +;,.!i:..:i:;!!!iL0G@@t!f#8fCGL!:;:::,,,,::;;!i!!;fi::,.:8C;;i!:::.:::::,;:!f;:GLtft!t0i::;;;::;!L@Gi!;;!!;;:,,:,,:,;::,,i0;:::;t +i;;:,., ,!::i!i!fLGG#8ftC#fitfLiiitttti;:,,,;!ttiCfttC,,C0;::,,,,,,,,,,,.,LG:;GLffCLf8i:!!:,:!f#@t;;Lf;;;;;;,,,:,,,;fii;L0;;Gf.: +i!;,,,. ,!:::::;;;!tf#@iif;iLCC0GG0#@880C!!;;::!!ii;!!,,;i:.,,....,.,,.. .::,:fi;;!;i0!;it!!t08t!:,!t!::;;;:,::::::ifi!iGt:;0!,! +!i::!;,:,,;:;!:;;;:;tii;;:;;!!iiit0CfC8G@GL#f,,;tCf:.. ,tf!;ii:: ,...... .:;;,,,,;!;,;it@#fi;;::!t!;;:::::;!;,,!i:,.:8f,;!;i  +!:,;if..!:,,it:,,::,,i!;!;!!!!ii;!#@fL#LfCC#L.;::;:. . ,ffi!!!:, ...,,,::,,,,i:,,:,;!,;!L0tifttii!ffii!;:::::,,,:t!:::;;;;CL!!. +!:!::,,.;i, ,;t;,,t,,ti!!;!i!iitti#0tf8ftfL8L,,;, .,. .,;!;...., :,:,,;ift:,:!iitttCtif0fiti!!;!i!t!:::,,,,,,,,,:ii;itf!;;:;@@f +!:,,.,:;,:,,:LfG;;t:,Cfti!!!iiitii00LL0ft0ffC;tL;,..;,.!,!; .,: :!,,,:;;:,,!f8######CLti0##L:::,;f!:!,,,::,,::,:!:,,:::,. :G0i +,,;;:!;,,,,:C!;;fft,,tLCftiiii!tL!t#@iLCt0i;!ffCLit!!:,,.,! .., ,,.,;;;::,,!;t####Gfi!!;f0G!:!;,!C!!;::!::::::;;;;::,,.,;;::;: +;:i:,;,.:t!i;,.,::;,,!Lttiiiiiitf!i#8tLCfti!!!iitLG80L;;;!:, . , .,,,::.,.,;ifffff;,,::;i!!i!;;tL!::::;;t!ti!Lfifti!i::0G:::: +t!;:,::;,:!:, .:. :L,:ffi!!!!!tfL!!8Gf0iffittttiiitti!fG080!;:,!;:::::,.:, .:!t0t,:t0:.,,:,!;iCf!;Lf;:ii:;Li;Ltttii!:::!i;!tL!C! +fi!;,fL!:;;,:::;;:!!,.fLftti!iiti!i8GLGf;;!itfLLft!!;!tfLfC80t!;G0LG@G;!8i;i88i;;,,:;:.....:,,::,,,,..,,.,,,,!::,,.. ..,;8!;:, +!;;i;:!iLf::;,;ii!:;;:!LffLfLftfLi!#8LiC:::;;!!!!!!!!!fLfi;!!!;;;L8#i:;@L!@0C#ffLCCCLLLLLLLffttiii!!;!!!!!!!!!!;;;;:;;!!;!8f!;;. +;:it!,,,:,,:,,:;!:;fGf,!tiitLfttLf!CG;;;;i8tittii!::;:::,, .iLti:;:. .::,;#@f@#################################@8GLL880G0Lt!Li, +i:!!!ii!;;;:::tLt:,::,,,::;;;!!!!i;ii:,,!8#G!:Lt::,. . ,!!!!!i;,. . .,;ii;!C##888@######@@@#@8###@80@#######0LLLCi;!ii:iL;, +!,,,C0CLLLCi;C!;:. . ,,,.,:::::;!!f#@;,,,.:CCi:,.,:: .,;iG###L.,,::::,;t::Ctifiiititiii!i!!!!ii!;!!iiiti!!!C8@i!;;i:,t!,  +.. ,:;;::;:,::,.,:;;;;;;:::;f!:;!!;!!tLLffL!;:, :@#8G!.,;;;i;,:f8##8i;;,,;,:,:;itf;,::::::::::,:::::;;:::;;:;i!,.,:ifC80CLLt!,,: +!;::,,:,,,,,,,,:iLC00CCftLCCfti;!!!;!!!!;!i;,,..!Cfi!:,i#####fiffi!:!##8;, ,!;:,;;:::;!i;:::::,::;!!::;::::;!ti,. .,;!!;!L!,,,; +CLfttffLtLLCGLfi!iiifi!tGGGGLtiiiti;!!!it:,,. .;00f:;::G#########C,,!####f:,,;,,,;:;ifft!!i;;::;;;!!;:;:,,,,:::;;:,,:::::;!!;;:, +fffLCLLLfLLGGf!;!,,::;;;!!!!;:::::::,::!!:.,..;0#G;iCLi!!!ii!!fft;iff;;t##0. ;:,,;!!ii;;:;:::;::::::,;;;,,,,,.,:;!;:;ititffLCLt! +fti!!;;!!;ii;::::::!iti!!ittii!:,,,,,::,::::,:fCf:,,::;i;,:;:,. ,:;;..:;:, ,!;,::,;::::::,,,:::,,,,,,,........,,:::;;;;:::;;:, +!::::,,:!:,,,,,,,,,:;;;!!ttfftii!;;;;!!i::::;tt,,.... :0t..,iC:,, .,:,,...;, ..., ,!i!i!;;:::;;:,,,,,,,,,,,,,,,::!;;;:. .. . +:,:!;:,,,,,...,,,,:::;;:::::::;!!!!!;!!::itifG!:;titfii8i!;;0ft#L;;ftiGfLii:::::::;;!:::,,ifLt;::;::,,,,,,,,,,:::,,::::,,.,,:,., +!;,:,,,,....,,,::;!!!;,,,,....,:::::;i!;;ifffi;!itffLti!L0fi;;G#0CLLtiLGGGLtftLCCCLGLf;. .,:;f;,:!;;;;:;;:::,,,,,.,,,,,,..,,..: +;,,....,.,,:,,:::;!;:,,,,:,,,,,,,,,:;:,;##8##f,,,,,,,,,,:!:,..:!!!;:,,,:;:::::;i!;;:::!i:. .,,,,;it;;i,,i!;;:;:,,,..,,,,,,,,; +;,.:,,,,,::,.,,,.,,...,,,,.,;;::,.:::!iL#####i:;:::;;::;L!::,:,,::;::;;;:,,,:,::;:::,:,!ti .::,.. .,:tt,.,.::i:::;:,..::,:::::; +:,.,:::::,,,,,:,,,.,........,,,.....:####Ct!;iCGGC0GGCt000GLGf8C!CGLG0CGGt;0CtGLtGCCGiL,,: ,;.:ti;:..!, . :f:........,,,,,,,:! +;,,,,,,,,,,,,,,,,,,,:,,..........,,.:0###!.!,.:;;;!!;;!!i;;;;G8;,:;;;;;;;,:Lt!ii!!ii!!;;:;, .:!iii,. !,. ,::,:::,,,...,;! +!:::,,::::,,,,,,,,,,:::,,,,,:,::..;;,:;;:,,:. ,Li ,,. ,;:;;:::,,;;;!!!, .;i! ... ;i!!!!;:,,..,,:i +!;;;:;;;;;:,,::,::::::;::;;:::,,,:::,;:...;: .;, .!i!!;!;::;:::;!i, ...,: ,!:...,,,:;!;:,,,,,,; +;:::::::;;;:;:;;!!!iii!!!!!;:;:!!;!;:;;::::, .;iifLLLLftii!!ii;. i!,, .,::;!!;!; :,,... ..,,. .. ., ::,,...,:::, .. . ,,.. , :! :f;,:!!, .:;;;;:,:. ,:: . .: , ..,,..,,:,.,,  +,:,:,,,,,. .:. ,:,.. .;, ,, ,,,:, ...,.. . ,;. ;f. :0!...,:ifL!::,;!!,.:;, .,t, .. .::,,,,,,,,. .;.  +.,..;:;!i!,. . .,:,... . :;;;,,. ..;!,.,!.,,:!, :. ,!. ..,,. ;0C. . :L0ftt::,,,.::,. ,it:,. ,!i!;;;;;,..,;,,,,,, +!i,.,,::;;;:,,. ...,... .,:::;;,...:0C:.,,..:G:.,,, .:. :Lt, . :0L. .,:::;,,, ..,;:. :L!;f, .,::::,,,.,;LCLiit!: +.:iitL;t;;ifft:,,.,.......... .....,....!G0!.:!;ifGt:,... ,,,.t0G; ... ,;:. .,;::::;:,...!CL::;!!!it!;;:::,;:it;:::,,LLt8i,:,  +!:G@##!:;::;!i,,iLtfitt!;:,::::,,....,,,;iLLGfC0####C!,... :Lf,,;:,.!f, .... ,LfffffCC;;i!!!;;CC!tCfCGGGCi!!:,,,,,:::;:,;G: .;; +f;itf0;!C,,i!;::!GffC###0GCLLC!i;::::,:;iL@#00@######i,,,..:Gf, .:iL, ;t,,,;iGCLLfff;:if0G;!i!tC;:::;;;:::,, .,:iti;,,:t!,,:,; +!:iC;:!t;;iCCf;iGLCGG0######00GGLttfi!i0LCGGffLCCfttff:... ,,,,;:...,.. :L!;Ct8@888Cf!.,,:;;:fC;:!;, .;:,,,:;:,:!tt:,,:i!L;,,,,, + .,:iii;!fLti:iGL0880CG0008######8GLLCGLC0#GLLLfi!;;t0;... .!;:;. ,CGiLiti!!!!;;,,,,..,::!f;Gi,;it!.,,::;!,,...,,,i,,,;;:: +. ,G80i,:::::;;iiiiitiitfCC0###8##LL#GC0@@#@8#00Gtt80i,,... ..:;!!. . ,,!G;.,,,,....:t;:,:!;;,::;tG;::,,,,:,:;;;:::::,..,,,.... + :!i!!:, ,!;,:,,,,:::;;!tLC00GG8@00G@@8GGGGG0GG#@f@#@;,,:.. ,f;,. ,t;. ,,;;,::,::tL;:::;!;:.,!0i::;!,,:!fCCffi;,,,,tC!,,:, + .ii::L,:::,,,:;:,,,:;;;!fff0CC####0C##0LGLf8@G#LG#@iii:,.. ,;, :0! ,.,,,,!i!;,,:fL;,.,..,;Gtiii;:i;:::;;::,. ;::G@G;GC, +,,,::;:;,,,ft!::;C!:!;t8!,:::;!iL###0CG08GLtt0G08t;;;:.;0;,,,, ,:,. ..,.!0i. ,,. ..,:,,,:;if:..,,!#@;,,,,,;:,,. .....,;i;;tLf!!! +;:ii;....,:ift::!CfitiC#tit;:,,,;!!!!iG88#tLt!;,. ;G!.... :i:...,,.:tf..,::::,,:;!iftiG!,!!L#8i::,.,..:it::::;::,C8!:.:i:!; +!,:,... ,,titC:;tG80G08#Cf00;,,,::,,,:;iti!iti;,,.., iiL;,,,.,;:,.,,,,.,;i:itfCfLf:,:::;!tLt;i8@t;,,,,:..,::::;:,:,.,:!8i,:t::, +!:,,::. ,!;;i!i0##Ctf8####@t,:,::::::,;L!!!L##ti!:::,;@G;ifi:;!. ;;;;;::Gi;Ci!!!iL;,:::,,:!iC#L!:.,,,,,:::::.,!,,::..:;!G8t:!!; +,:itf!,. ,,::;!tLGGf;t##GC0#f,,::,,,,,,;0ffGG###i!!LL::Ct,:::,,:..,:,,,.:f;;f;,:,iL;;!f!::!f@@i:, ..,,,,,::,,,:!:,,:;;;!:G#0:;L! +,:t;,:;,,:!;!!fGG88t;f##C08G;.,:,,.....;!!!ifLLffL;;,,:ti::!:,,, ,,.., ..,:it!;;iL!:;!!!t@0i!;:!;::::;,,,:,:::;,..:Gi,:;!iC;t8! +!;,. ,t:.:tii!fCGG#Gtt8#ftLfi!iiiii;:,.::!Lii!!it!: ,Lftffi,., .......,,:GGCGtC8iii!i@@t;;:;iGCii!;;:,,::,,:i!;:!ti:t0;,,:0L! +;;:. :ii:::;;!!!ttt#G!!t;ifGGG8G@#80Cti!t#Gi!!!iLLi;::;!i;:,,... .,..:,!:,:tfttiLCi!iC8f!;;;::!Li;:!!;:,,:::,:tLtf!@G:;C; .iCt; +:ii: :i!i!.,i!!;:!ti!;::;!!iitiC0CLG@@@G0@tittttttffLftiLi;:,,,!, ,,.,:;:,,,;::,:;iiG0iiiii;::,;t!:;;:::::!!::!t;::;Ci,::. .08f! +;:,, .,,,..:!:,:,.;i!!;;i!!!ti:i#0fG0L0L!!!;itfLLti!iiittf08t:,ii,::;;::::,::!:,:iG0f!!ifCG;;;;!Ltii;,,::;::,,;t:,,::::i!::;ii;; +;. ,,,. ,;ft;.;;,;i!!;;!!i!tf;t#CtGGtGfi::::;;;!!;!!!tLLfttC!:..!LC@G;i@GCf;,!:;GLti!!!ii!!!tfiL!::::,,,:,,,,;t;!iti;::,t@f;, , +;:;iL!, ,LGtGf:!;,Lftti!!i!iii!i@GL8Cf8Lf0:.;!;;;!;::;:::,,,:;;;,;L#C::8@t#8LCLC08@8LCCCCCi;:;:!t;:;:,,:,,,:,,;!,,:::,,:,!@@L:,: +!tfti;:,;L!;;ift,,tLLftiiii!iL!i##if0f8ff#t!;;it;,. .. .iLCC;::, .,:,:@#######GtC!L@8t:i;,;C!;!;:!:,,:,::;;::::,,,tL!;ii!t; +:::,,;ii;:. .,:;:,tLtiiiiiiitfii##tL0fCLC@#8t,CL:,, ,:;;. .:ittfCt:, ,:iL0ff0f;:;:itt!!!!:!C!,:::;;;!!i!ftifftii;;C8i:;::;; +,:::.,;::, .:.,if,ifi!!!!!!tfL!!8Gf00fGC0#f:,,,,;8@t;:,,.. ..!L0###8: ,,,::,:::!0f,.,,;,!!tCi;!L;,;!::tL;fftttii!::;!i!t0L!t, . +,ift::!,,;,:;;;!:,;fLtti!!!iti!!0GtG8LGftC:.,.. :@##0f;,,;;!t::;iG##f, ,!,:,,,:iC!..,..,,,:::.,;, ,t:.::,;t;!:,,. .,,:C@i!;,  +;:;iLf::;,:!!i;;;::tLffLffttLL!!#8tt@ti;!i;:::..;tti!;,;######ttt!;:;;ii::!,!;:,:!fffftttti!!!;;;;:;!!;;;;;;;;;:::::;;:!0f!fC: . +;...,,::,,:;!::iGC,;ii!ifftttLi!0G;!!;!i0L:,.. ;@#t::;,!##########, ,G###t;,,!:,,:########################@08@880LfL0ftfff!tL:., +!!!;:;;;:;tLt,.:;:,,;;!;;!i!!i!;Gi,,,;f8t;:. .:C##G!CLti;!ii!;itt!;!iiiL##@! ,;,,:t#############################8CCLf;:;!:,ft, . +fGLLLCC;Cf!;,. ....,::,,:::;;;;!ifGt:....:L@8i::;!;;!::!;:, ,itt!,!8#! :;,,;L0ffffffttttiiiitiiiiitittti!i0@8tiiit!;t;,.. +,:::;;,:;:,,::;;;;ii;;;!Lt:!!!!!!tLCLC0!,:,,;iCi;,....,fL:,,;C:....:;;:::;:, .,:,,::::::::::::;::::;:::;::;!!,.,:!!t08CL00i;:!; +::,,,,,,,,:tfCG0GCLfCG0CLfi;;!!;!!i!!ii;,i!iG@t::t!iti!8ft!!L8ii0;,ftiLL0tt:,:!;;;;;!!!;:::,::::;!!:::::::;;ii:,, .:;!;;!!:,,,: +fLLtfLCGft!!tiittiiLCCCLt!!!!i!:;!;;;;,,,:;L0f;!iftfCftiifLtfi!@#f!Lfit0CGG!ifLGGGL00Lfi!i;:::;!!!!;:;::,,,:::;!!:..,,:,,::;;;:: +CCLLGG0Ct!!!:::;;;;;!!!!;::::::,,,,:::. ;fLfi:..,,::::,.,f;,,.,!LiL:,,,::;::;:;;!;;!fftii!;:;;;:::::,;;:,,.,,,,:;;:,:!!;!iitfff! +i!!!!i!;:;;!;;iiii!!itfftti;::,::::::!fG#####;:;::,:::::!!;;::::;!!!:;;;:::,::;;;;;;;!;;,;i;:;;:,,::,,,,...,,..,,,:,:::::::::::, +!:;:,,,,,,,,,::;;;;!!ittttiti!!;;!i!;########fGGCfGLGGfG00GLGLGC;CGLG0CGGL!CfGGGC0080!L, ,!!;LL:,i!!;,,:::!;:::;:,,:;;;:;:,,.., +;,,,,.,..,,,,:::;;;:::::::!!;;!!;;!;!C800L;;:::;;iGi::::;;;;;it!;:;;;;;;;::::!i!;;;i!!;:. ..:i:,::;:;:;!i:;!;;:::,:::::,,,,,:: +:,.....,,::;;;!;;:,:,,...,,:::::;!!!;::::,: ;i, ;Cf . :. ,tf:. ..... .:it!L:,;;:,:::::;:,,,,.,,,: +;::,::,:;::;!i;;:,,:::,,,,,,,:::;!;::::;;!; .. .!, ,:, : , ,!ti .;;:. .,:t:.:...:;,,,:,::,,,,,::; +::;;!;;;;:::;;,;!!!!!;!!i!!!;;!!!;;;!!iiii: .i: .,.. . .. , :!;::. : ,t, ...,:;!!!!!!!  .,,..... ,..,i;;::::;;:;:. , ... . ;: ,f; ,;:., ,!;,,,,,. ,;: . , , . .... .,.  +,:!;::. .,,:,... ,,,,i!::,::;;;:.. .; , . .,;. .Lt. ..;0!.,,ft,,:;!!:;:::. .,!. ,t: : .,;:.,:::,::  +,!!;;:;:,... ,,..:;:... :;.:,......,,:;. .. ,,,, . .:!. .,i. ;8L. ,,,:tCf!;:,;!;..:!, ..i!. . :,,,,,,,..........  +,:;:,,:,,;!;:. .,:,,. ....,;::;: ..;f!,.,.,,L, ,, .!. ,!;, :0C. . :LCff!,,.,..:,. ;f!:,. ;!;,,,,,.,,:i;::i!; +t;ft::::,:;;!:,,.. .....,, ,:::::,...,;##;,::,;it:,... ....iGG: ..,i: .,,:::,. . ,:,. !f;it. .,:;::,...,:!G00t!:,  +.;;!GC8L;;,;tGC:it;:,:;:,,,,....,,,,,.,,,ifCf!iCC8@#Gi:,.. ,;i,,;:,.:!, .,. .,:::::::,,,,;fi:;;!i!!!::;,:it!it:. .,:t;i0!..., +;0f!8##8;;i:;i!::;fifG#0CLfi;;;:,,,,,,,,:;iG88G@###@#C;:,,.,GC, ,iL, .!,, ,LLfLLfCC;iLi!i!!GC;fft!iii:.,::::::::!i,,;L; ,:; +!8C!ttti;Gt:tL!!:!ftLG######GLCi!;;i;::!LfLLLL0@8G000C;:,..,::,;:,,,,,. ,t;::,;t0CCLfCCt:iL0LLG!;it:::;;;:,..:;,;ifLi,,;:Lf,,:,, +ii:,!i;;;!;iCCL;tGG8@808@@###@0800CffttG@GG8LtLCfi;!!tL:... !t;!. .i8;!Ci8@8CLi!;:,:;;;;it;:f!,:;Li!:,:,,;!!;:,,..i;:,,,,, +., .!8Gf;ii!;:;ftL008GCLC000######@L0#0C8##8G0#8Ci!LCL:.......:iif, . ;0f::;!i!;::,!,,;!:,,:,:if0:,:::,,,:,..,,.,,:,,,: .:;;: + . i80G;::.,,;;;;!i!!!!fLGLG#800#GCG#0@0GGGG8@GGGft@0t,.,,.. :C!:. . .;t; .,!!;:..:ti;:,:!!;,,:;L!:::::,,:::;!i!ii!: .:::,,  +, .;iiiL;...,::,,,:::,:;!ifLCCLG080#08@@fffLC@GG#LC##0!:,. :t:. ,C8: ,,,;::!::,,iCf::,:,..,;LGftt!:,!fftfCi:;:,,.:L8!:t; +, :CC;i:.;:,,,,:;:,,,:::;i!tLL0####GC8CftCiG@#@Cifti:0i:... ,!:......:0@; ,,:;:,:;. .,:;L!, . ,;#0;:::,.;:::,::, :!;C8LtG: +. .::!!;!:..,ft;::iG!;i!CC:,::::;ifLCfL0LCGfttti!;,. .!8;::, ,L!;.:,;::f0; ..,,,,:,,,::;!C: ,:i##i,... .,,.,........;L!:!ft:, +.,i!Ct;;,..,:ifi,:i0fttf#8iti;,,,:::,,:!tffL@f, .:i0;,,..,i:.,,,,..;G;.:;;!;;ff;;!tttiL!:!0@L!,,;:,,. .!t;:::;::.i8f;,,!,; +;ti;::,,,,.:titf:!L8@G08#@LL8C:,,:;;,,,.,;;!!tii!t,....G8f;;!:,;,.::,:,:,!C!:G0GL;!C!,,:;;!!!it#0i:..,,,:,,.:::::;:,:..,:G8;:::! +::t;,::;. .,;;!!!t###LiC##@#@8!;,:::::::,tL!Lf###f!!i!,!#i,;:.,;,.:,,:,,,CG;iGt!;:!Li,,::;:;tC#L;, .:,,,,:::::,,;;,:::,;:;t#L:ti +:,,:ttf;.,.,,::!ifC0Gt!L#8LCG#!,,::,.,,,,ititf0##0L;f!.:G!,::,,,. ,,,,,.,:::;f!,,,!G!,:tt;i@#G!:,,...,,:,,,;,,,:;;,,:tt!!,;##!:t +!;,;!::;,,:;!;!tC00#0i!@#GCG0f;,,,,.....:iL!!iitL@i,.. :Lt;ii;,: ....,,.,,.;Ct!!;t8i,:!iC#Gi;;;:!;;:::::,,:::::;:,.:00::;!iC;iC +t;!:, .!t:,;f!!iLLGG#LtL#0iffL!itiii!;::t#Gi!!!;!!;:;:,;!!::;,,,. ,...,:::,,;GLC0CfGt:;i00i;:;!;;f0tit;:;,,,::,,;t!;ift;:0G:.:CL +ii:!: .iti:,:;;;;!Lt0#i;i;;LLLG888#@88Ct8#titttti!itftittL!;,..!!. ,,,;iff:.:fi!i!iLtiG8t!;:;;:::it!;;;!;:,:::,,;Lft!08::;:, ;8t +!,,;!..i;;; ,!!!!;;tii!;:;;!iitif#GLC@8@i!!:;itffti!!!itttG8L:.it,::;;;;ii!:;::,,:;L8C!;!tii!::::;t;;;:::;:;!;:;i!:,:;;,,;,. :0f +!:,,, .,,,..:;;::;,,ti!!!ii!!ii;!#@fL#LLt:,,:;;;!!!!;!iLfftiC!,..:LC@0!!@#80i,,,:iLf!;::;tLCi:!!;tLii!:,:::::,,:t;,,:,,,:t;f!!;! +!i. ,::;, ,:;Lt,:f,,ti!!!!!!iii;i#GtL0LCGGf::!!!!i!::::::,.,,;;;,;f#@;:8#f##L!;;;ifLi!!iiit!!;!fitt;::,:,,,:,,,:!i;itti;;,;@#ft; +;:;;!Gf,.,!GitG;;t,;LLtt!!tiiii!i@0C08fC0L#L;!!!!,. .... .!LCC!:;:..,,,;8#@0G8@###GCGGG0C!:;;:!i;;;,,::,,,:,,!:,,:::,::;L#8i. +i!!Ci!;:,:f!;::ti;.:fCftiiii!!f!!##tt@fLCG##G,iC,,:. ,:;!, .:itffLf;,.. ,:!f######@fCtiG80!;i;,iL;!!:;!:,::,::;;::::,.:0f;!!;! +i::::.,iii:,...,;:.:Lfii!iiiitti!8#tf8ft8#8!:,,,;0#L!:,,... ..!L0###@!:,,::::;ifftCCi;!;:;t!!!!;;tL;::,:!;i!i!!ftiffiii;!0L;:!;, +i,,i;,.;;::..:,,;L.,ffi!!!!!itf!;GGLC8fLGG0:.,. :@##8L!::;!!f;:;if##L: .ft,,,,,::i0;,,,,,:;;Lf!:tf::!!:;tf;ffitii!;::;!i;t0t:!, +i,:tt::!,,;::!iti:.,tLftti!iiti!i8GfC0LfL!t;::. .:!i!;,:######ftt!::::;i;:,.,;;,,:fi:.....,;::;,.,;, ,t,.:,,!t;!:,. .,,:00!;;. +i;,::tf;,;:,;:;;;!:,!LffLffftLCt!#8Lt8tii;:,.. ,;!;::;:;0#########: :###i;,.;;:,,!tfffttttti!!!;;;::;!!;;;;;;;;;:::::::,!0f!LC, +i;,,.,,::,,:;;::iGG::ii!itftttfi!G0;!i!i!,,. .,t##8!LCfi;;!i!;!tt!;!!!!f8##f, ;,,,;#########################@0@@08GLfLGi!ttt;tL: +;iti!:;!;:;fLi,.:;:,,:;;;;!!!!!!;Ci:,:!f:....:L##8!;;!:;i::!;,, ,!fti,:0#8, .!:,:L##############################8CCLt;:;!,,tt: +tGLfttLC:Lt::,. .,,...,::,,::::;;!!t0t:::,:i8Ci:,...,i8!,,;t;.,.,,:;::,;;:. ,;:,!@Gfffffttttttiiiiii!iitiittti!i8@8fiLtf!;f!, +,::,,:;,:::,:;;!!!tLftittCL;!!!!!itLC08!:ii!C#G!:!!iti!@8tiii8i!8t:ft!CL0ff:,::!!;;;;;:::::::::::;:::::::::::;i!,.,:!!t08CfG0i;; +;;;:::;;;::!LC000CLCCG88GLft;;!!;!iiii!:::;f8C!:iftfCLffitLttt!@#G!LfttG0GGtifG000Cffi!!!::::,:::;;!;::;:,:;;!ii:,.. .:;!;:;!:,: +CG0GC08@8Lt!!iiiti!!ttti!;::!!ii;;!;;;. ;LLft;..,,::::,.,ft:,.,!CiG;,,,::;;:::;!!i;;LCLft!i!:::;!!!!!;;;:,,,,::;!!!:..,,,:,::;:: +CfffC0GCti;!;,:;;;::;;;;::::,::::,,:;ifL#####;:;::::::::!!!;::::;!!!;;;;;::,,::;;;;;!tiittt!;;!!;;:::::;;,.,.,.,::;;:,:!i;;!itf! +t;;;;;!;:;;;;;;!!i!!!ittffft;;::::::;########tCGGfGLGGfG00GLGLGC;CCLG0CGGL!CifGGC00GL;f:,,:ii;;;;:::::,,,,..,,,.,,,,::::;;:::::. +!::;,.,,,,,,,,:::;;;!!ititttfi!!;;!!!C@00L;;:::;;iLi;::;;;;;;!ti;:;:;;;;;::::!f!;;;!!!:, .:!,tG;,!t!:;,,;:!!;;;;;::,:!!;;;:,,: +;,.,,....,,::::::!;;:::::::;;;;;;;;;!!!!;;: iL, :CC. .:, .,::,. .,::,;,!:!;;;t:,i!!;;:::::;:::,,,; +:,,,,,,,,:;;;;;!;;;:;:,,,,,:;;;:;iiitfLffCt ... . .::. , ;; .tC;. . ,,i!t;.:,:,:;:;;;;;::::,:; +;;;;;;;;!!!!iiii!!!!!!!!!!!!!!iiiiii!!!!i!: .t; , . .;! :,,,.. . ;; .. ,i:.:,::;;;;;!!!  ..,,. .,, .::,;ii:;:,,,,,, . . .. ,;, ii.. ,; ,. ,::,,,,,:,. ,;: . ..  + ,:,,. ,;,.. ,!;,:;;;::!i!;, . . :. ..: ,f;. .:GL:;,..,!i,..,:fi:,,... .:!;.,!, .; ... .,:,., +,;tti::;,... .,:.,,. ,i::!;,,:;!i: : ... . ,::. ,.,L, :CG;., ,,ff:,;;;::;:::,..,i,..:t. . ;. .::,;,.,:.,;  +.,:::,!;;:,,:... :. .:::.. .!,,,,,. .:t:, .,;i, ., .i, ,;;:., ,CG: ,:::fGL;:,,,;;..:!:..:t. ..,:,.,,,::;;:,  +.!,:::,:..,,:;!;, .,,::,. ...,:!i;. .t#L;,,,;C:.... ... iGC: .,,i!, ,,,;i!t!,, ...,:. .L::,. ..,::,..:!itG8f;; +!,:LC:!!;!;:,:!:,,:::,. ..,...,,..,,!f;,..:L##i;ftL0Ci;,...,:;,:!:, ,,. .:. ,,.. ...;:,.,;if;f;:,,;;;:i!:. ,,!C!i0;  +:,i;;;:;8@@;:::;i:tLCGi!ffi;::::,,,,,:,,,,:ifCLLL08###f!,,,,CC, .!L. .;,.;. .,;;!!!!!!!!;;i!tLiiL;itft:;:.,,,,,,:!:.,;C,  +;!,,!8i!CG@!;G::;!;!ftfC###88Gftt;:;:,::,;itCf0G8#####0;,,.,;:,::,,,,,. .ti:;, .. .;000080880@0Ct;;GC:,.,,:::,,....:!ff!,,,:C;,: + ,,L8i:t;:;Cf;!0Lt;tCG00######0GGGLt!tt;!@CCGffLCCfttt!:... :Cii, ..;8!,:!;,;C@0ttiii!!!;!CL;;f;. ,!!:::;;,,!ii;:,.,!t!:., +. .:!:,.:!!i!;iCLf;tG0##G08888######0CLLLGLC@#GLLLf!;:!G:.... ;LtC, ..:8G::C!;;;;;!::,.....:::!ti0:,;ii;,,,:::,,,....,,;,.:: +..,. .G80i,;;;:;!itfLGLGCGGC0##88##LC#GCG8##88#C0Ctf8L:,,,. :Ct;,. .. ::iC;.,:,,,...,!t;,,:;!:,,,;iL;::,,::,,:;:::;,::;;..,,. + ..... ,!i!!:,.,!!:;;:;;!!itfCC80GG880GG@80CCCGG0GG#Gf##G,,,. :f;. ,CG: .,,;;:;::::ff;::,;;:..,!0i;i;;:,!tLLt!;;:;!:,.:t! +,.,,,, .;:,if,.,,,,,,..,,:::;!Lf@GC####CC#8CfGff#8L#fG#8tt;,. :i;.. . .:@@: ,.,:::!i;:,,:tC;,,,...i@i!!itL!;:!;:,.,!,,,. ,;Lt +...,,. ,t;::,..::,...:;:,,:;;:;!if88#CLC00CLttLtfi::::,,0G:,.:Ci!.,.,.,,:GG; .....,::,..,:!C:.,,:i#8; .,::,.,i. . . .:!;f + :..,..,;;:,,,..:ft;,,iG!;it@C,,,,,:;;!!G@@#L8f:, ,!8; :f!:. .. .;G: ....,,:;!;:,;,;f;,:!0@f;,..,...,..,,,..,.,:;,L8;, +..,,,,:tift,:;,.,;!f!,;t0fffC#L!ff;,,,::::!!!i!i:..:. ftL;,,:;,.,......,!L;,!i;!i!::;f:.:;ii!iG#Gi:..,:;;,,...,!i;,:,,,.,;i0t +::,,,itt;;,..,,.:i!tt:!G@#CG@#0fC8f:,:;!:,....,,:;;t!:::,;@C;it!:.;;;;;;;:,GC:;L!!itt!:if;.,,;!t##t;,,:.,,:,,:,,,:::::;,.. .:Lf +;,,::,:i!;;..,,.,::;!!t@##fiG#@G880!:,;;;::::;fi!C88t!LL,:0i,:::. ,:,,:::,,;:,:L!::::;:!C!::;i0@C!:,,,:.,:,,:,:::,:::!;,,:;;;;:i +:.:t;,,,:ft..!:,,:::!iLG0Ci!8#Gtf0@;,:;::!CfLLLLLfL##::,.:L!::!;. .,.....,. .;t!,:::,,iL;;i@#t!;,,:,::,,::::,,,:,,:::;,,;00;::! +. :L;!i,;!,,,:;,;;;!f08@#Gii##CtLLi:,,,:t#Gfftiii!!ti;:;:;ititi;, .:. ..,,::,,:Cf!!tt!:;f!t@0!::;,:;!!ti!!!;;:,,:::::;;:,;Gf:;;: +.:;;;ii!:, .i;,,,:;;ifLCG#CiL#fiitCittii@8ttttti!!;::!LGCLti;,,;;. ,. ,.,!!L!,:!LtitLf!ifCGti;:;;:;;:;L0i!!;;;,,,::,,:ftiiit!t,  +G#Ci!!i:i! .ff.,;;;;;;!LiGC;;:;if!!0008C!!;:;!tftt!!!ifLftLGt, !f!:;;;:,;!i;:,:!::!;!iL@0i;ift;;:;;:::i!;::;!;:,::::,;tt!;08;..: +@#L!::,::;.,::,,ff!;;;::ti!!;;!i!!itiG0Lt::,,::!!!;;;!tLft!!L:,.,ffC80i;L@CL!:,!::;;t00ti;,;;iiit!;;;:!t;;!:::;;:!;,,;i:,,::,..: +::,;!;!,.. .!!:,;ii;,:;,:tii!iti!itf!L#GC8t;::!!i;:,:,,:,,.,,;;;:;f@@;:G@iG#t;:;:;tLfi;tt::!i;tLCi!ii!tfiii;::::;:,,.;f;:::::,!; +;. ;i;;,,:;:;,,:ffGt,:!:itii!!iiiitt!80Lf@@00!;!;. .,.. .!CCC!:;:..,,,,!@G;;Lf!tfffG0ti!iitfti;;!;!i;;;:,,,,:,,,,:ti!tff!;:: +,, .:::;itC;..,Lf!if;i;:LLCLfittiitfiL@0fG##@:,C:,:, ,:;!, .:ifffCL!, .. ,:!LCifC@######CGfC@#8i:::,;t;!!,,;;:,:::,:i:,::::::; +, .,:t;!t;:;!,:t;,,,!:,:tCftiiiiiitf!G#C!##t:...:L#Ci:,,... ..!C8####! .:.,:::;!t0@######LtGiiCGf;;i;,iL;;;::!:,::::;;;;:::,,,LG +,.:ti!;:::::!i;,....,i::ffi!!iiittff!t8Cf8#!.,..,8##8L!::!!if;:;if@#L:. ..,;:,,:;iittttCf;:i;::!:;!i;:iL!,:::;;!i!t!fLittt!i!;it +.,ff!!,iLt::!:::,;;:;t;,ffii!!!!!iii!LCCL##i::,.,:ii!;,;######ftf;:,,:;!:, ;;::;,,;::,:LG:,:,:,:;!CLi:tL;:;i;:iC;iLiit!i!:::;!:: + ,i;!i;:iti!::::;iLGf;.,;ffffiiiiiiiiG0GL#8;... ..,::;:;G###8#####: ,@##t;,,!;:,,:!,,,;;,.....,,::;,.,,, ,!,.,,,:t;;;,.. ..,! +;,,:it,.,,:::;:,,;ii!it::ffttLCftfGC!G@Ct!;:. .:iLCiLCt!;;!!;:!ii;;i!!!iL##t:.,:,,,!fLLLfffffftftiii!!;;;;;!!;;;;;;;;;;::,:::,,f +!;;!!!i;;,::;:,::it!iCG;,!i!!itttitf;fG!:....,!0#@i;;!:;i::!;:,. ,!ff;::i##! ;;:,:##############################8@#@88CftGi:;i +fL:!;L80LffGt;iif!:,,:,..,:::::;;;;;:!!::::,:!G#G!,,..,i@!,,:ti.,.,:;;::,:::. .;;;:f#8#@@#############@###############@GLCL!::! +:,,.:f!;;;ii::i:,,...,::;;:::;;,,,,,:;ii:ii;f##t;;!itt!@@ti!i8t!Gf:ft!LfCLf::::;!!!;!;tittittttttiiiiiiiiiii!!iiiiitti!iG@@0tfLt +::,.,,, . .,:;;;ittLGG00CLCCi!;!!!tG;:::;0@t:!tttCLtfttLtft!8#0iffttC0C0fifLG000L!L;:,,,::::::::,::;:::::::::::;!i,..:;!!C8Gt +LLtitti!;!!!!;:;tLLLLCLLCG080Cti!;!!;!;.:tffti,.,,::::,.,ff:,.,!GtG!,,,::;;;::;;!ii::!t;;!!!i!:::,,,::;!!;:::::::;;ii:,,. ,:;;: +CLCGGGGGG@@@8Lt!!!iii!;;!!!!!;::;;!!;ifL8####;:;::::::::!i!;::::;i!!;;;;;,,,,,::;;;!:;;ifCGLfiii:::;;!!!!!;;::::,,:::;!!:,.,,::: +Ltffi!iitffti!!i!;tti!::;;!;!!;;::,,;########iCGGfGLGGfG00GLGLGC;CCLG0CGGL;C!iGGL000GtC::fffffti;:!!!;::::::;;,.....,,:;!:,:!ti! +!::::,,,,:::::::::;;;;;!!iiiiffft!::!8#000!;,::;;ifi;::;!;;;;ii!;:;:;;;;;::::,;ii!!;:;;::,,,,,!i!;!!;::::,,,,,,,,,,..,,,,:::;;;: +;,,,:,,..,,,,,,,,,,,::;;;;!!!i!!i!i;;;!;;;;. tL. ;Gf. . !!. ,!!:. ,,,tC!,!ii,;;,,:i!!;:::;:::::!!!! +!;,,,,,,,,,,,;;;::::!!;;:::::::::;;;;!itL0C. ,,. . ,!!. .: .,;. .,:!:. .,,,:,;:;:,:i;,i!!;;;;;::::;;; +:;:;;;;:::;!!!iitttiiiiiii!!!!!iittttftttt! :f: . :. .!i:. . ,,;it; ,,,::;;;;;;;!!!; . ... ,,,!!...;! .. ,, ::. . ,f::,,. , .,,::::::::;!!;,,,,;,::;,..:;!:;;;; + ,;. .,,.. .,,.,,.,if!:,. . :. ,,. :00;,,:,. ,Gi:!, ;:., ....,,,,,::,:,.!!, ,:!;:,:,,: +, .. . .. .,;LGC!,,... . .;:. ,t8C,;i;:. .!8::i, .!!,,.. ,. .,,,,.. ..,..,iL;it!!., +Li:;:,. . .,,,,. .,!CCLi,.., .....,;:,,:;,.,,.. ;G:,;t. .;i,,:;. . ., ,:::,. .,:,,,:;i:,.  +:itG@f;:. ,.. .; ... ..,,,,::;,,,:t;;:.,.. :. . ,L0G; ..,,..t, .:L:,., ..,, ... . ,,,.., + ,:;!:!: , ..,... .,:;iiLii:,,;;:,:,::,,,:,,..,ti!: ,t!. ,:,. .,:f;, .,. ..,,,:,,,::, !L;:,, + ..... .,,.,,::,,,::;::;!!i;..,,,,!i;!f:,i,. .!LC, ..,;:i,. .,,.;0!,,. .:,...,::ifL!;G0i,;GC,.  + ... . ,, ,;: ,i;;Lf!ii!!!!;::;;:,.,..::;!8ftftt;:::::,, ..,.::,!!:,.. .i8!t!,, ,;::::::;Lt!;;!!;::,,;tCt;!Lt,, + ..,:.,;:,,,... . .. ...:i;i;!8@#8G##8GLLti!i;:,,,,;!C#@GGC8i;, . . ..,,;!..;#8!,!;:,,ftittLtiLGt!;;,..,,,.,:;tti0i, + .......,,..,:,., .. ,fLi,;tLCCCC0######8GCCCLfit;:!ifGL8@fL;, .... . ,;;:0@;. ,iC:,;;:,:;;!!;;!tt:,.;i;;,;::;;;fi +itt!;:,,....... . .... .,!L;,,:GfCC!tfG8888#########GftffLLG##ft8i;,........,,......:ti;,.;tG:::. .;!tf;:::;fi;;:,,,;;i,:,;f +!fG0GLf!!:::,,. :. ,. ...,!f!,..:!;!ifiifLCfCG08##8@##CL0##88G0#i;CtfCf:.....,,.,,,,. .!L;,if;,,:. ::,:;;:;!,,,;fLi,.,,:,,.;0i +.:;::::,,,..... .. .... ...,,,.,,,,,.i80;;;;!fffC8GLC888008#0#CLG!;;ftL#L!!:,...... . .,::;0i;.,,..::,,:::,:,..,:;fi;..,..,C@t +:G:. ., .. , ,,,!iii:,,,:;;;;!tfC####LL0CGtft;Cf00C!!t;;:..,,...,,:,,,,fGi:.,:. ...,,,,,,::,.:G: ,:!8tt! +:f;,,. . .. ,::,... .,::::::iC;i!.,,.,,,,,::;iLLLttCL0L;;t!;::. ...,:,..,::::,,.,.,;t, .;. ,,,;!i;:,,,,,,,.,:0@;!:: +,.......... ., .;:,,:!i;;:;::,:ffii!::;;,. .,:,. .,!,.,,,,;LLti!:,,. ,ii:,:::,,,,,,.,:!,..::. ,:;;:::::,,,,,. ,;i8f!!,:; +:..,:,,:,,,.,,...... .,,,,:tG;,!;::::,,,.. .:,,,:iti,,,,:;!t!!f::Cti!;;,,..:80t!Lt:!!iii!;:C;!.,:t;:i0;!:,::;;:,;!;;i@8!;:,:!! +;:,;,,,,,,:::;.,,.. .,:,,;, .!!;i, ,,:;::,:t;::,,:,:f!!LLi8i:8###8#G!!i:fG;::::;!!;;;:;;:,,.:ifG8L!::::;!;::;!t8@f!:::::;i +;:,.,.,:,;;,;, ....... .... .;, :;;;;:!ifG80!!;::,..,:,:;:;!ttG#!;08C###i::,;t;,;:,,::,,,.... ,.:ii!i!it!!itti!;i@@Li;,,;;;;!i +;,...,,;,,,,. ,:;;i!!!!!;;;!;::, ;;:;tG#@00GG!tf;;ii;:::;;;:;ifC##!.i##@80, ,ffiit!........,,..,:;ti;:;!;!f!;;!!t8t!:::::,::;!f +!,....,,. .,,:;!!iLCLLCCftiL0G:;,.:,:0#0CLfti!!;;tfLCCGCiCGtitt80@#0.;##GC8, .if;,:,,,,,,,,:,:::i!t;,,:!i;!!;:;i0f!!;:!8C!!i!;!L +ti!;!!;;!!ifCC0CCLitfLLLfiitLi;!,,:,;Gt!!iiiii;!tfttttG#@!!G0ttffL#8:;fLLLf: ,!f: ;!!;;i!::!tf:,,,,,;i!:;!tCCLfttfftt88LGGLttL +@#Cf00LCG80Cf8#@0L;!L@0Lf!ii;,..,;;:,,;:::;:;;!ifLffi;;!i,.,!fLitC08i!!;t##!,i;L, :;;!::!::;;!;:,,,,;!L!!t8@CLfGLitCC!it!!!;;;! +88Liiii!iti;;!tti!;;;!!::,,:. ,..,..,:!!;::,,,,:::,. .. ,:;!!!;80::C8;:8#8!;;:. :,,:,,,,:tt!itii;..:!tG8t!;::;::::::::,.,,,:! +!;;::::;;t!:::fiii::,,. .,:;!iitttt;;ti:::,...,.....:L0Cf,:;,..,,. :@#ff8: .:..,, .;::;i:,:;,:!CGt!:,:;;::!;:,:CG;:!iiit +i::;it!:;!!!!!ttti!;;:;:,,....,;!t08GG0C!;tf!f#0,..:i! .:ifLffGfi;, ,,.,:;:f#t. , ., ::.,; .:!tGf!!t,,tfLfi!iii!;C8i!tfttL +t;!tti!!;!!fC!;LLGt;!tLLti!:;::i!;iii!!;:,:::G@;:i;,,. ...;tG@#####G;;!C;,,,:;!fi,.. ,..:,:f:..,;00i;!!;;!!!iii!!!;;!:iGi;!i!it +!;tLt!ffiiifLtiffCLiifLCLLiii:;!:,;;:,,,.,,,,;i!;80;:iiff;,:!t0##8f!!iitLLt;,.,:iGt;!,.i;;f:!i.,;L!;;!C8G,ifLtittt!;;:,!GiiCffCG +:!it!;!!!!!!;;Lf!!!tf;;!;:,!;,,i:.iC:. :.;,.;Gf;;;!######ttf!::::,;;;tCLLCGt::::;GG!,,,i::;,:,,L;:,;iif:,:!t!;;;;;!!i;iCi;iL!!C +,tGLi:;!!i:;;;!;,,,:::,,,::,::;!;;!i!;;;::::,;0i, ,iCGGLG####!......:@##Lfft0i:,,!Ct,!:::,!,,:;:!f;,... ,:,,,.,:!L;iG!,:!,:! +,:;;,,::;;!!iiitttttfLC00@@88#####@@####@LCLi;::. .,::,,,:!ii!;!tt!;;;itC##Lif#!,::if:tf;ti:;,!;,!8i. , :. ..:!:::;ft;!:,:t +:;!!!!!itfLfLG80008@@#####################Cti:,...:;;;i;!;:,,.;!ifGCff,,!t###f#i,,,!L;;G!;t;!::C::iL. ,,,.,,,...,:,;i::! +fLLLffffti!!!iiiittttttffffffffLLftttttttftti:,,,,:,,i@!,:!L:,,.,:!!!:,,,;tLii8!,:,:ii,it:i;,i::!.:!: .iGfiiiittttttL#GfL +fiiitttii!!!;;:::;;;!;;;!iiiiii!ii!!!!;:,:it;!;!!t!t!0@L;!@Gt8t;:i;Cf;!!L;::!!ft;;!!t;,,;,.,,!,.. ;C: .G#@##@########0### +LtttLCCffffft!:;ifffffffC00GCLffffffLCL;:;:::;fiiffffttCfLLt@#fifLLfCLfLftt!LL00ffLLi!;. .,:, ;L: .:f0@LL0C0@@0@#@##@ +GLffffLftiiiii!!ffti!ifCCLLLLftii!iiii!t88CLiit:,:::,,if;,,;0CGt::::;i;i;,,:iL!;!!!:::. .,.,,,,. ;!. .,,.,i!itttfLff#00CL0 +fii;::!ii!:;it!!;:::::;!!!!!!!!!;;;i!if0#####L::,,:::;!;;::!!ti!::::;;;;:,,.:;;:;;;;;;,,::.,... ,,,., ,LG!!,;LLffC!L@#Lt!!;C +i:,,.,,,:,,,::,,,,,;!:;iitftii!!;;;i!####@##L;LCffGCG00GtGGCCtCL!CGLG0CGGt:L:C0GfG00GfC: ,.. ,, :!i. ,8!, .:i!;;:,:iL8f!:;t +i:....,,,...,,:,::,,,:;!iii;;::,,,,,;L###t!!,.,!G!:;;;;:;!ii::::::;;;;;;;;:,:iii!;;;;;:,.... .. ,fi...,:!f. :,,:;;;:,:;::;if +i:,,,:;;:,,,.,:,,,,,,,,,,,,....,,,,,,:;;:,.,; ,;, ;Gi .,.:!:! .,,:,.,,, .:,,,;if,;: ..!fG80i:. .:tL +t;:;!!!;;;!;:,,,,;;:;!;;::::::::;;;;::::;::;; ., ;Cf. .,.,t:. .. ,: . ,;,,,. :;. .:;ifft;,,:;! +ittiii;;::;!!;;!i!!iii!!!!i!iitiii!!!!;!!i!i: !i. ,,,!; , ,i. .,,!!, .,;!iiii!  ..,.. . .,. .;;:,.,,:,:,. t: :. ,,,: .,,,,,:,. .,. . ..  + . .. ;iti. :::. ..,,.. ,G0Gt:,,.:!!..:0L.,t, .!t:,. .,. .. ,;:,,.  + .!i. ,,,. ..,:.,:..:LGt;,. .,::. .:!if, .,.,,CG:.:L: .,!ti;,. .:. ..,:;:  + .!,,.!t!,..!. . .,;f8L;;. ...,:;, ... :!:..t!. .:fGL:. . .!. ... .  + .i8#8;:,, .. .,,:i0fi::;:,!GG!. ,,. ... .. .,.;:. .:;iCt:. ... .. . + ,.. ,;;t0tff:,.. ,,,.:!,...,,.. ,:::, ,;;,!08C!it;, iC, .. .,::i!, .. .,.,!8i,::. ...,,, .,..,:;::,,.., + ;!,,. .,::!t:i, .. .:. ..,::::...... ... .:;itti, .,::, .... .!t:ti,,,..,,... .:LC:;Ct!,.,!:!L;:!tLt;C0Cii!;.  + ... ..... .,.. ..,:!ii:;!!:;:;;;:;::,,:!!;:::;i!tti;,..,.. .,,,,,. .,:;!:::,:G8;;:,,;;::;;!C;.:t0C!;!ii!!;:; + .,,,,,,::, .:::,,, .,,....,....,,,,:!L80@GC@#G@ffiC8L;:,!0!f##G0f:,.. .. ..,:;,:!G@;, ,!iG;,!!: ,:;:::::;ff;: +:!itti!tLLt;:;;;;!;;::, ..:;:!!;:,. .,,;i08LG@####@#@80CCLG0tiffiitLLL!:,.,,,....,.......:LC!:. .,::LC:.!;: .;iiti,:;;ii + ,::;;;!tffCG0@@@@8CLft!!!;;;!;;:,,.... .,,:!t;;i08#8#8#########fi@@GfC00#88i;:....,:,,..,...,::!ti,.t!:!i;,.:;;..,;:::;:,;!:,: + .,,:;:::;;!iiiiiiifLCG8@@@888Ct!:,,,.....,if;:,:tttCG0G08##88#8fif##@@#GCCCGCLi;,,,......,::,..,:i!:!if;:t,.::!,,;:,.,::,,,:., +....,,,,;,:::!!;:,,,:::;!!!i!!!ii!!;;::::,,,,,:::,,,:0@L!iL00LL0#Ci!LG008LitLCfC#ffG::,,,...,,,,,,,:::iLG;;f:.:;!...........,,,: +,.,,::,..:;;;;;:::;::;:;;,,,,,,,,......... ... :ii!;,,:::;i0C!0f!CGLCtit;iLf8Gi::;:;:,.,:;;;;!;!,,:;!t!, :;;,.,,,:,...;::;: +::,:,,,,,:;:;;!!;!;;!!!!:,,,;!;::, ...,::,,,ii:!,::::,:,:;!;:;LL8#!!!;::,,. ..,::,.,,,,.,. :;,,.,:;t:;;!;:::,,,:,,, +i!!:.,,,,,:;;tCf!;;;;::,:::,,,,.,,..,. .,, .:;;::ti!:;:!::;fii!...;,..,,;!!!fC;,..., tGi,:;,.,,,,,;t!:,,:;!Ci:;,,!0;,;....; +!;!:::!!iti!!iti::;!;;:!!C;:;,...,,!;,,,,. :,.,.,,:,,,!:;,:;:::,,.,i:,:,,:;i;;:,,;t;;!;:,.i@f:Lt,;ii!!:ft;i,.,:!0LCL!!8@!:;;ittt +iiifLLfLC0Lf!;;::::;;:,:i!:,:;,::.,,,,:;, .,:,,,.. .,.,..,. .!!;:.:L!:,if;:,.,;,!Liif0ii::G!,::,:!i!;!;::,,...!Ci;iLL8ttG!0#### +Li0####80GLf;:;i!;!;,::;i;;,,::,,,,:,,:;!it0Lt;!t;.... ., ,, ;!!;!;::i!:::ii;;::,:;;:!GL:,;Li:;;,,,,,,,,..,:,,.;G!:!!i!!LC!L#### +CitLCGLt!;;!:,,,,,;:,:::t!:,,:,...,;::iC####@i;!Cfitii!:;... ;!:!:!f,,i!:,:Cf;:!::;:,:t8;,fLfift;......,.,,:::;!f;itf!!ifi:;tfL8 +Lti;:,,,,,,:;,,,:::::,,::::,,,,,,.,,;0#@LLffi;;tfLG8#@0G!;,. .,,.,:;i.,it!;!:,ii:,t!:it@f.iLt:,,,,:::::::,;;tf!C;,:;;:;;ti::!G0f +i::,,,:;,,;L;:;!iiif!,,!!i;i!tftttttLCftiiii!!tittif#8t88LL!!!!;;!;:,.;iti;, ,ti::;:;:iLi,!L: .!ii!!t!:::!i:,,,.:::!:!i;i0f!!! +!:,,,;ti;,t!;;;::!;;i!:if;:i8##00##@C;:::;;!ifLfLt!:;t!:;!fL08@8@@G!!;!8##f,.,t!;ft:::;tf,:L, ,;;;;:;!::;;;::,..,:,,!:!G0Cii!:i +!,::,;!:,:;!::,,,,.,::i;,,:;tCCftttt!!i!,,,,,::::,. ,i. ,;iitf##i:L@C;C@Gtt.,!;:tt!:;::;::;: .;::,,,,,;ft;it!f;..,:;i0L!;iL!ii +i:,::::,,!!;!;;;t;,;;,::...,,::::::;:!i;::i!;. ..,,, ..,,!Lft,:;:. ,:,,,G8i;!:;,,:;!i!:,::iCt ;:.,,:.,::;!;::;f::!CGt;!::;;::: +i,.,;!::;:::;!t!Li:,,,.,,,,,;i;;ift!!!iitifLGt,..;i; .:!tfffCCt!:, .::,,tLf:,:GLtG!:;:Lf:. . ., .;.,;.,;: :ttGGi:,!!:;L:,ii +i;;::::::;::,:!;;t:.,,.,:;,;it;fLLtffftLGi!G0#f;;::.....;tC@#####@C;!:,,,,:;;!tL!Lt;;;tt!:t8f, ...., ,!,!t,.::;CGi!;:,:i!:,:i!:; +itt!:;;,!ti!..,,:;,.,,:,::;:;:;!ti!ittttiitffLCC0G!ifff!,:!t@###Ct!!ft:!i,:::,:!ff:..,;!;:f8C!::i!,:!:t!;t,.:C0iti;tffL@0:,.:;;i +:::::::::;!;:::,,,,,,,,:,:;!,.:ft!:!itt;!;Lf;:;iii######Ltf!:;;:,,!!!itti:;L;:::;!;;,.:Lf,tCf;:i;!i:tf;i::::tt!;;;;;tff8f, iLft +:,:;;:::;;;!iit,.:;:;,...,:!,.:!;,,::::;;!itiiitttfLGGL#####:.,....,:8###i!LL;,,,;i!!;:!:,iGt, :::!;:i:::.:fG!G;!f;,,.:;: :Cti +;iifi;,...,,::,. ..... .,:::;!!!!!!!iitLC0@@####:.:::;iii!;ifti;;:;itL##fi!;,,:;!f!::;;:!0C. .L:;G!if:!,:t;!GC!:. .!, .,!; +;:::,.. ......,,,,::::;;;iitffLLCfLLLLfttLLLCCC0@i:,;t;:::,.!!ifGGLtt: :iG##8,,,,;!!:,;tGf;Lt, .!t!0L!L;:i,Lt;C@t, .;,  +;:::;;!!!!;;;;!!!itttitttiii!itfftitti!!!ittttffi:,,;0!.;G!::,,:;!!;:,,,,t8#Gi,,,,!t,.,:;,:ii ;0!tG!!i;!::C;:iC:  +LfffiLfftiiitLtttftttiiiiiiitffLCLtittt!!LGG0@##t;;if8t!t@f@C:i!;f!i;:tititffi!;;!ti:,,,..,;;. ,G;:C;:t:t,.:,:;C;  +GLfi!!!itfGCGCG00GCLffftfLCLCCfifLti!ifLCLfftffffittffffff8#L!fLfLLCftfLttG080ttLC0C!tiiiiitt, ..,,,...,,,,.. !G;  +Cti!;!!!tftLfiittii!!!!!!!!!i!;:!it!;;;;L8##GGC!,,,,,i!:,;8CG:,::!i!tf;:,:;!!!;:;;;!LtfittifC: ,,... ,;!;. ;C;  +880LCLff!!ttt;:::::;;::::,,,,,.,,:::;iffif#####!.::;;;;::;it!;::::;;!!;::,,.,,::,,,;it!;:tLGC: ..,;:.:,... .!!, ..,.  +GLCCttt;;:::::,,::;;;:::;;,,,,,::,..;####f;iC#L!fCGC0GtCtCCtLfGC!CGLGGLCGf;L:!Cf!fti0LC!;!!iL, .,, ,,,,,. ,:, :,:, :0t;: +t!!;;;;;;;;;;:::::,,:;:;;:::::;;;:,,;0@@#i,,;:,:G!;;;:;!!!::::::::;;;;;;;::,,:ititttttiffi;:i, ,. . . :: ;i,,L! .Ct,.  +Lt!!:;;ifttft!;;:,,,,::::;;;!;:,,,;::;!i;;;!;i:,,,,. !G: ...., ,LCLft!;;;;!!i:!, .,,,....... :L::C:,,,.,tt.  +L!i;:;;!!!!!!;;;;::::::::;;;;::,,:;;;tCfii;:;!t. .ti. ;C; ..:..:tii!!;;;;:;;i!,. .,::::,.,,, ,!;,;!!!it.,f:  +ttttttttttttttttiiittiittftttiiiiii!i!ii!;;;!!! :: .,.,:iiitttfttttttt:. ,, , ,. .   . . .. ;!;::,,:::,,,,, i: ,: .;:. .,.  + . .,. ., ,. ,CLLLi, , .. ,,;G! .!i. .:ifi:,, .,,, .., . . :,  + !, . . .::,..:. ,:,. .,::;i. .!f!, ,t; ,:iLCi:,,. . , .,  + ,: ::. . .: .. , ..,:;, . ..,,,,, ;i, . ,:;ifCi,.. .. ..  + .. ,!. . ;:.:;:,.,,. ;GG: .,;:. .. . . ,.::;:... ..,,,.. .. ,!0f:f!::.. .,,:;,  + ..:,:,. .C8L:,. ,., ;f!,.,L0L. ... .!:ii,;:..,,.,,,,,... .,;Lt::ttt;;;,, .i!;Li.  + ,:,.. . . .:;tL;!;,,. ,,..;, ..,:::.. :: :Li!;;:,. ... ,;,,;,....,;:,!;,.:;,.:C0:,:,.,.,;;ff:;;i!ff:,. + .:;: :::ii:!; ... .,,:::;f;,,,,,....:t;:;::iL!,.......... ....:;:,,:;!0G;,. .;;iiGL,,iiL:  + .:. . ..... . ,, .. .;!iCiifC0LtLGLLCi;f8t::::,,,,,::,. .,.. .. ..,::;CGf;:,, .;!iiL;.,tiC:  +.:!, ..,:::, ,.,,.....,,,::;::,,,.. ... ..,,::t8#C@#####@f8#CfCLLLtii0CLCi!!;:,,.. .,,..,..,::::;!i!::;. .!iL!:; ,itG;  +;fi:...;!iLf!:. .. .,,,::;iifffC8GCftti!!!!!!;;;;:::::;;!iL0####fC@@######0#####8#88Ct;,, .,,.,..,,,,. .,:!tt!,,:it!:t; ,iiC;  +;;:. .:;;:::,,:,,,, .,::::;!ii!!itfLG00@@@@880CLLfi::,:i!tt!:;L##0G#8GGG0@#08#8GGLG0!i!;;,,,,... ...,::,:;Cf!,;C;:,;iG; . +ti,,,,tCi::;;:,,:::,,,,.. ....,,,,:::;!!!!!!i!!!!!itfLft!;:,.. ...;8f!!tLG##@CG0800ttG@CG8@#@t:;:,,,. ,:::;,,.,::;i,!f: ,;iC;  +::!;t:;;;;fCG;:;!i!,!t!;,.,. ....,,::;!i!;:::::,,,,,::::,,. ..:::;,,;fC##fiCGLLfiitiCiii!:...,,;,...:;::,. ;;,,,. ,;iL;,, +,,;!;!,.,,;!;::,:;;;;;!;:,,,,,;:::;;;;;;;;!;:;;!;:,,:;:,., ,;:!,:;,,:;;;:,:fGC@L;tG!,. . ,;!,,:;:,,.,,;;,..,.:tiG!.  +;:i::;.,;,;,.,,!;:!t::iL;;;:,:,,:::::;!tti!!;;:::,,,,,,... ..... ,f:,::,.;t!i;!::::!;;;!!:,...:,:,. ,08t:GC!!!i!C;!f::,.:iiGf:: +;:;;;:,,!:::;::!i::;;.!Lt;;:i!:;tii!!itLt!!!!:;:!,::;,......,..,,,!;.,. .,:,,;C;:.::..,,,,:,:::t:;:;,t@!:f!:;i!!!;;!;,.:,;!Ct:; +;;!fiL:,;;iit!!!!!;!;:;;;:,;ifLLCG8GLLi;:,,:;;:::;::,;,:;,.,,,,;;,.,!... .,,,,.,. ,ii:!t:::ti:,:!:;i:.,::;!i;::,,,,,,,:!Gt,  +;;!CLf!.:!0fCiLGLftf!L!i;;;;L####@80Cf:,;!tft!!:;i!:,:;:,,,,;,!;;;,.,:;:,,,,,,.... ,, :!;;;::;;:,;fi,.!ti;i!:,,:,,..,:;!!;:!GGt; +!::;;;;:!iGfGGifCff!!tfCt!iitLG8Gt!;;!!iC@@@f!!!ittt!:,,..,;;,,,,,:f:.:t!;ii!!:;;!,,,.:;:!,,;f!,,:CL,,fLi!ti:.,.,..,,::;!;;!C!,. +!:,,,;f;Lii!iL!;ttt::;it!;tLt!:::,,,:f@@Ltti!!LCLG@#@ft!!;!;,,,::!tLG,.ii!t!ii;!if:;,.::,,,,::;i!;::.,tL:.,..:::::,:;,ifCf:tt.  +:,::ift;f!;!it;;fi;;i;;;!!;;:,::::,,t@Gf!!!!tittifCtL@@0!00titfC0L8@0;!iti!!;;!::,,:..::;....:;i;,, ;f;. .iii;!t;,::;!:,,,  +:!;fLi::!;CLGL:!Li::L!;:::,,,,,!!!:,t!;::;!tfffi;:!!:;ii;;!L####Cftii@#@@L;;!,,;. .. ,::,,,:;:;:!;,:;L, .::;;:;!,,:,,,,:,,  +::iLL:,!!:!ft:::tt,,:;,,,,;:,;,:!:,:;i;:,,::::,,. ,t: .,,;f##!;80,:##Gf!:....,,..,:,,;!ittt;::::ti,:!:. .:,:,,,,,;it:!!;f!.  +;!tL!,,f;.,,,.,,:::;;,,,:;ti,,,,::;i!!!!,;i: .,,, ,:,,:it,,;:..,,..;@0:;i;,...,:,;itfGGCGf!;;;;:::,;;!; :,.:::.,:;!i:,,:G:.  +;i!;:,,f;....,:;;::::,,!i!;;:,,:,,::::;i:!Li. ,;i; ,:ittfLCti;,. .::,,tCG!:,,:;!tL88GGGt;,:;;::iLii,. .........:,..!: ,;iti +:!iit::L; ,:itf!:::;fi::::;ii!,,:.,:;:,:!;t!,...,......fL@#####@0i:i:,,,::;if8C!;;;!;;!i!;;;,.,t;tf;Lf::,. : : ;,,t,..::;;LL;  +;LCCG::G; ;G!::!:itff!,,.,;;!!:,,.,,,,,,,,,,.:::;ttfLi,,!L####Cti;iLt!it:,,,;iGC;,!:,.,!,....,ii;;:,:iitL;:;;:,::;i;;f..;G0CtC;: +;!!i!::i;:i!::::;!ii;:::;;;::;;;:,,,,:;;,....,;:######Gff!;;;:,,;!:!ii!!!,.,,;!!i:.,, ,i,. .;f!::t:,;;;fifLff!iCtft;;::!ti;!G!, +Lii;!!:,:i,,!,!i:tCL;.!fffi;;tLt!:,,:!ii;.,, ..,;tffL####@,... .,,.!##0ffi!:,:;;;!!iiitti!!:::!i;:Lt:!:::,:!;!i:;i::,.:CC!G,!0i; +0CLti0f::;,,;,:t:;t;,.:!!:::;;::,. ..,,:,,,,,,,,,:::!!iii!;ttti;;::!#8####8;,:;itt##########i,;i:::!t;:!. !f:t;:t::;.:f;!C!!0!  +Ct!;!Gi:,,....,.. .,,.,::::::,,.,,,,!!!tttttfC08f::,,:!!ifG0Ct!i,;080##t,;!!!t@0CCCG8G8#L:;!;:,..:;,, :C;!0!iC;!,:!:,C@tL;  +GCLLLCLfffttttii!!;;;;;ti;itfffLft!!!ttiitffLfffLL8t!i:ti,:,,;;!!::,,:,!@##i.,;ti!!!;;!!;;tft:ffCt;:,:::. :Cii8i;f!;!,fi:i0tL;  +###############@@8GG0CLCfLCCfi!ittfGCG0LG80008CG0@L!Lii8fGt!f;tf;::i!!CttL8t;!iiti!;;;:,,,,,.,;;;;;tt;Ct: ,08!Gf;t!:!::f:,:iG;  +#@80000000GGGGGCCLL00CLLfffti!!!tCLCCffLGCffLGGCC0!!Ctif8#tiftfLfLtffttCGitffLGGLGGCtt!;;;;;:::,.;t!!Lfi:. ,tt:!t:!;,t,..,;;!0!  +#0LffLCGCfLLLCtitiiitfCGGC0GfCCfiiff!;;;fL:i#####;.,i:,;80f,,;;!ttf;:,,:::,:::;;ifti!!ifLGGGCLLfttti!;!ft. .......,.,...,;i0!  +#0LLfLfii!iffiiii!!i!!!iitLLftii;:::;ifff!;i####8::;;;::it!;:;;;;!!;:;;;:,:,:,:,!ftiittLCCCG00@#@8GGL!iCf, .. . .:;:,..i0;  +0ftttii!;;;;!!!iii!!;;::;;;;;;;!!;;:!####f:;ittC!!G8GGLC;fLLCfGC;CLfG0GGGt;C!tGf;GGC0f0Litiiiittftttfi!fL, ...,::..,,,. .;!G;  +0ftfttti!;::;!ifLftiititft;:;ifttfti!0#@8i::;;!:;,:;!ii;,,:;:;;:::;;;;;;;,,,,:;;:;!!;!;;::::::::::;;;!!!t, ,,,: .,,... :;t:  +f!;;;;;:;;:;:::;;;:;tffi;;:::;;;;;;:::;!;:::;;!i:,,. tG, .. .. . .,;,,..,.,,,,,,,,,::;;;;;iC;;. ,. . .;. .:f;  +f!;:::::;;:::,:,,,,::;;:::;:;;::;;;:::;it!!iiiif:iL. ;f, .,,:,.,,:::::,:;:;::::::!iftttiitL!.. .. .,f!  +ttttti!!!!!!;;;!;;!!!;!!iittttffLLffttiiitiiiiii:., .,.,::!!!!i!!iiiiitttttttttttttt!, ..,,,. ... ,;,  . , . ,!!;;,.,,::.... ,!. ;. ,:,,, ....  + ... .. ;: .. .. . .ffttt: . .,iL, ,i, .tLti:,. :: .  + .,.,,..:. . .,,:,. ... .,,,,:; .!!,. !;. .,, .,::!tti,,.,. ..  + .,!. .. .,, .,;: . .... ,..::.....,. . .. .,:iG;,i::,, ...  + . ,,,, ;:.,,. ,, .tGi ,:;: .. .,,:::;:... . .... ..;iL::;tLt!!,,. ii: +.:. ,.,!CL:,. .. . .. .;!;,:f0Gi. .. .i:!i,.::.,. ,;....:;:,, .;Ci,,:::::,:!itf,,;i! + . ,tCGi:::,.. ,, ,, ,::,.. . ..i;,LG!!::;,,,..... ,,,,,, ..:::;!:,,,::i0t:,,. :;;C!iC:,; + .,. .,,:!Cf!i.. . ...,,;tf;:,,:,:ii:,. :i:!t!;;:.... ....,:;..;fCC;:.... ::;t!Ci, : + . . .;: .,,,... . ., . .,:!f0tifLGf;i;:;!iti;!@C;;:::;,,,,. ... . ,... ....;!!:,,,:;,... :!tfi:::., + .... .:f, ..,,,. .,,,,,,::;::,.. ..,,:,;L@i;f;;8####G0##88CL#0ti0fi!!;,.. ...,... .,.. .::;i;:;;,.,iG!,:;..: + .,,,. ,;fi,. ,iit!;. .,,,tt!itttC0GLiii!;!!!!!;;;ii!;;;i#############@80@#####8L!::,. . .,::,. ..,,;;;::;f!t:,f;..: + ,:::;:,.,,;!;,. ,:;::!,,,. .. .,,,,::;!iiiiitfLC008@88888CLL::itifGG##@8##0GGC8#####00CfG0!!!;:,,,,,,. ...,,,,,!Lf!i,;L:.:. +,tffL0f,.:!fL:.,.,Li,,:;::,,:,,,,:,. ...,,,:::;!!!!!!i!!!!!!it,..,,,,;!tGftfG###CL###00if80t0G@#C!::,::..,:::;:;.:,,:!,,ft, ., +:i!;;it!::,;i;:!i:;;:;fGt:;;i!:!f!f,., ..,.,,:;!ii;::::,,,,,.,,,... ,:;:;!tL8L!tLLfLf!!i!f!!;:,. ...:,,,,,.... ,!..,:,,,, +,!!,,,,.,, ,,,;t;:,,,,;t;:,::::;:!;:.,..,;:;;;;!;;;;!!::;;!:,,,;.,:,......i;,:..,::,,:!LG8;:f0;,, !C;,,:,..,,:;;,,;t!;! +,::,;,..:!:,;:ii;;,:,.,.,,:;::i::!L;:::,:,,::;::;!fi!;;::::,,.,:.,t:. ...,,:!, ,;;:.:;,,;;!;;:;t;,.:.:,, !@G;LG!;i;fi:G;:;;::; +;:,,,;:::t,,!:!!;;,;:,,,,,!t;:;!.;Cf;i:i!:;i!!!!ifLi!;;;;:;;,::;.,i!,,...,,,:. ........ .,Li.,,!, .,.,i;:;.:8f:!;;;itt;;!i!!:::: +i::;:!Cti!;,:,fLtL;:::!i:;!i!;;;:!;;;:;itffLG8GLtii!;:;!;::;;:::;,.,i!:,,,;, ., ,.,,,, .,. :!::::!:::i!.,!;;!!;,,,::;::,: +t:i;fCi0LL!,:,!GLL:,:tCLt!GCLff!Lii;:;;f###8@8GLtttf!;!;:::!t!::;i,.,!i;,!:,..,,,,,,,,::,,... : .!;:::i!!.,tt:!i:,,,,..,,:!i;;: +i;;;!t!:!i:::,:;!;:,;iLfGtiGLft!tiCt!iitL@@@tittffft!:,,,:::t;:,;;!;..:;:,,,.i!iiiit;ttii::;i:,,..;;,!:Lf!,;tt:ii:......,,:;;!;: +it::ii:,:!,;!.,,:!!,!:!!it!tft;::!f!;f@L!!i!!fG08@@#8ti!!;;:,,,,;!iit. :,:;i!;Ltfti!!i!!!;:;f!,!. ,,,.,;;;;;L:....,:::;::!:!fCG; +ii::if!!!::t;,:;tf!,;:;iii!Li;:!:;i!;LLi;;!iiittftiC##@CfGCCti!f!G8@L;;itL088:;0;;i!;!!;;;:,,... ,:: ..;!!i!. ;ii!:ti,,::!;: +!;;:;!Lfti;f;;;fLi,::;CCG;;Ct::ti;!:!;;::;iffti;,;::!if!;;i8##8fLftC#G8@8tLt!,;!;!;;i!:;:.:,. . :,,,,::::i, ,::;::!:.,,,,,: +!!ii::!ffi;L!:iLL:,f;,if;::;f:,::,:::t:,,::::,. .!:. .,.:C##!f@G,!#8ffi!:,.:!;i;::,,... .:..,;:,:!!ifi;;::;, ,,,:,,,,,;t;;!; +!!!;,:::;:;L!ffC!,:C;.,,..,,,:!!,,,,;i:..:i, ..,..,,,;..;t::!:,,:,.,0@!.:Ct;;!fii;;::,,. ...:::!tLC0GCfi;!!iti. .:.,::,.:;!!!,, +!;!:::::ii;t!L!;:.:C;...,:;!::;;::!!;:;:,:;,..:!:,i. ,:;itfLLti;,. ,::. ;ifCt!tttt!;;!i!;;;::;!!fG@GGCLt,:!!;,.:......,.,,,.:!.  +;:;:;;;tt;:i;;!!!,:C;.:iffi::,;Lf;:::;tt!,,;,....,,:..iL8#####@0t:t:,,,::;!tGtfLG0t!tCGGCCfti;:::;!!;;;:.,t!t,..:. :, :, !;..,,  +!!:;i::if;,;:!ffL,:C:.CL;:;!;!;i!,.,,,:::,,,:;:;iffLf;:!C####Lti;iCf;,;,,,,;iCLttttttitfft;;!,,.. ,i,...,ii;:f;:;;:,:::;::t, .!i +!!:,,,,:;!!!iitti::;;;;;::;!!!!;,:;;;:,:;;:,,::8######Lf!;;;:,,;;:!i;:::,,,:;;!i;::!:,,,,. . !f, .if!::fttCCLi!Cttf!;:,,!! +;!:,:!!tL@@@@0Cftt;:;;.;;,fi!CC!.;fffi!!fLt;..,;tffL####8,... .,,.!##fifi:,,;;;;!itttiiiiti!!!ii!itti!;:i!i::t;:;;;!::i::;,,!L:i +tLt;!iG@####Gft!!8G;,,.,,,;::;;,.,:;:,:::::, .,;itii!;iti!;;:,;######f::;ifif######################C::i,::. ,i,;;,;,,;.,C!;f +t!!iiifCCCCft!!!!ft!;:,,::::,,,,,,::,:;::,,,,.,,:itCi,,,;!!ifGGCi:;,i##@##;;;!!!tLLLLCGGCGG8#@0GGG0##88G;;:,,, ,f:;G;:C;;,,::,, +LfC###@@80GCC0888CC0@GLCG0GCCLfftfLLtLLLti!iittfCLCt;:;t:.,:;!!;:,,,;:!##C::;i!itt!!!!!;;:;;!!;;;!!!iiGL;:;i!, .;ii0i;f;:!.!f:: +##################@@##@@@@880088CfLCfLf!!ttCG@#@##0!t!00i;;iLit;:;;ifftttit!!itf@LtLCLti!;;:::;;:,,,,::,:i;;!t. i0iCL;!i:;,:C:. +#@8@######@088800000CGGCGCLLfLGCLCCLff!!ttttLC00CC!ifif#8!itfttLtLfLft0C;iLLGGfGGLLCttttffttiifLi:;;::,,::::ff, tG;iC:!i:i,,i,, +#8GLLLLLLLff000GCCLLtfLffiii!!itLG@8@8fi@8!:t####!.;;,;08;,:;;iiti::,:;::,::;;;!!;!;;;;!itttttiiifLGGCfttfttff: ,,.,,,.,,:.. ., +Li;;:;!iiiittftitti!;!i!!!!!!;;;;!iifCGCLt;:;G###!:;;:!ii;:;:;;;!;;::;:;;::,,,!fttii!!;;!i!;;;;!iLLCG0@0G@#@@8: .,,.  +t:,,:;!fLffftti!!ii;;;;;;itti;!!:;!:;####f:;!!ifi!G0GCtL;LGLCfGf:CGCG0CCGL;C!iL8888GCiL;::::::;!fftttttittLLG@; .,..:,::,  +t;:;;::;!;!!;;!:::;!;ii!!!!;;!tft!i;;0###f;!!!!!!::!i!!,:,;;:;::,:;;;;;;;:,,::;!iiii!!::,,,:,,:::::;;!:::;;!!i: . .. :;,.:.  +t::::,,,::::::,,,,:::::::,,,,:;!!;:::;!i!!;;;::;;:,.iG, .:;:;:::::,,,,:,,,,,,,,,,::::::;;,, ::,,. . .  +i::::::;;;;!!!;:,,,,,,,,,,,,,,,,:::::itttft!;::;!f;.;f, .,,,:, .,,;!;;::::::::,,,;:,::;::::!;!;!tt,, . ,:  +iiiiiiLfiittiii!ii!;;;;;;;;!!!iiiittttiftffftii!;,. .. ,,,:;!ii!ii!i!i!ii!iiiiittttittfttii,   . , , ,!!;;,.,,::.... ,!. ;. ,:,,. .....  + .. ... ..,.. ... . .ffttt: . . .,iC, ,i, ;ffi;:. :,  + .,.,,... . .:,:,.... .,,,,:: .!!,. ;;. ,,. .,::tfi;,,., . .  + .,!. . ...:,. .,;: ...,. ,..;:....,:. . ,:;LC:!;,,,. ...  + . ,,,,. ,!..,. :, .fGi .,;:: . ,. .,:,::;:.. .. . .... ..!tt:!;ffi!:,.. :t!; +. , .,.:tCi:.. .. . .., .;i;,:CGG!,,. .. .t;!i,.:,.. .::...,;:,,..,;G:,,:::,::!i!t!,:;f; + ..., :tGC;:::,. ,,..:. .,:,.. . .t:,GG!;;f8!!!;:,... ,,,,,, ,:,:!;,,,,:;L8!,,. ,t:;L!Ci,:! + ,:, .,::LGti;. .,,,:if!;:,,,,:ii:,.,t!tL0Ct;!,.. ...,,;:.,!fGC;,,.. ,t:i;iG; .i + . .; .,:,.,. . ., . .,!f@8fCCL0!;f:,;!ii!;G8f;;!;::,,,,. ..,. :... ...,!!!:,,,:;,.. .!itt:::..! + ... .,::. ..,,,. ..,,,,,::;::,.. ..:;;;;!08!if;!8###@G##@8CL8@L!t8t!!!:,.. .,,,.. .,,,..,::ii;;!; :LL;:;, .! + .,,,. ,!L!.. :itt!;. ..,:;!iittfC0GLiii!;;!!!!!;;!ii!!;!L##@#######8##@80###@##Gi::,,.. ...,:,. ..,:!;;::!i;!,!t:.,! + ,:;:,.,,:;!;,. ,:;::;,,,. . ,,,:::;!iiiiitfLC008@@8888GLLf;!LtfL00##@0#8G0CG@#@##8CCfL0t!!;;,,,,,,. ....,,,,;iC;i,:ti,:,; +!tfLGi,.;iff:,,.:L!,,;;:,,::,,,,,... ..,,,,,::;;!!!!!!i!!!!!!iti,.,,,,:!iL8ttL8##@C0##08tiG@ifGG#@t;:,:::.,,::;;::,,::;;,;L;..,! +;;;!!i;,,,;!if!;:;;,!LG!:;!i!:if!;.., ..,,,:;;!ii;::;:,,:,,.,,,,.,. .. .:;!i;!fG0tifLLffi;i!ii!!;:.. ..::,,,..... !: ,::,.,! +!;,.,,.:...,;f!::,,::!!;:,::::;;!;:....,;:;;!;!;;;;!;:;;;;:.,,;;.,;, ....;t:;,.,:::,,;fC8f:i0L::. . :Gi,,,,,..,:;i:,,ii::t +!,,;...:!::,:!:;;,!::,.,,:;:;i::!G;,::,:,:::;!;;!ti!;;::::,,.,,, :f:.....,,;;.,;;;,;!,,;!!;:;;fi, .:,:, :@#t;Gf;!!!C;iL;;;:::! +!,.,;::;t:::,::;::t;;:,:,!t::;;,!Ct:!!i!:!i!!i!ifLi!!!;;:;;,:,:. ,ti,,,.,.,,:...,..... .:L;,.:;,..,.,t;,:;:L0;:!;:;it!;!i!!;,;,; +!;:;LLiii;:,:iiif;i!!it;;!i!;;;:;;;;:!tfLfLG0CLtii!;;;!;::!;:,::,,,:t!,,::. ,. .,.,,,, ., :!,:;:!;!:!!:.!;;!!!::,,:;::,,; +t!;GttGLL;:::!0LC;;!CLCiiGCLft!f!i;;;!C###808Gttttff!!;,::!i!:::!!..,i!:!:,..,,,,:,,,::,,.,. , .!::::;f!.,tt!;i!,,,,...,:;i!;:: +t;;t!:;!!;i;:;!i!:,!ffLGiiGLfi!ffCt!titL8#80iitttfLt!:,,:,;t:,,;:::. .::,,,,i!iiitt;tti!::;i,.,.,;::;,ft!.:iL!;t!.......,,:;!;;; +f:;t;,,:!:L!,::;i:,;:;!i!;tft;:;Li!;!G8t!!i!!L00@@@#Gt!!;;!:,.,:;!i;: ::;!!;fttii!ii!!!;:!L;:; .,,,.,:;;;;ft,....:::::,;;,tLGt: +t::tt;i;,;C;,!ftf:;;:!ii;;Li;;i!!!;:iLfi;!!tiittCttG##8fL0CtiitiG0@#t:!tC0G0!:C;!i!;!!;;;,,,... .:;. .,;!:;L: ,!ii;!t:,::;;:: +i;:;iLft;:f;!i@C::i;tLGC:;Ct::L!;:,;!;;:;!ifft!::!::!if!;;i###@LLff0#88#8tii::!!!;;i;:!,.:. . ::..,:::,;t, .::::,;;,,,,,,,; +tt!,;tff:;t;:tGf,:C;:tf;,:!f:::;,,,,;t:,,::::,. ,i,...,,;G##iG@G,i#8ft!:,.:!;i;::,,. ,,..,;:,;!!if!:;::i:. .:,:,,,,,;ii:!!; +ti;,;,;;,;i:iLC;.;G;.,,..,:,:!!,,,:;!;,,,;; ..,,. ,,!:.,!t::!:,,:,.,8@;.;f!;ifii;;:,,,.....::;!fLGGGLti;!;!;f: :,.:::.,;!!!:,, +i!::;,;t;:!:!!;:.;L;,.,::!;,:;;::ti;;;:,::,...;!,;, .::!itfCLi!;. ,::. ;tLLtttti!;;!!!;;:::;!iLG8GGLLi,:;;;:.,,. ...,..:,,,i.  +!;;;;!ti:,!:;!!i,;L:,:tffi:,,;Lt:L!,;tt!,,::,....,:,..tC@#####@G!:i:,,,::;!tCCLGGi!fCGGLCft!;;;:;!!;;:,.,t;L;. ,, .: : .t...:.  +!;!!:;tf,.;:tfLf,;L,,Gt::!!;!!!;:,,,,:::,,,,:::;tffLi,,i0###@Lt!;iCt;:;,,,,;iCLtiittitfti;!;,:,..:i,. .:ti;:ii:;;;:::::;:;!. ;fi +!:,,,:;!!!!ittt!::;:;;;:;;!!i!:,:;;;:,:;;:,,:,:######Gff!!;;:,,;;;!i;:;:,,,:;;!i::!:,,,,. . , .tt, .tf!:,fftLCft;fLifi;;,.;;; +i:,,!!tC@8@@8Cit!;:!:.!::L!iGC;.!fffi!iffi;...,;fffC####0,.. ..,.f##ftf!:,:;;;;;ittiittti!!!iiiitti!:;i!t::L;:;;;;::!;::,,;L!:i +ft:!i8@####GCi;!8L:,,,,,:!::;;,,,:;:,::;:,. .,:;itii!;ii!;;;:,!######f::;ifif#####################f:;i,:;, !::t::!,,..tf;Lt +t!i!tfCCCLfi!!;ifi;::,,::::,,,,,,::,:;:;:::,.,,:!tCC;:,,:!!ifGGL!::,t##@##:;;!;!tGCLCGGCGG8#@0GGG0@@88L:;:,.., :L;GL;Li:;,:;:,i +CG@@@8800GCC0080LC08CLCGGCCCLfftLCttLLLttiiittfCffLi!;f!,,,:;i!;:,,,;:!##f::!i!ift!!!;;::;;!!;;;!;!ttGt::!!:,. :L!i0!;f:!::L:.t +#################@@##@@@@880G80LLCfLLfi!!tCG@###@@fiti@0!;!iLii;:;;tLfittit!iitC8fLLfii!;;;::;;:,,,,:,,:i!;!C, ;0!!0!:t;,::t!.. +#@#######@88@800000CGGGGLLLfL0CLLLfLfi!!fftfC00GGL!titC#C!itfttLiLtCft0L:tLLGCL0CLCGtitfftfiifL!:;;;::::;::tL: ,C::C;,f:,i,:,.. +#0CLLLCCCfL000CCCLLtfLLfiii!!itL088@@GLi@8;;#####;,i:,t0G:,;;;iit!::::::,,:;;;;!!!!;;;;iitttti!ifLGGGLtfftitt: ....,....,.. .: +C!;;;!iiiiitttiiii!;!t!;!!!!;;;;!ittfLCCLt;:f####;:;!;!ii;;;;;;;;:;::;:;;::,,,!ftiii!!;!!;;;;;;tLLCG08GG@#@88i .,,,  +t;,:!ifLfttiii;!i!;;;;;;!iti;!;:;;::!####f::!ifff!G0GCtL:CGLCfGf:CGCG0CCGL;C!!C8880LCif;:::::;!ftiiitiiitffL@f. ,,.,:,:,  +t;;;;;;!!;;;;i;::;!!ii!!ii!;itft!i;,;0###L;!!!;;!::!i!!,::;;:;:,::;;;;;;;::,,:!iiii!;;::,::,,:::::;;;:::;;;!!!. . ,::.,.  +t;::,,,:::::::,,,:;::::::,,,:;!i;;:,;!!ii!;::::;:,..fG, . .:;!:::::,,,,:,.,,,,,,,,::::::;!,: .;,., ... . .  +i:::::;;ii;!!::,,:,,:,,,,,,,,,::::::;ittLf!;:::i;t:.tG, .,,,:, .,,;i!:::::::::::;:,::;::::!;i!!if:. .:.  +iiiiiiftttiiii!!!!;;;;;;;;!!!iiiittttittffftti!!;,. .. ,,,:;ii!ii!i!i!ii!iiitittttittttiii; .   ,::..:.:L!: .,. .... :. :, , :t;;;;iitttfi!. . , .:..::;:,::;::::;,.;:. ,  + .,.,, .;08t!:,,:,..,:,., ,:, ,. iL:. .tL::,,,,,;tCCGL::,..,,::..,:L;,,,,,......,.,: .. .;  + . ,,.. .,,. .,..,:i##8!:,.,,..:;,, .... .,:. :G0, :Cf:, ..,:;;!ii!i,,;i;..,;!;!!;:;,,... ,,, . ::  +,:: ,!, .... .. ... ,;tiLf:,......::,., .,,.,;:,:t: :G;;,, .,...,,::::;,..:t;:::,,,::,,, .,. .,.  +.. ... .,. .:;:... ,. it;::;, ..:t:,, ., .,f0C, ., ;::;.;:. ,:::,. ..;!!!i:, .......,. .,tf!;;:,, + .. ...,;;tfi:,.,,,,... ..,!iL@#@f;,:,;8i!i;. .,:ti;. ,!,. . :,.,t. .. ,:..,:,. .. ,,;!;:::tLLCCfi!, +,:, .;:;!!C#@C!!;::i; .,,;f@###Lt!!!C#L#@;. ,Lt,. .iCi. .,::..:!: ,:;;;:.,,:;LGL;;i;::::::,  + .:,.. ;.:L:,!fGCfG8LCtiii;,...,,,;ifG##88LLCG8fftt:,!!:!:::::,.,, .t;!, :G;.,,. .,;;!;,. .iLtL0f:,C;,:;::::,. .:;:: + . .,,, ....::,:,;!;8#0it0@0tC##8fLfi;;,,,,;t0#C@##0fif@G:...,0f;,. ...,.. ;0t:,;i::tfLC0L;:,. .!;:;tC!:!G:,:,:fi!;,.:::!: + .,;f;:.;G8iifC!C!tffC0#0G###GLLLft;;;;!iLCLt:!i!,,..,fGit, . .,.!8tf::tf:t!i!!fCt!:,,.,,,,,:tiL0;:;!!;:,,::,..  +..,,. .. ,::t;,..;0L!t!;i!!C80GC##00@#######8i!ttLLL0LiiLtCit, !8ti, ..,.., ,,,LCi0!,:,,,:::::;;tt;,,:i;;,:::;if;:,,,,;,.,,:,, + .,...,,,,,,,,,, ,,,,:G8t:Ltfi!LCG088C0##00#@tt##G@8LLGLGCLC0i,t8i:, .,,..,... .,,i0!,, :;!t!::::;ff;;;:,;;!.,,!Gi,;;:,..;iti: +.;. . ..... ., :8@f:::,,;;;;!!!iL@GfLGGG0G8G80tit0iLif#i;#@i;, ..... .. .!8!.,.,:::::;i!;,,:tCi,:,,...!8i;!:!:....,:;. +........ ..,,..,. :i!!f, ..,,;;,,,::;tt0###0tffLi;f;!iGCL;:t8ti, ...,,,,,,,...L8;.,..:,,,,.,:,,,,:;!t: .,!@0;... ... ,  +...,:;!i:,:::,.,ft, .:Li::: .:;:,,,,...,;!itti!it!i:;;;:::.. :L!!, .:::;;!;!:;,,;L:.;. ..,. .:;;;;:.!L, ,;G8t!, :  +:!;::,;it;ii, .,Li,. ,::,. .:;,,:,.,!:::,;f;:::iC!;:;Ct. :t!;!:,,::,:,:,,,..:i:,;,..,::,.,,:,,,.,,,:,!8C!;,,,::;;;;:::,:, +,:Cf,,!,,:::,,,,:,:,, ...,,:;ti!,,.,,:!i:,!Gti!!LG!;;!;;:,.,;. :t;00t:it::;;;;:;:,iG;,::;t:,:!,,;:,:,,::;!C@f!:.,;i!fLC0CifL:.: +,,::,,, .;;:;Li;i;,.,;;.,!tt;:,,,:.:i;;t:;f0@0CC0#CLG0!:!!::i;.!L;!8;,!:,;!!;!;;;,it:::!0t;:!fi;::;:;t!i0#Ci!:,,,,:;;;!!!!;;,.: +,.. ., ::::;::;::;,,!!f:;;i;:,,,:,,;:!iiiG0G0Gf####@8t:;ii!!;.:f;,:;:::,:;;;:;:,,,,,.,:;ti!t0Gf!:;!!!L#0i;;if;::;;;,:,,,,:...: +i!!;,,..,;;:;:,,;,,;,,;!:;;::iLf!:!::;!L0CLtii!!!00ftL8f!iLL!!;. :C,,f!ti:.,,,,,,,,...,:;,!!;;!!;;t!!i00i;:,;Ci:::ti:;!!:,::,.,: +LCCC:,;:;::,:,!::,,,,::,;,!f:ti::!!:!if0Lfiti;;;;;;;;!itL0LfiLi, ,t;,;::,....,,,:,:::::!,,it::!;:;!tG0tii!!;!Ct:::::::::::;!;;it +ttf!;i,,i:,:.,,,..,..:,,;i::i:,.:t;,:i!!;::;!iii!itff!!!iC8Cf::i,:it!!:, ,;;::;!;:!tLi:,,!!i!iCiiCG0fitLLfCCi0C!!!;:::;;:;:::!GC +ti!,,,..,:;:.:,.:....:!:!i,,;!,.ii::;;;::;;;;;;;!iitftti;:!;,. .iLG#@@L;ii@#Ci;,:;;!;;:,:;ftC!if@8i;:::i!!!!!G8!iiti;:::;:::,;tt +;,. .. .,,.,:,:.,:;!;::;:::!t:.!!;:ff:::itf!i,.,,,,,,,. . .:!!;if0#!,;08!0#f;,,it!!i!;:,;i!ifLi;:,,,,,:,,,:;!;,::!i!!!;,::,:tf +.. .,,::;;!!i!;;;fLt!:it!:,:..:;:,:!!;:,;:!i!:,. ,,:,.,,,:tGGC;:;,. .,:,:0#L,,::;i:,,.,!ffLLi:;!!i;:::::;:;i:,,:!ifLL;:;;;!fL +... ,,:;tCCLLGLti!ii;;;,:t;;:::;:..:ii0C,,,,i#G;L;,,.,;i:,..,!tLffGGt;. . ,:!!i:, .!..:;iGf;!8C!tftt!;!:::::fG!;;!!!!!;;!!tf!ff +.,,,,;!;!tftit!:,,:,,.,..,:;ftff:,,tffti;;:!@L::,;0C!:,.. ..,!L0@####0;,.,,,:;;!tt,,.,:GGi!i:!0LiiiiiiitffLLLCCLftLLLtti!;;;::!t +!i!:;!,,:,,,::,.........,:i:!;:;f;:!::,,:,,;8f,. !@#0i::!iff;:;!tG##0ii!.;,,;,,,:!L!,,t!!!0ttiLL!Cff0CG8@#####0f!it!f8@8t;!:,,if +,;i,,,. ,;;,,.,. ,:.,:,;ft;;::,:ii;,....,i,,fGt:.,;!!:;######ttfi;;::;!!i!:, ,:,::;f!!;::L!;GLLL!;f!ifiittLftfC!!!i:iit!;:::,:tf +:i, . :0Li. ......!Ci!;GC;:i::!:!;,:!..fC;, .::;L@##8L####0, ..,G###i:.,;;,,:t;;f!,,,,i8L:,:,:;i!!!!!!tG!:;!;i:!:;!i!;:;i +.;!!!!iitfLft!i!;;::,..:;ii;!ift;,::;!ti!:,:i!, ;tfi;;;;:,;ttt!;t!;!!tL###i;::,,:!;;G!.: .:ti;:,;ffC0CLCCG8t,:i;;;;!itft!;ii +@################@8fi;,,;t!,..,,;,,,:;::,!fi,.. .;i;i;;i::!:,...,;tGCti .i0##G,::,,:t::!. ,!tLtitt!iitftti!:::,..,,,,,,.... +@00GCGGGGGCCCCCC0@fftfi,!!i!;::::,,,;i:..:;;;:,,,:;,,.,i0!,,:i: ..,:;!!;,,,;!i:,,!;::;,.:. ,#######fL#######@0GCLLLffttii!!: +Ci!!!!!iti!!;;;;;;:;Gt;,,f0GffLC:;!::,,,:!!i!tiiif!tii!@@t;;t@i;ft:ft!Cti!L;,:;;;!!;:;:,i. ,###0##@########################@ +Li!!!!!!!!!;;!ii;,,:;;,,,:;;::;:;i:,,:;;f0L;:;!tftttCLtGftiiLGiC#@iffffLGfCLLfLGCCCL;;;;;. ,:tf##0C00808@8808@@@##@@888@#@8# +GLfffftiii!!!!tLt!tttftii;;;;!;:::;;i!:!Gf!i;::,:,,::::,t0C::,:f8iC;,,,::!;t;;;;!!i!:,,,.. ,t;.:CLftfLff;:;!!!!tti!iii!!!!!!iL +Cfiffttii!;;;;!!ifffGCCLCC8@##8CttCCttLCC0@#@t;:;;:;;:::;ii;::;;!!!;:;;;;,:,,,:;;;;!;:::;. tG, ,08i;!!;::,,,,,:::,,,,:,,::;:;f +i::::;;;;;;:;i!;!!!ittLLLG00@@0GLGGfi########@;CGCGCGCt0LLLLGLGC:fttG0CGGf:L;iGGCGG0GfCi;,..,;f: .;!;:iti;:::;!!!i::,,,,,,,:::;f +i!!!!iiii!;:::;ii!!;::;;;!;!!!;;!!!!i8##CG##!:::;!ii;:;f8t:;;;;:,,:::;;;;,,,::;;;;!;;::,,;::;!ii. .!CGf!ifLCff!!i;:;;;;;!;!!f +fLCCLti;::,,..,::;::,,,....,,,,,,,,,;;i!;!ii;. ;L: .,. .::, .: . .;:,,,..:....,:;iLfft!iiiii!;itttiiiiit +:;;;;::,,,,,,,,,;:;:,,,,,,,,,:::::::;iti!;!fC, ,,. ,L0! :, .: . ,t! .;:i!. .,;;:i:;;:;:!;;;;;;;;;! +!;!;;;;;;;;;!!!!!;;;;!;;;;;!!iiiiiiii!ii!!!!! ,; ., , !: :;,.,.. .!i;!!;!!;iiiii!!!; ,, ....,........,::,;tt .,.,,,::;:;;:::;;; ,, .:, ii,,:,,!:::;;:,.,. ,. .,,,,,,:::;::,. ., + ,;,.. .,::::::,,,,,,,:i@t::.,. .,,!,.,;;;:::,,,:. .. .;. :0!. ,;!::!,;:;!:, ,,. :, .....,;tti!!iLCCCt;, .,:  + ..;!. ..:iiit!;::,::..:i#L:,..,...!C:.,;;!;!;;:;t: : .. .,,, ,C0:,t@t,. ,itifL, .;.,. .. ,. .,;itffttttft!;:,. .!f:  + .:;::::,::;;::::,,,..,::i! .. ..;8!.,,:,,,:t!t8! ... ,!, .,!t:L88; .:;;::::;.. ..:. ., .;!i!;;;;!;:,. .:::,.  + .,:fG#Gi:,.,:it!:,,,,.,,ttttt!:,:tt;,::,,,:::t@i...:. .!, .;!;,,;!0f,:!i!..:ii, .!: ,.,;;:,,..,!. ,::. , + .:i8##8i:,,::::. ..::;tG####Li;f@CfLCGGCfi;t8!,::,,. ..,...C0C. ,;G:,;:,.;i!,, .,i. .,..,,.. ,: . !: .,..: +!;::;;::;tLC#0f;:,:.....,:;!iLG##0ftC###8####0CGfL;,,,,.. :L;,;!:,,;.:::,,.,!:,. ,;L, ,;.,::,,, . .,::::,.,:::,::;i: +::tC0GLi:,,!f@@it@t!:,,,,,,:::iG#@CGGC8##0@##8LL#i:::,,,,. :G!,.. ,!L:.:,...;!. ;L,.. ..:,,::,,,,,::!;::;tLfCL;.,iCf!itLi, +,:!ii!;::,,,:t!if8#G8Gfi::,:::;t0@G#8GCCG0@#0GLf#t:,,,,,....,,,:f!:,,!!.,..::, :i::;:. .,:::::;;;:, .!i!GG0i:,:;;;;::!tiCt;!;:, +,t0f!;;iftiittfGG0@8###8CLLt!::;tLC08LttCLffLCCL#G:....... :GiL,.,,....:i:::tGt!f:,:;!iiL!:!:....,:;i;i0!.,:::;;,.,!!!f;,... +iCLf;iLG008GLG#8C##8880#####CiiLGLLCCiitt!:,;;;!@8:... .,. ,itt:if;:!t!;:itt;!Lf;;C:,::;::,,,.,:;!ii:,!L;,;ti!i;:,.,,,tL:, . +;!;,:!!iffLt!ifitLG##G08#@0@#tt@CG8#8Lf0G8i!fL::!i,,.,,.,.. . ;L,:00t!LGGf::::,,,;!:!L:,!!;:;;:;itt!:,!i!t:,:;;:::,,;!,,:t!:.  +..:!;:;::;;:,,:::;ifG###GCCGGCLC000CLCC8CC8tt#0tG;,,:,,..,,.. :;,,;!;;;!;!t:,,;;,:,,:GC::::,,:,,::::::,:;,,;;!;::,..:,,:,,!t:, +.,,;Li:.;!;::,:,::;!t0LL0G@#08#LC#@fLttGtf8t8#@t@C:,... ..,. ;f;,,;!;!:,,:tt;::!i!,,:iC!:::,,:::;!!!!;. ,::,,,. . .,,,.:Lt: +,;..;8!,:::,,;;!;;i!;i::;L##@LfCCCf!;;fL0C!;!i:;G#;:,.,...,,.. .;tf,.:::ii!:,,:tL;::...,iCffi:,;tff!:,,,,,.,Lt;i!. ... ,;: .;:,. + .,;tt,;;:::;:;::::;,,::!fii@8LG!;;::,, ,@@;:,,:,:;!;:,,.:;:. ..,:;;::::;!0i,,,:L#!:;;,:;:;;::;: :t;::fC0!. ,::,... . +;:,,;:,,:,,::,,:,,..,,,,;..,,::!t!;fC, . .;f;, .....,,.. ..:,.,.,:;!ii!!i;:fft;!@#C,.i!,, .:;,f8C;:!t;,:L;, .,. .,: +fiii#0:,,:;:,,,,...,:,..,,.,,. ....,;;.,t, .:LfL!!!;:. ....,;,,t!!,,,,::,,,,,,:;t@Gi: .,,,,.,!;!itGG,,!!,,t;...,,::,,:,,,,., +80fG#L!CL!;!f;:,...,;!. . ...... .:!;:t;::f#8CC88@8C!:,,.... ,!.,i!;;!!!;;;,.:,:i0#t:,.,.,:;!!;,:GC!;::,ti,;f:::;!i!tt:....... +8G@8#CfG8i,;ii!;:,,::;:,,:;!itttti!!;i;!t:;8##LitffLLfftt;::;:,,, ,ffiLC00LfCt,:!8#0!:.,!;,;:::,,.,:f@;::!i:,:!;..,,,,:,. . +Ctf#@C88@i:;!i;:;;;;;tL!ft0########0f!tGG,;@fi!;:;!iftiii!ifLLLt;,:ftt!iii!!;!;t#8t;:,,:,,:!,,:,,,:::C#fG8t!,,i!. .............. +Cif#0ffC@i::;i!;tf!:;Lf!tt8########LtfLL;..,;:::::;!!!!!iiifCCCGG!:f,:fti;:;!i8@i;:::::,:,:!,,:!;fGi,;8#!i0t:fi,..,:,,,,:::..,,, +Li@#CLCCt:,:;;;!i!:,:i:::;iiitffti!!!:,,,.. ,i,,;itftit;;;:::;;;::..;80t!GG##C!;:::,,:::,:;:.,,:88:,;!;,;8Gi;::;:;;:,,,:;,.::,, +GiC#f!ffi;!ttttii;,,;,,;;!!;:,,,,;;i: ;!, .,,,::!f!,.........,:;::i0!.:8@L#@fti;;:,:::,:!;;;;!tt;:G: !Gt:.iitLfti::ii;,..,:, +C;;i;,tLf!C8088GGCfi!;:;;:::::;;;:!Lt!;:,.:;;;;!i;,... ,;;i;,;LLLi!;, .,,,!#0!;!!;,:::::!LtfLft8t;!!: !8t,:;;;;;!:,:ft!!;:;;: +i!;:;!!i!iiit#CfC@8@CC0; ,::iitCi:;GtL0L:,t@@0i:fG,.:;,. .,::;:,:iif8@!, ,;it;:::::!;;;i!;;;:;;::G8!:t@f!ii;:,:;!::::;;!!!!; +fii;iii!!ti;!@@tL@CGC@#;.,:!!:;::,::;;i!!t0C!;,.,,.;@#0f!:,; ..:G@###i;,.,:::!t::::;::,:t;,,,,,,.:!t#8C8f;;;,,:.,.,!:...,,::: +fi;;!!!iiit:i#GtGGfCL@@:,!;!i!!!!!!!,:!tf88; .. !###@0f!:;iffffiiiiiitL!,,..,:it:,,;,,,:!i;!ii!;.,!;0#Gi:,Ci. .,,:tf,,,,;:!t +Lti;!i!iiit;t@8L@ff@C@C::iLCG8880G0t;:!!!ti;:;:,. ,;iii!;,,8######80L;:iti;.,,,::;!::,,:,,;!:,:;:,.,:;t88f:!!!;;;:fCi!!!Lf!;:;t +Cfiii!!!!fL;t#@iCff#LGL,:;;!i!ii!ifL!i;;!tt:,,,. . .,:::;;!itfff####@,f##f::,,:,,:!:,:,::;;::::,,:,:Gi!i!;i!;L0Gttfftttftii!;i +Li!!!!!iitt;C#CiGff0G#i,!;;;:,,,,:!i::!;ifi:.. .. .,iifCLff: .. ,;iii!!;tG#0t!:,,,,::!;!;ififfii!;!!;!ffif!,,,;;;:,,::::,,,,,,: +Li!!!!ttfft;f0LL@ffGG#t,!!tiiiiiffG!:;;::,,,, .,. .i!iii!!;;,,;::!!,.;f!.:L##L:::,,:!t!Lfttii!::;!ti:;8C!;:. ..,,,,,,::: +Li!;;!!iii!!0CtL8LG0L#!.iCftif!tGiifCLi;:::::,, ...,:::,,.,Lt:,,:iG;:::::,,;!!;;.:;;:;::tf!i:,. .,:,,!@t;tf, ......,,;i!;!ii;i! +Cfiiii!iii;!#8tL#LL!!f, ,::,,..,:,.:;;:,;tLtif!:;titttiL!ii##!ii;##iG8i!t;f;::,:;;!;:::;;;::::::,,,;;:ift!iL;.,:;;;!;,,,::::::,, +LffLLtitCL;!#G!i0i;::;;;!!!!!!!!!!!iiit;iLfiiGC!tLftfftLCLt0fiitt8Ci##f!tftLGLfL@0GG!:8#8GG08880GLfCi,,;!,!L!...,,,:,. ,;:.,,,, +t!!iiiiitt;!Ci:;;::;itCGGG000088@8@###8!G0:,L#8:,::,,,:::,:,:G8!:,,:iG!Lt:::;:i#f!t!:,t########80@#@Liii;.;L;..,,::::::::::!!!:  +t;:;!;;;it:it:,::;itttttitfffLfGGCLCLGGLt!i!ffi!:;:;;::,:::,,;!;:::;;!i!!:,,,,!@t:!,:;itttttfti!!C8@G08Ci;it;:!!iffftitti:LLGGC, +t!!!;:;;;;;;;;!tLLCLLti!;;;;;;;;!;;:!####L0#GG#LCG0CGGtCtCGff!tt!CGLGGffCt:L!tGG@GitG08i:::!ti:..,;;;!i;;iC!:,::;!;;::::,,;;:;:. +CfL0tfLLfiiiitLCCCGCLftti;;;i!;;:;::!0#G@######!:;;;;:::::;;G8f,,:;;;::::,,,,,:!GCCLiti!::;;!i!:::,. .,,,:;;:::::,,.. ..,,.  +Cttti!!!!!!;;!!!!!!;;;;;!:;t;;!!!;;;!t!:L###t!,. .::. .,:, .:,. .f8Lfi!!;;:,,,:;tti;,,:!!:::;!ii!!!;;:;;!i!:,,,,. +GLtti!!;;i!:;!;;:;::;:;i;:;t!ifttifftGG;:it: .CC, ;GC. :fCCfiif!:,,,,:;;;::;;;;:::::::::;:;!i!::::..,;, +tttttfftii!ii!iiiiittttfffffLffLLLLLLfLLiit! .. ,;;,!!!!;i;!!!!!!;!ii!!!;;:::,,,,,.....,..,,.  .:!,. ,:,::!;!i;!!;!tif0t;::::,.,. !t ;: ... ... ....:::;;;;;:,,. .,, ,:;:,, , +:,;L,. .,:,,,,,;,;i!!!ttC##0t!;::.. ,:tLi;. .,i, .. .:,,. .:; ., .,:;:;;;:::::,. .,,,!!: .... .....:;!!iCf +f;ti, .,... ,,::;ftiiiiCfLLi!::,......,;Ci;G@:. ,it,. ,..,:,.,:ft:::.. .,:tfLLi:. ..:ti:,,,..,,,,::;. .:!itC888@Gi +Cft:..,,,....,t!;ffCG0CLCLi!;;;:::::,,,;C;,:iG@;,fi,. .,:!, :ttfL, .:;;;;::,,;::;:,. .:!!:,,,i;,:;;;:;!!!;;L8@@Ci!!!;. +0#G;,,!i,.,,::;!!iCCG#8C@0GLCCGGLtti!:!i:,.:fi8Ci,,..:. ,:!. ..:;!!:. ,::;;t080Cfti;. .. ... ,:,..,,::::;!i!!L00GLt;!!;:..,:,, +ttf8fi;;,,,;:::;!tfC#GCC###8G###CCft!!;,,, :Gi!;,...... .,. .,.;GL,,,!fit08Gt!;;;,. .;t, ....,,:;;;tLG0Li;!;;:,.,,..,,.... +f#CG#80L!::::::;t0000GCLG00C0##GCL@ttL;.,.,;C;..... ,it :L!t;!!:!!;;:, ,,:;:,,;;:;;;;fLti;;;:,. ...,,........  +8##@G0##0f!;:::!C@GG8#GCCLC80CfifiG#Lt::;:tG;,:,..,..... iG:...,:i,. ,: ...,. .:!!;;:,,,,:::. ,,,........,,..,:;i: +@0##CLG0###CitttffL@8LfLLiC#8L!itii#f:::;Lf;,..,,..,,.:,,, .,:;,,.,!; ., ..:..,:::;:,,....,..,,. ..,,:,..,.:!it!,,,::: +808#0CLC####0C0CCLCfttt!!:!iiiiL0L!i#i:;!::,...........,,.. .,:t;i!,,::,...,.,,:!;;:;:;!;fC:,.,:,,:,...,,::,,:!ii,.,,::::,,,,,;! +80##0#GG@8G0#LL888GfC00G;;i;:.!!;::t8G::,....,, . .:;:;Li!i,:iCi::;;;;i08G::;,,i!;!G:,,,:::,,.,:!ift!:,,,.,:,:,,,:::,::! +0G##G0#GG0@80GGCCLLC8LCCii#L;f; ,:;;:.,.,.... .,.. ..,. ,!CL;tt:,,.:;;,::;;!t!tC;:::;,:!:!f, .:!!!;,..,,:,,.. .,,;i:::!if;,,:! +i!t0LL0#######L#0tittiC8tG#0!#t. .,:,.,,..,,,...,. ,!!,.,:;;;:;.: ,;;:;!!ff:,!f;ttti;,,,:G;.,,,,::,,:::,.,,,!i!;it::!i!;itttL +i:;!fff##GCLG8Cfii;fCif;L0i:!##i,!!,..... .,,,, ..,,;t:,::,.,i:::,.,,,,::::;t,;::::::,,:,:it,.,,::!!!tfi!;,,:ffi;i;;;G@!:G###0 +!;it::!f0t!f###t::;;:;..,,,:ff##!,,,,,..,,..,.,:,:;;;,,,!!,,,:,;;!C!:::,,:,,,,,,.,!:,,,.,,,!!;::;ti;:;::::;,,:;;!;!!;:!C#!:tfGfL +.,:,,.:;titLiitGG: :G!ft!,.,,::,;;;::,:,tL:;:,...,:i,,.,,;;CLfi;:!i!:;!:;!;:!!;::;;,:i,.:::::,,:...,::::;!!tCL:;!i!::!iii +:!;,.....,:L;::;;:,, . ,ii8!,:.. .....,,.....!L:,,::,,,:;f:,,:;;!!::,,:::,,!!!G!G;,:;:i;.......,::,,;,.,:f!!i!!;;i;;!tii;ifLGC +,.:i. ,:G:f!.,C!,. :8GG;;!;:,:,........,,:fi:;C88LifftLi;;i,:t,.::.:;:,...,;L;, .,.. ..,.,,.,;,.;i!;!i!::;;!!iL!;;;!!!t +:,::,,,,,,:t;:,,,;;it;, .f#i,,,,,;;;:;::::::!:iC!!@@8@#8CLCLGG8t!t:. ..,,,,..,. ,!:,..., ...,:.....,::;!!iiiff:;tCCLGi;!!;::;i +!;f!,:;;;;;f!;:;i!.::,. .i8!.,,,,:;::;;::,.,;::::C8ftitCGfitfCC00Ci;;:,:;:;;:,,,,!:;,.,, ..,, ..::.,,!CCfGLt!!!;i!!!!!t;;::::;f +tiLt!;;;;;!ifL;Lf,. ,CL!:!i,,,,,,...,. .,,;,,;;;,,,:;;;;;!!ifLG00Gi;::iC, . :i;..... ... ...,,,;LCi!!!;:!;;::,,,;t!:::;i!f +ftCLLtii!!tt;;;;, . ;Cti::,,......,,,....,;,,,,,:,.,.,,,!i!!iitLG00i;,:;:. .:f: ,. ........,,.,,,!Ct:,,i!::i:,,;!!;ff!!ii;!f +!!!!;;:!i;::, .:,,,,. ,f;!f, .::::,::,:;,::,.,:,::;;,...,..,!LCCf;,:;;;,:iGL:.,!:,.,.....::;:,.,,,:;!!!;;;;;,,;:::;!;!ifi!;;!tf +!Cf;;;:;:. , ,,;ti: ;G:!G: ;!!!;i!,..,:;!:,:::;;:!, ...,,..:::,,.:;::L:t##i;i,,,::,,,,,,::,,,,,,if:!iff!i!;i!;:i!!!!i!;;::!;f +f#0tGLt;i,.. .,,.,.if:;f:,::;::::,:,,;i!iLi!tLi!!: :tCGf;,.:!8t,,;,,:..!L;..,,,:,,;Li;tCi;;!tifC!;tL;::;!;;:,,:t +t0i!ti!!:ii:. : ..:i,.::,:,,..;!!:,!@#t00;::0G. ,;!;,. ... .,:;0G;, :;;:;,,...,it:,.:!!;::tf!!tt!!;:!iti!;!!::!:!C!;;:;t +:;:,,::,::;!!,... .. :L: ....,..,,:;,.i#f:::. .:,..t8##0L!:;f: ,:,!#8,,:;:::::,.,...,...,,:,,::::;;;;;,;0Cti:::::;:iCtititL +ff::i;!t;:;;;;i. :C: , :: ;;:f,,fC: . .,,. :!L####8Li::!L8@@GLf;,,:::!i;,,,,:::, ..,;. .,,;!iLf:;!iii!!ti!i!t!!i;ttf +0C;itfft!!t!!!:!!, ,::iL;,,;;,::::t:;;.;;;;;:..if,...:;!ii!;,..@#######8;,::!G8L::;iCL:,,,,!!,:;;:,:tiLG; ,itLtiCi;;!ii!;:::i +Gi;;;!ii!!iifLLG#0:. iffCC!itfLt:ti;!:,,,i!;::,.,::;;,..,,:;;;;:::iiiL####!,::;iCi:!ttti!:;!i:..;fi!,,!;;i;:ii!i;;!!ii!!ti:;,:f +G!!f!!CLfLtG#######;. ,::if:,;;;!::;,,:.:t;:,.,:!;::!i;;;!tLCCLLC,.,..:!!tCi:,,,:!;,,,,,,::::::,:;;;:,,!!;:,it;:;;::CG8G;;;;::,; +L;tffiLfii!tCGL#0L00,. .;:. :t,:L::!,..::::,.:Cfiiifi;;!iiii!;i!;.,::;!.,80:,:,,;;;:,,,:ift;!i;;i!;::,;tt:;::!:tt:;fii!;;!if:,i +f:,;!:::::::;;;Lf!;::;. .i; ,Li:fC;;,.:,:::::i;;::;:,::;:::,. ;8;,,:!C;:;:::..,::LLt!;::;;i;;:,:;!!C;,:!;;,..!!::,:,,,!!itif;,i +t:,:,.,,:;;;iiiCG:, ,;, ,;: ,Ci!Ci,:!!!fLfi!;!;i!i!;iC!ttfL!:t#L:t;L@f@G;.,:;;;!ii!::,,,,,,,,.:;:!Li:!i:,,,;!!!;;:!;;ii!;!t!;! +;i,::,,:!ff::::;:, .!. ,f, ;0;,i:.;!tCfi!tfLtfttffffifftfLii0tiiiiCt##t!tCGG000C;;:,..,,,:;..,.,!t;,;;;;,iGGfCi!:;L00i;!Lt,; +:!!tGiiii;;tfLLLLLf::, :t, .;, .. .:00:.;0G;:,,,::,,,,,:::,:,:f0t,.:;ffCt;;!!!!!:,,,:;;::;:.,,.,:::,:;;::!!!;:,,.t0Gf:!!!;:: +######8##GG#########G. :i, . .:tLLi!;!i!, .,:,::;;::::,,:;;;;;;:!;;::;;;;;:::it;.,!i: ....,!!!:,,,,::,,:;;:,,::,,. +###@@#@C8##80@88808#C. ;i. ...,. :####8:08fG#Cff!;LfGtGGLGLGC;fi;fGCGGt,L!iG0000LL;C:,. ,,. .,.. ,!i;,:::;!;;:,!: +#0888##Lf##Lit0Ltiiii. .;, .:;, ,G@@#t;tf@######!,;:::;;:;;::!00;:;;;,,,,,:;!i!!;;::.,,;;;;;!ii;;!;;:, .,,:::;,,;;:,,. +Gtiiitti!G@i;Gf!;;!L: :. .:.. . .,;,:L#########: ,,, .::. .:,. ,!::;:::;;!fi!iifLLLLCCCLi,....... ... . ... +Ci!!;;;it!;!i!!i;:!t; . .. .,.,@####i;;;,. !Gt ;GC. .;,,,,..,,:::,,::::::;;;;:,::;!::::,..  +GCLLLfffttitti!ii!;:.. ... .;, .,. ,,.....,,..,...... .,:::;;;::,,:,,,,,,,,,,..  ,:::::;!itCG@##@8Ctfi!i!!iiiti;:ift!. :tt ,!i;;iitti;. .,. .... ,CGfttfG0GCfi!:: +ii;ii:!iffG08@0CCC@8LiffGCf;::iLi:.. :!t8!:iftiftfi:.. .... ,,. ...,!. ..,;: .,,:!tLCLtt!ii!:.....  +i!!ttfLCLfL####00#@@CCLfi!;;;i;:,. . ,;;G#LfLftfi,. .....:i:. .. ,;:;,.. .;,. ,. .,,.,,,:;ii;;i!:,,..... .,.  +tGCLG0#@0LLG##8###0GGLtii!i:,,. ...:!i!iC8ti:,,,..,...:,..,!tff. .,::,..,,,. ... .:!!,...,,,,..,,:;,,:,......... ,,,,. .  +G###088##GGGCLfLCLfi##tfGL:,.,.,:::;ffftGCit;::. ,,..::::;:,:;;;;, :,,::,.,:;!;:::,:.,,,,,,;,.:,..,:!!,., . ,:,,. ....  +0C@##CGCf0##f;;;;;!if##L!;;:;,:ttCCL088Ct;:,. ...... .:;:,.:fi,.,,,!!:,;;:::;:,,,.,:;t;,,,..,,,.:::,,......... ..  +8ttftif;;iLf!!if!!LL!!G0!;it:,;ifCG0Ci!:,...,,. . ,.,.. :8G, ,Lt,.;;;,::,,,:!!:,..,,,;ii!,::,;:... . .,.....,,,,:,. +fLtCG!;;it:!tfCLtffi!!!G@i;!!!LCCf;:,. .,,..,..,,,. ,,, .:0C: ,,:,..,.. ,;i;,...:...,,,...... .....,,,,.....;;:,..,,,..... +GGGG0fC0!:,:t!::;::fCtii0@tiGGt;;,,.. . .,,.. . ,L!. ,::,,,;; ...,,,,. ..,,,,,,:,,.,,,,:,;;;;!!!;,...,,,.....,,,..., +GffL!f#L!0!. ::,:itftiiCf;:;,. ,,:. ..,.,,..,!!;:;,,!i;,,,.....,......,,,.,:;ii!;!tt::;!!;::;;;!i!!!!;;,,!:,::::;i!:::; +;i8tC#G;;#G:. ,:;!fLCCLi:,,. .. ....... .::,;!:,f0C:!;ii:t;,.,,,..,,:,,:,:!!;::;:::::;!!!!;;:;tt;!GGCGtCGCi;!!;!0f;!:::;::: +t;:0t;:0!i##i:!ifCCi;;:,.....,,.... ,;:,.,,,,,;!;i!iC;;;,,::;,;;::. .::::::;;:::,,,..,;tifLf!i:!Lt:iftttffLfiiLt:!Gf;:!i:,,,! +,...,,;!8;8##Lifi;:, . ,:,,,,,,:,.:00:;i;,,:!CC;.it;ii. .;:,:::,:,:!t:;;iii,,,:;!!;;;i;i0L!:;;;;,,::if@##@0G0L;!tt;:Cti::;i + .;8,:8ti@fG;,,,,,........,,,..if:;ii,;Ct:,,,,::;!,.:;:,:...,,:i!:tLt;ii;!t!!ttiii8GLCft;;iLft;:!!,,..,:tC88LLLCi!fLf!!!!iiitL +!::;8L,,tC:,:.,.,::::::.:::,;f:,,:fC;:,,:iGi;!:::,,,..,;,,,,.,;;:::;tt;:!;;L@!t@##00Gfft!;;!;tti;tt!ti!!!!!i!;::;::,;tt!;;!LftfC +;88f@!::;::............,,,,:L0:::,;8G;,;C@;iGi!!ti:;i:::.,;;,,;i,,::;!!!!;!fG!itGfiii!!iti!;;LCi!:;!f0GCGCCCG!:!!;::;;;:,,:!!ifL + !#8C::t!i!;;::,,.....:,;;;!0t:...:C8;!##!,,t;,,:,:Ci!L,,,:;;;;:,:;:!tiCGiii!;:;!!!!!tfGCffi!Cti:!!iLiitLiiif!;fft!::fL;::;;;;!; + ,0#!.,,,,::::::::,,::!:;,.;GC,. .::i##!, ... .,;Li,,,ifLCG0LiLti!iii!!tCi:;itfC0tiff!!i;;ft!!;!!!::::;:;;iiiti!;!ftCLLfLfttt + ,f0; ,,..:::,:::,,..,;;:,,:;:,.. .:i##!:.,,:. ....:L:.,:C@GCLGG0G0GCGCLtiLt;:::;!!!!;::,,,:;tiiiii!!,:!tiLtfGiCLitttttft!!itiit +,;0!::;!:.,,,....... .,::;:, .,::i##i:,. .,,..:;. :!::,;;iCiiii!iiL0GCCG8f!;:;:::::!;::::;;;fi;;!!!i!!GGiLCL0fffttftiiL!;i!ffiL +;8Li;:;:,... ...., ..,;:::,:,,,:!##!. .... :i:.,,:i;:,,,,,,:;;;!iiti;;!t!;!iiiii!!ti;fii;!tfGfiLii;!tL!!LLC0CtLCL;;itfC# + G!iL:.,:,,,,,,,.,,,,,,:;!:!ti::t#f;:,........,,,,.:t,.,:i!,...,..,,,..,:;;!t::!!;;;!!!iti!!iii!iffiit!;;;::!!;!iffffiG0i::LGGG# +,L:!8;,;!i!:!!:,:;!;tff;,,,,;!i@@!,:;:,,,,,:,.:!;:::,,::iG;.:,,. ..,,,.,:i!t;itt!;:;;:;;;:!tLC!!CtiifftLft;tCtiCLG8CifCf;:!iiit +i:,:fC,,::,:!,,,::,;@#G;,..:!@#L!;,..::..,,,,..,,,;,::tfii;.,. .... .,:,. ,Lti:!!i;:ittiitLi;iCi!:;ifL0#88f!if8f!iiti!!LCi;!!!iC +;,!,,;:,:,.,,,,!!;:;Gt;:.:;f##i;tf:::;:..,::,,;i;::!tti!!!: .,, .;C!:,:t;:;!!t800t;;ii;:;i!!tGftf!!fi!;!!!!;ftftLCLfC8 + ;f: :,,:,: .:::,,:,,.,;i@@t;:;;!ttLt;:.,,;,:8#@:,0G:.:80, ,;!;:. ... :Lt!i!!:!;:ttfti!;iL!;ffi!i!!!t!;i!!tfGL;;;tfi!fiiiC + ;G; ...,:..:,,:,i..,!8@t:,::,.,,:;;:,:,..,:iGt,.::. .::,,!C@#8f!;!L. ,:;:,!CCCf!:;:::i!!;::L@t!fftGtCf!i;;!;LLiLt!!;ffiiit!iC + ;G; ,: ,!.,t,!t;!,:f#G;:,,iL,...,!i:,,:;i!::ti. :;iC###8Gt::iG8##0tittt!;;L;::::;;:iGt:;fiCi!!;;i;!ititiiiiitCCf80Lf0 + !f;.,,;;,:::;f;;f;:;iGt!;!Gi!!ii!::iLi,,;f!!i::;::,::.. ..:;!i!;, :#######:iCLt!tii::,,,,,:;:,,,:,::i:;i!f@08LLCtiiiittittf8 +!LC;!!tfLi!f!if!;!:,:!ifGLtfft!tLf;;!!;,:;:;;:;!;:,:!;;,:. ...,,:;;;:,,:iL###C;;ii!;:;;i;::::,:;::,,,,::;i;tf@#00ftiL@f;iC!:;!G# +:tf:,:::;!::!::;,;:.,LLt!;:,::,:::,,:::,:::;::::,,!!;;!ii:,:;;!fLCLLC!..,:;tti:;iLL!;;!::;itt!!fi;!;;Lti!!iitttt!!:;!fi;iGt:t!iL + i; .:,,!:,::,i,:t,;f!, .,,..,:;!!;ii;;!;:,,;;!i!tt!!;;!itiii;!!;,,;!::GL;;!fi!iL::!;!fGftLii::fiLCGiCC;;!;L;:;!!;;LCi;;!tL + t: fL,:G;:i:,i:fC;fi,.,,..:!;,:,:;;:::;;;;;:::,:;;::::,:;;;;:,..,Gi:,!;,,!C;::ii:;!!;Litfi;iCt!;!tfLLLfti!::!t!itfCtt@Ct;;!if +.i; :L!;!C;!!,;:;ii:,,;;i;:;,,.....,..;fGCLCfffi!ti;;f;itLCtft;i:i@#f;L0i!:;::::;::!t;:::,,.:0L;!C@######0fiif0i;!itiifGti0GC0 +,,. ,0f;tt:!:,L:.,, .,,,,,...,::,.. ,tCfLfftffftittfftftttitLttfftGtfff0@ti!t!;!i::::;::::::Lt!!iffffL#######8i;;;LC!tLf!L0LL +:! .;8t,;:,::!:.,,,,:,,,,:;:!CCi, .08;::,:i:,,,,,:,:,,,,,,,::;,,.:CG::!L;!;ii!:,..;!!!tt,,;:;C;ti;,:!itttttt;:;it!;!i!;;i!! +;: .:, .,.. .!!i;!tt;;;:,fC;;i;;itff!:;!!!;;:::,. .:::::;:::;!!:,,::;!!ii!;;:;;,,!:..,,::;,:,.,:,:;...,,:tCL::;LC!ffCf +:. .. .,:: .!:!:!!::,..,,,...:####@::CGGC8@8L00:,:;;,ttGCiCGLGGLG0f:L!iGGL0000fC!. :, .:, , .. ..,.,:::,::;!;:.:GG!!t!! +: ...,,..,... .:,.,:::::::::,.,,:8###i..:;;;i8ttCGGC0##0i;;:::;;;;!88;::::;;;;!!;;:, .:,, ,, ,,..:i:i;;;:;,,;!!::::; +, ,;;.,. , ,,;!ittfftit!;:::::;;,. .,. .;f!t########C .,,. .,,..ii. . . , ...,.,:;:::;i!:ii!,;:,: + ., ...:.. , ,,i!;;;;::::,,,,.,:;,. .;...0#####ftftt!, .CG, .it. .:::,..... ... .::........,:,,::,,.... + .. :!;;:,.,,:,,,. .i;.. ;8G0## ,, ........,,:,,,,...,,. . .,:,:,:,,:,,. 0LLCG88@@###@8@88CLt!;:,,,,;ii;. t!f,,!t!ti!i!iiii!:. ...,. ... ... . !GfLCCffftttLGGGCft!;;;, +@800GLCC8######CCGf!;;;tfff!,.. ,L:!0Li!!!fttft:.. ,,, .,::. . .;,. ...... ..,:;;C##0GG0GCCLCi::,.  +8G##@CLCGG08#0CCCLiiiif!;::,. .,,,:ii!;iGL;fL!;:,,. ...,,:!:,.. .;:,,,...,,;;,,....,;ifCCGt!!;:::::::,,  +#8G8#@88Li!iii!i#CtLCf;,..,,::;;::!ftttt8iiitt!:,. .,,,,,,,::!tL!..,,......;ii;:,.,,..,::,.:;,.,,:;;:, . .,,,,,,., ,,,, +GLiiG#Lii!;;;!iit##t;;;;::ifiCCLCfffftLCf;,,,.. ,,,!,;;:::;;;,!ii!!!::,,::,.. .,;t;,,,. ,,,:. :,............ .,::;;, +t;;;tiiitLf!!CLt:!GC;;tt!,:;iLLLfLtLf!::,. .. ..:;i:..,fi::;:,,,,,:;i:,,.. .,,,:!!,:,... .,....... .,;:.,.  +;;!;!Cfiftitfiii!;;C8!;;!!iftL0GLi:::,....,,.... .. .,G8C, ,i!i,....,::!ft!:,;,::,........ . ...... .,,.. , +Cf;,:ti::::::!tGfit!f@itLC0Ct;;;:,. .,. ..,,,,,. .,:, ..,;Gf; .,:;,.,,.,,,,,:,,..... ....... ..,.:.,:,::,. . .,:,.,,:; +!L#t:....;;::!!itttiif8L;;;:,...,.. ..,:::::,.iG!. .,:,:.;,.,...,,,,,,,,...,.. .::,:!;;,...,:,..:,,,,,..,,::,,:::::,:;:; +.i##;..,,:;;iittCGCt!:::. ..,.. .,::GCitt!:ii;,.,.. ,t,,,,,:,,:;;!!;;!;,:;!!,,:::;!;!;!;;,::,,::::;!,,,!iii;;!;;i:,:::! +G;i##i:;;!iffLLf!;:,.. ..,... . ..,,,. ,,:CL0i;::i,t!,;:;,.:i,.!:::::,,,,:;;;;!;;:;tt;!LLLC!fCCi;!t;iLti;::;::,:;i!::;;L:,:;:i +fG;f#G8i!tfi;::,. ,,,......;:,,!ii,:;!L:!f!t,..!;C:.,;:;!;,,!;,;,,,,.,,!iiCC!!:;Lf:!CtiittffiiL!;C0i;!!:,,,..:;;:;;;;;,,::! + @i;0tL0!,,,. .. .,,..;,.tG:,,::;iGL:.!t;;;,.,!L;,;;Lft!.,i:,,,;!!;!;!;!CG!:!;;!,,::!f@@@8G00t!fLi!GC!:::,.:t!:;i!;!;:::f +.C0;::::, .,,.....,:,,,, .L:,.::;LG;:!;,::;,.,;:::,!::i;;;!!t;,,tfftttG0L0ft!;!Lff;;it:,..,;f0#8GC0L!tCLitiitiii!;!i!;!!!;;;;!!L +,:i; .,,,,. ....:G! ,!8i:,,i0LLf;,,.,,, ,:::,,,,::;:;:;ii:,!@##880ttii!!i;iLt;it!ft!!!!iti!;;;:,,ifi!;!fffLtitL!i;:::i;;ifL +:,:i,...,,,,,,,, .,, ;8!,:;8@f,!#f;::,.,,;G;::,.,,,:;::!;!f;!f!.,iftiii!!ifti!;i0t;:;!L8CGCGCCL;;!;;:;;;:,,;ffLCLttti:;;:;:;t;:i +..,,:;;;!!!ii;;;,,!:.iG!,,,!i;t#t,. ....tf!C;..,!t;!!;i;!!!it;,:ii!;;!fC0GLCf!Cti:!;!fiiffiiit;iffi!;ff;,:;!;!!;::::,,,,,:;:,:; +,..,::::::::,,;!,,,,,L0t,;..;G#;, ....,:if::.,;!!!!;;:;!it00itC8GtLGiiii!!!;;tt!;;;;;::;;;:!;i!ii!!!fLLftCL;!:,,,,:::,::;::::! +,,,,::::::,, ,:,:;i:,:::,,:!##;,., .,:::i::;!;!iftff:;tC8GfLGCfftitfCLLtt!;:;tiiiii!;,;ifiLfC!!Giiitfffi!ffi!:,,:;iti:,:::;;!t +;::....,,.,. .::,,,,,,,,::f#@;,.,.. ...,,:!;i80tiiiti!;!;i!::!Gfii!;;!if0088L!!Ci;;!i!i;iGfiCLCiittitiitf;!;tfi!;;!!!tf!!tfitLiC +.... ..,.....,,;,.,:iti:;0#t:,......,,..,:i;fLi;!;ifft:;:, :0f;::,,,,,:;!itLGt!!i;itCGi!Lt;;LL!;LffCttGCi:itf0#t!tti!i!8@@0ffCC +,:,,,,:..::,i:,i::;!:;;i##!,,,.::::,.,,,,;!;!!:::;:;;;;:!i;;CG;...... .,,..,;ii;!iiLfti!!it!;itiitffftt80!:C008#Lf!!ft;!tfffti!f +:!;:!;...,:;!;:::::,,;G#0;,:;:,,::,,,,,,;!:ffit;:;;;i;!tL0G0i:,,., ..,,..,:;tL!iCtifff880!t80i0G8@CtLGi:!iititti;;!;:it;CL;;L +:,,,:,,,,,;fLfi!!i;,!##i,,,:::,.,,,,,..;L::C0L!:::!fLi!Lf!it:,,..... .,, ;Ltifi!;!tfC#00fiif0t!ttft!tLL!!iitLCG8tiCG!i!!;!;;i +:.....:!i:;;;;t;;;!f##i:,..!i;;.,:;;;,,fC;:;!;,!tfi!!ii;,:;;, .,, ,G8fti;iLi!iiiiL!!Gt!tiiftiffiLLfttfLfCGt0Gt!CLi!iCf +.,,, .,,::,,..;,:!@@i;;;:...,,..,,,;,:!;;!;;:;i!@#8:,G0: ,80, ,;!;:. ... , .,!tCCitft!!!;ii!!!tLiLGi!!iLi!!!!;!!iittiiiii08fiLC + .:. :.,i:!,.,!G@i;;;;:,,,,,,..:..,:..,,,:i!tC!!CG:.;i, .::,,!L@#Gt;;L, ,;::..t8@fLGiLLtCtti!t!!!!itfitCt!ti!;!fLLt0i;fC!!i!;C0 +, .;.,!,:C;:,,t#8;,:tCCi,,;LC!;,,:::,.,,,,,;!fC:,CC, . :;iL@##8L;:!CG@#8t!ti;;;;;!iii!iiifttttfttitftCCffffftfii!ff!;i!;i0 +,.:::;t;;f;.,!ti!i:;itL;:itfi::,;!,.,..;,,,:;!i;:;;:,,:. . ..,;!!!:.,#######:::,,,..,;t!iit8#@8C8G#L!iti;!f@@GCffCff#8!;i!:!f +!i!fiifi;i:,,;!!i!ii;!!:,::,,,,,::,,,,,,,,:!;:::;!;:;LL;,,......,::;;;,::f###@i!ti::,;!ii;;:!ifttii!f@C;t8i;itfLtGLf@G##@t!i!!tC +,;::!::;,:;..iCt:::;;;;:::,,,;!;:!!::!:::,;t;::::::;LfiLi;!:::;;ifLCLCt,,:;!iit!Lf!:;!C0ft:;ii;!;!;;!!!!fGf!0Li:;;!fLtttLfiG8ftC + :,.,:,!:,i,:i!;,:!!!fttii!;;;!!!:,::;if;;;::;i;,,ii;:;i!!i!;;!itii!;!!::i::tft!Ct!:;tLLf!;;G!t;ti!!!i;!@Gt!it!!!;!;;;;;;!;iLi8L +.,L::!:,!,!L:!f;,,,::;;::::::,,::,.:::;!;:;:::;::!it!;:,:,:;;;;::,,..;G;:t:;::,:LL!it8###@ffLfifLt!;!!!!L0tLGCCGG0Lt!tf;it!!;iti +:,;L::!,:,,!i,,,....... ....,,,;:.,,.:,:ftfLGLf!0080!!f;iifCtft;t;t!i#Gift!!;;;tft!iC0########@@L!;;ff;!Cit0GLfG0CLtfLi;C0tGt0L +ii;it:;:,!:.,,..,:;:,.,,,,:::;:;:,.,.,::iLtitLLfiftiiitftftttitftftfL!Lffif80LGLLCCG;:!itttttffLf!;;ii!:!!!:!i!iifffiiC;:!!ii!tC +;8G;;:,;,ii,,:;!iG0G!,;!;;ii:.,!:. .LG;:::::,.. .,,,:,,,,,,,,,::,,.,iC;;ii;;;;!;:,:!!!:,,..,,::tCL::!C!;tLftC088Ciii!iti!!iC + tC, .....,i;:,!G!;;t!,,,,,, .,,. .:!tt!;;!ii!;:::::::, ,:;;:;:;!;;,:::;;;!;!;;;:,,..:::,::;!;:.;Gi:Lt;;!iii!iGCCtfGtCLL + ... .:, .i:..,,. .,,,..,,,,,:;;!;:;####8:!G000GC0888L0f:,,:,,;;CGLG0CC0C;L!tGGL0000fGi.,,. :t;i!;;:;:,;;;,;;,,,::,,:;!!;!;;;!! + ..,. .;,,::,.,,:;;!!!!!;!ifi!!;;G###t,,:;;;;;!0#ttCCfLC0GL!;:;;;;;;t0;:;;;;;;;;!;:, ....::;:::!t:;!t,..::,;!::,.,:,,:;:,!t +,, ,. ,,tti;::,,:::::,,,,,,,,...,:;:, . ,if;t########@. .,:. ....L: . ,:, ... .,:,.,:. ...,.. ..,!:,!f,:!: +. . ,: ,,:::,...,..... :.. ..,::. ,:,,,@##0##LfGLft:. .CG: .;,.::,,..,,. . .. . .... ..,,:,:::,,, + ,:,,. .,,,,,:. ,if:i;.... .. f##0## .. . .,,,,,::;::. .,;;:,,,,,,.,,,,,,,,::::;;;;;!i!ii;it #@8@#######88Gfi;:!!!;, . ,!t;!fLt!i!it!!iii;:,. . . ..,,. .,,!G8GLLLLLft!;:.  +#0G0GffffffG#fi!ii!,. ,:::!tti!:::!Ci!ttiiii,. .. .,.. .,;:.. .:,,;,,. ..,,:;itftt!:,,,,.......  +#0Li!;::;!itG#fC0L:...,,;::;;;;tftLfi!!ft;!!LGt!:,,,,.......,,,:!t,. .;;::,...,,::,...,,..,::::,. .,,.,.,. .,,,,,,,;!!; +Lttii!;;iLGfif#8t!:::;;f;!CLLLfiiittiftfit;:::,.. .::,,;:,:;!:::i!.,:;:,,,.. ..:;t:.,,. ::,;, ..... .........,,:!;;;!;.iGt, +!LC88CiiL!!;::i88!!ti,:::!tffLfi!fCCt;:,,,. ::..... ..,;:..,:;;:;Lf!:::,,,...,,:::,,.,..,,,....... .,;,,.......,::: +i;!!!;;!!;!t!!;!L@i!;;!ftifCG00Gf;;::,. ,. .,,:. :Li:, ,CC,::::,,,,,:,. ..... ... ...:. ..... ..,..,,,,,, +,...,,,,;ttf;it:;C#LfLGC0Lt!;;;;,. ,,.... ,:,..,,.;G0G; ,;:,...,.,,...... ..... .,,.. ..,.,,. . ...,:,.,,,:!!!;,.:,,! +..,,,,,,:;!!iitiiiL8G!;;;:,.. . .,,:,. :G!.....,:i;,..:,,:;;:::::.,;;,.,::,.,,........,,,..,,:;:,:::::,,::,;i!:;:;,,; +:;;,i;!;!tifLCCCt!!:,, .. .,,. ..:,, .it:C:. !!:,.,,,:,,,.,;!:,,::;::::;;;!!!!;;:;!!:;,,:;:,;i;:,;itt!;;!!i:,:::,:::,;t;:,; +t;;;iitifGLt!;;::,. ..,,,. ... .,;C;Lt,,,::;C::::::;;::,:,:t,,,:;:!ti;i:!Cf;f000C!fft!!i;i0f;::;;:;,:;!!::!;f:,:::,,:::;;;;ii +C@i!itt!;::,. .,,,........ .:!fG:!Gti. .;!L!tt;!ifti::,:;:.,;!i;!Gf!:::t;:!ifLffffttGL;i0t:;i;,,,..,:;:;;;!;,,,:,,!:!::;!!L +!G0i::,,. ,...,, ;L:.,,;iCL:.:t;,,.;i!L!;!!i!;itti!t0:.:Ct!:i0L;!;i;:..,fG@@#@888f;tfi;LLt:::,,:t!:;!!!!:,,:!;;;!!:i!!f +:::,...,.,......,,, ;,, ,,!0f:it;::,. :!,:,,,::;:,:i8i:G##80@L:,fLi;;!tt;:GCC;:,:;!!iiiiti;;LGt!iiitit!!it!;;!;!!;;;iftitiiifLif + .,,.,......,:;G! ;0!,,!#Ctt;:,:;;:.,,::;:;;;!i;;t0!!f0Gtf8;.:8L!;:;GL;:!LtCftf!;;::,:;;:,;!;;;!LffCfitf!!;:;;!;!tLfLtiit!if!i +...:;;,,,..,..,.;8; ;80:!##!,,,..,CG;t::t!titfiL0tii!;:;!i!iti::C8fi;!0L;,;i0LLGGCLfG;:ffi!!;::,,:i!tLtitf!:;;;:;i!:!;::::,,,,:, +::;;tLi;;!,,,,,,iGi.,;!i##!,.....,f!if;;;!!!;;;ii!iCt;;ittLGGL;,!GCf:tfi;:;iii!!i!;!!;;ti!;;fG!;:;!;;!;::::,:,:,::,,,,:,:::::::; +,:::;;::;i;,,:::G8G, .;##!,,,,,,.,;L!:!!!it!::!tf!ff!:::;;!iti,.:!i!;;it!;!!i::;!!;i!!!i!;!iff0GLffii;::,,;!:;;;:::::!;tLLL!!!;t +:;;;;:,,::,... ,:;:,,i##!,.,,...,:LC!fft!!;;;i!fLifi;::::;;!L;;!fffLititii!;::;C0i0G0fiGi!!!tLftiiii;:::;;tf!:;;!!!!!;;LGCi!!!fC +.,,,,,..,,. .,,,::i##;,,,.....:fGt!fi;;!;::;:;;:!i;::!!tC!,;GGLftiffLGGLftf!iLtiiLfiittit!iLCit!tii!;ii!if!iLCfLLtL:;fG0;;CtiC +,,. ,. .:::,:!fi::i#C;:..:,,:,,!CfC;!!;::!!:::!;:tf!;;!!!,,,!iiit!!;!!iL08@@Gti!;:tf;;t!;;;t0C!!tif@L!ffft!!8GGL!iL!;!C88i!fftC +,..,.,,,,!iii!;:;!0#!,:,...,.,:!!tf;;;;;::;:;:;!!!fLii!!L, fLit!!:::,,::;!itLCfii!iftittii!t8G!fGCtfi!!!i!;!itii!;;;;:!t!;t;;!C +:,,,:,i!..:;,,.,!##!,........:t;!G!:f!tt!t!;;i!!!!f!;::;f;;;iGLit,..,.......,:!if0tf@8iLLG0i!CGiittiittt!iii!t;:f!,:!::;ii!!iiiG +,,.,,:!;;:;:..:i##!,...,,,,,;L!;fC;!:;!!!!;;Lt::::i!!;:!t@C8C!::,,..,.. ..,:,..,!iiiftiitti;!fLfCCLC0@8@8f88tLti!!!;!;;L8@L!0GiC +,,;,;!!tfCLi:;8#f:::..::!::!i!;:!L;.,,;!;;;;;;,,,,;Cttft00ttC:. .,.... ..,,,,:;!t!!f!!fCL;:!ffitftitLffttfti!G8LtL!ii!LC0t!tffC +,;!:,,,,;!:;!##!,,,,, .,,,,,:,,,;!!i;:tC;;!;;;;!ttLft!tii;;!!;.. ... ... .L0Cf!;!iLtLt;;!Cfiii!;;!i!!L!!LiiCfiLftt!iLft;f0G8 + ,,,:,:..,;i#0!;!tt!..,,:;.,,,,,;ifCC:;!!!iiftit0@#@f,:GL:,G@f..:;:, ..:f, ,;ii;;tttfii!!tLGtGGf!;!!!if!!f!;!!;fLif;!0G!;CttG + t.:t:i,.i##i;;tCf;:,:!i;,.,::..:i!L!::iitf;;!!ititLt,:0G,.;t:,:f8@Li;:t,,!:,. ::;i080LGfttittt!tCCffittffLCi!Lt!iiit!itti;:iiC + ;,:f;,,;8#i:!tt!;:::,,,,:..:,,,;!!::it!;;!;:itG; :0G..,,. ,;!L8#@8f;;iLG88i::;iC@CLt!i@0;iGi;!t@808L0####f!i!;tf!t;!0Li;;!iG +,f;;i:::;ii;.,::,::;;:,:;:,:::,!ifi;::;!:;t!;iifi,:;;,,.. . ..,;!i!:.t######;;iitit!!:!ii!t8tiLtiii!t0LCfftiLt!tCi!iiLCLt!!CG +,!;,;,..:CL:::;!;!tfft!:::!iL;::;!;:..,;!::,::!;::;!:,;f:,,. .,,::;:::!LCCLi;;GL;i;L!;:::;8Gi;!!;;;;!;!;;;;!CCtfCiiCtfLfCfiCG + .;,,!..:tii!!!;::;;;;:,;;;iCi:;!i,.,:!!i;;::!;:::::;;tCC!;!::::;ifLLLL;,:!tffttfLLtifi!!!!;!88ttffffCLi;!t;!!!!!;!ttiiiCCCi!!!L +;.,i,!!,!;,,,,,,....,:,,,,,:!;i::!;,,tCCtL;;i:;i!;.:f;;tf!!ti!;!ittti!;;,:0#########0@C!;;t!;tGtG8GCC8GLttLiiCGffiiitit!fLf!tfi0 +::,::,L!,:,. ..,,:::.,!,.,,,,,:;;::!!;!;;;:::::,,!!;:::,:;;;;:;::,,.!i,;;ttiittL##@C!;;!!;:!ii!ttttfffitf::!i!!!GL;;::;Gf;!LiL +,!:.,::;;,.,,,,:;;:,;: . .. ..;;;;,..;fLftLffit!Lftif;iifLift;t!Li;f@t;ff!::::!tii;::tCt::tL!!iLtCGG0Liti!ifi!ifii!:,;if:;f!f +:,;.,L, .;;,:::ii, .,. .. .;CffitLLLfffftfftffttiittttLtttLttf8Cf!!iLLL!;::;;;,,t0!tt;;itii!LGGLfCtCt!fCL;,!LC!;;;; +,..,,,;,.,:....,,..,:::,::;;::;:::, fL:,::;;;:,,,,,,:,,,,,,,,,:,:,,.:t;:i;::::!i;!;;;;;,:!;;;:,,:::,:;!i!i!!;!!iii;;iGGtiC;! + ;;...,,,,;;::;tCftiLGCffffff!,,:itt;:,!tii!!:::,:,::,, ,:;;;;;!;;,,,:;!!;!!!;;:!i,!i;,,..:;;,::,:;,!i:,ti:ftiifiii;;;i +.,. :,,;;;;;;;:::::::::;;;::::::,,;####8,:G8800CGLG8L8f0G:!,,. iCLG0GG0GfC;iG000GGGtC:.:,.,,,.. .......,,.,!,,,,:,:;;::,,..,: + ,...,,.,... . ,,:0@8#i,,:!;;;;;;!C#GtCGLLCCCLi!;;;;;!fi;;;:;;;!!;;,, ..,,,,,,,,,..,,,.,:,,.::,,,,,::: + . . . .,,,., :;,:,...... .,:,::,,:. . .;f!i#########. ,:, .f:,::::,. ..,:;;;;iLCCLffft!!!!!!;!i!t;;;:;i!iLLt + , ..;,. .:ii!;;. ,!GC!t:;:, .i,.:;:,!, ,:: ;##G##GfGGLt;. !Gt ..:ffLfi!;;,,,:;ittffG8@@80GCCGGGCCLLLffLtti!;;;;!!if + ,;;;:,,.,,,..,. ,;::,,, . :: .. .##C##t !; :i!iiiiiiiiiiii!!!itffftLffffffffftfftiiitiiiii!!ii i::i!, ,CC;:::;!;:..:!fffftt!t;!!;fi!tiiii, . ...., .,.:;;:,,..;fCG0GGGGLLLffLLGLfCLf!iCtft!;;;:::;!;;!!iiiiffLtttiitfffftit +!if!;;::,:t8i;!;,,::;:::!!;;!iiitC0t:,... . .,:;:. ,::!!tt!!tC!;!!LLi;:iGL!;:!titfiti;!;;:,,,,,..,!ft!i;iti!ii;;iL + :!ft00!!;;;8G;:,;iii!!;!i!if00Ct;;:.... .,:;!!tG;,;:;CL::;;::!ii!!Lit!;:iGi:,;!LGCGfLLGLCf::;;;;:::,::,::tfffff!!!t +:;::;!!;ii;;!C8i::!it!!tCLLfi;;:, ,,,:,. .:;;;:,,:,:fft;!Gi!iff;i;;;!!ittLGGfttfC!iCi!::i!ii!!itii!it;!L0Li!!i;:.,.,::;ifttLff +:,,,,,,::;!!;iC0i;!tffi;::::, .:;!;;:!LGGLGi:tG;:i!:!t0G!::,,,;;;i!ff!!ii;:!!;!ft!;;;!;;:,:;,,::t;!ii!;:;CL!;;::::;;;;::;! +;;;;:;;:!!ii!iifGt:,::.. .:,. .,:!tCGGGLt;;!it!!!!:,!f:!fi::L, ,i:,::::;:,,,,,:!:itftii!tt::;!!;!!!!!i!;!;;tiLG8LfCfift!;,,:! +,:;!:;!!!tLLfi:::,. ..,.. ..,.,::,iiti;;;t8i;;;tfi!;!!!i!!!;:,,,::!:::;:::!:,,,::::;ti!;!!:;;:;C0iCLL0!!C!!!!ifiii!!!i!t!;;::;ff +f!!;;itt;::::,. .,:,, :::::!@L,,:,,.. ;GiGG!i!;iitfGLt;i:;t, ,f:,;t!;!!;;;;!;!!:;Cti;:i!if!tCfittfLiitttti!iLi;::!i;;t:,!;;tf +L8Ct!:::,.......,,::;,,,.;8!.:G#!,,::..,,,!0i!i;:,:;;;!i!;::iL; ,ti;;;;;;;ii!i!!!!;!fii!itL0Ciftt;;ff!;LfGG0ttfGf;!;!t0t!!i!!!!f +;;;:...,:,::,,,:ii:0C:!;,i0f:i#t,,;;,,,...;C;:!;;;:::,,:::,:f0; ,LLti:;!!;;::;ti!;!ititiff!i!!;!;::;!!!ttttiiG0t!!iffC#GiLLCLtiL + ..,,,,,:;:::,,::,:i8;,,:::;i#0:..........!L;:iift;tt!ti;;;;tC; .!!;:;;;::;,:!iti!:!Gi;fftiffL0LL!!ftiLCLCCi!CGi!G0Lfiiit!!ti!!L +:!!;!!!!iLf;!,;i;,,!L!, ..,!##!::...,::,,:CL;;fi!;;iLttt;tLitG: ,;!.,:t!,:!ttC080!:!Li;:;tLG##@#GitC8iffL0G!tfCiiittii!i!;:!;::C +,,,,,,,:;!;::!:i:.,iCG;,:;;##i,:::.,,;;,;ttG;:i;:!:;!!;;;!t!i:,.fL;,,:::::itLCCtti;;i!::i!tiGLfftiiti!!itti!iLt0CLfLC8GG0tCCCiii +. ......;ii:::,,:,,:!i;tt;f#t. ,,. .,,,,:iL:,;;;!::fi!i;;;;!!,.!Cii!;;;:::;!i!;;;;iLi;iLi!i;;!Lf!CL!iLGLfttLfiittiifttC8f0G8fGG +..,;::,.,::,.,,::i:,::,,;i#f,.:;;;. ,,,;.,L:,:!iLLi:;!!tttftf0; :Ctt!ti;;;:,;t;;;:;L@fiLttCiCi!i!;;i0!ittiitLi;;;;;;!!!tii!fiifG +;!,.,...::;, .,t!:,::,:i#0;,!fG!,,,;!!,,:,,,,:i!f;,:ttLt!f!t0! ,t;:;;;::!i;;::;!::fC!;tiiGttiiC!!iiit!!!ftGGi!L!;;!itff0!:t0;;f +:.. ....,:,:;:;;;:!Lf:!#@!:;tfi:::::,,,,.,.,:;;!::!i!;!;;!tL0: .,,,;;:,,:ti;::::,,::,,:,,:;!:;!!L8LLfCtfitif!tLLffLfffftttfi!iL +......:,.:;::fi::!iii!t##!:,,::,::;;::;;;::::ifLt;:;!!;it:t08;. :::,:!!;;;!ti!::;;;i!:,,:::,:,::!8CGfii@@titi:;!0#@@8fG8C0#C;!fL +,::,.;:..,,::;:::::,,!##!;;:::!!!tLLii,,:ifG!;!!!:,.,i!;;::;:,,:it:,!fCfff!;!;ifLftfi:;:iC;,:;;!!ii!;:;ti!i0t:!!ittttfGC08Ctifit +......,.,:;,;;:,tt..!##!:!tt!!i;:;;;;:,,;!f0f;!i:,,,;!!;;,:!iCCftti!;ii!;;::L:tCL!fti;;iti!;:fC;t;ti;;::;iGf;!tf;:::;fifiiLfC0fG +; .. ...;;:,.,.,!:,!##;,.,:::,,,..,,:;,.,,:;;!:;!;,;LL!f!,,0@GGCLGCLi!i;:;!;:,:;::tf;iiC0#GLfLLtift!iit;!@8fitfftii!!!!!;!;;ftG0 + .. ...,.,:.:, ,!##;,.::,,.,,:::;;;;,.,...,,,:;;::;;;:,.,:ifiiiiiffftttfGf:,.,;;Ct!;if@#######8@L!;it;!GCi8@@8@@0Lff0iLLi:!!ii + ;.,i,!!,:,:##;,,:LCi,:;!;tt,.:;. ,.,..,:,;!!!!!t:;;::iLCGCfC80;,:;!i!t:tf!iiiitfC8Ci!!!;;!f!;ifffffti!Ci!ifiCiGfC +. : .,,,;;;t::!tii;,:C!;:;,,,,,,. ,,:,,:;;;::, .:!0@8Ci!:,,,,,::;!itiiLC!,.,,:,:::,....,,:;;:iCf:!Lt;!ii;itti!itiiiititiff +...:;i::i;!Lt!i,,,tLt,,::.,,,.,,,,::;tftiCGGCGfi,..:;!iCftL!:,. .....,,,,;!tG: ,:..., :!;!:;!!;:;G!!L;:::;itt0GCC0Gfff!iG +i:itffti,::::,.;..!f!::i;;;;:;!!!;:;;!;::;!!;;:!CL!CGt;:;!!;. ... ,;:. ,iCC, ., ..:;!t!!ii:;t;:!::,::::;!iiiii!ii!!!t +!!:::;::,.,:. ..!:,,:;!!;,:,,,,,,,.... :8#8!!t!:,0@f..:;;:,...,.. .;:,. ,, .,,,,:!::!i,...:;!::;;!i,;t:,tt;tit +,;. :t,,i!,:..:,:,...,,. .. ,!CC:,00..;L!.:L8#@Gi;f::itii:,:,,,.,,;: .,. . .... .....,,:,,;!,:::,,;t + ;! .:i;:;;,:,.:,.........,...,;:,:, ......::,80,.::, . .:;f8##8f,:######:,,:,:;;;:;,,:;i;..,...,,::;!!!!!!!!;::,,,,,,,,,.:! + ,,. ;L!::,:,,:.,::,,,::;::,::;;:::,,:;;;:,ti;;;:,,::;;,...,:!ttt!::;tLLf;,..::...,:;tfft;::,,,:;!itG88@88@@@8GCLf!!!!;:;;::i + .!: .;f: .. .;,,::::!;;;;;;i!!;!;;;ii:;!;;:::,;!!ifti;!;!itfftfi::. ... .,,,,:;;;!!;;;!!;::::!tLCLfttfftfLLCLfLCfi;it!;! + :i, .,,.. .,;:!;,:,;;!;::tGtiti;!:,:;!;,,;it;::;!!!!itii!;ti;f!:,.::. .;it;,,,,,:::;;::;:,,::;;;:::;;;;;!!!!ii;;:;!iii + ,i; ,:.. ,, ...,.. ..,,, .;i;:::,:::;:::,::,,.,.,::::,,...!0!:!Gt:,,,,,,;!;,.,::;;!;;::,:;::::::;!!!!;;;;::::::;;::::! + :; ,.... .. ,.. ... .,.,tfiLGCLtfiti!iC!tttL!ti;i;tffL0ii0!;;;;;;;;;:,,,,,::::,,,,,:;;;;!;;::,,,,,,,,:;;;!;,..: + , ,. .., .:, .:;:!,.. ,,!CCLLLLfttiifLLLfffffttffLLLi:f8fii!LLffffLLi!;,,,,.........,::,,,.. ....,,. , + , ..:. . ..,. .,. iL:,,;;::,,,:;;::,,,,,,,:::,,.:;:,.,:;;;;!!;:,,,.,,::,....,,:;;;:,.. ... . ..,,. + . ,: ... ... .:!ii;,.,!!!;;,:it;:!:!!i;:,,::::,:!,:;,;;;!!!!!;!;:...,,,:,....,,,;;;:,,,;;:,,.,,,.,,,,:;;, + . ,,. .,;!ffi!::i!;,:####0..CGGGGLC;fft@0######t;G8GG0!!Cf:Cif00G0800fG!,.....,:,,.. .,,,,.:;;;:...,. .. ....  + ., ,,.. .,;tt!LG8Giittf!i08G@i..,;;;;;;,!#########@:,;C!;;Li:,::::;;;;!!!!;;::,,,,:;:::::,:,:,::,.:,,,,,,:,.,. . + . .. ..:!!;::;!f!!;!tffCt;;;;,. .,,. :8fL#i;;;;,. .. .::::,,,,,,,.,,,;;!itfttttii!!;::;::;;:,;!;:.,!;. ..  +,, , .;!;,,, :f!::;;!!ii!;!ft:,,;tLi ...... .,tfit!!it:,,....,:it;;;;;i!tti!;::;;,,:,,,. .,....  +.,:::,. .. ,,;:,. :;iffLLttttt!!i!ittft. .:,:!;;;;;;,... .:..,,:::::!tt:. ,,,:..... ..   .,:;fff!,;CL;;;!!iiitiiti!;!!!it!:!;;i!,.. ..... .,. . ..,:,;,, .!tiittifttfttLCLLLfftffti!;:;ifLLffLfLfCfLffiittifttt!iLLf + ,,,,:;fL;;tGi;;::;!;;;!ifLGGfi,,,.,... .,,,,,,,,..,::.,.:tGi,:::t!!tt!ti!!it!!iiiti!;:;i!!;;i:,,::;;!t!C0ittGit!;!ittt!!!i!it + .:;;:;!;!!C@i;!tffi;ifti!;;:,. .:,,,,,,:;;:!ii!!:::00, .!G;,;LtiLf!ii!tt;ff!!!;it;!i,::!L;;;!!;!itt!;:!Cfi!f!iifLL0###0i8@8tL +t:..:;,:;;:,;!iCLiti;:,,:,,. ..::,.,i@i,;::,,,:::,.;Li: ,fi;,;::;f!;!!!!!;;i;:;:;!!;:,,,;i;;;!iiL@8@C!:!t!:;:;fCf0#LC0Litt0#tC +8@t:,,::;;;:;;::;:,,.. ,..,....:,tL: ;##;,:::; .,,,;:;@8!::...:t!fif!,,:,:;:;Cf;!;:;;;;!ti!tiiti!;:!t;;!f!!fiLttti!;!:;;!t +;f##f;!i!!;:,.. .,:;,;;L;:;:.,.,!i:.t#i;;;:,,,:::, :,:i:!C!:fC:..;it!iii!!!;;;:tCfiiiiit;;;;:;!!ii;:;!L!:iCG!!;;:;G0Gi0L!!;iL +t;CG@G;,,,.. .,,.:,i;iGG8:....,,:f:!#f:fCLi,,!fGi,,.,;f:,,::,,,::i0!,:!tLftGf!!!!fi!;i!ti;;!t:,tf;!!;!iC8titti!;!f;!it!iiLGitG8 +;;:!i!;,,,,,,,:i!,,,;88!!0!.,::CL!!t##!:!ifi::!ii:,:;:Ci,:..:i, ,Ct;i;;!f!!!!;;;tfi:,:;;:::;i;:;;:;!;:C@CfG0LiG!C8CLL!ii:tf!!iL +:!!tfi!!;:;;;;;:::,;;fC::iiiCCCfLL!##i!!!;!i;::,.,,,,ti;;::,;!:. :;;:;!:;!::ii!f;!t:,.,i!::,;!i:,,::,,,;!!!!!;fiii!iLttftttt!;i0 +.,:;;:,,,.,,::::;!!i!,,:!!00t0f;::L#!,.,,:;;;:::,,;tt:,i!!f;:ti. ,f;;:!;ifi;Li;::;!;:,;!ii!;;!i!:,,,,,:,,:!!..;tf;,:it8@00G8GffC +, ii, ..:!tt!;::::,,Lti!;:,, .!#i,,,,:;!tttit!:!ii:,,::;;tti, ,!:.,ti;;:;:,,,:ttL:;tC8CLLt::::!ii;!t;;:;i;:,:::,::tfttftt8##0 +:..:;;;:;;:,:;;:,i!:,:::i;:,. .!#L,;i;;;:;;;:;;:,,::;;,.,:iLCt. .:::!!!;::;ii!;!tfi;!tLfitL!;i:!fCLtLti:!!fG!:;;;!;!;;:::::iit0 +;;;!tGCi;,.,,:::,::::,:::ifL:.,!#@:,:,,,,..,,...,,,,;!!,.,,:;!, .ii:tCt;t;;i88Gi;iG::fCGf!!f!tftCL!!fLii;ift!;i;G0;t::!;;;;::!f0 +ttCt;;::,...,,:..:;:i!;ii!LCt,!##;,....,:!;:,,,,:!!;:!:. .,, .!!::;;;;:,!fi;:;!;:,:;;;!;:;!;;;:,;8t;!L@##LffLLt!!it!ittt;!G80 +.i;f:, ,,:,,;, ,,,:!:!G!,;f!!##i;,,,:,:G0Gt!;;:;i, .,. ... ,:!f!::::::;:,,::::,,,:iiii;;:LLi;;tf8#######Lt8!!!!i!t08LG + i::Lt,..,,..,,.,::,;:itf,,ii##!;t!:,..;;;;:,,.,,,..,,:,,:;:::,. .,,;;!i;!ti;!:;Lfii::ti;ifi,;i!L;!i!!ititC@##@i;::!!fC0t!0 + ,L::;i: .,..,.:;:,.,,,:,:i##;,,,,...,,,,,..,:;;;::;ti!!LCLfCi. ,, ......,,,,,:,,,.,:;!:,;!,.;:.,:,:::::,,:..,,;!i!!;i;;itf!!!i + .:! :,, ...,,...,,,:.,: .;##!::::::;;iti;:::;;;;;:::::::;;;;:,. .,:;!;:::,,,:,... .. .. .;:.,:,. ...,,::::,:ti,:08!;fCL + .. .t,. : .t,.i,,,:@#!:iifttiii!!:,,...,... . .,,,, .::;!!:,,....,:;:::, ., .,: .. ...:i!ft!!;;;:;fi;i!;! +.i;;;;:t: ,..,,;i;;t:;!iii::;;;;;:,,. . , ,;!,,,. ..... ,,. ....,,. ....:,!;;;ti:ii;,:;:::! + ;fGGCiiC!,,:!i::itLLi::,.:GL!,::;;;::,.......,,,:,...,:!!;;:::,,:;if:,,:,..,:::,,,.. .:,.,,..,:. .,,,.. .:,,:;:,...,:;; +:,:;;;if08ftfLt:;:::::, .,,;;,,,:::::,,,,,,,,,,::::::,,C@@##@GCf!f8#@L!f@G;:!tfftii!::,,.,,,,,,,,::;i!...,!f;. .. .. +;.;. ..,:!L;::,,,:,.::...,;. ..:,,...,.,,,:;,,:::::;:::!ttL0@@CLLLffttftf@f,,:;!;;!iiti;:::::i:;,,:;;!;!i!:,,. ....,::;;::::,,,. +.. ,: ,!. :!:,;:::,,,,,,,::::,,,,,,.,,::;;;;:;;;;tii;;!ifCLfti!!tt!!i!:,,,:!;:::::,.....,,...;i!ittt;,....,,:!!iCCLCLLLLLLt +i:,,,. ,!.. .,ii;:::,:;..;ti!!i!tii;!;!:!:;i!!;;,;CLtt;,::;iCGCLtftiiiC!:;:,:::,.... .:::,,::::::,,;:;:,,:!ttfftttiiiitff +fffi!, ;t. .:i,..... ;::,::t;itLLL;:;;t#@iC;,:!ii;,,,,,:;!fLfi!!!ii;,:;::i;;,,,,,,,,,!i;,,,:::,:,,,:,:,,:;!!;;;;::::;;!f +fi!ift, .ii. ..,... . , .,,:,::;:, .f#8!;i!i!@8: ,:;:...,:::::,,,,,:::::;;;;;;;::;::::,,::;;!;;;::::;;:;;;:;!!;!;!!!!t +Ct;;!tt:. ,f; ,.. ,, ,;;:::. i#G,:0f,:C8: ;L0Ct!:,,,;iitt!;:!;::,::;:::::::,.,::,,,:::::::;;;!;;!!!!;;;;;:::;;! +Lt!;!iif;. .,! ..,, ..,, .. . ...,: :L@C,,:::!i!:.,!C@@0!, :######!:;!::,,..,,,,,,...,,,:,,:...,,,:,,,,,,,,,,........., +t;;::;;!i; ,.. .,,. ... ,.:;!;:,:,!!!;,. ,LC!:::!tfi!!::!tti!;;;,:;;!;;;:;,;;,,.,...,,:,,..,:::,:,,,,. .....  +t;,,,,,:::;, . ,. ......,,. .,;,;L880fL!,,:,::,. .,:;!!iiiii!;Lt::::!,,.,..ifLC!!!;!;;:,:,,,.,.,,,,,,,,,;;!!;;,,,,.,:;;;;:,. +!:,,...,:;ii,.. :: .,.,;:...,,!ff!itCt!iCt:...,LC,. .,,,,,.:GL:,:C8C:,,,,::::,,;,:i:!;:!:::,:..;,,,....,,,,,,,;i:,,,,,,.,, +;,.,.,:,,;::!;;,:,. .,:::;ii!:;LGC!;!!tf;::::::, . .,.....,:;ti,;!;:ft!t;,.....,,,::;!:!:::,:;:,,,,.:,.,,,..,,;;,..,,  +!,,,,::,!:::,,,iti:,.,.,,;tLi;:,. .,;!itCGLf!iit!t;!:.,i,!!tf!ti:!:tCifft;i;;;;t!ffiL!;f:,!:;:,!:!!if!!!i!;!!;;i!,,:,,:;,,,,,..  +!!:,,:;,,:,,,,.,,,:;!;!if!::,. .,:;tftt!;;!tL0tiiftttiiftfftLtfGft80iLi!;:iLG88fCtti;;:,...:iti!!!iifti!iii;;!::!:!!,.,;;.. +it;;:;:::;,:,,;. ..,,,,,,. ...,;;,;,tL;:!!;,,:i#G######C,,:CG:::!::;:!ti!!,,:;!;;;t:!t;!;,,,,::,,,::::;fCi,,,:,,,,,,,. ...., +!!fiii!!i;;;::::::,,. .::!!t!;!tft!;;;;!!!:!@8#####@!::;!!;:;;;::::;;!;!;;;;;:;::,;!:!;,:i,:;,::,:,.:t:...::.,,.,...  +,:::;!!!;;;!ii:;;:,,,,,,,, .::;i!;;####L::;;C0GLG;;;;!;;:;CfGL;CCfCGCCC;,C!i00C0000fC, ..,.:,:;!,:;,::.,,.,:,::,,,.,:..,. ,.., +::,,..,;!!;:;;:,,;;,,,!ift;;;!;:;!!;;C8##f:i!:!!;;,, ,,;:::::::;;;;:,,,:!t!iti!t;::,,,,::,,;:,;i,::,,:,,:,.,,,:..,,... ..  +::!;. .,;,,;;!!;!;:;;!iiLCfC0Li:,,,,,:!!!;;;;:,. .,. ,:.:,,,;:!t;;t!:i:,:::,:,:f:,;,,::,;;,,:,.. . , +:,,,,.....,,,;iftttttfLLffLi!!!:,,::,:;!it!!ii!i: .;:,!:,,, .;:,;::!t;::::!:,;:,,;:;i::t!:!:,:!::;:,,. .., +::;:;:,:;;;:,,;!itttii!!!,,::!!!!iiiiitt!!!!i!;::;;:, :::;;:;!::;, ,:,,;:,::,,;,:;;:;!;!!;:!!;!!;;!!!!;:::,::,:,  .,,:ffLi,:CL;;;!!iiitiiti!!!!!iti:!;:i!,.. ...., .,. . ..,:,:,, .ititfftttfffLCCLCLLffLfttiiitfLLftfttLtLtLfftfLtfLfff!CCCL + ,:,,,;tf;;tGi;;::;!;;;!!fLGGfi,,,,,.........,,.... ,::,,,:LC:,;:;f!!iiiii;!i!!!iiif!!;;!!;;:;;,,,:!ffLft0tittGti;;;!!i!;:;;;!! + .::::;;;!;L8i;!ifti:iftii;;:,. ,::,,,,,,:::;!;;:,,;00, ,tC:,iGtiGL!tfC0t!tti!!iC!;t;,;;i!:::!:;!itti!!iGi;ifii!ffL0@08iiCfi!0 +t:. :;,:;;:,:;iLL!ft;:,,,,,. ..,:::.,i8!,:,,,,;;;:.,;Ci, ,Li;:;::;t;:!iti!;tt!;;;!!!;,,,;fi::;iii8@@@f!;fi!;::!tLL##@##0fCG#0i0 +@@t:,,:::::::;::;:,,.. .....,,,:,fC,.;##;:;,.. ... .,::,,,;@0:,,.,.:!!ttL!:::,:;:!C!:;,,:;;:;!;iiitti!:;ii;!;!;LLf8LLft!!!!fi!t +;C##t;!!!!;:,.. .,::::!f;:;;::,:i!:.t#i;;:,,,.,::,. .!,ii,;L;:fL,,,!fL;!i!;;;::::LCt!!!!!i:::,:;;;;;::;!f;iL0t!!;!;fCG!!C!!!iit +t;G8@G!,,,,. ....:,!:L0@0:...,,,it,!#t:fCi:.,!f0Li:.::!,,,::,,::;L8;:;;ifffCi!i;!fiitLLCt!!!;,:i;;!!;;t0Gtfttii!i;;;i!;!tGLfG@0 +;:;iii;,,,,,,,:!;.,,:LGti8; ..:Ct!it##;:!iC!,;!ft;::!;C,., .!!. !8f:::itL!!t;;;!ft!:;!ti!;;!i:!t!:!!!i0@G080iC0i0Gtt;:;:;GtitfC +:!!ifi!!;;;;!!!!,,,;;G0::ii!fttfCLi##i::;;i!!!!:,;,.,L;:::,,;;, :!;:!i;;;:;;!;i;ti::,iCi!;:!!;::::::,:!ii!i!!Cti!!tt!!!;!i!!tt0 +.,::;:,,,,,,:;;:::;ii;:;;!08C0L;;;C#!,.,,,:::::,,::;!::titt:;i; ;t;:;!!it::Ctti;!!:::!it!;:;ii;,,,,,,,,,:!, ,itt:,;it@8fLfCffLC +. !!, ..,;ifti::,:,,Lttt!;:,..!#i,,::::;!!!!i;;ift,,,:;;!fi; :t:.:tii!:;;;:::itt:itCGftii;;!;;!;;i!:::;!:::!:,::;08G0CL0###C +:. ,:;::;;:,,:;::!;,:!::t;:.. .!#L,;i!ii!!i!;!;:::;:;,.,,:iCf! ,;::;!!;:,;;!;:itfi;!tfi!iL;;i;ifGLiLt;:;;CG;;;;;::i!!!!!!iftt0 +;;;;iGLi;,..,:::,,,,::;:;iti, ,!#@:,:::::,,,,,,...,,;!!,,,,:!i. ,t!:tf;!t;;t0Gf;;iC:ifLC!;!t!fftGC!iCti;:t!;!fttCi:;:;;;;;;i;!t0 +ttGt;!;:....,,,.,:;:iitt!tCC:,!##;:....,:!:,,,,,::!!;!:.....,, ,i!:!!;:::,G8L::!i;:,:;;t!i:;:::::,i0i;it8Lffffft;:;!fttti!;iG0G +,!;t:, .,,,,;,.,,,;;;iG!:tL!!##i;,,,,,:G0L;;;!;it,.,:. .,;,.:;!i,:!!!::;;,:::::,:::;:::,,:Gf!;;C0######0fttG!!!ii!f#@LC + i:;L!...,,..,..,:::;:tfi,,!i##!!t!::,,t;;:,,...,,. ,,,,,:;:::,. .,;!;!i!tti;i;iCt!;,;ti;tL;,it!t:!!iittf8####8!!:;ftiC0tf0 + :f::!i, ......;;;,.,,:!,;i##;,,,,...,,,....,,,,:::;t!!iLCLLC: :. ...,,,,,,,:::,,:!!!,,i!,,!:,::::::;!;,:.,:!iii!!;!;!!it!;!t + .;; :,, ..,,,...,,,,.:, ,;##!,,::::::!t!:;;;;;!;:::;!::;;;;!:, ::,;;;::,........ .,..... . ,;,,.,,,,,..,,:::,,;Li,i8L;;ifL + . .t,. . , .i.,!,,,:@#!:!ifffftiii:,,,,,,,,.......,.. .,,;!;:,,,,,,:;;::,. .. .,:,.,. .,..:!ifi!;;;;:!L!;f!;i +.!;;:::f, ,. .,;!;!!:;tti!::;;;;;::,,. , ,:!!,... . ...... ,,. ....,. . .. .::i!!!fi:!i:,;;:::! + tCGGf!iL;,,:;;::iiLLi;;,.:Gf;,,,::,.,..... .,..,....,:!!;;::::::;i!,,,,. .,,,,,,... ,:,,,...,, ..,.....,::,;!:....:;!; +,:;!;ifC00ttfLfi!,::::,.,.,!!,,,,:;,:,,,:,,,.,::,;;;:.,0@@##@GGt!L8#8t!C@i:;!fffti!::,,...,,:::,,:;!t, .,!i, ,,.. .... +;.;...,:;!L;:::::,..,,...::...,::,,,,,.,,,::,::;::;::::!ffC0@@CLLfftttLt08i,,:i!;;iiiti;;::::i;;:,:;;!:;!;,,.. . .,:;;::::,,... + ..:, ,;. ;!::;:::,,,,.,,,::,,,,,,..,,::;!;;:;:;!fii!;!ifCLtti!!t!iit!:,,:;!;:::;:,,....,,..,;!!ifti:,.....,:!tfCCCCCLffLt! +;,... !;. ..,i!;;:;,;; .;t!!;!!i!i;;:!:!;!!!!;;:tCLtt:,:;;tGGCftttiitC;;;:::::,.... .,:,,,:::::::;;:;:,:!itffffLfttitfLL +tfi::. .i;. ,ii...... ::!:!iLiffCff;:!!G#CtC::;i!!:,,,,::;!ffti!!!!i;,:;,:!;:,,,,.,,,:!i;,,,,,,,,,,,:,:::!!!!!;;;;::;;!!f +fiiiti. ,f: .,. . . .,::;:::::,. ;8#f!ii;!i@C,.,;:,. ,,::,,:,,,,,:::;;;;;;;;::;:::::,,::;;;;;:,,::;;;;;;:;;;;!!!!!it +Ci;;it!. ,f. ,.. .. ,. . .;;:.... ,C#i.G8:.;88,.iC0Li;,,:;iiitt!;:!;:::::;::::;::,.,:,,,,::::;;;;;;;;;i!!!;;;!;;;;;;! +Lt;;!i!i, .,; ..,. ,.,. . ,,;, !@@i,:::!!i!:.:t0@8C;.,0#####@;!!!:;,,,.,,:::,,..,:,:,,,..,,:::,,,,,,,,,,,,,.....,: +t;;:;;!ii, ,. .:,. . ..,:;;:,,,!!!;,. .;Cf;::;itt!!!;!tfti!;;!::;;!;;,,:,;;,..,..,,:::,..,::,,,,,,,. ... . +i;,,,,:;::,. ., .,. ......,.. .,:,!L08Gff:,::,:,,. ,:!!!iitii;!L!,!,;;,,,,.,tfLL!!;;!;;:,:,,..,,:,,,,,,,,:;i!;;,,...,:::::,.. +!;,....,::t;.. .;: ., .::,,..,;ft;ifGt!iC;,...:Ct.. .,,,,,..:G!,,:00t,,,..,::::,i:!i:!::;::,,,.,;,::,...,,:,,,,:!:,,,,,:,,, +!,,,,,,,:;:!;:,,,,. ,,::;ii!:iCGLi;;ift;;;:::,. ...,.....,,;C:,;!::Li:!,.. ..,,,::!::!:,,,,,,,,,,.....,,..,,!;,...,  +!:,,,:,,;,:,,,;ti;,,...,,:ifi!:,. .:tftLLCLt!fti;!;:..,i,!!tf!ti:!;LGtfti;!;::it!ft!f;;i:,;:!:,!:;;;t;;!!;;;;:;!t!,:::::,,:,...  +!!i,,;;,::,.,,,,:;;i;;!ifi;:,, ,:;!fLti;;;!fC0!!ittft!ifftttLtL0if0L!f!::;fG8@8LCffi:;:...,;tLtitiitfti!!!i;:!:;!:!!,.,;;.  +i!;;::::::,,,:: .,,:,::,, .::::,LG;;;;,,:;iCC######;,,:Gt::::::::ii!;!,,;;if!it;it;!,..,,;;::::;;;;tLt:,,,,,,,,,,. .,.., +ift!i!;!i!;;::;,,:,,. .,:;:!!;!fff!;!!;;!;:!@0#####@;,:!!!::;;:::::i;!;!;;;!;;;:::i!:!:,:i,::,::,:,.;f:. .:,.,...  +,:::!i!!;;;!ii;!;:,,,,.,,. .;:;ii;!####L::;;C0GfL;;!!!;;;iCLGL;CCtCGCCC;:C;i0GC000GiL, .:,,:,:!;,::,:,.,,,,,.::,.,.,:. .. ..,, +:,,,,:;!;;;;;;:::;:,.,!it!::;;;;;!;;!C8@#t:;::;;::,. ,:;:::::::;;;;:,.,:;i!ii!;i::,,,,,:;,,!,.;!,::,,:,,;,.,,::..,.., ... +;;i:. .,!;,,;;;::;:::;!iiLLfL0Li;,,,,,:;!;:!:::, .,. ,:.:,.,:,!t;;i!:i:,:::;:,:t:,;,,:,,!;,,:... . ., +::,,.. .,,,,:;it!i!!ittftCGft!!;:,,,,::!ii;!!!!i, .;:,;:.,. . .!:,;:;!t;:;::!::!:,,::!t::i;:!:,:;,:;,,,. .., +::::;:,:;;!:,:!tfffftftii::::;!!!iiiiittiii!ii;::::, ,,,;::;!:::. ,:,,;:,;:,,;,:!;:;!;!!;:!!;!!;;!;!!;:::,:,,,, ...,:it!;tCt;;ii!!iii!!!!!;;!;iL;;i!iLi:,. . ..;,... ,,;;:;,. ;!!ttLLfffttftftLft!!ittttitfLGG800GCLfCCLf!!fLGC0#0G0GCLC + :;:,:ii;;G@i:;itti!:!ffLGGCf!,:,...::,....,:, .,,.,;!..i;;;,,;,.:;::!fL;;;;::::;!!LGi!!;;;;;;tCi!i!!!!!;;!ft!i!i;;ttfttfii!ii + .;:,,::;:i80!;!LLti!ii!!;;;:,. ....:Ct,;f;:,,,;ift!:G0, :tL;.,i!!tGC;,!!!!t!!!;;;:!Gfftiitii;;!;:;;!ti;::;if;!f0t;!::,!GGCiCLf +t:,.:,.,:::;!i0f:::::,:;:, ,::,,,i#!:LLCt,,!LG!:::i;, ,Ci:,!!,:Ctf;,:tfLt!Gf!!!;ti!;!!it!:!it::fi;!!!;!f8ftftti!;t;:;ii!!tf0 +0#L;:;;;;!i!::::, ,:!!Lf, ,:;:!G!,:i#C;;!if!:;!!;:;;,:i: :i@C:,,.,,::ii:;!t;;!!;;;!ft:,:;!;:::!!:;;;:;!;!L@0G080i0L!0Ctf!:;;:LG +t@#8fi;::,,,,,::,,.,Ltti@i,:C0Gt;;;!##!!ti;ii;,,..::::!G:.:0@t:!!. ,;::!:;;:;t!!f;!t;,.,tf;:,,!!:,,,:,:,,!i!!!iitfii!iti!;!::!f +,!ii!::,,,,,,:tf;,!:if:;00,:!i!!;i;f#i,,,,::;:::,,,;tfG;;:;!i;:;!,,!;;:;;!tf!;L!;;:;!;::;iii;::;i!:,,,,,,,,,:!;..i!t!::iit0CfttG +;!it;;;;::;;:,:!!;:!;G;;Ct;:.,;ti:i#L:,::::!titii!:;if:;,,,;fL:..!L!;,.:f!!;:!::,,:!tf:!fL0Cfii!:!!;;!;;!;:,,:;,:,!i::!:t@#@@@8# +,:;;:,,...,:::,tLt!;:!8!itG:,;,,:;##;;i!!!;;!;:;;:,,:::..,,,!G: ii:,,;!!!;:,;!;::!tti;!tLt!!Ci:!!;tL0fiLt;;;!fC!::,,:::!!iitftf + !t; ..:itt!;!!:,,;LCiiii:,.,,8#!::,:,,,,,......,,;!;,.,,:!, :i;,:fL;ii;;t8Gf;;iC:!ffCi;!i!!L!fGL!iGit::f;LGL!;!;::;!!;;!tL0 +,.,;;;;!!;,:;;,,!f;..,:iffiCL:.,t#i,....,:!;:,,,,:;!!;!!. .:. ,;;::;;;::,,G8L;:!i!:,:;;tiit::,::;::CL!i!tLffff!!L!:i;LLi!;!!i +:;;iCGf!:,.,:;:,:;:,,.,;:::LL!,!#i:,,,,,:G0G;;;!;!t:..:, .:,:,,;;i!,:!i!::;;,:::,,,:::;:::,,,!8i;:C@#####0CftitLiiiitti0 +ifG!;;:,...,,,:.::::if!!t!!ii;i#C;i!:::,i!;::,,..,,. .,,,,:;:, .,. .,:!!;!!!it!:!;if!;:,:ttifCi,;Cit;;tfftL8######0ft!fCtif8 +;;;i,. ,,:,,;..,,,;L0CC80GGfi##:,,,.. ,,,.....,,,,:,:!i!!fCG; :i: .....,,,,,:;;;,,:!!!;:ii::!;:,::!i:tff::,:!iitfCti!;;;!C0C + i,:L!....,..,,.,:;,:!;;it!;i#@;:,:::::;i!::;;:;!;:,::!;,::;;:. ,:,,,,;::,......... .::,..,. ., :;,,:::;:,. .....,,:tf;;itLi! + ,f::!!, .,..,.::,. . .,,!##!:!tffttiii;,,,,,,,,....... . ...,,;::,:,,,,:;;:,.. . ,;:,,;: ., .,;:!::::!;:;00!fL + .:! ,,, ...........,..!..;##!:;:;;:::::,. , . ..;;;:,.... ....,....... ...... , .. . .;;iiiii!::;t!!;;! + ,:,. ;: :: ;:.::::,0#!,,,,,,,,.... . ....,.. .,. .,,,.... .::::, . .. ..,,::;i:;it,,::;! + fLt;!;!i, ,,,:::!i:ti;:;ii!,,,,;!;;:,.:...,,:;:;;:,..,,.... .. ,::;,,, .:;:;;:,,.. ...,,,,,,,,!; .,:,. . ....,,,...,:: + ;!tGGGtCf;::;tt!itft!:::..tGt::::::::,,,:,,:,,:::::,,::!i. ;:,. ,,:,,,..,:::;ii!;ii!;:,,:,,::;:,,,,:i,,,;it!,,,, .  +!f,:;;;!f00ffft::::::,.. ,::::;::,,.....,,,,:,::;:::::;!i;, ;!:;!f#L;:!!:,;:,,::::;!!i!:,,,,,!,...,::!iit;::,,..,,::!!!;;;;:::, +!,,;: ,:!f;:..,,:;;:,,,,,,...,,:,:::::,,,,,:;!:;:;;:t8GCCi!!!L0@##8tt0#t;::;;,,:,,,::,,. . ,,,...;!!iii!;,:,..,;tfffLLLLLCCLLf +i;..., .i. .;;;;;:;:,;, ,::!!!itftt!i;i;i!!!!;;;:!G8@##@0LCLfftiitiG8f,,;;,,,::,..... :!!;:,:::::,,,::;::!ititi!!iiiiiiif +fii:::, .!.. .;t!,.,,, ,:,!;!iLiLLGLL;!tfLiiii;!ittttC0Cfi!;;!tfiti!;:,,;;:!i!:,,,,,:,,:!;:,,:::::::,,,,;!;;!!::::::;!!;!f +Lttttft, ,f, .,,. .. ,...,::;:::::,.:ttii!::LLtt!:;!tLLttttttiiifi;;;:;;;;;!;:;;;:;;::::,:::;!!!!::::;;::;;:;!!!!!!!;!t +fift!itf:. .,f, . ,... :, , .;;:,,,. :@#tGi,:!iii!::::!LG0CftttLLfi;!!i;!::::;:;:::::,,:::,,,:::::::::;::;!!!;;;;;:,:::! +f;;!!;iif!. .,i ,..,..,,,. .. ...,.!##t!ti!!88;.,;;:::!!!;;;;;!!!;f!!;::,,,,,,:,:..,,,,:::;,,..,,,:,,..,,,,,.... ., +t;:::,:;;!;. ...., ::,. . ..,;;;;;:i##:,8G,,t8; :tGCfi:..:!ittf@!,:::!;i!;!:!,:i:,,,,..,,:::,.,,;::;:,,,. ...... . +i!::,..,,;;;, .. ,. .,....,,, .,:,,f080LGft@L::::. ;!;::;tG0L:..:@####@: ,.;ftCt!i:!;:;:;:::,:,,:,,,.,,:::!;;:,.,,,:;;;;;:.. +:,,,,,,,,,:!!:,.. ,;. ,..:;:..,:;ff!tfLtif!;!;;::;. .!Lt!;,:;!;;t;:;tffi!!i;:::::::,,,,i:!!:i::;,:,,;.,,....,,,,,,,!;:,,,,:,,,, +:,..,,,::,:;:;!!:,,,. ,:::;tti:;LGG!;tt:..,.:G!...,::,:,,. :GL,,,L0!tfCCtCf;;:,,,,,:::!;:!::::;;::,,,.,.:,,,.,,:!,..,, .  +!:,.,:,:;:!;:,,,,!i;,,.,,,:iLt!:,. ,;;;iLG!::,,:!, .. ,t!t:.:t;,:::;tGtCGiCi!L;;!:;,:i;iittiitt!;;;!!i!:::,:;,,,,,.  +!;:;::::,::;:,:,.,,,:!!!itt::,. ..,,;ii!;;:,,::. ... ..:!:,::,,:,..,,;iCL!L!ii;!:...,;i!;;;iitftitii;:;::!:;!,.,!:. , +!,:fi;!!::!!;;::;,..,,,,,,. ..,,:!!,:itLiiL!!!G@Gttiii!;tLii!;i!0t!00tL8iit;;;;!;::!:ti;!:,,.,,,,,,::::tCi,.,,,,,,:,,. .,..,. +;,,:!iiiii!;:;!!!;!;.. ;!!tfi;;;iLifLfi!it########0tftC0fLLGftLftL8GLCGC0Gft,.,,,i:,!,,t,,;,,!,,,.:!:, .!:.::.,... .... +;:.,::::;;!;;!!;::::,..,,:!:..,:;;!!!;::GL::;::!;,;CL####@!:,:;;;:;!:,,,,::;!;i!!i!::. .....,;::!,,;::;,,:,,;,,::::,,,..: ...,,. +:..:;;...,:i!::::::;:,,:!itttitt!!i!;!tffi;;!!!!;:;;i!tit!;:::::::;;;:::;,,.,,;!!!i!!!:;!,,,:;;,::,;i:!!::!:,;,,!:;:..:... .,... +::..,,,. ,,,,,;!titi!itftiGGLLi:::,;####C:;LfGGLfGCGGfCiCGCGLGC!CGLGGLC0L:L::G0C0000LGtii;!!:!;::!::;:!L::!,:!:,;,,;,,: . .,,, +;,.,.,,,..,,...,;fCCCffCfti;;;::,,,;!8###t:;!i!!;:;;;:::::;;:;;:::;;!!i!ii;,:,:;;;!i;!;;:i:,:::!::!!,;;::;::i::;,:i:,::,,......, +;,..,;:,,,,::....,:;;;::::,,,,:;;;;:;;!i;:.,,.,,::;:. ,,,!;,::.::.... ...,..,:..;,,:,,;:,;;::;:::,,;;;;;,,,,,::,.,: +;;:,,,,::;!!;:.,,...;:..,;:;;!!;itti;:!i;...,,,:!itf;.,,,,:,.,:,::,,,.,,.,;:,;,:ii..;..:..;,.,:.,;,.,,,;;,,;,,:,,:,,,,.,:::::,,: +,:!;;::;;;;:::::::;!!;;!!ii!!tt!!!!;;;:,,,:;;;,..,::,,,,,.,,,,,::,,,..... ,,,::,,:,,::.::,,:,,;:,::,,:,,::,:;:;;::::::;;;;;:::::  . .,!fi;iCf;;!i!!iii!!!i!;!!!f!:!!iLi:,. .;.... :::;,. :;!!!;ffCCfffttffftLLti!ittftitfLGG88GGCLfCCLLi!tLG0C##000 + ;:::!i:;G@i::ifft!;;ffGGCf!::,...,,,,,,,,,,,:. .,,:!:..;;!,:;,,,,;:!;::tL;;;;:;::;!;fGi!!;;!!;;tCt!!ii!!!!;!if!iit;;tttttftf +!,. .!:,,:;:!80!;!LLti!!!;;;;:,,::,..,.;8i,,iL;:,,:;ffL0C.,tC;.,!i!fLitL0!,!!!!ti!!!!;:!Cfftittii;;;;:;;!ti;::;!L;:f0G!!::,:LGGL +@@i,..:,,,::;;iGt::::,,,:,, ..:;:,,L#;,!LLGt,,!fC!;!;:,Ci:..::iGt!iCL:,:tfLt!Cf!;!;ti!;;;!i!:;it::tt;!!!;!t0Ltttfti!!!:;!iit +!C##i::!!!!i!;:::,..,,::iG;:,,,:;:!L:,t#t;;;!if!:;!!;:;:,i!t@L. .;:,::;:;t;;!t;;!!;;;iLt:,,;;::::!!::;;:!!!;L@8C080iG0!GCttt:!t +t;L8@Gi:,,,,,,,:::,,.;0t!fC;i,:C0G!:!t#@!itt!;i!:,,..:::!L;8@!:;:. ,;::,::!:;;:;t!!f:!t;:.,tt;:,,;;:,,,:::,,;iii!iiiLii!!tt!!it +;;;!ii;,,.,.,.:!Ct::::fC!;G!:::!i!;!!##;,,::::;;:::,,:iLf;t!;:,i;,,,!ti:;:;;!ff;;f!;;:;!;::;ii!;::;i!:,,,,,,,,,:!;..tiii::ittGCf +:!iit!;;:::::,.:!!;:;;;CGi;!ti,,!!,,f#!,,,,:;!ttttii;:;!:i!,!!,.,it!;!::,,!f;!;:;:,,,:itL:!tL0Ltii!:!;:;;;:!;:,,::,::!i::i:t@#@@ +.,,;;;,....,::,,iCL!,:,i8L;Li;:,,.,i#i,:i!;!:::;;:;::,,,,,,,:!, .Lf!!;,,:;!!;;::!!;::iiti;!tfi!!C!;!;;tLGiift;;:!fL!:,,,:::!!iti +:. :Li. .,:!ti;:!!:..:;ftiiiif:.,!#0:,;:,:,...,....,,,;!;:.,i, .!t:;!:,;LL:t!;!C8Gi;!fL:tfLL!;!i;if!LGf!iCit:,f;C0L;;;;::;!!;if +!,,:!!!;!!;,:::,,;t!...,,:!LtfGf:!##;,,...,:;!::,,,,;!!;;i;... ,::;;;,:;;;::,:0Ct:;!i;:,;;!fii!::,::;:;Gt!iiffffLt;iGi!!;Lfi!t +ititfCGLi:,,,,,,,,::,::;:,;;,:Lii##!;:,,::,t00C!!;;:!i,.,,. .,,,,,:;!i:,;;!;:;;:,:::,,:::;::::,,,LG!:;0@#####CLffiifiiitC +,LfLf!;:,...,,,:.,::,:00f!tf!;!i##!:ft::,.,!;;:,,...,,. .,,,,. ,::,,. .,:!;;!!iti;;!;ft!;,,!tiifL;,tCii;!ffff0######80fiifLL + ,t:!;, ,,::.;:..,:,;LCGLG8GCi##!,.,,.. ,,,....,:,:::,!i!!t, .tLti!,. .....,,,,,;;;:,:;i!!,;t;:;!:,,::ii!tCf:,:!iitf08t!!;;!f + ,i,tf:...,,.,,..:!:::::;f!!;L#!,,,::::::ii;:;;;:;;;::::;:::, .,:::,,,,:;::,......... .::..,, :. .;:,:::;;:,. ....,::;ii;;if +...!!,:!;. ...,..,,......:,;0#;:!!fffttiii;,,,,,,,,.......... .,,:::,:,,,,::;;,.. :;,,:;, ,. .,::;::::i;,:8C + .; :,. .. .!.:..;##!::;;;;;::::,. . ,. ... .:!;:,.... ...,....... ... .. .... . ,;;ttit!;:;;;;! + .:;:..i. .; ;::i::,C#t:,,:,.,,,.... .. ....,,.. . ,: ..,,..... ,:::, . ,. .,,:::;ii:!t!.,! + .LGLi!!f:. .:;;::;fitf!::!ft,....:;::,.,,.,.,,:;:;!;:.,:.... ., .:;:.. .:;::;:,,.. .,,,,,.,,;!. .::,... ,,.,::,.., +:,:!;!LGGG0!::;fCfiii!:::,, :Cf;:,,,,,,,,,,,,,:,,::::::,;;. .;;,..,,,..,,,.,,::,;ii!;it!;:,,,,,,,::,,,::i,.,,!ft:,,,. ,, ., +iiC:.,:;;!t0Li!!;;:::,,. .:,,::;;,.....,,,,,,,:;;;::;;!;:, .!;:;!f#t::!;:,:;!:,:::::;;!i!:,,,:,i,,,.,::;iit!::,,..,:::!i;;;;::, +it:. :: .:i;, .;::;!;:,.,,,..,,;::,;:;::,:,::;:!:!:i88LLf!!!iL0@##Git8#t;::::;;,,:,,,,:,,. ..,,,..,;!!iiii;,....,iffLffLLCCCCf +t!;:..., !;. ,:!;;;;:.:; ,:!:t;iiLffiiiiii!;;;;;!C08@@80GCLLfttiiit#@f,,,,::,,::,,..... .:;;:,,::::::,,:,::;ifi!iiiitiiiif +fttii;::. .!;. ,ii,.... ;,,,::!i!ffGLt:itf!!ifLtittL0Cft!;;;tfitii!;:,,,,;::!!!:,,,,,:,,:!;:,:::::,,,,,,:!!;;;::::;::;:;t +t!!tftiti,. .f;. ,,. , .,,,,,;::,::tt!;:!Lif!:;!tCLttiitttiifi;i!::;;;;;;;;::;;;;;;::::,::;;!;!;:,::!;;;;;::;!!;!!!t +t;;!tt!iff, ,f; . . . ,, . ,;;;;!,.!#8CG:,;!!!;;:::!L00LttttLLLfti!i!i!;;:::;::::;::,,,::,,,,:::;;:;;;;;;!!!!!;;;;;:;! +i;;::;;;!ii, .,!. .... ..., .. .. ...;0#fiff;;L8; ,:;;;;!!!!;;;;iiitfiff;!::,,,,:,::::,,.,,,;,:,..,,:::,,,,,,,,,,,......, +i!;:,:,,,:;;: ,. . ,,. ... . ,;!;:!##;.00,.;0! ,iCGLi:..:!iitf#8:,::::;!!i;!::;:i;,,,:,.,,;::,.,,;;,,:,,,.. ..  +;:,:,,,...,;;!. ,. ......::, .:::,i080fiCt:;ii, :;;::;iC0L;,.,8#####t,. .,:ffCL;i:!!;!::::;,:,,;,,,,,,,;:!!;;:,,...:::::,, +:..,,,,,,,,,;;!,.,..:, ,,,;:..,,:ifLtLfLti;;:::!0C: :tf!;:,:;:;ii;!ttti::!i;::,:::::,,;:t;;!:i;:!,:,,!,::.,..,,,,,,,:;::,,,,::, +:,::.,,,,;,:;:::!!!,,, .:;::!ti!::tC0tt:,.,,:0G;. .,:,,.. ,LG:,;:0i;.,tCGtLt;:,,,,,,:::!!;!:::,::,,,,,.,..,,. .,,i;,.... .. +;;;:,::,:;;:;:,,:,,!i;:,,,:ifLi:,,. .:;;it:::,::, .. .!;;i.,!i. .,:;;fGiCGiL!!f:;!:!:,!;!;!t;;!!!i;;;!i;,,:::;:,::,... +;:::!!;;;:::;:,,:,..,,!!!i!;::, .,,:;;:;;:,,,. ... ::,,,:,:;;...,:!tGL!L!ii;!:...,!tti!iiitfiiiii!;;;:!;!i:,,:;.. +!;,,iftii!;ii;;::;,,,.,,,,. .,:,:!;,!Lf!if!!f@Cfttit!;!tL!!i;!iL!t0ttC0tiii;;;!;:,;;:t!;!,.,,:::::::::;tCt:,,,,,,,,,,, ,:,,, +;,:,,:::!i!!;;!ii;;!:,.,.... .;;!tt!;;tCttti!!!G#######8!fff0CtLCLfttffiC0CLCCC0Ct,.,,,:i::;,:t,,;,:;,:,,;t:, .;..:..,...... . +:,..,,,,,:;!;;;;;:::;:,.:!it:,:;;;;!!;::0G;:::,:,:ff#CCGt;:,,:;;::i:,,,,,,,;!;!i!it;:: ....:,,;;,:::;:,;,,::,:,,:,,;,.,,.,.,,, +,...,;!:...,!:,:;!;;!;:;!tifLftGLi!;:!tffi!;;!!!::;!!!;:;:::::::::;;:;::::,.,,;!!!i!;!::!,,,,::,,!,,ii:i;::!:::,:;:;,.,,.,. .... +;,:,.,,,, .,,.,;tffftifLLffGLt!;::,;####C:;ffG0LfGCGGfCtCGCGLGC!CGLGGCGGL;L;;G000000fGi!t!!t:;i::!::;::f!:!:,:;,!;,,:,., ., ,, +!:,.,,:,,...,,..,:iLfttii;!;::,,,,,:!8###t:;;!i!;;;;;:::::;;:;;:::;;;!ii!!;:::;;;;!i;;;::!;:;:::!:;!,,;::!::!;:;:,:;:::,,:. ..., +!;:,,,:,,,:,,:,...,,:;:,,,..,,:;!!!;!;!i;:.,,,,,,;::, .,.;!,,;,,:.... .,..,.,:..;..::,,;,:;,:!::::,:;;!!:,:,,,,...: +::t!,,,,:,:;:,,.,:,,!!,,,;:,:!t!ifLftiii:..,,;:,;itf!.....,, .,.,,,.,.,,.,;:,::,ii..!,.,,.::.,:..;,.,:,:!:::,,:,,,:,,;,,,:::::,: +,.,:;;;:,;i;:;;i:,:!!!;!!!ii!ii!;;;:::,..:,:::,..,,:,,.,,..,,,,:::,,..... .,,::,,;,:::.,:,,:,,;:,::,,:,,::,:;::;;:::,:::;;;:;::: ,G: .,;fff;:Cf:!!!!!iitiii!!iiti:!:;!:...... . .. . .. :,,,,. ,::!ttftii!iti;itttfCGCCCG0GGCCLffffffLLfffttittiLfttitffff + t@!,.. ,..,!t;;LGi::!;!!!;!tCGCi:,,,,,,... ...,,. .,,,,iL,;::;:,.,it!!tifL!i!!!i;;!;;;!!!!i!!;;;!!;:;;,,:tC0Cfftti!Ct0ti:;f +.Li#0;. .,:::;!88;;!tfftii!;;:,..,:;;::,.,,;!:..;i, .,L0:;f:..!f08i,:f;;!fi;::!ttLf;;!i!;it!;;;:,,;;;:::;,,:!it!!;i8i!!fti!;!f + ;Li@#i,. .;,.,:;!f0;:!;::,,. . ..,:;::;:;@@:,:;!:,.,LL;ii: .;Ctf;ii;!ff!:,:it;;!;tLi!!;;i;;!,::!G!!!ii;iGLGL;:;Cfi!!;!iiCL0 + 0;i!t##i,.,:::;;::::,.,......,,:;:,,;:tG;!;C#i;iiftt;,,,,:08i ,,,,;::;:!;:!;:;!;:;:;!;::::!i::,,,;!!;!!itf@00C!:;ii;;:;tCGt#@ + 0L,i!t##@!:ti!:,.. .:::;,,;i;iLGG!;!!;;:,i#i,::::;::;;. :Li,.., .,,!,,:!;!!::it;!:,,,,:;:!Gi!!!;;;::iLi!iiit!!!;!t!i!fi;i!ttL + ;0:,tfiG@G!,,,. ..,,,:,..f#C!!80;,,.. .!#G, ..,:f;:,,::ii,..,,.,:::,::;!tC0;,!!iii!!;!!;;CLLfffLft;;;;;!!!ii;:;iCi;;tC!i;:::L +!:tf::;;;i!;,,,,,,,,:i;.:..,!@@;;i:,,...,i##!:;:;;tfGi,:!LL;:i. ,t:..,;:,:iiCL::;fLLitGi!!!tti;;!!!!;;!t:iCt;!iiii00tttiif!!G!;t +,fC0!:;ttft!!;;;;;;::::,:!,;;if!G!,:;itii##i;;tf!:;!t;:ii!;iC,. ,::..,::,:;;;:!ti;!;;!ii!;!Lf!,,;i::;:!!;;;;:;!:;CGtif0ti0!LGLfC + ,i0t:.:;;;,,,.,,:::,:;;;i:.;GiG!;!ifGLi##!:;!!!!;,,:,,,,,,!;;, ;;;:,::it!::,:;;;;;:tLfLt;i;:,.,:,,,,!i!:,,;:,,,;;::;:;Liii!!ft + .;G: :t: ..:!!i;:::,,,,!!ft;t;!;!i##!...,,::::;;;::;:;,:L. .:;ifi;::;ii:,,!!tLi;i!;;;;!;:,:;!!!;;;!i;,:::,::,,;;. ,!fL!;;iL + ,!t:,;!!;;!::,,::,,;!,.:,,!G0;:f;,;##;, ,!!ititftiii;:!!:. .;:;tGt::;;::.,!!;;::,,,,:tiL:,!LGCLGt::::!it;;f!;;;!i;:::::,::L + :!GiLfLGGt;,...,,,.,,,,,::;L8t!Lii##i:,,,:;::::::::::::,:;, :,,.:!ti:!;,,:;;:;:;!tti;;iL!;iiCfttf!;i;;LLftLtt:,iiGG;;;;;:;it + ,!Lif!;::,,..,,,..:;,!GfL!!!L0tt##!,:;!i;,..,:::,.,,:::;i. .:,,.,,:::!!:,if!,;::f88Gi;iC:;tLCLitf;iitff!;tLit!ifti!t;L0i;;;f + .i:!i, ,:::,;, ,,,:L0GG0:,i!i##!,.,;;;:,,,:LGt,:;!;tf;.. ..,:i!!::;;;::,:!i;;!!::,,::;;;;!;;;;:,;8t;;C@##0LffLf!:;tC +:, . :i:tf,...,.,,,.,::,;!!!t::ii##f!:::tf!;;::fi;!;,..,,,,... .,,,......,.. .:if!,,,:::;::,::::,,:!iitt;::Cti!;tf8#######LtCCL +. .. ,t:,;!: .,..,.::,. ,..:.:f#0iLC:,,::,...::,,,,,.,,.,,;, .;!tt!ii::. .,,::;:,!i!;:,!tii!:ii;;tf:,;!!L;!t!;!titL@###CiL + ., :,, . . ...,..:.!. ,!#i,,,:,,,::::::!!::;;;!!i!;!:. .;;!!!!!i!:,.,:,,..,,,,.,,,,..,;;;,,;,.:;,.::,:;:::,,:...,;!i!!!f + ,:,..t: ,; ,!.:;::,i8!,:!,,;!tfffftit;::,,;:::::,. ,:,.....,:::::::::::::;;;... . :;.,.:, ...,::::,,:tL +;, tGf!!!L: ,:::::;t:ti;;!iiii!!;;:;;;;:::,. .. . ,.., .:!;;:,.......,::,::,. . .., .. ...,;!ifi!;;!; +tf!:::;!iCGGGG;:,!LL!itf!i::;.,CCi:,,::,,:,.... .. ,ii!!!;::,..,:!L;..:;:... . .. .,,,. ,.. ,::!;;!tf!i +ttfLfCi,,:;;!LGi!i!::::;:,. .:,:;:,,,,,,,:::,,,:,,..:8@@##80CLi!L8##@!;C@!,,:, .,:::,,,,. ,,..,...,,. ,,,. ...,::::! +;;;tL;,,;, ,;!,..:,,;;;:..,.:, ..!;,::,,,,,,,:,:::;tffL08LLLLCCCfftGif#C!,;,.,,:;;!ttiiti!:,,..,,,,,,,,,;;i; ...;t;. ,, +i,,::: .:. !; ;;;;;:;:.,:.,,,;;;::,,,....,,::itti;:!tCLffftiti!!!i!!,,::::;!:::;;;;!iiti;::::,!;::.,:;;!;!!;,,,. ,,:::;:, +i:::::;,... .i, .if;,::,:: .;!iti!!i!!::;!;;:,:tft::::;fG0Lfffiii!Lf,...,,:::;;:,::,,::::,... .,,...:i!!ttt!:,...,;tfLLfLGL +fi!!!!!;!!: :f, .::..... ;,::::;;!i;i#@tf;::!!;,,,,,:;iff!;;;;!L!:,,,,,,,,,::,,::,,..... ,:::,,,::::::,;::::iL0tittLLL +t;::;iii!!i;. .!t. . .:,,. ,. , ,,,,.;8#ti0f,,0@: .:;:,.,,,,:,,,::,,!;:,::,,,:::;i!;:,,,,,,,,;!;:,,:::,,,,,,,:!i!t!;:;;;;i +t:,,:;!ti;if!. ,t, :......,. ,;;,;##::0f .!G: ;f00Li:..,;iii!!!;;t::!!::;:;:;;;;;::;;;;;::::,,::;;;;;;:,,:;!;:;:::::;i +t;::;::;!;!it; ,..: ,:...,.,, ... ...tCi:,:, ,;;,,;f@@0i, .8#####@;Ltitt!ii!!;;::,:;:;:::::,,,:,,,,,::;!!::;;;;;;!!;!!!!i +!:;!;::::,,:;;, , , ... .,.. .. .;;::,::, ,Lf:,:!iti;;;:!ffft!,;fiLfLtff;!:::,,,,,:;::,.,,,,::,:,..,:::,,,,,,,,::::,,: +;:,,::::,...,:::. :: ....:;, ,;:,;,,,,,:f0!. ,::;!!ttti;if;..,:;,.,::,:,:::,:i!t;!;:!:;i,:,,,..,,:::,.,,::,,,,,,... . +;. ..,,,,,,..,:!;,,..:, ,,,;;..,,,;iL;!i;,...:0t, .,,,,,..iG;,::08i:,:,::,. .,ffCC;i;;i;;::;::,,:,,:,:,,,,,::!!;;:,,. .,, +;,,,:..,,,::,::,:!i!:,, .:;;:;ii!::tC0t!;;::,: ... .,,,,::;C,,;!;...!LGL;,..,,:::,,;:ti:i:;!:;:,:,,!,;:,,..,,::,,,,::,,,: +:,;!,,::::!;:!:,,,,:ii!,,.,;iLLt;,,. ,;iftttfit!!,;:::t:iifCii!;ftLt!!;i!i!!i!tt!Li;;:,,,,::::;i;!;,:,,::,,.,....,,....,:!i:,,, +!,:::!;::::::;:,::...,:!:!!i:::,. ,!i!;;if00LffttfiifLft!tLtGCffGGffG@CLi::!L88f0GtC!!L;:i:!!,;:;!;ii:;;:::::;!!;,.,,:::,,: +!:,,!ft!i!::i!;;::;,....,.,. ... .,00:,,,,;########t,:,;C;,;;;::;;::!0G!!:,,:;;!fCttL!t!;;:,..,;fLLttftift!!;!!!;,::;:,;;,: +;,,.,:;!!!!;:;;!!!;!;,.. ,;;!;!tffi;,:;;;C#####@t:::;;!!:::!::;::::;!!ii!!!;;:;;;:t;:t!;;,.,,:;;::::;:;!itf!::,,:,,;,,::. +!,..,,,,,;;;:;;;::::;,..,,,:, ,,:;!####C,,ifGL;:!;;:,:,CGLCtGC;LLfG0CC0C:i!L0CC000GiL, .,;!i:;;,:i:,;,,;,.:,,iC;,. ,,,:,,,.... +;,.,;!;...,ii:::::,:;,,,:!it!!!!;:;!!G@8@i::;!!:. .,;;:::::,::;;;;ii:,,:!!!iii!;:;. .,:,,:,,!;,,;,,:,:;,,:,.:..!,.;;.:,., +::,.,,,. .,,,,;!t!i!!iiitiLGLCCt;:,:::;:;!!:::. .:... .;,,:,.;:.::,.,,::,,!,,!!:;i,:;,,!,,:::::,,,..:. +;,,,,.,:.,;:,,.,iLCCCLLGCLf!!!!!;:::;;;;!!i!;;!; ,::,,:,. :;,:;,,!:;t!;!t;!!::!::i;;!!::t:,;:,i!:;,..:... +;::;;;;;:::;;::,,::;!!;::;:,:;!iiiiiititti!!!i!;,. ,:,;;:;!;,:. ..,;::;;;!i;;!;!!!;!!;;!;;t!:;;::!:,;:,,:.,,.  ...,.:, ,,;;it;. ,tG;;i!:..:;!i!!i!if:i!i!,. .,..,. .. .. , ..:;;!tti!:i!:;!!fLffffi;fLLCLCCfLt!iiiftiiiittii!!t!!LLLft +!,.!f: ... . ,C8Gi;t8i,,,,,:!;!itGGf:,........... . ..,.;::!LGCLGt,,..,.,:iLCiftt;;;!!t!tCftti!!t!;;;;::!i;;::;ttL!i!!ffL +i!:!8! :8;. .:!fLC;i0!;;::;!tfLGt;,..,,,,.,,.,:,....,,;it::t, .!L80!;;;:, ...::!Cf!iittiii;!!::;:;i;;;:;!it;::::::;;;!!;!L!;;;i +t;,!C: :C#;. .,;;!;L@!;!tiii;::, .. .,....,:;::,:fitLG00ff: ,ti!;,,,,:,,:,,!0f!::GC088GL!i:,:,;t;::;ii;;!!!;:!itfff!;LCit;if +ii,ti. ,Lf#L:. :;,:!it0!:,:,.. . ....,iLCLiftit;;!!i@0:..,. ,i::,,,,,,,:!i!:,:;!!!ii;;:;!!;ffi!!!;;;::!fi;!i!!!!;;Lii!;if +!.... .:;ii##!. ,::!fi;::. .,. .....,;::;fi;;t#i,::;!,;i;,:t: .;::;,.:,:!i!!!;;::;,,;,,,:i!;tLLfLfi;!!;:::::ift!;;;!i!i!ftf +. ..,G;:tt##t::t!:::,.........,,,,;;;!f:,:0!.,!#0;,,.,,,.....::,....,,,..:t!;!tfL!;ii!t!;;!;;!!!ti!!;;!;;::;,.,:;;;i!!0i!!Lttf + ,L0:!Lt##Gt:,..,,,,.,:,,:;:ii:..;@f:.!Li:!#0;:!:,,::..,. !t,,,,:,,,:ff;;LLi!:;ftfL!ifti!;tt;i!,::if;;;i!!tttt!;;fLt!t!itL + ;:i8;,i;;!!;,..,,,::::,,.!G:!0;. ;@C;,:,;!##;,,;iiii!;,,,. !!:;:,:;,;ti!!;t!!t!;!i!!;;t!;;;;!!;:,,:!i;;!!ti8@88t:;ti!!:;tCG + . ,Ct8!,;:,;!;!;;;;;!iff;,;::,;C!;:!GGi:;:i##!;,,,!!:::::;;. ,;,...,,:,,:,,:;;!;::ttti:::::;;!Gi;!;;!;;;tf!ttitti!;;tii!tf!if + .,G0f,.;,,,:::,,,,,:!;:,!:,,:!iL0itG;,:i##;,;t, .,,;!:::!. ,:,..,,:;:,,,,;ifCL:!iiiti!!;;;;LLfftfftt;;;;!!!!!;;;ifLi!iL!;!i + .. ,GG: ... .....,:!i,.::,.,:;f8ii;;:!#8!!;;i;:::!LGC;;i. ,,:,;!:,,,,!:,;ifGi::!tLfiGt!iitti!;!!!!;;!i:tC!;!!iiL@CfCLtif;C + , ;C;. ,:::,,:::..,:,, .;;:,:!LtL;,:!##i!GLi:!Lf;:!ti;i, !i,,:::;, ,::::;;;:ii;;i;!iti!!Lf!,.;i::;:ii;;;;:;!:;Cf!;fGiGt!L + . :Lt!;!fGt!,,,...,,,. .,:;.,GCi::;i#C!fi;;!!!!;:,,,,:,, .:!;;::L!:,,:;ii!:,,;i;;!:;CLCf;!;:,.,:,,,:;ti::,:,,,,::,,::!titi + ,tCff;;;:,.....,..,..;,;;,:t88;i8#!,,.. .,::::::;;;i: .iLCft;:;!tt;:;!t!,,:i!Lf;!t!;;;!;:,::;!!;;!iii::::::::,,,..,;ffi + .... :f!f;. ,,,,,;,.,.,!ii;:i!t@8t##i,..... .:i!!tiittif, .!;;!;,,;!t0i:;!:,,.,!;;:::,,,,tif;,;tLLfCf;:;:!tL!;fi;!:!ii;::;; + .;i;:. ,t;:C;.,,,,.,:,,:::LCLt;;;!tf##tii,.:,,::;::::::::::. .,,,;!,.,,;it;:!:,,:!;;::;iti!;!Li;i!Lfiiii:t::LCi!Lit;,t!CGi;:;i + .,,,,,,.;i,:t;...,....,;i::;;:t:f;!#L!;Lf,..,,:,,..,:;::,. .,:;:;!:....,,::;!;,,it::,,:G80f!!L!,!tfLtif;:,:!!;:iCii!iLLfft;;GC + .;.::, ,..,,. .,,,..,..;iL#t!,:fi:,,:;,,,, :CGL;: .tf,.,;. .,;!!;::::::,:;ii;!!;:::::::;;;;::::,:8f!;f8#####LLf! +G!,. .f,. . ;.,i,;,,!##ifG;!Lf;;!ff;,.,;ttfi;,. .,,. ....,,,,,.. .;ii:,,;!!!;;;;i;:,,,!ttfLf;:Lfii!ifLL0###### +##@i:. ,!;::;L, : .:,:i;;i:;!08;::;ti!!,.,::,. :8###0CLi!;;,.,:!;:!i;ifi!;. .,,,,.:,:!i;:,:ii!!:!t;;!i;,::;tt!fLt:;!itttG +CLG@0t, ,fGGLiC!:,:!i::i:fL!i!,:itt,.:;;:::,::::;,;GLG0#0CCG0Gfi;C@8;;iG!:!;,,,,:;:,,..,,,.... .,;;,.,, .;. .:,,:;;;;:.. ,..,: +f!!!tLf:,::;;!fG0itffii;,:::;,,:.;Gt!;iffiiiiti!!;,:tt;!iLCLLLffLCttit:C8:.:,,,;;;::,,::;;!:.. :;.,:;: . .,;::! +ft:;;!!Lf:;. ,:if:::;:,,.,,...:!::!;;;;;;;:::;::,,;Li:::;iG0Cffffii!!ti:, .:;,,.........,,..,,... .. .. ., .... .!;!ft +!:;!!!tL!,,;. .i, ;t::i;,:.,,,;,..,,,.,.:!i!i!:,!i:,,,,:;ifLi!;!tttLf, ....... .,,,,.. .,:,,, ,,. ,,,;:! +;;;;;:;ff. .; :!. .,;f;!;:;.:!..,::;::,:i#@!!tii!;: ....,,:::;!iitt!:;:. .,:,,,..:;ii!i!;:,,,......,,,,,,,,:;. ,,,. .: +!!Lf!::;i!.,,. ,t, :C,....,. .:!;;;;,!@#i!0t,:G8, ,:;:,....,!LLLiC:,:i;:,,,,,,,;;:,:;!!;itti!;:::::::::,,,,:!;...,!fi,. ., +!ii!;:::;;!i!. ;i. .,,.. :,:!tt:;#@:,f;.,;;..!C@@Li;,::;ifitii;;i!;:,.,,:;;!:,,,;;;;;;!!;,,,,.,!,...,::;iiii:,:,..,::! +ffi!!!;!;!;!i: ,f: ..,:,, : .,.,::.!i!:,,,::,,,,:!C##8C!.,0######8::::,,,,,,,,,:;,,,:,,,,,,,. .,,,..,;!iiitt!:...,;fLCL +i;;::::;iii;;i, .:! :......., .:;::::. .tt::;!tffi!,,!####0f;..:,,,;;::,,,,::,,;,,,,,......:!!!;:,::::::,,::,;!ittff +i;;:,,:;;it!!tt, , ., .:......, .;!;,..,,. ,!tiitffLLttf;:!it;: :t;:!!::!;::::,:;;;;::::,,::::;!;,,:::::::,,,::;i!;;!t +i;;;;::;::!;;!t; , . ,,. ... .,,,,,, .::...,,::::::,i0!::L!G: ::!Lttt!ii!;;;;::::::;;:::!;:;:,,::,,:::;!!;;::,:;!;::;i +!:::;i;:,:,,,,::. ..:, .. ..:. ,;;;;:,,;.......... .,,.:G!,;,!@t:,!;tCLtfffi!t!;;:;,,,,,,,:::,,,,,:::,,,,::::;:::;!::;!!! +:,,,,,,,:,....,,;,. :: .,. :;:,, .,:fi;fftii!;:;,!!!iL;ttfGii!!G!;;!Ci!;;:!;::::;;;;;!;;;::,,,,:,,,.,.,,,::,;:,,.,,,,,,,..,,,: +!!,.....,,,,,.,:,!!:,,.. .,,:,:!!ii;iLffifCfi;:,::ifffLCLtiftftft;;!tf!!tt;::,;!,;;fffCi!!;!::!,,,,:,.,,,::,,.,,,::,,,,,,... +:,,;;,,,,,,:,::,,,:it!:,,.,,,:;tii!::,.,00:,,:itfftttt!;::::,:,,!i:,:f:,,:;::;ifi;:,,.,,:;ii;t!;i:::,::::,,,.,:,:,,,,,,::!!;;:,, +:,:;:,:,,,;;,;:,,,.,:;it:!!ffit;:,. .:!tt!:.,,t########:::;;i;::;;;:!!!::,:,,,:;;it!!!;,..,.,,,,::,!;:!;:!,,,,,;,::,,,..,,,,,,,, +!,,:;!;:::::::,,.:: .,,,:,::,, ,####L,:Ct8#####0GiLiCG00LGGtGGLGGfCGt:CitCi;fL0888itf;;:,,:,,::i::;:::,,;:,,,,....,;,.. ,; +i:..!fi!i!;!i;:::::,,,, . ,f088t!;!f!;;;:,. .,::;;:;;::;;;;;::;;,:08fi;:;!!iLfL0tif;tC!!t:,;,;t;ii!t!:;!;:::::;;!;..,: +;:..,::;;;;::;;ii;;;:,,. ,::;::;;;;;::;, ;8C!t!!i,..,;tf;ft!i!;;:...,,!tti!!iiitt;;;;;!;:,:;; +:,,,,..,;:;:;;;;;;:::,,,,,,:,,..:::;iiiift!:::. ::,,:iLLGft!,,..,,,:i:!i;;!,,:..,::,,,:::;!!!ii;::,:;,: +;:;;!;::,;ii!itttiitii!!titt!!;;:;!iiitti!!;:: ,!ii!. ;!!!ti!!!:., ,:;!!:;!::;;,;::;;::;:,;ft;, .,,.:: @######8GCfifCL,!,,!f,CCit: . .ititfft:;tCii: ,:.,,.,. ,.:::,,!;;!Lf!!!;:!;, ;t,::::;;;;;;,,;itti!i!tfGGi!L000GCLLLLGCCLttt +GfL8#8GiL!if#0f!C!i;:;L#8;..:;;:,,::;iLi:t:,. ,,,, , .!.,,,.. ,:LiL;,,::,;t:;C:.,:,...,;,,:;i!::;i!!t8L;tL0@CffCi!;;!!!fLt +ti!ii;;:::.,;;,;;CLC;::;#G;:;t:..:;!i0C:,.. ,,: :!tt::f:;G;:iti,.;f;!!,.:,...,,:,::;;;!i;:!t8!:!!Li!!iC;:;!ii!;;i +GLf:;!ti;,,;:, ,:!:if!!i#C;:,::!fC0G!:..,,. ... .... .:C: ;GCGt,.it::;::,.::!fL:,:, .,:t!i::iitC0t::!;:,:;;;:;itt!iLii!;;t +G0Gt!0tfLt:CC,,f:. .;LGti@f;!iifCt;:. .... .,..,,,:::,. ,08: ,:;i;..!!;::;;:ii;:Cf::;,..;ti;!;:;;;!!!i!!;::!!itftCG0Gfifff;fG +fii!t!it!;:if.,@8:.,.,::;!f8fii!:,. ... .....,C!. ,G!, , ,,;,,:CLfCL!!;:,:::,,,..:;;;;;::;::::;fLi;;!iiftLL!iii!;;!;:!L +t;;!:t::L:.i. :f#8;,. ;;;iff:,,..,..... .... ,.. , .,fi;;;!. :.,;i;!:,:;;;:,...::,:,,:;;;!i!!i!,:iititf!;:::::;:;;:,,,,,,;::fL +fC!,:t;:,. .:0t##!..,!ff;,..,:,,,,,....,. .:,,,:::;i80ff;,.:i:,.;G!:, .:,. .,,..,!CGtLtt;;;;!!!ffit!:::::;;:,:!:,,,,,:;;iit +:!:.;iL, ,0!tt##i:ii;::,..,,,,,.....,:::::,!GiCf!:C#!;:,,,:,f: :C!C; ...,..,..,!CLiiitii!!;;:::::t!::,:!!ti;;;::;!;;!;!LtL +;!,,,,. !8;:Cf#@f;,,:;;:;:;:::. ,;:!f000i!!i8!;;t#i, . .:,,,, ,,:i,,..,,..:,,;.:CCi:,fLCL0Li;;;;:!fi;;;;;!;;!t!!;;;!tf!tLiC +;,;!. ,!i0;,t;:;:. .....,,,,...;0;:Lf#@;!Li!::C#!, .,:::. .:,,,:,..:;;:..,,,::;!i!;;;!;;!!::!ftifGffft;:!!;;!!!ii!!iii!i!C + .,..,, . ,Gf8i,::,:,,:,.,,..,:...,;!0;:!i!;:C#L:;G#!:...,;i; :!;!;!,:,,::.,,,.,it;i!ff;!i!i!::;;!!!ifi!!;;;;::::,,:;:;tfiGiiL +t!. .:@8!.:i,,:;;;::,,,,,.,;:!!ii;00, :8@ii##!:;;,,;!:. .;,,,:;;,,.,,,,,,,!f!iLt!:;fLLGi;!t!;!fi;i:,:;i;::!!;;itti!;iCt!L +i!,:. ..,. .;8; .....,,,,,,.... ,;:!!00!ii; ,0ft##i;:;:::!i!, ,!:..:f:!:,:;i!;:ifi!tCi;,:iii!!;ft;;;;!!;,.,:fi:;!iit88@0!:!ii!! +::;i:. , ,ii,.:::,,,:::.,... .,:!!i!;L8!:!if#C!!!!!i:::!t:.,t!,:i,,.,..,,::,::::;;;:,:;f!i;:;::!;!Cf!;;;!!;;tftfiittii;!t;fL +,!t:. :Lfi!iLLi:,......., ..,;!::!;L8LiG#i:,,,,,:i:.,,, :;;,::::,..,::,!..,,,;!if;:t!!ii!!;;;;fGfftfftt;;;;!!!;!;;;iCLttt +.,,,. ,fif!;:::,,...,,.,.,:,,,,,,..!8C0#!;!,..:!!ti;;i..;G;:,:LL!:,tGi,,::;::itC0;,:!iLtLCiitift!;!!!!;:;t:!Li;;!!iC@GCGC + ,;: ..,. .;:!C: ,:::,;:,,,::ii;:;!,.:i@#f;:,,!;:;GL!!GG;..fL;!t::;:.,!;,,,.,;,,!!!!:;i;ii!itii!iLt:,,i!:!:!t!;;;::;::ft!!!t + . !t!,...;!;Gf,,,,:,,:,,:::;tLttti!,;##i:;;,:;i!!i!;;;:. ;i;,,,,.,:::::,::,,,:;i!:,:ii;!!:!LLCi;!:,,,:::,,:if;:,,,,,,,,,::, +.,.. .,,.,,.;i::t;..,,....:!i:;;:;i:;;i#8f;;Ct,.;0GGGLtt!;;;;;:,.,::!LGtti::ii;:,:it!,,;!!Lt;!i!;;;!;:,::!;;;!iiti:;:::!;:,,,: +;ii. . .,.!,,.,.,,....,::,. .,:!08it0!;Gi:.i@GL08CfCGGCfft;,,,,:;!!;:,:;t0!,:!;:,.,!;;:::,,,:fif:,;tLftCt;;;:ifL!!fi;!:;f +;::, !f, ...., :,,t,:,.:L#fi!iLffLCL,!Gt!iiLCLLLffLCt!::,,:;;t,.,,;tt::!:,,:;;!::;iti!;!Li:i!Ltiii!;f::LCt!Cit;,:it +tffffff!, ,::,;C: :..;.:i;;i,,,f#LtGt:;Lf!CL::f!;;;!f08CtfffLf!iL;iGi;:...,:::;!!:,tf;!:,:G80f;!L!,;ttft!f;:,,::::iCi;i!tft +#########i, iCCLiL!,,:ii:;!:Lf;f;,;itG@C!:;!::f;.,;,,:,::!!i!;;!itifGC,:@G. ...,;!!!:;;;;:,,;ii;!!;:::::::::;::::,,,LG!;;0@## +##########@;::;;ifGGitftif,,!::;,!,,Cf!C8f!80!tt;:,...:,.,,,,,:;;!i!ii;.,!!:,:,,,,.,,,. .;tt,,,:!!!;:;:i!:,,,;ittLCi,!Li!!!tLLL +#0GCCLGGG8#8i;. .,;L;,:;::;,,:.,.,i:;i;:;;t##t!tftii, .,;;,.:fCCtif;,:;!iLCLtfi;,. .,,,:,:,,!i;:,,!i!i::ii:;ii:,:::tiifCL! +8Ctt!:;;;!i;:;:. .;: ,L::L!:!,:,,t,.:;:!##!iG;,:08, ,;!!;:,..,:::,:00,,:;;!!!i!!!::,,:::,..,,,,..... ,:::..,. .;. .:,,:;;;;:, +Gti!!;;;;;;, .;. ,!. .,it!t;:!.,;,:,,,;G#8,.,. :;:..!C###8t:;;,,!!!tf!:,,... ..,:,:;;;;;,:::;;;:. :;,,,;: : +tt!ff;itiiti::,, ,i, .fG::;:,,!. ,i::!i!:,..,it,..:!C###0t:.!######@!.,:. :;:,,.........,,,.,,... . .,.... . +:!!;;;;;;;;LGt; ,f: .:;, ..., ,it;::;;:::!!!i;:,,;itti!:.;#######i,::... ...... ,,,,,,.. .. ... .,,,,. ,, +LLft:;ft:;:;!;:. .!i. ., .,., ,i!;:,,:tf!;:!fiiittfLftf::!tti;!:,..,:,,,....,,,,...,:;iiiii!::,,,......,,,,,,...:,  +i!i!!!!!;:::,,;,. :i, ...:,,, : ,,,,,,,!!;!!,,:;;iiiit;!i;:itt:,,,. .!;;::::,,,,,,:!;:::;i!!itfti!::::,:,,:,,,,,::i, .., +i;;tft!;;;;;;:;!. .;. .,,....... ;;,:::!;;,:,,...,,:,,,,;0!,,!tt8;,,,,:;;!;:::,...,:;!;::::!!!:;!!!!;:,,,.,!,.,.,::;;!;!!;: +i::;;;::::!iit!i,.: . .:,,....,. :;;tfiC0t!;iiftiiL;tifLi0f!i!tG#0CfLG!;;;!!!!;:,,,,,,,:;,,:::,,,,,,,. ,,,...:!iiittti;: +i:,:;:,,,:;ifi!ti. : . .,,,. ., ,!tCtiii!::ittLffLfLLCLi;t00ii!t0GLG0ftiitffff!;;;:,,,,::,::,,,....... .:!i!;::::::::::,;! +i:::!!;::;::!;;!i. .., .. .,. :00:,L!;,,,,,,:::::::,,.:!!:..,,:::!f!!!;;!!;;::!!:::::::;;;;::,:,,,::::!i!:,::::,,,,,,,; +;,,,,:!!;:::,,,::, .:. .. .,,,:: .:itf!:,ititLfff!::,:::::::;C;:::;;;:,:!iftitttiiii!;;;!;;:::::;;:::;!:;::,,::,,,::;;!;;;;:; +;,,..,,::;:.....,!,.. , ...,:,....:####8.,@#8######GiCiG0GGfGC!GCLG0CGGf:f;!00G8808C0f!ii;;:::,,,.,,,::,,,,,.,::,.,,,,,::;;;:; +!;,......,,,,...,,;i!,. ,::,,:;;G@@#t,:0####Lft!::,:;G@!;;;!!!;;;;;;,:;,.:;:;;;;;;::::,;;;;:::,,,.,:,,..,.,,,,;,,:,...,,,,: +,,,:;,..,,,::,:,,.,,;ti,,,,,::itt!:,,,,,,;iti!;!:. ,,. ,Ct .,,, .,. .;ffLt!;::;,,!:,.,,:,..,,,,,,,.,,,::: +::;;::;::;!;:!!:,, .,!i:!;i!:;:,.. , :tGG, .,, ;Lt, .!fi:. ,::;i;;i;,;:,:,,::,:,.:,,:,,,,.,,,:: +:;;!i!!iii;;!!!;;;, ... .,: ,: .::::. ,!ti;;;::, .,,;!;!!!!!;;;::;:::;:;:::,,, 8########@80titfftt!;!iGt;ti, .;f!tf!:iCiii,. .:... ,, .. .:,,!:. ..,:;!!;;;!t;,,,,,::;::::;;;!iiiiftiiii;!i!!!!;G8GCCCLfL +fLLCGGGGCLff8##C!;!;;;:!#L;. ,:,;Cf:;!if;LLi, .,,,, :, !:.:. .!fif@8tt;,,ii:,;L:.:::;!!;:;,.,;i!;:;;;!fG!:iGCCCLit!iLi!!!t +Li!!iLi!;;L;:ii!:;CCC;:t!@;,::ti::;;!i0C:,,. .,,.;:!;,::iGf0i:;;:,:f,;G;,,:,,,,,;:,,:!i;,:!;!i80;!C8#8LfC!:;;;;;iL +Gttf!;;;!;:,.,. ,!LGCt;;!8!:;:,:;!f0G!:, ...... ... ,t: .!GGf;tL:!G;ifft,.,i;t!,,::....,,:::;;;!i!;!i8t:iiLtii!C;,;!ii!;i +0CCCt!L0tC!.:t:.,,,,::iGG;i@i::!ifGC!:, .,,. ,,..:,,,,,. .f8: ,;;L0i:,Ci:,:;;:,::!Cf,:,,. .,!!!;:!iiC8C;:!;;,:;;;:;iitiiLii!!t +Lttff!Lii!;,:G; t0, ,;;:!0@!ift!:,. .,,..iG:.,0L: .:;!,,!!;::!!!ft!:f!,.:,..,ti;;!::;;!i!iii;:,!iitffLG00LifLL;f +fi;;i;!;;!; ,:..!#t,., .:!tGL::,... ... ... .:: :tL,::;:.,,,;,,:,:iCfii;,:::,:::,,,..,;;;;;;:,:::::iCi;,;!;titLi!ii!:;!;:t +tiLt;,;;,!. Lt#0;, :ift:,. ,.,..... .,.::,,:.. ...,!G!;fi,:if!!!:;!;!;::,. ,;:::,:;;;;!!!tt:,itttiL!;;,,,::::::::,,,,!::L +0i!;,.!Lt, .;;!t##!::i!:,. .,,,.. ...;!:,,;:i0LGfi!;:C;,,.:G!Gt.,::. ,,,,,;LGLfft;;;;;t!tf!i!;::::;;::,;:,:::::;:;C +t;::.::,, ..,G;:ff#@ti,,.,,,.,.,.,,,:,,,:;:;!:;GCt;:!##;::,::,:, ,iiC;.....,,.....:fCt!!ii!!!;;!:,:,;t;;,:!!ii!!;;:;i!;i;;LG +iii,:. .,;Li,Ci;;:,..,,,,;,;:;,:;;G;!f80f@!!L0;,!##!,...,,.... ..,!,,...,,.,:,:,,iGt;,:fftfCi:;;;:;it!!;;;;!;!tt!!!!;;i!;Cf + ,.,;., .C!ff;;;:,,,,,,,,::;::,,::i0!,;Lf#8;fG!:;##!,,,,:: .:,,,,,:,..,;;;,.,,,,:!!ii;;;;;:;!;::ititCLfLf!:!i!:;;:!ft!;!!!tf +ff;, . .:80L:;Ltii!!!!iii!it;,;:f!;!::!!!:!@#!!#G!:,,,,,, .;:::;:;,:,.,,,.,.,,:t;;itLi!ii!i;:;;;!iiti!!;;;;;:::,,:;;;;t!LCL +!00!. ... .!@i,,:::,,::::;::::,,;;!;fC!!0t. :#CC#f:;i!;,:i,.,,:,,,:!!,:..,,,,,,;L!!iLi;:!LfCC;;ti;;!L!;i,,,;t;::i!iiitLi;!LfG +:!!;!;. :. ,tt, .,,...,:;:;::, .,:i!!@0!ii: ;f##i;:;;;::;i:.,i;,,.:L:i;,.:!i;:;ffi!ff!;,;iii!;iL;;:;!i;:,.,;f;:;!tiC808t:;iiL +,,;ti: . ,if;:;ii;:,,.,,,,.,..,,!!!i!;08i!t##i;!i!!!!:::,..;:;,;i,,,,...,:::,:;::!;;;::ffii:::::!;fCi!!!!!;;!t!ititti!!!tiL +::,:,, . ,Cff!it!:.... .,.,,,,,,,,,,.:;88##Gi:,,,,,,;L;...:;!:,,,::!,,::;,;:.,:,:!iLf;!t!ii!!!;;;!CLffLCLfi;;:;!!;!!;;!f8ft +, ,::.... ,;;!t:.,,,.,,,:,,;;;!::,,,,..:t##f:,!. ,:;Li .tGGt:,:!i!;!LL!:,,::;,:itGC:,;iffiGt!iifti;;iit!;;ii;tf;:!!!t8@CC +. ,. .!!;, .!;:G;.,;:;::!,.,,:;;ii;i!!::t#t!!,:;!ii!!ii!, ;iffi;tf;:::,;;,.,,,,:::;;!;;i!;i;!itii!ff;:,;Li!;:ii!;::::;,;ii!! +:,. ,;:,,:,i!:!L,.,,:,,,,,;;:!!iit!i;;8#t!::i;t@@@@LfGt;;;;:::,,:::,::::,,,;:,,:;i!;,,!i;;!;:LCGC;;!::,:;;:,,;tt;:,,,,,,,,,! +fi;:.. .::,;,..,.:,,..:::,::,,::;t@t!L@!ff!fCffCGftfLGLti;:,,,::;tCLti:,;ii!;:;ti:,,!;if!;i!!;;;!i::;if!;;;i!i!:;;;;!;::; +L;;f!. .i:. ......,.,:,! ,!88!:;##tiL!ii;;;!LCffLfLGCf!:;;;:;!t!:,:;!CG;:;;::,,:;;;:::,,,!tit::!ftitC;:!;;tfC!ffi!!! +t,,::. ,,. :C, .. ::.!:,f:,,,i@Gi!!iLCLLfL!:::;;;t00ftffLCt!tL;!;;!;;.,,,!t!,;!:,,!!;i;:!iti;;iC;:!iCi!ii;!C:iLL!iLit;:t +fLfLLLLLGi,. tfi;iL;.,:i;:!:;L;!t,;i!tLCLG::!!:!ii,.,,,,:;!;;;;;;!ifGi :80!,.,..,:,:;!;,;ti::,,;G8G!;if:,;iitiiL::,,,:,:fCi;i!C +###########i,,,iLCG8t!itLCi!ft!i:;:,:f!L8Gft!f::;;:,.,,,:::,,,:!;!;;!;, ,;;: .,!!!;:;:::,,:!t!;;;::::::::::;::::,,:GL;:;08 +############C,.,,:;tL;,;;;!;::,,,.!,:t;:i8##@titfiLt, ...,::..;fLf;:i:,,.,,,::::::,,,,.. ,;i!,::;i!!:;;;t!;,.,!iitfL;,ifi!!;ii +@CLLLLffLLC0!,;. :i, i;,t!,!,.:,t;,!,:t@L;00:,:80,.:!!!;:,..,,:,.,0G,,;!tifCCLLLi!: ..,,,,.:,:!!;:,:!i;!,:i!:;i;,,,::t!itf +:tCi;;::::;:, :: .i: ,ti;ii:!,,:::;..:08!.::. ,::,:t0###8i:i:,;!;!tL!:,;;;;;;;;;;:,:::;::,...,,,.... .::,..,. ,:. .:,,:::;, +tGC;:::;;:;i:. ;. .;: .t0!;!:;.;!..::;!!;,:..,!:..,:iG###Ci,,8######8;,,:. .,,,;;;;;:,:::;!!:,. :;,:.;;, +,;;,,!::!!itL!;:. ;t. ,tC,.,.,,. .:L;:;;:,,:i!!f:,,:;itti!:,i#######;,:;. ,::,.,.........,,..,,,.. . . .,....  +;;;:,,::;;;;!GG! :f: ,,,. . ,i!::,:;ftiiitt!iitfLLfff::!ti!;!:,..,. , ... .. .,,,,,,.. .. . . .,:,:,  +CGfi!::ff!!::;!:. ,f: .:;,,. ,,,,,.:Cftfi:,:;!iiiti;!i;;it!...:. :,,,,.....,,,...,:;iftttt!;::,,......,,,,,,...:,  +i!!!;;!!!;:;:::;. .!, ,.... . .!:,:::!!!::,,.,,:,:,,,.!0;.:f!!L:,,,.,:;;!;:::,,,,,,,;!;::;!i!!ttftt!;;::,:,:::,,.,,:!,  +i;::if!;;;;!i!;;: , .. ,,. .. .i;;ffiLC;;;iiftiiL;iifti0t;i;t@#CfftL!!iii!;;;:,,,,,::;;;;:;!!;:!;;!!:,,....;,...,:::;i;!; +i:,:;;::::;ittt!i, : . .,,,,.. , .i!tCt;!;:,;tftLffLfLCCf!;f0G!itC8GfG8CLLLtttff::;:,,,,,,::,,::,,,.,,,. .,,,...:!iiittii +t;,:!!:,,;;:it!!f: ,., .. .:00:;i:,,,,,,,:::::::,..:!;:..,::::iii!;;;;;::::::::,,,,:,,;:,,,....... .;ii!;::::::::::; +!:,::;!!:::::::!!; .:, .,, .:itf!::iitLfffi:::,:,,:,::!C;:::::::,;Ct!iiiiii!i;;!!:::::,:;;;;::,::,,,:::;!i;:,::;:,,,,,: +;,,,,,,;!;,,..,,::, ,, ... ,:,:: :####8.:#G######8ffCiCGLGLG0f0GLG0LGGt;GtL8888888f8f!;;;!;:::::::;;:,:;;:::,,,::,,,::;;;;;;! +!,,. ..,,,:,....,;!;,. . .,,..,.;####i.:####Cfft;::::;80;;!!!!;;;;;;;,,,::;!!!iiifftiiii;;:::,,..,,,,,,,,,,,.,::,.,,,,,::;!! +!,,......,,,,,,,,,,:i!:.. .,::::;;::;::::!!!!;. .,,. ;L, : ..,,,::,:;;;:,,,,,,,::,,..,.,,,,:,,:,...,:: +,,,;!:,,,::;::;::,..,;ti,:,:!!tfi:,..::.,iC0f. ,,. .. ,, ,itft!;:::;,:!;,,,,:,..,,::::,.,::: +;;;!;!ii!!ii!ii!;;. .,:,,,,, ,i: ,;;, .:;;:,. .,:;;:;;:;;:;;:;;;;;::;::;:::,,,:, 8#######@80LitfLfi;,,ii0i!f! :if!ff;:tCit!.. .:... ,, .. .:,,!:,,.::!!i!ii!;:t; .,,::;!;:::;;;iii!itiitt!:;iitfff80GGGCCtf +LLLCC000LftL8#@f!G!;;;:C#i: .:::iL!:!!if;Ct;, .,,,. :, .;,,;. .!t!G@G;,,,,;!:,!C;;!::;;::;:,,:ii!::!;;iG8!;C##8Cfii!!i!!!!f +C!!!it!;:!i,:i!;;!0GL;i;!@;,:;f;,:;;!f0f:,,. .,,.;;!!,::titG;,:!:.,f;;G;.,:,....,.,!;;;:,,,:!t#L;ifG8LttG;:::;!iff +Ctff:;;!;::,,,. ,!fCCi;;i@!::,,:!iC0C;,....... ... :f: .iGCf!L!,;f;iLii,.,!!f!,,:,.. .,:;;;;;;!i;:!iGi:!;f!;;;!;:;ti!!!i +GLLLi!8CtL:.!t,.:,.,,:f0G;i@!:;iifGf;,. .,, ,, .:,,,,,. ,L8: :;!GG;,,C:,:;!!;::,;Gt,,:,..,:ttft;tt!C0t!!i!!;;!ii!!iiittLtiiif +fiii!it!i;:,!t..0C, .:;;:!88!tfi;:,. .,,..iG:.,0f, .:.,::!.:;!::ifitLt::!;,.;:..!t!;;;;;;;;!!tLffttLCLC88GGGCL!fLf;f +f!:;;:!:,i: .. :t#i. , ,;!t0t::,.., ... .... .::,.,!L::;;:.;:;!:,:,;iL!;::::::,,,...,..,;!!;i;,,;;!!!ftii;;;!t!itiii!;:!!;:f +tiC!.,i,,: . ,Gt#f:. .;ffi:,..,,,... .:.,,,,:..,,,,:i0i!Li,:tf;!::t!;;:.. ..;;,,.,;!;;iftitt::tLLfLf;!t!::::,,:;;,,,;!f:;L +G;i:.,i!: ,L!!i#8!:!t;:,. .....,. ,,:ii:;;!;C@if!:;!:C;,. :G!Gi.,.. ...,,,,,!GGft!iiii!!i;!i!i!;;:;:;;:::;:::;;!!;;!C +i::,,;.. :0;:!f#8f!,..:,...,,,,..,,,,;;!iGiiCC!,,i#C:...:;::,. ,!t!:.....,:....,!GLi;!!ifCft;!:,,,!i::,;t;;iii!;!itffL!;GC +;i!::. ..!0;.L;:;:. ...:.:,;.:.;G;;L0C#@!LLC:.;#C;...,::,.,....,:.,,:,:,.,:,:,:if!:,:!;;!t;::;;:;Lt!!;!!!;;!tf!iitii!!;ff + ,,,,., .Gt@!:;;,,,,,,,,,,,:,,,,,:iG!,!if@!!8G;:!#i:,,:,!!..:::::,;,:,:;;:,,,,,,;!!!!;::::,:::,:i!;tLffft!!ii;::::!Cftit!itf +ff;. .:#8t,!L!!!!!!!!!!!!!:,::t!!!:!0!,.!#8iL#!:,,,,::,..;:,,::;:,,.,,.....,ti;!tff;ititt;;!;;;;!i!!;;;!!;::;,:!tfii!iGLC +;0L,,. ... .i@!.,::,,,::::::::,,:;;!!G0;i0; ;@C##!:!i;;:!i,.,:;,..:t;::...,,,,,iL!!CLi;;tLift;iLi;:;i;;;,,,iL::;itiCG08i:!LtC +:!!;i; : :L!. :,,,..,:;::,:. .,:t!t@!;ti, ;t##i;;;;;::;!:.,t!;,,if:;:.,::!::tti!!t!!!;!ii!;;ii;;:;!t;:,,,;!;:!!ttCCLf!:;itL +,,!f!, ;Lt;;!ti;,...,,..., .,:;!i;;i8@t!t#f;;!!::,:::,,.,:;,,i!:;,,..,:,:,,::,:;!!;:!Ctt;::;:::;Gfi!!!!!;:!::;!i!!;;;iLiL +:,,:,. ;Gtf;;!:,.....,,.,..,.,,:,,,:i#8##!:,,..,,,;L:,..:fi,,,,ifi::;!!,::,,::;iLGL,;!iii!i!!!;tLftfLCfi!;;::!i;!!:;!G8tf +. ::, .... :f!!!, .,,.,,::,:;;:!;:,;:,.,!G#0i,,:. ,fi;tf:.,L0Gi,::;!;;iCC!,,::;;,;tfCi::itLi!L;:;ifi;;;iti!;;fi;i!;:!;:f@GfL +. .. ,ii;. :f:,G:.::::,;;.,:::;!tt!i!!,;@#i;:;;:!ttii!!;,..tLtt!;i!,.,,,;;:,,,,:::;!!;:tf;;!;!ii!!;f!:,,tCii;!ti;:::;:,,;!!;; +,.. .,,.,::f:,!L,.,,,,,,.,!;:!!;ii;;;i##Li:!t:t8880Lff!;;;;::,,::::,::::!!;!:::;itt!:;!i;!i::GLLi;!!:::!tt!;;;ti;::,,,:,,,:! +t!!;,. .:..;,.,,,:,,..,,,,:,,,,,;C8it@8!C!:tGftCGttfCGLt!;:::;!!!iLti;::;tLi;;!!;:.,i;i!;!;;;;;ift:itCGti!i::!!!!;;ti:::; +f;iCt. .f:. .......,.,:,i..:t8t;;L#0tLf;it;;!iLCfLLLLGLt;:;;;;!;!:,,;;iCL:!i:,,:;!!;;:;;;;:ttf!;;tft!iL;;i:!tCLtLti::i +;::;;:,:,. .,:..;C, ,. :,.!::f;:,:G#t!!i!tL0Lff;;:;;;!f80ftffLLi;tf;t!;!;:.,,:;;;,;;:,!Ltit;:!C0L;;tC:!ifCi:!t!fLiLft!ffit;:L +@GCGG0###f,. .fCt;iL;,,:i;:!:;L;it,;iifGCCt,:!;;t!;,.,,,,:!!!;;;;!iiLGi.:80;. ...,,,:;;;:!!;;::.t0C;:!!;:,:;;!;!!;;::::,;0Li!if8 +###########t,,:;tCC0titfLL!;ti:i,::.:C!L@Giifi,;;;:,.,:,,:,,,,:;;!!!!;, ,:;, .:::,,::!!,:;!!:;;;,,::::,,,:;;;:::,!Gt;;;CG +###@@@######C:,..,;if;:;;;;:::,,,.!,:!;:;tG#@titfiLt, ...,::.,!LCL;;i:,:,,:::;;;;;::,. .,;!;!!!it!:!:iLi!;,:ii;!ff,,i!;f;:!i +GLLLLfiittft;,!. ,i, t!:ti:!,.:,t;,;,,i8L;00:,:80,.:!!!;:,..,,:,.:0G,,;ifiCGGCGCLt;........,,,,,::::,,:;;!:,;!,,;;,,:,,:;::!i +;fLti!;;::::. :; ,t: ,it;!i:!:,:,,:,.:08i,::. ,:,,:t0###8i:i:,;!;!fL!::;:;;;;;;;;;:;:;!;;:,,..,,... .,,.... ,. ,;,.,,,,. +t0Ctti!i!:;i;,.; .;: .!G;:!:;,!;..;!;i!;::.,:!;,.,:!C###Li,,8#######!,,:. ,:;!;::;,,,,::!!::,. . .,:,,,;,. +.;!::::::,;tGt!, ;i. ,!t....,.. .:L!:;!:::;i!tf:,,:;itti!::i#######!::;. . .,,,,,.. ....,.. ,,,. ...... ,  +t;;;,.,::,::!LC; :f: .,,,... ,ii;:,:;Lftt!ttiiifLLLftf::iti!;!:, ....... .,, .,,::::,,.... ,::::,. ..  +Lf!::,:ii;;:,;;:.. ,f, .:;,,. . ,,,,,,;Ctit;,,:;;!!!i!;!i;;if!...:. ::::,,,,.,,,,.,,,;;ifffffti;::,,,...,,::,,,,::!;  +i;:;:;i;;::::::!, .;, :..... . .!;,::;!!!::,,...,,,.,,.!0;,:L!!L:,,,.,:;!i!;;;:,,::;:!i::;;!i!!itfffi!;;,:::;;;,.,,,:!,.., +i:,,!i:::::!ii;;:., .. .,,. .,. .i;;ttiCG!!;iiftiiL;iifti0t!i;i##GLftL!!ii!!!!;:,::,,,::;;;:;!!:::;;;:,,,....,....,;::!tii! +i:,:;;:,::;itti!t, , ,,,,, , .i!iLi!ii;::ittLffffLCCt!;L0G!iiC8CfG8Lfffittff:;!;,,,.,,::,:::,,..,... ,,,,,,,:;!iiiii! +i;:;!i;::!;:!t;!f: ,.,. . . .:00:!Gt;:,,::::::::::,..;!!:..,:::;iii!;;;;;::;::;;::,,::::!;::,.,,..,..:;ti!;:,,:::::,:: +!:,:::!i;::::,:;;; .:, ..,, .:itf!:;ttfLLLLL;::,,,:::::;C;:::::::,;Ctittiiiiii!!!;:::::::;:;;::::::,,::::;;:,,,::::,,,:; +;,,,,,,:;;:,....,;,. ., ....,:,,. :####8.:#@######8ffC!C8GGfGC;GGLG0CGGt;Gif8808888L8f;;;!;;;::,,,::::,:;:::,,.,,,,,,,,;;;;:;; +!,:. ...,,,,....,:!!:.. .,,,.;@#8#i.:####fii!:::::!@C;;!!;;;;;;;;:,,,:,:;;!!!!ittiiti:;,,,,,....,,,,,,,,..,:::..,,,,:,::; +;,...,,...,,:,,,,,,,it;,....,,,:!;;::::,,::i!!;:. .,, iC. : ..,,,,:;;;:::,,:,,;:,,..,..,,::,::,....,: +,,,:;::,,:;!;:!::, .,:it:;;!iiti;,,..:, ;C0f. ,,. .:. ,:... ,itff!:;::;:;;:,:,,:,.,,,:::,,.,,,: +;;!!!!!!ii!!;!!;;;, .:.,.,. .;, ,;!:. :!!!:,,. .:::;;:;;:;;;;!;;;:::::;:::,,:,, C8#########@G0Littff!iiit0t:ii: :t!i:!Ct!i:. .:... ,, ., :,,!: .. .,,.,,:;!!!!;!ii,,,...,:::;::::;;;iii!iftiiti:;!i!ittC@ +!iffCC0GG8GLftfC@#f!;i:::!#Li, .:,:LC!!L!;GL;. ,.:, ::. ,,!,. ..:,;tLfL@0ii;,,:i:,;G;,,,:;::;!!:;:,,:!i!::!;:!C0!:t8#8GLitL +f!;!iiif0ff;!f:;tfi:;Gti:iL#;,,:ii,:!it0f:,,. . .,,;:;!:,.,,;;iCf0!:;;;,:ti:tL:;:,,:,,,,,:,.;;!!:,:;;!t@0;!LG88ftCff +GLtfiii!;;;;::. ,. .,iGGL!!i@;:!:,:!tG0i,. ..... ... .:t. !GCf,:.,;tf:!G;ifft!.,!!!C!,,,,;,...,,:::;;!!!!;:ii8t:!!ft!;;iit +GtLLLLLi;tC!t:.,!, ..:::;G0!t@i::!LG0t:, .,,. ,,..,,,,..,:!0: :;;!:,:tGi:,Ci:,;;!;::::t0!::,,:,..,:t!t;;tttG0f;;i!;::!!!!!iitL +fftLtfLL!Lti!;,:L; ;G, .;ti!@8!iCf!:, .......iC8i, .,;i;:i,,;!;:,!!!tL!,;t:,,.,;,..!t!;;;:;;;!!!ttii;:tftLGGC000 +!0;ii;!!:;:,;;.... ;#t, ,..,!f8t::,.., ... .....,..,:..,;t;, ,,,:,,:::,,,,!Cfii;,,::,.,,,,..,,..::;;;;:,:::;;;fL!;:::;i!ifiitf +iitiiCt, ,: ,. ;G#L,. .:ff;, ,,,..,.. .,.:::,:i.. ....:Gi::iC;:!ii!;:;;;;!,,,.. ...;;,:,:;;;;;t!iti,:tfttff;;;,,,,,,,::;!i +fL0@!L;,.;:,, ,!tt#G;:!t;,. . .,,,... .....:t:,,,,:CLCt:Cfi;,,,,,,C;iG,. ,,:... ,,,,,:tGGffti;;;;i!;ti!i!;:,:::;::,;::;! +,:tf!;;,:,.. . !G!ff#8t!,,.,,..,.,.,,,::,.,,:;;;!C0t!,,i#!:i:::,. . ,;iLi, .....,.....,!Cfii!i!!!!;;:,,,:ii::,:i!ii!!;;;!f +;::iiL:,. ,.i0!fi;;:...,,,,;:!,!,;;iG;iiti;8@f##!::i#t,,;,.. .... ,f:,.,...,:..:,::.:CLi:,ttttCt!::;;:!ft!!;;;!!!!tt;!if +!t!:!:,, .. iLf8!:;:,,,,,,,:::;::,,,,!0;,iC!:fL#8!ttC#!:.,. ,.,:,,,,.,:!,:,.,::;:..,,,:;!!i!;;;;:;;;::!ftifGLLLf;:ii!::::!LC +G0;L0t:, .. :0#0!;ffii!!i!i!i!ii!,;,;ii!,!0;:!!;:;G##!,,,,..,,,;:::,::i,,::..,:,.,,,.,t!;iiLt!iiit!:;;;!!!ifi!!;;;;;:::,,:!f +fCiiCiC!, ....:#G;.:::,,::::;::::,,;:!fG!:!ti;0t,,i#G!:;,i;.,;;!:,,::,,:;,::,..,,:,,,:fi!iCt!;;fLLG!;it!;!t!;i:,::ii::;t!!itC +t!i!f;;;i: .: .!0; .,,,..,:;::,:, .,,:!!!;;80;;;!8#t!;::;!:.,!;!!;;!;,:t,:ii;,,:;i!:;ffi!fL!;,;!ii!!;fi;:;;!!::.,:it;;!itiG@8 +tt;:,:;f!. . .!G!::ii;:,,,,,.,.,..,,;::it!!!:iiG#ftf;iiii;.,;::;;:::!t:,.,,,..,,:::,:;::!;;:::if!t:::::i;!Gi!!!;!!;;tfifiifL +tt..!,,,,. . .fLfi!t!:......,.,,...,;;,:::,:;t#0!!0t::::,,.,t, .,,;;;,:,,,;:,:.,,;;..:,:!!tf;;t!iii!!;;;;LLfffLLtt;;;;!i!;iL +i, ,; ,:, ... :iiC;..,,,,,,:,,:;:!,,,,,,,:,!@#tt;;::!,.,:.,!f;:::;C0!,;;;i;it:,;;,,::;,:itGG:,;!tLiGL!ittfi!;!ii!;;;t;!Lf;;L +0f!:, .. :!!:. :i;G!.,::;,:!,.,::!;;!:;!;:;t#0ii!!;;!!!!, .if;iLt::iLtit;;,::,,:,,,,,,:,:!;!;;!i;i;!itii!tLi:,,ti:!:;t!;;;:;t +C##8;::. ,,.,: ;t:;L,.,,:,,,,,;!:!i!it!t;!8@i:!8LfLLGLGC!::::::;:,,::::::,,:;:::,,;:,,::!!;:,!t!;!;:tLCG;;;:,,,:::,,:!f!:,,:i +fit!!@#i:. ,:,;,, ,.:,,,.,::,::,,::;t8t;,:fLtfGCfftf0GL!;:,,:;;::::;!;!fGLti:,;t!;:::ti;::!;iLi;i!!;;;!;:,:;!!;;;iiii::;i +i!;;!f#@t; !!. . ....,.,:,!..,!0G;:,,;C!:;!fGLtffLG0GLt!t0Lii;ii!;;;!!!:,::!CG;:;;::..,::;::,,,,;fif:,;tLffCf;;!:;iLL +tCL:,:!!;,,. .,,,:C, .. :,.!::f::,,L@L!;!;;!!:::;;!G8LtfLLCCi!tLf;:;!i;,,,,,;;.,,:!fi:!!:,,;;;!;:!iti;;iL!:!!ftiiii;i!:tfLt +iiitLLLCCCC08f,. ,CCiiL!,,:i;:!:;L;!t,;iitfiiLL0i,..,,,:;!!;;;;;!!itft. :88i::;;;;,,,,,,:::!i;,;ff;!:,:G80i;!L;,!tfft;fi:;:!!;:: +##G############t,,:!fC0fitffLi:ti:i,;;.:f;iG#LGi;;:,.,,::,.,:;;;!;;;;, ,;!ii,.,!: ...,,!!i:;;;!;:.,;i!;;!;:,,::::::;;::::,,; +#G###@###@@@####C,..,:!L;,;!;;:::,,,.!,,:fC#Cfi!if0; ....,..:tfLi,,;i:,,,.,,,.,::,,:,,,,..,,.. .:if;,,,:;:;::::!::,,.:!ttfLi::t +#CC##LttLLCLttLt:,;. ,i, ti:fi:i,.:,t,,f#i:0L,.!0: ,!!!!;,.,:;,. .L8L,.:;:,:!iiiiLCLtft;:. .,,,::;,;i!::,:ii!!:,!!:;!t;,,! +#@ii@0!!Cfii!;;:. ;: ,i: ,if!ii:!,,:,,;08:,::,,:,,.!L@###C;;i,,;!!tLt:,::;::;;:;;!i!iiii;:,,::,,...,,,..,... .,:::.,;, .;, .:: +Li;;L8fC0ftt!!if:,,; .;: .tG;:!:;,i: :i!;;;..;t!..,;t0##Gi:,!#######f:,,::,.........,::::;;;;;:::::;;;,.. . :: +f;,!!!!ii;:::::;fff, ;i. ,i; ...,..,i;;;::::;!!t:,,;!tti!:,;#######@:,::;. ,;!;:,,.,,.....,::,,:,.. , . +t:;;!fGf!!:.::,::!L: :f, ..,,... it;:,:ifttffttiitLCCLtf!;!tti;;!;;,.,,,.. ., .,,.... ........ .,,..... .....  +::tfffft!;!;:!;,::;; ,f, .;;,, .:::,,,;tttti:,::;!!!!;!i!:itC: , :;.,,,,,,. ...,::,,...,;!;:;;::,,. .,,,,,,..  +;!!;;;::;!;!!::::;;:. .!. ,.... ,i;,::::;!::,,...,,,...:0f,,;0;!!,.,,,,.,,,::;;;:,,:,,,,,:::;:,,;ii!itffi;:,,,,,,,,,,,,,,:: +i:,,::,,,:!:::::!ift, .. .:.. . ,i;;tt!iGt!:iittiiL!itffGCi!i;t##Cfftf;;!!!!ii!!;:::,..,:;;!!:,:,:!;;;iiift!;::,:,;;:;,.,,, +i:,::::,,:::,::;itfL;., . .,,,,. .t!tCt!i!;::iitLffLfLCft;;00f;!iG8CLCCfCCLLLLCf;;;:,,,,,,,,,,:;,,,,,,,,,::::,... ..,....:!! +!:;;:;::;!i;::i::iitt. .., . ,:00;GLt;::;;:::::::::,.:;!:,..,::::;!!!!!!!!;:,,,,:;::::,,,,:,,,,,,,...... .,:,,,,,,:! +!:,,,,,,:::!i;::;::;i, ,:. . ....:!tf!!ifLCG8@#i:,:,,,::::;L!::;;::::,:;!;!tiiii!!!;!i::;!;:,::,::;;;::,,,,,.,,,,:!i!;::,,:: +i;;;::,...,,:;;:,..,:;...,. ....:; :####8;#########iCtCi8@LCf0C;CGC00CGGt:C::0888888C8L!!i!;;;:;:::::::;;:,,:;;,::::::::,,,::;; +tffff!:......,,,....,;!;,. .,.:0###i;8###f!!;::,:,;88!:;!!;;;;;;;;;,,...:;;!!!ifftitti!!!!;;:;:,,,,,,,:,:::,:,,..,,,,,,,:; +!;:::,,,:,,..,,,:,,:,,,!t;,...,,,:;!,:;;:,.:;;,. .,,. ,Ci ,,. ,, ...,,,:;;!;:::,,,,,..,,,:,,,,.,..,:::..,,,: +:....,:;::;::;!!:!!::. .:ti:;!it!t;:..,,; ., .,, !f, , ...:!;;::::,::,;!::,,,,.,,,::,;;:: +;;;;:;;!i!!!i!!;!!!:;: .,,,.. .;:, .:::,,. ..:;!ii!;!;;;;;;;:;;;;;::::;;;::: ,,,:;iG###########@0LL0@80LC8Gft::0;:!; ;;L;!, .:... .:. :, ,::;;. . . .,:,...,:!;iLt;;::,,;;. .,t,,,:;;:::,:;;;;::::: +;;it!!!tCCGG####80GCfittiif0fii!:;#8tG:.:,C!0f, ,,.:, .,;. :..... ,!;::,!ifi;iiiii,:;;,:f!!t,,:::;,:ff:;C;. .;:....,....,:,., +Cffi!;:,;G!!tCCLL008Ct;ffiiC!i!,;Ct#G:,;;;;L;,. .. .. ,,,iit;;;fGGii;:,,,,;;::,,:;;t:,i!:fitf!!,,;f!tL,.,,... ....,,,,.., +@#@#i;;:!!;tLi!titfi;;;;;,.,, . :0ti@;,;!;G!.,. . .. .,:f.:0LGtG;!C;::,...,;!!::;iGt:::C:,!;:::::,::!Cf:,,. . ...,,.,,,.., +GGLfCCLG#ftCGffifft;;if;;:.,;, .:;CiC@;::G;,....,.. ,,.., :GL,.,:;::;i;!f:ti;:;;,::;!tt:!t:t!;:::,,,:!fi;:Lt;::. ... .,..,;:..! +@GLfitG##@LtLftLifCC!Ctt!;,!f: iG;.;G#!,t,, . !0; .:,.:f0!:::.,,,:!;,,,.,!:,:Ltiii;,.,::.,,,.....,,..,,..,,..:! +####CL8Lt:i0:;GL!!!!;!;::!,.. !#i. :!f:,,...... . ...,::, .,..;i;,.,;L;::::!;:::,,,:,,,:,,:::::,. ., .... ..,:,,:,:;:;;i +;tLG#0tittti!titLi!. ,! . :##;,.;;,,:.,,,,,.. ...,.,,:!. .::i;,,,..,:f0ftLi,,;!!:,::::L!:;,.:,::,,,,, ..,:. .,,..,:LCLtCL +f;:iftiC0#@t!@C!C!,,.::. .;L##;i;,,,,.......,.... ..,,:t;80;:::,!@fiiit;.,:,,..:,.:CiCG,..,,,..... ......,..,;fLt!ii! +f!!fLf::!ff;:!!:,;:,,, . ,CiG#0:,:,::,.,...,,,.;:,.,,,:i!fi;f0f:::i#@i!0ff;... .,L;:,.,,,:,,,,,.....,.:,,::.:GCi:,:Cf +tiLf!;:,,,::::;:,: , .,;t;;!:. .....,.,.,.:.!G;iittti;ii,:!::;i#8i0@iiLt,,,.. ... .,;,.,,,::::::,,:::::..,,,,::;i!;,,:;! +f;;;::;;;:;fLff!!:,,.. . tLfi.,,,..,,,.,,,.,.,.,iC!i!;;;tii,.,,:;@@fiiiC;i#t,..,...,,.,i,:;,:!!!!!!!;,:;;:,:,,,,;i!!!!i;::;i +L;;;!!LGLtifLGCL80:;L: .,G@i,!i::;;!;;::::::,:,it!;::,:iCt,.t!i#0i!G0,.:8#!,,.,,,:,,,:;,.,:,,,::::;:,,,,,.,,.,:t;!itfi::!tf +G!:ittfCLCf!iLC!!!;;fi,. ,,:. ;8!.,,,,,,::,,,,,,.,:,!L::;;;;ii;,:iG#tL8!i!: ;#L;:,,;;!:::;it,,::,...,;!!::,.,::,,,;L!;!Gt!;:!t!L +L;:::::::;:::;:,::!t:;t;.,. :Li::!;:,,,,,... . ..,:;;::::!t;:.,8@!;Lf;iC;,t#C;!:;;;;;,:!t:,it!!:...,,:,...,,;:,if!;:!i;ii;;!ii +fi;;;;;;;;;!i!;;i0i,,::. ;GLftLCi:............,:;:!,;iii!!,,i;,,::!;08fC@t::,:,..:::;,..:;;::::..,,. .,,:,,::,:;;!!;:!GCL +GLf!!fCLLtt!itftLt,; ., :LfL!:::,,,,,,,.,,,;,,,::,,::;iCC,.:,.,,::,t#Ct!:!, ,,,:L: ...:ft:,:;;ift:.,,,;:,:,,;:;!tGG!;i!if +@Gft!ittiii!!!!;i;,, ,..:,, :fi0;. :;;;:!;,,,:,!!,,;:,,:;t##;,;::;::!;:t80t,,:;;;;CGi!!;:;!!;!!!;;tL!:,;!it:,,:!i;,!itCC;,:ttC +CtCftfttttffft!;;t0!, ,;:, :L!CL.,,::,,:,,,,:!!!!!;:::!G#G;,:Liit!;!;0Ci!!;!:t0GLLLfttLfi!:!!;:;;;:,...:;:,,::::::;;;;;;ti;if +fLCL!:;;:;;;;:!iti08!,:, ,!::i,.:,:....:,;0#0CCLit;;Gti; f!itt!:,:t8t;f;.::;;:::::;;;;:;;;::::,,:;;::;:;;:,,:;!i;:;,!!;;!i +G@#0;;;:,..:.,;!;;tL;;f!, ,,. .. ... .:8080ftiii!t!;;;:;!!;!;;;:;L@!!;:.. .,,,:;!!itiiiti!ifCLtt;,:!ii;::;ti;,,;;;fft +tCi!fGL;:: ..iL:,,,,,;i!:,,. ..:i. . ; .tCtiCGtiiiiiftiLGC0ffLGCC0!CLi!t;..:,,,,,;:,::::;!;:!;:::;;!!;,,;:i0t::;;:;..:!::;; +.:,,:;;:::,,::!!!;!!iif#@G@#i, ,Git:.,;:,:,.,!i!;!G8LtffffftttftttLfCG!!f##ti;,::;!i;:,,,,,..,,.....,,,,:!;..,,;tf:;!:,,:!i!;;:! +t!iii!tLCLLCGG00@######@#@####;:!80iitfCt:i!:;::,,:!!;;!;!ttittti;;:,,..8@L#8:.,:;;;:,,,:ii;,:,,,,::;;:;!;,,,,,,:,,;i;;,iGGtf!!; +0GCG008@88@##@######@0808#G8###;,;ti,:;;;!;i0ii!;::..,:;;!!i!;;;::;:. .::;Gf:,:tti:;;;;ffCC;!:!;!tt:.,:!, ,,..,!!!,,;!i!::,, +0ffCCCLLftttiiititiiLCG0@##f##i:;.,:. :;;8#f80;:G8: ...,tLCf!, .:;iC!. ,,:::..,::,,.,,,,:::,.,,,,::,.,,,,,,.. . ,,...,;!t!,,, +Gi;;;;;;:::::::::::;;!iitftiC@t.:.,i. .;f#@;i;..!C,.!tiii!;;:. :fG@@, ...,;:,,:::::;;,.::,,,;:::::!i!!!iftf!!!;:, .,:!;:: +0ti!;;;;;;;;;;!;!;::;!!!!:;i;:;,..,!, iC!:,,.....,f8##@C:;i,,;;!ttfft;,,,:::!tttttt!!;:,;;:;;!;:::i!:!;!fftfLLLt!,...... ... +Citft;it!!;;!!!;!;;;;ii;:;!!!;!i!.,t, .,!;!!;,. .:iLGGf!:,!######C##0!:,:,,;;;::::,,,...,,,......,,,..,,,,:;!!;;::;;;::,....  +L!;!!;ii!!!!!!;ii!!!i:,,:tiLGf!it,,i: .ti:,,, ,;;;!i!;;,!########L@8!;::,,;:,... ...,,,. . . .,;;;!;::,:,,,,,:;;, +fi::ifft!iLLt;;::;:;:,,:!;!!!!;!f;,;, ,:::,, .ittLCCCfff;!ttii!!::;!;i;,,,,,::...,:::;;;...., , .,,,,,. . ..,. +i;;;;;;;::;;::,,..,,;;;::;,:,!i!f!....!!,.,:. .,.,::;;;;:!f;!i!L: ,;. .:;;;:::;;:::,:;;;:,.. .,, ,,. ....  +;,,,,..,,:,,,,,....,:;::;;::;;:;;: .!!:,,. ...,........ .!8!:,!0;i!,...,,,. ,!titt!;!;::,:;::,,:;:::,,,,,..,.......,;:;!;:::, +;,.,,..,;;;,,.,,:::,,:;::::;ii:!Li, ..;;:ii;;i!!:!!ttitL!f!L8tftifi##tCitff:,,:;;!ii;;i:;;:::::,::::;!!!;::;::::,,,,;;:,,:;!!!ii +:,.,,,,,:,,:;;;iitt;::,,,,,::it;tf,.,.;;!tLGt;;::!ttffLCLLti;t8Gii!fG00fLCfittffftLf;!,,:;;;;!;:::;::;;:::,,,,,,;!;:;;:::,:;:::; +;:,:;;;,,..;Ltfittttf!:.....,:!!:;,.: .LLifLffti:,,::::::,.,;!;:,,,:::::::!it;::;::,..:;;;:::;;;;;:,,,,,,,,,,,,,,,,,::,,:;;;,,; +!;::;::,,,:!!!!;;!it!!:,,....,,,,.!,,;itii#######!,;:::::::::Lt:::;;;;;;:,,,;;;;;;;;!;::!tt!;;;;::::;,,,::,::::,,,,,::.,,::,,,,, +;:,,,.,::!fff;;i,,,,,,,,;:,,,,,,,,:i;####L####80f!CCGCf0LGGLCiGL!C00G0CGGf;L;!GGC0008GG,.,:;t0f!ffi!;;::i;::;;:,,::::,,:!;;:,,,, +;:,,,.,i;;;;::::,,:::,::,::,:::;;,,,!@###t:;!:,. .:;;:;t!;;!!!;:::;!;;;;;:,,,,:!!ii!;;:, .!fLLLffLftt!!!;:::::::::,::::;:,,,:; +:,.,, ,;:,,,.,:,,:!:,!!!;::,::::,,, ,:::,, . !L, .i;!;. :, .,:,::;!iittt!;;!;;;;;;,,,,,;::,,,; +,,.,...,,i!;;;;;,,::,!i!ii!;!i;,,:,. ,. . .,. .,,;!. ,. .,:::!!tt;:::::::,,,,,,:,,: +;;;;:,;;:!;!!;:::;:::;iiiittttt!!;::, ,:, .. ,:,. ..,:!!!!!;;!;;;::;;;: !!!!!!iitL8########@8##GCC88@#######@0t!;;:.!L:,; . ,, .;;;:;!:ii!, ,: .::!!;;;;;!t, .,:,.,,,,, +t;;;;;,::;iCC##8@###@#@CLftC###@0##Gfit@t!!::GG!.. .!: ,.!, .i;,:. ..:t;:;ii;: .,,::,.,,,::!CLfLfti:;;:,..f!,,....,,..., +fG!L@!,..,:;iLC0C@###800LfitCGLLCGCti:!#8!C:!it,.,,,.. .. ..,:;!:. ,f;:;,,:::::::;,,;iifL;;!t::CCCG;;;;::,,!i:,;G: . :;,: +!;;f##ft!!;;;:;!tLCffL0800Lf!tfCG8iff:;t#t!,;f:..... ..!G0C. ;;;;;;,;LLLffiii:,::;::,;;;i;;L;,ii;ii!,,;f!iG!.,::;,.:!,, +LL#Lf8#C#8L!;;;:;C!!i!ttft!;:;!::::.,.,Lf0,,fL,,,,..... .!t, ,;!;,,;!ttG0;;Gi;;;;:::,,,:::;!Ci,:;f:.!i;!::;,:::f0i,!;;i::,.., +ft8###GCLfG0f0@Ci!f0ft!ifi:;i!:, .:,..,;G@i:C:... .. .. ,GL. :.,t:::::!f;!C::fi;:;!,,::!t!:!i:Lt:,::::::,;!:.:C!,;,,,,. . +::!f8##0GCttG##Cf!tCftfifCt!0ti:.,Ci :C:!@Li,, . .,:, .:.;i:,:,,,,,!f0t::!:,::,:!;,,,.,!:,:!!;!iti:.,,. .,,.. . . +,,,,;f#####fGfi:!G::tGti!;!!i;::,... :@i,:i:.,....,.. . . ,!::;:ti:,,!ti:,:;C;,.,,;;:,::, ... ,.,,,,,::,...,. ..,, .,, +;!:!:;!!if08i!i!ii!tttCL;,..;, ,C#:.!.,:,..,,,,. .. . . :L;tC,,!Ci,:,,.:,:!0t:!!,,.,tL, ....:f;:;,.:,.,.,;:. .,,...... .. +!!tfLLLfffLCftfC8i!@0;f!:,.... .t#L:,,,,,,......,..,.. .,i;;:. ,:!L:,.,.:f@!!0t:.,,:ti:,,::,!G!0G;,.,.,,.,. .,.. .,,, , +i!t@#########@Liti:;!;,;;:,: . ,L0@:.;,;::,,.,.,.,,;C: ,;;,:,,,::tC;!;;L#t,,;@!:;;t;,,;:,,.,:f;:,............. . .,.. +i!iG#@##@##@0ff!!i!;::,: . .,;ti:. ....... . ..:;0; .:!,.t!::::tL;;i##t:..,t#t88L;,,,,.. .,:. ,,,.,,,:,,,,:,....,..:, +;:;tLLCLfti!;!!;iGCLi:,,:,. .. .CtG:,,,..,,..........;L!,;ii::i;::::;;;t#@i;;!:.i@#iiCf,::,....;,.,,:,,,,,::::,:,,,::::,..,, +f;!tLCCt!;:;!!t;:!!!!!iif0;::,. .;#L:;!:,;;;:::::,::,.!f!tfCt:ti:::,:;i8#ti;;00:;iii:i#f:,,,,..,:,.:t!::,:;!!!;;;!,,,::,,:,,: +LiittCLi!;:;;!f!;;i!L8GLtCGC@f. ,,: ,Ct,.,,.,,,,,,,,,....:Li;!t!,!t;,::;C#L!itffft!G0, :88!,:.,;:::!,;:,,,::.,,::::;:,..,,.,,.., +fi::!tti!!ii;:iG;tLfLGLLt;fCCL, . ,tt::!;,..,.,..... ..,tG!!t;.:i;;;i#@i::;!!;88!ii; ;#L;:::;;;;t::t!:,:::,. :;i!;:,.,:;:,,,! +8C;;!ffLf!tti:;i;:::::;!;;::;:. :GLftLL!,.........,..,tCifL: :t!!L@fi;,:::,:!t;f8!:t#C!i!!;:ii::;;!!iii!!,..,,,,,....,::,,ii +G#i:iitffLftiiii;,::;;!iL,. ,. :ftL!:::,. . ,::!,,;t!!t,.;iL8G;;i;!ii;:,,,:!L#CG@t;;:,,,,,i!,.,,:;!;,::,..,,,. ..,:,,, +0#f::;iC8##@0G@#t:!ffiitf;. ..,;: :iiG: ;:,;!!;!;;::;!,;f!i: ;0@G!;,:i:,:;:,,,,;.i#Gt!:t: .,:::!,,. ,tLi,,,:;tLf!,,,,,;:,:,: +0G8;:!!iLG###88@L;!ti!!iiLL!:,. ,,..!i;C! ,,:i##CCGGLf;;:,;tit, t8t;:,,:;;;;:,,;:,;;iCGt:;;;!;;t0t;;tt!:;tft::!!if!:::!!ii,,,:ii +0C#!:i::;!ttttiifittttitfLC0Gf;,. ,.,,, .,f@G8LftfffCL!:;Lit;,;;;!iiitiLCftiit!::0L!i!;!;t0GLtfLLfLLffi!t!:;!;:,,,..,::,,,:;;! +#G#t:!!ti!iitLff0!:;!;;;;:;!tLG0;. , ,0tiL8fttttfft!!;;fGf!;t!LCC8f!ti!ift!:;t8LtL:.,:;;:,,::;;;;;;;;;::::,,:;;::!;;;;:,,! +#C#8::ttt!fCC88GG!!t;;:.,..:::i0G: .::: .:!;;tLiitffCLt!:;ittiiii!!t0ti@@!::::,;0@ii!: .,:,:;!!itiiiit!;itCCtt!:,!!!;;! +@Cf@:.:::,::;!!;,;i:,,. .,;,.::;;;;,,08!. ,,;:::::;!!!!;;!!ifi!;:,,Lt,t@08#f!!tfi0CifC:..:,,,:,;:,,:,,:!!:;;;:::;;;;;:,:::!0t! +Li;!:.::;;;;;:;;;!!!!!!!!iiittffCG###!!8Lii!t0ft;;:,;t!::;;::::,,!!!:,,..,:!##ff8!;iLtfC;.::;!i;:..,................,,;,.,,,;tt! +i!:;!tLGC00GGCG000@@@@@@@############L,:!f#0@0!:0G,.,::;;:. ,:!itt:, .:!f0Gf!;t;,tt:,,;;;;:,,,,;!;,,,,,,,:::::::;:,,:,.,,:; +i;tffLLfLffLfCCGGC8@880GCCG000GGG08#G!. t8@!!:..;:.:tii!;:,..,,.,:tG@#G;,,,..;f8LCGC;;fi::;tfi;!;;:ffGG;:;;i!!tf!,,:i:: ,,.,; +Liitti!iiii!!!!!!!!!!!!;;;;;;;;!!itC#: .,;!:,......;G@#@8t!t::;;;i!iiLftfi,,,:;!;;!;;ti,..,::,,.,.,,:::,,....,,,. ... .. +Ct!tttiitftii!i!!;;:;;!;;;!!::!;;;;!t: .:!!!;,.,;.,;ifLfi;,;######Lti##C!;,,,,,;,,,:::::::::::,,:...,..,,,,...,,::,::;;;;;::,,. +Ctitfti!!!!!!titti!!!;;;!;;!;;!tt!::;!;,!t;,,,. ..:;;!!;;,;#########t0#Gi:::,,!fti!!itfftfffft!!;,:;;;!!!;::;!ti!t!tCGCCCGCt!: +f!;:;;::::;;::!;!!!!!!;!;!!!!!i!:::;!LG:,::,., ;ftLCCLtt;;iii!iii;:;G@tt!;;;;!i;;;;;;;::::::,,,..,,,,,,,,,,,:,,,::;;;;;;;::: +fi::!!:!::!!::!tfi!tftt;!!!;:::::;;:;ft;..,:, . ,:;;;!;!i!,;!;t: .:::!f;...,:;;;:;:,,......,,,,,. . .. .,,..,: +t:;!i!!;!;:;;;;;i!::;;::,,,,,,,;!;:,,:::,,,,..,.,........ :8f,,.!G;;:, ..,.,,, .;,,,::::,:,.,.:;;;;;;...... . .:;;:::, +;,,,:::,,,,,,,,,,::,,,,....,:;;::;:,:,,,:ii::i!!;!!ttiiL!ti8G!!;!Ct##tfiifL;:,::;!i!;,,!;;:;;;:::::::,,:::::,.. ,. ..,,,,,. +;,...:;,,,,,,,.,;;:,,,,,,::,::;:::::t:,:;tLL;:::;itiffLCLft!i00t!!L##00fffLtftffC000f;,;::i!itt;:::,,,:;::,,,:,,,,...... .,:;;:, +;,.,,,,,,,,,,,,::,,;;;;!!ti::,,,,:,:!t. t!ifLft!;,,:,:::::,.,;;:,,::;;::,::;!!;;;!!!i: .,,::!:;!;:,,,:,,,::,,;!!!:,,,;:,,,,:,,: +;:,,,,:::::;!;;:,.,fLtttfftt!,..,,,,;iftit######i,:;:::,::::!t;::::::;;;:,,,::!ii!!;::,, :.,,,:;;;:::::::;::;;;::;;,,,:;!;:;:; +;:,,:,,,;;::::,::;!!!!;;itti!;,.....:###########tiGCCCC8iCGL000C!08GG0CGGf:L!!G0G888GtC; .,!i;:::::;;!!;!!:,,:,,:,,,..,,,:;,,! +:,,,,,.,,,,,.,;;tLLf;i:,,,,,,,,:,,,,;G88#t;!;:::,,:;:!8C;:;i!!;::!8L;;;;;:,:,,:;;;!!;;:,. !;:;iiii!::::::::,,,,.,,,,,:,,,:....,; +!;::,.,,,....,!::;;::::,,,,,:,,::,;;::::;:. .,,. ,C; .,, ..:f;..,,:;!!fi;!;:,,;:,:;;::::::,,,,.,! +;:,,,,,,.,:.,i,..,,,;,,;!,:!!;::;::::;;;,i:, ,t: ., .,t0L!ifi;;;!!;!!!;!!!::::;;:! +::,::::;::,.,:;!!!;;;;;;;:;tttftittt!;;:. :;, ,:.,. , .,;!iiitftttiittiiiiiii!i!!! ,,,;!iiitfC0########@0@@0CL80CG0#####@Gf!::::Li.; . .,: ,!;:;!;!iii;. ,: .,:!!;!i!;i;.....:..... +ii!!::::;;!f8G##88#@8@#0LLff0####8###Cff0i;:;L8!.. .!: ,.!: !!ii,.,;:tCt;:,:;;:. . .,,,.,,,,::i!ifCLLi!!:,,.;G: .,,,,,:,, +Lt0!it!:.,,:!tL@#8#####0GLtitCCLCG00Li;!@L!C!tt:.,,,,. ..,. .,,;!!:. ,!!:,;!:,,,::;::,,:;!if:::ti;fGC0!:;;:::,:!,,;G; . ...: +;t;:i##i!;;:;:;!tfCGCLC8@0Gff!;!C0@tif:;t#tt!t;..... .,;00C. ::,.,;!::;ftCfLtL!;;::,,.:;;!i;iG:,;::ii;,,ti!Lf:.,.,,,.,: +;fiGttG@L#0L;:::::;C!!!ttfLi;::i::::,,.,f0G,;C; ,,..,. . .;t: :i!;,.,,..,C0t:GC;;;;;:;:,. ,::tf:,:ti,:i!ii;;:,,:t0Ci!:;;tt::: +i!LG#0@CC0LGLiLCC!ttGCt!!ti::;!:, .,.. ;8@;;i, .. .. .. .GG, ,.,t,.. ,:tL!iC;,i!;,;t;,,,:it::!,!C:.,::;;:,,;:.,iC;:!:,:,,.. +,!:!f##8GGLiif@#0L!tCLtfffLt;Gf!; .Lt..!:f@!i,. .::, .::i;::,.,,,:if0C;;i;,,:,,;!:,,. :;::::,::tt;.::,. ,,. .. . ... +,,,.:!t@###8fCLi:!G::tCCi!!t;i;:,..,, .0!:;i,,..,..,. . .:,:;:,fi:,,i!;:,;!0i:,,.,;:.,,,... .,..;!;,,,,.. .,. . . . +;,,,:!:!tif##t!;;!f!iitfC;,..,, .i@: ;,:,,,,.,,..., .. ..i;:C:.,iC!:::,,;,:;8t::;,,:,,it, .:!:::...,...,;:....,..... . +;:,:!!iititfLftifGit@G;Li:.. . i#f,,,,,,... ... .., ,;;;i, ,:iL:,.,,,!@f!;0i:,!;,iL:,,,,,Ct!Gt,::::::,:;,,,,, .,, . +if::!f8########@Cft;;;:,,;::: ,,. ... .L@#:.:,:,,.........;f, ,i:,,,,,,:iL;!;:i##;.:!@t:::!t::;:::,:ti:::..,,,,,,..... .. +iG!!if@#########0Cf!;!!::. . ..;Ltt, ......,,,.,.:;G!.,;,.!t!;!;:;G;:!L#@i::,,t#ti0f;,..... .:, .::,,:,:,...,. . ..,, +!t;:;iLCG0GGCCLtti!f00L:.,,. . .CtG;::,,,,,,,,,,,,,..;ftC!;,,i!::;::::;!8#f;:;;:.;##0iff:.... ..!. ,,,,,,,,,:,:,,,,,:,:::.. +C!,::!tfCCt!;:;;!t;!ii!!!iLi:::. ,;#0!!t!;;!!!!;;;;;;:.!tt8ft:;C!,,::::!f#Gi;:,f0:,;t8!!@L:,.,:..;,.,:ii;:::;;;;;;;;:,::::,,, +fi;:!tfC0fit::!itf!:;;!LGLf0f@0: .,; ,fC:,,,,,:::::,,,,,..:tiCGt,;Ct,,,;;t##i!tft!tt;iG;.:L#f:,.,:,:;:.,::,,::,,,,,,,,,,..... ., +C!;:;;!fLLtii!i;iGf!tffGGGGfG@8; ,. .!f;:;;:..,,,..... .,;CLti,:fi,,:i##C!;ittt;C8!!i:.:8L!,,,;i!iL:,ii:,:::,...,:;;:,,...,,,: +8CfCi;;iLLCffCti;Lt::;;;;;;;;!;, ,CCfffL!,.......... ..;iLft.,t;;!f#0t!;,,,:,,t0;;L;.!#G;;,:;:t;:;!;!ittt;;:...,:;;,..,::!;: +CLfCG!ttiiiii!!;!!;::;;;;;, , .. :LfC!::,. ,,,::::itL; ,i!i@@i;:t;:;;:,,:;;i8GiL@t::::,:,,!!:,:::;;:,:::. .,,, ..,,:: +0CtC#!:i!iitfffffCC!!fGCCC; ..,;: :fi0; .,;!!;;;;:,,!i;:;Li..;t08i;:,:!!:iti:,,.,:t#8tt:,;. .,,,:f,.. .!f;,,,,,:;!i. .,,::; +@C@C@t,:ifLG##@88#8i!tttttfi!;,..::. :t!Ci .,i#@LCCGCf!;;;::!C; ,0@L;:,,::!;;;!;,,:,;:i@8L:,;:;;:!G!;;!i;,,!tL!,:!!Lf!:,,::!!,,: +@C#fCG::;!itLCftttLLtLitifLG00L;, ::,,: ,L@08LttttLGCt;;;L8i,:L!;;!!i!iitfiti;i!::0f!i!;t:!G0ffGCLtfLf!:;ii:;iii!;;;,,::,..:! +@LLC8#!:;;t!!iiittti:::::;;!!tC0f;, . ,8ft00ttftfLfti;;;tGL!;!;fLG88ii!!;!!tti;:iG!:f:,::;;;::;;;;;:,,,:,,,:::,:;;:,::,,::: +#ffG0#i,!it;!LfG@G0f;:,.,.,..:!!tGt. ,,: .:t;;ff!itfLCft!:;itttLtLf!t8CtL@;..,::,,,i@i;:: .,,,,,,:;::,:;;:;tLCtiti;!ti! +#Gf8L@i :t;;:!;!fi;;CL:.. .,!i,:::,...f0;. ,:;:::::!!!!!!!!!tfi!!!;:iG,:88tCi;;:;;;;00iit:..,,,,,,;i;;!!;!tt!!!!;::;;i;;!::;;;t +8@Lf!;; ,:;;;::;::,;!!;;;;;;!iiiiitf0@!!8C!!iGtt!::,it!;;;!::::,,!ii;:,..,,:0#0CCL8CitCLfC;.:;!!i!;:,,,,,,:::,,,,,,....,,:.,;;;i +LGt;::;;tLCCGCLCCCCCG088888@###########::f@@88!:C0,.,:::,,. ,;!itC!,. .:!f0GLCL;:;;:tL:..::;;::,.,:;;,,:,,,.,,,,,,:,;:.,,,,; +t!;:ifLLCLLCLLLfCG888#@##@@8@@@@@808#0t,:G@i!;. :!.,iii!;,,..::..,iC@#@t,,,.,:;t8@L!!L!;tt:.,;i!::;;:;fGGi,;:!;:;!!;:,:i:. ..,,: +t::!tffiiiiiii!!!iittitiii!!!iii!itfC#L ,;!:,......:L@#@8f!t::!;;i!iitftit,,,,,;;;;t0LCGC;::,i!;,....;:;;::,....,!:. .,;, . +t!!titttittftii!!!!;:::;;;::;;::!!!!tCi,..;!!;:,,,:,:ifLfi!,;######Lt;i##i!,,,,,:,,:;;;;;::::::,,,,,,......,,...,,,,,,:::::,,,.  +LtttitLti!!!!!!itffi;;;;;;!;;i;;!tti;;fi,t;:,,,,. .,;;!!;;:;#########if#@t;,:,,:t!!i!,::!tiiii!!iit!::;!;;!i!;;!!itititfCLLttt, +f!;;;:;;::::;::;i;;!!;;;;!;i!!!!!i;::!ti:::,., .fffCCLff!;iii!iii;:,i#8!i;:::;t!;;:::::::::;!::::,,:;::::,,,,,;;::::;!!!!it; +f;!!::;;;;::!!::!;i!!i!ti!iii!;::,,:;!f;,..,:. . ,:;;;!;;!i:;!;i; ;;::tt,..,:;;;;;:,................ .. ..,::. +ft!;!ttttii!;!!!!it!:;;;:::::,,,,:;::;::::,,,.,...,...,.. ,f8;..;0!:;. ..,.,:;, :;:,:::,,,,:,.,.,::,,,, .,:!;: +;:,,,::;:::,,,,,,::::,,,....,,:!;:;;,::::ii;:!!i;i!ttitL!t!0@t!;!0t##tiiiiL!t;::;;i!;::;;;;:;;::::::,,:,,,...,. ,. ..,,. +;,.....;:,,,...,.,::,,:,..,,,,:;;:;::;,:!tfL!:::;ittffLCCLfi!C0Li!t##C0fffLffttfCG00ft!,;!:;!!ii!::,,,,,,::::,:,,.. .,. ., +;:..,..,,,.,,,,,,::,:;;:;;!t:,,:,,::;;, ii!tffti!:,,,:::::,..:;:,.,:;;:::::;:;;;;;!;;ti. .,:::t;;;::,,:::::,,,,;;;::,,,,,.....,: +;,,,,,,,,:,,;;;;;:..:Ctttfffti:,,,,,:!fti!8######;,;:,:,::::;!;::,::::;;:,,,::;ii!!!;;:, ;,,,,,:;;:::::,,::::;!!!;;:::;:::,,: +;,:,,::,,;;:,;;:,,::;;!;!itftti:....:####8######0iCCCCL8iCGL000C!GGCGGCGGf:L;iG088@80tC: .,:!;:::;;;!!;:::;:::::::,,,,,,,:;!! +::,,,,,,,::,..,::;ttf::!,,,,::,,,,,,;C@@#t:i!;;:,,:;:;80!:;!!!;::;08!;;;;:,,,,:;;;!i!!:, ,:!tti!!;:::,::;:;;:,,,,.,,,,.,...,:; +;;;::,..,:,...,!:::;:,::,,,..,,,::,:::;;,;:. .::. ,f! .,,. :,!f;:,,,!ii!;:::::,,::,.,,,,:::,,,,.,: +::::,,,,,,,:,.!:,.,,,:,,;!:,;;;::;:::;!!::i: ,Ci . .:!. .,::tL;;ii!::;;::t!::;;!;:::;; +:::,:::::;::.,:;!!!;;!!;;;;;tttftiitii;;:.. .!;. ., . :!itttttfftfttittttii!!!!!! :,....,:!ifC8###@@###8GLLti!LGfttC8G088Cf!::;tL.; .,,. ::;;:!t!!!i;;, . .:. ... .::::;!it;,.,. ..  +Gt;;::,,!ttfC8####@8#88##0CfL8####@####80i!;:!8i: :; ..:! . .:,,;:;i!!tt:,.... . :!. .,;;::!ffLLi;::,it, ...;,. +fLCtGfi;;:::;ifC#########0CtiiC##0CC00G0if0!:fLf..:.:,. ..:. :.:;!:, ,;CG0Cfi!,:;:. .,,,,,:,:;:,,,:;!L80ti!;;:::::,.;G: ,,,,,, +i;!ft;f8L;,.,,:!tLLLGGCCG@Cftiiti!iLGiiL;i#ttt;:.... ,!08C. ,08Ci!;:,::;;::i;!i;ttttf:::::;L!i0!::::::,,ti,:f! ....  +i,:t;!!t0LtLt;:::,,:;!;;tLC08Li:tt:;i;!:,!#0;:i: .. .. .:!, :fii, ,;;:::!!;;iGf!t::,:,:;;;:::::!i,:ii,!ftffi!,.:i!fC;:::::,: +tt;fC#8tLLC#GCi;tti;;GLi!iift::;;;, .. :0#;,t, ..... ....GG, ..:i: .:!::f0!;f!::::,..,;;;;;tfti::;L:.:!;::::,,:,:fGifL;;:,; +;;f!!t0##GCLtiit##8t!t0Ltiffi:;Li!: .i: .,t#i:.. ... .::, ..:;t:,;,,,,,:ti!C;:Lt!:;:,::!!!:,:t:;!:,:,,,:,,;ti:.:;::,,:,.. +.::,:,;if8#@0ti08f;if;!fffiiff!L;,. ,!: :G!Lf. ... ,. ,;;!:,:ii:,;!;::::i0L:::,,,,:;:,....,,:..!fi;:;,. .,,,. . . +::,,,,,::t@CC#0t!!:iC;;iLft;::,;, :@t:,. ,.,..,...., . :f!G;.,,!L;::;ti!,,:tf!::,:,:::,:,,,,:,,,:,:,... .;;..,. .,  +..,,;::!;:;::!i!fGLLttG!;Ct,. . ,L#;, ... ..,,,,.. :tiC;::,,:LC:,,,,,,;t0Gft!;:!C;.;i:.,..iL;!!,..,:..,.:;,...,. ... +,..,::::;!itftttfCGLt!f;,:,,,,, ,:, . .C#G:.,....,,,,,,,.,:, ,f;,,.,..,:!C;,..,!@@!;::8@i;::,!f;:;:,;LtGi!i:,,,,,,.,. .,.. .. +,,,,:C;:ttC#########8t;:;,:. .. . :L8G::,:::::;!!:;:;,ft.,:,..,;;::::tG:;:!##i:,::!#@:,,!f:,;:,,.:;,:,,. ........ ....  +;,..;Lf:ifG#########80Ci!i;, ,fiL!;;::,,,,:::::,:.,!f;!;,:!;!;:;;:;:;!t#Gi:;!;.,t#Ci8C!:.,,. .,, ,,,.,.;:,,,,:,... +!!:.:t!,:!fLCGCCCLfttiiL800t!,,.. ,G#G;ifi!;;!;;;;;;!;.:i;tf;:Li;;;,,;::;i@@i::;:;;: ;8#8!fC;,;:,..;...,,,,,,,,,:::,,:,,,,,: +i!f:;i:::;tfGGi;::::;t;;iiiitG!t!. ,:.;@t,,::,,:::::::,,,.:C;!C;:GGi;;:,,;!0#Li!;!;:!G:,;!i:!@0;,,,,.,:,...!i;:,,:!!!;;;;;,,,:: +fi!!!;::;!iG0fi!::;!iL!;;ii08GL00: ,.. :fi,,::,,,,:,,:.,. .,:itL;,tf!;;::!L#8i!ffCCfiii!!0: .i#t:;.,!:;!..,::,.,;,.,,,:::::,.... +8CL88ii;;;;fGft!ii!;!Gt;fLLGCGCfi, :Cf!!tt;::,..,.,.. .,,fLC:.i!;;!!i@#t;!fi;!!!;t0:;;;.,0Ci::,:!tf:,:;t;,,:::,. .,;!!;::,,: +GtC8CGL0f::iC0Cfifi;;t;,:;;:;;;,,. ,ffi;::,.. .,.,,,:::iGL,,tf;;iG@f!:,;t;,,,,,;i;:0!:i#0ii!!;!:,!;;;;!!;iii!,..,,,,:...,, +@Gf@fttL#!;ftfftiii!i!;,,:;;: ::,.. ,:!i, ,;!;;;;;,,,;itt:!0; ,t!!0@C!:,:,;t;;!!::,,::i#0G@L!;:,:. .,i,..,::;::,,:,..,,,. . +8ff8LffG#i;LffCLLCG0C0L:;fLff:,.. ,i: ,i,:C::C#8LCCGCL!;;!!!;!f: :!t8L!:,,,:,:i:,!!:,,,,,;##L!,:f. ,,:,;,.,:i!;t!,,,,:iffi,.,.. +@Cf@LL@L0t:;tiLC0G8808C!!tiiiGCf!:, .i,,!!0@0CftfffL0Gftft!tf:.!0C!;;;,:,,,:;;:;:,,;::!iGGG:,;;!!;;0L!;!tt!;;iLt::!!ifi;:,:;!; +##ft0C@L0C:;;;!ttti!!iftittttLCG8G!, ;8tt8LtfftfLfti!!;iCG;!fi;!L!L!;!itifLtt!it;:0@ii!;!!;G0GtLLLftfft!!ii!;!i!!:,::..,,  +8#ft8LCC@@;:;!t!fiiiifG!:;!;::;;!tGL: ,.:i:;t!!ittLLti!!itttttif!:!G0Cf#@i;i!;;ift!:iGCtLi,,:;;;:,:::::::::;;:::::,,:;;:,::: +f@0L@ffC0#!.ift!tGfG0GGiit;;,.,.,;!ff, .!;. ,:,,,;!iiii!!!!tfi!;!;:;G;:8@f0t;. .,:,,,i@t!!;. .,,.,::;!i!!;!i!;ifCCtti;: +L0Gf8LfGf8; ,:::::;!!;,;!:,.. ..,;:::::::C@i;;tt;::;ffttii;,:,,,,;it!:,..,,,!@L!!;;:;;;!GGi!Ci..:,,,,,:;:,::,:;!!;;;;;::;;;;;;,, +i#8ff@fi!;:,;;;;;:;;;;;!!i!!iiiiitttfC8#Ci8#88i:iG:,:;;:,, .;!itLt!,. .:!8#@0CLt0L;!LftCi,:;;!ii;:,,,....,,,..,,,.....,,;., +!8@t!C!;;!ifC0GGCCLG0008###@###########0it8t!;, ,!,.!ti!:,,..::..,!L8##@L,,..:i8800GGLi;;;.!L;.,:;;;;::,,:;!:,.,,,,,,:,,:,::;,., +ii0!;;;!fCLfLfLtfffLG080880GCCLCGGGCGG@@!,;:,,.... ,L@##8f;i::!;;i!!itLLft:,,,:;!;!0@0LCC;;it:,:!ti;;!!;;tC0C,,;;i;;!i!:;!:;,. . +i!i;::!ttttiiiiiii!!iii!!!!!;;;;;;;;!iC#!.,!!!:,::,.:ifLfi!,;######Lt;;##L;::,:,,:,:;;;fttLC:..,;;:,,,,.,::;:,,..,,.,:,..,,.  +!:::!itiitfiittii!!itt;;::;!;;;!i;;i!!t00:!:,,,.;t. ,:;;!;;:;#########tt#0f!:,,,,;t:,.,:::;;:,,:::,,,,,,. ....,,,....,,,,,,,::,  +fi;;!i!iiti!;;;;;;it;!ti!!;;;!!!!!;ifi!t;:,,.,. ... iLfLCLft!;!ii!!tt!:,;8#G!:::,:!f!;iti;!!ifftttiitit!:::!;;!!!;:;!!ttititfGf! +fi!;;;;;;!!;;::!;:;!;!!!!!!!!!i!!!!!::::,..,:: .;;!;!!;!i;:;;:; :!!tfL:,:,::::;;;;;;;;:::::;::,,,.,:::,,,,,,,:;:::::;!;: +fti!!i!!tfftt;;i!:,iLL!!ftti;;;;:::::;i;:::,:.,.....,,,., .!8;..;G!,:. :.,,:: ,,,::;;;;:................ . . . +i;:::::::;;:::,,:,,:;;:::;::,.,,,,:;!ii:;tt!:!!i!i!ttitL!t!C@i!;!0iG#t!ii!C;;!::::;i;::::;;;::,,:,.,.,:;::,,. . ., +!,.,,.....,........,,,,,,,,.,,,,,:;:;!::iftt::::!ittLffLCLfi!f0Gii!@#GGLffLLGCtffC0Gt!;:::i!!::;;;::::::,,,,,,...: . ., . +!,.,,....,::,,...,,,;;:,,,,::;:,:;;:::. it:!tfti!:,,,:::::,..:i;,.,:;!;::::;;;::;;i!;ii!;.:;,;;!iti;:,,,,,,,:::,,,:,.. .,, . +!,.,,,,,,,,:,,,::::::,:i;;ittfi::,,::!ft!;t######;,;:,,.:::::!;::,,,::;;:,,.,,;!!!;;!;;t, ..::!::;:;:,,,,::,,,,,:;;;:,,,,,,.., +;,..::,,::;;;::!i;:,..,tiiiftttf;,..:####C#######iCCCCi0iCGL088C!CLtGGCGGf:L;i00G8800fC: ;.,,,,,:;::::::,,,::::;!!!;::,;;:; +;,.....,,,,:;:,,::;:;;;;;;:;;;:::,..:C@@#i;ti;;;:::;:;80;:;;;;;:::L0!;;;;:,,,,:;;;!iiff: .,;i!:::::;;;!;:::::::::::,,,,,,,: +;,,,,,.,..,,,,. ,i!tfft!t!,,,....,:,::;!;::,. .::. .::. ,,. .,, ... :;:!tti!;::::,::::;::,,,,.,,,,,,,,; +:,,;;:,::,,,,:..::::;;:;:::;:::;::;;;ittf;:f. ,CL. , ,.:t:,,,,,!ii!;::;::::;;:,,,,:;;;;::; +;:::::::::::::.;!:,:;;!!!!!!:!tttiii!!!!;::, .;: .:. ,:;tfiifftiitt!itti!!iii!! !;::::::,:;iC@###8@G08Cf!;;:;;fti:iC080Gi;::,:Li , . ,,, .;;::ii... ,!. ...,,,,,, ,. . ,,,:;,...:; +8Gf!:,:::,,:!tCG0#G0##0CLLLi;;f0LfCG0G0Cf!;:,;GL:. .,.. .,i. ;ii,!C::C;,,,!f, :iiiiii!, .,:;. . ..,:::,,;GfLf,:::... +###Gi!;;:,,,;!fG88##@@@08##Gi!C@####8###CLt!;;f8; ,.,;. ..;;. :.,:;:,.,!t;i;:tt:,, ..,,,,,. ;t,...,:::,:itfLt;!i;Ci:,.,..., +LCftGL0Lfi!:;iiitL########@0fi!tC@GLCC8Cftf8!:G!,...... . .t0Gi. :f::iiCi:;: .., ..,,:,,,,,:;;f0Cii!!!;;;;::,;C: .,,, +tLi;:f!:!@8f!;;,,:!tffLLLL@#ftii!i;;i0L;!!t#f!f:.... .,,..;Gif, ,!itfGGfi;;;;::;ii;;:itftL:.,:,;C!iG;:;;:::,,it:;G! ,,..  +fti!:i;iiiCGf0f!:,,,:::;;;ttfCGi:,i!::!:,,:G@!,!.,,.... ..fG, ..,.,!:C8@8Gi;!!;tGf;t;:,:,,;;;:::::!i,:i!,!fitLi;,,:!;tG;:;:,.. +t;;LC;ft#0#CLCtCf!ffft;f8f!!!t!,:;;:. i#t,:. .... .:!, .;!;;i!!:,.tGf;it:,::,,..:::;!tfi!:,;L:,:!;:;::,,:,:t0fCtL!:: +!;;;;i;!t@##CLLiit##0t!tGCiitft;;C!!, ,!. .!#8, . ,;;:,,i!:,....,::!i;Ci:fL!;::,,:!ii:,,i;:!:,:,,.:,,;tt!,:!;:::;!; +:::,:,,,,;iL###8f8t!;ff,!fCfi!ti;t;.. ,:. fCii, ..,..,. , :CiG;.,,;t:,,;!:::,;C8;:::,:,:,,,:::,,,;,.;ti;,:.. .,,... ., +::!i::,.,:!;t0L##t;!;t!;;!ifi:,,.;. !#!...:,....,,... ;CtC;,,,,:ft;::ii!:,:!C;,:;!;:;;:!tit:, ,::,:,. .:. ..  +..,,...,:;!::;::!;;LCCti0::i;,. . ;#8, .... ... ..:fi:;!;;,.,iCt:::,,,:iCLti;::f08L:;i;, ,C;!t, ......:;,.....,. +,. .:,,,,::,,,::!;!:::,,,:;,,,:,... . ;##: ,.:,..........!t;!: ..,,..,:;ft:,:,;G@;:::,!8titt,,f;.,,:ti0L,,,,::::;:,;;,,,., . +,:. ....;!::;!ifLLLLffft!!;. . :tf, ..,,,,:;::,,,,!C;i;,,..::,;!:;G;.:i##!,..,,;8@;.,:ti:;;:::t;::;i:..,,,,,,,.. . . +fti;,,,.;Gi;ffC##########0i;;;:, ;t!;:::,,,,,,,:::,,.,;t!L!CL,.::,::,:;;:i#0!:,,;;;,i#f;itf;,....,!, .,,. ,:.,;.,, .. +iL!0;...;Li:!LC008@##0CLfi!L080i,. .,88i;ff!!!!!!!;!;!;::L;;i;tf;.,,,,,:;;i@@i;,,!!i!;:,t#@Cfft,....,:....,,,,,,,,,,,,,....: +,::,,. .;i:,;tfLLftii!;;!:!LfiiC!f;. .;:.i@!,:::::;;:::,,,,.:f!;i,;Li:::::,:iG#f!;,.,::;0L::!C@it@i,:::,;,,:,,:i!:,,,:::::::::.: +;!tt!:;::;:!!tGG0f!::;iif;:;!;tLG0G,. . .;G!:::,.,::;,,... ,,!0i.!80ii!i!!t#@!::t!;!!;iGf!C0;,;@#!,,,;;i:,,,,::,,:,..,,,,..,.., +G@##GLLLf!!;!!L0Li!!!!!ift!ift0@Lf;. .fGLfi:,.......... ..f8! ;0t;:;!i@@t!;:;fLfLCtt#8!CL, ;#f;,,:fL!,;::t!,.,::, .,,,,:,,, +ft0CftG08LLG!:iGfittCfi;LL;iftf!:.,. ,LtL!;i!!!;;;:,. ,.:!C,.it;:;iC@f!;i;:!t!;;;:!8G!ii: i@L:;,:!;;!::;;i!!it!;:...,:;!;,, +t:t@Lf8CfGC#t:itLf!!!!;:;;::!!;,. :,::. :L!f!8#CfLCCGGi;::::!LC; ,LL!i0@G!:;;::,!t;:::::;;;L8i;L@i:,:;.,!;::,,,:;i:,::,,:...,,.. +L;i#0fGCtfC#t:ftfLtitttiii:;iLGf,. ,: :L:f#08LftfffLLLttt!t0@; :CLC@L!;:,,:,,,:t!tff!:..::t#GfL:,;.,..,,,:. .,,;;:,,,,,::::., +f;i#0f8CL8C@f;iL0@88@@@0@L!!tiifft;:. ::,;0tt0fttfffftti!!ittC;;0#8!!;!i;;:::,::::;::,,,::i@8t::!:::,;f!:;::;,,:fGL:,:!iLfi:,, +L!!@#CL0C#fL0::itfLLfffttCttt!!iLC00!, .,::;!;;;;!iiiiittftifftt;,:Gf8tG#t;;;;;:::,:!:;Gi!!;!t:;CCtiGCt!iCf!,:!L!:!tiii;;::: +Li;@#tt8CGL88;::;itt!;;;if!::;:;;iif0f, .,,,,;;!ii!!;;!ti;;!;:,:0;:i#08#fLLtft!!!it!;LC!:t:,;;tt;::;;;!;;::,::,,,,,,.,,,,  +CL;f@CL@LfL0#!,;!i!fttLGG0!:;:,..,,;iLL, :f!;ii!::;fLGCf!..... ,!fLf;,. .,:!##fii!:,:ii!:,i#L!:, ... .,::::::;;;::::,,,;!i!: +Cf;tGCL@LLGC#;.!t!;!t;tGi;LGf::. ..!f;!!.,i#@8L:;G;,:!;:,. ...;!itL!. ,;!;::...,:!;;;0@t!!,..,...,,:ii!ititfLfttii!::;!tt! +fi;i80t0Gffif: ;;;::::::,,;!;;:::::;!!!!iL0t!i:.,!,.tLi!;,,..,,. .;f0##i!;:,.,,:fLttttfC8CfCCftC;.,;;;;!;:::,::::;;;:::::,,,,,:: +GC!!#8iiGi;!!!!tfttttfttffffCG00G00G0@###t;:,,,.. ,L@#@8L;i::;;;i!!ifG###8;,,,:i@#80GLC8!:;t:iL;..,,,,,,....,,,.,:. ..,,,,,; +LLi!CG;;;;ifLLCCLLLLLCG888@##############L,;!!;,,,.,:iLffi!,;######Lti!G##8f:::,:!fftG@@fi!t!:if;.,,:,,.,,,,:ifi:,:::,,,::!!:::; +tti;Li:,:!fftittttttiiitfftttttiittttitG#C:;:,,..ti,,::;;;;:;#########8i##Cft:,,,,:::;!ifG0GLGCi;;:iti:::::;f;tL!:!:!;;!ft:.,:!: +!;;;;;:;ititti!itti!!!!!;;:::::::;;;;!iCt;:,... :f,;LtLCLfti;!i!!!ttt!;!f##G!;:,,:!:,. ,:;;;;;,..,,,,.....,.,,,.......,,,. ..  +ftti!!ittttfft!;;;;!!iiti;;;;;;!!!i!;iCf::;!;,. ,!!iiii;!i;,;::;. .;:ffCC0t::;:!ii;,,,,,...,,,,,:,:,,;:...:,..,:,.,..,,::,,, +fii!;;;;;;;;;;:::;::;i;;!!;;;!!!!!;;:;i;:!0@f, ..,., ;0;..:ii,::...::,:;f: ..,:!!;;;!;:;;!ii!iittt!!;:,,;;:;;!;:::;;t!;t!! +Lt!ii;:!;::;;:;::i;::!;i!!i!ti!i!!!tft;,;tLfttiiiLitfiiCitiG#Ltit#Lf#@LiftC!;iii!;;;!!;;:;::::::::::::::,......,,,,,.....,,,,,,, +i;;;!!!;:;!!!;!!;;;:;;ii:::::::,,!###@!:i@GLitG88@@888@@@8@#808@@#@###@@8@@@888888@8Cffi:::;;::::::,......,.,,.. .. +!,,,,,,,,,,::,,,,,,,,::::,,,,....;GLti;:CL!;iifii!!!!!!!!!!;;;i!!!!!!i!!!!!!!ii!!iLLi!!;::::!;::;:::,.,,::;;;;;:......  +!:,,,,....,;;,,,.,,,,,;:,,,,,,::,::;:;f;,:;fG#@#i. ,::. :,;,;!!;;.!i;;;;;;!::,::::::,,,:::::. .,.  +i;:.,,,.:,,,,,,,,,:,::,:;;;;;!it:,:;:;i: :######0. .. !GC. .... .,,:C: .,,,::ii;i;,,:,,,,:;::,,,,:,,,....,. +;,,..,,,,:,,::::;!;;:..,Lfitffftt;,,,,;, :G##i!;,. ,ff, ,::. :i, .:,:i!::,,,. .!.,,,,,:;::,,,,,,,::,,:;!!;:,,,: +;,......,:,,:;;:::::::;;!!!;ittii!:. .,,:,;!;. ,Lf. .,,. !C! . ,!iit!. .,:;;,,,:;;;::::::,:::::;;;;;;:: +;,,,,,,,,,,,::,,.,!:ifLL!t!,,:::::::,,,::!;t! ,, ,CL. ,,. .:!t; ,!tii;:,,::;!!ii!;;!;;:::::::,,: +;:;!!!;;;;;;;;:,,;;::;;::!!;;;;;!!!i!!ii!!;: ,, , .,.:!,,::;!!!!!!!!!iitttii!!!!;;;;;; i;::;:::,,;iC8###8@GC0fi;!;;::Lf!;iC8@88t;::,:Lt , . . ,,, !;:;ti. . ;: ... .,:... ... ,. ...,;, .,; +8Cf!:,;;:,,:;tLG0@CC###LfLf!::iGftfCGG0GLi:,,:CC;, ,. .,!. ,t:,tG::L;,,,:L; .!iiiti!: ..,;; .,,,,,;CiiL;;:;,,. +###Gi!;;:,,,:!if888@@#@88##Li!f8####8###@Li;;;t8;., .!. ..:!. .:;:,. :ti;Lf,!t;,. ..,,,,,,. ,t;.. .,::::!iiti;!ftGf:,,:,.., +CCftG0CLi!;::tfttL#########GLiiiC##GLL0GLtt8i;C!,..,,.. . :00f. :C;;i!tf;:. . .,,:,,:,,.::!Gfitftt!!!;:::!C: ..,: +it!;:!f:;@#ti;;:::!ttfLLCC0@ftii!ti!!ff!!it#0!C:..... .,:.:Gti...,!iiiCGCLLt;::::;!::,;ittC;.,;,:Cft0;:;;;;:,,i!,;G; .:,.. +Ltt;:;:;!!f0fGt!:,,,,::;:;ifLL0f!:!t;:t::::G#t,;..,.... ,GG,.., .,f;L0880Ciii!!LL!Lti:!,,::;::,:::t::!i,;t!ifi;,,;i;tC:.:,,.  +L!;fC;tt@fCCC8tCt;itii!i0f!!!ti::;;:.. i#t,,. .. . ,ii,. ..,!;;!Ci!!:,iGf:if;:!;:,,.,:::;ittt:,:L:,:i;:::::,:,:t0it!f!,: +!;;;;!i!i0##GLLiii##8f!iGGtiift;;Li!: :. .;#8,.. ,!;;::!!;,,...,,:ii;L!:fL!;:;,,:!it;::t;;t:,:,,.,.,,ii;,;t!,;i!;; +:::,,;,,,:!f####fCLi;!L:;LLLiitt;f;,, .:. ;0ii, ,.,..,. . ,f!G;,,:!i:,:;;::::!C0;:::,:,::;,,,:,,,!,.,t!;,:,. ,,,;.... ....: +:;;!!,...,;;t#C@#L;;;!t::;!ti::,,:. .. :0; ...,....,,... .. :tiL;,,,,:ti;::iti:,:!L;,,:;;:;!:;!!i;,.,,:,,,,.. .,. . . +..,;,...,;t!;t;:!!iLLGt;C;,t!,. .;;.... ,. ..... . ,ti,:!;;:,,tCi:::,..,;CLii!:.:G@G;;ii,. ,C;:!,. .....,;:.....,. +,,. ,,,,,,:,,,:;!!i:,::,,:, ..,,:,. .....,,,,,,.;i;:, .,,,,:!!tt:.,,:t@!:::::iiiLC:,i!,.,:t!0G:,,,:::,,,,;;:,..,.. +::, ....,;,:::!ittftiiti;:, :;,.. ,.. . :,,,;;;;::::!G!!:,,..,;!fCi!0;,:!@#f: .,.:80;,,,:f!:;:::f!;!!t!,......... . . +Ct!;,.,,,tL;tif##########Gii;:,::;:,.. ,fiL:,:,,,,,:::::::,,;L!f;LL;,i!:::,:ii:;#@i:,,,,::!#f;;!L;,,,..,!, .,,, . , . +;t!0i...,iG;iLf0@######0LCLC0Ci!:,.,, ,0#L;tfi!!!!!!;!;;!;:t!!!:if;,:, .,LL;,,;!;:,:,!#008Lt,,,..,!.............. ...., +,::::. ,i!,:!tfLffftti;!i;!i!;,::;, .:;.!#i,::::::::::::,,,:Lt;:.;f!::::,..,:.....:!!;:!t:.:L#ii0f:;;;,;,,:,,,;;,.,,,,,..,,,,.: +:;!!:,:,:i:,:!LtCt!::,;i:,:,.,:!iCG: .. ;Gi::;,,,,..... .,,!C; t00ffftt;i@8;,. .,:,,L0;;t;,,!@f:,::;:!,,,,,;;,::.,:::,..,:., +C08#GtfLL!:,:!f0Li!;;;;:,,,..,t00Li, .!0fttf!,,;!i!!!!!;,..i0; !8Gi!!it8#C!!ii!;,...:;!!f0, ,GC;,::;ti,:::ii:,.,:,...,,,,::,, +LL88LC8##L!i;:i0fi!!!ti,,,,..,;ii!:,,. .tfC!:;;iL0@8@G8@@0Li!i0: ;Ci:;!t@Gi!!;!tGL;::,,..,::; ;@L:,,,:;;!::;;i!;:!;:,.. ,;!i!:, +t;i@LtC8G0f0t:!ttti;;;;;;:,.,,,,,:;!!t;,:i;C: ,0#@CfLCLfffL0#@CC: :Gt;t08t!ii;::iGi;i!!;:,..,:,t@f::::..i!;;:,,:;fi:;;:.,,.,,,,. +fi!00!t0fLL8C:!ifftiiiiii!:.:;;,...,::!!tt;:,,;LtftitiCf!;;ifCGLt;;LLCCi;;t:!:;;iLt!!!::,,..:i0f0!:;,,,..,,,, .,:;!;:,,,,,::,., +f!!@GiL@C8L#@!!tG8CG000GGG;,;i!;;::,.. .;;,:,.,,:,:!!;!0GtiiiitC@8ff##i. ,,:,:!;::,.,....,,,:8@f;:if,,.,:;:!;:::::iGC!,,;!fCL!:. +Lf!G#0C#L8fL#i;iLffttfCLtLi;!!;!tfff:, .:. .,,,;f8GfGf!iifCtiL0: ... .,:;;;::,,!!:tii!i:i;;tti:CCt!;LLt::!Lf;:!i!i!;:,: +LL;L#0tGLCCC#!,!;!!;:;!;;!!,:!!;!iifCi, ..... ,i;::;:,..,:!i!,::::::;;iC80GCti!iti;f0!::,,!;fCt!;!!!!!;;!;;!;:,:,,,.  +Lf;!#0t8ff00#i,;!t!ii!tttG!;!;:,,,,;!ff, ,!:;;,,;;, .:,..:!!f,;8L0f!Ct00CCLf!:;ift!:;C0t;,..,,:,. .,:::::;;!!;:::,,,,:::, +LL;;80f@Lf@G#i !fiiiL!t0fifGC!!: ..,i:;i. ,GCt;,!C!:, ,!!,,;!;;!f##f,:::!!;:,. .,::::!@t!;:. .:;;;iiifffttiti;;!!fL! +fi!!@8f08LGtf: :::::,,,:,.:;;:,,,..,,,:;;;,:;:;;;iGCL!:,. .....,,iCC@#L!!!!!!!ii!!;;:!it!LLi!Ct,.,:,,:,,,,,,,::;;;::;:::,:::;; +Cf!;#@ft8i!;;;;!!!!!;!!!!!!iitffLLftfLC@#i. ,;:!C@@8GL!:, .,!ttf!!iC############@0CCf0i:;t;!Ct,.,,::;,,..:. . .,. ...,,..,; +LLi;fL;;;;;itfCCLCCCCCGG00@##############0, : ,::!L###@0Ci,:######Ctff00GG0GCGCLCGCG8#0t;!;,;L;,,,:::,,,,,,;!!:,,,,,,,::;;:::; +ttt:tL:,::fLfttttttftttfCCLCLftttffffffG#8,., ft::;!ii!;:.:############t;;;;;!i!;:;fGGG0Ciift;::;tt!:;;;:itLCL,!:!i;;it!,,,:; +!!;;;;::!tittiiiiiii!;!!!;;:;::::;;;;;!tf8i, :C;:,....,,,::!!!!!f80Lf@Ct;;!ifCL:..,,:;;;:;t:...,:,,,....,,::,,...,..,,. ., +tiii;;;itiittti;!!;!!iiii;::;;;!!!ti!ittftG!, ,Lf;:;;;;;;;. ..,,:!0Gi!!;;!!!:;:,,,,,,,,:,:,,:,::,,,. .....,,,....,,,:,,. +L!!!;::;;;:;;::::;;:;i;:;!;;;;!!!!;;:;!!;iL@i. ,:::,,:,,:::,.,,,,. .!;;ifLi,,,::!!!!;!ii!!!ifftttttfti!;,,;!;;!!!;:;!!ititt; +L!;!i;;!;::;;;;:;i!::;;;!!!;i!!t!!!tft:.;LCCffiiiLiiiiiLiiit0fffifGf!!tttii!ittiiiii!!!;:;;;;;;;;::::::::,,,..,::,,,,,,,,,:::::, +t;!ittt!;!tffttt!!!;;!tf;:;;:;::,!###@;:i##@@88888888888888@#@8@88@8GG88888888088@@8fLf!:::;;;::,,.,. ..,,..... ., +!:,,:::,,,:;;:::,,,,,::;:,,,,,...;GLt!;:8Ci!!!!!!!!!!!!!!!!!!!!iffii##Lii!!!!ifitfCfi;!;:;::;;;:::,::..,,:;;::::. . .  +!:,,,,....,:;,.......,::,,:,..,,,:::::!!!;:::, fC..i@fC, . ::!:;;;;!,;i!;;;!;;::::::::,,,,,,,,:. . ,.  +i;:,,,..:,.,,,.,,,,,,:,::;:::;!i:,:!::;!;.;00C:. ,!!, .,:,. .... .,,;Lt..,,,;:!t!i;:,:,,,.,,:::,,,:,,. .,, +!:,.,,,,,,,,,,,:;;:::,.,ff!tfffti;:,,,:,. :iffLLfit:. :GC. .::. .:::;;:,,.:, !,,,,:::;;:,,,,:,,,,,,:;;;:,,,,, +;,...,,,,:,,:;;:;;,,,:::;;!;tfftti:...... :#0#######. .,:. .:,. ,CG, .. ,iiii!. .,,::,,,:;;;::::,,,,::::;!!!;;;: +;,,,,,,,,,,,,::,,,:,;tft::;::::::::,,,,:!,!########f. .fC; .. .::. .,:ifi .!ft!;:,:::;!!!!!;:;;;:::;;:::,: +;;;!!!;;;::;;;::,:!;;!!;;i!;;:::!!!i!!!i!i! , .!; ... ,!,,:;!!!!!!!!!ittttttii!!!!!!;:: :,,,. ..,::!f8#88G8##0Lti!;:!Lt;;t0GffLt!::,,tL.,. . ,,. .;!,:tti!::,,!, ,::::,,,,. ... ... .,,.,,!!ii:,,,..  +0f::,,..:tfLfL@##800#0CG#Gi!i8@000#####8Ct;:.;8i: ,;. ..,! .:,,;i:,,!i:. ,ti. .,,:;;iCGftft!L;.....,;.  +GtLfti!:;!i!!tLL@#80@####0GfLiL###0G##8LLC0;,iGC, :.::. ..;. .:;:. .:iiiLL;:, .,:,:,:,.,:!Li!fLffiii;;:,!f, ..,;:, +!;ifGti0f!:,,,,:!tff8##@0GCftiifCiitLL!fft#i:G!,,.... ,00f. ,i0G0f;::,,,,::;::,,;!!fL,,:!::CCLG;;;;:::,:i;,;G: .,..... +t!,;;;;iGGi!i;:::,,:!ftiiCLL0Ct::iiiC;,!,!@G!,,, . . .,:.,f!:...:0Gt!!;;;!!!iiCftit::::::,.::;i;;f!,!i;!ti;,,i!;Lt:::,.... +iG!;Lt@ifCL#C8!:;;!!;f0i;!!it!::::,,.. :G#!.;, ...,, . ,Gt. . ,L:::,;ttGG;;G!:;!;;::,,.,,:;!ft::;f:.;t!!;:;,,,,!CCLCt;;;;; +!!;t!iC###LfiitiC#@L;!G0t!!ii:;it:,. ..t#L,,. ... .::,,..:,;;:,:,,:::!f;!L:,fi;;!!,,,;!t!::t:tf:.,,,:,,.:i!.,tf!!::f:., +,,;,,i;!fG@LCfit##t!!;!LtfttfL;fi::. ,,.,Li00, . ,. .;;:!::!t;,:::,,::!t0f::!:,:,,;!:,,,..,:,,:!:,,!!: ,,,..... .., . +::,,,,:::;C#C##Li!;:L,,;fCi!::::,. ,8L;:, ,.,..,... . .. .!,;L:,::tt;:,!ti;,:;L!::,,;:,::,..,,,.:,,,.,,,,,. ., .. .  +..,:;;;if;;t;!tiittLt:;i:;t,. .i#; .,. ..::,,. :;!i:;;,,!Ct:::,,:,:!8f!t;::;GL,;!:....!t:,:. .,....:;,....... . +, ..,:,::::,,..,:;ii!,;t:::;. , i#G,.,......,,,....,, ,L:,,.. ,:;L:, .,:f@!!!:f0!!Li::L:.,,.!L!Gi,,,::::;,,!:,,,,. .. +,....;!:;;!tfLCCLLffft;::. .:.. .f@@:,,,:,,,,,,,,.:,ff,,,,.,,,,,..,iC:::;0#t:,,,!@C:,,:f!:;;::,!t::;i,..,,,.,... .. +;,...i0!tfi8#########@0i;;;:. ;;fi;:,............ ,iC!;:.;;ii!;:;,iL!;i##t;:!i,,t#f!ttt:,,...,,: .,.. .:,.,,,, . .  +t!:.,;C;:!ifCGG8@8GCftiiC00L!,. ...,iCG;;i!!::,,..,,.,. ,ifC;:,::;::::,:;iG#C!:!!!;:.:@#@Gff!..,..,!,...,,,,,,,,,,,,....,,,, +i;L!,i;:,;itttt!!;;;;;:;Lfi!!C:::.,tt!!!ft!i!ii!!:,,,.,. .:!!::;;;;;:,,:;f#@i:,,,,;0;,:t@@!f0!,:;;:;!:;,,;i;,,,:::::::::.,,,: +!;:,,;;:;!fCC0i!:,;iit;:;!;!fLtf0:,Gt;:,::::::::,,..,::: ,L0t.!0LLtii!!t8#tii!!!;:i0i;G!:,;@8;,,,;;;f:,:,::,,:,.,,,,..,,...., +@Gtiti!::;!LCLti!!!!!ff!tftC0CCCC!.,i;,,,if!!;;;;;:::,,.. ,:LCi.:LiiLCLfC#8!;fGttff!t8i;G; i@t::::!tC;,;!t;,,,:,. ...,,:,,,.., +Gtf8#@fLC;,i0ftttLLi:fC;!tii!!;;:, .;;:::;!it:,,...,,:;!;:,,,,. ,:::!i!!ii;:it!;;;:,!0;:i!.,G@i::,,!!:;;;!!ii!!!;:,. ,:;!!,..:: +8Lf8CL0C#i,iftti!!!;:;;::;;!:.. :....:!:,..,::...:;!LG0@88Gti!:.,Cf!LG;,:;;;;;:::,,,::::0G!i88!:::;,.:::,,,,:::,,::,,. .,,. .. +@GtCCfLC#f:tttfttittitt;;ifCG: ,!: ,;,.. ,t:;08CLttf0fG@@##t;it@#C!iftLCti!;:,,..,,:!@#LCi:!,.....,;. .,;:;;:,,,,,:::. . +@Ct00L8C8C;iC8@008@@880!;itiiff!;:,.. ,:,. ,.;0fLLii!;itittL##t!0t!;;!!!tti:,::,..:;,;;G#G;,;t;:::!i;:::;;;,!CC!,:;iLLt:,,:,: +8@0L8L#fL#!;tLCLffffttLfif!!ifCG0G;, .,, .!t!;!fLt;!CLtitffffti; ,::,,,.,;;ii;:!;:tGi!!;t!;fCL!LGfi!ffi:,;ii:;ttii!;::!!!: +G#CiGLLCG#i;;!ftt!!!!!!!:::;:;!!iC8f, .::, i!,.,;!i!!C@8CCfi;fL0;....,,:;L0Gti!iti:!Gf:;!,;;it!;:;;;;;;::,,;,,,,,,,,,,,,:;. +t#8t8ffGG#t:;!t!it!fCLG!:;:,,.,.:!tCf, ,:L0f,.:,,...,:;f;;!f;:,::i;:;::,,.f0Gf;:,;i;:.:C0t:,. .... ,,,,:::;;;;:::,,,;!i!;!i; +i8Gf0CL8C#i ;t!!:i:;Ci;tGG!:, .,fi;;:. .L8itCt;,,;, .,,.,,,.,::!,:0ft: ,:;;,,.,:;!;;i@f!i;,..,,,.,,!i!!tiifLfttii!::;!ti!i:, +i80fL8LCii: ,::,,,,,::,:!!;:::::;;!!!!tGi!G;,:ff::t!, :;,!i,!ft:,!8#LiiiittffLfLC80fLLLiLL,,;!;;!;::,,:::::;;:::::,,,,,:::,, +!8#Ci0i!;;;;tftiiiittffffLGG00000G8#####0:,, ,:;:tGt;, ..::,,::,;tC#@8######@00CCGt:;t:!Ct,.,,,,,,,..,,:,.,:,.. ..,,,,,:;,. +!t0i;!;;fLfLCCCCCCCGG888@########@@##@#G!..: .,:;f00Li!;,. .:;;:;L##Ctfttttitf8#8i;it;!L!,,,::,,,,,,,iLt:,:,:,,,::;i;:;;,,, +t!G!,::ifftiittttttttffftttttiiitttitLG#; .,. .i;:;L8###@Gf;,:tG00#CifLfi;;:;;;:,:;iiL00LC0f!;:!ti;::,,:t:!t!:;,;;:!fi,,,:i:.  +;!;;:;iiiiti!!!i!!;!!!;;::::::;;;;;;!ifCL,,: .tC,.:!L0880GC:f##########@C!!tfL!,,. .,:;;;;:...,,,....,,...........,,,. ....  +ft!!!ttttfti;:;;;!!iiii;;;;;;!!it;;ifffiff. ,,,,:,,:::;;;;:!tfttf######t;;;;!!!!;,,,,....,:,,,,:::!!:,,:,,,:;:,,,,:;;;:;;!:: +L!;;;;;;;;;::,::::;i;;!!;;;;!!ii!;!it;;;!i!;, .tt,... .,,;;. ,:!i!f80:,::::;!!;;;;:;;:!!;!!itt!:;;,,;;:;;;;::::!t;!i!tLL! +fii;;!;::;;:;:;i!::!!!!!!!ii!ii!;:::,,:!;LG8!. :::,,,,.,::;:,..,,,. ,;:;;;,,,,,,,,::::::::,,,:::::,.......,,.......,,,.,,,::. +ftttt!;!ittiii!!!;;!tt;:;;:;::::,:;iff;,;fCLftiiiLiiiitGitfC@CCLtLtGi!tttii!!iitiii!!;::,::::::,:,....,,..... .. . +!::::,,,:;;:::,,,,,::::,,,,,...,,i###@!:!##@@###@88888@@@88@##@@@8#8CC8888888888@@@8fti;,:;;:;;:::,,,:::::;;:...... . +!:,,.....:;:,,...,.,::,,:,..,,:,,!0Cti;:8C!!iLi!!!!!!!!!!!!!!t!!ifft08fii!!itt!!iiti;!;;i::i;:;!;!;:::::::::,::;;::.. ., . +!,,,..,,,,,,,,,,,,,::,::;:;;;t;,,:::::;;!!:.. .Ct:8@ff. . ... ..:tC,..,,::!t;!:,:,::,::::::,:;,,,,......., +!,.,,,,,,,,,:,:;;:;:,.:Ctiffffti:,,;:,,:;:tf;. .:;,,:;;!. ,,:;!:,,.:,. ;,,,,,,:;:::,,,,,:::,,;!i!;,,.:;,, +;,..,,,::,,:;:,;:,::::;;;;;ttttt!:.....,..:0ti!!!;;, :C! .::, .: .!itii, .,:;!::::;;::;:::::;:::;;::;:,,,:; +;,,,,,,,,.,,:,,.,;:!tft:!:,,,,:::,,,,,,,.,!ftC8####0, ,,. .,, .LG; .,!ti. .,ittt!;;::::::!;;!!;:,,:,,,,,...,: +;:;;;:::,,::,...,!::;;::;:,,,,,:,:;:;!i!;,@#########, !C: .,:, . .....:,,f;:::;!!i!:::::;;;:::,,,,,,,:::::; +:::;;;:;;::::;,:!:.,::;;;;!!:!iii!ii!!!!!;:;00:;!;. ,: !i ,!, .,;!tfttftiiitt!!iii!!!ii!! ;;iL,,,;;;ffLLLf;:.;, . ..tt,GL :,: !:iL; ,..,,. .,, . . ..:i!.;::,,:,,,. ,;i;;;,,f;.,, :,,:::,it;:::.,..,::,,:,,,; +!:!!.i@Gt!t;!i:,,::,.. ,Lf!@!,,i::fC:.. ,.,;:;:.,LiC;,;:..,. .:tf!, ,i,:;!;;!iCLttti:...,.. . .::,:::;:::! +iiffttfCfi;tftt:;ft:;, . .;;:iLt#!;:!@@!, ,. .. . ,t,:080:,,f0t,.; .,::;!;;;:,,:;;fGCit!:::,,,. . ..,...,iLLttL +LC8##0;fLtCfitii:t:,.. , .0G:.,f#@::0G;, .... ,, .. .:i!.,Cftt..,;C!:,,:ff!:;!tt!;,,:!!!!;:,.. .... .. ,:!Lfti!i +;t#@i:!;,t8C!:,,,., .t#t. ,C@!i!:.. .. .. ;0f.,,,,.,!.,:i0L;tt:::::,:,,..,C!!Gi:;:;:,,,,. . .,,.:,.,. :LCi;:,LL +Li!:,,;!.;:!!;, ;##!..:tt,.,.., .... , ., ,;:.,!,.:;:;i@G;!tf;,,,:,,,...,:i!tG!:::::,,,,,,,::,.,...,,:;fi;,,:;! +ti!;tLf;,tf:L!.. ., .it@#!:f!,,,......,,,,......,::::;!,,,.,GG:!##!,;8L:;!i!;::!;:;!,!::;;;;;;;;;.,,::,,,,,.,:;!i!!;:,,:! +LGfLfft;,if;,,!;,.. .t;i#@t:,:,,,... ,.:.,.:i:,ifLfLiifL:..:!ii##i,,C#C;::;;;::::::,,:,:,,,,,,,,,.........,,;t!;ttLL;;!!i +fG0CCti!. ., . ::!!:;;:..........,,,. ;0ittiit!:;;t!.,!!t#@!, :@C;:!!!tt!!:;i:.,,,;. .,,,,,,,.,,,,,,:tf;!tf!;;;ifCC +!;;;;:,,,. .:;:.. .. ,Gt0:,,::,,::,:,,,:!;,. ;0i!;,;t:,,,:i.,i##tt!, !@f:;;;!;!;::::::,,t:,. .:;!!:,.::!!;:!ff!;iCt;,,!t!!i +,;;!;;;;;:,,f88;!G;. .:#C;,;,.,;::,,,,,,,,..,;f!,,,:i;:;:!!.:##!;0@i;t@L;iii!!!!::,,,!!,;!;,.,..,,. .,,::,:::::;;:;,,;fi;f +tCGGCCLiiii;i8LL80C:. ..:, .!0; .. ..,,,...,.:. ..:G;,:,;!;::;t, ;G!::!@#LC8i::,,,,,:i:..:i:;!;,,,,,:;, ..:!, ,:,,;;!!,,tL!!t +itiiii!!;!;:;Lfi!;!t! ;Ci::;;:,,,,,...... ,:i!!!tfLt!!!;,.i;;;,,G#fi;:i,..,:;;i;:i,,iC0t,,:!CCi;,,,;:,,:;;;::iiL0f,,;!ifL +ft;!iiti!!;;;!G;.:,:, tGLffLCt:,...,.. ...,;itffCft!:tC,:Li;,;ii!t;:;:ift;CGt;!L:,,;tf;,:iCt;:,;!i;,.,:,!!,:t!fL!::!fCff +i!!i!!ii!;itt!;,,. :. :ftf!::,. ..,,,,;::;:,:::::,,,,,,:,,ti:.:8f;;!:;;f0Ci!iiii!,.:,,,..,::,,,,,;;:::,.,:;:!;;;:;ft:;;;t +,:;;;::,,,:;;t!i:. ,,,;,. :t;L:. .,,,,!itifti!::,.. :;::!t:,,..::::iG#fLL:.::::,.,::::::;;;::::,,:!t!;iiiti;::!itf!:i:;!!!;::f +!if!;i, ...;;:iLfi.... ,;. :C;;L, .tf;;!t!;:::,,,,,,::;;Li,;. . ,!ff@@if!:,,,.,..,;!;!itfCLttii!;;!t!!;:;!;LC;:;!!!:,:!:!Lt!!i +tfi:,,. ..,,,,:;!!;i8t:. ,t,,!, ;t!:::,,,,.,,.!!80t!!;:. .,:;;!iii!::,i!;!!;;;;:::::;;;:::::,,,:::,.!!!t0!:!!,,,.,!::::::; +!!!::,::;;!!!iiLG08####f:. ,. .:;;:,;ti::...f##0G80LL!. :80LG;:ti:;;;;!;;;;;:,.,::,.,,,,,,,,,,:;!,,::,;!!,;;:,,;;;;;:;!i; +CffLLLLL088@#@####@808###t:, ,,,: .:;:;;:;;i,:80LfCGG@@8t;L#0Cf!;t:,LCfLLi;:::,,,iCL:.::;:;!!;::!;,...:,,,::!;:,;ff;i;::fGL +80GCG00888G00000GCLLCC@#0##G, i0f;,,,;:,,:;:,,,:::fGCLtiiiittLCGGGG@@0t::!tft;:,::.,,i;;i!:..,.,;,..,,. ..,.!!i;:;!!!:,..;!: +0fiiiiiii!!;;!!!!!itffG#8f##f;:!80!ittfi:::,,:....:!!:iffi;!!!ii!itfC@#C!;:,,.....,,:,,,,,,,,..,,,,:,:::;:::,,...,....;if!,,,,,. +C!;:::::;;;:::::;;;!!!iiiiG#@t:,:i!::;:::... ., ,..,,;Gfi!tfti!;;ittL8@;,.,,:;::!t!:;!!;;i!;;;!ititifGCCLCfi:, .,:!;;;:;; +Ct;!i;;;;;;;;;!i;;!itii;:!!!!:,: .;. ,t,,i,,:.,. .;;;:;!tiiiiiitCttfG;,.:i!ii;:::,:;:;:,:,,,;::::;;;;;;!;;:.,,,.,........,, +Lt!!ifi!;;!!i!;!!;;!ii;:;;!i!!. ..;. ,t!!f::;.,;!:. .:,:::,,::iti!!t80tLC;.,::,,.... ... .. . .,,:::,:;;;::,:,...  +t;!;;i!!!!!i!;i!;;!!:,:itfCLi!:,..;, ,Ct:!:,,:G8C:,;,.,,....,,,:!iiif8Ct@t::,,.....,,.,. . ,;!;;;,,.,,.....::;;,.  +f;:itffitLCf!;:;;:;:,:;!;!!!!;if:.:;. .,:,,,..,:iLC!::.:::,,::, .,,.,;:;8#i:,:,.,,:::;;;:..,, ,. .,,::,. ...... +t!!!!ii;;;;;::,..,,:!;:::::,!i!tt,,t, . .::,, .,!f;:::fC!:,. ,::i##;::;::::::::::;;;:,,....,, ..:;:. ..,,,,,,.  +;:,,,,,,,,,,,,...,,:;::::::;;::;f,.;. ,:...,. ,, ..,;i:iC00L!:,. : .;!tt,!ii!;;;::::;:::,:;;;::,,,,,,,,,,,,,:!!itiii!:,,.  +;,.,,,.,,:::,,,.,::::;;:;:;ii::!i: . :. ... .::,!f0#@80Li!!,,:!iLLLfii!;;;it!:::::,::::;!!!;;:;:;;::,,;;:::;;;;;ittt!, +;,.,,.,,:,.::;;;;tt:,,,,,,::!t;;i; . .., : ,:!f;,,!L@###8Gt:,8########f,.;::!!;;!;::::::;;::,,,,,,:;,,::;!;;;;:,::;!i! +;:,:::::,. ,Lffttitit;:,,..,,;i:,;..:, ,:;, . , .L8Gf, .,;!!!!;;::;tfffttfi: ,,.:;;:::;;;;::,,,,,.,,:,,,..,:::,,,:,,,,,,,,, +!!:::!;:...,;;;;;!iLffi;,....,,,..: :G@t, .,;!!:,,,,,,,,:,,,,. . ,. :!fi!;;;;:::;:,,::,,:::,,,,,:,,:,,,,,..,,.., +:,:,,,,,,::!!;,;;::::::,::,,,,,,.:;iii, ,iCCftiiii!iftifiifG0fCCt0f0ftLfCtCi!;;;!!ii!i!;;f0iift!;!;:!;::;;,,,::,:,,;;;:;:,,,..., +:,,:,,..!i!fti:,;,,,,,,:,,:,:;::,!###8,.!##@@######@888888@#@@@@@@#@@@@###@@8888888@0Gt,:tCGfttLftii!!!;;;;;:::,,::::::,,:;;:,,: +::.,.,,.:;::::,,,,;!;,;!;:::::::,:0f!;,.8@i!!!!!!!!!!!!!!!!!!!!!!!!!!!!it!!!!ii!!!!!;!:. .,::,:;!!tLfLt!i!:;;:;:,,,,:::,,,;:::;; +:,..,,. .,,;;,:;;:,::,:t!i!::!!:,:,, . .::,. ..,,,. :,.,, . : .,,. .,:::::::::::,,,,..,,,:,,,,,,,: +::,:::..,::!:;;,,.,,,,,:;;::;;!;,:::, .::: ,!;CL;,,,.,,. ,,. ,,,.ti .. ,, ,CCi;:,. ,,:ifti;:,,,::,,;,,,..:,: +;:,;:,..:t:,:,,...:i!,.,;;,,,,,,,:,,,. ;::.....:tCtLG8GL#f. .ff. ,L:.,, ,;;,;ti, .., .:f@#80L!:,...:fCfGC!;!:,:::!;,.,,,::: +!:,,,.,.:i::;,.:,.,:,,.,;:,,,,,,,,,,,::,.. .@#########, .::. ,:, .L0f;;ff::: .i!:,..,!@##@0tf!!::;:::;;it::!::::,,:,,:,: +!;;:,,,,:i;:!:,,,,,,,:::,::!;;!;:::!;!i;,,.. .:;ii;!iti,. .iLitii!;;!..iGf!ti:::iffttLCiiC!,.. .,,,!t;:i;:!;,,:,: +;;;;;;;;:!i;;;!!!;;:;;;::!tfLLffLLftfLftft!!!;:,,,. .:,,. .:!ititti;, :L8GLffi, iCCCCffCfifi;::. .:;!i!!i!;;!;; tfi;!t;!t!; ,,.... .if,.Gi.::!, ,!t,ft:. ...... ., .. . .:,..,. .;!!, :: :,,.,:;!!ii!;:,::,,.,:::::;;;i!ttfftfff!! +f0CCL!!ii;,:!i,, . .,:,:G!!@!:!::;iL0:... ..,:!;!Li,.:...,,;!::;;::;,iC0GLL!,..... .. ......,!CCt!tii;:::;tt +tiLttLf!tfi:fi:,, .,,..0G,.,Lft@!:fLf00;, ,,..,..,,..,. .!i.:G888!,,,:ift;:;LLfLi:;;;;!;;,.. .,.....,:!Lt!!iitii!!;;!! +L;!tL8i;::::!, .i#i. .,t@G;iLL!:, .... .. ,,, ::!G: ,ifiL8f;tCLi!;!;:;::,;G!:!,;;::::....,,.,:,::.,fGt;,,LG0000fL!!i + ,f,:!!;:. :##!. ,!C!,:,... . . .:C8i::,,,.,!Lt;;;:,:::,,:,.;C!Gi::;:::,:,:::,.,,,,,:;!!;,,:;!!!ii!;;!f +:;t:::,!!. :f##!. ,!i, ,..,..,... .,:;;!!;!!ti::!,!,,:;;,,:;;::!!;!ti::!!,;!!!ii;::::,,:,:,,:!i!!!;;,,::,:;,,:!tL +L0t;;0;:!,. ,. .. t;f##i;f!,........,,,,.,,:;iLG00Gf;:;!L,.,:tLiC;,,:;::::::;:,.,:, .,::::,,......,.,:t!;!tLL!;!!ii!::;;;!f +;;;.,::,.:;,. .,!L!8#8!,,,... .,.:.:...:C!!;;!!!;;:;C8i: :0tt!:;;;it!!;;ti,..,!. .:;;:::..,:,,,:!C!;!Ci!;:!tLCGi;!tiiiL +,,;:,.,:,. :Gt8!;t!;,,,,,,,,,:::,,, ;0i;::::,,,:;@@!:, ;;CC;:;;!;;;::;;ii!;!::,..,;!;,,.,:!;:;ffi!;ftii;;iiiti!;ff!;!i +;:G0!!tCL:::, ,t#8i:tLii!!!!!!!!!!i;,;,;Li!;iti;;,,:;!t@; ,i8G!!it!;!!:,,,;;::i::;:, .,,. .,,::,:::,:;:::::!L!ft::;::;;f +t!t@L!tf8fiGi.. .,.,t@!,:::,,,,::::::::,,:,:Lt:::::,,,,:;L#8: :C@f:,,,,,,,;i. .:,;i:,,,::;i, .::;!,.:,,;;!f;,!f!!i!;;::::;C +f!;i0!!ittt;;!;: .... ,f!. .,....,:::;:::...,:i!;;:::::!;!@#i:..i0i:;:,,,;t;;!;:,!L!!L:,;iCL;:,,:!;,,:;!;:;itCG:.:!itftCt;!!;fC +t;:;ff!CLf,.,;t: . ,tt;:;!!;:,,.,,,,,,, ,::tffLLLtti!t##i:. ,GL;!:;LLif0f!;ff!:,!C!:!!;!;,.,;;,..:.,;,,!!;t!:::tLL;!f!::!fff +tti:;L!iC:.i:.,, ,LLCftLt;,.....:,....,,:iLti!;;!!t8C;::, :!t!:;!CCt;;!!!!;:, ,:,..,,;:,::;:,,:,.,::;!;;::it;;!:;!i!;:;ftt +;;;;:iC!;:.,. .;,... :!if;,,,,..,.,,..,.;:,,:!:,,,...,,,.,,,.,GCf,.::,, ,::::::;;;:::,,:!ffit!;!i!::;!ffi:i;!!;ii:;GLCL:;;;! +:,::,;tiff:.. ...:;:. ,t;C;. ::::.:,,,,::;;!!;::::!!;!:::tii;.,f0i:.......,!!!tttLCfti!;::;!;;:::;;L0;:!!!!:.:i;it;!!;;!;;;!t! +::i:,,,,::!Gt!!!:. ,. :L;:C,.,,,...!t!;!ti::::!ttG#@00Ci!tt:. .!!ti::!;::;!:::;;;;;;:::,,,,,,:,.:;!tC;;i!,,,:;!;;::::,.:!t!ft; +!;;!!!iitL0######f, ,!,,;, ,.., !t!;;;::,.;###808L!::,,, ..::;,,;;;::;:,;;;i:,,,,::,,:;;;,,::,::;:!!;.:tt:i;:;iti!:!iL!;t +GC88@@####@88@08###t, ...;. .:;:::,;t:!#8ti!;;;!tif;::;,.tt..,,:,,:;;:;;;;::!!!tt;,:!!. ,,,,,:!;:,:;:,,,,:G00f;;fL::! +@888008800CCCC08C###8!.. ,f!;! , :..,::::;;:;;;!!!!!fCC08000@fLCt;,:i;,;CCt;::,.,..,,,,. .,. ..;;;::;:,:,..:!i!;;;;:,,, +Gti!!!!i!iLL08@##t0#Cf8f::L88L;,:;i:,!,;!,:;;:,,,,:ifCCtttftfLGG8088G!;:,;tt!;,,,..,,,,..,,:,,::;;;;;:,,.. .:i!,:::!:::,:,::, +L!:::::::;!ittfffit#8f##0!:!L8Ltffii;,:,,, ,,,:,...:!!LLiiffiittttttf0G!;;:,,...:;;!ii;;;!ti!i!LCLLCGLt;. . .,,:::,;ii::,,it! +Ct!:;;!!::!!ii!i;!Gf;!fCi:;.,;t:,:;::,,,.. ,.,,. ,..;f;:;tifLLLtiffCG#@i:,. ,,,::::,,,,,,:,,::;;;;;;::,,:;:,,...,,. .,,,. .,;; +L!:;:;;!;;:!iii!;;!i!!!;:,.: ;, !t:!t:;,.:.:,:, ,,::,,:;!tLLftC8@808t: ...... .. ...,::,;!:,,,::;;;, .., +C;::::;!!;;:!ii::!iG8Gfft:... ,;. .:L!;i:!:,!.:.,;;: ..:,,,,,,:;::;;;!;tG;,.,:,,,. . . .::,.....,. ....,,,,,,.  +f!!it!ii!!!;:,,:i!;!iiii!!!!. ,t, ,C:.:..,:..,:G0f, ,..,,:!:... .!;8i:::,,::;:,,,,. , ...... ... . +LtLCf;::::;!;,:;:::,,,ittt!f; .i: .,,..... ;:;tLt:,:.;!;,..;;. .:i@i;;:::,::;;:,,:,,,,.. ..,;:,. .,:::::,,. . +i;;;:,,,...,:;;:,:;:,::;;:;it, :i. ,.,;::. , .,,.:if,:::tG!:,,,.. .. .;@L:!;::::::::,;!i!:,,::,,,:::,,,::!ttttfti;:,,...... +;,,::,,,..,,,,::::;;,:;:,,:;L: .:. ,:,,,..,, ,,::i,!L88Ci;:,..i. .:::it:,;!;:::::::;;!;;;;:,,:;;!:;!:,:;;!;;;iitti;:::,,, +;,:;;:,..,,::::::,::::!i;:i;;!. :,,,.,,,, ., .,::,!f0###@Gtti:,i##8@#Lti;!!!!!:;;;:::::,,,,,,::,:::;;!!!;:::::::,,,,,., +;,,,,.::;!itfi;::,,,,,::ii:;::: , .... . ,. ,!Ci,.,;t0###@Gt:,@########;;;:::::::,,,,,,:::::,,.,;:,:;::,,.,:... .  +!;,,..:Lffttiitft!:....,,:;,,,: .:. .. ,;;, .i0Cf;. .:;!!!;;:::!iii!!!:;tt!!!;;;:;;,:!;::;;::,,,,,,!!;::,,,.... .:;: +!:,..,:!!;!;;!tti!:,,,,..,,,,,;!,.. . !08!. :. ,:;;:,,,,..,.,,,,,, . ., .,:iGfiLfi!!i;;!;;:::::::,:::;:,::;:,,,,,,:;!!; +;..,::tff!:i;,,:,,,,;:,,,:::::,it;;!i!, :tCCftiftLtiiiif!iiL0ttfiff0LtGCLtG!!;;ii;;;i!ititfLftttti!!!!!;;::,,,:::,,:;::;;;:,:::; +:, ,t;!i!;:,:,,;::::::,::,,:;:,,:G###8;,i##@##########@8888@@@8@8@#@@@@#@#@@88888888Lt:..,:;;;iitftfi:::,:,,...,,,,,::,,,,,,,,,: +::..:;:,:,,,,,;;;,:ti;;::,:::,:,.;@L!:,,0@ti!!!!!!!!!!!!!!!!!!!!!!!!iiii!!!!!!i!!!!!;,.:::, ..,,;;;!i!;:,,:,,,,::,,,.,,.,,::,: +,,. .:,!i::;::,,,.,!!;!!;;;;:,:,.,.. .::,. . ,,. ,,.i. .,,.. . ;G8Ci!;,. ,!!LLCCt;!;:;;,!;,,,.::..,,,:; +;;:..:;!::;,...,,,,,;;;::;;!!:::,:. ,..,. ,,!0t;!i!!i;,. .,. .::,,;t!,iLt:;: ,:: .:i@###G;::;::::!f!;t;:!;:::,,,,,,.,,,,:: +!:,..!i,,,,....:!;,.,!!:,,::::,,,,,,. .:,. .. .!0LC######8, :L: .Li ,C0f!!ft;;!,.tG!::,,:t8@0LfCCt;,..,..,,!f!:!::!;,:,,,:.,;: +;,,,,:i:,!,.,,.,,,,.,:::::;:::,,,::it;::::,. t#########8, .,. .,, ,t!;itititi;.:GG00f!:,:!LCLCftGt:t;,,:,:;;;i;:!!,:;,,:,.:: +;,,,:,;i:;:,,:,,,.,;:,,;itii!;!!!!iLLLCCttt:. ,:;!;;;;;;,. :,,;tt!ft;, .:C#8ttii;,,t0@0GGtiL!!GCitf;;t::::,::,:!;:,: +;;;;;;:i!;;;;!!;;:;;::,;itffffffftfti!!!;;;;;:::::,. ,,.. :;;:,:,:,,:: .CLLL0CfLi, ,tttttffttftiii;:;;;i!;!!;;i!::! it!:,i,. ... ,G: :f!fC:;iiii!!if!:;;:. ....... . ...,. :i!;;;!;;!::f;,L!;;;:::::,,:::;:!tffLttiiiiti!ttiitfLLLLCL +;:!.:; ,8#!. ,i!88;:;;!t00t,..,,....... .. .,,::;!Li,!::i::::,,:,,.....:i;t,.,,.... ...,:!;;;itCC!!!ii!;:;!!;!!!!!L +;, .!##f, :C#i:;itt;;,..,::,,,,:. ,:,,;ttLG!LC:.,fGCCtii!!tt,...,..!:,::::,,..,,,,,,;L!:!Lt;;:;!tLLC;;!ti!itf!!f +::. .;t8#G:. ,;t0:,,,.. . .,,,. ..,.....;C;;iC!;ii, :Ctti;;;;;!!;!!:,,:.::;;:,..::i;::ifi;;tCi;,,it!!i!;tCt;;;;f!;f +:f, . .L!i8##!:iti:,. .. ,:,,.,,,,:;:::,!!::8C;;Gf,..,,,.:i!,::;i!!;;::,:,..... .,:::,:::,:!::;;:;f;;!::;;;:::;!!;i +.;,:;.,. .,!G:t8#8Li:,.... , .,.;...:C;::,,;,:;:::i#Ci!:,;:, .,;;:.,,,:;:,,,:,:;:. ,,!;..:,,:;;!;,:tf;;:,,:,,::;LL;;f +,, .. ,CiG!,!ii!:,,,,,,,,,:::....!G!,,,:;,,;:;.;G@#!. .:. ,,,;C:,..,!Ct,:,!iCGf!,,,,,,,;;::;;!iC8i,:!!it!!!;;;::LCfiif +ii::;,. .;08G:;iiii;!;;;!!!!!i;.,;,iL!:i;;;:,::::!@#8C, :;:!0t!!tfi::tiif:;ift!;,;it!,...,i,,!itLf;::tfLi!Gf!;!;ti!;;ff +L8LfGG,. .;80;.,:::,,,,,::::;:,.,!,:tL!::;!::;!!!##t!;;;. i0Cfffi!ift!::ti,:i!:,;. ,;;:::..::::!;:::!t;;t!;;!!;;;ff;:,;!! +tif!;;!;:, . , .;0; .!, ...::;!;!,..,,,it,.:!!!!:;!##f!:iii. !i;:,::,::,,,,:,,:::,:;;;:i!!!;,,:;it!;;,:;;;;;,:t!!t:;f;:,.;Gf +i!,. .::f! . . ,!t;:;!!;;::,,,,,:,:,.:!:,,..,:::,:i##L8t;Lt: . .,,,,::;i,,;!!;:iLLti;:::tt!::;iti:;;!;tLi:;f;!;:!!;:,,;!; +i;: .i;,,,. .LCLLfCGL!,.. ,,,,,,.,,,,,;!;;!!!!f#f!L@i!Gi, .,..,:ii!!!;!ti,,:::;!;!;;,,;:!0f::;;:;,,!t;!;:!;,:::;ifi:!!fLt +:!i:,,. ::. .:LiL!!;::,..,,,,.:;,:fLff@8Ciiif#8tLfitCLC0: .!;:;;;:::,,,:::,,,,,,,,,!;.,,,!tt;;!:,,;!!!;:,:!;:,:iiit!;;tfff +08##0t;:,...,,,.. .!:;C: ::::,;:.,,,:i####@0Gff@#LitG;:ff;iC: ,,,,::,,,:;;:,:,::;;:;;;!;,,,:,::,:!i;,,fGiii;;iCGf:;iLi:tttfi!! +#######8L!::. ::. . :t;fC,.,,,,,,,.,;::fftiiii!!@#i;::,,.,,,;;: .::,.,::,tGGt,;!i!tf;.,;!. ,,,,:ii;,:!!;:,,,C8Ci!!if:,;itffif +#0CG8@###C##t, ,t::t; ,..,.,..::,,,,.,,:t!it!;:, !GG, .i;,....,:;;,,.,.,,,,..,,,.. .,,,.,!!t;,,:!i!:;;;::,.,,:;:; +8ttL0#####G##t:,, ,..:, . .. .,,,!tiii;;::::,.. ,::.,it, .;:,:,.:,:,...,,,,,,,;;;;!iti;;::,. .,:i;:;;!i!;:::!!::,,,:! +L!;iitffLfttG8f88i:, ,t;:!. ,, .,if!!it!;;;::!t!!;,.. .,,,,:::;!!,,;:;tiit:;i:;;iftttfLfi,...,,. ..,,,,:!i::.,!tii;;!i; +L;::;;;;;it!C@L0#@0f,,f0Cf!,,:;;:::,!i;;:::,,tff!!!ii!:;;;:. :ti!;;;,..,,;!;;;!;:,,,,.,,,,,::;;::,:;;;:,...,. ... ,:::,,;!,. +Li:;!iii!!;if!!!ii!ft!:;t00itffLt;:!;.,,::,,;iit!;;!iifG008Liiftti!;::, .:fGL!:::. . .,,,::,,,,,,,,:;!;,. .  +L!;;;;!!!i;;;iCCi!::t:.:,:!f::;;;::,:...,:;:::::::!fCLCGCC8#@@8880f!Lt, :tti!:,, . . .,::.... . .,,..,,. .  +fi!;;;;ii:,iCLGGf;:::; : :, ;i:;t;;:.,.:!;:,,,,:!!itLttLii!;!f!!i0L,,;::,. .,..,,. , ...... , .. ...... +Lt!;!;;:,,:i;!!!;;:;!!::,. .!. .,it!i;;;,;..,::....,:;!!iC: .;,,,,::;;;;,..,.,:,;;;,,:,,,.. .,:;,,. .,::::,,,. .:::,, +t;;::;,,,;;,:,:;::itiittf, !; .iL,.,.:,. ..,.. ..;fitC, .:;;;;!i:,:i,,::;;:;:::,:;!!!:,,:,,,,,:,,,:,:iiiitti;:,,.... .,,,,., +!,,,:,.,:;:,,,::::;;::;!Lt, ,t, ,,, . .;.,,,, .,;L;.........,,,.:,!0!ii;;::::::;;!!;;;::,:;;;;!:,,:;;;:;!iit!;;::,:,;;;.., +!:,,..,,,,,,,::;:;!;,,,;!G! .!; ,.,,., : ,..LLi,..,,,.,!!:,,,,,,:::,!#f!tfi!!!;:;;::;::,,,,,,:::::::;!!;,,,::::,,....;,.,,., +!::,..,,:;;;!:::,:;;!::;;!f, .: ,:,....,, .:CCt,;;,!;:,;!!!;!!iiLL,:0#i;:;;;;;;;!:,,,,,,::,,,.,:;,::;:,,.,:.. .,,. .:; +:,.::;!itLi:::,,.,,::!;::::; . ,:,,.. ., ...,:!t,,,!GG!:::;::::;;:::i##:.!!;:;:::;;,,;;::;;,,,,,:,;i!;:,,,,... .:!!:,,,,,: +;..:fLLfftiitti:,...,,,:,.,,, ,. .,........ ,,,,,.,:f8@Ct!;:,.,: ,:;!i: ,;i0tift!!!;;!;;;:::::::::;;:::!;:,,,,,:!!:,,,:,,: +::.,:;;;;:;iftt!:,.,,.,,,,,,!,..: ,,..:::: .,:i!it;;!!::iC####8Lif;,:fLLLCLt!;f88CftLLftitt!!i!!!;;::,:;:,,:!;;;;:,,:,,,,::::; +:,::!!!;:!;:::,:,,;:,,,:;:::,!i:,. .,,,. .;itfiitt;08i:,:!f8##@0f!,f########:,:;:::;i!tffLtff;;:::::,,,,,:,::::,,,:,,.,,,,:;; +,,tt!fti:,;,,::,:;:::,::,,;:,::tt,. .;!::::,,:;fCf;;fft!, ,:!!!!;;,,;itti!;:;. ,:,. .,,::;;;!t!;;::,,;,:;::,.:,.,,::,,,,,,,: +:,,;;:::,.,,,;;:,:fi;;:::;:,,;,,;t:. .,.:L0:,,;t!:,...,,,..... ,::.:;;,.,,, !: !GL!!!:, .!;fCLGt;!;:!:!!:,,,:,..,,:,;::::,: +:. .!,,i:,;;:,,,.,;!!!;;!;;:::,..:;!i!. ,iLLff0Cftiiiiii!iitLiiii0tLf##CCLC!!;!!i!!!!!8@##f;::::::!f!!t:!!;::::::;,,:,,;:::,,:,; +;:..,:!!,;;,...,,,.,;;;::;;;:::,.;###8,.!##@####@@#@######8@@888@@#@#0@#@#@0888888@0;:;t##8fCCt;:,,,.,,,;i;!!;i;:!:,:,,;;,;,.:,, +!,,..i!,,,,....:!:,.,i!::::::::,.:GL!:..08i!!!!iiiii!!!!!!!!!!!!!!!!;;;ifffftti!iLCL!:,,:!LCCCtCC;ti::::;;;i!:!;:;;,:,,,,.,,.::, +!,,:,,;;,;:,,,,,,,..,,::;!!;!;;;;!!i!!!!;:. .ittffftf;. ,; :, .,,;ititi, :08!!f!:,,!00CCfifi!Gf!Cf:i;:!!;!;;;:,.,....,,, +!:..,,,i;:;,.::,...;:,.,iLLftiffLtCGLLCf;, ,#########, .!! . ;i!,,::;:,:;.:8f!f0tf!,,;;it;!t;!t!!!:,.,,ifLLftti;;!!,,::;; +!:,,,::,ii:,,,:::,,:,...:;!iiiii!;;!;!;;;::,,,,.,;!t!!iti:. .. ,;;:,,;i;!LLi,:i;!!it;:i, .,,;;;;i;;;,.,.,:;;;;::!i!ii!;;!;! +!;!;,,,.,t;..,,,:,,...,...,.,,,,,,,,,:;:!iiitfti!:,,.. .:;:;ffi!t;;f!!i, ,!::!;;i!::: ,:;!;,:;,,;;,:,.,,.,,:,;!itii!; +;::,,,,..,:,:!i:::,...,:!;,,,::;!i!!!i!;;;itt!itttti;:, ;tt;:tiiLi:;;::!, .!:;!::!;:!;,...,::,,:,:i:,;;,,i:,!,.,ff;:,,, +,:,,,,,. .!tftfLLi;::;!!!;!!ii!!ttitttii!!!;:::,,::,:,... .,,.,,,,. .,;ii!;!::, ,;;;!!;;!;;!;:,.,;!!:;!;:;;:;!:,;:,,;,.,,,, iLL!ii:,;i. .,. tf it!G!.:iiii!f!:!:,. ..... .. ,:.,,, .,.;ifiti!;,!:;:,tf,;;,:::;:,::::,:,,,,,,:iitiii!!i!::!tLff +fCi!;:t.,, ;@t,..!tL@!::;iL8C:...,........... ,,,.,:::!!fCi:,,..,...:ii;,i:;Gi;;;!!::;;:,..,,:,:CL!fiii!:;!i:!t;;!i +!fCL:, . ,0#0:. ,t#G::iti;:,.,::::,,::,..,:,:;;;ff! .iiC8C!!;,,,,,,.,,::,.,,i:,:,::::,,,,,.....,:i!!!iiff;:;iii!;:!it + :::;, ,i0#8: ,!0!,,,. ...,,,...... .,.;GGf8Cf;...:Lii!,;;!!!;;;;ii:,,:::. .:;ii;;::::;,,,:!C!;!Cf!;;:iiCG0i!!ttL +.:,,;. ,GiG##;:!i;:..,.....,,,:,..,,:;;;::;!!G@0t::::,..:;:;!;;;::;;!ittt!,.,.,,:::,..,,;;:!tti;:iL!ii;itiitt!;Lf!f +;i0;. .;,.,. :C;!@#8ft;,.:,,.,..,,;,:.;f;iiffft;,,:;i!:fG0i,,,;!ii!;;!,,,,;;:;:,.;:: ... .,,::,:::,,:::::;!ftfCt::;:;f +,;;:. .. i;!L:;i!!::,,,,,,,,:::,,..t0i:::;::,:,,;,,:;;;;iG!::,,,,,:i; .,,,;i:.,,::;!;. .::!!,.;,,;;!i;.;ft!ii!:::,;f +L0!;i!:,::. ,CL8;.;;;i;;;;;!!!!!ft:,;,!G!::::;,,;::::!@t .!G!:i. .;!;i!::,!iCG:,,:iCGt;:,,;;,,::;;::!!tC0;.:!iiftft:;!;t +i00tG8CtGG, .,G8!..:,,,,,,,,,::;;;,,;,;ti!ti;;;!ii!;!##!, ff:::!ii!CGt;!Lfi;tt!::;!!t;:,,;!;,.:..,!,,i!tfi;::fCC!!Ct;;;iC +iiCttfCC!:;::. .., :Gt, :, ....,:;;i;..,,;0C;!:,:iLLi;i#tiC, ;;:;!C0Gfitttiiiii!:;;:,,,,:,.,:;:::,..::;;;;;::tL;;i!;!ii;:;fC +i;!0!!!;,.,;t: ..,;L;,:;!;:::,,.,,,,,, ,;;tt!,..,::;!C#i;iC: :L:,!;;:,,.,,:::;:,;,,,,,,:fi;;ititi!::;iff!;i::!!!;:,iCfLL:;i! +!:;tt!L:.i;,,, .fGLffLGCi,.....,,,,..,,,,:;:::,:;i##t;!00,.;!, . .,::;iti,,::!!!;;;t!!!;;!!fC;:;!!!;,:!iiCf!;!!;;:;!!; +f:,,,::,.,. .;, :fiL!;;::,..,.,,.,:,;ttttG0888CL##CLG8LC;.,Cf;..,,,,,:;:::;::;;,:;;::,,:::,.!!!iG!:!!:,,.,t;;;::,,.,,;;tCi +;::;;!iLCt!:,...,,.. .;:;L, ,:::,;:.,..,;0########@##ffCCCLf. :fCi,:;;!i;:,.,,,.,:,,.,,,,,,:;!,,:,,!!!,!!:,:;!;;::;it!;,:ii!!! +CCG08@######G!,. .;, . :i:Lf..,,,,,,,.....iCfL080ftii!:,,,::;:, ,!t:..::::,,,,:it;,:,,,:;!;;:!;,...,,,::;!;:,!Lf;i;;;G80t:;tC:,t +@@00088808@####ti:, ,t,:f: ,.,, ....:::;;;:;!;::;;:::,..;iC: ,fi,.,;i;.,:,;ttCL;;::,;i:..,:. .,,,!ii::;!!;,,.:ft;;!!!!::; +0LfLLLfttfC0@#####;. ..,;, . ,:!::!iii!::;!!:!tCGLfi:,:iC: :L!,,:;::,,,,::;!;:,,.,,,,,,,,,,:,,,.. ..,,..:!tf:,,::;,:;::::,. +f!;;;!;;;iitfL0Gf0#f!;,..t;:!. :f;::!;::,,,L0i!!itCLi;:,.,...::::::::;;;,;!;tfi!!;:;:;;i!!!iLffifi:,. ,:;!;!;!tt!:;:;t!: +Li::::::;;;!;!!iif##88C,,t0Lf;,,:::;!::,,,:!,:!i!!!!fti!it!,.,:iii!!!:,,.,,:!!!!!!!;;:::,;!::::!!;!ii!;,.,:,.. ..,..,:!;,,,:ii! +L!:;:;!;;iitti!;;Li!!i!;!:;L8Gittft!.,;::;!!;:;:iiCG;:::;;!!!iLf!;;;;:::,,!LCt!;:,.. ......, . .,,::::,:!!::,,,.... ,::: +L!::!;;!;;;!!!i;;!iti;:;;.:,;fi::;;:,.,;;:::::::;fG;,,L!,f::i::iti;:if,.,!ffi;:,,. .. .,;;;;:,,,,....,:;;:,. . +f;:;;;;!;;;!ii,:iLC0Gt!;, : ,;. .i:,i!,,:::,...!G!.,:;,,,::,. ,,;C;!!:,!;::,...:;:. .. , .,,,,. . .......  +f!!tt!i!!i;;:,,:i!!i!!;;i::,. !, .;t;i!,,.,.. .iG:..... .....,;,,,!08:,,.,..,,,,,,:,,:;,. ,, ... ..... .. . +LffLti;::,,,,,;;,,,:::iftfft. ,i. :C:,:. ,,. ,,,,:;;::;;;,:t,,,,!8@;,:,,::::,,,,::::,:;,,,,,......,....,,:!;:;:,,. , +!;;::,,.....,;::,,::,:;;;;!fi..i: .,,... ,!!;. ,,...,,,,.,i:,:i!!ff!GCt:;;;;;:,:::,::::!!!;::;;,,,,,,:,,,,;!!!!iti;,,......., +:,,,,,,,..,,:,,:::;;,:!:,,:!C:.,i. , .:,, ,i0G;:!;;,. ::::;:;:;;!ifii##!t!i!iii;;;::::;;;;;:::,,,,:;;:;:,,,:::::;!!tt!;::::::: +:,,:::,,..,:i;::::::,:;i;:!!!i .:. .:,,,...,,;iCt;;fC;.,itt;;!t!;if;:i#@!!t:::!;!!!i!;!!;::::,,,,.,,,,:::,,,:;:,,,,:::,,....,;. +:,,,,..;;;iitf;:::,,,,,:!!::;:. . ,:,,.. .: .,;;;!08i;:::;:::!:::,,t0#t,.. :,,;;::;;:::,,,,,,:::,,..,:;,,:::,,.,:,. ..,,. +!:;,. .;LffttiitLt!,,..,,:::,,: ,. .,.....,., .::i8#8ti!:,,:,. ::::t#8. ..:!!!!!;;::;,,;i::;;,,,:,:,,;!!;;,,,,.... .,!!;:: +;!:,...:;!;;;;!tit!:,,,,.,,,,,,;.,: .. ,:;:. .::;:;i0####8ttt,,;ffftfLt;. ::,,,;t8ftLti!i!!!!;;::::::::;;;;:,:!;:,,,,::;!;::: +:,,..::itf!:i;,,,,:,,;:,,,::::,;t:,. ... ,;fL;CL:;iC@#@0Li,;#########, .i! .;fCfttLCfffffi!t!!i;!:,::;;:,,:;:;;;:,,:,,,,; +;....!t;ti!:,:,,:;;;:;:,,::,:;,,:tt,. ...,;;:.,:::;;tf!..,:;!;;:,,!fffttfCL:,::... .,,,,:;;!!!ftti;::::::,,,,:;,,::,,:,,,,,.,,; +:..:.,;::,:,,,,:;;,,it;;:::::,,:,,!; .;!,i08;!:!. .,. ..,,,..,,,,.,,:,,iC; ;. :;;:. ...,:;!!f!!;:::,;,:!:,:,.,.,,,:,,,,: +,,,,. .:,i;::;;:,,..:i;!!;;;;:::.,:it!:.:iCLLffiii!iiiii!iiiitGt!ff##LCC@0L!iti;;!i;::G88t!!;, ,itGLCCi;i;:!:!i:,:,::,,,,:,:;:: +:,:::..:;!::;,,..:,:.,;;;::;;;::,;###8,.!##@#@@#@#############@@8@####@8@@@@888888@@fi;i0###8!::;:;;;;!:it:!!:;:::::;,,:,,;:,::, +;:::,,.:t,,,,....:!:,.,!!:::,::,,:Lfi;:.00i!!iffLCCLCfi!!!!!!!!!!!!!!!;i!itffttt!iCfi!;::iC0CffGtii:.,. ,,,!!;i;:i;:!:,;,.:;,::, +!,,,.,,,;!,!:,,,,,,,..,,:;;!;;;::;;;!Liii!:, ,Lf@#####: .:, .,,. .,,,;i!tii; ,!C0fii,,:tLLCtfG!if:::::;;;t;:!:,!;,:,.,,.,:: +!::,.,:,,i;::,,::,..,;:.,!fLffitffLfGLLGCti! :########; :L! .tf..,:t!::;i!:!:,. !00tttii,.;G0LLfiti;LL!fC!!i::!!;;;::;:....,, +;:::,,::::f;,,,,:;:,::,..,:!ttittt;;;;;;!;;:,,:;!;;;;:, .,, ,,.:ifi!,,,,:::,:i;.tG!;CGit;,,:;i!:;t:!t!!i;:,,:;ffLftit;::!:,:! +!;::!:,,,,!i,.,,,,,,,......,,,,,:,,,,,,,,;i!!;;:,,..,::. ,;!;;:;;:ifi!tff,,;::;!i!:;!. .,,;::;i;:;,.,..,:;;;:;;i!!ii;;! +;,,,,,.,,.,:::!i::;:...,:!;,,,:,;!!!!!!!;:;ittttfi!i!::. :ifi!Cfitt;!f!!!, .!::!;:!i::;, .:::;:::;,:;;:,,....,,:::!;!ii +:,::,,,...,!tfffCf!:::;;!;;!!ii!ittitttii;!!;;::::::,. . . .,::,.,,,:!!!!;;!, ::;!!!ii!!!:,. :;;:!;::!:,;;::!;:;;,:!tti; Lt!;ft;!:,:!,, ., :i ,f;CL;:,!i!it:;;,,...... .. :,.,. ;; .,!t!!itf!:,. ,i, ,. ....,:,:::.,,:,:;;itLfttiiii!it +LCtti;!!t;., :@!. ,ft@i:;!!L8C:............... .. ..,,:;::;,;CftCGf!!;,,,,,;!:LL!0L:;;;;;;,.,,:.,....,:;;;!!!;;:::,:;i +,iitLL!:,. ,8#i. !@@;:!ff;:,.:,:::,.,:,..::..,,:;L, iL0CCGt!fi;;;:,,.. .!!:;ttf;:::,:;,.,,,. ....:Lf;!iift;!;;:ift +!,.::;;: ,i##!. .;Lf,:,,. ............,::::tfLf0f, ,;L!f@;:;:i:,!;::..::,. ,!,...,,,::,.,,,,....,:f!!!tii!;:;t!ti!i +!!.:,,, ,Ct@#t:::i;,.,......,.,,,.. .;tf!ifi;f8i,,,::.,;!;::,:::;::::;i:,,,:,,..,;!i;::,::!;:,:iL!;!CL!;::!!ifCttL +!:;iG; :,.:. ,C!i##Cft:.,:,,,,.,,::,;:f;:!!!!!!;:,;:,,:fC,.,!0f:;::;:;;::;;;iii!,!;,...,,:,..,,,:,:ti!;:!t;it;;!!!ii!;L +:!;!;:. .:. ;:!t:ii;:,,..,,,,,,,::,,.;G0!it:!tti:,,,...:;;!0G8i::;;,,,:::,,:,::,,;;;, .,,. .,:,,,:,,,::;;::;titCt:;t +LGGt!;;::,,,,. ,Ct0;.,..:,::::::::;fi:,::C0!i!::;;:,,:,i:. :8#fCC:,....,,,ti. .::t::,,,:;iff,..,,:::!,,;:,;!tCt,;t;!iii;;t +iii;i8LC0ii8G, .:80!.:;..,:::,,,,,:;:,,;:!!!i!i!!!;:;;;t8: !##0!::;::::fL!;;!;:iGt;L:,;!Cf;::::!!,,:,:i::!itLG;.:!!iftLLif +fi!!!i8ttL8Lf;,. .., .;0;.... ...,.. ,,!:.,:,;0i!fti!!itf;!#8: ;ti;:!;;LGCtLLt;;tti!;!f;:ii!;::..,:,.,:..,:,,i;;i;:::iLL;!fi!t +!;iti;tC!;;:,;t; ,;t:.,:;:,,:::,..,,,. ,,iLtftti;!!!!L#t;, ;L;:!:;iLLi;:;;;;:::.:i;,,,:::::::::,,:,,.;:;!!;::,!t::!:;!ii!t +:,:!;;;G!. ,;::, .fLtiifGL!,,,...,,,,....,::::,,.,:!@#!;f..t8iLf,.;,,. .,::::,,:::,,.:ftiLLit!:!ii::;!tLt!!!;!!!!;,;GCGCt +:..!i,;:; .. .:. ;LtL;:;;:,....,,,,,,!;!!!;;!;;;!0#Ciit: :@f!L!:.... ..!i!itt;:;;!!;;:;;!!;:,:;;t0;:;!!;;,:i!iLi!i!;!!!! +:..,:,,,::;!;, .,,,... ,t;i:. ,:,.,;::;;:::f####8@8G8#GfiiLG: ;8GfLG;.,;,,::;::::::::;::;:,..,,,;..;;!iL;;!!,,,,:!;;::::,.,,if +i;;;!!ifC8###@f!:, ;!:..,i::C, .,,,!;,......:L###0G0##LtCLtff; :LL;fC;..,:;;:,,,:;:,.,,,,:::,,::;:.,::,::;:;;;,,i!:;::;iti!:;!f +GCG00808@########t;,, .;;,!i...;;!, ,;ifttCi!;;;;i0@; :G!:ii:.,:,,.. .i0G;,:;;;!t!,,:i:. .:,,,,:!::,;i;,::,;G00L;;tL +@80GG0GGGGCCLG8@##08;, .,i;,... ...,. .;GGf:,,:,,.:L8; :GfLf!,:;;:. ,!tLi,..,,,. ,.. ...;;!:;;:;:,..,;i;;i;:; +0t!!!!!!!!!!fL00###L#G!,. .,:ti!, ., ::.!,,,.:8@i;:,::!,..,,. .,;::,.,,,,...,,. .,,;,,,,,,,,,:::;::::,.. ... .;if:,,,,,,:::,. +L;:;::,::::;!ittffftf##8i:tGt;:,,,,,,:::t;:f,:;fftttfftffti;, .,,,,,:::;;;::!i!:,. .,;ttiiti;i!fCLLLCf!:. .,:;;;:;ii!:;:: +f;!!!;::;!;;iittii;!CtiG0it!;::,,;!t!;ttit!;!,:!f0@@##@@@###Ct!!;iiititi!!;it!:::::::;::;;;ti:,:::;;;;;;:,,,::,,.....,...,::,..: +Li;;;:;!!!!;;!iiii;;:,,;!!::,,,...:,,;;!:,:.,,:0@#0tiiiiitC####Ct!;!ii;;8@;,:::;itffftti;:,,,...,. ..,,,,,,:;;:::::,,,. ., +Li!;:;;!;;!;:;!ii::!:,,:::,.,,,;::,;,:Gf,. :CtfLt;.,t, !,,!!t0#@L::88;:LG;,:iffLt!;;;:,. . . ,;!;;:,........,:::,,. . +tii!!!!;!i!!!;!:,,!fi::;;;:,,,:ifiiitfft!!;,;G!fG:. ,i,,:!:. :;tC;!t@i.,::::;;;:,...,.... ,. .,,,,,., ......  +LCLtLLfi;;::::,,,;;;:;!itii!;:,:::::::::!ti::,,t0L:,,..,:;;. ...::;fCfi....,,:,::::,,,:;;;,... .,. .,::, ..,,,,,,.  +i!!;;;::,,,...,;!:,,::::;fi!tt, :,. ,,.. ,:;:ii:,,,,.,,:,,:!!tf0;!!t,:!tii;;::,,:;::,,;;:::,,,,,,,,,,,.,;;itiii!;,,.  +:,..,,,,,,.,:,,:::::::,,;;::!fi.,t. ., ..:;i;;::..;i;;;i!i!;iftf;i@@;;ttii;!!!;:::,,::::;!!!;;;;:::,,,:;:::;;;;;!iti;:,..... +:,..,,::,,.,::::::;;:::;ii::iit,.:. .;,.. ,!ftfG0!:,,:tCfi!it!;!;;!G#L;!:;ti!;itt!;;;;:;;::;;::,,,,,,;:,:::;;;;;:,:::!ii;::::, +;,..,:,.,:;;;!tf::,,,,,::;i!:!!, . ,:,,...,,:if0#Cfi!;;;::;;:,,:t0G#t::;.,,,,:::;;:!!!ii;::,,,,,,,,,,,,:::,,,::,,,,,,,,,....  +;:,,:,...iCfffLtitt;:,,.,,:;;,,:. ,. .... .. ,;t0##8Gf!!fi::ttfttff#: :,.!!:::;:::::,,,:,:::,,..,::,,::,,,..,,.. ... +!::!;,,.,,;;;;;!iLffi;,....,,,.,:..: .. .,:,. ,;it@###8Gt:!######CG8i. ,,,,,;!iLiii;;;::!!::;;,,,::::,:;;;;::,,,.....,;!; +;:,,,.,,:;;;::!::::::,:;:,,,,:,,;i,, ,,.,:,.,:,,,!C;:!itti!:.;#########: .,:fi,.:i08Cfftfitiiii!;;;;;;:::;:;;:,,;!;;:::,::;;: +;,,.. ,titLfi:;:.,:,,::::,:;;,;:,:f!,,.,.....!ti;;::;!!;;::,,,,;ii;;;;;,. .,:::;, .,:;;;!!tftCCGLitt;;!;!:,,,:;::,:;:::::,,,,,; +;,,.,..:;;:;:,,:,;;:,!i;:::::::,,,,Lt;;!;.,,,i:,:,,,,,:,,.,;!:.,t;!:..,::,.i!i!. .. .,,.,,::;;;;;;;;::::::,,,,:;:,:,,,,,,:,,,; +:...,. .;,:!::;::,,,.:t;!!;;i!:,,,,,;:,,::iLi;,,,i!ii!!L;!;C0!it!@#@L;fLGi;:;;::,,::,.,GL!;,. .,;iftt;:;::!,:i:,:,,,.,,,:,,; +:,.:::..,:i;:;:,..,,,,:!;;:;;!!::,,, .;CfG0f:,,::;fffLLLfi!!C0iiG00i!ifiiift!tftfLi!,;8##Cfi;,. .:fCfGL;!i;;;:!!:,,,::,,,,,,,; +;,,::,,.:t,,,,,...;!;,.:i;:::,::,,,., .08itCLLLffi:,:::;::..,::!i,::,.:i!:;tt;!i;;!!:,,:i###@Gti:::;:::::t!;i::;:::::;,,::,::,: +!:,,,.,,,;:,;,.:,.,:,,.,::::;:::,,,::!tff!;8#######:,:::!f;;;;;,:,,.,:;;!;!!iiiii;:iLiif;:;iffffLi;Lt:,, .,,,:::t;:i::!:,:,.:;,: +!;::,.,:,,t:;:,,:,...,::.,!ttit!i!ii!####8:;f@0fft!;CGfGG80CG00f:fiiL8Cfitt0LG8800fLG0@f!f;..:CCCtiCf!C!;i;::::!i::!:,;,,:,.,..: +!:::,,,::,;t:,,,:::,,;:,..;tfLfLLCCi!8@08i,.... .::::;;;;;;;;itifLtt!i!;;;;!!ii;:tLfiffif,.:f0Lttiti;iL!!Lf:!!,:!!!!;:;;:,.., +!;::;!,,,.,t;.,,,,:::,.. .,:::::;;::::;;:::;:,,. .,,,. if!!::,,,,,,,,:,,!f;.;L;:fGti:,,,:;i::t;:i!;!;:,.,,!LCCffit;,:!:; +;:,,:,,,:..,:,:t::::,...,,;,.,,,,,:;;itfttiittt;:;ttii. ,,,.....,;i!!fi!tttt..:::;!!!!;!,...,;;;!!i;;:,,,..:;;;;;;!i!!iti +:,,:,,,....;iftfLLi;:::;!!;;;!i!!ttiittti;;!!;;;!;;::,. . . ,;!;::i;;ii;ii!;;. :!!itiiii!;!:. :;;!!;!i;;;;::;:,:::::;;!iii :tCCfi;ti;:.,;!,, .. : !ti0;!;,;!!t:i;,..,..,. ., .,., .:i, ,;!;,;!!!!!;,,; ,,,::,,,,:,,,,,::,,:::;:;tGLffiiG +!:iCi!ti;ttt.,. :. ,0i,.itL0;.!tL8C:................ .,,;:;:. .:C;,;fCf!!!t!,,::,;G!;!:,,,,::,,.,,,,:,.,....,::;;;::,:; +t:,tftLti;:,. .t#i, ,L#f,:fL!:,.,,,:,,,,:,.,:::, ;f.:080i;t!itLt!;;:,,,,,::!iitC!GG;;!iii!i;,,,::.::::,,:;!!;;;:,,:i +. ::,:!ii!, :@#!. ,tG;;:,. ............ .,:;;;;;L: ,ff!08t#0!LC;:,,,,,,,,::;;;!i:::,,:,,,,,........,,,;ti;iifL!;;!i +.,:i.,,,,. :i@#!,.;f:....... ,..... .,:!!f0088;,,::.,:i##iiC!:!t;!ti!;:;i:..:.,. ..,,,,....,,,..,:tt;!tt!;;:;!Lf +iii::;f! ,:.,. ;!t##!it,,::,,....,:::::!:,itf!!iit!,.iC,.,,!L!:Cf!:;;!!!!;::;!!::,,:,. .,;!!:,,,;;i;::!ft;!tCi;:,;t;;t +;!!;::;:. .;, . .,;L;LGt,,. ... . .,,,,,:0f::;!!:!i!!:,::::L0t!;i8Giitii!ii!:;;;!!,.!i;,.,..,,,....,::,:;::;:i;:i!,;i;:t +fLitfi;:!;;,. .Ct8!:;:,..,,,,,,...;:,.::CG::,;!,,;;;:;. :@#!t@8G8L;::::,,,;!:.,,,:,;:,,:,,::, ...!,..,,,;;;!;::!L;if +i!;;iffLf8@G!;!,. .:@@f:!t!::;;;;;::,,,,.,!:ti;:::;:,:::;i, i@i,f#Gff::: ,,,:C:::;i:iL:.,:;fCCi,,,,,,,,;::;;;!tC0i;;;;!tt +ti!;!!ii!f@088CL:. , .;8i,,,,,.,,,,,,,..,. ,;:i0;:;iitftftif: !!!:t0@G:,::;;;!0t!!fLCL!;ff;,;:tf!;:;;it;..,,;i,:t!fCt:,:iiftL +ittfi!it;!GLt!;;i!, . .;f, .::,,,,:;::,... ..:ttttfffffti!f@: .,:Gi!i!!!:t00Cffft!tf!;!it!::,::,:,..:;:,,:.,::,;;;;;::!:tfi!t +:::;:::;!!!0!.,;!: !Li;!iLt!,,,,,....,..,:::tLii;:::;L#C, .,;tG!:C;,i!;;::,:,,:,.:,::,,::,,:;;::!!;;;,.,::!!;:;,,;!;;;:!t +::..:..:;:!f,.!. ,. ;CLL!i!:,,.....,.,.,:,,. ,:,..,:!@#i:.,i:;8@!t;:.,. .,,,:,,,,:,:it,:iLCft!:,:ii;:::ift:!;!;;fi;:fL +;:. ..;f;:,. .. .:..... :t!f;,..,,,,,:,.,,:,!!tiiii!iif##ftf! ;Ci!0Giti:..,,,,,,!!;!!;;;i!;!;:,::;!!;,,::!GL:::;;!:.:t:ii;!i;; +,,,,,,,;;;;;!ifCt!:, ;!:. ,f:;G:.,,,:.,:,,:::,;8#####@@##8LtC8i :88ftCGfGi.:;;!i!;:,,,,,,::,,,,.,,,,:;;.,,:ift:!!:,,:;;;;::,::,; +ftftiitLCG08@######f:,.. ,i:,ft ..,:....:!i;:;;iif0C0@CtiLLG8i ;Li;i!:tL;.,::::::,,:;!:,::,:::::;:;;:,,:,,:,::!!;,,tL!;!:;!tti! +80GGG08088088@888####t:. ...,,. ,.,,...,,:,,. .;iti!;;!iiit: :GiiGi;it:.,;i;,;;;;fG0f,!!i!ifi,.:!:. .:,,,:!;:,:;;,,,,,C00Gi +880CGCftitffftitfG8###@!:,. ..,: , !.,!,:. ,C0;:;iitLt!: :iL0GG0G!,,:!;,....,::;,,...,,,,..,,. . ,,:::;:::,..,;i!;! +Ct!!!;;;:::;;::!iitfL0CL##i,:Ct!: .:,,:,;i:;;.,!G@ft!;;;;iG;.,::,;!!!!;;:::::,,,,,......,,....,;;::;!!!::::,. .,:i!,:,,;::; +L;::::;!;:::;;;!!!!!;!!f##@C::G8f:::tf:;tiff:::!@#C80GLi!;!!, ;Ci;;!!:,:iLfttttiii!;:;;;;!!::::!!:;;iffffLLti:.... .,,:;:,;ii: +f!!;;;;;;;;!ii;;!iti!::iiitt;,:!Ci;!;:;:,;:::!0GLCfttfLCCLii,.:i!;;:;;;:;!i;;!!!:,,,.,:,,,,,...,,,.,,:::::;;:,,:;:,,....,,. .,,, +Li;tti!!iit!!!;;;!!i;:;;iLfi, :.:;, .:,;;,;.;8CtiCt;;;!!iiitf;:;;;!!i8t:i@f::;:,. .... .. ....,::,,::,,,,::;:,  +f!:!!!!!iii!!!;!;i;,,:ftfLt!:... !. :i:;t,.:tti!i0L!;::;!!!!fLtifLG#C;;##t;08f,,.,:,,:,. . .. .,::,,,,. . ..,:,,,,.  +i;ttftifLCt!;:;;;:,,:!;;;;;;!f!,.,: ,;!;,,,,:::!itG8t!!!iiitfLt!!!!it,,::,,tt;:;:::,::::,.,,.. ,, .,,,,.. . . +ttiitf!;!;:::,,,,,;;:,,:::,itiL!..;,:;8@L!!:Li::,::;f#0ffLLLftt!;;!,,,, ..,,:::;i;;;;:;::;;::::,,,,,. ..,;;,. .,,:::,,. . +;:,,::,,,,,,::,.,,:;:,::::;;;;!f,.:t8@tLL0i::C0: ..,:i0f;;;::,,,,;:;tG;;;:,,::;;!;;;;it!!;::,:;;!;:,,:,,,,,,,,,,;;ittttt!:,.. . +;,..,.,,,:,,,,,.,,::;;:;::!i:,!t! .!08;,;;:..:!, ,;!!!;: . ..:t##f;itt!,ttti!:;;!!!;!;;!;;;!;;;;;;:;;;::;!::;;!!;;;iii!;:,, +:,....,::,,::::;;i:,,,,,,::;i;!t:,;!itiiii:. ;C0@#0Li;,.. .,,,;f##i:iL;::i;::t!!;:::;;;!!!;;;::,,,,,:;:::;;!!!!!;::,:;i!;:, +:,,,,,::,..;ftftffi!;::,,,,:!t!;;!iiti;:,.. ...;if8##@0t..;!fLLttLG#C,,,!, . ;::;!;;:;;;;;;;;:::,,,,,.,.,;;::::::,,,,.,,,... +!!:;;!;::,.,:;i!;;ifff!:,...,;;:::::,. .. . ,f!!ttti;,,@########i;;;:. . ,tii!!tt;:,..,.,!;;;;:,,.,:,,;::,,,......  +;,::,,,,,,::;;:::::::::,;;;:::::,,:.. .,,,:,,,,.:;!i!!!i!!!!;tfft!!!;, ;!: :,.,,;!L8ffCLt!:,.,:;it;::,:,:,,:::;;;;,,,,,...: +:,,,... ,t!fCLi:!:,,,..,;!;ifi::!:;f:, ...f!:,..,,,,,,;Lt,..;,,. , ... :f! ,iG8GftLG0L!!!::::;!:::,,:::;::,:;;;;;;:,:; +:,,...,.,;;:;;:::::!!:::::;;;::;;:::Li,.,,:;;::,. . ... ,C;:,,!L#i,, ,,: :. .,, .::::::itf0GLC, .;:,:;:::,,::,:,::::::,,:; +:.....,. ,:,,:,:;::;!!:;::::;ti;,,:,,i:.!Lt88f;:,:,!iiiL;t!!if0i;08@C!t;t;!,,. :;,::!,..,:,. .,:;;;;;,:!!::::::,,,,::,,,,,,,,,:; +:....,:,.,,;i:;;:,.,,:,,::i!!!!!,:,,...,!CfLGGCft!;tLLLftftitCfLtittiiffift;:,,:itLCLt:.i0Gi!;:,...,i;;fCLf!:;::!,:i:,:,,:,.,,:! +!,,,,;:,.,t:,:,,,.,..,,.:ti;;:::,,:.,. .CG;8#####@:,:::;;::,:::,:Lf,.,,,:!!:,!i::i;;;:,.,;L##@#C;::::,iftGf;!!;;;:;!:,:,::,.,,,; +!:,,,,,,,,;:,;,.::,:..:;,!:,::,,::,,:;ttf!;;f@Lft!::::;tt:;;;;;:;!!;:::;!ii;;!i!!!;:!i;::,,i###8LfLf;::,,,,,i;;t::;::;::::.,:,,! +i::::,.,:,:t:;;,,,:. ,,.,,;!!!!!!!;i####@, ,,, ,CLCCtG!CGC000C;LffGGCGLL!GLf8CG00L08@LCt;::!tfffLiiG!,,,.,,,,:::t::i;:!;,::.,; +!:::::,,::,!i:,,:. .,,.,.,tLLLffLCfi####C, ,:!;::,:,;;;;;::!t!!tfti;;iftifi!;;;tC#Litt:.,fGGCtLL!!f;iL;::::!!::!:,;:,::..: +!;;:;!;,,,.:t:.,,....::,,..,;;;;;;;::;!!!;. .,:: it,;Lti;...,,:,,,:,.tGi!tGitt,,!CCtii!t;;ff;iCi:!;,;!!;;:::,..; +;;::::,,,,.,::,;!:,:,,,,,.,:,...,,,,,:;iti;, .;;!i. ,,:::;:,,,,,;i;;tCi.;fi:iLft!::,,:t::!!:;i;;!;:,,,:iLCCLftt;,:! +::,::,,,,. ,!tftffti;:::;!;;;;!!!iiiiitti!!!!;;;;;: .. .,;;:;!!!!i!iti!; :!i!ittti!;,..:;!ittttii;::, ,::,:;;!!iiii :,,;f@######8#Gi;;t:!:;ffLCLffCG0L8@##GLGCL;;, ;;;,, ,: .. ., ., .i!:. :.,.,,;,!:,::!i!;;;;;::::. ,ti. .t:,:,,,!;,:. +!::::;;itffCGLt::i,:i,,f0!!f!;!C!!LtC!::;;::;fi!;,!:: .:!:, .. ... ,;;:,:, :!:tfifLf;:,:,:,. .!G!;f!..,,.,;, . +;!i:,..,,.,f80L,!::i;:,;!i!if!C!,:,;:;::;:,.;Cf::!,,,,. . ,G@G! . ,fL!,:. ..,:;;::;ii:,;!!,,,.,..;GfGf..,,. .:,, +:,:,.::,!!,;!i!::iifLtf;,!CtG;i;:,iLtLtCfGGifGt;f!t!,;, . ,,::Ctt, ,.. .;i,;.:CL:., .,;:,...!G!;:,,i!!:,.,,;fL;. .,,,i;, +,.:,.,;,::,,:,:tt;;;:::f;!Gf!i!;:;G8!i:;i!L#8f0Ci!;:, .::Gf,., !L, .tt,;!;t!, .. ,,,,:,,::GG;,..,,;:!,, :Gf:.,!!;,,. +:,,;,.::,;;:!C!:!!;;,,:,,,:i:fGt;;t;. ,, ,,!!;tf;i, ;;t;. .,::;, . .,,..;!iL: .....,,:!;:,,:!Gi, .,..,:ii;;;,:,,..: +!!,:.,.,,:;.;t;:..,!!i..:,,:;;!ifCCLfi;:,. . ...,. . ,:.,. . .,,... .,i0:. ,,,,. .... .,:;f!:,,,,:!i8i,:;i:,,,:!! +i,,.. ...... !L.,,,!i,.,:;,i!!it0#####LfCt!, ;!;::,. ,,. ...... ,Ci,. .,;;;:;;;:;iLfiGt,t!;;t8@i;!ii!;ftiiii +.::., .,:;;!!!,,f!:, ;i;,:i;;!ifCC@#@LG#@iiii!::,. .;.. . .., :fi ..,:iCGLCC0CttLGf00!:!it0Gfi;it;;;iLt!;;t +.,:,,, ,f@0#@ii::i,.. :i;.,,:::::;!t#@ftit@8008Gft;:::, .,,:,,,....,,,.,,..,i: ,i;;!!!!!;!ti!;;!0C;;fCCf!:!fi;:,!f;::;it +.,,,,,:,:ftiti!C:.::!;.,!::,!!;;;:,:ti!;:,;!iitft88CC@#CLi:. ,..!!:::;;;;;:;;:;!t;.,i!;::::,,,::::,,;iiif8fiitf!;!;::ii;;;::! +:;i!!!ittt;::::;!.;:;f,.;::,!!:,,,,,,i!;;;!!;!i!;f@@L0#CC#@;..: .,..,,,,,,,,,,,CC!,;LC!:itti:;!:::,;CCG8L;;iG0L;;tf!;titt;;;! +tCCLft!!it!;iit:!::;:,,.,;.,:;i!:,t,,ii!;;i!!!tf:i@CiL0ff8#G. ..,.,::,,...,:,....,::,,;tC!:;!!;::::::;L@Gfffi!itt!!!!i;t!;;::,:; +i!!;!::,::,,i!!;:C!,,::i:. ,fGtGi;i:,Cfii!!i!iti;i@GtG0tf#@: :,,ifi!!:. ..... ., .,,iGC!!;;;;:;itff00Ltf080CG8L;::::;t;:i:,,:! +;;:,,.,..:,,,!f;::it..iL!,.:t!;;iti,,fCLftiii!iL!i#@tt8ff#!. ..;:,,,,,....,..,::,;::!!ittiLi;t8#@8#@Cf!titG0G!;i!:;Li:!i;,:;! +:Ct,. .:..!;;,,i;:;;;:,,,!:::,..,:;,,iLtiii!!ittii##tt8ft@8i;, . .:::,::,,:;tt;.,:;:,;;;!iiLGfitLL!;;::Lii!!!!;:tC;,,,.,::i +.;:,...,...,.. ,!;:;:::,,;:,..,. :L,:fi!!!!!tffi!0GCL8ft@###: ! ,:::,,:,,:::;::,,,!:.,,:t0C!;::;fi,,:,::!!!fLi!;f!::;:,,;ti +LfffLGCGGtiii:;!!Lti::ft;;;:::,::,;:..ifii!!!iii!i0GCL8Ct8ff8!:,, . ,.,, ...,i;;!;!i,!,,:;ff!!!!;:,;f:,.:,,:!;::!:,!t:.,ft,:t!: +###########@CL8#8!;;t::;!t!::,:;!i;!;:!ftttttLftt!08CiLCit!iiif0!.. .,,,;:,:,:;!!fGCCLtifLLfLfftftiiii!;::,.... .,,..... +@0GCCCCLLLL0@##0fi:!!;:;;:::::;!i!iL0t;tGttLCG8ti!tC!;;;!fCCCG0#@, , ,.;..,..:!i#@##G######################8CLtifftiiiii!! +Ci;!!;;;::;!itifCC:;;tCCfi;i!;fCf!;!!!i8i!!!itfiiitfi!!!iLLtftf80, , .!::i,.,;G@####88#80#@#######################@#######8 +i:,,,,,,,,:;;,.:L;,.,Lfi!tLi:L;;::,,,;8fi!!!!;;itLfLCCCCfiittttCi::;;:;::::!i!i,,;fifC!CC##GffGGLC0GGCGGGGGCCLLLCLfL08GCLLG8@8@8 +i::::::::,;i!:::;;:,:::,.,,,,,,,:;;!!iLttffft!!!!!iiti!iLff;tLLLLfC@0f;0#i;::,,.,C;!!.. :iii!ffL;:;!;;;;;;;!;;;;;:;;;!;;:;;;;!ii +t!!ii!ii;:,:iiitfLfi!!i!;;!;;:,;fCCCft!!;;;ititittfLfi;:;t!,,:;;t0#L!i@fi##!, .;:;L;. ,Ci;;;::,,,:::,,,,::,:::::;!::::;;:;!!! +;:;:,,:,,,,,:::;;!!iittffG0GL!!!!!i!i!t!::::;;;;;iitt!;:...,!,,::!f, :0i.!#@:.,i!:t! :fi;t!;::;!!!;:::,:::::!i;::::,:::;it;; +,.,,,,,,:,,;;,,:::;;i:::;iti;:;!::,,,,:::;;i!;:.,,,..... ,i;:;!i!;,,,:.,;!ft::i:,, .::;fL!;!tLfi!!!!;::;;;!!::::,,,,,:;;;: +!!!tffti!;,,,:!!;;,,,::,,:i;,,,::,,,,,::::;;;:,,iC;. .:, ,:!tG###f: ::,,,,:;ft,,;, .,,.:,:::::ti!;;;;:;!;;;;;;::;:,,,,,,,,;ii +tLLLLfi;:,...,,::::::!!!:;::,,,,,.,,:;;;;;:;;,:,f@0!.,:;;!;,,f8###Ci!!:, . ,,:;ff:, iL,.!t!::,,:,,.,,,,,::::,,,,,::,....,.,,:; +:;;;::,.....,,,,;;i!:,::,,,,,:;:::;;;:::,::,,,.,;!i;:!#####f!fLti:,,G##f;,..!;,;L; .!!. :tft!;:,,,,,,,,,,:;:,,,,.,,,........:! +;:;:;,,,,,,::::;:::,,,,,,,,,::;;!!:,,,...,,,,,,:!!:t;t#########0::;!!f@##8: ;:,;t!.,,::;. .:tffi!!!!!!;::,,,,,,,,,:,::,,,,,,,,; +!;;;:::::;::!;;;,,,,..,,::.,,,,,,,,..,,,,:,:,,,:!,,,;!iftiiifti;!fCL;,:i08; :!,:i;.i:,. .:,,,.::;tLLfi;;:::,,,,,,,,,,,,..,::,,,; +t;:;;;,,::,,,:,,,,,,,::::,,,,,......,,.,!i:, .::. ,GL:;;t: .,::,::.,,. ;::!: ,f: :!;;. .,::tG!:!:::!!;;:,,......,...,; +i:::,,...,......,,,:::::,,,::;;::,.....,::,;i;:.. .. ,Ci;,:0!!: ,,::,,.;. . .. .;, ,:;:,. ;@L!:,::!f;:;!:,:,,,,,,..,: +:::::,.,,,:,:;::;::::::,,:,:,:::;:,,.,:,!GC###fi!t!ti;;0Ci;i##G!;i!0GfLit!t:::;:;:;::,, ,Li, ,.,,:,..,!i;,,!i!!;;:,,,,...; +;;!!;,..;!!!!ii;:;:;;;;,,,:,,::,:::,,:;:G#####itftiiftiLGf!!CC8CtLfCCLLffLffLLLCL88Cft!:,,,.,:;, ,;:!;:.. t!. .,;!;;;;;;;:,.,; +,,,,,,.,,::,,:::,,,,,,,,.,,,,,::::,:;:.,!iii!:,,::::,:fG;,,,.::::,::::,::;::;;;;!Li!!!i!ift!!!;. ..,ttt!. .. .!:,..,,,,;::,:! +,,;,,::,.,....,::..,,,,,,,,:,,;;;;::;!tt!:,,;;:;:;i;:!i!;:;;;::::::::;::;;;,:::;!i!!!i!ii!;;t::!, .:it. :. ,.,.,:,,;:! +;::;,,::,;;,,:,,::,:;,,::,,;::!!;!i;;####C,;CGCGCfGLG000iCG00LGC!CGLG0CCGCiCitGGC080CtCti;;;;::!t. .,. . ,,..,. ,;;::::; +:;,,;:,;;,::,:;,,:;:,,,,,,,,,,,,,,,,:G08#t:;!!;;:::;:!C;::;;;;;:::;;;;;;;;:,::;;:;!i!!!i;;::!!;!t: ;,.tf;;,,,.,,,..,:;; +,,,,,:,,:,.,!:,:;,,;:,,:,,:,,,,:;;!!i!!;:,:;,, .....,:,..,::;!!::iLLLft:. .. ,tf,.. .:!i;::,,,: +:,:;..,..,.,,:,,,:,,,,,,,,!!::!LCG00Cftf:.,,,, .;;:::!tf!:;;!!iit:!!!t!!i;. .ti ., . ,,iLLf:,! +;:,,...:,,:;:;:,,:;,,:::,:;:;:::;;;,,,,,;;;;;:. .::!;;!!ittti!!tLf;!i!;;;:,... .. : ,;iit . .;tfi. ,;ifL0LLCGLtLLLLLCLLLLfffftti!;, . . .... ;:. ,: . .. . . ;t, ,.!;::::: +.,,!t;...:::,.,:;;!t!;:::,,,,,:;!L@##00@##0GGLftti!:;::!!!, ,::. .. , ,, . ,..;;,.. .::,.,...,. ,:f!:,;!, ...;;; +!ti!ft;.!fCf;;::,,:fGCCLCi:...,,:;itfttL######8###00;,,,:,..;Gf.,. ,,:,. . .. . ..,;!;,. .... ,....,,. .:f0;,;;:. ,.,t, +;:;;::,,:!C!,,,.,:,,:;!!::,::::::::;::::!ifLCC0#####!,!;!!,,tt;. .,:;CCi..,,. . .:,:i:,,,.,, .:. .::.,;80;,:. .:,!:; +;;:;;.,..:,,,,.,,,::,,:!:,,::,:,,,,:,,::::::::;!iii;:,:,:: .::. .,i00!;;;iLft;;, .t,:ii ,.,,,. .,;;t8f;,.... ::t!!i +;f!;!.,;,;..,,:i;;it::;C!!;:,,...,,,,,;;ii;::;:::,,,,,,,, ,,;. ,Ci;i!,tCCf!f0Ci!;;::,,,,,,. . .,, .;C0L;,.,;:;!;. .:ifi:, +,!!,,,,i::,,:::!i::;;.:tfi;;:::,:;;!;;!!!i!;!;!;;,;:,,,:,..,,,:,;,,,,,!C:,, ,::,:C0C;t!.,.,:....,.., .. .;;;:,,:,,:ii;: :;G;:!: +:;!!!t::::!!i;;;;;:;;::;;::,:!tfLLtfffLi;;;::;::,,:!:,,,::::,,:!..,;:.;:. .:. . ,:::,!!. . .,,::,,, ..... ,;;;,..,,:;;i!:!f, +::;CLC!,;:LtL!!LLftti!f!;;::!f####@LGCfi;:!i!;!,:;:!i!:,,:,,,,:: .!;:..,:,:::::,,. .. ..... ,,,,,. .,:::,,,::LC;!,:L:  +;,:;f;i,,;tGt0iiCCfti!LtCLi!itLG8@Gt;;;!,,,,,:;:::,;t:,,,,,..,;:..:,. ,:,f!!!;fi;,,,,,..::, . .,,::: .;;!i;;:!!i!;!.,L:.  +t,:,,::;,!!titf;!tii!!iiCf;;fLt!!;:,,.:::.,,,,::,,.,::,,,,,..,:. ,::;!;,ii;;!!i!!:,;:.,...,.. ..,::,:;;,,,,,,,,, ,,,  +t;,,,:;f:;;:;;!t;ttt!;i!i!;;!;:,,,,::,:L;.,;!;!i;,,!!i:iitttiii;. ;0f0#t:LGitftffi:,,. ., :!t:.,..:,, ;0t:!L;,,,:::!;,.,;:., +;t,,;it!::::tiif;if!:;L!:;:;,.,:,::;f:tf;:::;t!!i;:it:;C###8@#0@! ,CLC8L:88CCGfff;;!,. .;!,,::ttC!,. iG;,i:,.:::;t!!: ::,,; +,L;;;ff!.,t;ff0f::ff::ti;,,,,,,,:;i!,:;i;,,:;!,,,:!:,:;!L00LftfC: ,;:;i!:Ct!;;::,.,:,. .,,:,:;!ii!it;if, ;:. .. .,,,if;C, ....: +,L;,;iC;.:C!,;;:,,:t::;;:,,::;:,::;;,,i!!;;,;;::,,:,..,,,:::::!;. ;;::ff;;t;,,.. .,,:;!LLtfCCCL;;::if: ,!::::,.,::,:,:,,....., +,;i,!ff;.,L;. ..,,::tLi,.:iti:.,:!;;;::;!t:it!!;!,.,,,,;i;;iff: ,ftt;LGG,;!;!!;;::,:;;!tf0#@GCt::i;;::,,fLtiff:..... . .:::,:: +i:i::;;;,.;t,..,:;ti;;!i!::!;;;;;:::::::,,:!:!:..:.,;!,;ii;fLfLt..tfi;iCt;titCGGLLti!;ii!!ii!!;:.,!!:;;:;tf::;:,. .......,,:::; +i::!,;itt,:L: :CGt!:,;tGC;:,,!tft;,;:;i;,,;!ii!;;;::;;;;;:;itiiC;,,ft!ii!LCfttfLf!;ii:;,.,!, .:..,t!fi!t;t, .:,,,,,,..::t!!L; +t!.;::itL!,L!:fG!::!::!!;:,,:;;:::::,,;!iL0@88CCGC:,:;!i:.:ft!;tG!..,f8L;;!!:,,,, ... . ,i, ,:tt;::,:t, ,:;;::!:,..,i!::!  +!;;;!!itti;::i;:::;;;;!i, :iii:,:;!::;f8@8#Lffffffi;,,,,..,;:,:!!!!:,,!ttiiiittttt!!iiiiiti!;;::fti:::.:!, .,,:,,,,,,,,,:,,.  +CLCGG8G0ttf;;;;.:;,ti;Lf: :if;,;!i::L#8LttitfCLfG###fit!!iii!;!!ifG#: ,@@@@#################@##i;t;:Lt:!!! ,,.:.. .::!,;ii!:  +###0#0fi!;t8!,,..,,,,,,:. ,,,..,::,;00Lt;:;ittiifG8@#@80@@80CftffL00:.!CCCCCCCGGCGG8800G0@#@##0;;!,::it:;, ... . .,:;,,:CL.  +@80GLfttffLCLtti!!ii!!;;::::;::;!iit;;::::iCCi;:!;:!iii!!itfL0@8CCf!!t@L!;;::;;;;;!;;;;;!itL8@t;i!;;:,;t, , , . ., :; .;t:, +#####8@#########@@###88GLLffCiifft!i;;!!!ii!;:,... .;,. ,L@Gtff!;8###C!;:::;::,::,,:::;;:t!:;CCGLLC!!Lt::::... . ,i, ,:::;itt; +######@0@#@88800GGG0GCCLLGLLftti!!!!iG08@@@! ... .,,,!G;,G@!,f#Ci;;::!iii:;:;::it:,,,,. .;;;;!t!fLtfLLt!:i::!:!; ,tCGCG!,, +#####8CCCGCLLGGLLCLCLttifCG080CCftLCCC088L8L, .;:i. ,,::;!tii!!;,.,88,.;!!;::::;::,:!ii;;!:,,:;,.;;:!fi::;:;!:itiii;;:;tt!tf;,: +#CfLfftL00CLLCffitfti!i!!itL08@88000Gfffi!iGt;:.,.,...itf0####8t:!,:;:,,!iCL;:,:::,,,::;tttii!L8Lti!;!C; ,,:!::;::,,tC!f;:LL!!: +L!:;!iiittii!!!!;;t;:;;;;;;;;!iiiii!!!;:::;!LGLifffLi,,i@####0t;!fi:!::,,;!L8f;;!;:::;;i!;;;tfCG00Cfiit, :!;G!;i:;.,t:iG!:G;,.  +t::!tLti!!i!;;!!;;;;;;;i!;;;;;;:;;;!!!i!!;;;;!i@#####0Lf;;!;;::;:;i!!G!,.,:!tCi::::,:::,,::;:;;!i!!!;!; ,iiiG!:i;!,:;.;Gi!:.  +t;::;;;:::;i!!;;;!ii!!i!;;!ft!!t::;iiiti!!;:,,;itffL####:,,:::,,.;###G#L::,:;;;:,::,,:,.,,:;:,,,,:::::, ,C;;G!;!:;,;i.:Lif.  +t;:,,,,::,:::,,,;!;:::::,,;;!;;!::;;;!!!;;:::,;;:,:;!Lt!:!tfLfi!:;!L####0;,:!i!;,,,,,,::,,,::::::::;!i, .:.:i:!:,;.::,,;0;  +;,,,,,;;;;:::,,,,,,,,.,,,,,,,,::;:;iitf!!;:,:;i!;i.,L:t:.,::;itft;.,!8###;!;;!!,,::;::::;;::;;!;!;;;tt. ..,..... .:!i0,  +;,...,,,:::,,:,,,,,,,.,,,:::;!:,::::!iii;:::i###C;,;;!fi, .,::::,:::;!i!!:;!i:.,;:;::::;;!,::::,:,:::. . .::....,. .:G;.  +;::;;::,:;:,,,::;;ii,,;;:::::!:,,,,::;:,:!i;C####;:0Ci##i:!LCiti;t!88!i!Lffiti;;;!!;;:::::,,,,,,...,. ,,.: ...,... .:i, .;,. +:!ttft:,;;,,;!ittii;::;::;:,,,::..,:;!!:iCi!;!iti;tttL8#tiLLGCLLLLtL0ffLffCLLftffCCC!i!,:,:;::,,.,:,. ..... :: ,i: !t,  +,,,:::,,,,..,,:;::,,,,..... .,::. ..,.,fG;,,,.,!,,:,,:::,::::::::::::,:::::;!;;!!!;::,,.,,:,,,.:,;:. ,::,. . :L;,,:f;,  + ..... . . ,,,,,. .... ,;itfi;:;!!ii!;:;::,:::::::::::::;:;::::;!i!!!!!;;:,,.....,...,: ... .., :i::!i!!!, +:;:::::,,:,. .... . ..,...,.,::;####8:;CG00000LG0tCiCGLGfGCtGGLG0CCGftGfL0CfGG80fG!,,.,;:,,,,,. . .;. .!, .;!:., +..,,,,,,,,,,,,,,,,,,,::;::;,,:;;;;!;;0@@#i,,;iii!;;;;::,::;;:;;::;;;;;;;!!;;;;!!;!!!;!;:,,::!!:::!:. .. ..:. ,;. :0:  +,...,,::,::;;!i!;;:;;:;;;:::::;:!i!;::;;::,:;!!i. .......,,.....,,...,,,,,,::,. ,::,,,.. .:: :C:  +;,,,,,,,,,,,:::::,,:,,,:,,.....,,,,,,;;::!!ii!i; ...:,,.,,:::,,,,.,,,,,,,,:;;:;::, ... .. ,i.  +::::,,,:,:::::::,::,,,,:,,,,,,,,.,..,..:::;;,:, ..,:,;;;;;;:;::;;;::;!iiiii!!;,.,:::,:,,.. . :.:;!: ,  .,:,:!. . :iti, :,:!ftL08Lttti;;!;;;,,,,,.. . . .... ;, :. . ..... . ,!i: :. ,,, +,,;!ifi,,,,!Cf:.,;;!i!ft!;;;:::..,:;tG##########@CfLfi;;::,.,:, . , ,. . .,.,;!,,...,.,:;::,,..,:... .:Lt,,.,;:. , +;:,,,!;!;!i:;::,ifGi,;fLGCLCf;:,.,. .:!iiifG@####8###8@!;::!iGi. . ,,, .,, ..,,,:;;:........ .;,,.,,:,.:iGi,,:;. , +,.,. ,:,:;::,.,,:!!:,,,:;;;;;;;i:,,,.,:::,,:;itLfLL0GGf;,;,,it: ,,,;:i:;:t;.,,,... ,:,t:,..,..,,.. .,;:,,:.,;08i,. . ,: +,.:::,;,;!:;!.,,,:..,,,;::!!,;ii:,::::,,,,,,,,:;;;;;;:,:,,.,:,. .,f00;Ct;:;iLfii!,. .!,.:t. . ,,.,,,:;!i8f;,..,..,. ,; +:,,:i,;:,:,:;.,!::,,,,;ti;i!:.;f;:!;tt!;t!:,,:;!t!;!!;;;,:;,:!. :C;;t;;:!:tiff:;f;,:;!:.,,,.,,. ...,.,,!G0C;, .;;;!!; .:t +i;:;!::!,:;:;,,i::::;;:;;:;;;,;i!:,;!!!iiiititfi!;:,:;!;,,;::::,!,,,..,,,;i,,. .,..!tt:.:,.:;,,..,.., ..:;;:.,.,:,,:!!,. ;tt +ttLiif:::!iCiC:::;tit;i!!iit!t!!;:::!tC@#@0GGGLi;;:,:;;:::;i!;;!. .:,.,:,!;;,,,,.. ,,....; .....,,,,. .... ,,::, .,::t;t. +L!tCtG!,;:;fCii.;;0fLtiGGftf!tifL!ii;t0###8Lt!t:,:;:;i!:i;;t;:;:. ;;::;;,:,:,:;;:,,,,. ,:. ..... ,:,,,.. ..,::,,,:!fG;t:  +f;;:;;::t:::;:!,:!!ttGf!fftt;;!ff!;tftffft!:,,,,.,,,,,,,,,,,,.:;..::,,;:.....,t;;!!!;:;:,. .. ..,,;,. ,:;!;;::!;;:;:., +tL:,,,;,f;,,,:!i:i;;;!f;;ttt:,:;!!;!t;:,.,:,,,::..:;::::,.::,:;;, :i:,,,:;ii::;!itiiiiift;,. .:!::;;;:,,,,.,,.., +tft;!;:,!!,,:!tf;t;:;ii!;Li;:!!;;!i;,,.,::;!,iC;:::;titt!,ifi:G8;.:8Gtitf0##t,LtL80LCCLLf;;;,. . .::. .,,. i0f;fC!;;;;;!;!.,: +i;!tfi!:;f:;;ff;,!;!LLC!;Lf!:iC;;:,,,,,,:ii::!!!;:,,::::;:;i;;t#8,,L#GLttttf:;Ltfti!!!;;:,;;, ....:;,:;LL!. .tL;:!;:,::;t!i;,., +f!:;fCLt;L;.;tL:.!;:!Li:::ft::!:.,,,:,,;::;,,!;i;,,,,.,,,i,.,!;!;.,!i!;:;!::.:fii::,,.. .,,,,:it!!ifLCiiL, .;, ,. ..,!f;Ct.., +t!::;;!::f;,;LL: ;L,,,,..,:::;i:,,,;t!,,,:;;!i!!;!;i!,;;,,,.,,:, :Li;::;!!i!:iLi;;;:::....,:;!!tL088G0Ciit:.:!;:::,.,:::,:,:,.  +i!::;,:!::!,it;: :L:. .,::;;!;::,;!!;;;:,::::,,,:!iti:,,:..,:,!; .fGL!;::iCGC!:0Gi;;iff!;!::;;!tttLGLi!:,i!;:LfitLt,..... ,:, +;;::;;ti;;;,:ti!;:t; .:tLL!:::iL;::,:iti:.;......,::i:::,..,::it. t8t!t!;;!i!;t0GLitLCGLCttt;::::;;;,,,,,!;:;f;,::,. ........  +;:;;i;iftf:::CCGL,;i :Gt::!:iii!;,..,:::,,:;!i!!;;::,,::,,,:,;;!,.,;i!!!ii:,;G0iiift!!!!:,::,.;. ;f,.,..:fi:i,. .,,,,,,,.,::! +ii,,,,:;;;::;!tii:;!:;!;,;;!!ii:,::;:,,:!iL@@8GLLLf, ,,,;,:,;;t::: .;i;;:;;;i!;:;;;::::,. .... .;:, ,!ti:;: ,:;;,;!:..,;t: +:;!:,,!ttfLCGGfi;t!;:;.,!,ii!CG! :ff!;iG@8#8Lffttff!::,,. ,,,::!;,.,;!iitttfLLLLCCG08@GLG8GGGLfttiiiLi;:t:. ,,,,.,:,,,,,::, +:!Lf;!t8@##@#8Lt;!8f:,.,,,:;:;!,..::;G#GftttfLLfL8##8LGf!!!;;::;!iC@t i8CG00080088@###############@##i;f:;LL. :.,, ..,:;:,!!; +;;t!;itfCCCCLftiiift!!;::;;;:,:,:,::!0Gt!:;!ttiifG00##@08@88CLfffL0@;.:itiiitiiitfttffttffCGCCCCCG8#0f;i:,,:!, . .. ,,::;,:; +tittC8#88000GCG88@008#8GG8@0GGLLftfC!;;:::!LCi;:!::!iii!!itLL8#@80Li!iG0!;::;;;:::::::::::::::;;;;LG8i!i!;;:. , , . .,. .!.  +#@################@@8@#88880GGLGCfftt:,,:;ii!:,.. .;:. ,L@LtLf!!@@##G!:;;iffi;!;;;::::,,:::,;,,:;:f00Cf00;:::.. .,.!, ,..,, +##@#88@######8000GGGGGCCCLCfftt00GGGCLftL0#@, .,,. .,:,i0;,88,:88Li;!:,::;;:;!ttt!i!!:,!t;::,,...:;;;iCCfLLt;,;:;!::; ,:!tfi +8LGLfGCCLLGCCfL0GCGCCCLLLLfii!itLC8@@@@G08##; .;:!C. .,:;;!tti!!;..;@C..!!;,....,,::::::,,,::!itt!:;!i!:!fL:,:::!:tLffi;:,;LC!;i +f!!!!!;;;;!iiiitfiiti!!!tt!!!!!!!!iitttiiitft,,,,:;:. ifL8####8t:!:,::,:!tCi;;;;::::,:,,,,,,:;iiiifLL80CfL! ..:;::;;:,:!f!!!::t +;:,,,,,,,;!LCi!!!!!!!!;;;;;!!!!;;;:;;:::;;!!!tti8LLLf;;i@####0t;!fi,,,,::;!G8GCLfi;;:;!::::;;i:;;!ttifCCG0, ,!;C;:!:; ,f;iG:,C; +t!;:::::;:;!!!:;!tfti!!;!!!iftiiifiit!::ifffft!L######GC!;;;;::::;i!:if:,,:iLGi;;;:::;;:,,:::,::;:::::;;i!. ,i;!G!:i;;,::,!Ci;i  +tiii!;!!;:,,:::::;;:::;;;;:;;;::iff!;:::;;;;;::;!ttf####!,,::::,.:##@C#@;,::;:::::::;;!;,.:,..,,::,,,,,:;, ,C:!G!;;:;,;;.iG!L,  +;:::,,,,,,,,:;;;,:,,,,,,,,,,:,,,,::::;;;;:::,,,,,,,;;ft!;!tfLft!:;!L####t,:!!;;:;,::::::::,::::,,,:::::;i, ,;,ii:t:::,!:,:;Ct.  +;:,,,,,....,,,:;,,::,,,,,,.,,,,,,::::;::;;!i!;;ii!i,t,!i.,,:;ittt; ,!@##f:;;;i;,,,,,:,;:i;!;;!;;:;;i;!;it. ...,....,.,i:;0:  +!;!;:::::;;:,,:!,,,:::!;;,:;;:::,:!::,,:,;f8!i####!:::;!: .,,,,,.,,:;;;:::;!!:::;,:.,::!;!:::;;:;:::,:;,. .,. .,: .,;G;.  +!::,,,,!tffi:,;:,:;!!iit;::!;:;;,;!tfi:.;fLftt08##tf#tC#f!iC0ttt!fi8@tttGfLtLtiiiit!!;;:,:;::,,,:;,,..:. ,,,: .,,.. .. .it,  +:. .,:::,,:,,.,,,::::,,,..... ;###8;.!80GCf;;!i0@@##@88@##@8888@###8@@@@888008880tfti:,;,:,,!:::,,,,. ..... ,. ,i:  + ......... .. . .,,.... :Cf!:. !t!;;::::,;!!;;;;!!!!!!!!!!!!!!!!!!!iiiiiit!!;;:,,:,,,,;,,,,:,,. ,,,, . .!f:,,.; +, .:::,::;:,,,,. ... ..,,,,;ttt;::;i!!;;:::;:,::::::::::::;::;:,:,;;!!!!ii!!;!,;;,;,.,..,.,.. .....,,. .t!;ft!; +,.......,,,,,,,,,,,,,.,:,,,::,:,,:!:;####8:;GG0CLLGLG0tCiCGLGfGGtGGCG0CCCfiGtt0CLGCC0fGi,:;:;,.:;;,... .;. ,i,.,,:: +,..,,,,.,,,::,::;!!i;;:i;;;;;:;:;;;;!####t,,;!iti!;;;::,::;;:;;::;;;;;;;;;;i;;!!;!!!;!;:,,,,.,,:!:,,:,. .:. .i, ,t +;,::::,,,,,,,,,,:,:::,,,,,,:,,...,,.::;;::..,;!tt, .,,.......,,....,::....,,,,,,:: ,,,,,.., .;, ,i +:;,,,,,,,..,..,,,,.,,,............. ......,;;:;:. ...,:,.,,,,,:::,.,,,,,,,::,,:::;!:. . . :: +,,:,,:,::::,:,::,,,,,.,..,,,:::,,.,,,,,,,,,,:::: ...: .:;!!!;:::::;;;::;!ii!ii;;:.,::,,:,. .. ., ,, ;:::,.,::,!iitft:,:!!t!:itt;,,..,,:,:;:;iL0###0088CfLttt!::,.. ...: . ,:. ..,... ,.,,,. ;!.,,  +,,!!;:,. .;,,,:;i!:.,;!;,:i!fCftLCf!;!!!fi;itCCtG######08##Li;, .... ., .:i;!;,:., ,,,, ,: .,. ,,..,!G;..,!. + ..,,,.. .,;,,.,:,,,.,,,,::::;!;;!!:::,:::,,:!!;;ifLC0#@###C0f, :!ii. .,,,... , ..,,:,,,;!,. .... ;i:. ,.,;0G;,,;,.  +,::,!:,:, ;i,.,!.,;,,:.:!:;;.,.....,:!;,:!:!iL;,,,::;;iii!!;:.. ,;;:!:;::!itt, ..,.,,i,it: . .,,,,, . .:;,..,;f8t;,..,,.. +::;:;:.....,,.,;!,,:i,::,:,::.;:,:,,,:tt;;;!,;Lt!:;iti;i!:,:;,. ,!G0L:,,;;G;;;,..!it,!i:,!i.... . ..... .::...,:;it0C:, ..:!:, +:,,,,,,,:,,,:,,,:!;;!,,;,:;;;::;:!;!;::;::;;,:it;::!ittttiitGC,.tL!!t!t:.;!;;:,,,,,;.......::,::,:....,. ...,.:;tGCG!:,. .:;;!: +!;:;;!!tt;:;::!:;LLi!!:;:!fLff:!;tiL;iiii;;;!;;;;::iG8###0GG00f:!:;;;;::::iii!,,!,,,.. .: ......;,,::,:,,,.,...,:;;,,,!:,..,,... +ii!;ii!!;::i:;;;G!iCfL:!::!Gtt::;LCfLiC0Ci;ii!if!!i!f####0LtiLt: .,;!!:!;;i;:,,:;;;!;:,,..:. . ..,,....,. ,,.,,. ..,.,,,.  +;;::;;::::::::;;!!;:;;,:!::::::,;!LtGLitLft!!!Lf;;ffttffi;:,,:;. .,,,,,,,,,..,::::,:!,:;. .... .;;: ., .::,::..... .,,,,.; +:,;:;i;,,;!,,!;:!f;,,:.:L:;,,;t:!;;;!f;;tff!!;!!;:ii:,,.,,:,:!:. .!:::,..::,,:;!!;::::,:;!!!iL;;;!;;;:,. . .:,...,:.:,,: +:,,,,:::::;:::i,:tt;!:,;L;,:;tf;i;:!ii;;Li;!t!::;;,,.,,:,:i:tCi. .ititi:,if!;L@##8CLfL:,C00L8@iiG@0CCGf!:,... :f;::!;:,  +::::::;!!t:t::::;;iffti;f;::fL!,!;!LCG::Ct::ft!:,:,:,,,;i;,,;!;, ;!:::;:;i;;t####G0CC;;fi!!iiiifttitt!it::!: .. !0L;LGti;: +::!tt!;;::;!t::;i!:!CLL;t;,;tC;.i;:!f;,:;L:::;:,,,:;it,,::,:;!;i, .;,,.,;,.:;:;ttii!i!:fi:,,:;:;;::,,,..,..,,,.,;tt:..tt::;;:,,: +..,:;::::;;;!:,ii;:;;;;:;;,;Lf:.!i,,,..,,,,;i!,,,:i!;:,,::;!!;ff, ,!;;,..,...,,:,:;ii!:ff!::ii!!;;;:,,,. .,::;!!L8G..:, ,,..,i +,...,;;:itt:,,,:;!:;::!!:!,!;;:.:f:,.,,;!;;;;;:;!!;;;:;!:::::;;: :t:.,. ,:,,:i!;!ttit!:fff!!ttLt;;!iti!;;::;;;ittGt:;;::;:,,,:: +,,:::;;::;;:,,::,:;;!ifi,;::;!i::L:.:tLLf:,:iCi;;:;iti::t::!!;: .i!,.,.,,;,:!i;;:;;tL!,fLL!ifLGCiiLCCCLCttt;;i;:;;!iLtifL!,..., +,::,,,...:!::;:,;;;i:;tf,,::tfC!:C:.LL;:!;!!;::,,,,:::,,,,,;;::, .i;,,,,,:,;;;:;;!::;!;iti;itfititf!!ti!;:!!;::,.:f;!i:,::,. ,: +,.....,,,:;,,,:,!;:,,:!i!!ittft!;;;;;;::::;!i!!!i!;:,:::,,:::;!i. ;;,,.:,;;t:.:Lf;:;!ii;!:;!;,,:;:,... . . .f;!;. ,.,,, +,,:::::::::,,,,,:t;:;LGC0@@#@Gtit;:;,.;,;tf8#8GCttt!i!ti;....,::, .:,. . ,,,,:;!;;!iiiiititttttttttttftiitiiiii;;:. .:;;::; +;!!ii!!!!!!:;!,.,fL:!tC@#@##Li!;LG;,,:;iC88#Lffiittti!!!:, ..,,:;:..::::::;iitttLLCCGG00888888@###############!t8; .,,,,,: +;:,,,,,,,,,,,,,,:;;iLC08880GLffLCCfti!0@CtiitLCff0@##L0#Gtt!!;;:;if80, ,LtttttfLffft!iiitLfffffLLLLCCLCCG00GGGG@@###; ,.,,..., + .,:;;!itfLLLG#################fiCf!::!iifCCCC@#8G##08GGLfffC#L,.;ttittttttii!;;;;;;;;;:::::;::;;;;!!!!!!t0##t. ....,. , +,,::::!iL000@######8########@@#@888@#L:::,,;f!;;;!;i!!!;;!tfL###@@Ci!!iGLfffLCCLLfti!:::;;ii!::;::,,,,:,,,::;;:iC!,. .  +iiLCLtCGLCGGGGG000GGG888@#8GGGGCCG0G@@ttttti;,. .::,,:, .!0GtLLttLiL@@CLfi!!iiiii!;:::::;;;;;itii:::::,:;;,,,.::::,.. : , ,:  +;;;!!!!;;:;;;;!!tttCttiittttG0GGGLftf0@8@##@; ,f0. .:.;0L;80.;@Ci!!!;:,,;;::i!:::,,,,:,,;::::!;;;;,,;t!:::::;fLf!;:::::,.,!  +:,...........,,,::;;::;!fLiitttii!;;!ittffL0! :::0t,.,;!!tfti!:.,8@: .i!;:,,:,:::,:;;;;;::,,,,,,:::,,,,::!iiitL0f;;tififCit;:!, +:... .....,:;;;;::::::;tLLtitii!!!;;;;;!iiiiL!:;;!ti:.iG0####@L,,;!;. :itGt:,:,,:::itLCLLLti;;!!!!;,...,,!!;iiL@8: .,;;::!;;!::, +:,,...,,::;ttttt!!;!i;::;;;:;!;::;!!ii!ii!!tLCLC##@88t!f####@L!;iL, .,:;!tGt;;::,,::;;!!!ii!;::::!:,,,:::;:;:;iL;. ,i:t:,:,,.,Ci +:,,,,:::;:::;:::::,:::,,,,,,,:,,,:;::::::,:;if!t#######C;;;;::::!ii:,;::,;t0f;!;::::,.,,,:::,,,,,,;:,::,,,:;!:;; .;;;C;;!,:.:;  +;:!ii!;,,,..,,,,,.....,.,:;:,::,,,,,..,,,,,,::::;itL####:,::::,,:@##LG@!,:;;!;;;:::::,,;;;!;;;:::;,..:,,,,,:::;, ;G!if;;;,:,;,  +;tti;,,:;:,,:!i;::::::,,,;!,,,,,:,,,,,,,,:,:;:,::;:!;it!;itfCft;;!f####i,;;;::,,,,::;;:;:::,::;:::::,::::;:::;;. ff;C!:i,,.,t,. +,,,. .!ii!;;;;;:,!tfti::!:,::::;!;::!!;::;!!:,!@#@i.,f!,,::;!tt!.,!G##!:;;it,.....,:::,,:,:,:,;;:i;i;!i!!:;;tt. ,,:;,::,: ,;,  + . ...,,,,!!,.....::;i;:;;,:;!!!:::,,,::,;C8!:,i###i,:!L: .,,,,, ,,:!;;:!!i;,,,,,,,,::,::;:;,,,,:,;::;:!::!;i, ... . . ,!: +::;;i!:. ... .....,,,.,,.,,,,,.,:!t!, ,ifftLttfCLL8f8#titG0ttf!ft#CiCLCL8Liiiiiii!!;::,:,;;:;,,,,;,;:,:,::,.. ,. ,:.....:,., +;!;::::,. ....,:,,:;;:,,,,,,.,,:.:###8,.!@CCLGGGG88@@###@8@##@8@88###@@@@#@008088888ft!::,,;:;::;,;:,;,:!,;;. ,, ... ....., +.,,.. .......,,,,,,,.,,,,,,,,:Lf!;:,GC!;;;!!itiiiti!!!!!!!!!!!!!!!!!!!iiiiiiiiii!;;;:;!;i;,:,,:,,,,;,,:,. ,, .: +,,,,....,,,,,,,,,,,,:,:,:;;!;;:;;:,:,;;::;:,::,,,:i.!L. ,,,:;::::::;;:;i!;;:::,!:,:..,..,,. .,,,. . .;! +,,,,,:::;;;:;:;::,,,,,,,,::::::;:,;;:,,,,,:!i!;:,,:,,;. .,,..,. .,::,,;i!!;::,,:::,,,,,.,;:::,,;::. . ,, .i: +,,:,,,:,:,::,,,,,,..,.,,,...,,,,.,,,......,,,,,,,,. ..., .,,,;:,,,::::,,,..,,...,,,,,,..,,;i;,. .; ,!  +;,,,,.,,,,.,...,,.,.,.,,.. .. ......... .,. .. ..,:i;:;!,.:,,,...,,,..,,,::,....,,,,,: . . ,, ,i,  +;.,,,:,:,,,.,.,,,,.......... .. .:::...... ..,... ..,.,i,!LLf,.,;;:,,,,:,,,,,,,,,,::,,,,!!, .,,.,, . :;.  +;,,,.,....,..,.,.,,.,,:::::::,:,:,,:,:,,::,.,,,,.. ...;: .:;::,::;;;;:::::;:;::;;!i!!!!;,,::,.  . .,,;;,:;!!!;:,:;:ii!iff!;;fft;,,:;;!:,:iitfG####8@##CCCti;,.. .,.,. .... .:: . ...,.,,.:.., . ,:.,,,, :!!  + . ...... .,:::,,,,,..,;tt!i!;,,,;tf;:;!itiiC#####@ff:.. ,. . ,:, .... . ., .:!!!i,,, . . .. .,:.. .,:tC:., +::... .. ...,,... .!i;:.. ., .,,;!;::::,:::,,,,:,:;;!fffL#L:,:; .:;,,.,.!, ..,.,.. ..,,:,,,,;;, ;!:, .,;f0i:,:: +,...... ,:;;ii:::..:i,,,...:;:;,;;::.,!:;,.,,it:;ii:,;i:::,.;:;!;.,t;,. .,!;;t;f:. .:t:tf;. .. ..,,:. .. .::..,;L0C;,,.., +. ......,,,::,,,,.,,,.::,,:i:;:,:,,,,i::,:::;i!:::;.;Lf;,,,.,L00;!fff!!,,,!tt:;. :ii:,!f, .....,....... .,,...,::tLLG;,.. .: +,....:::::,,,,:::;;,,:,,,;f!!!::,.;;!i:;:,::;;;;;;::::;;;:,:C;:;!t@GLGLtt!:,:!;;;;:::.. ..., :::;,;.,..:,.,..:.:;iCfC!:,.. :: +;:::::::;ii!!!iiit;:i::;;tfGfi!,:,;LCG;,:;Lt!!ttffii!f!!;::;L@! :@@GLfi;;;i!;i!:ttiLi,,,,,.. ......,:,::::::,,..,,:;;,,,;!:,..., +;;:;:;:,,:i!;i!;;;;:::::;C!;it;:!,:!L!!.:;0fGtitGLt!;ftCt!!iL#! :8f;:!;,.,,,:;::::!Liiiii;,..., ...,..... ,,,::,..,,,.,,,, +:,,,,:,...,;:;!:,:;!,i!:;i!:,:::f;::,;!::!iifC!!ftt;::it!;tC80: :!;..,:..,,,,,,,..,;;;:;:::!,!,. .,. .:,. ., .:::;:..,,,..,. +,,,,,;;,,.,:;!!;,,,,,;t;:tL;:;!,t;.,,;f!,;:!tLfiLti::::!i;;!it: :f!::t;,,;ii;ii,.,;it:tittti;!!::;LCi!i;::,,. .. :,...,:. +::.,:,,..,:::::::::::::;:;tfti;:!:.,;ft:;:!CCCt!0f;!i::;:;,.:!. ,GG;iL;;:,:!!!it,:t!:!0####8;LCtifCLtC0GCGGt!;;,... .!f;,  +;:. .,,,.,:!!;!i!!t;L;::;;;;CCf:::.:iL!.::;G!:,::ii:!;:,,,,,:!, .i;:;!:,,,,,,,::!::;;;C@#80i;ft!!!;::!ittLi!;;!:,:, . ,00t;i +,. .!:...:!!:::;;!!f::ii::;!!,,!,:iC; :i,.. .:;:;;it::;:ti. .:!!!;:,:!:,:,,;,..:,:;;;;,:i!:i!,,,!i;i;::,,,,.. .,:;, :L!,:, +. .,,. .,::::!ti:;,,!!:,,,:::!,!ft:.:;, ...,,,!Lt:,!i!ti::!. .i;;:!i!;L!::,,.,.,.,:!:;t;;L!:;!!;;tiii!;:::::,...,:;t: ;,. :: +. .,.,,:i!;!;:,,,,,;,,:;it:;::;;:,,,,;;::tf!;!!;,.,;;::;. ;!;::,:!!i!,.:...;,,:!!;tL0;if;!!Lf;ffLGL;;!tffi!!;::!t;:;:,::: +.... .,,,,:,:::::;;::::::::;!Lt:,,.:,,,,,,:ifi;;,:tCf, ..,,!i. ,!!!!:..:,;:..,,,,,,,::::!fi:!iiiitfifffCLitfLCLLCtit!:itftiiLi: +,:::,,,!!,,,....:;tC!,;!;!::,:;!:,:,,,,,::,,;;;;:::;!;:;,,,:!!, .i!;;::::,,,,,,,:,,:;:.,!;:,;t!!!;;;Cft;!!ft;;!!;:,,:,,:it;,;!:, +.,,,,.,,,,,::::,:;;;;,:!;;;,,;ittffLt!;;!itttiCCCt!tt,.ii,,::it:,,ii:;!t!..:,,:...,,!,.,i!,,:::::::;!!;:::;:,,,,. .t!. . +.. ....,;!ii!;;;;;:,;,.,tt;;t08#@#@LfLC080@@GLLfCLft,.:t;.,:;ifL;,::::;:. .......,::::;;!;;!!!!ittttfLfffffLLLCGfttL!:;, ,: +,, ,,..;t;,:;;::::,,,,,,:;:;ifG8CffttLCGf8Cfittt!t!:. ,,,,,:::;!ff;,.:i!:::;;;!;!iittfLLffLLCCCG0000000008@#@#######;i#! .,, +.,:,. .,. .. ...,,:;iiifC080f!;tLtii!;iGifG#@0iCtiiifitGt:,;;!f0L,,tt!ittttiiiii!itffft!!iiiiftiittfftfffffLLCG0Lf##! ,.,, +iC:i,. .,,,:::;;iitLCG8###8###0CtiitGLtLi!iGCL88GfL88###@@@8;,,,,:!tf;tLtitiiiiiiiiiiiiii!;;;;:;;;;::::::::::;!;;;!tC8f. ,.., +:!:,i,.,ittLLfCGCG08808@##808######f:!C8Lti;!t!:;:,:!t#Ci!!!;:... .:;iG@CfCLfffffLttLCffffi!;::;!itt!:;;:,,,,,,,,,,;i:,. ..  +,..,,:;i;!tffttti!itttttfffLGLLC@#0: ,;!i;:,.. . ,,,. ..,:;!!CGGLti!!tiitt!;;!!iii!!;:,:,::;;;;!tti;:::;:,:;;,,:. . :,  +:..,,:;,,,,,,,,,,..,,,,::;;;!!itt;,. .:iG@f ...,:;!:,,. ...!GLC0Lt!::::,::::,,,;!;!i;,:,,,,,:,,;:,::;!!i!:,,!t;:;Lt;;;,,. . +;:...,...........,::::::,,,::;t0@: .!C@0Gi,,:;!f08Ct::,,,;;;::;iii!;;;:,,,,,,,,,,,::,::::;!!;;;;:,,,,,,,:::,,,,:;itGtiLGLt:i;:, +;,.. ....,,.,,,,!tftti;::;:::;iCL,:iLCCLi.;808####G!;;:;t00CLi;;!;:::::;:::::;!;::,:,:::!tLCGCCLti;;!!!!::,.,:,;;!Gt,,:;;::tLt! +:,,... ..,,,,:::::!!!;!;:;;::,,:;;:!#####C:!@####8t!;tt;;i8Li!!!;::::;::::!!::;:,,,::,,,::;;!!!!i!;:::::!:,,,::;;;tG: .i,,,,:;,. +:,,,,,,::;ii!;,,,,,,,,,,,,,,,,:;;:,:tG@####!,!!!!;::!i!;:;::!t;;::,,:::;;:::,,;:,:::;:::::,.,,,,::,,,,::::,,:,,,,;f;. ,i;ti:i,,  +,;i!!!!!ifti:::::,,;!;::i;,,,,,::,,,,,;G###; ,;!:,,C#LitfG#t!;::::,,,,,,:::!it!i!;:,:::,,;;;!;!:;:!;,,.:,.,.,:i, ,f!!C;:i::  +;;:;ii:,,,,..:tti;;!i!::Cf!!!::;:,:::;;;!!;:.,,,,,:;:::i###8#####L;,,,::::,,,,;!;:,,,:,,:;!;::::,,:;::;:::,:::,,::: !C;fL;;:,;  +;:..,,. .....,,:!i:,,,.,iiff!;;;,:itttii:,;:::ii;,!!ii;::;t######C,..,:;!!;,,::::,......,,::,,;,,..::!,!!;i:;!;!:t, :,:L:!i,:.. +.,,,,,;:;;!!;. ... .,:::,,,,,,,::::,.:i0f!::!::,,:,. ,;!ti;;::,:::;::,,:;;!!;,,,,,,,,::,,:;:,,.:,,,:!::;:i:ii. ......  +:;;;!:;i!;;;::......,,.,,;: .. ,:!tt: ,i####ttL#GtfLtCitfG0tiiiCf8CC8CGfLiiiiittii!;;::,,,,,,,::,;,,,,;:,;,:,,:,. . .  +.,,:,:,:,.... .,,,,...,,,,...: ;###8:.!#####@G8##@@@@@@8@##@888@@#@88@@@8888GGG088ffi!;:::,,,:::;,:;,;:,;,,!,, ,,.:,.:,..  +;::,:::,....,.,,,,,,,.,,,,,,,,::,;GLi;::8Giii!!!!!!!!!iii!!!!!!!!!!!!!!!!iiiiiiiiii!;;;;:!!;!;!;;!:,:,,:,,,.;:,, ...:: .  +!;,..,,,,,:;;;;;:;:;::,,,::,,;;;::,,,:;;;:,,,:,:!; .. ...,,:::::!:,;;:::!!;;;;!t!:;::;,,;,.;..,.., ,,,.. :,  +;:,,,:,;,:,:,:,:::,,,,,.,,:,:,,,::::,,,........:fi.. ,,,,,,...,:::;;i;::;:,:!ii!;;:,,,::,,,:;,,;:,:,,,,,. ..,..,...  +;,,;:!::,,,,,,,,,.,.,,,,,,,:,,...,......... ...,,, .... ..,,!,,,,,,,.,:::::::,,,..,,..,,,,,,,..,:;i!. .::  +;:,::;:,,,,.:,,....,,:........,.. ,,,,.. , ,. .,!,:,..,,,,:ii..,,,,...,,,,,,,,:;:. ...,,,., .:,  +:,,:,!,............,....,.:,:;:;,,.,.,,,,... ....;; .!,...:!,,,..:;;::,,::,,,,,,,,,,,,,....,. ..,....: , +::,,.:....,.,..,.,....,.,,,:,:,:::;:;::;::::. ...::. ,::: .:::,:;;;;;:::::;:::::;;!!!!;:::,. . :  .,::,:;!!!;;,:;:!!;iff!!tCL!;:,;;;!::;itLG@####@@#0LCfi!,... . .,.,. . .. :: . . ...,.,:.:.., . .:,,,,, ,!i, + .. .... .,:::,,,,,..:;fi!t!,,,,:tt;;iittit0#####t!,.. :. ..,:,..... . ..., .,!!!!,,, . . ,;,. ..,:iC:.. +,:;... .. ...,,... .!t;,.. ., .,,;;;;,,,,,:,,,,,:,:;;ittL@!,:t! .;:,:.,.;;...,,,,, ..:,:,,,,;:, . .. ,!;,. .,;f0C:,.: +........ .:;;ii::,..:i,:,...:;:;,;:,:,,!:;,.,,:i;;i!:,!!;:,:i;!!,.,!;:,..,;!:i;ii...:f:tf!. .. ..,,:. . ,:..,;fGG!:,.., +. ......,,,::,,,,;:,..,;,::i:!:,::,,,i:::;:,:!;::::.;Li:,,,:CGi,;tffLi;,,:!f::, i!,,!t, ....,....... .,,,...,:iLLG!,... ., +,.....:::::,,,::::;;:!:,,,;f!!;::,,;!it:;:::!!:!!;;;:::;;;::t:;!tLGGLLGCtti:,!;;;;:,,,. ...,..;,;,;,.,,:,.,,.:.,;!Cff!,,.. ,: +;::::::::;itii!iiii:;i:;;;ftGfi!,:,;LCC:,:;Lt!!LCLft!;t!i;:!Lt;;@##0GLLi;:;!;;i!;tiif;,::,,...,.....,,::::::,,...,::;,,,:!;,.... +;;::;:;:,,:!!;!!;;;;!;:;:;C!;!i:,!,:;f!;.:;0fCiiLCLt;;itCt;tL!.,C#Li;;;:..,,,::,:::;Lttiii;,,.:. ........ ,,:::,.,,,.,,., +:,.,,,:,...,;::!:,;!!,:;:;i!,,:::f;:,,:!,:!iifL;;tft;::tt!;f0: :;:,.,::..,,,,,,...:;!;;;:::,.;, .,, .,,. .. .,:::;,.,,...,, +,..,.,;;.,.,:;!!:,,,,,:!;:tf;:;;:f;,,,;f;;;:;!i!!fti;;::!i;!f: ;:;:,:f;,,;ii!ti,,:!tt;fttti;:;!::!CG!;;:::,,. . .:.,.,:. +,::.,:,,..,::::::::,:;::;:;tfti;:i;.:;ft:!:;ftL;!0i;;t;:;:;:;. !tif,!f;;:,:!;;ii:;t!;i0####i:0ffitLLtLGGCGCt!::, . ,f!,  +:;:. .,::.,;!i!!i!!i;L;,:;;:;CCL:!:.;tC!,!;;f0L:;LC::!;:,::!!, :C!::;!:,,,,,,,::!:,;;;L880G;;tt;;!:::!iitfi!::!,.,. ;0L;; + ,. .!:...,;;:::;;!!t::ii::;!!,:!,;fC;,i!,:;:,:;!:,:!;f:;tLt. .:;,!!;!:,:!:,;,,:, .,,,::;:,i;;:i!,,,!i;i;::,,,,. ,:;. ii:,: +. . .,, .,::::!fi;;i:;!:,:,:,:!:tft;.!!.,,:;!!,:Lf:,!,.:!!. :i!:::!i;;L!:,,,.,...,:!:;t;if;;;!;;;tiii!;:::;:,,..,:!i .,. .: +, ..,:;i;:;;:,,::,;,,;;ii:!:;it!,,!:,,:::::;ii!;::,:,. ,,::::,,:!;t!..:..,;,,:i!;fGf:Lt!i!Lf;ffL0L;;!ffLiii;:;!!:::::;: +..... .,,,,:,:,,,:::,:,::::;;!Lf,,::LCC,.!::,::!i,;iLCiiitft. .::::!;,..,,;,..,,,,,:,:;:;it;:LiiiiititffLLitfLLLfCiit;:tfftiff; +,,:::,,,!!,......:;ti,,;:i!,,,:;;:,;;!i!:,::,::;!;::!i!;;!i!;. !Ci:,,,,,,,,,,,:,:,,:;:.,!;:,itii!;:;Cfi;!;ft;;;;;:,,,,:;t!::!;, +..,,...,,:,,::::::;;::,,,;!;,:!tfLLGCt!!!!!ittffLi;;tt..ttti:,..;!ii:,::!:.,:,,,. .,,;,.,!;,,:::::::;!!;::;;::,,,, .:t,  + . ....:!!it!;;;;!:,!,.,Lf;!t@###@0LLCCG8#@@@@@8GCi:..:i;,:!;..,:;!i!ii;:,......,,::::;;;;;!!!!ittttLLLLLLLCCCG0LttC;i;, , +:....,. .;t:,:::::,:,,.,,,;;!!fGGCLfiiLCLG@CfLLLt!iGf, ,,,,;!!!!;::;;tCGGti!!;;!!itttfLLLffLfCCCG00G0000008@#@@#####fi##, ,, +,::::. .. ..,,;;!itttC#Lf;;tti!!!;t@tfG#@@ii0LiiifCfLG0GG0G!,!!:;!!!!ftftii!ii!iittti!!iiiitiiittfttffffffLC0Gf@##, .., +:LC:i,. .,,::::;;ifff0@8######f;;:!LGtif!!L8CC###0GG8####@###Gtii!;:,,:;!iittiiiiiii!!!!!ii!;;;;:;;;:::::::::::;;;;!ifG@;. .,., +.:;:,i,.:ttfCCfCGC008000@#@8@8#0Lf;;f88LLt;if!!!!;!it##fiiii!;,,,,,;!!f8@@80LffffLfttLLffffi;:::;!iti;:;;:,,,,,,,,,:;:,,.  +,...,,:;!:!iftiii!!!ii!iiLfLG####L,.,:ii!::,,,......:!;,. .,:!ifG88Gffftitiiti!;;!!!!!!;;:,:,::;;;:!tti;:;:;:,;;:,:, , .:  +:,.,,:;;,,,,,,,,.....,,,:;!;!tfi;, .,;i8i ....,:;i!:,!,. .,,:t08LLLti;::,,,:,:,,,,;;;!i:,,,,,,,:,,;,,::;!!i!:,:!i;;iL!;;,,. . +!;:...............,:;;:::::::;G: :0880;.,,:!f080L;;:,,:;;;;ft!iii;;:;;:,,,,,,,,,,,,,,::::;!!;;;;:,,,,,,,:::,,,,:;iLC!fGLf:;!:, +;,,.. ..,,.,,:,:iffiti!:;!;!tL;!fLfCf;:tLfG####Ci;;,:itCGGCfi!;!!::::::::::::;;:::,,,::;ifCGGCGLti:;!!!;::.,,,,;;fG:,:;;;:!Lf; +:...... ..,::::;;::!;;;;:::!:::;0####8G;;0#####8t!!fi;:Liiiitti!!;:,:;::;:;i!::;:,,,,,,,,::;;!!!!!;;:,::!:,,,,:,;:iGi. :,,:,,;,. +:,,,,,,::;!ii;:,,,,,,,,,,.,:,,,:!fC#####;:!iiii!;;ff;,:;::f;;::::,,,::::;;:::,,:::::;;:::::..,,,,::,,,,,::,,,:,,,:ii, .!::f:!: . +,,!i!!i!itfi;::;::,:!!;:,::,,,,,,,:t###@: .:tfi::!ti!!tC#f;::,::::::,,,.,:;::iti!i!;:::::,:;:;;;;:::!:,..:,,.,,:, .:f;L;:i:,. +!!;:;i;,,:,. .;iti;;;!;::tti!!:;;:;!iffi!,. ..,:;;:,;###G8###@G!;;;,,,,,,:,,:,:;;::,,,:,::!!:;,::,::;:::::,::::,::;. .C;!C;:!,:. +;:...,,...,,,,,,:i!,....,!!ti;;!::!fCCLL!:::;:,,;;!;::;!######@;,,,...,:!!!:,,:::,,......,:::,,:,:,,,!!:!:!!:!;!::! .,,f;:t,,,  +...,:,;;:!!i!:. ... .. .,::,,,,..,:;;i!itt8!,:.,.,,. ,;!!ti!;;,,,,,::;:;:,,;;!!i;,,,,,,,:::,,::,;,,,,;,:;:!:!!:t, .......  +::;::;,;!::::,,..,..,:,,,:!: ., ,:!tf;@###Cftf8tiiLfiiCiLtiiiGCtCtGCC800fLiiiiittti!!;:::,,,,,,:;::;,,,,;,;,,:,,.. .  +.,,,,,,,,.. ..,,,..,,:!,. .. ;###@;f####@####888@8@@@8@@888@@88@80@8@@88800GG080tfi;;;;::,,,;:;::!:,;,,:,:;. .,..:..,. .  +;;::,,,:,..,,,,,,,,,,,,:,:;,,,:;,;0Li;;:it!iiii!!!!!!ii!!!!!!!!!!!!!!!;!!iiiitiiiii!;:;::;!!!;;!:!;,,,,;,,:.,;,, .,!.  +;;:,..,,,,,:;;!;;;;;:::,,,:,::;::::,,:;;,....,,:, ....... ... .,,,,,,,:i:,:;:::;i;;;;;ii::::::,;:.:..,.., ..,.. ,:  +;:..,,,,:,,,,,:::,:,,,,.,,,,,:,,,:::.,,,.. ..;L; .:::::,,::,,:,,,;,.,,,:;::;i!!;;:,,,,:,,,,;,.:;,:,,,,,, ...... .  +;:,,:::,,,.,,,,.,.,,,,,,,,,:,...,.,...........,,, .,,,..,,;:ii:;;:,,,,,,,,::::,,,..,,..,,,,,,,..,::ii, ,:  +;;,:::::;,:.,,,..,.,,:....,.,.,... .,,:. ,, ..,:,:L;,,;!;:,,,;, .,,,...,,,,.,,,:;:,....,:,.. ,:  +:,,,.,;,:.............,.,.,,,!:::,,,,,,,,.... ...,,,:L,.,,:;;,:i,.,;;::,,::,,,,,,,,,,,,,....., ..... ,. . +:;:,,,: . ,..,.,.,,.,.,.,,,::,,,:,::::::::::;::,.. .. ..,,.,!;:,. ,;;::,,:;;;;:::::::::::;;!!!!;::;:. . :  . .,::,:;!!!;::;;:!i;iff!;iCC!;::;;!!::;itLG@####@@#0fCfi!.,. . .,.,. .. .,: . . ...,.,,.:.., . .:,,,., ,!i, + .. ....:,.,:::,,,,,..,!ii!i!:,,,:tt;!iittit0#####fft. .. .,,:,..,.. . ..., .,!!!i,,, . . ,;,. .,:iC:.. +,:;... .. ...,,.,;..it!:.. ., ,,,;;:!,,,,,::,:,,:::;;!ttfG0t:,;. .;,,.,.;; ..,,,,, .,:,:,,,,;;. . . ,!;,. .,;f0C:,.: +........ ,:;;ii::,..:i::,...:;:;,!;::,,i:;,.,:!i;;i!:,!!;;:,.!,:;:,!;:,...:::!:ii...,f:tf!. . ...,:, . ,:..,;fGG!:,.., +. ......,,,::,.,,..,,.,:,:;i:!:,:,,,,i:,::::ii;::::.;ft;,.. .iGG;iLLLi;,.,!i::, i!,,;t, ....,...... .,,....,:iLLG!,... ., +,.....:::::,,,,:::!;:::,,,;f!!;::,,;!it:;:::!!;;!;;;:::;;;::i:,;!!t8CLGCtti:,!;;;;:,,,. .,..;,;,;,.,,:,.,,.:.,;!Cff!,,.. ,: +;::;:::;:;it!i!iiii:;i:;;;ftGfi!,:.;LCC:,:;Li;;fLLft!;t!i;;:tL;!:C#8Gffi;:;i;;i!;ttif;,::,,...,.....,,::::::,,,..,::;,,,:!;,.... +;:::;:;:,,:!!;!!;;;;:::::;C!;!i:,;,:;f!;.:;0fCiifLLf;;itCt!itL! :@@t;:!:..,,,:::,::!Lttiii;:,.:. ........ .,,:::,.,,,.,,., +:..,,,:,. .,;::!:,;!;,:;:;i!,,:,:f;::,:!,;!iiff;!itf;::tt!;tG0: ,!;:.,::..,,,,,,. .:;!;;;::::.!, .,,. ..,. .. .,::;;,.,,...,, +,..,.,;;...,:;!;:,,,,,t!::tL;:;;:L;,,,;f;;;:;!i!!tti;;::!i;;it: .;!:,:f:,,;ii!ii,.:!tt;fttti;:;!::!CGi;;:::,,. .. .:...,:, +,::.,:,,...::::::::,::;:::;tfti;:i;.:;ft:!:;ftf;;Ci;;t;:;:;,,;. ,ffL:!f;;:,:!;;!i,;t!;i0####t:0ftitfLtLGGGGCt!::, . ,f!,  +:;:. .,::.,:!i!!i!!i;f;,:;;:;CCL:;:.;tL!,!;:f0L::fL::!!;,::;;:, .tt::;!:,,,,,,,,:!:,;;;L880G!;ft;;!:::!iitfi!::;:.,, ;0L;; + ,. .!:...,;;:::;!!!f,:ti::;!!,:!,;fC;,i!,:;:,:;i::;!;f::ift! ,!:!!;!:,:i:,;,,:, .,,,::;:,i;;:i!,,,!i;i;::,,,,. ,:;. !i:,: +. . .,, .,::::!fi;;,:!!:,:,:,:!:tft;.!!...,::i,;CL,:!,,ii!:. .t!:::!i;!L!:,,,.,...,:!:;t;if;;;!!!;tiii!::::;:,....:!i .,. .: +, ..,,:i;:;;::,,:,;,:;;ti:!:;it!,,;:,,:,:::;ii!;,,:::. .::::,,:!;t!..:..,;,,:i!;fGL:Ct!i!Lf;ffLGL;;!fffiii;:;!!::::::: +..... .,,,::,:,,,:::,;;;::;;;iLf,,::LCC:,!;:,,,,:,:!tf!!itt;: ,:::!;:..,,;,..,,,,,:,:;::it;:Lt!iittitffLLitfLLLfLiit;;tfft!ff; +,,:::.,,!!.......:;ti,,f!!!,,,:;;::!;!i!:,::::;:,;:;!i;;;!i!;: ,LL;::,,,,,,,,,,,:,,:;:.,!:,,itii!;:;Cft;!;ft;;;;;:,,,,:;t!::!;, +..,,...,,:,,::::::;;::::!;!;:,!tfLGGCti!!!itffLt!!:;Lf,.itti:,, .!iii:,:;:.,:,,,. .,,;,.,!;,,:::::::;!!;::;;::,,,, .:i,.  + , ....:!iit!;;;;!:,!,.;fL;;i@##0GCCCG08#@@@@8G0!:t!..:i;,:!!. .:!;!!!!!::,,....,,::::;;;;;!!!!ittttLLLLLLLCCCG8LttC;i;, , +:....,...;t:,::;:,,:,,.,.,;;!itfLftiitLLC@CfLCfiL0!... .,,,:!!!!!::;;!tG0Lft!!;!!ittfffLLffffCCCG00G0000008@#@@#####fi##, ,, +,::::. .. ..,,:;!itttLCC;;fLt!;!;i8fiG#@L##L!!;iitLfLCGGG08G,,i!!!!!!ifftii!ii!iitttt!!iiiitiiittfttffffffLC0Gf8##, .., +;LC:i,. .,,:::::;ifff0@@####fi!!;!fGfttt!i0GC8##G###0@###@##@GCftti!:,,:;!iiitiiiiii!i!!!ii!;;;;:;;;::,::::::::;;;;!ifG@;. .,., +.;;:,i,.:ttfCCfCGC008088@@#8G80ff::i88Cff!!ft!!;;!t8###tiiii!;;:,,,:!!!tG8@@GffffLfttLLtfffi;:::;!itt;;;;:,,,,,,,,,:;::,.  +,...,,:;i:!ittiii!!!iiiiiffG@###;..,:!!;:;,,,,... ,:!i;,.. .,:!iiL080CCCfttiitt!;;!!!!!!;;:,:,::;;;;itti;:;:;:,;;:,,, , .:  +:,.,,:;:,,.,,,,,.....,,:,:;;ii!:, .:!i, ......,::;;:,;,. .,,:f08LCCfti;;:,,,,:,,,,!;;!!,,,,,,,,:,,;,,::;!!i!:,:!i;;iL!;;,,. . +!;,...,..........,::;::;::::!: !0@0: .:.::;iL0GL!!:,:;;;;tfi!iii!;;;;:,,,,,,,,,,,,,,::,:;!!;;;;:,,,,,,,:::,,,,:;iCG!fGCf:!!:, +;,,.. . ..,,.,,:,:iffiti;;;!iL,.,!iifii.:!itL@###Gi;;:;ifGGGLfi;;!!::::::::::::;;:::,,,::;ifCGGCGLti:;!!!;::,,,,,;;f0:,:;;;:!Lf; +:...... ..,:::::;::!;;;;::::;!i;0#@LLC; i@######Gi!fi:;!!itittii!;:,:;::::;i!::::,,,:,,,,::;;!!!!i;;:,::!;,,,,:,;;i0i. :,,:,,;,. +:,,,,,,::;!ii!:,,,,,,,,,,,..,,,!######Li;!L88Ltt!!fL;,:,,i;:::::::,,::::;;:::,,;::::;;:::::..,,,,::,,,,,,::,,:,,,:ii, .!::f:!: . +,,!i!!i!itfi;::;::,:!!;::::::,,:!tiC####, .,,,,!tt;:;!i!ifLC!:::,::::::,,,,,::::iti!i!;:::::,:;:;;;;:::!:,..:,,.,::, .:f;L;:i:,. +!!;:;i!,,,,. .!it!;;;!;:;iitf;:!!,,;itfi:,, .:;::,;###8C##G0C;;!;,,,:,,::,:,:;;::,,,:,::!!::,:,,::;:::::,,:,:,::;. .C;!C;:!,:. +;,...,,....,,,,,:i!,....,;!tf;;!;:!i!:,i!:;;:..,::;;:;!!8##G##i,,,,...,:;!!:,::::,,......,:::,,,,:.,,;!:!:!!:i;!::! .,,f;:t,,:  +...,:,;;:!!i!:. ... .. .,::,,,,..,,....,:t8;,. .. .;!;ii;:,,,,,,::;:;:,,;;;ii;,,,:,,,:::,,:::;,,,,;::;:!:!!:t, .......  +::::;;,!!::::,,.....,:,,,:!, ., ,:!ttiifLLfffftii!ttiiCiLtiiiCLtLtGCC800fLiiiiittti!!;::::,,,,,:;::;,,,,;,;,,:,,,.  +.,,,,,,,,.. .,,,..,:,,,. .. ;#########@#######@88@@@@@@888@88@@8088@@88800GC080tfi;;;;:,:,,;:;:,;:,;,,:,:;, .,..:..,. .  +;:::,:::,..,,,,,,,,,,,,:,:,:,,::,;0Li!if0Li!!iiiti!!!iii!!!!!!!!!!!!!!;!!iiiitiiiii!;:;;::!;;;;!;!;,,,,;,,:.,;,. ...!, .  +;;:,.,,,,,,:;;!!;;;;;::,,,,,:,;:;::,,,,,,,...:.,:. ........... .....,:!:,:;:::;i;;;:;ii::::::,!:.:..,.., .,,,. ,:  +;:..,,:,:,,,,,:::,,,,,,.,.,,,:,,,:::..,,... ..,iC, .::,:,.:,::....,,..,:,.:;i!!;;:,,,::,,,.::.:;,:,,::,, .... .. .  +;:,,::;:,,.,,,,,,..,,,,:,,,:,.. ..,............;:, ..,...,:;::,...,,,,:. ,::::,,,..,,,,,,,,,,,..,:;ii: ,:  +;;,::::::,:.,,,....,,:....,.,.,.. .:,,. .. .,:: :!:,,,,:t!::;.,,,,...,.,:,,,,:;:,....,:,., ,:  +:,,:.,;,:,............,.,.,,,!;;:,,,,,,,,..... .,;. .:;;,.,:!fL,.,;;::,,:,,,,,,,,,,,,,,,...., ... . ,. . +:;:,,,: . ,..,.,.,,.,.,.,,,::,,,:::!t;:;::::;::,. ..,,:... .:;!: ,;::,::;;;;::::::::::::;!!!!;::;:. . :  ,.,:;!;:;;;;::,,;;:iiifLfG#8i:;,,::!!;!!L08####@80Gtft;,.. ...,., ... .:, . . ...,..:.:, , ,:,,,,, :i! + .. ..,;!;:,..,:,,,::::::!ii!!:,;,::!fGtfC8G0#####@;.... .. ,,,:,....... ..., .:!!!!,,. . . .:;,. .:;tC,  +.....::. ..,,,... ,;:,.. .. ,:::!!;,,,,:;:::::;;itttL8!,:t!. :,,.... ,: ,.,,, .,:,:,,,,::, ....;!;,. .,!LG;:,: +,::,,:,,,.....,:::i:,:, ,i:,....;:,,.,:,!!:!,:...,:;:,!i::::,,;:!t:,i,,:. .,,,:,:!..,f:tf: . ...,,, .. .,,.,:!C0t:,.., +... ...... ..:;:;,,,,.,,,.;:,,:i,:,.:,,,,!:::,,,;t!:::; :i:..,f0G;;!!ft!!;::;!,,. i:,,!i.. .....,.,......,,,. .,:;LLCf:, ..., +. ... .,,,,,,,,,,::!:,:,,,:t;;!,,,,;;!;:;:,!;;;;;;::::,;ft..i!ifLffLLL00Lf!:;;;::,,. .,,::;:;.,.,;,,,,:..;;fCtf;,,.. , +:.,:;:,,,,::;!i!!!!iifC!!::!;;fCf!!,:,!LLC;,::ii;!Lttfti!t!!ii;:;0####0GCCfi!!!;!tftf!::;,,. ........,:::;:::,,..,:;;:,,,;!:,... +:.,;;;:;;;;:,:!i;!i!!f!;;::!;C!!fti:!::!Ci!.:;0i!ifGCft!;ttCLC: ;8###8t!;i;,,,,,;i!!iitGLi!:,,.:. ..,..... .,,::,,,,,,.,:, +::,,,,,,:::,..,;:;!;:::;,,:;;!!:,;:;t;:::;;,:!fiti;ifff;:;tftt, ,Lt!!:,,,,:..,,,,,,,,:;!!;::!t,.!, . .,,, , .,::::,..,..., +,:. .,,,:!:,..,!;i!,.,:,,!!:iL;,;!:t;,,,;t;:;:;!i;;fLf;::;!tt, ,!:.,::::i;,,:i;:;;,.,::!:;ift;:i;,,,:;!;;::.. ....;,,..: + .,.,:,.::,,..,::::::::::::!:;tt!i;:!:.:;ff:;::itt;;ti:;i::;it, ,i;::!f:iC!;:,:iiiti,;t!,;G###f!0fititG0CCGLfii;,,,. .;i  +..:;;!, .,,:..:;!::!i!f;f;::;;;!LLf:::.;tCi,;::LGC;:fi;!i;;,:!, .!!it;::;i:,,,,,::::;:;;:;G###i!Cti!!!!!!!iiiLfi!;i;,.. ,GG; +....,:. .;!,..:!i;::;;!!f:,it::;tt::;,;fC;,i;,;!;::;t,;!L:,;i! ,;;;:,;!!::,:::,:.,;,.,;::!i!;t!;;:;i:,.:;:;i;;::,,... .. :L;  +. . .. . ,:.. .,::::;ti;!::!!:,::;,:!,iLf:.i!.,.,::;;,;f;. !f!. .!;;;!!!;ii:;L;;:,,.,.,.,,:;!:LL;,:;;;;:!i!!;;;;:,,,....;, ;,.  +..,:, .,..,:i!;!!::;:,,!,,;;it:!:;ii;:::,,,,:::::!!;:,:,. ,,;::;;;::;;!t!,,:..,;,,:!i!Ci;Gi;;!!ff!ittLf;:;!ii!;;;:;::::., +....,... .,,,,:,:::::;;:!:::;::;iLt,;,,tLf:;:,,,:..:,;iCCii!: ,,:,:,;i!:.,::!:..,..,:,:!i:!C;,CfiittLL!tfLCCi!fCCCLCLiitttti!! +,...,::;,,,;i,,,.,..,;tt:,;:ii::,:;;:,:,;!;;;!itfi;;;,:;!;;;;; ,Li:,,,:::::,,,,,,,,,,,;;;,:!!;;!!!!!!!;ftf!iiifi!!t!!:,:;if;:!; +,,...,,,,.,,:,,:::,,,:;::,,:;!:,:;ittti!iitLCC0@#@@Gti!i!.,ii;, ,!ii!:,.,!it: ,:,;:,,,;;t:.:Lf!,:;;;::;;!!:,,,;:,.... .!!,.  +,...... ....,;!ii!:::;;,,;,.,f!,!C0LLLfLGG0@G0#0fttC@80f;..iLt;,.,:;iff!!;;:. . ... ..,,,,:;!;;!!!!!iiiitiiiitittttti;,;:,  + ,t,, .,,.;t;,:;;;;:;:,:,.,!;:;!ttitLtittif8Lftt!!!!;:. .,;;;!;;:;;!t0GL:,::::::::,:::;!iittfLLCCCG00088880@@########:i#; . +,:;;!::,, .,. ......,:;;iitfCtfGLfGLitt!t#GC@G@0ti!iiiiiffLGCGf:i!;!!;;!itffftii!itftfLLfttiiiitfCLfLfLLLLCCCCCCG@CL##! .. + .itfC;t:. ..,,,:::;!iitC00@######;!fC8@CfLfLCLifif######@@@@8Lfti;:,,,;!iiitttiii!!iittttttii!;;;;:;;;;::::::;;;;!!itG##f. ,. + .,:;!:,t:.:tttLLfGGC8888@####0t!:. :!ii!!!;::,,..:t8##Liiii!!;:,,,;!iiG@@@GfCLtttitfffCGCffft!!:::::;!!::::,,,,,,,::;!!;,  +,. ...,::;!;!tLttttiitttiL#L:,..,:!C##t,,:,,..,...,;!;:. .,;itfG#@80Cfttiiftittt!!iiiiii!i;:::::;!;;;ii!;::::,,,::!. , ,  +:,,,,.,,:;:,,,,:,,,,,..,,,;f:,,;tG@####f.!tii:::;!!::!,. .,,;C88@@Lffi!;::;:::::::,,!i;;i!;::,::,:,,:;:;!!i!i!;:,:it!t;;:,.  +!!;;:,,..,..........,::::::;!tftL0@8Cfi:.;:;;!tC80C!!;::;;:;ifittii!;:::;!::,,,,,,,,.,::,,::::;;::,,....,,,,:::::,,:;iLtLGCt:,,  +!!:,,,. ...,..,,,,;tfttt!;!ti!ifLti!!.,!ttL####0i!!::fCCfLfti!;;:;!;::;::;:::,,;;:,,,,,,,:!tffftti;:::;;;:,,,,,,::!Li,:;;!!iC! +::,...... ..,,:::::::!!;;;;:;;;:G###GLi.;0######Ci!ft:;ffi!ittttii!;:,:!;::::!;::::,,,,,,,,,:;;iftLLfti;;::i:,:::!;iLG, ,,,,::. +;!::,,,,,,::;ii!;,,,,,,,,,,,,,,:C#####08!:itftti!!fC;,,::iL;;;;;;:::,,::::;;;:,,,;,,::::,,,,,..,::;;!;::::;;:,,::,:;t;. ,!:f:,;  +:;;:;i!!ii!tft!::;::,,!!;::,,,,:;!iL####; .,itt;:;iiiifC#t!;;:::::::::::,,,,,:;;!i!i!:,,:::,:;;:!;;:;;i!::,:;,,.;! ,f;!f:!!. +;iti;:;ii:,,,, .;tti;;;!;:;iii!!;!!;ifft!:. ,:;;:,:@##@C####@!i!;!!:::::,,,,::;;i!:::::,::!i::::;,,:::::::,,:::,,:, ,LG!C!:!:, +::::,..,,...,,,,,,:i!,....,!ift;;!;;tffCLi:::,.,;;!;::!!0##0##f;:::;:,,,;;;;;,,::::,...,.,.,:::,,:,,..::;,,;:!::;:;: ,L;iL;!!,, +,....,:,:;;!!i!:. .... . .,::,,,..,,;itttt0;,,..... .:;;i!;::,,:,,,:;:::::,,;::;:,,,,,,,,,;:,:;:,,,,;,:!:!;;i;t!: .,.,;,,. +,,,::::;,;!:::::, ....,:,,,;;, ,:!tf####CfftfGti!iiiiLiCftiiCLtLt0Lf0G0LCiiiiiitti!ii!;:::,,,,,,:;:,;,,,,::,;,:::. .  +,,,,,,,,,,,.. .,,,....,,,,;. ;#########@@##########@@@@@888@888@@0@@@@@888088080itti;;;:::,,,,:::;:;;,::,;,,;. , ,,...  +;::;:,,::,...,,,,,,,,,,,,,,:,,::,;0Liiiitt!iii!!tiii!ii!!!!!!!!!!!!!!!!!!iiiiiiiiii!;:::::::;:;::!;!;:::,;,,:,,;,. ,,. . .  +!::;,..,,,,,,;;!;!:;:;::,,,:,,,:::::,!!:,..,; ..:!. .... .... ..,:!!::;;:,:!;:;;;;ii;;;,::,:,.,,.,... .. . +;,,,,,,:,:,,,:,,::,,,,,,,,,,:,:,,,;:,,,,,. ...,t:f, .,,,:..,,:, ..,.. .:,,:::i!!;;;;:,:;;,,,,,,,:!,,,..,.. .,,,.  +;,,:,::!:,,,.,,,,,,.,,:,,.,,,:,,...,. ....... ,;:.. .,. .,;;,...,..,;. :,,::;;::,,.,,,,,,,,.,:,,:.,;;, .,.  +;::::;:;:,,,..,,,.,.,,,,...,.,.,.. .,,,,.. . ..,;.,;,,,..;::;::,.,....,...,,,:,,,,:....,:!;. . .!.  +;,,,,,,!,,.............,.,..:,;;;:,,.,.,,,..... .!, .;;:..,ifLC!,::,,,,,:,,:,,,,.,::,,,..,,,, .:.  +,:;;,,.:.. .,.,.,,,,.,..,.:,::,,,:,:!!!:;::::;::,,,. .,,,.. .;;;.,:i;:,,;!!!!;::;:::::,,,::;;;::;;, .... .  .. ...... ., .,,....:;,,,,;tG8##@Gi;,,. ......... .:::,.:,.,, .. ...,,. ,:, +., . ..,. .,,,. ,!. ;;,,..:,,,:!ii;;:t!,:;!iGi;. .!::,,i!;;,!fLi!;. . ..... .. .. + .,. . .,;. ..,,, ,i, .... ..,,,,.,i, .:f: ,CL,.,;!;:,::::,,:,.,:.. .,::,.,,.. .. , ,:; +. ,,..,.. :t! .,..;:,,!!. . . . . : .. . !;,,,:!;..;f, .::,. :i:.,,;!i,,,,::,,,,. .......,,, . ...,,;!iiC; +,,.., ,, ., . ,::,.:..,,..;i, .,,. ,. ..;, , ,,,,.. ,C0C. .,,.,:;t!;,. ,t,,.,,;!:;:!f!;:,,,.,, ,;;::,,:,:,;,i;:tfGf:,  +.::.. .: ...,:,,!Ct,...;:,.:!:, .. . ... . .,:. ,:!;:. ,.,,,::,,..,,,::,,;;:!::;;:::t;!t!!!::,... .,,:,:::::;!!;,., +,,;, .:,., .;t!fGLt,.,.tfi!;!, . .,,..:,.... ,...,......,; .t::,,,:,,:::;;,::::,ft!;::;,;!!!i;i!iitffCfii!;;::,...:::;!!!;;:, +::;!,..:::,.,,;tti!:,:,.;Li;:,. ;::.;!;.,:,.:..,;.,,,,.;t; .!t!::;;!iiiti:i:,;;ffGCi!;:,;iCfi:;!GtfttGGGG00C0Cti;::,,...,.... +:.:!;,,:,..:,,:!;;:;f,..:!!:,,:.. .....:. .,,... . . .,,,;t, :f;.,;:;i!;;;:,:::;Ci;!!;i;;:;!;,,:!0tLG!!CLfLttGf880Cittii!:.  +;...;;:,:, ,ii,iL0G;,,,.;Gt:;:,,, . . ... . ,:.,:, !f: .:!:!:,;!:,:!:!t!,,::f;;:,:;:,;:i!if!;tii!:i!ftttiG8880Gt::.  +i;,,,:::!!::;::it0#L;,:.!#8t;::;:. .. ,,::!;,. .,,,;. ;i:.,:;;,,,,:,,!!:if;;;::f:,::!t;!;:;;!f;!fii;:;;i;!!:;i!!i!;;;;: +Gti;i!!ttG0!,,i:L####;,,:0#8ffLCt. .,,,!;. .,:!i. ,!,,:;;:::::;:,:::;tft!,;!,:;tL;:i:LffL!;Ct;:;f;;;::;,.,:::::;fL; +##CfG#0LC#Ct;:::!t###f.:,t#8#@Gt!:. . ,,.. ,;. .,,. .,;,:. ,;,;ii!;::;ii:,!i:;LCf:i:.:tGi,;::fCGi::ff;,;i!;,,,::,,;:;tt::;: +@#GLG##CLGLLL:..,!iC#f.,.!0#0ttf!;i:,,,,,,,,,;;:!!.,,:, ..., .:,.,;;;:;!!;!,;i!,;:;::i::!Ct:,L:,:;:,,.:;::,::,,,::;,,;::;:,,!! +@88CLCCLfC@GC!,,,C;;f0fL;t###;;#GtLtCtfLLLfttii::;!!i:,:,. . .!,.,:i:!tt::,::;:,:,:::;,itt;.:t,, .,..:i!:..,:;!i;..,;;;;;;i! +#G#LttfftL#@tL!!i;;i###i;0##CiiC#8fL@#######@@t,,::!:,,.. ::,::;:::;;:,::;;:;;!t;,::!ti;,;;..,::!!:,;!!;:,:;:;!;:,,,:,,:::: +#CLfffLfffCLt;;:!!;##0!;iLCCCGL@##Ltf#######Gi:,:i:.:!i!!!;, :i:,.,..,!;:!,,;;i!;LL:,,,LCC!,t,.;Li;::,:ifGL;:,::!tt!;.,:,,::;; +@LLLfCLLffff;,,:,;C!it;,,,ffCCf@##i,,;!itft!;,:;!!i:iG88888Lt;,,!t:,,,,,,,,:,,:::;!ti!!!!!i!::t::f!::,;,:;!;;,,.,,,:::,,,...,!:. +@C00t80GCfCC:,;!,,ttfL#;..;ffftLf;:.... ;8t!t;:!i!tf;!ttiif@@@C;,,ii;,,,,,,..:!::tG008#@Gi;:;;:;;::::!;:!i;..:;;::,,:;::,,,,,::, +8G88LtLCLL08!,,;!;;;;!tt,.,!LCi,. ,..: :00t::;;;!!!;:::..:;!i8G, .:it,,,;;..!t;!iC0#8#@Lt!:LL::,.!,,f;;Lt: ,ifti;;!tft!:,.,:;i; +GG!!t::!f!t8!..:C!!;::,,,,,;i;, ..,;!:,;i!!!iti:,::,. .:;:, .,::..,:;::!tLCG000CLftiii!;,,,..,,,,:,. .,::,,,:::,,. .,,. +f!::::;:::;;tfi;::;tt;,;ii;fL;. .,,,,,;;, ,;:;;!!if:,itLi!!;!;ii ,,;LitfCGCLC@##########@8CLCftti!;::::::::::;::,......,,...,: +i;;!i!i!!i:,L@0, ,Gf!;it;LC;. :!i!!;,,,.. ,,..,,::ii:;0##@GG0Gt:,:!00GG###0@##############@#88##80CLCGCGLfLLLCLi;:::;;;!!;;::t +ft!itfffLf,,:;;, .,,:,.,.,,,. ,,::::,. .,:,,,,.,:!it;;tLLi;;;,,:!LtiiffLG8@8G0888800800GGGGCGG0GGCLLffCLtiiiiiii!iLtfLtit!!!f +::::::::::...,,,,,.,,,,,..,,:;!;;::::;:,:,.,;t0G!,..,::.,##! ....,:::::::!ifftifLffftfLCGGLCLCG008@8GGfti!!!ittLLLLG8@88GLftfLC +;,,,,,,,:::;!;;:;;;;!iii;:!ttttiii;t##@fffiL###@i;,,,:!;t8#f::;;;!;::::::;!LLfi!!!;!ii!!!i!itLffLCCCGGG0GtfLtLC008Ctitttitf!!fLC +!::::::;titt!:,:,,::;;;::,:;!!;:;;;######t@####t!ti!!!tC8#i;!tfLffti!!;;;ttttttt!;;!!;;;;;!!;!i;;;;;!!ittC8Ct!iiii!;:;;;::;::;!t +;,:!i!!;;;;;::;;;,,:;;;:,,::::::,,:;C###0!;iiii!!Cf:::;f0i:,::;;;;;::;;:;;;:::;;;!!;i!iiiitt;;:::::;;;::;!i!;:,,:;;;;::,,,,,,,,! +:,,::;!:,,:;;!!:;::,,,,::;t!;;:;!:,,:!ti;:;. ,iti;!!;:,::!iLi:,,....,,,:;:::,,,,:::::::;;;;!!:!!:;ttiit!!!;;;!::::::;;::,,,.,,,: +;;;;::;:,,,:;;,,,,..,..,;!;;,:,:!!:,,.. .,:, .,::,;##LtttC###!::,,,,,,,:::::,,.,,,,,,,...,::::::::;;!iii!::::::;!;::;;:,,,,,:;;; +!;::::ii!!::,:::,,,,,:...,,,,,,,,,,,,,. .,,,,,,,;;:!f##8#####L:;;:,:::::,,:!;,,,,,,,,,:::,,::;!;;;:,,:::;:,,,,,::;!!!!;,,:;;,,:; +,....:::;ii;;;!;:;;...,,,,,;!!:::......,,:!:!!;:,. .;L##@0##C,.::i;:;i!;:!;::;!;::,:;!!!!;,:!ifti;:,,,,,,,::,,::,::,,,,::,,,.,; +........,,,,,,,,.,,..,!!;:,:::,,.,,:,..,,::;:!#G:.. ,:!i!;;iti;,,,;8!::;::,:::,::,,,:::::;:,::;;!;:::;:;:,::,,,,..,:::,:;:,;;;;! +;!:,:;::::,,,..,,,,,,,:::,,:::,,:;i;:,..:fLfit##!f;!t8@f;tC8@GCL!iiG0;ftt!i;::;;;;;::,,,::,..,,....,,,,,,:,,,,,...,;!!;:;,,:;!;! +;;::,::;;;:;;:;!i!;!;,,,,,,,,,,:!!::,,::tCLLtti!!ffif0GfLffCCLLLfftftt!iitftftLCffff:;,.,,...... ...,.,.,;:,;:,,.,,:,,.....,,,; +:,,,..,,,,,:;:;;;;;::,,::;:,,,;;;:,;;. ,08;::,,,:,,,,::::::,,,:::::::;,,,::::;;;;;;:,,,.,!:,,,,,:,,,:;;,:,,:,,,;,,,;:,. .,,...,: +, . . ..,:,.,::::,:;::,,,:::,,:,:!tfLi;,;!!!i;:::::::;;;;;;:;:;::!!;:,:,::!!!!!!!!;::;;:,::!;;::,::!,,,,,;,,;;:;ii:,,,,,,,,; +. .,.. .. .,;;:;::!;,..,,...,. :####8,,CC0GLfGfCCfGfG0GGLGC!GCfL00CCi:C!t00C0000fC;..,.:,,,,,;,..,,,.,:,,::,,:::!i;,,,,,,,; + :, .,,. ....,..,,:!;,,::. :C@@#i,,:;;;;;;;::::;;!!;;;;;;;;if!;;:::::;!!!!!!!:,. .,,,,,,,,,:,,,:,::,,,,,,,,:!;,,,,,,,; + ... . .:!i:,.,,.,,,,,:;:, . ..... .,!, :,.. ... ,:,,...,,:::;;:::;!;:i!::!:,,:,,,,,,::,,,,,; + . . ..... ,!!:,.... ....,;:, . ...,... .... .!: .;;... .,,....,:;:,,,,,::;:;:::::!!::::i;:,;;!,,,:;;::,:! + .. .,,;:::::,,.. . ... ..,.,i; . ,:: .. .,,,,,,,,,:!;:,,:;;;::::;;!;;::!:;;!!!ii!!ii!!!!!!!!!;;  ..,,,::;;;;!itiii!;;:,,,:, .,:;!!iiiitiiiiii!;::,. .;:: .. .... .,::,,,. ,!i::;.  + . :fL!;:..,,... ... . ,:.............. .. .::. .::,.,.,;, .:!i!;::;::,,,,, .,,;G0:.  +,,, ,CCLGL,.!;;!:,.. .,.,.. ......,,,,,..,,. ,;: . .!t:. ...:i!;C:.. ,!::;i;,.,,.,,. .,::;;:,,,,,,,:fCf!0!.  +,:;;::;;!f;..,,tf!:,.,ii!,i, .. .,;ii!i!;tt;,,;i,...:;:;!::..!t, .:!!:ii.:. .!,..,i,. .,,,::;;;!!ti;iCC;,,.  +;tLf;. ,;i: ..,,:,:;,,:,.,:;;, ,,,;ti!;:;!iii!;:,,..,!G88: ,::. ......,.....,;:,.. .:, ... . ..,,,,,,:,::,.,,,,,:, ., +:!!;, ...!C!.:,,:,,::,. .,t, .;:.,:,,:,::!G0f!;;,,,:i;i8L;tG,,,,. .. . ,:;,,:,,:. .,::i. ,,.. . .. ..,,:;::::,::;; +ftf::,..,;!:..:;C;,!:..,....,,:.:,,,,!:,:;!;;!ii!;;;::,,.,::L00;,:,. ...,:;iGCi,:,!!:,,,::;,;, ......,. ......,:;;;;:,,:!if +0LttL0;.;LLf: ,::;.,;,,,,,:::::,,:,,,;;;itfLtif!:!ti:,,::;!,,;;;,:, , .iiiLti:,.,;ii!i!...,;.,:,,.:;:.,,..,,..:,.,,;!:;!:,,:;if +f8GLC8f.:fC0! ,;,.,.:i:;i;;;:,:. .;:,:::iiiCffGL!iL!:;;ii;;. .;;,!!,.,.,,i;,;:.. .;;;;;:,. ,. .,. .;:. :;,.:. ,....,:,,:::;!iLL +;iiitt!:,:;;:,;!::,,;!!!;:,,. .,:;:::,:;!!tfCffL!;;::;:;:. .;,.,i;,,:,:Li!::,.,;;!;::!;.., .,. ... .. ,;,:,,::;!!!i +tittC0f,.:!;i,.::;;:;;:,,,,;,,::;i;!;!iittitiiiitt!!t!!:,,; ,!,..::,::,tG@#t,,;:0#ti;::::,. .. .. .:, ::,,,,,,,;;:! +fi!iti!;,:tii!,,:tC!:!i;:;;,;;!C:!fiLtiC8CftitttttitCLi!!ii:..i;;:;;!;,;tC8@#t,:;80GCfii!L: .;, ..,,,,::,.,,,,,; +CtfLt;!!;;!ftft:;i!:.;ftt!;;:,;::!iiGt;i@GG#GG#G0#0@#f@#####, :@@CC#C!;:LG###i.,;0LG0#@G0f:. !L, .. .........,:;;!!,.,:::.,! +0LLCfiiCL:;tiLt!Lf::,,:;!itti;;;;;;!;;,!#8@0C0#8##0##L######, !##GG8Cf,:;iL@#;,,!iC@#CLLt!;:. :L:...,,:;!;:,:;;. .,:,,. ,!!,,,; +t;;;;;;i!::;!;;;!!!;:::;!!!!ifCfff!!!;:;##GCL0#0CCC8#f##00@t .G#GLG#Gt:,:0!fCL00tt0##!;@G!ft!!:;;;:::;;;::,,,.,.... . .,:,. .: +t;:::;;!!!!tLfLCCLCfffLLCfi;;iL##0ifLi;;L8CCGG8CfLf0#tG#00#i ,CGftC#LL;!!iL####iC###L;t80CfG#@8@8CCLLLt!;,.,,. ,, .....,: +ti!i:iCfLLCLC@######0LLLti!i!!iG@i:;ff;:!LLLLCCCLLf0#it#0##t ,G@0G0Lt;!i;G##@f!ifCGGCL8##@CG########8GLt;,:,:. ..... ,,,,.,::; +!;::!;tfii!!tfCCGGGCt;;!:::;f#0i:;,::;;;fCCCL00L0CfC8!;!i!!;..i@@@#G:!::0fit;.,!tfG@@####G!;iC0GCGGLt!!t;:,:,:.,..,:;,,:i!,,,,,: +tt;:,:;!;:::;i:,:::,,.,!,.,:C0C!iii,,!!i:i#CG00tfCtffttiii;i!.,;if8i;t!:ftt8!..iGfffL@Gfi;, ... .,.,.,!;;,........,,,,,,:,,,..: +iGf,,..,;;;,,;,.......,,,,,:;!;!L!:::;!;:;fLt!i!tLftf000Gft;;;. :C;:C!;::ifi..!CfLt!!!:,, .,..... :,...,.,::,;;:::, +.::... .,,,,,,,,,.,,,,::,,:::;ii;;:;!iiii!!iti!ffifffiii!!::;i!;,,,;:i;,,.;,,,,;!;:,,tCi;. ,,,,;..,,.,,..;t!;;i!i!; +;,,,:;;;;!!iittftiii!!iiiii!!tfi!iftiii!tGG8@8ii!!!::,,:!tttf0#0,:,:i:!i:.:!!;!t;:. .::;:,...,. .tt;::;,,. ,:,.,,,,,, +f!!fCCGGGG80GCCCCCGCCLC88GGGG888800GLCtiiLiiii!!@#GC!:tG####@8C;,,;Li;8#!.,!:Lt:,,,,,,;;!;:;;;:,..... .,!f:i,. ... .....,..., +0CG000G80CLLLLLLCGLLLCCCLLfL8@8#@GCfii!;iiii!i8@ft0@L!;0##G#i;;!!i8#!:itt,:;!;;:,!iii!;:,,,,,:,,,,,,,...,,::;;,,;;ti!;itt!tfftiL +0CfiiiifLCftLLtttLLC8@@Ci;;!iiitfftiiiitC08@8Cit::;!;::;!!!!;;G####C:.,;;;fCLtff!::::::,,,.,;!!;!;:,:,,;;:,::,:!ifLCCCttfCGCGG08 +fi!!!:;;!itt!!;:;;i!ifLLfitCLL!iL8880CCLtiiitti!!tt!;,,.:CC;;fG@@#@!;:;;;;ttiiiii!!;:!!;::,,:!!;:;,.,,,,:,,,:,::;::;;;::;!!!!if0 +tfft;;,,.,,,,,,,:::,;f8@@8@@8L!:!iiii!!;;!iitLLttf!,,i::;!itfLC0@t;fiiffiii;;::;;i!!!:,,,,;::,,,............,,,..,....,,,,,:;;!G +,:;;;:,,,,,:;!!;i0i;!!iiiitti;:,:;:;!::;fCGfii!!0f,::::,::!tfLGL!!i!!ii!!;;::::::::,,,.,,:::,,,,,,,,,,,,,::;;ii;!;::,:::::;;!!iG +:;tCfi!!!:,:;!::LG!!;:::;;!Lf!!;tft;::::;!;:,;!;;ii;!Lt:,,,:!tftL##!!ii;!ii:,;:it;;;;:,:Ltii!;::;::::;;;;;;iffttti!;;:;;;tttCCL0 +!ii!;:,,,,.,,,,::::,,,,:::;;;:,,,:,. .... .,,.,!f;@##ifii!L8####@!,,,,:;!!,,,,:itfft:tttti!:,,:;:,,:::,,::::::;::;;,,,:!!;itfC + ,,,,:::::;;;:,,,,,:,,:::,,,,,,,....,,,:i!;:,,,,,:::f#@LC#0#G##Lii;:..,,..,,,.,,:;;;;::,:,,,::::!i:,:,,,,,,,......,,:,,,,,,,::;t +::;itiitftii!;;!;;!!,:ift!;;::;;;::::;!ti!i!;;;;!!. :###t####t;,..;,.,;;. ...,!iii!,;:,;; !t!:;:,;i;;;:,,,..,,,,,:,:;;,,,:;::i +:;;;::::::,,,,,,,,,,,,;;:::,,,.,:,,,,,,:::;;;;;:::;;;!i;;;ii!:,,,,:;!;::.;!i. .,::;,:;!,,. .,:,.....:tti:::;,,::::,,:::,...,::;i +... .. .. ... . ....,ititLfi;!GGLfiLiftti;iL!i!LCtC!tG#t:::::;;;;::,,.,::,,,. ,;:::,,::;;::,,:;;,.......,; + .,,,,... ...,,iLtt!ittii!!ttCGGCLLf!ittLtCt!tit##8!LLLLCGGti;,.,::::;!;...,,,....,;iti!!::;;:,::,,,,,! + . . .,. . .00:,,.,,,,..,::;;;;:::,:::;!,,.,:f##!!i!iii!;::,,,,,...,,::;!;:,. ..,,::;:::;;;;;::;:::! + ,;, .,, . . .:itf!:,:!;;:;;;;::,::;;;;;;::i;:;;;:;ti;;!!!!!!!!;::;;:,,,,.,,,,,,....,,,. ...,,:,,,,,::::! + .:: ...,,..... :####8..C000CLGGGGfCiCCLGfGL!00iC0CGGt,t;t00G0000fGi,:;;;;;;;;,.. .... .:..!!...,,,,,,; + ... . ....... . :G@@#i..:!!i;;;!;;;;;;!!;;;;!f;:;;;!;::;::;!!!!!!!;:,,,,,,,:;;!;:,...... .. .:: ...,,,; + . .,...::,.,,,,,,... ,: ,,,,,,,,,,:;, .,,...,,;C:.. . ....,... ............,,::::,:;:::,:::,,,,..,.,,::,,, + ..,,,::,....,,,,,,:,,,...,,. . .,!tti!;:: ...,.,,:,:Lf,:.,..:,.,:..,:.. ..,,,,,.. . .,;!!;::;!!!!:;!;!;!;;!;!t!;:: +..,,,,,,,,,...,:,,...,,,,::::,:;:,,,,:;;;;:,,:::,. .,,.,::;i: ::.,,,;;,,,::,,:,,,,,,,,,..,,,,..,,:;;;;::,,:,,,:::;:::::;:;;:;  .....,...,,::,,,.. .........,......... . ,.,:;;, . .,,:;;,,,,... . !f: ....,...,,. + . . . .,,::;;;;;::. .,,,:;;!!!tLGf. f0t; ... .,::,,:;;::::,:;;,,,::,,:, .,::::.. ..,:fC::;.  +, ..,,,,....,... ..,..:;tttL00G0GCLt..,;i. .i,,!ti!i:iCii;;:.... .... ..,,:!!;,!!tGf:,,,.......,,,..  +,..., . .:,. .. ., ,tCi;;::;;;;;;;:,,... ,;!:,.,!ti:,:,::,,... .,, ,:. .,, .,:it,,:::!:!;;,:;!::!fi!!;:,,,,.  +;;!::,.::,.,,:!;,,,,;:,.,....,..,LCC0f.,;:i!,.,..,,.,::C88!...;L!::::,,. ,.,, :i; .,.,,,,. . ..,.. ..,;:,,,,,,..,:,,,:::;!i!: +:;;:,:.:i,.:;:;!;;!;!:.,:, .,:i:::;it:..,it!,,,;!i.;!:iiC0i;,;GLf:;;t;;:,,,....,,,, ..... .,:., ,;..,!,,,,. . .,,,,,. +,::,,..,,,.,:,,,:::::,.,,.. .;it!..,:t;.:,,::,;:,,,..,!!:,:ttC!;!;;,::tLfi,,,...,.:, .. ,..,..,...,:!, :;,. ..::. ..,,,.., +it!;!:..,.,,:::,,,,:::;;::,::;;;,...,i:.;:ii,,::... ,i,...;t;:,,,:,:;Lf:,,.,::;,,,... .;...,.,::tff,.:,:;,,,,,::;;,, ...,,:! +!;!tf;:;!tfLffCCt!!ifCCCLfLf0ftit;,;!i;,::tC:;;,...,,,,:,.:.,i!;!i;!;:;!!;::,,,:::!,..,:,:;. ,.;tiLCi;,.,:ft!!it;..... .,,,:,;ti +t!;;:iCtt88GCG080Ci!C@80LG80@8C08L,:C0G,,::::,:;::::;;;:.,; ,iiiLGiiL;:ttiti:,:!t;:!,.;i;!!,.,:,;f;;;,...:!;::::,. .. ::,:,if! +Ltfiitii!!!!;!i!!!;;!i!;!!!!!!!!i;,:;!;,:!,:;,!t!ii;:,...,,.,ii!tftLtiitffi,,,:;!;,,,,,,,:i:::::tt!:!i. ,ii;:::::,..., ...,::, +#0G8##CLtii!;!!!;;;:,:,:;;::,,,;t:.,::,..,:;;:!;:::,,,,,,tf,.fCftitfiffitG;,,,;,,,....,...;;!!:0#8#f:,,,i#0ii;,;;:,:: .. ,::,, +######@#0C8CfLCLffL;::!:Ctii;:;tf!,:tit:.::Ct:!;:,,,:;;!Li8i :@80Ltittt!!ii!f;::,,,:::,,,;;!;:ifC888i.,;L#8ft!!;:!t,. ......,, +####@Gfttttfit!!!;!tt;:;iLttftfii!;;tfff;,!!;,:fti;::,:t!i0! ,ifCCLLL0LfGCG#tLCCCffGCtfftL@Ci;i#####!.,!CCCGCGCLLCi:, ..,, +Gftti!;;!!ii;;;!i!!i!;;i!fCGLCLitCt;itff!ii:,,,;!fii!::;;if: ;:iG88GG#00#8##t#####0#@C##CG#C!,;!L@##:. !#888#@#Ci!;:. ...,:: +i!;;!;!ftLGft;fCG0i!!!i;!!!!!;;;!i!:;!!;;;ii!:::;;!iffttifL:,!;i@8GC0@GGCG##L##0GC0#0C8GC8GC;..;0iCLi!iLfG###tt0t:;i;,,.,:,:;::! +fLfi::::;!ii!!itftitft;!;!!:::;;!!i!iLLLCCCGLLLLLti;!tC08LL:,Ctf#@80C8LffL8#f#8ffLC#CfffL0#C;,,itf####Lt####L:i@GiLftLiitfttiiif +i!;:,,:,,!!;ii!;;;;i!!!t!:!iii;GLLLCLG#######0CCftii!!!fG!;:.i0LG8GCCLLffC@Lt#0LLfCCLfLfL0Li;i:!####Ci!G##0Ct!C#8GLf0#######@80G +t::,.,;;,;:,:::;;:;;:it!;;!;;;;iLi!!ifLCCGGGf!!i;::;L0!!!!;;;:;t!ifG8fCCLG#ii#GffLCffLffC0i:::iGtii;:!GLLL0@G8####GCC0#######8GC +f;ii::;:,,::!::::;tt;;;;iLCi:,,;;::,:t!,,,:,,.,!,,,!0GfCCCGLCt,:iG###fL0G8#i!#0LfG8fGGCC8G:t;,Li;i: !0LCffC####0t!::;itffffti!i +i;;t;,;,:,ii!L:,,;i!::!;;;ii,...,;;,,:,.......,:,:;!CCG80CfLitC;,!ftt!!ti8#;;@#fCG0ifCC0#t!t;:;!iG;..!0Gft!itti;:,. .,.,,: +i,,;:..,..,,,,,..,,...,,........,::::::;::;::,,,:,,::;itttti!L0! ,!i!it!;!!,,LCt;;;;;titf:CL!,,!:::,.:!!;;::::,.,, . ., +:,... ..,,,,::::::::::::;;!iiiittfLLLLCCCCLfi!!!ift;,,!88##0Ct;,,!8GG00fi!!!!!ii!;;!!:!t!;;ii!;:;:;;::,.. .;ff;,. ...  +:. ..:;!!ttffffLGLtfffLLfC0@88@800GGGG00CCCLC0GL0##0;:i@8LG@G;;!t#0CG#C;i8###CLGCLLt:,fG::.iCf!!LCfLfi,.. .:;;:,.......  +;,,,:;!!!iffftfLCLLCC0800GCffC00LLCLLLCCttCLCGLf##t;:,;!i;;ttt8##0CC8G!;LGL##i;!!i;:.,::, .,::,,:;;;:,,,,:;;!!;;;::;;:,..,..  +!::;;!iti!ii;;!!iiiiitfftt!;;!itiitiiifLiiiitttLCL:.;!itft;ftifCC00##i!L;;!t!;:,:,,,,,..,::::;!;;;:,. ,;::;:,:,,,,,,,,,,,.....  +!!!iiiiii!!!!!!ii!!iitttti!;,,,:::::::;;!iitGG8@GL:;tttfCL;:!!ifLG##ti@;.,;fCf!!!!::!,:;ifLLfttftii!;,,,,,:,..,. :;;;:;;;:,,,,:: +!ttfLffffti:::,,,,,,,:;!!;:::,,,:::!t!:ifLGLfitii;!tLLttf;,:;!itG8L;;0Li::;!fti::::::::!iiii!!!!!;!iti!;;!!!::::,,:!!::;,,,,,,:; +,:::::::;;::,,::::::,,;ff!!ti;:;!!;f0ti;;!!!;:,,,,!CGCft: .,::;!i!t0t!tf!:;ii!:::::,;!;;!;::;;;::::!i!;:,:,,,::;:.,,.,.. ...., +,!. .!i;:!!ifftii!;:::::::,,,:::;;;,,.,!!:!;:::;i!!!;!;;,;itfif###f:!!i:,!i;;,,,,;!!i!::::::::::,,,,....,,,,,,,............,; + .. .,,::,,::;;;;;;;;;:::::;!;::,,,.,,,:::,,,,:!;:;:;!iG#C#L###@@#Gi:,.:;;:;!!;,..,:;;:;:;ii:,;:!i!;:;:,,;fi!;;:,,,,:,::,,,:,:! + ..,,.,:::;;;!itfffftffttii;;;;::,:!i;,,. .;ii!iti8@f#@#G#Cii!;:.. .:!:;!i!..,,::,,.,,;!;,..,:!!fff;!Lftti!;:::;:,,,,::,::! + .,,,::::;:,,:;;;:::::::,,,,,,,,,;!::,,,,:itiii;:!;;;t@t::,,.;;;:::,:,,,:;,.,!i!!;, ..,,,,,,::::::,:::,,,,:;;!!:,,,,,,,,,; + .. .,.,,,,,:!!!!ttGC0Ctii;!;;i!!;ff;f!8#GGLt:;,!t;:;!i!!;::.......;!!t!;,;,.,; .;:!tffi:::,,:,.,:; + ... . . ... .,,iCttttffLCt!tLCCLGLfitLffti0LC8Ct!ifL0ffLCCCiii:::,,, .,,::::;i!... .!f!:;;:,:!;:;,,,,; +,,.,,,,,,,. . ,00;,,,,:!:,,,:;;;;;::::;:,!::::;,:###Gi;;;!;::,,,,,,.. ..,,,,...,,::,.:;:.,;!i,,,:;; +,,, .,.. ,: ,, .:itf!:.:;;!!;:::::,::;;;;;::;!::;::;!L###;;!;!!;;:::;;::,,,..,.,...,,::::;;,.... .,,,:,,::; + ,, .,. :####8,,CGGCLfGLCCtC!C0CGCGfi0CtG0CLCf;G#LCGC0080fG;,;;!;:;:::,,,,,.....,..:;,,,.........,;! + ....,,,. ,..,......... ,G@@#i,,:;;;;;;;;;;:;;!;;;;!t;::;;;;;:,,,::;;!i!!!;;,::,,,,,,,:::,,:,,... .,,:;;;:,,....,, + .,.. ....,,,,,,:::;;:,..,:,::,,.,,,:,, ... .,:!. ,. . ,. .........,,::,,:,:,,,,,:;;;;::,.. ..,,,...,::,:, + .,..,,,:;;::,,:,,.,,..,,.,:;:::::,,. .,,,,,,...::it. , ,, .:..:.., .:..,..,.,:,;;,,:,,,,,;::;:;!;,.. ....... + ...,.,,,.......,,::,...,,,:;;:,:::,,.. .,,,:::;;;,., . :. ,, .,. ,,..,.,,,:;,,,..,..,,,:,,:::::::::;;:;:,,,..,,,,. .  .... ..,,. .,,,,::,.. . ...,,::,,:,,.., .... ,:i: .i;::;;t +.,,. . ...:.,...:!it!;;, .....,,::,.. .,.,:!,,::;;:,.:!tifLf!:..,,::iCt;;,,::::::::::,,. :t:,,:t +,!!:,,:::,..... .,.,,,,.. .,:;;;;::,..: ;:t;tf,!LG08G..f8GLLLt;:,:!!ift;:fC,.;!tLCffCCLfti!;;;;;;;;::,.,;;.,tt + .,,:;;i!;:::;!:. ,:,, . ..,,,,....:!:,.;!;f;:,;!!!:,.,:::,,,.::;;:::, .,,, .,,::::;;;;!itfLCCGGGGLLfi:.,,,;t +. :,,,,,.,.,:;:,:,,:!:;;::,,:,.,.. .,;,.. .... ..,,:,t00;,,.,tf:.,. .. ... ..,,,:,,.,,,. . .. , .,::;;;;;;;;:;:!;if;; +,, ., .. ...,;i!ti;;!i!t!;;.:!,,::!i;:;:!;,::,.,,:!iLfii:,iC:;t;,...:;,.i, . .:;tft;:,ii:. .:. . ,: . ...,;;L0f, +tf;,.,,, .,;;;::,,,,::,,,,:i,,!!;;!!i!!:,,:, .:;ti::;!Li:,,,,;:;;:,,..;;,:.,,:!;!t!::::;!;;,.,.........,; ,. .,,, . ,tf;, +.@0:,:!. .,:,,,,,,...,:!!;::,,,,,,,,,,,::::,,,,....,;;;.. ;8t.:::::,:;,. ..,i:..,!;::,,,:,::iGf, ..,::!,,.,!. .;, ...,:,,,,.  +,;:,,,,, .;;;ii;::,,,tGGCttt:,:;!!!!!;:::;!iii!!!!it;;:, ;8!.;;CC::;:......,::.,:;;:;;:::;;;;;:,,,,.,::,,,,,,,,,;,...!itft!!i! +,:,,.,.:,. .,,::;!t!!;;iti!;ttii!G0GCC08Li!f8@8GC8C8Gtf0C, ;8t.,:;;,,;:,,,:;;;;;,;!;;;!it;:it;;,,ii!,,,;!;!;..;i;:!,.,::ttiif0Gt + L8:.::.,, ,.,:;:!!iiti;;!;;;!!!fLttLLCGC;t0t!iffiiGttGL: :0f.::..,,!i;!i;;;:::,:itif!fL!;iLi!;!i;,::;ii:,:.,::,!i;,:,:i;;:;ti; +i!L:.,..::..,,,,::;ifLLLLLCGCGLfti!!!itii!;;!;;;!;;;;!ii!:.:fi::::,,:!!;:::,..,:;iffttttii!tffi;t:,,,:;:,,....,..,!ti:LGLC8;...  +t:.. ...:;. ,,,:::!L0#@#########GC8fLGGLtf;,!i;GiCt!!t00;:i,:f:,,i!::;:,,.,;,:!;iCCLLLCCLCiiit;;::;!;;,:,.,,,.:;..;;:!ftL@#C;!i! +t,.,,:,.::. .:::iiiLLL@#######00GLCffti!!iii;:!Lftttitti!it.:G!,:tC::ti;:;:::;i:!0G8LL0CCffttttiifi!itti!!!!!;!i;!!;:f8L0888;G0f +f:..;t:.,,;..;!!!!!ti!iffCLfti!iitt!!!!i!!ti;:!tLLfLGfttit!.;0L::!;:,tit!!;::;:;!!fGfL0G@0G#GG##@#if####0##CG#8L0#L;:tt@###t:;!; +;, ,i;.,,,..;;:::::!;:;;;!;::itfCLt;fG88i!!i!;!!!!i!!!LL!:.;L!;f!;,,:::tLfi!;;!!!!!tG80CG8#0@#8##t###@88##G###G8Cf,,,;Lf##ii:,. +. ..;,,,,..,...:,.:::;!itfi:::;!ii!!tLCfitf!!;;;:::;;!!tti,!CCCCGLftiii!;!CCfftLfitt88CCC@#GLL0##f#8CCL0#0LCGCG#Ci,.,0f!ttfCiLL +,..,..,;Ct..,,,,,,:,!:,;!!;:::::!;;ii!!!;i!!!t!;iii!!LtfL0@::8######@8GLi;;;i00!!LLGLGCLGCCCLfL0#ft#0LCLG#CttttC#0t,;;ttC###C!if + ,;,,!,iL!:,:!;;:,:::::i;::,,!;:!:,:;!::;!:!ti;;;;;!;Lf!itCt:;Ltfttiii!;!t!;;;;:,!LtfCLfLLLffff0#it#CLLLCfLffffLfi;!!!#####Li;:: +..!;,::;.:ii,,,,:::!tiii;it::;:,::;!::::tt;;!;iff;,,:!ittiiff::CiLi!:,,:,i0G!:;;;;!;!GGCC8CL0GC8@!G0LtfLCtLLffCG;::,!@ti!!::t@;i +,,,,,,L, .,,. .:i,;if!!;:;f!:;::;t!C:,,;ii:;!!;;f;:,.:GGCCti0t::tftiG;.,,:!!L0CL;it;:f@0GGLt0C8#f;0#CfG8ff0GCC8t,!:,ff;ii.,.f#t! +,:,!;,,;,,...,,i:.,:;!;;,,:,....,,:,, .,,..,,,..,::,,!tffi!ifL, :tii!!::!!!;itftttt!;iffiiii!!f@!,L#LCfLi!LCC@G;;;:,;;!f!,.,G@L, +::,,;,,it!:..:... ..... ...,,:::;;;;::::;;::!ifLi;0#@@0CGi:.,!LtLLLtfCGfitffG88GGLtfLCLfi::;;,.tft;:;;;!!if!;Ci;,:i:,;.,,!ii! +,..;::i;f: . .,:;::,,....,:;!iffCLLC0CfCLCGLLL0##0;;@#Lt8#0i;!f@CffG##L!iLGGCCCLfLLG@@@@Cftiii!i!!ii!!;ii;iGii;!i!;;;:::::::,,: +.,,..,,,.,,;;;;tLLGf!;:,::;iiitLLftfLCCLCG800C@#@i:,;it!:iCtC@##0LfL0@f!!iLt@##8Gt;;!!tti!;!tLG0LCC08GCL:,:Gf:,,tCfi!iCLffft:;:, +:i!;!; .iGGfff;!f;:;!!!!!ii!iti!!iiiiiiiii!!tC!,;!tfLL::LtiLCC0G8##ii0ti:;!iifCfttftti;::,:;!i;;;!!!;:, ,,,. .,::,,::;L;::,,,  +.,!LC, ,;;::,....,!ttftiiiii!ittttttti!;::,,,:!fftLGL:,:!!tfL0@##ti#0;,,:it!0@@80CCfi::::::::::,,:,...,,,::;::::;,,.... ,;;, + ,:,,.,....,,:,..,,,::;i!:,:,,,,:;;!!;!!!;::::;tLCfii!,.,:;!itL00i;;@8ii:::ifLfiii!;;::;!!!!!tti;:;;:,,:;!ifLftttti!:,,,,...,.  + .;!i!!!!!!:;!,,, ..,,,...,;!itiiitLfiti!tCGCfii;. .,,:;!ti;;i0Li;!t;;!iii;,,..,,:ii;;;;;;;::,,,,;!;!!iiii!!;!!!!ii!;;,.,, +,. ,;ittii!iti:,..,. ,:;!;,::,::::::;;;;;;;;!!!!;;f#i!;;!itt!!C###@t,::!i:!t!;::,,:;;:::;!:,,::,:,,:!!;;!i;:;!;;:::;;i!:,:,:: +;;;, ..,,,..,,,. .,::::::::::;;;;!!;::;!::;;!!L8G#@#0@###!0###@f:. .,,.:i!;::!!!:,,.,,:!,,,,,,,;;!!!;:;::::::,,..,:;,...., +;;!!,....... ..,. .::::;:;;;!tLCftt!;!!!;!!ff!8##f####L#f!;;!!!;,. .,,,:;!!;!tf!;::,,,!:..,..,:!i!!!::!!;,:!,:;:,,,,. .,; +;::;;::;::;;:, .....,..,:::::,,:f0ftii!:,;!;:!f#f!::...,:,:,,:,,,!t,:!t!,::;;:;;,,:,,,,,,,:::,,,,,!i;...,;i!;ii;,,,;t! +.....,:::,::,,,,,. .,... . .,!t!, ,tffC@0Gtiiii!iiittfCfffiLL#GC0CGtt;;!!iti!;;;;:,:,,:;;:,:i!;;:. ..,,,,. .,,:!!i::tt;; +. ..,,,..,;!i!,.,,,,::, :###8,.i@0GG0@8888888888888@88@88#####@@0LtG8888888CGf;::!;,,,,,,:,,,:. ..,::::,,,,,,,::,.  +.,,,,,,,::. ...,,,, .,,,. ,Cf!;,,8@!;!i!;!!!!!!!!!!!!!!!!ii!!!!!!!!LGGLfiiii!!!;:,,,,,..,,.,. .., .. :;;tt!:!i, ,!, . +.::. ..,. ,:. . ::,::. ,: .,... .,!, ,.:####!..,,,,,,,...,,,,,..........,,. ..,,,:,,:;, ... , + . ......,. ....:,. .....,.. .. .... ,:,;:..:f! . , :::L##:,:::.,:,,::,;::,,.,,.,,:,,,,.. .,. .,.....,.  + :.. ......,,,:,,,:::::;, .,:;,.. .. ....,,.....,fi. ,.. ,!;,,:,,. .;,,:,,:,,:,,:,,!;!!;;,,:,,,. ,....,,,::,;, + .., .,::;;;!!;::::,,:,.,:,,:::. .,,.... ,:t:. ., ., . ...::.. ....,:..:,!;,:,,:::;::!,,;,,,,,:,........., + , . . ....,,,,,.....,::.....,,;. .,.,. ...,!t, , .: , .,...:..:. ,..,..:,,;,,!,,;,,:,,:,,;,::,,:,... . + .. .. .. ..,..,,,,,,....,,,,::,., , , .. ...,.,,..,..,..:,,,,.,,,;:,:;,::,:;::;;;;:::,... .  ... ..,,. .,,,,::,.. . ..,,,::,::,,.., .... .,!;. :;;!!!ifCCL## +.::,. ...:,.,..:;!i!;;, ..,,.,::,.. .,,:!:..,:;;;:..:tfLLti,.,,::!CL;::,:;::;::::::,,. .i::,:ffLC!G# + ,;!:,,:;;,...... ..,,,.. .:;;;;;:,..; ;!i;Li,;tC8880, t8Cfff!,.::!tfi::C:.:!tLCLfGGLLfti!;;;;;;::t;:!!fi!;!8 +. ..,,:;!!;;::;!;. .,,,,, . ..,,,.. .:!:..!:;L::::;!!;:,.,,,,,,..:,,,:,. .., ..,:;::;;;;;;ifLCCGGGC!.,,i;;!:,:i +, .,.,,..,.,,,;,:,,:!;:!:::,,,.,....,;:,.........,.,f0G,.. ,t!,..,, ...... ,,::,.,:,. . ..,;;;;;;::,:::::;,,:t + :!. , .. ..,:i!ii!!!titi!;,:!,.::;i!;!;!!,,:,..:;if!;,::!f. :t!,...:;;.!, ..::iLf!:,fi::,,,. .;. .t!Li:.:,,!L + LG!:.,,,. ..,;;;:::,,::::,,,:i:,!!;;!!!!!;,,:,..:;i;::;tfi:,..,:::;,.,..,;::,,,,!;:!!::,::!!Lt.,,..... :,;. .,,,;fG: .,!f +.:G8!,:!, .,::.,,:,...,:;!!;:,,,:,,,,,:,,::::,,,....,:;;, ;0ff,,::::,:;, ..;!,.,:i;,,,,::,,:LG:...,::;,..!, .: ,:, :;;f +,,::,,,,,. ..:;:!t!;:,,,!CCGftf;:;;!!!!!!;:;;!iii!!iitf!!;.!8f:,::fG;,!:......,:;,.:;;:;;,:;;:::;,,,,,,,::,,,,..,,.::,;;;;;:,,;C +::,,,.,,,,, .,,::;!t!!:;!ii!;!ttfiG8GCCG8Ct!i0@80C8088tf80,;80f,,::;:,::,,::;;!;!,,;i;:;!!;:ii::,,!ii:,,;i;;!,.:i!:;:,C0G0CC:,if + ,!8!.::.,:. ,,.:;!i!!iit!!!!;;!;!ifi!ttfCC!!Gf!iitiiLi!CG,:CGt,,;..:,;t;it!;;::;::!i!i;!t;;!i!i:!i!,,::!i;,:,.,;,:!;;;iLCtii,,; +CC!i:..,.,;. ,,,,::;!fLCCCCC008Cfti!!!iiii!;:;;;:;;;::;!ti,,fi;,:,,,,:!!;:::,,.,:;ifftiii!i!tLft;t;,.,,::,,....,.. :tt,.,,....,, +t0!.. ,.::. ,,,:::;f0###########@C@LfC0CfL!:;t;CtLf;!iG0G;.:Gt.,,it;:;;,,,,:,:;;iG0LCLCCLCiitt;;;:;i:;,,:..,:,:,..:;:;:;;;;;!!; +.G!,,,::.::,..,::;i!fLL0#######GCCLCftti!!!ti;:!fLttfittff! ;GG!,:!C!:tf!;!:,::!:!8C0GL8GGLffftfttft!ittt!!!!!!i;;!!!:i@f08Gfi!; + ft,,:t:.,,;,.;ii;!!tt!!tffLft!!!itt!;!!i!!ti;;iiLCLLCfif0; ;8Gt;:!;:,tifi!;;,:::!itLtL8G8@G#0G##8#ti####00#CC#@CC#Ci,!f!tCf!,,, + :!, ,!!..,,..;;:::::t;:;;;!;::!tfCLt;tG08t!ii!;!!!!!!!!f8; ;Lt;;fti:::;:ifLi!!;;!!!!iG#0CC8#08#G@#t8##88G0#G8##GGCL;,,:!::::::: +,.... ,,,,:,.,,..,:,,::;!!tfi::;;!ii!!iLCfitf!;;;!:::;;!ifi,iGGCG00CLfiii!;!CCLftffittG8GCC0#GLLL0#t#@CLLG#0LCCCG#Gt:.,t0;tLG0Gf +,,..,...:0L. ,,:,,,:,;:,;!!;:::;:!;;ii!!!;i!!!ii;!iii!LfL00,:8#######0CLLt;;;iC0i!tL0fLCLCCCCLfLC#Ct#0LCGG#CttffC#0C:!;tftC80GLi + .!,,;,:L!:,:!;::,,::::it;,,,!!,;,::;!;;;!:;t!!!;;;!;ttitf;,;ftfffiii!;;;t!!;:::,;tttLLffLGffffG#ii#GLLLCLffftfCLi;;t!##8;;;::. +.,.,!,,,:.,ii,,,,,:,;ftii;;t::;;:::;i;:::tf::!;iLC;,,;!ft!!Li,;CfGi!::,,;,i00!:;!;;!;!G8CL88C0GL0#;t8CffC0fLLffC8!:,,;#fi;;;!itt +,:,,,,,f, .,,. :i,:ifi!!;:ti:!;;:t;L!,,:i!::;;;;t!,.:GCCLii0;,:itifG:.,,,;!!i0CL!if;:t#0GLCtGCG#L:f#GLG8Gf8GCC0C:;:.!L;;t:L880f +:,::!!:,;,,,..,,!;..,:;:;:,:,..,.,,,,,..,....,,,;!i:,!tLfi!tft. :tii!;:;!!ii;;!ttffti;ifLiiiii!t8!.i#CCtff!tCL@@!;!:,::!it;!tfi: +:,:,,;:,!ti:.,:... ..... ...,,:::;;;;;;;;;!!f##0!:L###0C0f:.,iLtLLffitCLiitifC8800CfCCLCtf!:;:,.iit!::;;;!ifi;Ci;,,i:,;,iCLLf +.. .;:,i!f; ..,,:;;:,,,,..,:;!ifLCLLC0CfCCC00####f::0#0L##f!!iC8CfL0##f;iL08##LLffLLG@##@Gttiit!ii!ii!!;!i;!Git:;i!;:;;;:;;!CCi +.,:,,,:,,.,,;;!!LCCGL!;:,::;iiitLffttfLLLLC80##t!;;;!ii;!ttiG@##CLLC8@t;;!Gt###8GCi:;!itft!;;tLGCfCC000CL;,:LL;,.!Cfi;iCCLLi;!i: +:;ii!ti. !GGtii;;i;:;!!ii!iiiiti!!!!!ii!!!ii!iifffLi,.!Ci!tCG0008#@!;f;;:!ifttLLfttCLftt!:,:;;;;;;!!!;:, ,,,. .,:::,::;f!,:G0L +,,,:fL: ,:::,. .,itfffttttiiiiiiiiti!:,;!fGCfffi:..:;!!tfLG8##fit8if;:;iLCLG@@@8GCfi!;::,::;:::,:,...,,,::;::;:;:,.. .!i; +. .,,..,,,,,,::,.,,,,:::;::,::,::;;;;;;;:;iLCCLi!!0f .:::;iitL00t;:t8!;tL;:;itttti!!;;::;!!;!!fti;:;;,.,:;!ifffttti!!:,,,,. ,LL + .;itii!!!i!ii::; ..,...,:!tti!iiifCLt!;:,:iff;,.,,:;;!i!!iCGt;::;!!::!i!:,,..,,:it;;;!t;;:,,,,:;!!!iii!!!!;;!!!ii!:,,;i +:,.. ,:!tt!!!ii!:,... :;;;:,,,,:::!Li;;;;;;;:,,,!##@i!:!!it!!G####0:.;:,;i;;!;::::,;;::::!!!:,:,,,,,:!i;;!i;:;!!;;::;!i!;..,i +;:;;: ......... .,:::::,,:,;tt!!;:,,;itt!;!@#00#0#L#G#8i###8L!:..,.,..,:;,:t!!!:,,,,::,.,,,,,,;!!!!;:;::::::,,..,:!,. .! +!;;!i;,....... ... .:;::;:;:,iLCf;,,:;;;;!!;:G##@C###C@f!;;;!;:,. ,;,. ..:iff!;::::,....:..,:ii!!;::!!;,:!,,;:,,,,. .! +;::::;:::::!!:, .....,.,;;:,.,.:L0;:,,,,;!!:;;f0i:;,. ..:,:,,:,::f: .,:::;:;;:,,,,,,,,::::,,,,:!i;...,;i;;ii;,,,:; + .....,,,::::,,,,,...,,,... . ,;:!i!, ,ifffLfLtfiLtiiiitfGGffLifL#0G8CGtt::!!!!!!;;;;:,,:,,;;;,,;i!;;:. ..,,,, .,,:!!i::it; +. .. ...,,,,.,:!i!,...,,::. :###8,.!#0008@808@8@88888@@@88@08#####@@0f!f0888888CGC!:,:!;:,,,,,:,,::. .,::;:,.,,,,,::,  +,,:::,,,,::. ...,,,. .,,. ,Cf;:,,08i;!;!;!!!!!!!!!!!!!!!!ii!!!!!!!i0#GLfiiiii!!!:,.,,,,..,.,,..... .. :;;tt!:!!. :!,  + .:,....... . ,: .. :,::. ...... .,i. ..:####!..,,,:::,,..:,,,,,........,.,, ..,,,:,:;;, ...  + . .....,,. ...,,. .,..,...... .. .,::;,.,:f, . , :::t##;.:;::,::,,,,:;;:,..,..,,:,,,,..... ..,. ....  + , . .......,,::,,,::;;;:..,:;;,... ...,,,....,!f, ... .,,;;,,::,...:;,,:,,;,,,,,,,;;!i;;;,::,,..........,;:,: + .,,. .,::;;!i!;::::,:,,,,:,,:;, ,,.... .,!!, ., , ... .,.,:,....,.,:..:,,!,,:,,;::;:;!,:;,:,,,,.....,.... + . . ....,,,,,,.....:;,.....,:. ,..,....,:t;. , .: ,, ...,,.,, .,.,,.,,.,:,;:,::,,,,,,,::,:,,::,... . + .. . ... .....,,.,,....,,,:;:,., . , ,. .,. ...,,,,,.,,..,.,:,,,,,,.,;:,;:,;:,:;:;;;;;:::...   ... ,.,,. ....,:::,:,.. ,:, ..,,:::,::,:,,. .... ,:i: ;i!iiitLCG##:,, +.:;:,. .. ..,:.,,.,;!!!;:, .,,,,.::,. . ..,:i:.,,:;;;;, ,iLGLt;..::;;tCi;;::;:::;:::;::,. :,,,:tfGft###,  + .,;!,::;!:....... .. ,.,,,. .:;!!;;:,..:.i:i;;L!;;tC0888i ,CGtii!,.:;!tt;:LC,,!itLGLLGGCLfi!;;;;;:;,,:fftt;f#f;: +, ..,,:;!;;;;;;i:. .,,,:. . . ..,,,..,:;,.,f;ii:;;:::;;;;,,.,,,.....,.,::,.,:, .,:;:;;;;;;!!ifCCGGC,.,i!i!::;;;tL +;. ;..,,..,.,,::,:,,:i:;;:;:::,.,....,;:,........,,CG;...,,;f: :,,,. ...... .C;::,..,,,. .. .,,;;;;::,::!;;,,,:!f# + ,!,.,, ,. .,;i!i!!!ittfi;;,!!,:;:!i;!!;i:,:;.,:;i!:,,,;L: ..!t!,..,;!,.i, . ::tLt;:.!!::..,. :. !fi;::;,,:;ft@ +.,GL;,.,,. . .,;;:::,,:::::,,,:!,:!!;!!!!!!,.,:. ,::;!i!ft;.,,,,:,;;,,,..:;:: .,:;::;::,.,:i!t,.,,.....,,,, ,:tG;,..,!!;iC +,,:@0::;!. ,,:,,,:,,..,:;;!;;::::,,,,,:,,,:::,,,,....,;!.;0!:C!.;:;;:,;;. . ..,!,..,i!:,,.,:,,,;Ci, ..,::;..;;. ,ti. .:;;;iG +f.,::,,,,, ..,;::!i!:,,,,tLCCtft;;;!iii!i!;;!!iiii!iitfLt,;0i!!:,;;GC:!;,.. ..,,,,.::;;:!::;!;:,::,,,,,.,:,,,,,.,:,,:;;:,,,;ttC@ +;:,::,,,.:,. .,,:;;!i;!::!ii!;!iLLt80CCC00Lt!L@@8CG8G@GC0:,ttCG!.,::;,,!:::::;;;;:.:!!::;!!:;t:,;,,it!,,:!i:;!.,;i;;GCCCL:,;LGfG + ::08:,::.:, .,,,;!;i!!;i!!ii!!!!!!ii!!iitLf;fCi!i!!!itif,,;itL:.!:.,,:ti!tt!:;,,,,;!!;::;!:;!!;;;i!:,,:;!i:,,..:,,;!fGGLt,;;!!t +:#L!i,.,..::.,,,,:;:;ifCCCC008@@Cfti!!!ii!i!;;;:::;::::!t;,L!!;:.:::,,;i;:::::,,:;itfi!!ii!!!ttfifi:,,,,::,....., .,,:;:,. ..;f + 8L:.. .,,::..,,,:;;!L############008LC00LLL;:i;;GtCi;;t8L,;CLL:,:!t!:!!;:,,,;::i;tGCLGLGLCtiit!;;;;i!:,.,,.,:,:,,..:,:::,,:,,!L + iG;.,,!,.;,. .:::iiifCC@######0CCLfCtfii!!ttt::!CftfftfLf,,CGt!:tfGt!;tLiii:::!;;t0C@LCGCGffLLfttf0titttiiiii!i!;!tiffGGLfi!,:t + :C;..!i:.,,; .!ii!;;f!!itfLfti!!!iti!;!!!!!!;:;;tfCfLfiGf,:;!;::i!i!:,;fff!:::::;titLfC00@CC#G8#@##!8####G##C0##C8#C;i08Gf;,,,: +.,!, .,i:..,,.,;:::,:;t;::;;;:::itLCfi!C00L!i!i;;;!;!;;iLL,,LGCf!itfC:,:;;:;tii!!!!!!!L#80CG8#0@88#0i###0G8#8G##@0@Ct,,:;:,,,,:: +,,.. .,,,::..,,..::,:;;;!!ft!,::;!!!;!!tfttLLit;!;,,,:;tt:;C@GCC8##i!ti!:::iGGGLtfittL#0CGC#@CLL0#fi#8LLL0#GLCGLG#C!,,:;!iffffi +.:......,t0i..,:,,,,;:!::!!;;,,:,:!:,;;;;;;!;;;!;:!!!!!;;i:;!!!;!it!!tti!!;;;;iC0!;iGGfGCCCCGLfff0#if#GLCL0#CffftC#Ci:iiG80GGCf! + . ,!,,;,ii;:,;i::,,,:;:;Li!:,:!:,;,,,:!!::;i;;;;!!!!;;;;;,,G;,.:t:,;;;;CLti!:,,::,;ftifLfLCffLfL8#i08CLLLCfLfffLCt!;!!iii!!;::, +,...::.,::.:i!,.,,;::tfii!;ii:;;:,::;::::,:!i!i;;i;:,;ifftt:!0:.i!,.;G!!#0;iL;,.,::!!;!00LG@fG0GG#f!@GffLGLtLLfLGG;::,i8;;;!!iii +,,,,,,.,f. .,,. ,i!,;it;;;::t;;;;,!!:!,,,,,::;!f!!!:;t;;;!i,,i!,!:,:!L;i8i:;;;!!,;!ft:;G@0fCii0L##!;@#CL8@iL0GCC8!,!:,LfiL88880f +:::;:!:,,i,,...,,!,..,::,:,,,.......,....,::::!f!:.;0Ciiii!!.,;!;!!;;,,;;;!tti!!!ifft!!tLt!!!!!!f0::G@LCfL;!LCC#L;i;:,:;;;!i!i!, +,,,:,,;,;if;,.::. ..... ...,:::;;!!;;;!!!!:,.,;8#@#@80;.,!8CG#@!.:iiittiiftfG8888CGGLGLf!::;;,,iii;::;;!iff!tL!:,;!..:!iift +. ,:.;!!f, .,,::;;;:,,,,.,:;;!tfLLfLGGfLGG@@L;,,C@i0#i;;:,:fCLG0##i!0##@0C0GLfttttCLG###8fttiffit!!i!!i;t!;CCti;!i!::;::i080Ci +,,:::,::,,.,:;!ifGCGGi;:,,:;!iiifLtiittfLffGCC@@:;0#i;;;,:;iLCttLLi;i8#@@##8GCfftf!:;!itft!;;!tLCffLC000Cf:,;G!:,,Lfi;;tCt!tLfi: +;!!titL; .tGf;!;;;;::!!iii!iiiit!!!!!!!!!;t##i;:!iLCCLLC080LfiiiiftttfLLLffffffffttLGCLi;::,::;;;;!!i!;:. ,,, ,:;::,:::tC00Gt +:,,,!ft, ,::,. ,!tffLfttttiiii!!iiii;,;fi:,,,!fCG088Ci!!:;0@##C;ifG80G88@88@@@8GCLi!;:;:::;;:::::...,,,::;;;!;;;:,..,;it!: + ..,..,,,:,,::;,,:,::;::::::::::;;!!!!;;;;:,:!f!:,:!ifLfi!tfLLfLLL!;;iiiiiiiiiiii!!;;::;ii!!!ifti:,;,..,;!!tffttii!;;:,,..;!tL + ,!ttiii!iiit!:!, .,,..::!tfLfttitfi!!###ftft8L##i0####0;,:,,,,,,,:,::::,,,..,,,;t!;;;;;;;:,,,,:!!;!iii!!!;;;!!iii::fit +;::,. .,:iti!!!!!;,,... .;;;:,,:,::;!!!!!!!!:t##0@###C###i;tLfti;::,...,:..;!!i!;:,,,:;;;::;i!,,;:,,,,,;i!;!i!::;!;;:::;ii;,:!! +;::;!, ......... ,:::,::::,;ttitfttitii###f###C!!;::,,..,,,.........,,,,,,:i!!!;:,.,:::,,:,,,,:!!!!;;;;:::;:,,...,;:.:fL +!;;;!!:,,..... ... ,::::::;:;tLLti!!ii!:;;!::,;:, .,.,.:;,..::,...,.... .,;tf!:!:,,:,...:,..:!i!;!::!!!,,!;,:::,,,. ,!t +:::::;;:;:::i!: .. .. ......,,,,,.:f0;:... .,:::,,..,,:..,:t;:,,;!i;,,:,.. .,:,,:i;;,,,:,,,,,::::,,,,,;!!,..,:i!;!i!:,.!f + .... .,,,,:::,::,,..,,:,,.. .. ,,;i!, ,iLLftiftLtC0CC0ittC0tffiCt8GtfC##0:,;!!!!!;;;;:,,,,,:;;:,:ii!!:,.....,,.. .,:,;;i!,::i +..........,,,,.:;ii;. ..,,:,. :###8,.!##@@8088@@8@88808@#@88@@88@#@88###fiC088888LCCi:,,!;,,,,,,::,,:. ...,;:;,.,,,,,,..; +,,::::::,::,. .,,. .,... ,Cf;:,,00i!!!!!!!!!;!!!!!!!!!!!!!!!!!;;!!t##t!iiii!!!!;:,,,,,...,,,...., .. ,;;iti::i: .;; , + .,........ ,:. ... .,:::. ...... ..,; . ,L@;.,,,,,:,:,,,,,,,,,,,.........,,. .,,,:,,:;; ..  + .. .....,:, ... .. .,,.,.....: .,,,,,. .,:!!. ,,. . .,,::::;::.,,,,,,,;;:,,.:,.,,,,,,,... .. .,.. .... + . ,. .....,.,,,:,,,:;:;!:. .,. ..,.....,!ti,. ,:. .. .::...,,:,. ,;,,::::,,:,,:,:!;!!;;,,;,,,. ,.,..,..:;,, + .. ..,, . .,::;;!i!;::::,:,,,.. .,..,,,,;ft:,. .. .,. .;,...,:.,..::.......,:.,,,!;,:,,;::;::!:,;,,:,,:,,........ + . ....,,,,,.....,::. . . ..,;ii:..;: .. .;, .,!. .,:,..,,..:..,..:..,,,;,:;,,;,,:,,:,,;,::,,;,... . + .. . ... . ....,.,..,,:;: .: ..,,,:;,,,,:. ,,,,,,,,.,,.,,..,..:,,:,.,,,;:,:;,::,:;::;;;;:::,..   .. ,.,,. ....,:::,:,.. ,:, ..,,:::,::,:,,, .... ,:i:. ;i!iiitLCG##:,, +.:;:,. ... ..,,.,..,;!!!;:, .,,,,.::,......,:!:.,,:;;;;, ,!LCLt;.,::;;tGi;;::;;:;;;::;::,.. ,,,,:tfGfi###,  + .,;t:::;!:....... ... ..,,,. .:;!!;;:, .;.!;!!;L!:;tC0888i ,CCtii!,.:;!tf!:LC,,!ifCGLLGGCLfi!;;;;;:;,,:tftt;f#f;: +, .,,,:;!;;;;;;i:. .,:,:. .... ..,,,...,;:..t!;f;:;:::;;;;,,.,,,....,,.,,, .,:, .,::;;;;;;;;!ifCCCGC,.,i;i!::;;;tL +;. ;..,,..,.,,::,:,,:i:;;:;:::..,....,;:,........,.fG!...,,;L: :.,,. ...... ::::,..,.. . .,,;;;;::,::!;;:,,:if# +.,!,.,. ,. .,;i!i!!!ittfi;;,!!,:;:!i;!!;!:,:;.,:;i!;,,,;L: ..!t!,..,;!,.i, . ,!LLt;:.!!::.,,. :. ;fi;::;:,:;ft@ +.,GL;,.,,. . .,:;:::,,,::::,,,:!,:!!;!!!!!;:,,:. ,::;!!!ft;.,,,,:,;;,,,..:;::...,!!!;::,.,:tif:.,,.....,,,: ,:tG;,..,!i;iG +,,:@0::;!. ,,:,,,:,,..,::;!;;::,:,,,,,,,,,:::,,,,....,;!.;C!:L!.;::;:,;;. . ,!,..,iiL:...,..:tCt, ..,;:;..:;. ,ti. .:;;;iG +f.,::,,,,, . ,:::ii!:,,,,tLCCtft;;!!iii!i!;:;!iiii!iitfLt,:Gi!!:,;;GC:!;,. ..,,,,.,:;!!!:,:!;,:;:,,,,,,,:,,,,,.,::,:;;:,,,;ttC@ +;:,::,,,.,,. .,,::;!i;;::!ii!;!iLLf80CCC00Li!L@@8CG8G@GC0:,!tCG!.,;;;:,!:::::;;;:,.;!!::!!i;;i,.::,ii!:,:ii:;!..:i;;GCLCL:,;LGfG + ::08:,::.,. .,,,;!;i;!;!!!ii!!!!!!ii!!iitLf;tCi!ii!!itif,,:iif:.!:.:,:ti!tt!;:,,,,:!;;::;!:;!;;;iii:,,:;!i:,,..,:,;!tGGLt,;;!!f +:#L!i,.,..:;.,,,,:;:;ifLCCG008@@Cfti!!!iiii!;;;:::;:::,!t;,f!!;:,:::,,;i;:::::,,:;itfi!!!!;;;iif!;t:,,,,::,....., .,,:;:,. ..:f + @L:.. ..,::. ,,,;;;!L8###########008LCG0LLL;:i;;GtLi;;i8C,;GG0!,:;ti:!!;::,,;::i;tGCLGLGLCt!!t!::;;i!:,,,,.,:,:,,,,:,:::,,:,,!L + iG;..,!,.;,...::;!!ifCG#######0CLffCtfii!!iti;:iCLtffitLt.,G@Ct!tL0L;;LLtii:::!!;t0L@LG0CCffCLtttf8titttiiiii!i!!!tiffGGLfi!,,t + :C;..ii:.,,; .!ii!!;tiiittffti!;!iti!;!!i!!i;;!!fLCLCLtGf.:!i!:;iit!:,!LfL!:::::!titffL00#GG#G8#@##!8####0##C0##C8#C;i08Gf;,,.: +.,!, .,i:..,,.,;:::,,;t;:;;!!;::itLCLt!CG8C!i!t;!!!!!!!tGC,:G0CfiitCG:,::::!ti!!;!!!!!f#80CG8#0888#0i###0G8#8G##@08Ct,,:;:,,,,:: +,,... .,,,::..,...:,,:;;;!iLf!:::;!i!!!ifLttLfif;!!:,::ift:;8#800@#0i!ii::::iGCCLttitiL#8CGC#8CLL0#fi#8LLL0#GLCGLG#C!.,:;!ifLffi +,:...,..,t0i..,:,,,,;:!::;!;;:::::i:;!!!!!;t!;;!;;;i!;!;!t!;!i!iitf;;i!!;ii;;;i00!;iGCfGCLCCGLfff0#it#GLCL0#CffffC#Ci:!iG80GGCf! + ,!,,;,ii;::;!::,,,:;:;Ci;:,:!;:!:,:;ii!;;!!;;;;!!i!;;::,.t!;;f;:::::LC;!ft!::::,;fttfLfLCffLfL8#i08CLLLGfLfffLGf!;!!iii!!;::, +,...;:.,::.;!!,.,,;::tfiii!ft;;;::::;!;::::;ii!!:;,,::iti;:.:GiC:.,L0;!#G::L0f;::::!!;!0GCG#fGGGG#f!@GffLGLtLffL0G;::,i@;:;!!!ii +,,:,,,,,f. .,,. ,i!,!if!!;:;f;;!!:ii;t,,,,,::;;it:.;:;::::,:::!:, ,!f;GG!,:!!!CCii!ft:;G@0CCii0L##!;@#CC8@iL0CCC8!:!:,CfiL88880f +:::::!:,,i,,...,,i,..,::,:,,,.....,,,,...,:::;!t;,.;0t!ii!!t..::!!;:.:;!:;!ttiiiiifft!!tfti!!!!!f0::G@LCfL;!LLC#L;i;:,:;;;!i!i!, +,,,:,,;,;if;,.::. ..... ...,::;;;!!!;;!!!;,,..!####880!,,!0G@8;,;LiiittiifttG8088CCCfCLf!::;;,,iii;::;;!iff!tfi:,;!..:!!ift +. . ,:.;!!f, .,,::;;;:,,,,.,:;;!tfLLfLGGfLCG@0!: :G!!#@!;;:::fGGG8G!t##8@#8G0GCfttttLLG@##@Liiiffit!!ii!!;t!;CGtt;!i;::;::i080Ci +,,:::,::,,.,:;!ifGCGGi;;,,:;!iiifLttttfLfffLCG#i.;0i:;;:,:!tCLfft;;f###@@##80GLftfi::!!tfti;;!tLCffLC000Cf:,;G!:,,Lti;;iCt!tLfi: +;!!titL; .tGf;!;;;!::!!iiiiiiiit!!!!!!!!;i##t!::;!fLLffL00Cfi!iifLffttLLLfffLffffttLGCLi;:,,::;;;;!!i!;:. ,,, ,:;::,:::tG00Gt +:,,,!ft, ,::,. ,!tfLLfttttiiii!!!ii!:;ti;;,,:iLCG00Gi;;:;0@@##G!!fG80G08@88@@@8GCLt!;::::;;;:::::....,,::;;;!!;;:,,.,;it!: + ..,..,,,,,,:;;,,:,:::::::::::::;;;!;;;;;;,,;it;:::iiffi!!tfGLLCGCi;;iiiiiiiiiiii!!;;:::!i!!!tft!:,;,..:;!!ifftiii!;;::,..;!tL + ,!ttiii!iiiti:!, .,,..::!fffftiitfi;!##0ttft@L##i8###0f:::,,,,,,,:,::::,,,.,,,,;ti;;;;;;;:,,,,:!!;!iii!!!;;;!!iii::tit +;::,. .,;iti!!!!!;,,... .;;;:,,:,:;!!!!!!!!!:t##0####0##@i!tfti!::;,...,:..:;!i!;:,,,;;;::;;!!,,::,,,,,;i!;!i!;:!!!;;:;;ii!::!! +;::;!, ......... .,::::::,:,;tfttfftitti###f####ii;;;,,..,,,,,........,,:,,:i!!i;:,,::::,,:,,,,:!!!!;::;:::;:,,,..,;;,:fL +!;;;!!:,,..... ... ,::::::;:!tLLtii!ii!:;;!:::;!;, ...,.,.:;,.,:,...,,.... .,!tfi;:,,,:....:,..:!ii;!::!!!,,!;,:::,,,..,!t +:::::;::;:,:i!: .. .. ......,,,,,.:f0;,. . .,:::,,..,,:..,:i:,,:it!:,,:,. .,:,::,:;,,,,,,,,,::::,,,,,;!!,..,:i!;!i!:,.;f +..... ..,,,:::,::,,..,,:,,.. . ,,;i!, ,iLLftiiiftC0GC0itfC8fttiLt@Lt8##@!,;!i!!!!;;;;:,,,,,:;;:,:ii!;:,. ...,,,. ,,,;;i;,:,i +..........,,,,.,;ii;. ..,,:,. :###8,.;##@@###88@8@888G8@#@88@@88@#@@###LiC0888888LCCi:,,!;,,,,,,::,,:. ..,;:;,.,,,,,,..; +,,:::::,,,:,. .,,. .,... ,Cf;:,,CGi!!!!!!!!!;!!!!!!i!i!!!!!!!!;!!!##i!!iiiii!!!;:,,,,:,.,,.,...., .. ,;:iti::i:..;; , + .,........ ,:. ... ,::,. .. ... ..,i. ,!C;.,,,,,,:,:;:...,,,,,,.........,,. ..,,,,,,:;; ..  + .. .....,:, ...... .,,.,...,.,: .,:,, .,!i, ,, . ,::::;::,,,:,,,,;::,,.,,.,,,,,,,.. .. .,.. .... + . . .....,.,,,:,,,:::!!:...,,....,::,..,,:!t;.. ,..,. .:, .,,,::,. ,;,,::,:,,:,,:,:!;!!;;,,;,,,. ,.......::,, + . ..,, . .,::;;!i!;::::,:,,,., .::,::,:!Lt!:, ,,. ., ::...::..,,.,::.......,:.,:,!:,:,,:::;::!:,!,::,,:,......... + . ...,,,,,,.....,;:. .,..,,;ff:,,i, ,,..,;..,!, ..:;,....,,..:..,..,..,,,;,:;,,;,,:,,:,,;,::,,:,... . + .. . ... . ...,.,,.,,;i!, ;, .,,,:;:,,,:..,,,::,,.,,.,,.,,..,..:,,:,.,,,;:,:;,::,:;::;;;;:::,..   . ,.,,. ....,:::,,,. . ..,,:::,::,:,,. .,... .;i: ;tiiiiitLC##!::!# +.:;;:,. ... ...,.,,,,:;;;:,. .,,,,.:;,.. .,,,!:.,::;!!!:..!CGt!,.,:;;!fC;;;::;;:;;;:;;::,. .;:::;!LfiC##; ,: + .,:t!:;;!;,...,,. .... ...... .:;!!;;:...; ;i!;f;:!tC0888C. iLi;;;,,:!!tt!:CC,:itLCGCCGGCLti!;;;;::,,iffC;i##! .i +:. .,,,:;;:;;;;t!.. .,,,:, .... ..,,,.. .:;:.,i:;L;:::;;;;;:, ... .......,. ,:;:.,:;;;;;!;;!!itLGCGt!;!!ti!;;i!!;;i +:,. ,. ....,.,,,:,;,,:i;:;;;:::,.,....,;;,,..,,...,,.f0L,. :G; :.,:,. .,.... ,:;:;; ,!!. , ,,::;::,,:!;!:,,,:i0fi +..;!. , .. . .:i!i!!!!ttft!!,:i,,;:;i!;i;!;,:;,.,:!L!:,,;f! .:ti:...;!;.!:... ,:tCf;:.,f!;,,,.. ,,.!!:::::,,:itf#8 +..fG!,.,,. ... .,::,,,,,::::,,,:!:,;!:;!;!!!:,,,. .::::;!ttt!,,..,:,:;,,,..,:;;...,;;:;:,,..,iif!.,,....,,:,;.;!f;,,,,;iii!0# +:.:08;,;!. .,::,,,,,..,:;:;;;::,::,,,,:,,,::::,,,,..,,;!, ;f!tt,:::;:,:;, . ..:!. .:t:,,..,...,tt,....:::..,!...,!C, .,:;;;!f# +0,,::,,:,:....:,,;i!!:,,,;ffLttf;;!!ittiii!;!!iittiiifLLt; :Cti;:::fC;:!,.. ..,,,:..,:;:;:,:;:,,,:,,,:,.,::,,,,.,::::, .:;;;iLG8 +!,,,,,.,,:,, .,,,:;!i!!,,;!!!;;!fCt08CCG00Gf;t8@80C808@L0t ,tCGL,,::;:,::::::;;;:;..;i;:;;!;:!:,::,iii:,:;t;:!,.:iiL!!i;,:iGLGCG + ::!8:.::.,,. ,,,:!;!;;;;;!!ii!!i!!ii!!i!itf;!Li!i!!!ii!!; ,iii;,;!.,;,!t!it!;:,,,,:;!;;:;;::;;;!;!i;,,,:!!;,,,.,::LC00f,;iff!if + #8!:,....:;..,,::;;;!tfLCG88@@#GLfti!!!!!!!;::::;;::,,:!i.,t!;:,::::,:!;:::,:,,,:!tftii!!;;;!iLt!t;,.,,::,,....,.,,itt!:.,::;!L + L0; ,.;;. ,,,:!!!tG############08LLG0CfC!:;i;Gtft;:!G8: !80L::;tf;:!;::,,:::i!iCGLGCCCLt!!tL;:;;;i::,,,,,:::,.,,........,iLG + ;0!.,,;:.::. .:::;iiffL8######GLLfffttii!!!tt;:ifLttfttLG; :80CfifLG!:LLt!i:,,:!:!0L@CL8CCLLLCfftf0t!fttt!iii!ti!!fi:!iiti:,!fC +.,L!,.;t:.,,;..!ii!!;itiiitffti;;;!ii;;;!i!!i!;;itLGCLCtL8; :;;:;tfi;::fLfL!:!:::;ttttiL80@8G#0C##8#tt####0G#CG##GC#fi00Cfi;.,;f +,.,;. ,!;. ,,..;:,:,,;f;:;;!!;;:!itCft;fG00i!!i;!!!!!!!!f8;.!Lti!ttLf:::::::tfi!!!!i!!i0#0GG8#008G##t##@0GG0@C8##GGCf:;!;:,...,: +,,.... ..,::,.,,..,,,:;;;!ifLi:::;!!!;!ifLttff!i!!i;:::!iG;,C#@80@@t!i!::!;:!CCCCttittf#@GGC@#GLLC@#t#@LLfG#GLCCCG#0f:,;;;!!!ii; +,,,..,...:Gf. ,:::,,;,;::;!;;:,:::i;:!!!!!!t!;!t!:itt!iiiti;;!ii!iL!::::!Lt!;;!G0i;;CGLGGLLCCCLffC#ft#0LCCG#CffffC#CL:L0@8GCCCfi +.. .!,.;.:!;:,:!:,,,::;;;ft;:,,!!:;,::;iii;!!i!;;;!iti!;:::. ,t;:;;:,;!;:;;tft;:::,:!ffCLffCCfLffG#it#GLLLCLLfffLCf!:;;LCft!;;:, +,,:..:.,:: .!!,..,:;,iLi!i!tf;:;;:::;!;:;:::ifi!::;,,;;;:,,: ,Gf:C0;!#8:,:,i8C!::::;!;;C8CG@GL0CC88;C8CffC0tLLffC8;,,,:;;;!!!!!! +.,,,.,,,t, .,,. .!i,;!t!!;:;t!,!;:;t:t,.,..,::;;:.,,,:,::,;!::;L:;L!0@i:,,:!i!tGti!tf;:t#0LftiGCG#t:C#GL0@Cf8CCC8t,;:,fttG8@880f +,;::,;;:,!:,,..,,;:..,,;,:,,,...,.,,,,,.,,::,:;ti:.;L!ifiitCG;,:;:,:!!;!;;!tti!iiitffi!tffii!i!!tG;.f#CCttt!tCL@0;!;:,:;!G8ti!;, +,,,:,,;,;!f!,.,;. .... ...,::;;!!ii!!!;:::,,.t###@@00Ct:,!8L,;Liiittttttfttf008@0G0CGCLt;:;;:,!ii;::;;!!tf!;L!:,,::!ti!!!! +, .;.,i!t: .,::;;!;::,:,,,:;;!iffLfLG0LL0GGGi, ;0!i#t;;;;;;!f8Gtt##888@#@080GLfiitLfC0#@0fitifLtft!!i!i;ii;f0fL:;!;:,,:L0880Gt +,,,:::::,,..:!itfGGCGt;;:::;!ttttLfiiitfftf0##8:,f8;:::,:;!iC0Ci!C@GC0@88##0CCftiii;:!!itti;:;itLftfLG00GC:,:L!;,,!t!::;i;!titi, +:i!itfCi ;GL;;;;;;::;!iiiiiiiit!;!;;;;i###Ci!:;;tfLfffG80Li!!ffLLtiitfLfftffttffffL0GLfi:,,,:::::;!i!;:, ,....,:;:,,,,,!!!tft +,:,,:tt: ,::, ,!tfLLLftfti!i!!;;!!!@#t;i!,,:tCCCGCtiii;iGGG##8iifG88G088808@@0GLLif!;:::;;;:::;;,...,,,:;;;!;;;:,..:ff;;; + .....,,::::;;,,::::;::::::::::;;;;;;;;!!::;it;::;!itf!i08#CftfLLi;;!iiiiiiii!!i!!;:,,;tii!itLti;,:,,.,;!!!tftii!;;:::,:!iiit + . .!ittii!ititi;;; .,:,.:;!ffffiiiff!.;##CtittC0##t@###C:,::,,.,,,,:,:;:::,,..,,,:t!;!!!;;;:,..,,;!;!!ii!!!;;;;!iti!G00f +;;:,. .,;ii;;;;!;:,,.. :;;:,,,::;!!!!iiii!:!@##C###0##Gi!tti;:,;!,...,:..:;!ii;:::::!;::::ii:,::,,,,,:!!;;!!;:;!!;;::;!t!ift; +;:;;!:. ... ,:::,:;,::!LLfffffttf;i###L###C!:,::,...,,,. ..,..,,:,,,!i!i!:,,,,::,,,,,.,:!!!!!;:;:::;;:,,..,:;;L0L +!;;;!i;,,,..... .. .::,:::;:;ifLti!!ii!:::;!::,;:,. ...,..,:;. . .,::,.... .:ifi;:,:,:,...,,..,;ii;!;:;!!:,!!,:::,,,.:it! +:::,::::::,:!!:. ... .. ......,,,. :f0;,.:. .,,:::.,,,,,,,,:,..:tCi:,,,,. .,,,:,,;:,,,,,,,,::::,,,,,:!i,...,!!;!ii;,!CL + . ...,:::,,:,,..,::,,,,. . .,;i!, ,iLLfttiititCLC8tffLGtLLiCifLtC###f;!ii!!!!;;;;:,,:;,,:;:,:it!!;,. ...,,.. ,,,:;!;,,!i +.,..... ..,,,:,,:ii!. ..,,::. :###8, ;@#@@@@#@##@8@#@888@@8@@@@@@@80####088888888LCCi:,,;;,,,,,,:::,:, ...,;;;:,.,,,...:t +.,::;::,,,::. . .,,. .... ,Gf;:,.CCi!!!!!!!!!!!!!!!!!!!iii!!!!;;;!t##i!!!iiii!!!;:....,,,,,,,,.,.,. .,. .;:iti;:i;. ;,.! + .......... . .:, . ... ..,,,. .. ..... .,i ,::,.,,,,,,:,::,...,,,,,,..........,. ..,,:,,:;;. , + . .,. .....,, ... .. ..:,,,...,,.. :. ,:,,, ,:f, , . ., ,:;:;::.,:,,,,,:;:,,.,,.,,,,,,,... .. .... .... + . .. . ....,..,,,,,,:::!!:,.,,::;,... ..,,....,,if,. ., :,.. ..,,,,,. .;,.::,;,,:,,:,,;;!!;;,,:,,,.......,..,:,, + . . ,,. . .:::;!i!;:,:::,,,,.,,.,,. .,.,,,,;i!::, .. :,..;;. ,::.., ....,.,:.,:,!;,:,,:::;::!,,!,,:,,:,.....,... + . . ...,,,,,.....,;:... ... . . .,:i;,..i. . .;!..,:: ,,.,,,..:..,..,..:,,;,,;,,;,,:,,:,,;,::,,;,....  + .. . ... .. ...,,,,. ...,,:;. :, .,::,;:,,,,:.....,::,,,,,..,..:,.,,.,,,;:::;,::,:;::;;;;:::,..   . .,,,. .,,,,:::,,.. . ..,,::,,:,::,,, .,... ,!i, ;tiiiiitfC8#f;!,G#G +.:!!;:...,.. ..,,,:,::::::. ..,,..:;:. ..,,!,.,::;!!!;. ;0C!,.,:;;!iLC;;;::;;;;;;;;::,,. :!;::;!iif##i:.,!i + .,,ii,!;!i,....,.. ... ..... ,;!!;:,...: ;i;:t;;itC0888G, :t!:,::,;!!ii!:Cf,:ifCGGCGGGCfti!;;;:,,:tfC!i###. :# +:: .,,,::,;;;;ii.. ..,::::. .. ..,. .,,,.. .;;, ,i,;f;,:;;;;;;:, ........ ,,:..,:;;;;;!;;!itfCGf:;,:ffti;L#t;,,!# +,:.. : . ...,,:,,:,:i!:!;;;:::.,...,,:;:,,,,:...,.,L0i,. :G! .,,;:.. ...... .,:;:,,,;:. . .,::::,.,i;i;::;;!fi:!# +. :t,., .. ...,!!!!;!!ttff!;::i,,:::!!;i!!!,,;:.,:!Lt:,,;ff. .,tt;,,,:;!.:!.. .,!CCi;..!i;:,,.. . .,,::;;;,,,;it#ti# +. ;Gf:.,,,. ......,:,,::::::::,,:;:,:;::!;;;;:,.,. .::;;ifiti, .,,:,,;:,,,..,!;, ..;::;;:,. ,;tLf,,:,...:,;,:i!:::;:,:!fiL#L. +i,,i8i,:!:. .,:;,,,,,..,:!;!;;;:::,,,,,::,,,::::,,,..,,;t,,tf;;f,.::!;,:;,... ..,i, ,i::,..,...,;t:....,:,,.,;,,:L;..,,!!;;i##t +8;.,,,.:,:. ..:,,:iii:,,,:itfftL;;!!itfiifi!!iitfftiftCLC;.if!!;:.,iGf,!:.. .,,,,;. ,::::;;f::,,,,.,,::,,,:,,,,,,.,:. .:;;;!tL0@ +;::,::,:,,,, .,,,:!!i!;,:;!!;;;tGfC8GCG080L!!0@@8C8808C0!.;;LGG,.::;;,:!::::;;;:;. ,i;:::iL;:;..;,!it;:,;t!,;;,:::;;:,,;ffCGLiL + ::;@L,:;.,:. .,,,;!!!;;;;!ittiiiiiii!!!!!it;;ti!!!!!!!i!: ,;!!!,.!,,;,;tiiti;:,.,,,;i!;:::::;;;;:;t;,,,,!;!,,,,.!GC80:,!LCft!!f + 8#i::,.,.,;, :,:,:;;;itLG08@@##@CLft!!!!!!;;::::;;::,,:ii,:t!!:,,,::::;;:::,,,,,:!fLLtii!;;;;tit;i!:,,,::,.....,:;tGCt,:;;;:;!L + i@!. . ,.:;, .:.,;i;!L8###########0@CfCGCfLt;:i:ffit;;;C8:.i8G0;::!Ci:!!::,,,;;!t!LGCG0G0ff!!!i;:;!!f::,,,,,:;:,,,,::,. ..:!ifG + .Lf,,,;:.,;,..,::;i!ttfC######0CLftttii!!!!ft!:!iCftLffL0; !8GLCttfCt:tCftt;,,:!:!Cf08L8CCGLL0LLff08!Lftfittt!iiit::;;;;:,!fLLG +, !f:.,t;,,,::.:!i!!;ifiiittfti!;;!!i;:;!it!!!;;iiLGGLCfC8; :;;:;ti!!;,!ftfL;;::::iiii!f808@G##0##8#L!####@G#0C0#@GLf00Lt!,,!ttL +, ,;, .:!. ,,..;:,,,,:fi;;;;!;;:!iiLft;iCG0t!ii!;!!i!!!!f8;,iGLiitfLCt::::::!fii!!it!;;f#0GG8#808G8#tt#88GG8#0G##00@iLCt;,. .,!t +,.,... ..,::,.,,,..,,:;;:;itLi::;:;!!;!itLtiffiii;i;:::;iG;,C##80@#@t!i!:;!:;fCCGfttttiG#GG0G#Cfff0#t8#GLLC##CLCCL8#t::::::;;;;: +,.,.,,..:,GG, ,:::,,::::,;!!;:,:;:;!:;!!!!;!;;!ii;;i!iii!t!;;iii!it!;:::;ifi!;!L0f;;L@LCGLLCGCLffL8#t#8LLGC#CLfffL@@GtfCG0CCCCt, +.. .;;.:,:i;;,:;;,,,,:;;;tf;;:,!!,,,:::!ii!;!!!;;!iitii!;:: !!,.;t;,,!i;!;iLCi:::,,!Lf0LffC8fLffC#ti#GffLCGffffLLCi!!0@GCLt!;:: +,,:..:..;;..;!:,.,:;,!Lt!i!!f!:!;:,::!::;::;it!;,:,,;iiii;::.:G:.,00:!#0::,;0Gt;::::;;!f@GG@@L0GC0#;!@GffC@fLLffL@!,,:;;;::;;!;; +.,,,...,;: .,,.. :t,,!ii;!;:!i:!!;:t::,,,.,,::;;:..,,::::;:::::L.,;t;0@i:,,;!!!0fi;!f!,i@8GfL!tGL#G:!#8LG@8f0GGC0C:,:,,:!ifG000L +,;;::,;,.:!,:..,.:;. .,:,,,,,...,...,.,.,,::::;ti::;Gi!iiiiiL,,;i;:.:!!;;:;tft!!i!itttitfLtiii!;if!.!@GCttL;!Cf0#!;!::,t08GCfi!: +,,,:,,;,:;it,,,:. ..... ...,,:;!iitti!i!;:::,,!####@800!,,i08f,;LiittfffttfiiLG0@808000Cf;;;;:,;!i!::;;;!ifi;f!;::;tftti!;; +, .:.,!!i;.,::;;;!;;;:::,,:;;;!ffLLfC0Cf08@Gt:.:Gii##!;;;;;;f8GCit##88@##888GCL!!itffC88GfiiffCffL!!i!i;!i:;0LL::;;:,;fGG0000t +:,,::::::,..;itLLGGLGL;;:::;;itttLfiiiitttfL8##t.;0C;;;:,:;!LGCf!;G@GG880880Lfti;;!::;!!tt!::;LitfitfCG0GC!,,!t;,.,t;,,::ifiii!: +,i!!ifGf. ,LG;;;;;;;:;!itiiiiiiti;!;;;;;!###L!;:;iffffffG8Cti!ifLCLtitfffttttiittfLC08GL!;,,,:,:::;!ii!:,....,..:::,...:!!;;!! +,:,,:ii:. .::, . ,;tffLLfffti!!;;::;!:;G@i;t;,:!fCCCGCt!!!!8@@@#@LtLG8800000G088GCLLt!;;:::;;;;:;;!:...,;::;!;;;;;:,,!G0L;:! + . .,,::::;;:,:::::::::::;::::;;;;::::;;,:;ii:,:;iitt!iGG@GLftti!;!iiiiii!!!!!!;::,,:!ti!itLft!:::,,,;!!!iftii!;;:::;iffi!i +... ;ittii!itttt;;i. .,;;,:!iffftii!!ii;.i##tiitt8G#@t@###G:,,,,..,,,,::;;;:,,,.,,,:ti;!!!!!;:,..:,;!;;!ii!!!;!!;!ii!G880f +;;::,. ..:!i;;;;;::,,,.. :;;:,,,:;!iiii!i!!!!;f##0G###G##0!!tti;:,;:....:..,;;!i!:::::;:;:,:!t;,:;,,,,,:!i;;!!;:;!!;;::;;;!fLt: +;:;;!!, .. . ,:::,:::;;iLCLLLffftLfi###f####t!;::,...,,,,. ....,,,,,!i!i!;!,,,::,,,,,..:ii!!!;:::::;;:,,...,:fGGL +!!;;;!!:::,,.,. ... ,:,,:,;:;itfi!;!ii!;:;!i;::!!;, .. ..,.,::.,. ..,,.... .,!fi:i!,,:,...,:..,;!i;;;:;!i:,;!,:;::,,:!ft! +:,,,,:;::;:,!i;, .. .. .. ...... ,L0;, :, ,,,,,,,.,,,.,,,,.;iL;,,,,.. .,,,,:,:,,,,,,,,,::::,,,.,:!i;...,;i;;ii:!fCL +. ....,::,,;:,,.,:::,,,. . ,,;i!, ,iLLftiiiiiitttGtLLLGtLCiiitfLCC##@;;!i!!!!;;:::,,,,,,:;:,,!ti!;:. ...,,,.. .,,,:;;,!i! +.,..... . .,,:,.,;i!,....,::, :###8:.;##@@###@#######G888808@0888@@@0###GC0888888LCLi::,:;,,,,,,:::::,. ...,::;:,.,,.. ,ft +.,:;;:,,.,,:... .,. .,.. ,Gf;:,,GCi!!!!!!!!!!!!;;;!!!!!!iti!!!;;;i0#t!!!iii!!!!;:,,,.,.,,,,::,,.,. .,. .::!ti;:i!. ,,;t + ..,.... . ,, ... ... ..,,,. . .... .;i .:::.,,,,,,:,::,,:,,,,,,,,,,.......,. ..,,,,,::;. .i + ...,. .....,,. ... .,:,,,. .,,,.. ., .,:,,,. .:f, . ., .::::;::..,,,,:,:;:,,.,:.,,,:,,,,..... . ... . .: + .. . . . ...,.,,,,,,,:::i!:,..,:;;:,. . .,,,......,L, ,.. ,,,,,,,:,. .;:.::,:,,:,,:,,;;!!;;:,;,,,..........,:., + .. .,.. . .,::;;!!;:,:::,,,,.,,.,:;:,. .....,,;;,;,. . ,;. .:::,.., .,..,.,:..:,;!,::,,::;::!:,;:,:,,:,......  + .. ...,,,,.....,::,.....,:!;. ..:;;,.., ,:..,:. .........:..:..:..:,,;,,;,,;,,:,,:,,;:,:,,;,...  + .. ... .. ...,,,,,,,....,:;: :. .,,,::,.,,:, ..,,,::,,..,..,..,,.,,.,,,:;::;,::,,;::;;;;;::,..   . ,,,:. .,,,,:::,,.. . ..,,:::,:,::,,,..,,.. ,!i, ;tiiiiitfC8#f;!,G#G +.:;!!:...,,. ..,,,,,::::::, ..,,..:;:,.. .,,,!:.,::;!!!;. ;GC!,.,:;!!iLC;;;::;:;;;;;;::,,. :i;;:;!iiL##i:.,!i + .,,i!,;;ii,...,,.. .... ..... :;!!;::,..; ;f;;f::itC0888G, :t!:,:;:;!!ii!:Cf,:ifCGGCGGGCfti!;;;:,,:tfC!i###. ;# +:: .,,,:;,;;;;it,. .:::::. .. ..,. .,,,... :;:,,;::t;,:;;;;;;:, ........ ,,:..,:;;;;;;;;!itLGGf:;,:tfti;L#t;,,!# +,:,. .: .. ...,::,::,:i!:!;;;:::.,,..,,:;:,,,,:...,,.!G0:. ,Cf..:,;:. ,...,. .:;;:,,,;:. . .,::::,.,i;i!::;;!fi:!# +. ;t,., .. ...,!!!i;!!ttff!;;:i:,;::!!;i!!!,,;:..;;iL!:,;fL, .,tt;,,,:;i.:!,... .,!CCi;,,!i;!;... .,,::!;;:,,;it#ti# +. ;Gf:.,,,. ......,:,,::::::::,,:;:,:!::!;;;;:,.,,. ,:::;iCtti: ,,,:,,;:,,,..,!;, ..;::;;::!.,;iCf,,:,...:,;.,i!:::;:,:!fiL#L. +i.,i8i,:!: .,::,:,,,..,:!;!;;;::,,,,,:::,,,:::::,,..,,;i, !G!:f,,::!:,:;,... ..,i, ,i::,..,:..,;i:....:::,.,;,,:L;..,,!!;;i##t +8;.,,,,:,:. ..::,:!!!:,,,:itfftL;;;!itfiifi!!iitffiiftCLL!.:Gt!;:.,iGt,!:.. .,,,:;, ,::::;::::,,,,.,,::,,::,,,,,,,,;. .:;;;!tL8@ +;::,::,:,,,, .,,,:!ii!;,:;!;;;;tGfC8GCC080L!!0@@8C8808C0G.,tCGG,.::;;,:!::::;;;;;. ,!:,:;;!:,;.,;,!it;:,;t!,;;,:::;;:,,;ffCGLiL + ::;@L,;;.,:. .,.,;!i!;!;;!ittiiiii!i!!!!!it;;ti!!!!!!!!i!,,i!!!,.!,,;,;tiiti;:,.,,,;!;:::::::;;;:;t;,,,:!;!,,,,.!GC80:,!LGft!!f + 8#i::,.,.,;, :,:,:;;!ifLC08@@##@CLft!!!!!!;;,:::;;::,,,!C:,ti!;,.,::::;;:::,,,,,:!ffLtii!;::;tit;i!:,,,::,.....,:;fGCt,:;;;:;!L + i8!, . ,.:;, .:.,;i;iL8###########0@CfCGCfLt::i:ffit;;;f8f.;880;:;!Ci:i!;::,,;;!t!C0C00G0Ct;!!i::;!!f::,,,,,:;:,,,,::,. ..:!ifG + .Cf,,,;:.,:,..,::;i!itfC@#####0CLftttiii!!!tt!:!iCftfttfC! :0LLCtffCt:iGLif!:::!;!LL8@C8GGCfC0LffL08iLftfitttiiiit::;;;;,,;fLLG +. !f: ,t;,,,:: :!t!!;!tiiittfti!;;!!i!:;!iti!!;;iiLGGLCff8; ;;!;!!:;;;:;ftttL:,:::!iii!f808#G##0##8#L!####@G#0C0#8GLf00Ct!,,!ttL +, ,;, .:!. ,...:;,::,:Lti;;;!;;:!iiLft;iCG0t!ii!!!!i!!!!f8! ;8GiiiittCf;::::;!ii!!!i!;:f#0GG8#808G8#tt#@8GG8#0G##00@ifLt;,...,!t +,.,... ..:::, ,,,..,,:;i!;!tLi::;:;!!;;ifLtitfiii;i;:,::!C;.iCC08@###L!!i!::;LGLGfiiii!L#GC0G#Cfff0#t8#GLLC##CLCCL8#t:::::;;;;;: +,.,.,...:,0G, ,:::,,::::,;!!;:,:;:;!:;!!!!;!;;!ii;;i!!;;!!;.,;!i!itfti;;;::t!!iL0L;;L8fLGLCCGCLffL0#t#8LLGC#CLffff8@GtfCG0GCCCt, +.. .;;.:,:i;;::;;,,,,::;;tf;;:,!!,,,,::!i!;;!!;;;!!it!;;;::, ,f;::;i0G;:i!;iLCt::::,!CL0LLfC8ffffC#ti#GfLLCGffffLLCi!!G@0CLt!;:: +,,:..:..;;..!!:,.,:;,!Lf!i!!f;:;;,,::!:::::;tti;,;!:..;fti!i;,:GffL8##8i@0:;8Gt;::::!!iC@GC@@LGCC0#;!@GffC@fLLffL@!,,:;;;::;;!;; +.,,,...,!:..,,.. :t,,!ii;!;:ii,!!;:t:,,,,,,::;;;;:i::::::::::,,:tCGG0#fi8i:;i!!0ft;!t!:i@8GfLitGL#G:!#8LG@8f0GCC0G:,:,,:!tfG080L +,::::,;,.:!,:..,.:;. .,:,,,,,...,..,,...,,::::;ii:,;G#ti!!!!;!,.:;iiCi:;;;;ift!!i!itttitfLttit!;iL!.!@GCitL!!Cf0#i;i::,t08GCfi!: +,,,,,,;,:;tt,,,:. ..... ...,::;!iitti!iii!;:..:8###@88GC;,:ttiL;,;CttffftffiiLG0@808GG0Gf;;;;:,;!i!::;;;!ifi;f!;::;tftti!!; +, .:,,!!i;,,::;;;!;;;:::,,:;;;!tfLLfC0CLG0@@8i;.:0it#t;;;;;;;L8G0L;i#####888GCL!!itffC80CLtiifCffL!!i!!!!i:;0LL::;:;,;fGG0800t +:,,::::::,..;itLLGGLGL;;:::;;itttLfiiiitfttLCCG#C,i0!:::.,:;iLGLff!;f##@0880Lfti!;!::;i!tt!;::!iffitfL00GC!,,!t;,.,t;,.::ifiii!: +,i!!ifCf. ,LG;;;;;;;:;iitiiiiiiii;;!;;;;:;!##C!;::!fLfffLG0Gfi!!iLLfftfffttttiittfLC08GL!;,,,,,:::;!ii!:,..,.,..:::,...:!!;;!! +,:,,:ii:. .::, . .;tfLCCfffti!!;;::;!;,,:!f;:,,,!LGCG0Gt!;;;L@##@LtLG8800000G088GCLLt!;;:::;;;;:;;!:...,;::;!;:;:;:,,!G0L;:! + , .,,:::;;;:,::::;::::::;::::;;;::::,,,,,:;t!:,:;itLi!!LL8CLfti!;!iiiiiii!!!!!;::,,:!tittiLft!:::,,,;!!!iftii!;;;::;iffi!i +... ;ittii!itttt;;i. .,;;,:;iffftii!!;;:;:0##titif0##i0####0:.....,,,,,:;;;:,,,.,,,:ti!f!;!!;:,..::;!;;!ii!!!!!!;!itiG880f +;;::,. .,:ii;;;;;::,,,.. :;;:,,,:;!iiiiii!!!!;!8#8C###G###t!tttt!:,,....,..,;;!i!:::::;;:::;Li;,:;,.,,,:!i;;!!;:;!!!;::;;;!fLt: +;:;;!!, . . ,::,,:;::;iLCLfffLLfLL!C##C8###ti;:::,...,...........,,,,,!i!i!:,,,:;:,,,,,..:!ii!!;:;::;;;:,,...,:fGGL +!!;;;!!:,:,,.,. .. ,:,,::;:;!iti!!;;;;;;!!i;::;!;,... ..,. :!:,:,::,,,... .,ifi;:,,,:,...,:..,;ii;;;:;!i;,;!::;::,,:!ft! +:,,,,::::::,!i;, .. .. ... ..... ,it,. ,;:::;:. .::..,ffi,..:!!,,,.. .,,,,,,:,,,,,,,,,::::,,,,,:!i:...,;i;;ii:!fCL +. ....,::,,;:,,.,::,,,,. . .,,...:;!!;:.. .,:,,!,:!, :tCt:,,,..,...,,,,,,,,:;:,,!ti!;:... .,,,... .,,,:;;,!i! +.,..... . .,,:,.,!i!, ...,::, ..::,.,,,..,...,,,:,,:,,:,:f:.,,,.,###f,,,,;;;:;;;;;,;;,,,,,,:::::,. ...,:;!:,.,,.. ,tt +.,:;;::,.,,:. . .,. .,.. ,,GG:!:,,,,;:,,,..,;:;!;,:tf:,!::.,!f##!.,::;:::::;,,.,,.,,,,:,,,.,. .,. .::!tt;:i!. ,,;t + ..,...... . ,, ... .,::,.. .,,.....,,,,,,,:Li. .,. ,i0!.,,,:::::;,,,.,,,,,,,.,.......,. ...,,,,,:;. .i + ,..,. .....,,. ... ...,,,., .,,.. ,. .,,.,.. ,;f, . . ,,.,:::;::..,,,,,,:;:,,.,:.,,,:,,,...... . .......: + . . . . ..,,.,,,,,:,:::t!:,..,:;;:,.... .,:,.....,;C, ,...,:,,,,:,. .;:.:;,:,,:,,:,,;;!!;!:,;,,,....,.....,:., + . .,.. . .,::;;!i;:,,:;,,,,.,,,,:;:,. ,..,,,,:!;;:. . ,:. ,:;:.., ....,.,:..:,;!,::,::::;:!:,!:,:,,:,...... . + . .. ...,,,,.....,::,....,,;!: ....,:ii,... ,:..,:. ...,,,..:..,..:..:,,;,,;,,;,,:,,:,,;,,:,,;,...  + .. ... ... .. ..,,,,,,,.....,:;: :. ..,,::,.,,,. ...,::,,..,..,..,,.,,.,,,:;::;,::,,;::;;;;;::,..   . .,,,. .,,,,:::,,.. . ..,,::,,:,::,,, .,,.. ,!i, :tiiiiitfC8#f;!,G#G +.:;!!:...,,. ..,.,,,:::::,. ..,,..:;:,.. .,,,!,.,::;!!!;. ;0C!:.,:;;!iLC;;;::;;;;;;;;::,,. :!;::;!iif##i,.,!i + .,,!;,;;ii,....,.. .... ..... ,;!!;:,,..; ;t;;t;:itC0888G, :t!:,::,;!!ii!:Cf,:ifCGGCGGGCfti!;;;:,,:ifC!i###. :# +:: .,,,::,;;;;ii,. .::::: .. ..,. .,,,... .:;:,,;:;f!,:;;;;;;:, ........ ,,:..,:;;;;;;;;!itfCGf:;,:tfti;L#t;,,!# +,:.. : .. ...,,:,::,:ii:!;;;:::.,,..,,:;:,,,,:...,,.i00:. ,Gf..:,;:... .,...,. .::;,.,,;,. . .,::::,.,i;i!::;;!fi:!# +. ;t,., .. ...,!!!!;!!ttff!;;:i,,;::!!;i!!!,,;:.,;!fL;:,;fC, .,tt;,,,;;i.:!,... .:!LCi;..!!;;,,,. .,.::!;;:,,;it#ti# +. ;GL:.,,,. .....,::,::::::::,,:;:,:;::!;;;;;,.,,. ,:::;iCtti: .,,:,,;:,,,..,!;, ..;::;;:,. ,;tCf:,:,...:.:.,i!:::;:,:!fiL#f. +i.,i8i,:!: .,,:,,,,,..,:!!!;;;::::,,,::,,,,:::::,,..,,;i, !Gi:f,.::!:,:;,... ..,i, ,i::,...,..,;t:....,:,,.,;:,:L;..,,i!;;i##t +8;.:,,,:,:. ..:,,:!!!,,,,:itfftL;;;!itfiifi!!iitffiiftLLL!.;0t!;:.,iGt,!:.. .,,,:;, ,::::;::::,,,,,,,::,,,:,,,,,,,,:. .:;;;!tL8@ +;::,::,:,,,, ..,,:;!!;:,:;!;;;;tGfC8GCGG8GL!!0@@8C8808C0G.:fCGG,.::;;,:!::::;!;;;. ,!,,:;;!:,;.,!:;it;:,;t!,;;,:::;;:,,;ffCGLiL + ::;@f,:;.,:. .,.,;!!!;;::;iitiiiii!i!!!!!it;;ti!!!!!!!!i!,,ii!!,.!:,;,;tiiti;:,....:;:,:::::::;:iii;,,,,!;!,,,,.!GC80:,!LGft!!f + 8#i::,.,.,;. :,:,:;;!tfLCG8@@##@CLft!!!i!!;;::::;;::,,,!L:,t;:,,.,:;::!;:::,,,,,:!ftfiii!;::;t!t!i!:,,,:,,.....,:;tGCi,:;;;:;!L + i8!, . ,.::, .:.,;!;iL8###########0@CfCGCfCt;:i:Lfit;;;L8t.:Cii,,:!L!:;;:,,,,;;!t!C0C08G0Li;!!!::;;!f::,,,,,:;:,,,,::,. ..:!ifG + .Cf,,,;;.::,..,::;!!ittC######0CLftttiii!!!tt;:;iCftLfffC! ;0Ltt::!!;,!ii!!,,,:!;!CL8@C@CCCfC0Lfff08!Lftfittt!iiit::;;;;:,;fLLG +. !f: ,t;,,,:: ;ii!!;!i!!tttfti!;;!!i!:;;ii!;!;;!!fCCLLtt8; !8LLi;i;::,::it!;:,:::!iii!f808#G##0##8#L!####@G#0C8#@GLf00Ct!,,!ttL +, ,;, .:!. ....;;,::,:Li!;:;;;;:!iiLft;!CCGi!ii!;!!!;;;;i0; !0Li!!iii;:,::;!tfiii!ii!::t#0GG8#808G8#tt#@8GG8#GG##00@ifLt;,...,!t +,.,... ..,::, ,,,..,,;!ti;;!t!,,::;!!;;!iftitt!!!;i;::;;tL!,f@80GGLCfti!i;:,;fGCLti!ii;L#GC0G#Cfff0#t8#GLLC##CLCLL8#t:::::;;;;;: +,.,.,,..:,0G, ,::,,,;!;;::;::,,::,;;,;;!;;:;;;;it;:!!t;LC@t.i0tL@880@@Lfi;::::;!;:;;f0ifGLCCGCLffL0#t#8LLGC#CLffff8@GttCG0GCCCt, +.. .;;.:,:i;;::;;,,,;;,,:ii::,,!!,,,:::;!!!!:;t!!!!;;;!C8Lf!::i;iL0####t,;;ti,,:;;;;!CfGCLfC8LLLfC#ti#GfLLCCffffLLCi!!G@0CLt!;:: +,,:..:..;;..;!:,.,:!:,,.::::t;:!;,,::t::::fL;;i;tLGt,,fLCLfL;.;C:,:!f8C;:!!;;;;!!it;!itC#GG@@L0CC0#;!@GffC@fLCftL@!,,:;;;::;;!;; +.,,,....;:..,,.. ;t::,:i;;:;!;,;;:,!:!;.,,:;;;::!if;.,:;:::;!:::t,. .::,;@0;i@@;:;:::i;t@8GfCitGL#G:!#8LG@8f0GCC0C:,:,,:!ifG000L +,:::,,;,.:!,:..,.:;, .,iti!ii!::,,,,::;;:,,,f#t:;##!.,;!!!iiif..;0!:;;::fL!!88i:;;!iititfLtiii!;if! !@GCitL!!Cf0#!;!:::t08GCfi!: +,,,:,,;,:;tt,,,:. .,:;iitLG;:;;!;ifft;,,L@G!;08ii!G###@8C;,:L00GG@0;:!,!LfitiiC8@@800G0GCf;:;;:,;!i!::;;;!ifi;f!;::;tftti!!; +, ..:.,!;i;.,::;;;!;;;,,,::;!!itti!iiiii!;;!!;:,,,;8GiLf!;;;;!0@LG8##0;:!tt@##@8LitfffC88CfiiifCfLL!!i!!!!i:;0LL:,;::.;fGG0000t +:,,::::::,..;ifLLGGLGL;::::::;;;!ii!!i!!!!!ittii!!;;!i!;:,,;t00LCLtCLi::t8@#GLffi!!::!i!tt!;!;!iffitfCG0GC!,,;t;,.,t;,.,:!fiii!: +,i!!tfGf. ,LG;;;;;;;:;iiffLLLLLCCCCCLfffLG800C8##!!LfiiifLGGG088t;;!tifLCLfttiittfLC08GL!;!:,,,:::;!ii!:,..,.,..:::,...:!!;;!! +,:,,:ii:. .::, . ,:tfLCCLLCLftti!!!!i!!!!!!if##!;;;!tfLCG08Li!;;CGLLC8800000G088GCLLt!;;;::;;;;:;;!:...,;::;!;:::::,,!G0L;:! + . .,,::::;;:,:::::::::::;::::::::::,,,..,,:!tt!:.:;!iiti!;;ifi!i!!!iiiiii!!!!!;::,,,!ti!itLft!:::,,,:i!;!ttii!:;;::;iffi!i +... ;ittii!itttt;;i .,;:,:!!ffti!!;;;:,,,,;G##!;:;!it!!i8@##0f:..,,,,,:;;;:,,,.,,,:tt;!!!!!;:,..;:;!!;!ii!!!!!!;;!tiG880f +;;::,. ..:!i;;;;;::,,,.. ::;:,,,:;!iiiiii!!!;!;;f#80#0#C#0#@;8####@C:...,..,;;!i!:::::;;:!;:ii;,:;,,,,,:!i!;!!;:;!!!;:::;;!fLt: +;:;;!!, .. .. ,::,,:::;;iCCLfffLfffff!###L####8#ti;!tiii!:,...,:,,..,,,,!i!i!:,:,:;:,,,,,..:iii!!;::::;;;:,,...,:fGGL +!;;:;!!:::,,... .. ,:,,::;:;!iii!!!;!!;;;;iCt;iL##!::.., ,,. .:;i;,... .,ifi;:,::!:...,:..,;ii;;;:;!i;,;!,,:::,,:!ft! +:,,,,::::::,!!;, .. .. .. .......,.,,,:;,::::!!!:.,::,,,.;i;;,,,:,:::,. .,,,,,,:,:,,,,,,,::::,,,,,:!!;...,;i;;ii:!fCL +. ...,,::,,;:,,.,::,,,,. . ,ii!ittt;tfC00G0ititGftt;ttC8GL!!,::Li:;;;;;:,:,,,,:,,:;:.,!ti!;:. . .,,,.. .,,,:;;,!i! +.,..... . .,,:,.,!i!, ...,::, .,.!CttfffiifffCCCfttttffttC0t!fCLt!tLLfi!fLCCCttt!::,;t,,,,,,:::,:,. ...,::;:,..,.. ,ft +.,::;::,,,,,. . .,. .,.. ,G0;::,,,,,,,:::::::::,:i!:,.,,:,:8###!::;!!;;::::,,,,,.,,,,,,.,.,. .,. .::!ti;:i!. .,;t + ..,..... . ,, ... .;iff!:.:;;;;;::::;:;;;;;;!;::;;;:::;iC##i:!!!!!!;;:,...,,,,,,..........,. ..,,,,,,:;. .i + ...,. .....,,. ... ...,.:####8,,CCGGGCGLLGfCiLGCGC0f:CGCGGffL!;#L!G0C000GfGi,,,,:;:,,.,,.,,,:,,,... .. . ... ...: + . . . . ...,.,,,,,,,::;i;G@@#t,:;!!!;;;!;;;:;:!ifi:,,:;;;;;::,::,,;!!!!!;;;i,.::,:,,:,,:,,;;!i;;:,;,,,..........,:,, + . ,.. . .,::;;!!;:,,;:::;!:, ... .....,,:L; :. ,;.. ., ..,.,;..:,;!,::,,::;;:!:,!:,:,,:,...... . + . .. ...,,,......:!!:. ... ...::,,!fi:, ,. .:. .:, .,;:, .,..:..,..:..:,,;,,;,,;,.:,,:,,;,,;,,;,....  + .. ... .. ..,,,,,.....,:;i;. ;, .,..::..,:,...,,::,,..,.,,..,..,,.,,.,,,:;::;,::,,;::;;;;:::,..   . .,,,. .,,,,:::,,.. . .,,::,,:,,:,,, .,... ,!i, :tiiiiiifC8#f;!,G#G +.:;!i:...,,. ..,.,,,::::::. ..,,..:;:,.. .,,,!,.,::;!!!;. ;GC!,.,:;;!iLC;;;::;:;;;;:;::,,. ;i;::;!iif##i:.,!i + .,,!;,;;!i,....,.. .... ..... ,;!!;::,..: ;t;:t;;itLG888G, :t!:.::,;!!ii!:Cf,:ifCGGCGGGCfti!;;;:,,:tfC!i###. :# +:: .,,,:;,;;;;it.. .::::: . .... ,,,.. .:;:.,i,;C;,:;;;;;;:, ........ ,,:..,:;;;;;!;;!itfCGf:;,:tftt;L#t;,,!# +,:. : .. ...,,:,::,:ii:!;;;:::,,,..,,:;:,,,,:...,,,f0C:. ,Cf..:,;:. . ,...,. .,::,..,;,. .. .,::::,.,i;i;::;;!fi:!# +. :t,., .. ...,!;!!;!!ttff!!;:i,,:::!!;!!!!,,::.,:!Lf;,,:!C, .,tt;,,,:;i.:!,... .:!LCi;.,!!!;,,,. .,.::;;;,,,;it#ti# +. ;Gf:.,,, ......,::,::::::::,,:!:.:!;:!;;;;:,.,,. .:::;!Liti: .,,:,,;:,,,..,!;, .,;::;;:,..,tLLf:,,,...:.:.,i!:::;:,:!fiL#f. +i.,i8i,:!, .,,;,,,,...,:;;!;;;::::,,,:::,,,::::,,,..,,;i, !0i:f,.::!:,:;,. . ..,i, .,i::,......;!t:....,::,.,:,,:L;...,i!;;i##t +8;.,,,,:,,. ..::,:!!!,,,,:!tfttL;;;!itfiiti!!iitffiittCLL!.;0t!;,.,iGt,!:.. .,,,,;,.:::::;;;:;:,,,.,,::,,,:,,,.,..,;. .:;;;!tL8@ +;::,::,:,,,, .,,,:;;!;:,:;!;;;;tCfC8GCCG0GL!!G@@8C8808C0G.:fLGG,.::;;,:!::::;!;:;. ,!,,;;!!:!t..;,;ii;,,;t!:;;,:::;;:,,;ffCGLiL + ::;@f,;;.,:. .,.,;!!!;;::;iitiiiii!i!!!!!it;;ti!!!!!!!!i!,,ii!!,.!,,;,;tiiti;:,....:;:,:::::!;;;:;t;,,,,!;!,,,,.!GC80:,!LGft!!f + 8#i::,.,.,;, :,:,:;;!itLC08@@###CLft!!!!!!;;::::;;::,,,!L:,t;:,,.,:;::;;:::,,,,,:!ftfi!!!;:::t!t;i!:,,.:,,.....,:;fCCi,:;;;:;!L + i8!. . ,.:;, .:.,;!;!L8###########0@CfCGCfCt::i:Lfit;;;f8i ;Ctt,,:!Ci:!;:,,,,;;!f!L0C08G0f!;!;!::;!!f::,,,,,,;:,,,,::,. ..:!ifG + .Cf,,,;:.,:,..,::;i!ittL@#####0CLftttii!!!!tt;:;iCftffffL! ;0Lft::!i;,iti!;,,,,!:;Lf8#C@CLLfCGLLLLG8iLftfittt!ittt::;;;;:,;fLLG +. !f: ,t!,.,:: :!i!;;!i!!ittfti!;;!!i!;;!ii!!!;;iifCGLLtt8; !0LLt!i;::,;;it!;:,:::!iii!f808#G##0##8#L!####@G#0C8#@0Lf00Ct!,,!ttL +, ,;, .:!. .,..:;,::,:f!;;;!!!!:!iiLft!iCG0i!!i!;!!!;!;;iG; !Gt!!!iii;::::;iffiii!ii!:,t#8GG8#808G8#tt#80GG8#GG##G0@iLLt;,. .,!t +,.,... ..:::, ,,,..,,:;i!!!tLt::;:;!!;!iiftitt!!!;i;::;;tC!,f#808#@8GLCfi!!;!fGGGfiiii;L#GC0G#Cfff0#t0#GLLC##CLCLL8#t::::::;;;;: +,.,.,,..:,0G, ,:;:,.:::::;;;;:,::,;!:;!!;;;;;;;it;;!!t;CC@0,t@########LCiitt!;!tCt;:LGitGCCCCCLffL0#i#8LLGC#CLffff@@0tfCGGGCCCt, +.. .;;.:,:i;;::;;,,,,::::tf;:,,!!,,,:::;!!!i::t!!!!;;;;!tfG!:!ftfttti!!;:;;ttt;,,::,!LtLLLfC8LLLfC#ti#GfLLCGffffLLCi!!G@0CLt!;:, +,,,..:..;;..;!:,.,:;,!Lt!i;!f;:;;,,:;f::::fL::!;tC0t::;tttiC!,iLifi;;:::,;,:ii;,,,,,;!iC@GG@@L0CC0#;!@GffC@fLLffL@!,,,;;;::;;!;; +.,,,...,!: .,,.. :t,,!ii;;;:ii,!!;:t:!!,::::,,,::!t:.:GGCLiiC;::!ii;Gt,,,,,:;:;t:,,;!!:t@8GfL!tCL#G,!#8LG@8f0GCC0C,,:,,:!ifG000L +,::::,;,.:!,:..,.:;. .,:,,,,,,..,.,,,,,,,,. ....,:;,,!fLfi!ifi. :t!i!!:!i!ittt!;;;!iiiitLCftii!;if!.!@GCitL;!Cf0#i;!,::t08GCfi!: +,,,:,,:,:;tt,.,:. .........,::;iitti!!!!!;itGG;i####80G!,.:tftCGftftCCLfttf!iCG0@80@08GCf;;;;:,;!i!::;;;!ifi;L!;::;tftti!;; +, .:.,!;i;..::;;;!;;:::,,,:;;!!tfLffCGLfCG88LC##t:!@@tf@#t!!i08LfL0#@i;i880##Gf!!itffC80GfitifCffL!!i!!!!i:;GLL::;::.;fGG0000t +:,,::::::,..;itLLGGLGf;::::;;itttftiiiiittifCG##f;,,;ii;;ttiG@##GffC8Gi;;iii###L;:;::!i!ii!:::!iffitfLG0GC!,,;i;,.,t;:.,:!Liii!: +,i!!ifCf. ,LG;;;;;;::;!iiiiiiiii!;;;;;;;:;;!it:,!itfLi,tt!tLCCCG0#@;!C:;,:!i!iiitfLC08GL!;,,,,,,::;!ii!:,..,.,,.:::,...:!!;;!! +,:,,:i!:. .,:, . ,;iffLLfttti!!;:::;!:,,..,,;ffffLC!,:!!iffCG@#L!i@t:,,:it!GGG88GCLLt!;;:::;;;::;;!:...,;:::!;:::,,,,!G0L;:! + . .,,:::;;;:,::,::::::::;::::::::::,,,.,:!tCLti!;.,;!ittfG0L;,;8t!f:::ifti!!!!;::,,,!ti!itLft!:::,.,:!!;!ttii!;::,:;ifti!i + .. ;itttiiitttt;;! ..;:,:!!fti!!!:::::!fCCfi!i!,.,::;;;!!!if0f!:!i::;i!;:,,,..,,,:it!!!!!!;:,..,,:!;;!ii!i!!!!!;!tiC880f +;;::,. ..:!i;;:;;;:,,... :::,,,,:;!ii!!!!!!;;;;;;;:;8#i!:!!it!;t####8;.,;:.,!!;::::,,:;;::;:!t;,:;,.,,,:;i;;!!;:;!;;;:::;;!fLt: +;:;;!!. . . ,,:,,,:::;tLCftttftt!::::;!C@8#0#L#G#8!@##@C!:. .,..;!;::,!i;i!:,,,,::,,,,,..,iii!!;:::,:;::,,...,:fGGL +!!;;;!;:,:,,... ... ,,,,,,::;!i!!!;!;:!;;!t!;8#@G###C@f!!;;!!;,. .;;,:;;;;.,ifi::,,,:,...,:..,:!i;;;:;!i:,;!::::,,,,!tt! +,,,,,::,:::,!!;, .. . .. ......,.,iti!!,;!i:;!f0i:;,,.,:;::,,:,:,i:,:!i: .,,,,.,;,,..,,,,,::::,,,,,:!i:...,;i;;ii:;fCL + ....,::,,;:,,.,::,,,,. . ,i!!C0CL;iiLi;!;!;!tLitf;LC@GLCfL!;,;!;;!;;;:,:,,,,,,,:::.,!ti!;:. . .,,,. .,,,:;;,;i! +.,..... . .,,:,.,!i!,....,::. ,,.!CtttLLii!itLCLCfLtfLiff!CGG@0Lti!!t8@GttC0Gitt!,i::!,,,,,,:::::,. ...,::;:,..... ,tt +.,::;;,,.,,:. . .,. .,. ,00:,;!,,,,,,:;!;;:::::::;:::;;:,:t##Cf!;;!i!;::,::,,,..,,,,:,.,.,, ,. .::!tt;:i!. ,,;t + ..,.... ,, ... .;iff!:.:!;;;;::::;:;;;;:;;;;::;::;;;####C::;!!!;;;:,..,,,,,,...........,. ..,,,,,,:;. .i + ...,. ... .,,. .. ..,.:####8,,fLG0GCGLCCtGfG0CCt0G;LGLGGfG0!i##t!GC000GfGi,,,,:;:,,.,:.,,,:,,,... .. . .... ..: + .. . . ..,,.,,,,,,,::;i;G@@#t::;!;!;;;!;;;:;;;!;fi:,:;;;;;::,,:;::;!!!!;;:!:.:!,,,,:,,:,,;;!!;;:,;,,,...... ...,:,, + . ,. . .,::;;!!;:,,::,:;!:, .. ..... ..,,!, , .. :,..,, ..,.,;..:,;!,::,,::;::!:,!:,:,,:,.. ... . + . ...,,,,.....:!!:. .. .,,,,,..,;!f, ,. .. :, ..:.......:..:..:..:..:,,:,,;,,;,,:,,:,,;,,:,,;,....  + .. .. .. ..,,,,,..,,:::;!;, , .. ., ..:...,:, . .,.,,.,,..,..,,.,,.,,.:;,:;,::,,;::;;;;:::,..   .. ,,.,...,::,,::,. .. ..,::,:;:::,:,.... ;t:. ;tLC0GLLftt +:;i!,,::,. . ,:,:,. ....::;!!;, .,.,:;::;;!!t: ,0f:.,,,,;iitfffLi;;:,:;;;;:::,. ,!f!;;:;;t + .:;;iifi:,,.,,,. ,. .... .,::,:,,,,. , !!t;ttttfLLff; .::..;!;;!!;:::fL;GC,;fCGGGCLCLfi!;;;;;;;::,..,::,,,,:f +. .,,::,,:::;ii.:..,,;::,,...,.. ..:,. .... .,.:;:,.i!;f;::;;::,. .,,.... ,,,:;:,::;!i!;iffCGG0000GGGCfi!!,,..,:!G + . .: .. ..,,,,;;;!t!;;:;;:::,,:,.:,:!;::,,;:,,,,...i0G:,. ,it,,ii,.. .,:..:. . .::::,..;;,. .!. ..,::;;!!;;;!tfff::...:ffG +if:,..... ..,;!;;;:::!!ii;::,t;,:::!!;!!!!,,::. .,:!LLi:,:if,,ii!,:,::;.,i,.,.. .::ff;:..:!!!::,, .. : .,,:,,.,.!!ifL +:08; .:. .....,,,,,,,,:;;;;:,,,::,.,::::::::,,.,.. .,:,,::;fC!,,,::,,;;,,...,!i, .,!::;:,.. .,fGC:,,....;,::,:,. .:,.,,,:,:i;!f +.fG:.:;, ..:;:;:,,..,;tfLti;!;,,,,:::::,,,::;;;::,::;:,,, ;0i..::Li,:;,.., ..,!, ,,!;;;,..,..,:;:,,,.,,..,,,,;,...;,..:fif!::;i +,:,,.,,:. .,,,,:;i:,::;;;!!tL;:;!LLGLfCfi!tLG0GLfCL8ftiff,;@t..,:tf,;:,..,,,,,:. :::::;;;:::,....:;;,,,:,,:,..:;:,;,. ,:;CG:.,; +,:f;,:,,,,. .,.,,:;!!!,::::;;:!Ltf8GCG0880t!0@GGC@8G@8C8@C,:08, ::::,:i;::;;;:,:. .;::;;!i:::,,;:!ti;::!ti,:!..;!:!!,.. .:!, , +,;#f,:;.,:. .,,,;!;;!!!!itfLffffti!!;!iii!;;!i!;!i!i!iitt;.,fi:.!::::;ti!i!::,..,,;;;,::::::;!t;:t;,,,:!;;,....,,.:!;:,;!;;:;;:: +Ci::,.,.:;,.::::::;!fCG0#######@8LLi!!tt;::,,!,;;;t:;;iCt;..ff:.,;!;:;;:::,,:,:!iLfLttti!::;i!C!;;:,,:;,:,.....,. .;!::G@GC0GGL, +f:,...:.:;,..:,,:i;iL0@##########88GtLCLitt;;;:!Liii!!ittt; ;8i,,;GL:!!:,::,;!!f!t0G8@88Ci;!!i!!;!!f;;;:::::;,,::::;::!LCftGCtf! +tt,,,!;.,:,,.,;:;!!iiif08@##8Lfttttt!!!!!!tfi:;iCttfCLt!tt; ;00;:!!;,;ft!!::,:!:;iiC@L0GC8LG#G0#08#i0GG8Lf00ffftLC@ti:G##8::,,.  +:t, ,t!,.,::.:!i;::;i!!!iitt!;::;!ti:;ifCf!!!!iitLCLLtit00: ;8L;ft:,,:;!tti;:::;!!!!;i8088G8#0##@#Gi#####0##G@#@G@0C::!t@#;;;;:: +.:, .:!, ....::,,:,,i!:;;;iii:;;:ii!;;fCGf!ii!;!!!;;;;;;tL; ;LLtfti;;:;;;;iLftiiit!;:t#8GC0#8GGG8#ti#@0GC8#0G80GG@L!.,,GL;tG80Ci +,... ..::;, .,,,,,,:;!;:;ifi::;,:;;:;iifiiti!!i;ii;::;!!iLt.;#####8GLCLti;;!fL0Ci!tf!t#GC0G#Cfff0#tf#GLLL8#CfLLfG#G;.,;Li::!CLi: +,.:,..!:G0:.,;;::,:;:;:;;;::,:;::i,::;;;:;;;!if;::;i:tGLfG0,;######@8G!:!t!!;iCf::!0!iCCLCGCLffL0#i@@CCCL0LLfLff0GL;;;!#G;;::;:. + :!.::;!;!;:::,,,::;;;if;!;:!!:,:::::!;;i;;ti!i!;;::;ii!iL!,;ttftti!!:::;L0f;:::,;iitGCLC@CLCLC#Li#GffLCCffffLCCi:::;8#GLfffCCf +,,....!i. :::. .:!:!Lf!!!;ti;!;:,;;tt:,:tCi:i!tL0L:..:!tti!ft,:CtCt!;:,..,i!!t;;:,;i;i#8G@#fCGG8#i!#0ffC#tLGCLL@!,!,,Cf!!;:;C@Gt +,,..,.,:...,.. ,t,,;!i!!;:;t::;;,!::!,:,::,,,:::;;,..,G0CCtiCi::itt!Gi,,,:::;t!;;;;;:!G0Cti!!Cf##;;##LG88iCCCC0G;;;,:i!iG;.:;!;, +:::.:,.,i::,.,,,,. .,,,,,,...,,,,,,:::,,,..,,,::;!::!tLfi!itf, :tii!!;;itfti;!ift!ittfLftii!;!ii,;00L!it;;Lit0!tt::,,;!L;,:;!it +,,..:::;iL,.,:, .........,,:!!itffLLtttittitLG8#L;0#@#0CGt:.,!LtLCffL00ffttitiif8@@@@@@0Gi!!!!;!ii!:::;;;!t!;!:;:::,..,,,:i0C +...,..;;!;,,;!;;;ii!!;;:,,:;;;!tfLLfCGGLCG0@8GLC##8!!@#Cf8#0i;!f@CffG##L!i8#@88Gf!!ttitttii!tL80G0Lffitt!i::GLL;.!;;,.,,:::!;!i: +.,;::::.. :fCGGG0fCG;:;::;;ittitfi!iiiiiitLLtiC#G!:,:it!:iLtG@##0LfL08f!;;ff###fttiii!!!:,:::;!ii!!itLCLi,.,:;:,,i;,,.;i!f!!:iGL +:;!fCC, .;C!;;;:;:::!ittiiii!!!!!!!;:::!i!;;i0!.;ittLL:;fiiLCCG08##i!0i!::!i;L08@@888Gi;,,,....,,:;!!;,....,:::::;,,,:;::,,:;! +..,;;:. .,,.. ,..:!ttLCLttti;::,,,,,,,,,,,:;:;ifffLGL:,;!!tfC0@#@ti#G;,:;ififfftttiti!;;:::;;;:;!fi;:,,;;;;!;;:;::,,,... ,:!i + . ,,:;;;;;;::::::::::::;;:::::,,,,,..,.,;:;iLCfii!,.:;!!itC00i:;@G!!::;iLfi:,,,...,!tt!!ifLti:::::,:;!;;ttiii!!;;:;;!;:;::i +.. ,!tttii!tttt!:!; .;i;:!!tti!!!!::,,:::!CGCf!i;, .,:::;ii!!t0L!;!!::!ii!;::,,,,:ti;;!!!;!;,,,::;i!;!ii!!i!;;!;;!itfLLi:; +;::, .,:!;:::::::,,.. .:;:::::;!iiiii!!!!;!!:;!!!;;f#ti:;!tti;i0###@i,:,,,,!t!;:;::;;::,,:ii:,;:,.,:;;i!;;::::;:::::,:;;;!!;:! +;:;!:. ... ,::,,:;:!iLGCftttti!i!::;;!!L@G#@#C####!8###0i:. ,,..;!!:::ii!;:,,,::,,,,,...!ft!i;:::::::::,,.....,:,,: +!;;;!;::::,,.. ,,.,,,:,;!!i!;;:;!!!!;!ff!8##f####C#t!;;!!;:. .,,.:;;!!,!t!;:::::....,, .,::::,,;!!,,!;;!;::::,::;;! +,,,,:::;::,!!:.. ... :L8Lti!!:,;i;:!f@t!::. .,:,:,,:,,,;:.:!t;...,,,,;:,.....,,:,,,.....:;!:...,!i!ttt!;ifLi + ....,::,:;:,..::::,:,. . .,;i!, ,iffC@0CtiitLiiiiitLCffLiLL#0G8CGit,:!!iti!;;::,,,;,,,:,.:ii!!;,. . .,,,,,,,,,,,:;,,,::, +...... ,,,:,.,!!;,...,,::. :###8,.!@8GG0@88888@@88888@@08@08#####@@GiiC8888888LLf;,,,:..,,,:;;:::,.....,,:;;ii:,,,. ...  +.:;;:,,...,. . ... ,,... ,Cf!:,.0@i;!i!;!!!!!!!!!!!!!!!!ii!!!!!!!i##GLfiiii!!;;:,.....,,,,:;:,.:,,,,. ..,,!!!;!t: ,!; , + ..,.... .. ,, .,,, .. .,,::, ., ...... .,i. ,.!####;,,,,,,:,,.,,:,,,,,,,,,,,,,.... .. .,,,,,:, .,,. . + ,..,. .... ,,. ..........,,:,,,..,:,,.. .,.. .,:,::.,:f, . , ,,,C#8::;,...,:,::,::,,,.,:,:::;,,,....., ,, .,...,::,  + . ... ...,,,,,,,:::::i!,,..,::;;:.. .,.,,,....,!f, ... ,;;,,:,. .::,,!,,,,;,,:,,;;;i:;;,::,,,,,,.,.,..,,.:: + . ,.. . .:::;;!::,,::,,,:,,,.,,,,. .,.......,;i, , ,. .. ,:..,:..,..:..:..:,:!,:;,::,,::;:,;:,;:,:,... . . + .. .. ....... . .,:,......,. ..,,...,::i!. . ,, . ..:.,;,.:..:..:..:,,:,,;,,!,,:,,;,,;:,:,,!,.... . + .. .. .. .. ..,,,,,.....,,:::,.., . ., ., , . .,.,,,,:..,. ,,.,,.,,.,;,:;:::,,;::;;:;;:::,.... . ... .,.,...,:::,,:,. ..... . ..::,:;:::::,.... ,ti.. ,tif8@CC +,;i,,,::,. ,:,,, ..,::;;;;:, .,.,,;::;!if!..tC!.,,,,:;ttfLffff;:;,:;;;;::,,. ;tGitif + .,;!!tt;:,,.,,. .,. . .,,,,..,,,. : !;t:!tt!tfiii. ,,,.,;;;!;;::::iCi:C:;fCGGGGLLLti!;;;;;;::,. ,:;;:;i + ,,::,,,,,;;i..,.,,;::,,...,.. .,:. ... .,,.:;:,.!!;f!::::,.. .,..... ,,,,::,:;;!!;;!LLG000000GGGCfi!!;i!,;:;i +, ; .. ..,,,,;!!t!;!;!;;::,,::,:,:!!::::!;,,,,,,..;G0;,,.,it:;t:,. ,,,.:, . ,;;:,, ,:,, ;. .,::;;;!!!!!iLCG000f;!,,,; +i:,,,... ..:!;;;::,;;!!;::,!i,,;:!!!!i!!:.:;,..,:!tLCt:::!f:;;!:::,,:,.!:.,.. :,if!,, .:;!;:,,. ... : .,,:;!;;,,;,.,i +i@t.,::. ....,,,,,..,:;;!;::,,,::,.,:,:;:::,,.,.. .:CL::;;Lf:,::::,:;,.. ..,i;...:;:::,.,...iGG;,,,.,,;:,,,,;. ,:.,,. ,,.,.:t +:C;.:::. ,;;;!,,,..:iLCLf!!!,.,,::::::,,::;!!;::;:;;!t,, ;8!.;:fL:,;:.,,....,:.,,:;:!,..,,.,;!:::,...,,,,,,::,..,:.,,,:ti;!i;! +,,,.:,.,. .,:,,:!!:,:;!;;;iLt;:!LCCCfCCt!ifG08GLGL8CtitL: ;8i,,:!f:,;,..,,:::,,.:::::;;;:,::,t,.;L;:,,:::;:, ,!;,:,...!iii:tGL: +,Ci:,,,.,. ,.,,,;!!!;:::::::;ffi00LCG088C!L@0CC08CG@CG@0: :0G.,:,,,,!!::;;;;,,, .:;:;;;i;::,:!;;tt;::;it:,!,.,!:;!:....;!,.:ft, +,#8,:;..:,..,,,,;:!!iiiiffLLfLfti!!!!iiii!;!i!;!iii!!itf!: :fi:!;::::ii!!!:,,..,,:;;::::::::!!!;t!,,,:;;::....,,.,;;;,:;tit:,,:. +t;:,.,.,:;.::::::;;fC0G#########CLCi!ff!;:,,;::t!f;;!iGC:,.,Lf:,:!!::;;::,,:,,;!fLLtttti;::;!!;;!:,::;,::....,:.. :i:,f8G##Citti +!,...:,.;,..,,,,i!!fC0##########@08ffLftit!;::;Ci!i!!iii;!t,;G!::LG;:i!,:;::;;t:!GG8@8@Gt!!!!;!!!;i!;!;;:::;;::::;!;:!LLG8@G!G0t +t,,,;!,.::: .;;:;iitiiL88#@8Ltttttti!!!!!ift::!ffitLCfi!iit.;GG:;i!::ftt!!::,:::;tf8fL@G80G#GC#@G#ii#0@8LC@LfGftC#Ci:t#####0:;;: +i,..!t:.,,;.,!i;::;!;;!!iiti;:;;!it;:ifGCi!!!iiitLLLfiiGGi: :0iiL;,,,:;itti;;;:;!!!;;f#88G8#88#@##iC####G8#G0##CG@C;,:!L@##i,,,  +,, ,!: ...,:,,;:,;i;;;;iit;:;:!i!;;tCGCiiti!!!!!;;::;!ii;.;tLfft!!;:;!;;tLfftiti!:;8#GCC8#0CCG##t#@GGCG@GCG8GG@Ct,..!@itf:!LCi +......,:;:..,,,,,,,;!;::;tt;::,::::;!itt!ti!!i!!t!::;iiii0G,;#####0LLLLf!;!!f08i;tfii@0CGC08CffG#0t#0fLLC#CffffC#8t,,:tff#t!Lt0t +.:,,.!:tGi,,:;;:::;:;::;;::,,;::i,,,:;;;;!;:!t;:::!!;GCLC0@:;#####0G0C!;it!;;LL;,;LfiLCfLCCLLff0#tt#GLLfCLffLffC8fi:t!@###!tt::, + .i:,::!::!;:;,,,::;;!!f!!!::!;,:,:::;;;ii;;!!!!;;:,;ii!!ift:;fttti!!!:;:t80!:;:::;i!GCLL00LCLf0#!L@CffLGffLffLGt;,:;08Lt;:tL;:; +,..,.,f, .:;,..,!;;fLi!!;!f;:;:,,!!L:,,;LL;!iiLLG;,.,:!ittiff,:CtCt!;:,,,;i!fC!i,,i;;C#G8@GL0CG#f;G8CfL8Cf0CLLG0:!:.!0!:,.,:iGtC +,, ,.,::.......t!,:;i!!!::i;.::.,;:;,.,,:,,,,::;::,. :G0GCfiCt::!tti0t,,,:::!ii!!;;::tGGii!!ffG#!,C#CG08ftGCCG8!;!:,!;iLf,.,0C!! +::.,:,,i!::.,:,,, .,,,,,....,,,,::::,,,.,,,,::;!!::;iffi!!fL, ,tti!!;!tfti;!iLCt!iitfftii!;;!!,.L0Lf!!;:itiGi:C!;,,;!ti,::LG:: +,, .;,!!L!.,:: ..........,:;!itffLLCLttttfttfG0@#C;C@8#GLGf!..;LffLff00CftfiittiC8@@@@@80f!!i!!!iii;::;;!!t!:::;::,,..,,,:!;;t +.... ,;;!:,;!!;;itii!;:,,,:!;!ifLLfLCGCLGG@88GCC###!;8#0f@#8i!!t@GffG@#Gii0#008GL!iiiittttiif08G00LLLtfi!;:G0ti.:;!:.,::::;!:;:, +,;::::,. .iCGGG0Cf0f:::;;;!itiift!!iiiiiifLftiL#8i:,:it!;iCfC@##8LfLG@f!!!ft###fttiii!!;:;!:;!ii!!!!tLff:.:;;:,,;!:,::!!Ci!:,,,! +:;iLGi :ti;;;:::::;iittiii!!!!!!ii;:;;ii!;;f@i.;!ttLL::LiiLCCGG8@#ii0t!::!i;C@@@@88Ct;i:,..,,,,,:;;;:..,,,,;:::::,:,:::,...,: + .:;;,.. ..,....,.,:itfLLftti;::,,,,,,,,,,,::;;;!fffLGC:,:!!tfL0@##tt##;,::itiittiiii!;;;;::;;;:;!tt!;,,:!;;!!;;;;::,,,,. .,,: + .,:;;;;;;:::;,:::,:::;;::::,,,,,,,.,..:::;ifLftii:.,:;!itL08t;;@#i!,:;ifLi,,.....:!t!;!iftt;::;::::!!;ittiiii!;;!!i!;;;::, +. .;ittii!ittti;:i, .,ii;;!!ti;;!i;::,::::;LGCf!i;, .,,:;!ti;;i0Ci;;!;:;iti!::,,:;;!;;;;;;;;:,,:::!!!!ii!!!!!;;;;;!itfLLti! +;::. .,;;:,,,:::,,,.. ,:;::::;;!iiiiiiii!!tt:;;!!;;t#t!;:!!ti!!C####t,,,,:,!t!;;;::!i:,,,;i;,:;,.,:;!!i!;::::::::::,,,;;;!!;;! +;;!!,. ... ,,::,:;:;ifCGLttttt!!i!;;;;!!L@G###8G#@#!0###@f;. ,,..;!!;::ii!!:,,,::,,,,,..:ffii!:::::,:::,:,.....,,,,; +!;;!!;:::,,,.. . . ....,,,::;;!!!;:::!!!!!iff!8##f####L#t!;;!!!:, ..,,:;;!!:ii!;::,:,....,. .,:::::,;!i:.,;:!;;:::::::!i! +,.,::::::,:!;:.. .... ,L8Ltii!:,;i;:!f#C!::....:,:,,:,,,;i,,;i!...,,,,,,,.,...,,,,,.....,;;;,...,i!ittt;!fLfi + ...,,:,,;;:,.,:;:,::,. .,;i!. ,iffC@8GttiifiiiittLCffLiLL#0G0CGtt::!!iti!;;:::.,;,.,,..:i!;!:. . .,,,,,,,,,,,::,,:::, +...... .,,,,..:!!;....,,:,. :###8,.i#0GG0@8888888888888@88@88#####@@0tiC8888888LLt;,,,,..,,,:::::,,.....,,;;!t!:,,,. ,. . +,::;:,...,,. ..,. ,. .. ,Cf!:,.8@!;!i!;!!!!!!!!!!!!!!!!ii!!!!!!!!08GLfiiiii!;;,.,....,,,,:::.,:,,:. ..,,,;!;;i!. :; .; + ....... .. .:. ,,,. ,.. ..,::, ., .......,!, ..:####!..,,.,,,,,,,:,,,.,,,,,,,,,... . ..,.,,,. .,, , + ..,. .. ..,,. ..........,,:,,,..:::,. .,.. .:,;:..:f! . , :::f##:,:,. .,:,:,,:;,,,.::,;:;;,:,,,..,..,. .,..,:::.  + . .. ..,,,,,,,::::::i;,..,:::;;,. . .,..,,.....,f!. ,.. ,:;,,:. .:.,:,,:,,;,,:,,;:!!:!::;,,,,,,....,.,,.,;: + .. .,. . ,:::;;!:,,,:,,,::.,,.,:::. .,,.. . ,,i,. .. , . ..,: .,.....,.:,,;;,;:,:,,:,,;:,;,,;,,:,..... .. + . . ...... .,:......,,, ...,.. .,:;t, , .:. ., ,.,:.,:..:..,..:.,:,,;,:!,,:,,;,,;,,:,:;,... . + .. .. . .. .,,,,:,......,,,::,... .. ,, ,. .,.,,.,:..,..,,.,..,,.::,;;:::,:;::;:;;:::,,,... . ... ,..,...,:::,::.. ...,:, .. ..::::;::::::.... .it,. !iiL@8 +,;!,,::,. ,,,,, .,,:;;!;;: .....,,!::!!tL; ,CC;.,,,,:;tffLLffL;:;::;;;;::,,. .;CLtC + .,i!iti;,,,,:,. . ,. .. . .,,,,,,,,,.. :.!!:i:ifiitfii;..,,..:!!!!;!::::!Cf:C;:tCGGGGLLLfi!;;;;;;::,. .:;i;i + ,,,::,,:,::!!.,.,,,;,:,,..,,.. .:,.. ... ..,,,;:.,t;!!:;:::,,.. .,.... ,,,:::,,;!ii;;!LCG000000GGGCLt!!;;!G::;! +. ., .. ...,,,:!!!i;;;;;;;::,,;,.:,:!!::::!:,,,,,.,iGi:,,,.:i:.it,. ,:..:. .. ,;;:,,.:,,. :C, .,::;;;!!!!!tLGG00000!t:,: +!,,..... ..,;!;;::::;;!!;:,,t;,:;:!i!i!!!,,::...,:;fft:;,:f:.!;!::,,,;..!,.,.. .:,tf;:..,;;;:::,. ... ., .,,;!!;;;::;:,: +f0;.,;. .,...,,,,...,:;;;;:,,,,:,.,,,::::::,..,.. .,:,,:::!fi,,:::::;;... ..;i, ..!:,::...,.,fGC: ,,.,,!,:,,,; ;,.,, ,,,,.,, +!f:.::: ..:;;;;,,..,:tLCft!i;,.,,:;:::,,,:;!!!;::;:;;::, ,CL,.;:Ct,;;:.,,. .,;,.,:;;;;...,,.,:;:,,,...,,,,.,::,..;,.,,,;ifC;:i! +.,..,,,.. .,,,,::i::,:;!;;;tL!:;iCCGLLGLi!tLG80CLGL@ftL8f,:0L:.,:if,:;,..,,::::,.;;:::;;;:,:,,,.,;;;,,,:::;:..:i;,;,,.:iiitL:!Lf +:C;,:,,.,. .,.,,:;!!!::::::;:;fit8GLG0080f!G@CCC88C88L@#G,,f0:.;:::,,!;:;;;;:,:. .;::;;!i:,,,,;:!ti:::;ii,,!..;!:!!:....;,,,,,t! +;#f,:;.,:...,,,:;;!!iiitffCLLLftii!!iiii!;;!i;;!i!i!ittf!.,!!::ti!!;!ti!i;:,,..,,;;;:::::::;!!;:t;,,,:;;:,...,,..,!;:,;iti!:.,:. +i::,.,.:;,.:::::::;LGG0########@CGL!iff;::,,!,;i!f;!;t0L!..L!,.,,;fLLt;;:,,;,:!!LLCfttt!;::!!i;;::,:;;,:,.....:,..;i,:008##i!Cii +;,...:.:;,..,,,:i;!fG8##########80GfLLfiif!;;:!GffLtffftti,;C!,...::::,:i!:;!!t;tGG@@88Ci;!!!!!;!ii;;;;;::;;:,:;;;!::iLC0808;iCL +i,,,i;,,:,,.,;:;!!iiitG8@#@0ftttttt!!!!!!fLt;!t0GCG880Lftt.:0@t:;:,. .,:ti;:;;::!!f8LC0G@CG#G0#88#!C@0@GL88ff0ff0#fi:0#####t.,:; +;. ,ii,.,:: :!!:::;i;;!!iit!;:;;!ti::ifCf!iititfi;!!ii;t0! :8G!LL!:,,:,:;;iti!;!!;;;!G880G8#8##@#8i#####0##G@#@G#0C::!t08##:..,. +:...:!, ...::,,:,,!!;;;;iii::::!i;;;fLCti!:;;:,,,. .,:!ti,:fLfLft!i!!;:::;;;tftf!;:i#@GCG#@GGG8#fi#@0GC8#0C0GC0@C!..,0L!Cf!:!tt + .. ..:;;, ,,,,,,,,;!::;ii;:,:,,::,:i!!i!!!;;!::!;;;!ffL8@:;8####80GGCft;::;:fCi;ft!i#0C0G#CffL0#tt#0LLL0#CffffC#C;.,;Ltf#0t0G!f +.:,..!:GG:.,;;::,:;:;::;;:,,,:,,;,,,,:;!!!!;!L!!tfCtf@8G08:!GC8###Ctfiiti!!:::,,,;C!iCCLLCLLffL0#iG#CLCLGLLfLffGLt;;:!#@##tiL!,, + ,!,::;!:!;:::,,,::;;!if;!;:;;:,::;!!!!;!;;iftiiii!iffLfft!:ti;!ti;,;!!;;tf:. .,::;!i0CLC@fLCLC#Gi#GffLLCtfffLCL!::,!8Gfi;:tfi:; +,....;t. ,:;. .,!,;LL!!;;ii:;:,!;:;tfi!;;i;i!itCG:;GfLGG0CC:,G;.:::,:fG;i8i;..,,,;i:!8@G@@fLGG8#i!#0LfC#tfGCLL8i,i,,Cf;:, .:G8!t +:..,.,:,..... ,t,,;;i;!;,:i,,:,,,,:;;;!;!;!!;::;!!titfft!it;,:f,:f::tf;;@8i:;;!!!!:,;fGCii!!Ct@#;;@#LG88!fCCC0G;;;::!!iG;..;80f: +::.:,.,i;:,.,,,,. ..,,,.,.. ...,,::;;;;;;!tt;:.,00!t@0!;itt,.:fi!iii;,;CL!!ifC0Ciiiitfftii!;!!i,:G0Li!i;:fii0!tL!;,:!!f:..;CGL; +,..,::!!L:.,:, ..........,:;!itfffLf!!ittft!:.,:!!8#tG@@8L,,!8@G@#0,,i0LffCLLftiG8@@@@@0Gt!!i!!!iii;::!;;!i!;;;;:,,,,.,,,;!!!! +,.,..;;;;,,;!!;;ii!!;::,,,;!;!tffLtLCGLC8@@@8f;:, ,@#!;!!;;::i0CC0##f;!###@@0@8Ci!iiiittiiiiL88G0GLLfffi!;:GLt:.!!!,,,:::;!!:;i! +,;::::.. ,tGGGG0LLG!,::;;;!itiifi!!iiiitfLLfLff8!,ifC;:,,:;iLCLtffi;:t0tttttfLLLttiii!!;::::;!ii!!!!fffi,.,:;,,,!;::!!;iC!!,,::i +:!tCC: :L!;;;::::,;iitiii!!!i!!ii!;:;!ii!;@#G!::;!ffLCCG088GLi!i!itffi!!tCCG8@@@@88Ct;,,,,,.,,,::;;:,....,::;::::::::::.. .,! + ,:;:. . .., .....:;ttfCLftii;::,,:,,,,,,,,;C#f::,,;fCG0@@8t!!;;08LtLG80CLftiiittiiii!;;;::;;;;:;!tt!;,,:;;;;;;;:;::,,,,. ..: + ,,:;;;;;;::::::::,:::;;:::,,,,,,,,.,..:;;!!t;:,:!iffti!itfftt;;;iii!!;;:,,......,:tt!;ttfti::;;:::;!!;itiiitt!;;!!i;;::::, +. ,!tttii!ittti:;! .:i!;!!it!;!ii;;::,::,;###fti!Cf#C!8####0:...,:,,:;!!!:,,,,,::;i;:;!;;;;:,,:::i!;!ii!;i!!;;;;;!ittLLft! +;:,. ,:;;::,::::,,... ,::::::;!!iiiiiiii!!if;t##0####G###!!G@Cft:. ....,,:;!;:;;:;!;:::,;i:,::,.,:;!!i!;::::::::,:,,:;;;!!;;i +;;!;. .. ,,:,,:;;!ifCCftttii!!it:i###L###fLt;;,:::,,,. .,,,,. .,,,;iii;::t:::,,.,,,..;Ltii!:::;:,::::,,.....,,,,; +;;;!!::::,,,. . . ,...,,:,:;;!!!;:,:!!;,,:;i;:;!!: . .:.,.,!,..:!f!,..,. ,;i!!;;t::.....,. .,::::,,;!i,.:;;!;:::::::;!i! +:,,::::::,;!;,.. ..... ,L8!:,.. .,:::,,..,,:,,,:f;:::;!i!:.,. ...,,,,:,,.,...,,,,,.....,;;;....;!;itti;tLLfi + ...,::,,;;:,.,::::::, . .,;i!, ,iLLfLiitftG80G8tffC0fffiGf00LLf@##!.:;!!!!;;!:,,:;,.,:,,;i;;!:... .,,,:,,,,,,::,,::::: +..... .,,:,..;i!:....,,:,. :###8,.!##@@G8888@8##@@88@#@88@@@8@@@@@8##Cii088888LLt;,,,,..,,,::::::,.....,:;;!t!:,,, ,. ., +,;;;:,...,,.. ... .,. . ,Cf!:,.8@i!!!!!!!!!!!!!!!!!!!!!!;!;!!!;!ii##L!iiiii!;;,,...,.,,,:;::.,:,,:. .,,,:;!;;i; :: ,; + ...... . .:. ,,,. ,.. ,,,::, .... ...,,, ,i#8,.,,,.,,,,,,,:,:,.,,,,,,,,,,.. . ..,,,:,...,,.., + ...,. . .,, .........,,:,,,..,:;,,, .,,,:,. .,;!; ,. , .,:;::,.. .::,:,,::,,..:,,;:!;,:,,,..,..:...,...:;::,  + . .. ..,,,,,,,:::::;i:,..,::,. .,,.....,;i!,. .:: .,.. ,,.:,,:.. ,:.,;,,;,,;,,:,:;:!;:!::;,,,,,,.,.,,,,,.,;: + .. ,,. . ,:::;!;:,.,:,,,:,.,. .,..,.,,;fi:.. .. ,. :,...,:,..,, ......,..:,,;:,;,,:,,:,,;,:;,:;,,:,... . .. + . .. ....... .::. .... ..:!i!,.,; .. :: .,!: .,:,.,,.,:.,,..,..,.,:,,:,:!,,:,,;,,;:,:,;;,... . + .. . . .. .,,,,,..,,,::. : ...,;,,,,:, .,,,,,,.,,.,:..,..:,.,.,:,.:::;;,::,:;:;;:;;:::,,,... . ... ,..,...,:::,::.. ...::, .. ..::::;::::::.... .it,. !iiL@8 +,;i:,:::. ,,,,, .,:::;!;;: .....,,!::!!iL; ,CC;.,,,,:;iffLLffL;:;::;;;;::,,. .;GLtC + .,iiifi:,,,.:,. . ,. .. ..,,,,,,,,.. :.!!;i:ifiitfii!..,:..:!;!!;!::::!Cf;C;:tCGGGGLLLfi!;;;;;;::,. .:;i;i + .,,::,,:,::!!.:..,,;,;,,..,,.. .:,.. ... ..,,,;:.,f;i!:;:::,,.. ...... .,,:::,,;!!!;;!LCC000000GGGCLt!!;;;G::;! +. ., .. ...,,,:!;!i;;;;;;;::,,;,.:,:!!::::!:,,,,,.,tG!,,,,.:t:,it,. .,:..:. . ,:;,,,.:,, ,;. .,::;;;!!!!!tLGG00000!t:,: +!,,..... .,;;;;::::!;!!:,,,t;,::;!!!!!!;,,::...,:;fti,;,:L,.;;!,:,,,;..i,,,.. .,,tt;:. ,;;;;:,.. ... ., .,,;!;;;;::;:,: +f0;.,;. .,..,,,,....,:;!;;:,,,,:,..,,::::::,..,.. .,,,,:::;fi,,,::::;;,.. ..;i, ..!,,:,... .,fGC;.,,.,,;,:,,.;. :,.,, ,,,,.,, +!f:.::, ..:;;;;,,...:tLCft!i;,.,,:::::,,,:;!!!;::;:;;::,.:Lt,.::Ct,;;:.,,...,;, ,:;;:;. .,..,:;::,....,,,,.,::,..;,.,,,;ifC;:i! +.,,.,,,. .,,,,::i:,,:;!;;;tL!::iLLCLLGLi!tLG80CLGC@fttCC,:0t,.,:if,,;,..,,::::..;::::;:;::;,,,.:t;;,,,:::;,..:i;,;,,.:iiifL;!Lf +:C;,:,,.,. .,.,,:;!!!::::::;:;Lii0CLG0880f!G@CCL88C88C0#G,,L8: ::,:,,i;:;;;;;,:. ,;::;:!i:::,,;:iGi:;;;ti,:;..;!:!!:...,;:::,,t! +;#f,:;.,:...,,,::;!!iiitffCLLLftii!!iiii!;;!i;;!i!i!itffi.,!i:,!::::;ti!i;::,..,,;;;:::::::;!!;;t;,,,:;;:,...,,..,!;:,;itii:.,:. +i::..,.:;:.:::::::;fG00########@CGL!iff;::,,!,;i!t;!!i88!..LL:.,:;:,;;:::,,;,:!!LLLftti!:::!!i;;;:,:;;,;,.....:,..;i,:008##i!Lii +!,...:.:;,..,,,:i;!LG8##########80GfLLfiit!;;:!Ci!iiiittf;.!@C:;:ft:;t!;:;:;!!f;tGG@@88Ci;!!!!!!!!t;;;;;::;;:,:;;;!::iLC0808;iCL +i,,,i;.,:,,.,;:;!!iiitC8@#80ftttttt!!!!!!tfi::!LttfCCt!tf! :08t,;iL!!tttti::,;::!!f8LC8G@CG#G0#8@#iC@0@GC88ff0ff0#fi:0#####t.,:; +!. ,ii,.,:: :!!;::;i;;;!!ii!;:;!iti:;tLGL!!!!!!ifLffi!t08; :;!:,,;;;:,,!ftf:;;;!!;;:!G880G8#8##@#@i#####0##G@#@G#0C::!t08##:..,. +:. .:!, ...,:,,:,,!!;;;;iii::;:ii!;;fLGf!ft!!!!!;;::;!fC!.,LCCf!iif!,::::!LLftff!;:!#@GCG#@GGC8#fi#@GGC8#0C0GC0@C!.,,0L!Cf!:!tt +... ..:;;, .,,,,,,,;i;:;iti::;,::;:;!!ii!ti!!t!tt!;:;tttLf,;8###0@#L!iti::;fC0Gi;ft;i#0C0C#CffL0#tt#0LLL0#CffffC#C;.,;Ltf#8f0G!f +.:,..!:G0:.,;;:;,:::;::;;::,:;::i,,,;;;;!!;!if;:;!!;iffi!f!;!ii!!it;!t!!!!!;!ii:,;L;!CCLLCLLffL0#iG#CLLLGLLfLffGLt;!;!#@##tiL!,, + :!,::;!:!;:::,,,::;!;if;!;:;!:,::::;i!!!!:!ii!:;!!!ii!;;:,.f!;,:,,::::LGC0f:,::::;!iGCLC@fLCLC#Gi#GffLLCtfffLCL!:::!8Gfi;:tti:; +,....;t. ::;. .,!:!LL!!!;it:;::,;!tf:;:::::;iii!:;,,::!ti;:.;G;f, !G;!#L!!!i!;;,:i;!8@G@#tL0G8#i!#0LfC@tfGCLL8i,!,,Cf;:, .,G8!t +,..,.,:,..... ,t,,;;i!!;,;t:,;:,;::!,..,,,,,::;;i,.::;::::,::;!,, .:i;L0i:::!!!!!!:,;fGCii!!Ct@#;;@#LG88!fCCC0G;;;::!!iG; ;@0f: +::.::.,t;:,.,,,,. ..,,,,,...,,,,,::::,,,,::::;t;, ;0t!iii!t,.::!!;,.:ii!tti!tfCLi!iitfftiit!!!i,:G0Li!i;;fii0!tL;;,:!!f:..:LGL; +,..,::!!L:.,:, ..........,:;!itfLLCCftfttti!;:,..!####880!,,!0G@@!,;8GLLLLLLLfttG8@@@@@0CCi!i!!!iii;::!;;!i!;;;;:,,,..,..;!!!! +,.,..:;;;,,;!!;;ii!!;;:,,,;!!!tfLLfLGGLCG0@@@@i: :0i!##i;;:::fCCG88!i#######8@@Gt!iiiittiiiCC08G0CfLfffi!;:Gft:.!!!:,::::;!!::!; +,;::::.. ,tCGGG0LLG!:::;;;!ititfi!iiiiiitffLCC#t,;8C;;!:,;!tCLti!;;t8CffttttfLLLftiii!!;:::!!!ii!!!ifffi,.,:;,,,!;:;it!!Ct!,,,:! +:!tCC, :L!;;;:::::;ittiiii!!!!!ii!::;!i;i##i!::;ifLLLLC08Cf!!itfttttii!!tCC08@@@@88Ct;,,,,..,,,:;!;:,....,,:;:::::;::::,...:i + ,:;:. . ..,......:;itfCLttti;::,,,,,,,,,.:ii;:,,:iLCG00Gi!!;;0##@LfC088CCftiiittiiii!;;;:::;;;:;!ft!;,,,::;;;:::;;:,,,,. ...: + .,:;;;;;;::::::::,:::;;::::,,,,,,,,,..,,:if;:::iiffi!!fCCLLt!;;!iii!!;;:,,......,:tt!!!ifti;:;;::,:;!;itiiitti;;!!i;::;;:, + ,!tttii!ittti:;! .:i!;!!it!!!tt!!;:::,!##0ftft#L#@i8###@0:....,:,,:;!!!:,,,,,:;;i;;;;;;;;:,,::;!!;!ii!;i!!;;;;;!iitfLLf! +::,. .:;;::,::::,,... ,::::::;!!iiiiiiii!!i!f##0####G##8i!tftt!:. .....,,,;!;:;;:;!::,,,;t:,;;,.,:;!!!!;::,:::::,:,,,;:;!!!!! +;;!;.. .... ,::,,:;:!ifCCftttii!!i!i###f###8!!;;;,,..,,...,,.... .,,,;tii;:,,,,;:,.,,...;ftii!:::::,::::,,.....,,,,; +;;;!!::::,,,. . . ....,,:,:;;;!;;:,:!!;,:;!::,;;:. ...,.,.:;,.:;;;,...,. ,;i!!;:;,:,...... .,::::,,;!i,.:;;!;;::::::;;i! +:,,::::::,;!;,.. ... ,L8;,. . .,:::,,..,,:...:!:,:;tt;,.,,. ...,,,,,,,.,,,,,,,,,.....,;;:....;!;itti;tLLti +. ...,::,,;;:,.,:;:,::,. .,;i!, ,iLLftiiiftC0CL0itfC0tttift@Lt@##8;,;!!!!!!;;;:,,:;,.,:,:;i!!!:... .,,,:,,,,,,::,,::::: +..... .,,::..;i!:...,,,:,. :###8,.!##@@###@8@8888008@#@08@888##@@##8ft08888888LLt!,,,,.,,,,:;::::,.....,:!;!t!:,,, ,. .. +,;:;:,...,,.. ... .,. .. ,Cf!:,.8@i!!!!!!!!!;!!!!!!iii!!!!!!!;;!;i##i!iiiiii!;;!,.....,,,:;::.,,,,:. .,,,:;!;;i; :: ,; + ...... .. ., ,,,. ,.. ..,::, . .... ..:i. .,!t:..,,,,,::,:,,,:,,,.,,,,,,,,,... . ....,:,...,,.., + ...,. .. ..,. .. .....,,,:,,..,::,,: .::,. ,:i!. :, . . ...,::,...::::,,;;,,..:,,;;!;,:,,,.., .:. ,..,:;::.  + . .. ..,,,,,,,:::::;i:,..,,,,....,::,..,,;tt,. .,..;. .:,. .,.,:.. .:.,;,,;,,;,,:,:;:!;:!::;,,,,,,.,.,,.,,.,;: + .. .,. . ,::;;!;:,,,:,,,:,.,. ,:,::,:!Cf::, ,,. .:. :;...,;,... ,, ......,..:,,;:,;,,;,,:,,;,:;,:;,::,.. . ... + . .. ....... .::. . .,..,,:fL;,.;i..,. ,!,.,!: .,;:......,:.,,..,..,.,:,,:,;!,,:,,;,,;:,;,;;,.,. . + .. .. . .. ..,.,,,..,:!i, .; ..,,,;;,,,:, ,,,::,,,...,.,:..,..:,.,..:,.:::;;,::,:;:;;:;;:::,,,... . ... ,..,...,:::,::.. ..... .. ..::::;::::::.... .it,. !iiL@8 +:;t;,::,. ,,,,, .,,::;!;;:. .,.,,!::!!tL; ,GC;.,,,,:;tffLLffL;:;::;;;;::,,. .;GLiC + ,:iiiti;,,,,:,. . ,.. . . ..,,,,,,,,,. .: .i:t:!fiitfii!..,:..:;;!!;!::::iCt;C!:tCGGGGLLLfi!;;;;;;::,. .:;i;i + ,,,::,,:,::!!.:.,,,;,;,,..,,.. .:,.. ... .,,.;;:,,;!;i;:::,,.. ...... ,,,:::,,;!!!;;!CCC000000GGGCLt!!;;;G::;! +, ,, .. ...,,,:!;!i;;;;;;;::,,;,.:,:!!::::!:,,,,,,..!0C:,, :f:,it,. ,:..:. . ,;;:,,.::, :: .,::;!;!!!!!tLGG00000!t:,: +!,,..... ,:!;;::,:;;!!:::,t;,::;!!!i!!!,,::....,;!CLi:,;f:.!!!,:,,,;..i,,,. ,,tf;,. :!;;!!,.. ... .; .,,;!;;;;::;:,: +f0;.,;. .....,,,....,:;!;;:,,,::,..,,::::::,..,.. .,:;,,:;!Lt,,,:;:,;;,.. ..;i: .;,,:,.., .,fGG;.,,.,,;,:,,.:. :,.,, ,,,,.,, +!f:.::, ..:;;;;,,. .:tLCft!i;,.,,:::::,,,:;;!!;::;:;:::,. !0;.::Cf,;;:.,,...,;, .,;::;. .,.,,:;:,,,...,,,,.,:,,..;,.,,,;ifG;:i! +.,..,,,. .,,,:::i:,,:;!;;;tL!::iLLGLfCLi!tLG80CLGC@fttCf, !0!.,:if,:;,..,,::::,.;;:::;::,::!,,.,;!;,,,:::;,..:i;,;,,.:iiifC;!Lf +:C;,:,,.,. .,.,,:;!!!::::::;:;Lii0CLG0080f!G@CCC88C88C0@C, :0! ::,:,,i;:;;;;;,:. ,;;:;:;!:,:,,;:!ti:;:;ii,:;..;!:!!:...,;:::,,t! +;#f,:;.,:...,,,:;;!!iiitffCLLLftii!!!iii!;;!i!;!i!i!ittt!, :i;,!:::,;ti!i;:,,..,,:;;:,,,:::;!!;;t;,,,:;;:,...,,..,!;:,;itii:.,:. +i::,.,.:;,.:::::::!LG00########@CGL!iff;::,,!,;i!f;!;t0L;. ,C:,,:;:,;;;::,,:,:!!LLCftti;:::!!i;;;:,:;;,;,....,:,..;i,:008##i!Lii +!,...:.:;,..:,,:t;!LG8##########800fLLfiit!;;:!Ci!i!iii!!t,.!C;;:Lt:;t!::;,;!!f;tG0@#@8Ci;!!!!!!i!t;;;;;;:;;:,:!;;!::iLC0808;iCL +i,,,i;,,::, ,;:;!!!iitC8@#@0ftttttt!!!!!!tfi::!LttfCCtiitf, :0L,;tf:;tffi!;:,;::!!f@LC8G@CG#G0#8@#!C@0@0L88ff0ff0#fi:0#####t.,:; +;. ,ti,.,:: :!!;:::!;;;!!ii!;:;!iti:;ifGL!!!i!iifLLLt!t8Gi. ,::.,!t;,,;Lfff::;;!!;;:!G880G8#8##@#@i#####0##G@#8C#0L::!t08##:..,. +:. .:!, ...,:,,:.,;;:::;!ii::;:ii!;;fCGf!tt!;!!!;;:;;itft,.;ttt!itf:,::::!ffftff!;:!#@GCG#@GGC8#fi#8GGC8#0C0GCG@C!..,0L!Cf!:!tt +... ..:;;, .,,,,,,,;!::;ifi::;,::;:;!iti!ti!!t;it!;;;ttfL0;,C###0@8i!i!::;;fC8Gi;ft;i#0C0C@CffL0#tt#0LLL0#CffffC#C;,,;Ltf#8f0G!f +.:,..!:G0:.,;;::,:::;::;;::,:;::i,,:;;;;!!;!tf;::!ftLttttfti;iii!iLt;;;;ti!;iff:.;L;!CCLLCLLffL0#iG#CLLLGLLfLffGLt;!:!#@##tiL!,, + ,i,::;!;!;:::,,,::;;;if;i;:;!:,:::::!;!i!;t!!!;;!itti!;:::. ,t;:;!::it;;f0C;:;:,:;;!GCLG#fLCLC#Gi#GffLLCtfffLCL!:::!8Gfi;:tfi:; +,.,..;t. ::;. .,!:;ff!!!;it:;::,;!if:,;::;;:!fLt!:;:,;::..:. ,Cf:GC:i@!,,;!!ft!!,:i;!88G@#tL0G0#i!#0LfC@tfGCLL8i,!,,Cf;:, .,08!t +,..,.,:,..... ,t,,;;i!!;:;t,,;:,;,:!,...,,.,:;!!;,:,,,,:,,!;::;f;;t!8C;,:::;iii!!!::;fGLii!!Lt@#;;@#LG08!fCCC0G;;;::!!tG;. ;@8f: +::.::.,i;:,.,,.,. ..,,,,,...,,,,,::::,,,,,,,:;ii:.:f!iLittGG!.::, ;ii;:!tti!itCLi!iitfftiii;;iL,:G0Li!i;;fii0!tL;;,:!!f:..:LGL; +,..,::!!L:.,:, ..........,:;!itffLLCftftii!;::,,.!###@@00Cf:,!0;,i8LfLLLLLCLLfttG8@@@@@0Gt!!ii!!iii;::!;;!i!;:;;:,,...,..:!!!! +,.,..:;;;,,;!!;;ii!!;;:,,:;!;!tfLLfLGGLCG8@080!, ;G;i#t;;;;;;!t8L!C#888#####8@@Gf!iiiittiiitL08G0CfLfffi!;:Gfi:.!!i::::::;!!:;!; +,;::::.. ,tCGGG0LLGi:;::;;!ttitfi!iiiii!tLC8##G,,t8;:::,:!!tCGf;!CCfLtttttttfLLLftiii!!;:,::;!i!!!!ifffi,.::;:,,!;:;tLtiCti,,,:: +:!tCC: :L!;;;:::::;iittiii!!!!!ii!::;:f###Li!,;!tfLLfL08GfttifCfi!iiti!!tLC08@@@@88Ct;,,,...,,,::!;:,....,,:;::,:;;;;::,..,:! + ,:;:. . ..,...,..,;ttfCLftii;::,,,,,,,,:tL!:i;,,;tCCCGLiiiiC@###@LLG088CCftiiitttiii!;;;;::;;;:;!tt!;,,,:::;;:::;!:,,,,. ...: + .::;;;;;;::::::::,:::;;::::,,,:,:,,,,,,:;ti:,:;!itt;i8#@GLfii!!!iii!!;;:,,......,:ttCi!tfti::;;::,:;!;itiiiiii;;i!i;:::::. +. ,!tttii!iftti:;! .:i!;!!ii!!ift!i!!;;,!##LtiftG8##t@###0;,,...,:,,:;!!!:,,,,,:;;!!f!;;;;;:,,:;;;!;!i!;;!!!;;;;;!!iitfLLi +::,. .:;;::,::::,,,.. ,::::::;!!iiiiiiti!!iti@##C###0##L!!tti!:,,. .....,,:;!;;;;:;!;:,,:;i:,::,.,:;!!!!;::,,:::,,,,,::::;!!!! +;;!;. ... ,,::,:;:!ifLLfttiii!!ii;i###L###L!:,::,...,.. .... .,,,;tii;:,,,,:,,,,,...;ft!i!::;;::::,,,,.....,,,,; +;;;!!::::,,,. ... ....,,:,:;;;!!;:,:!!;,,:;!::,;:,. .. .,,,:;,...,,...,. ,;i!!;:;,:....... .,:::::,;!i,.:;;!;:::::::;;i! +:,,::::::,;!;,.. .... ,L8!,.;. ..,:::,,,,,,,,,:,..;tL;,,,,. ...,,,,,,,.,,,,,:,,,,....,:;:....:!;itti;tLLti +. ...,::,,;;:,.,:::,::,. .,;i!, ,iLLfttiitiiLfC8tffLGtLLiLiLLtf###L!!!!!!!!;;;:,,:;;,,:::!i!!!:.... .,,,:,,,,,,::,,::::, +..... .,,,,..;!!:....,,:,. :###8,.!##@@###@##@0@@@888@@8@@@@@@@0G@###@@8888888LLf;,,:;.,,:::;::::,.....,:;;!t!:,,, ,. .. +,;:::,...,,.. ... .,. .. ,Cf!:,.8@i!!!!!!!!!;!!!!!!!!!iti!!!!;;;;!tGi!iiiiii!;;,..,,,,,,,,::,.,,,,:. .,,,:;!;;i; :: ,; + ...,.. . .,. ,,,. ... ..,::, .. .. . .,;! ..,,,,,:,.,,,,,,,:,,...,,,,,,,,... . ....,:,...,,.., + ...,. . ..,, .........,,::,,...:::,. ,:. .,:,.. .,ii. ., . ., .,::....,:,:,,::,,..:,,;:!;,:,,,..,..,. .,..,:;::.  + . .. ..,,,,,,,:::::;!:,..,:::::,... .,,,. .,,:fi. . ., :,.. ..,,,. .:,,;,.;,,;,,:,:;:!;:!::;,,,,,,.,.,,,,,.,;: + .. .,. . ,::;;;;:,.::,..:,.,,..,, ,,.,,,:ii:::. . .;,..;;. .,:,,. ,.:,.,..:,,;:,;,,;,,:,,;,:;,:;,,:,... . ... + . .. ....... .::. ...... ......:!!:. .i. . ,;!..,:, .,..,,..,.:,..,..:.,:,,:,:!,,:,,:,,::,:,;;,.,. . + .. .. . .. .,,,,,, ...,::;: :. ,::::;:,,,::....,,::,.,:..,..:,.,.,:,.:::;;,::,:;::;:;;:::,,,... .. .,. ,,.,...,:::,::.. ..... .. ..::::;::::::.... .it,. !iiL@8 +:!i;,:::.. ,:,,, .,,:;;!;;:. .,.,,;::!!tL; ,GC;.,,,,:;tffLLffL;:;::;;;;::,,. .;GLiC + ,:ti!ti;:,,,:,. :.. ... .,,,,,,,,,,. , .i:t:!tiitfii!..,:..:!;!!;!::::!Ct;C;:tCGGGGLLLfi!!;;;;;::,. .:;i;! + ,,,::,,:,:;!!.:.,,,;:;,,..,,.. ..:,.. .... ..,,.:;,,:!!;i;:::,,.. ...... ,,,:::,,;!!!;;;LCC000000GGGCLt!!;;;G::;! +. ,: .. ...,,,:!!!t;;;;;;;::,,;,.:,:!!::::!:,,,,,,.,t0L;,, ;C;,it,.. ,:..:. .. ,:;:,,.::,. ,; ,::;!;!!!!!tLGG00000!t:,: +!,,..... ,:;;;:::,!;!!:::,t;,:;;!!!!!!!,,::....:;!0L!:,;L:.!;!,:,,,;..i:,,. ,,tf;,. ,!;!;:,.. ... . .! .,,;!!!;;::;:,: +f0;.,;. .....,,,....,:;!!;:,,,,:,.,,,::::::,..,.. .,::,,:;!Ct,,,::,:;;,,. ..;i: .;,,:,... .,fGC;.,,.,,!,,,,,:. :,.,,. ,,,,.,, +!f:.::, ..:;;!;,,. ,;tLCft!i;,.,,:::::,,,:;!!!;::;:;;::,. !0!.::Ct,;;:.,,. .,;, .,;::;. .,..,:;:,,,...,,,,.,:,,..;,.,,,!ifG;:i! +.,..,,,. .,,::::i:,,:;!;;;tL!::iLCGLLGfi!tLG80CLGC8fttCf, !0;.,:if,:;,..,,::::..;:,::;::,::,.,.,;;;,,,:::;,..;i;,;,,.:iiitC;!Lf +:L;,:,,.,. ...,,:;!;;::::::;:;Lii0CLG0880f!G@CGL88C88C0@C, ;0; ::,:,,i;:;;;;;,:. ,!;:;:;i:,,,,;;iii:;:;ii,,;..;!:!!:.,.,;:::,,t! +;#f,:;.,;...,,,:;;!!iiitffLLLLftii!!iiii!;;!i;;!i!i!ittt!, ;!;.!:::,;ti!i;::,..,,:;;:,,,:::;!!;tL;,,,:;;:,...,,..,!;:,;itii:.,:. +i::,.,.:;:.:,:::::!LG00########@LCL!iff;::,,!,;i!f;!!t0f;, :G;,,:;::;;;::,,:,:!iCLLttti;:::!!i;i;:::;;,;,....,:,..;i,:008##i;Lii +!,...:.:;,..:,,:i;!fG@##########800fLLfiit!;;:!Ci!i!iii!!f,,tG;::Lt:;t!;;;,;!!f!t00#@@8Ci;!!!!!!!!t;;;;;::;;:::;;;!::iLC0808;iCL +i,,,i;,,::,.,;:;!!iiitG8##@0ftttttt!!!!!!tfi::!LttfCCt!!tL: !0f,;tf:;ftfti;::;;;!!f@LC8G@CC#G0#8@#!C@0@0C88ff0ff0#fi:0#####t.,:; +;. ,ii,..:: :!!;:::!;;;!!ii!;:;;!ti:;tLGL!!!!!iifLLLt!t0Ci,.:;:.,!!;:,:iftf;:;;!!;;:!G880G8#8##@#@i#####0##G@#8C#0L::!t00##:..,. +:. .:!, ...::,,:.,;;::::!!i::::ii!;;fCGf!tt!;!!!!;;;;itft,,iffi!ttL!,::::;ifftff!;,!#@GCG#@GGG8#fi#8GGC8#0C0GC0@C!..,0L!Cf!:!tt +... .,:;;, .,,,,,,,:!:::iti::;,::;:;!iti!ti!!t!it!;:;ttLL0:,0##@0#@i;ii;::;fC80i!ft;i#0C0C@Cfff0#tt#0LLL0#CffffC#C;.,;Ltf#8f0G!f +.:,..!:G0:.,;;::,:::;::;;;:,:;,:i,,:;;;;!!;itf;:;!!!fffiiti!;iii!if!:;;;!i!!tCL:.;f;!CCfLCLfffL0#iG#CLCLGLLfLffGLt;!:!#@##tiL!,, + ,!,::;!:!;:::,,,::;;;tf;i!:;;:,::;::!!!i!;tii!;;;!itti;:::. :i:.:;,,;L!;L8G!;;:,:;;!GCLC@ffCLC#Gi#GffLLCtfffLLf!:::!8Gfi;:tfi:; +,..,.;t. ,:;. .,i,;ff!!!;it;;:,,:!tf::::;;:;!fti::;,;i!!;,,,.:Gt.:G::@@;,;iiCfti,:i;;88G@@tL0G8#i!#0LfC@tfGCLL8!,!,,Cf;:. .,08!t +,..,.,:,..... ,t,,;;i!!!:;t,,;:.:,:!,,.,,..,::!!:,.,::,,:;,:i;;C,,!:t@f::::;iii!!!::;fGLii;!Lt@#;;@#LG88!fCCC8G;;;::!!iG; ;@0L: +::.::.,i;:,.,,,,. ..,,,,,...,,,,,::::,,,,::,:;tt;:;Ci!iiiit0;,:!:,.;i!;!tti;!iLLi!iitfftii!;!!i,:G0Li!!;;fii0!tL!;,:!!t:..:LGL; +,..,::!!L:.,:, ..........,:;!itffLLCftftii!;::::.!####@800i:,!80::L0LLLLLLCfffttG8@@@@@0Gt!!i!!!iii;::!;;!i;;:;;:,,......:;!!! +,.,..:;;;,,;!!;;ii!!;;:,,:;!;!tfLLfLGGLCG0@#8Gi: :Cii##!;;;;;;t80ti@#8@#####8@@Gf!iiiittiiitL88G0CfLfffi!;:Gfi:.!!i::;;;:;!!::!; +,;::::.. ,tCGGG0LLG!:;::;!!ttitfi!iiiiiiiLCG##@:.;0C;;;:,;!iLGL!;;GGCttttttfLLLLftiii!!;,,::;!ii!!!!ffft,.::;,,,!;:;tLLtCti,,,:: +:!tCC, .:L!;;;:::::!iittiii!!!!!ii!::;!;@##8t!::;ifffffL08Ltiit8Ltiiitii!tLCG8@@@@88Ct;,,,.,,,,,:;!;;:.....,:::;::;;;!;:,..,:; + ,:;:. . .., .....:;ttfCLttti;::,,,,,,,,:!00!:t:,:!fGCGGCi!i!C@###LLG088GCftiiittiiii!;;;:::;;;:;!ft!;:,,:::;::::;i:,,,,. ..., + .,:;;;;;;::::,:::,:::;;:::,,,,:::,,:,::::!t!:,:;iifi!L0#GCLt!!!!iiii!;;:,,......,:tt!!!ifti;:;;::,:;;;!iiiiiii!;iii;:::::. +. ,!ittii!iftti:;! .:i!;!!!i!ifftiii!;;:,L##titft88#0f###@L,,...,:,,:;!i!:,,,,,::;!;;;;;;;;:,,::;;;;!i!;;!!;;;;;;!!iittLL! +::,. .:;;::,::::,,... ,::::::;;!tiiiiiiii!if!f##G8###0##f!!tti;,.. .....,:;!;;;;:;!;:,,,;i:,;:,.,:;i;!;;::,,:::,,,,,::::;;;!! +;;!;. .,. ,,:,,:;:!ifffttiii!!;ii!!###L####t!:,:,,..,,........ .,,,;tii;;:,,;:,,,,,...;fi!i!:::;:,::,,,,.....,,.,; +;;;!!::::,,,. . ,...,,:::;;;!;;:,:!!;,,;!i;::!;:, .. ..,.,;;,.,:,..... ,;i!!;::;i,..... .,:::::,;!i:.:;;i;:::::::;;i! +,,,::::::,;!;,. .... ,L0;,.!, ,,:,,,,.,,,.,,,.,iti,,,.. ...,,.:t:,.,,,,,::,,,....,:;:...,;!;itti;tLLti +. ...,::,,;;:,.,:::,::,. . .,;i!, ,iLLftttiiiittf0tLLCGtfLitiiffCG##G!!!!!!!!;;;:,:!:,.,:::!i!ii;,,,...,,,:,,,,,,:::,::::, +...... .,.:,..;!!:....,,:,. :###8,.!##@@###@######88888808@0888888####888888888LLf;,,,,.,,,:;;;:::,...,.,:;;!t!:,,, ,. .. +,;;;:,...,,.. ... .,. . ,Cf!:,.0@i!!!!!!!!!!!!!!!!!!!!!it!!!!;;!i##i!iiiiii!;;,.....,,,,::::.,,,,:. .,,,:;!;;i!. :: ,; + ...... . .:. ,,.. ,.. .,,::, ...... .;! ,::,..,,,,.,,,,,,::,,,..,,,,,,,,,.. . ..,.,:,...,,.., + ...,. . ...,, ... .....,,::,,..,::,.. ., .,:,,,.. .:f. . . ,, ..,::,. .,:,:,:::,,..:,,;:!:,:,,,..,..:......,:;::,  + . .. ..,,,,,,,:::::!!:,..,:::;:,.. .,,,...,,,:L, ,....,.,,,,. .:,,;,,;,,;,,:,:;:!;:!::;,,,,,,.,.,,,,,.,;: + .. .,. . ,::;;;;:,,,:,.,::.,..,:;::, .....,:!!,:,. .. .;: .,:,,, .....,..:,,;:,;,,;,,:,,;,:;,:;,,:,... .. + . .. ....... .::......,:!;: ..:;:,.., .,;,..,, ...... .,.,,..,..:.,,,,:,:!,,:,,;,,:,,:,;;,... . + .. .. . .. .,,,,:,,.. . .,,;: ,, .,:,::,,,,:,...,,:::,.,,..,..:,.,.,:,.:::;:,::,::::;:;;:::,,,... .. .., ,.,,..,::::,:,. ...,,. .. ..:;::;;:::::.... !f:. . .;;;C +:ii:,!:,.. ,..,. ,::;;;;::,. .,.,,;:!ttLC: ,Ci,.,,,,;!tfLLLftf!;;::;;;;;:,,. ,CLGC + ,:t!it!;::,:;,. .:.. ....,,,,.,.. ,: .i:i:;fi!i!;!:,..,,,:;;;;::::::!CL;Cf:tCGGGGLfft!!;;;;;;:,, ,;iLf + :,,::,,,,::!:.:,,,!:::,,.,,,... ...:,....... .,,:,.;;:,,:i;!;::,.. ... ..,..... ..,:::::,,;!!!;;!CGG000000GGCLt!!;;;;;C;:i + ;. ,. .....,;!!ii;;;!;!;::.:;,,::;!;:;:;!,,:,,,,,,!G0;,. :f:,fi,...,:!.,:. .. .:!!::,.:,, ;: .,:;!i;!!!!!fC00000000ti:; +,,,..,. ,;;;;,,,:::!;,,.:t,.;;;!!!i!!;,,::..,,;f!t0t:,;f:,!;;:;,,,:.:!:,, ,,:ti::..:!;!;:,,. ....; .! ,,:;!!!;;;::!i, +CC,,,;. ,.,.,,,... .,:;!;::,,,,,,.,,:::::::,.,.. ..,;;:,:!iGi,::::,:;:.....,ii, .!,.,.... .:G0G,.,.,,:!,,.,,:. .;.,:, .,:::.,. +i:,,,:, .,;;;!:,,..,;fGCLtii:.,::;;:::,,::;!!!;:;;;!::,,, !0;.,!G!,;:,.,,...:!, .,;,;: .,..,;!!,,,..,,,,,..:,,.,!,,,,:iiLGt,,: +...,,.,. .,,:::;i,,,;!!!;;ff;:;LCCCLCGfi!tC0@0CGGG8ttLG;, !0;.,:ii,::,.,,::::;,.::,,:;::,:;.,:.,;!;,,,::;;,.,!i::;,,.;iiitf!;:i +iL:.,,.,, ,.,,,:!!;;:::::;::!f!f0LLGG080!i80fLL8GL@GC88;, :G;.;,,:,:i;;!!;;:,:. ,!:;;:!!::,,:i:ii!:;;!t!,::.,!::!;,.,.:!:,:;,,i +t8:,::.::..,,,,::!!iitiffLCLLLftii!!iiii!;;!!;;!i!!!itfi;, :t;:;,:,:!ti!!:,,..,::;;:,,,,:::i!t!!t:,,::;::,...,,..:;!:,;tttt:;. . +;:,..,.:;,,::::::;tC80#########8L0fifCf;;:,:i:tiit;!iL0i::.:C;,,:;::!!;:,.,,,:itGLLftt!;::;!!i;!::;;!:,;,.,,,,:,.,!!,:0C@##!,:!: +:,..,:.;:,..:,,!i!tLG@#######@##00LfLft!ii!;:;tfi!iitti;;fi,;L;:;L!:if!;;;,::itiC0@#@@0Li!!!i!!i!it!i!!;;;;;;:;!:!;:;LLC88@L.!Lt +!,,:t:.:::..:!;;ii!!!t00##0Ctiittti!!!!!!ft;:!!CtffGCti!iL! ,Ci,!it:ifttL!;;;!:;tt00C800#C##G##8##!#8@#0C#CfC8ff#8t!!8@##@#;,::! +:..:t!.,,:..!!!::::!;;!!!ii;::!!tfi:!fC0f!!!i!iiffLfi!L0ti, :;:,,;::,,,;fttLi:!ii!;:i#08G0##0##@#Lt####80#GC##GG#Gf,:;t8G#C,. . +:...!:. ....,,,:,.,!;;;:;ii!:;:;i!;;!LCGi!fi!;!!!;;;;!ttff: ;0GiittL!;:::::;tffLf!;,t#8CLG#0CCC8#tf#0CCG8#GC0GC88L;..:@i!Li!;::; +....,,::;. .,,,,,,,;;:::!t;::;,::::!i!t!!t!!!t!tt!!;tfLfL0;.t##@@###L!!i!:,;0#Ci!ft:i#GCGG@Cfff0#t##CLCC##LfffL@#C:,:!ft0@#@L0ii +,:,,:!:GL,,:;;;;:;,:::;;;::,;;,;;,,:;;;;;;;ttt;:;!!!CLfiit!::!it!iti!!;;;!!!LCt,,;f;!CLfLCLLLfL@Gt#0LCLC0LLfffL8ft;t;f####L!ff;, + !!,;:;::i!::,,,:::;!!tt!i::!!,,::;:;;;!i;;iii!;;!itti!!;:::.,f;;:;i0i,;iG0L!!;:,:;;fGCLG#LGCLG#!!#GttLCLfLffCGt;,::L0fti;,!ftt: +..,.,f! .:::. ,;!:iLf!!!!ti:!:,,!!fi,;::;::;tLti:::..,iti!!i!,;GtfL@##tC@i!i0LL;,ii:!#0G8@tCGG@#;!#0ffG@tGGCLC8::;,:8!::. .:#C8L +:..,,::,......;t,,:!i!!;:!i,,:,,;:::.,.,,,,,:;!!:,,::::::::::,::i!G8##tGt;:;itti!!;:!LLii!!!ff#C:!#8CG0GiLCCG8t;!;,;;itC:. i80Ct +:,,:,.;i;;,.,..,. .,,,,,,...,,,,::::::,,::::::it;;t0@i!!i!!!t,.,;!tG;!!!ii!!ifGCiiittttii!!:!i;.iGCL!!!;;f!tf;Cf!:,!!it:,.;Lftf +,..;,!;tf,.::. ....,.....,:;!itfLLLCCfffLftt!;::,,;8###@800C;,:t0Gf:;L8LLLLLLLLttG8@@@@8GCi!ii!!iii!;::!;;!!::;!!::,,..,.,;;;;! +,., ,;;;:,:!!;;!ttii;;:,,:!!!ifLLLfCGGLCG@##@#L!: :0!t#t;;;;;;!L888i!#######@@@0fi!iiiiiiiitC8800CCGLLti;,!G;i..tii;:;i;;:i;:;;; +:;:;;:. ;L00G0GtGG;:;:;!!itt!tfi!iiiiiitLfLC0##:.i8!:::,,;!iCGLii:!8CfttttfCCCCftiii!;::;::;!i!!!!!ftt;..:::,,:;!::tLtCLi!:,::; +:!fGC, .;f!;;;:::::!ttfii!!!!!!iii!;;!iti;@##f;::;ifLLfLC08Ct!!tfttttii!!LG08@@@@@80L!;:,..,,,,,::;::,....,,,::;;;;;;;;,,,,;;; + ,;;:... ....,.,.,:!itLLLtii!:,,,,,,,,,,:,:!fi;i,,:iLGCG0Gi!!;!@#@fLGG0GLLtiiiiiiiii!;;;;:,:;!;;;!fi!;,,,,::;::::;f:,:,,. ..,,: + . ,:;!;;;;;;::::::,,,::;;::,,,,:::::::,.,,,;if!::;!itLi!tC00CLi!;!ii!!;;::,,......,:fi;;;tti!::;;::,:;;;iiiiiii!!!iii;:::::. +. :!tttii!tfti!:!! .!i!;!!!iitLfttti;::::;###titiL0##i8####0:...,:,,:;ii!:::,,:;;!!;:;;!;;;:,:;:;;;;!i!;;!!;;;:;;i!!!ttLLi +;:,. .,:;:,,,:::,,,... :::::;:;;ittttiiii!!ifti@##C###G###t!ttti!:.......,,:;;;:;;:!!:,,,:;t;,;:,,,;;i;!;:::,::::,,,,,:;,::;;!i +;;!;.. .,.. ,::,:;;;!tffftiti!i!iiti;f##GG###ti;:::,. .,....,,,. ...,!iii;:,,,::,,,:,..,ifi!i;::;;::;:,:,,.....,..,; +;;;!;:;;::,,. .. ....,,:,::::::::,,,,,,:;!i;::;!;:.,. .,,..:!:,:!;,..,. .,;!!!;;:,:...... .,:::,,,;!!,.::!i;;;;::::;i!! +:,,:::;::,!!:... .... :tf,. ,;;:;:;, ::..,tt!,.:!f:.,.. ...,,,,,,,,,,,,,::,,,,....,:;:...,!!;ttt!!fLfti +. ...,::,,;;:,.,:;:,::, . .::,..,;!!;:,...,:,,!,,;..!@#t,,,,,,,,,,..,;;,,:::;!i;!!:,,,...,,::,:,,,,::,:::::, +...... ,,.,,.,;!!,...,,::, ,. ,!!,.,....,,.,,,,,,,:,,:,:t;.,,,.;###t,:;;;;:::,.,:,,.,,::::::::,.,,..,:!;tt!:::, .:. ., +,;;::,...,. . ... .,. . .;:,GG,,,,::,;:,,,,.,;;;!!::!C;,;::.,;t##:.,;;!;:;:,.,.,,,,,.,:,,.,,,,:. .,,,::;:;i: .:: .;! + ...,.. . ,,..,,, . .,,,::, .....,,.....,,,,,,,iC, .,. ,;!:.,:;:,::,,;,::::,...,,,,,,,,.. . ....,,,..,,,.., + ,..,. . .,, .........,,::,.,..,::,.. ,. ,:.,,. ,:L:. . ., ..;:,...:::;,,;:,:,.:,,!;!;::,,:..,..,...,..,;;;;,  + . .. ..,,,,,,::;:::!;:,..,:::;:,.. , .,:,,...,,:C!. ,....,.,,,.. .:,,;,,;,:;,,,,:;:!;:!::;,,,,,,.,.,,.,.,,;: + .. ,,. . .,::;;;;,,.,,,.,:,.,..,:;;:, ..,.,,.,:!!:;, . .;, .,:::, ...:..;,,;,,!,,;,,;,,:,:;,::,::,... ... + . .. ....... .,:......,;!;, ....,:!i:..: .;...:, ...,,,...,,.,,.,,.,,,::,;;,,:,::,,;::;:;;,,,. . +. .. .. . .. .,,,,:,,,...,..,:;; ,, .,,,::,.,,:, ..,,::,.,, ., .:,,:.,:,.:,:;:,::,:::;;:;;:::,,,...  ...:;,,,..,.,..,. .. ..... .... .... ,., .!!, .;:: .::::,,. ,;, +, .;!!;::,;:;..!... .,:i!!;:,:!!: .... . ... ,:,. ;:;:...,,, .:!!i!!;!;,.. . .,::fGi, +!. ,,,,,,,;:.,. .,:;, ..,,,,.,..,,,:;:,,,. ..., .;; , ,tt,..;:.,,!;:t: ,Gt::,,,..,,..::. . .... .,:,;00!::,  +!: ,:,!;,,::.. , .!:. ,; .. . ,LG!....,,:!:,,,..:,:!!:, .i!, ,:;;,!ii:i: .,:0L:::. .... .,:;;::,... .!LGt!0!.  +,:,.::tL,;!:.,,....,,;.,,,,..;...,,..,::,.,,,..,,,,...,,:f08G,.,:,:;;CCL:,,:;:;,,:,:,:@i.;;.... ..,,,,,,,,,;..;Li:,..  +iLt,.,:::.,;,,,,,,::::..:::.,:;::,,;:.,..:;!;,,::::;:,:!;i!i8i;C,!tiLfi:,: ,!!;!i,. .,,;;:t:,!;,.,.....,::.:,,:,,::::;!;;::::,,. +iCC, ::.:,.:i:;i!::,,.. ,;..::;!:,:::;:::;;:;;!t:,;;,,!:,!,:G0;:,;i:::.,,.:,::;:,. ., .i;;,:;,.:::.:,..,,,:,:,,;!!!ittCLtiift;i +;;;:,;!,:,.:!!;::,,. .,:,,,,,.,,,:!ti!;t:.,,:;;,,,,,,,..:,.:!:,,it!;:i.,,;::;:;;,.,. ..:..,. .............,;,::::;;!!!!;;!i!!f +!!;!,.:,:;::;:,,,.,:,,:;ft!!!!ii!;::!!;;;;:,;,;i;,.;;,,,.,,, :t,:88#0;:,,!#fi;,:,,,. .,. .. . . ,;,.:;,,,,:,:!;:,,:!!;!t +if!!;,,,!Ci;!i;::;:,;;iL;tftCGG@#C!;;!!!!;:;!tti!;:::;!;:;t, .t!:!f0@8@;;.i#0Cfii;ii. ...,,::,:::;:::,,:;:::;f +i!fift::!!;,:ftt!!::,,;:::!!CfiiG@C08G##G8#C##i@#0CCf88LL@0: ,LC!!@###0;;,iLC00@GGC!, .,. ..,...,..,:;;!!,,::::,:;;;;;:if +t!tifLiif:,,,:;;iii!;::::;;!;:,.i#8#0C8#8##0##t####0C8#G0##!..0L:;!LG#G,.,fC@@8LGfi;:. .,,.,;i,:;!!;:;!;,..,::,,.:!!:,:;!fii;!t +t;;i;;:;;i!;,,,::;;ifLffttLt!:,,i#8GCLG@0CCC8#i@#@CLLGGGG0@#: ,!,.tC!LLttttC##L:L#i!t!;:,::::;i;;;::,,,,,....,...,,;:,,,:;!!;!!t +f!!tttffffLftftfti!;iG8@#0fLf!;;!@8CG0C@LfLf0#if#GLCCG#CCG8#: ,i;:itf###G!####t:L@Cff@#CCCCCLLti!;,.,,,. .::. .,,,,,,,,:!i!iifL +CLLLG@######@LCLfttt!!if@C::;fi!;iCLLLCLLfff0#ii#GLCLti!;t@f. :f;f!@###f!tLG0GLf###GC8########0Ct!,,,:,...,,,,,,,:,,,:;;;!t!:!!t +Lti!tC888#@8G!!i;;;!tLfi;:,.:,::;iCLffCGfGLfG#!!#GffLfittii!. ,:::8iit;:;Lff0#@####CiiC@#008Cftit!:::,:,,,,:;!;:;t!::::;;;i;;;!t +f;,:;i!!!!;;:,,!:,!:!8GL;;!:::;;i:i#GC88tLGL0#i:GGftt0L8##@f,.!titt:!0;.,CLLLfG#8Li:..,,,,,,,,.,!!;:,,...,,,,::,:;:::::;!!!!ifit +i;:,,!!,.....,,,:,:::!i;f0ii;ii!:,;GGLii;!ftL#i;t0i!!!iitfCG, :0##0i!ff.,tCfLiii!:,, . ...,,......:,,,,,,::;;!!!!!!!;;!!iL +!:,..,,.. .,,,:,.,,!,,iii!!;!!iiiiiittiiiti!tt!i0ftLCti!i!i!;.,;f###i::..:;;:,,tt!: . . .,,,!,.,::;:,,!fi!iftiittt;;i!L +;,,::;;;;;;;!!!:,.,,;,!8f!;iffLC0GGLfG8@8GLi::!Li!iL0GCfi;:,,,: .:t8#t::;!,. .,:,,,,,,,.... .if!;::,,,,...:;::;;;;;;;;;!!iL +LitfLLLffLfLL00L;,.,::;0@GGGCCLLLLffttfft!!!;t0C::!i!;;::,.,;;;:,.,!@0!CLi;::;;:::!;;!!;;,,,,, .,;C;t;,.,,,,,,,,,:;:::::;;;;iG +@GCCLftttffftttL8i!ii!!itC8@@@8@80Lt;;!!!;;tt!iiit##i:,:!ittG@00;,.,if;;;:,!tLCLti,,,,,,,,,,,,..,,,::!!;:!!tftifftfCCLLffLLCffL@ +8GLtiittttLLftCLL@@8f;:;!iittttfLCLtiLG80f!;;,,G8G@##8ii@##@800t:..,:;;:::::;;;;:,. .:::;;;:,,,:::,:!!ittLCGCGffCGGCCCG08@@0G8# +GfffiffttfC088GGftffttii!;:;!!;!0@80Gfiiti;;:,:;!;;;!!L0#8i;;;;!!!;,ittitti;:,,;;:;::::;!::;,.,,,::,,:,,;!!;!!!;;!!iitfttfC0G08# +f!;;ffi!;!!ititfff880@@8C!;;::,;itttti!;!!;!tfti!;,..,;i!;::!fC@#C:!i!!;;;!ii;!iii!ift!,,.....,..........,,,,,,,:::;!ti!!!itff0# +:,,::;;;;;;!!;L0@##Gfftiiii!:,:::::;;!;;;:;t###80t:::;i::!tC8###f!!:::::,::;:::::::;;:,,.....:,,,,,:::;!!;;;:::::;;!iti!!!!;!tG# +,..,::;!!!;GC;!iiii!;:,,,:::,:;!ii;!tfff!;;###Li!;fCi!;itfLG8@f;;!;;;;:,::!;::::,,;i;;;::::::;!:;:;:;ittttti;;;:;;!ttLLftii!;!iC +!:::::::;:!L!::,,::t!:;:::;,,,,,::,,:::::,:;i!!::;!ti:,:!!!!!!!Gt;:,;i:,,,,!itft;,fftti!;,:;:,:,::,,::;:;;;:;!:::::!!!itti!;;;!L +t!i!!!;;;!!:,,:::!;;;;;;;;;;;:,,..,,,,.... .:!ft.!##t;:;:!!tf8##:.,::;;,,::;;;:,,:::::::::i;:,,,:,,,,.....,,::::,,,:::;::;;;:iL +i!;;!!i!;;::,:::;:;;:,,,:::::;!!;;;ii::,,:,...,::.!###C#G@C@##tt!:,,:,,,;!ii!;:,::,:, ;!i!!;:!!:::,,,,,,,,,:,,;;;,,,;;:,,::::;t +i!!i!;;:::;:::;:,:!!:.,,.,,,,,::;:;!:,:,,:::,,::,;,f###8#####i:..,,,:,.,,,::;ii!tt:,, ,::,,.,,!it!::;,,::::,,,,,,..,,,,,,:,,,,! +;,,,,,..,.........,,.. .........,.,,,::;i;.;###iffC#:,,..,:i;, ,;, .,,,:,,,..,,,,,. .,;:::,;:;;;:::,,,,.,,,,,,,,,,,,,; +.. . .. ...,. ....,,,:::::t!;i!;::!!;,,,,,:;;,,!Lt,..... ....,::;;!:...,,,...,:!tt!!i;::;iitiii!!iiii!!i + . ...,::,,.. .. .....,!ti!fff!Lf!LLC8L0GGGiii!f!C!:;###i:;!;;!!!;;::,.,,,::;;::, ..,,::;;:::!tffffttttittffLL + . .,,. ,:,;LftifCLfi;ifLCLLLCLtitffffGt:!t##i!LLfLCG0Ctti:,,.,,,,,,....,,.. ...,;!;;!!!!!!!!iiitf + .,.. .,. ., . . .fG;,,:::,,.,,:,,,,:,,,:;::!!:..,;;::;;!;!!!;;;;;;;;;;,,. ... .,,;:,,::;:::,,,,,,:! + ,;, ...,,,.... .,.:iii;,,:;;;;::;;;;:::;;;;;:::!;::;;;,,,::!!;;!!;!;;:,::;!;::.............,,...,,,,,.....,,; + ...... ... . .....,.......:####G,,CC00GfGCCGfGtGGLGtGf;G0iCGLGGf:L;tGCLG00GtG!....,,,:::::;;;:::;;::::,,,,,:;,,.....,: + .....,:,.,,:,:,,,..... .,. ,L00#f:ii!!!!;;;;;;:;;!!;;!;i0!::;;;;;:,::;;;!!!;;::. ..;!i;;;!!!!:;!!i!!::::!::,.,,:,:: +...,,,:::,..,,,,,,.,::::::,,::. ..,:::::,,... .,. . ...,:ft,;.. .... . ..... ... .,::::,:,,,,.,,,;,,,,,,,,,:,;:,;: +,::,,..,...,,:,... .,,,:::.,;;,.,,;iff!:....,. ... . ,.;f:..,i. .,::,...,,..,:. .,. ...,.:!;,,:,. .... ..,,.,,,,,;:: +,,,....... ....,...,,,,:,,,. .,;;!;::::::,,:,.,,..,, .. .,;i. . .::.::,:::,..,,::,,:,..,,,,:,;;:::;i!;;!!,,,.,,::,::::,:,,:,:  . . . .. .. ....,,,,:,,.,.,,,,,,:::fG8#@0L!;;:;:,:.,!;. . .,,,,,...,. .,:, .,..:.,, ,,.,,... .,. ..,,  +.. .. . , . .::,,,..,. ..... .,:!;ii::;iC##8L!:,:;::,:;;, ,tii!::i, ..:;!!i!;,. .,,,!;... ... .:,.  + .. .. ..,,... . ......,,:::::::!L@#@Ct!;t:;,:Ci,,,;,,,:t;;;i::,,,,,,,,,..,, .,,:::. , .:,,. .:,.,:; +.,::..... .. ......,.,:,,....:::;::::::;!i::;!L8##f;!::,:;,,f:;ii..:i!i!!!tifi!;;;::,,..,, ,::::,,,,,..... .. ,::;CC: + .;;:.,::.,:. .::.;.,:,,!;:;:;:;:!iiii!i!i::i:::!fCL!;i;:,::;,,L0C!iLtCGLftfiLtffttftGiitCC;:,,. ,:;!;;;;,,,::,,:,,,..,,tLCtf;  + .,. ..,. . .:,:;;:::;!,.,;i;;!;:::::::,:t:,iC:::;;ff,,;;i@8@CtCLff!!tfCLitLff@##@CfL!:, ..,,,,,,.::i,;;:!:,!:ti;!;..  + . .::,..,,,;i,..,:::!:,;!;,:!:;i;,:;i::,;;!i! .tLtfCi!ttt!!!tt!!iLLLfti!!!;;;::::::,,,. ..,,:;;;:::,,,,::,. +. ,. .. .,,,,;,.,,:;;:,,,:,,;i::f!:;:.:!..,ii, ,ti;!f!iti;!!ii;i!;;;::::;;::!L::;:tfitf;,,.. ..... :!!!:, + .,:;:.,,,..,:;;::::;:;:::::!ftt;,::,,,it. ,CCtLt!Lt;:;f!!::;:,:::::!f!:t!;;:,:!!!iii;;.!::;!!:, .,,,: +. ,. .....,...,,::;, .,::.,;!tii!;!:tt:,;!:;LCL:;,.:;ii. ,fLGL;;tL!:;!!::::;::::!i;;;;!;,,,,,,,,::!i,,tii0@80t:...,,..  +,,,,,.,...,:;!;;:,:;:...,,. .!;:...:::::;;!!f::ti::;!;:!:,;Cf, .;!;:,,:i;;:;;::;;!;:;;;!;:!!;;::;::,,;,,;:.;;;:;!ii!;;:!i!ti,.. +,;::::::::::;::,,,,.. ,,, .,,. .,:,:!ft;;,,!!:,,,:,!,,tft, ,,..,,,:it;,,;;iti::;!i!!!!!!ii!!L!:;:,,,:;;,.,::,::;i!;:;!!::! +0@itLCCCLLftt!:,,,,, .,, .,::!;,:;::,,,,;::;it:,,:!ti!. ,,:!i;:!ii!;;!!ii!;;;;!!!!!;;!!!t!:,,,:;,t!::;i:;!!i!!;:;;!ti! +CLG@#######8Cft:,,,.. ..,,.,..:,,,:,:,,,,:,,;,::;!!;fL:.,,CCGt, .;ft!;::tCGt;;:;ifft;:!;!tt!;:!;;!:::,,;!:,t!!i::tft!ifittifGt! +GGt8######Gfi!ti::,,,,,,,::,,,i!,......,:!;,,;:t:,,:;;:,;;;!ii. .iL!::;;;ii!!;;;;;;!!;;;!!ii!!;;:::::;;:;:.:!;::;!i!;;!iii!!!!if +L;::;;;;!;:,,,:i;:,:,...,,,..,:::::::::::::,,,,::,:iffL00Gt;;;. ,i;,,::;!ft,,itti;;;ii!;!i!it!i;,,:;:;;:..:tf;,.!Cfi:;!iii;:;:Lf +!: . . .,,.,,. ,,,;..,..:t!;!!!;;;;,;,:;if!it0##8##Ct!t. ,f;;,,!:if!,,ifi;!itt!;;;;;;;;;:,,,,,,,,,,,::...:;:::::::::::;;! +,:: . ,. ,::;;:::;. ,i:,,,,,,,,;!iCCG0CLLG80GLftiii;..:Gf!!::,,,.,:;::;;!;;;;;;;;::;;;;;:::;;;!;;;;;;;;;!iii!!iiiiitL +iLi . ... .ifLf;f:. ......,:;!!C@8tittfL#####0G08@8@0i::;C8Gi!;!!!!!!it!!!iii!!!!!!ttffftiiitLLfffLLftitiitttfCCCCLLG +,,,. .....,;;, ,:!f;:!.,;;;!iitfC00GL#L!;iCLfG#############@!,:i##CCG0GLCGCfftttffffttttttiiiti!iiiii!!!iii!;;;;;;!!i!!iiL + ,,:::::;;;:;:::;:,,...,,,,::!ttLGLfGLfGLii!fLftGGfLffLCG080GCG8@##; ,!#@CLLLttfffffLG@888CGGLCfi!iiiittttti;;;!;:::;::::::,,,:i +:itii!!;,,,::;;tft!;;:,,,,::;;:;;!i;;;i;!if!;!CLifLCi;,!;!tfLCLC0##; ,i##GCfftiifLGGGCLLGCCGLtLLtfffCLt;!it!itft;::::::;!!!::::! + ,,,,:,,,.,;!:::;;;::::,,..,,........,,,,:;!,,:;:::::..,;!t0##GCLfi;:!@@CG008C0GffCCti!i!!!ii!!!!it!!!;;;!!iiii!;:::,:::;;;;tii! +,,,,::::::;!;:,,,,;:,,,,,.. . .....,;;;:;;!. ,!;,, :L0tiitft!C8f;00i!!!iiiiit!;!!;:::;:::::,,,:,,,,:itfLCfffi!!!:::,,:;:;;!t: +;!!!itiii!;::;;;;;::,,;;::...,,,,,::!LtitL: ,, :tf, ,:0##0:;Gf,;!!fCi;:,:;!;:::::::::::;;:,,,,,:,,,:;!!!!iiiii!!;;:,. .,,,,.,:; +::;::;:;;::,,::::;!;:::;;:::;!!;::;,::;:;::.,::::;;:;itfLf!;@#!,.,!Ci;;:,:!!ii!!!!;;;;;::::::,,:;!;;!!;!!;;!tLffffLLi!;::;;;::;t +;,:,,,,,,:,,,,,,::;::i!;i!itft!:::::::::,,;:;##Cff;,8###@0i:Lt,.:iiti!!!;;;;;!;;;::,:::::::;;,,;:,,:::::::::;;iLLLCCGGfii;;;i!t; +i;:;:;:;:,:,,;;!!!ti;:;i:,:::,,:iii;!ti!;!!;i#####CttL0Ct!:,,.,iiiitiiLLftti!!!;!!;;;::;:::::::::::,::,,,,,,.,,::;;;;!;;::,;:!,  +ii!!!;:!!::,::::::::,,,,,,,,,.,:;ti;::::iLLt;;if###@:,:,..,.,;!!!;!fLtLCLCCftti!tfftti!;;;itii!itttt!:,,,,,,,,:,::,,,:::::.:;,  +;:,,,.,,,,,;i!::,,,,;;!!!tfft!, .,,.. .,:;:::,:;ffi;ti::::,:##8::;!ti!!!!!!!!;;;;;;;;;;::;;iii!!;;;;;;:;!;,::,::,,,,,,:,.... . +:,...,,,,.,,:,,,,,:;;i;it!!i!:,,...,,...,...,,,, :@f;,,:tft::i#i;;;;:!;,..........,.,;;;;,,::::,,,,,,,,,::::,,,,,.,:,,.,,,,: .:: +;:;::;:::,,...,,,,,:,,,,,,......:::,,,,,:::;:::..;#@; .,:::..:;;iti!!8!,...,,,.,:,,,,:,,,::;;;::,,,,,,,::,,,;,.,,.:;:,::;!..!f. +;;:,,,,,,,,,,,:;;;:.,,,..,,,,,,,,,,,,::::;!;!;;::;iLL.,., ,,,,:;!!i!:;80::,,:;:,,::::....,,;;;!!i;::,,,,,:,,,::,,,,,,,,,:;: .!,: +;,..,. ,,,::,;;:;,,,,,,,,;;!!;;;;:::::!:!LCGG0GCfCCGf!f0!itfGfLLfCffi!itLfL!;;;;;;;;;,,,,,.,,,,::!!:,,,,,,,,,,::::,...,,:: . +;,...,,,,,,.,:::,,;::,,,,,:::::,,,:,,,::tCLffLCLfftiifLCLfftfLLCCCtffittifLftfttffLLi!;;:,,,,,,.,:,,,:,,,,.,:;::,::,,,,.,.  +;:,.,:::,,.,::::,:,;,,,..,,,,......,,..,LC;,::::,:L,.,:::,,:,::;;,:::::::::;;;;!;;!;;;:;i::;;:,,:!:,:;;:;::,;!,..,.,...,. ...;  +:,:::,:::,.,::,.,,,,,,,. .......,. .,;itf!:,:;;!;i!!:::,::;;;;;;:,::;;;;;:::;;;;;;;;;!:;i:,:;!;::!i!:::;;;:::,,,,,:. ... .  +:,:;:::i!: .,,,..,:. .. :####8,,LC000CGLGGfCiCGLCfGC!CCLG0LGCfiGfL0LiLfLLiC;:;,,,:::;::,,,,:,,,::,..::,.. , ..  +,,,,;,:,,...,!!,::i...:,,.,.,... .,;8@@#t::;!!!!!;;;:::::;;;;;::;;!!!tii;:::!fi;!tffft!:;,......,.....,,,,,,,.,,.,,.. ...  + ..... .,,:!i,.,;,,,:,,,,,,... .,,:,,,,..,,.,. ..,;i.;!:,,,:,,;tCGGCCt,;;:,,,,.,..,..,,.,:,.. ...  +.,,,,,. ,,.:i:,..:,,.... .. . ,...:i,,,,.. . . .,..,f:..;!!;!i:,,:;!ii!:,,;!i!!:,,:,.,.....,,.... ,  + . . :;:::;,,,.,... . ...,,,.,,,:,:,:,,,.,,,. . .,;;,,. .::::;;;:::::::::,,::::::::::::,::::;::::,,  . .,,,;i!;!:;,:;.,:,:ii!iG88##@0Lt!i!;;;::!iiiiii;:!:,.. . ..,.,, . .:, . . ...,.,,.,.,. .,,,... ,i! . +;,,,...,;:,,,..::,,::i;;;;!L8@##8Lii;;!t;;;f!:::;::,:!::::,,:, .:,,,,,,,,,.,.,.:. .;!!!:,:., ,,... .,;tC:.,:: +:.... ..::!!,,,!:,!:,:,:::itL0##8GLfi;:!.,tti:;:ii;:!!!ifffCi::. ,, .,,::::.,..,,,,:,,,:;,. . :!:,,. .;f0C:,,,.  +:,,:::,,,,,:;i;;:;,!,,;;!!:;;;iLG@##Ci!!;::;!;:,;!ttftttttfi;:it:,;;:!,... .......:t,tt, .. ..,,, .. ....,,;tG0!:...,:, +iiiit;:!::;:;fLLi!;::,!LfCi:!;titfG#Gt;tfii!;;::!L8####GCLfi;,,,,!G0tfffi!;:, .t:,,ti.,,......... .,,...,,;CCC!,. .:::: +ti!;;::;!:!:tCiCffi,!::!Gii,;;LLtftittffi!ifGt!!!tG####Ct!itii.,f!:;LftiLtii!;;:. . . ....,,.;,.,.,:,,,.,,.:;fCif:,.. .:;::, +i;:,::;:,:;:;f!::;:,i;::::::,!;fiCf;;fLLC!!iLt;iLfftti!;:,:;;i!:i,,:;;::;;;:;iii!:::;. . .,:::;:,,,,,:;:,.,:;:,,...  +ii!,,:!:,;!::tf:,,;.;f:;,,:t:!;;;;i;!fttt!::;t;;i;:,.,,:::;;:;t: ,it;::;;;:;itti!;;;:,;iti;;;:. . ... ,:,:::,..,,,,,,,,.  +;:,,,:::::!!,!fi;!:.:L;,::tf;!::;!!i!Li;:;!;;!i;,,.,:::!!:Lf:!t, ,LCt;:tf!;C###@GCLLt:8#8CC@@Gfi,.. .,,::::,,::;,,;,: +:::!;!!;t;::::;itti;;f;::tfi,:::CfGt;fLf:;f!;::::,,,,!i;,:!!:!f, ,i!;;;!i;!f####G0G0L;Cfi!itffCt!::: ..:;::::,... +ii!!;:;;fi,,;!::!LCL:i;,:iL! :i:!Lt:::tC:,:;,,,!t,:;::;:,;!!:;!, .i!::!,,;!;!ttii!it;;C!:,;;;;;;::,,. .,,:::::,. .t0i,if;.., +;:,,,:;;!i:,ii;,i;!;:;t,:tL: :C:.,,.,.:::;!:,,,:;;:i;,;:;!;!!i!. if:,,,,,,::::;!ii!,tt!;;it!!;;;:,,,....,!iiifL00f: ,Lt:,i:,::: +:::::!tt;;:,:!!:!:,;;:t:!!;:.:L:. ..::;;!;::,:;;::;;;,,,:::::!f! ,;;,,,;::;ti!tfftt!;fffiiffLt;;;!i!!;:,:;iiiitfG@; ,:, .....,: +:;!;::;::,,:,,::;!;tt::;:!ii!:i;..:iLC;:;;if:::::ii;,::.,;;:,:f; .!:,::!;!it!itCfL0L,fCCitLCGCiifCCCLCtti::;:::;;:,,:,,,,:,,.;i +::,,,,,:,,;:,::;!;;fL!.;:fGGC,:t.,Gt::;:Lfii:...,:;:,,;;,,,,,:;, ;!;;;;;i!i;!ii!;!i;:tt!itfitttfi!ti!;:;;::,. ,i, ;ftiift:,,,,  +,...,:;t;,,;,!i:,,:;;::;i!ii!::i:!!;,;;!iti:....,..,:;:,,..:;!: ,i!i;!!ttLi:!CL;,,,:t!i;!i;:::;:,... :,,,:Lt;ift;:,,:: +::::::;;:,::::!!:,;ffLC000Li;i!;:;.,!,ii!GC, .::,.,:tt!, .,;;: ,!!!;:::!!;;;!!;;!!!iiittttiiiiittttti!iiiiiiii!;,!,, .,,,,,,,. +;i!;;;;!;,!;,,!Ct:iL###0#@Ct;;0f:,,,,,:::!ii!!tt::!;::,. . .,:::. .iffi!!iiiiiiitffLLCGG0088888@#################;:. .:;:::: +,,;:::,::,,,:,:f!itLG0GCLfttttLfi!;;;!!!!f8@8Cti!!!:,,::::;,;!iLi:,,;C80CCCCCCLfftiittfCCLCLfLLLCCCCCCG80G008###t;;, .,,:,,:, + .,,:;!itffC####@@@G0@@#80@#@0@@8888#Cft!!!!ti!!ii!iitiittfCC;,:!0LffLffttii!!i!!!!!;;::::;;;;!!!tt!!!ifCCfif; ...,. ... +.,,,:;!tifG8@####8############@@@@##@GCLttifLLtiLGC@fL@C0@08LLLffG##: ,iCfCCCftttii!!;:;;!;:::,,,,,,,,,:::;;:iLC0t;, ,..,.. ,, +ifftLGCG00008@880088@####800GGCCGCG8f!tt!:;!iiiLCLLG0LiL@0@08GGCfG#@,.;0Gttftiiiiii!;;;!!;;;ii!;;:::,,:::,,,,::;:,. . . +tftifti!iitiiifftGLCffLCLfLGCLLCCfL0f:::::;fi;:;!i!;;;,,:!itC##@8fi!!i0Gi!tt;;!i!tti!ii!;::;;!itiii!,,;t;:,:,. ,:, . .: .  +;::,,,,..,,,,:::;;;;;!iii!ifiiti!!iLf;;;;!!;,. .,,..:, ;C0ttLtii!t@@t;::;;;!i!!iii!;;:,,.,,,::::::,,:;iitti;;!CL!;;:,,. , .,  +:,.... .,,::::,,,,,,:ifCt!!!!!!!;:;;;!tfLtC: ,tf ,:.;88!08,.C8t!;::,,,;;;;;;ittttiiii;;i!;,,,.,,,,:!!titttGf!fGLf;i!;!,,;., +::,....,;itiii!:::;;;;!!!:;iftii!;;:;iLLftLi. ,,:Gi. ,;iitftti;. i#t..!i!::;;::::;;iLCLCCLftti;i:,:::;!!:::::;!i,,:;;::!ttfi:,,; +;,..,,:::!ti!!i!;!;::;,:::::;;::;;;;:;;;:;tCt,::iLf;.;0@####8t,,,:i: ,!iCt:,:,,,,,,,:;;;!!;;;;;;::,,:,,,::,...:. .;,,;,,::::;L;: +;::::::::,,,,,,,,,,,,::;;;:::,,,:,,:,:,,.,:;;it#####LtL####8f;:!!. .,:;!iCL!;:,,,,,,,,,,:;:::;!!:,,:,,.,,,,..,. ,i;if:t::. t!!f +!iti!::::,,,:::,,,..,,,,:::,::,,,,,..,,..,,:::i########!;;;:,,:;ii:,;:::;iGGt!;;;;!!::;,:,,,:::;::,:,,,,,,,,::. ,tf!C!:i:;,,:,,; +;!:,.,;ii;::;i!;;;;;;!:,;!:,:::;;:,,::::::;!;;;!iit8###!::::;:,:@##LG#!,:;;!;:;:::;;;;:;:,..::;:i;!::;::,;:!!; ,C;iL;!;,:,!:.!t + . .::;!!;,,,,,!ffLi::;!;:!!i!i;::!ii!!!!!::;!ii!;!i;:;!tCLf!:;t####t,;;;;:;::,,,:!:;;;:,,,;,!:;;:;:!::;:;;, ..,!,,!,:..!:,,, +::::::,..::. ,,:::,,,,,,,:::::,,,::,,,:::.!###0,.t!,.,::;;;: ,:f##!:;;!!t!!;;::::;::::!:::,,,;:::,,,:,,;, .... . .i!.; +!itffi;:,.....,,..... . .. ..,,.... .,,,.:iff;!:t#; .,,,,,.,:::;;;;!ii!,;;!:::,,,,,,;:;;:;,:;,;,,;,:,.. ,, ,:. .:t! +!;;;::,,.,;:,::::::,,,.,. ... ...,it!!fi!!!it!@#f;fLCLift!0CfiiCfCCG;:;;;;;;;;:::::;!:,,,:,,,,;,,,... ., .. . .:L. +,.. .....,,,,,::,,,,,,,,,,,,,,:,,::iCfttfLCG00t!!itfCGGLtfLtLfLfffLLCLfffitfffLii!!;:;:,:,::.:..,..,., .. :: ,t:  +,,...,,,,:,,,,::,,::;:::;!!!;;;!;;;!;,.:G0!;;;;;!!;;;..,::::,,,::,,,::,,,;;;;!;!!!!;:::;,,,,:,,;,,:,,:,,... .,,. . .. ,tt;: +,,.,,:;;!;!;;::,,,.,,,,,:::::,,,,,:,:!tffi;:;!!!;!:;f::,::::::::::;::;::::::::;;;;!!;;;:,,,,,,,,,.::;t;,. ,, ,L:., +:,:..,:,::,,,,.,..,.,.::,,.,,,. ... :####8,,LLGGCfGLLCfCiCGLCLGCiGGCG0CG0t!G;!GLiLCGGtG!.,,.,::, ...,,,... .:, .i,  +;,,,,,.,,:,,,.,.:....,.,..... .,.;G@@#i,,:;;;;:::::::::;;:;;::;;;;!!iCGfLL:;;;!ii!!::..........,,,,,:,: .,,.,..: .!:  +:;,:,,..,.,....,.. ..,.,,::,...,.,.,::;;:,.. . .,:,::if:,..:;;;, ..,,,,,,:;:;!!::!!;,,,. ,. .!,  +.!,.... .... .. . .,.:,::,,::;::,,:!!!ii!!,,,, ,!. ..,,,::,,,,,..,::;;ii;iii!;:;:,..,iiit;. ...  +.,, . .,.,..,.,.,,.,.,..:,,,,,,,,,:,,::,:::,,,.. .,:, .:::;;:::,,:,.iftfffftiiiii!;:, , ,,,,,::,,,,!!;;!;   .,,,;!;;:::,;: ,:,;iiitG88##@0Li;;;:;;:;!iiiii!;:;,,.. . . ..,.,, . ,:, . . ...,.,,.,.,. ...,.. :i! . +:,,,. .;,.,,...::,;,;!:;;;iG8###0fii;:it;;!f;:,:;::,;;::::,,:,. .,.,,.,.,,....,.:. .:i!!:,:., .,,.... ..,;tG:.,,: +:........ ,::,,:i,,;,::,:,:itC0##8GLf!;;!.;ff!::;t!:;!;!iftiLt:,. ,, ,,::::.,,..,,,:,,,:;,. . :!:::,.,;L0L:,:,.  +:,,::,,:,,,,:i;;;,,!,:;;!::!:;iLG8##Ct!!!:;!!:,,;itfftttttLi;:;i,,:;:!,... ..... .:i,tt, .. ..,,, .. ....,:;f0G!,...,:, +iiiti:;!::!:;tLfi!:;:;!CtC::;;titfG#Gf!iit;;;;::tG####8GCLLt:,,,,:G0Cfffi!::. .t,,:t!.,.......... .,,, ,:!CCC!,. ,:;;: +ti;;:::i::;;Li!GtL;:;,;iL!!.;;Gtftiitfffi!iLCi!iif@###@Lt!f!!i..ii:!LtitCii!!!!,. . . ....,,,;,,,.,,.,,.,..:;fCit:,.. .:;::, +i;:,:::,,:;;;t;:;:::t:::;:;,:!!iiCt!ffLGGtitf!;tLfffti;::,:::!;:i:,::::;;;::!tii!:::;. . . .,:::::,,,.,:;:,.,;;::,...  +ii;,:;!,,!;;it!:,,;,t;,,,:!i:i:;;!f;!fffGt!;;!;!i;:,.,::::;;,;t: ,!t;,:;:::;itti!;;;:,!it!;;;,. . .. .... ,,,:::,..,,,,,,,,.  +!:,,::::::!::if;;!:,;i,,:;tt:t;;;ii;;fi;!!;!ii!:,,,::::i;!Gi:!f: .tCi:;ft;!8###8GCLC!:@#0LG##GL!,... ..,:::,,,,::;.,:,; +:::!;i;i!:,::;!tfti:;f:;;ff:,i;iLLC::Ct::ti;;::,,,:,:ii;:;i;,;L: .!!!;;i!;iG###@00C8i:Cf!!iffLCi;:;, ,:;::::,... +i!!;;:::f;,,!i::iGLf:f;.;tL:.t!:iL!,,:L!,:;:,,,;t:;;,::,,!i;:;!, .!!:!:,,!;!ittii!if;;f;,:;;;i;;::,,. . .,,::::;:,. ,C0i,ft:.., +;:,,,:;;;t,,ii:,;;!;:t;,;Lf:.!t,,,,...:::!!,,,,;!!;!:,::!i;!ii!, ;f:,,,,,,::::;iti!,ft!:;fi!!;!;:,,,....;itiiLC80f, ,Gi,;!:,::, +:::::ifi::,,:!;:;,:!::!,i!;:.:f:. .,:::it;::,;!!::;if!::::::;itL. ,;;.,,:::;f!!tfttt;;Lft!ttfLi;;!ii!;;:,;!iiittL08: ::, ,....,; +:;!;,:;:,,,:,,::i;;t!,;::!i!::f: ,:tLf:;;;fi:,:,;tiifLi,:;;,,;t!. .!:,,:;:!ii!tfLtCGL,fGLifLCGLitLCCCCLtfi:::;:::;:,,:,,,,:,,.!i +::,,,,,:,:;,:::;f;;ff,.::LGGf,t; ;G;::;:iit!,..,,:;:,:;;,,,:::;, :!;;:;;!!!;ii!;;!i;:ii!ftfittfti!t!!::;;,:, ,!..;ftiifi:,,,,  +,...,:!i:,:;,t!:,;;;;:,;!!ii!:;;,!;:,;;!!i!:.,.,...,::,,,..;;!: .;!!!!!itt;:tGt:,,,,!!!;i!;:::;:,... ,!,.,;Li;ift;,.::: +:::,::;;,,:,::i;::LffLCG0Gf!:!;;;:.;:,t;tGL, ,,,,.,;ti;. ..:;;, .!!!;:::;;::;!!;;!!!!iittttiiittttttti!iiiiiiii!:,i,, .,,,,,,,. +;i;;;;!!::!,.,tL!!t0###8#8Li:!0i,,,,,,;::i!!!iti::!!:,,. .,:::...!ffii!iiiiitifffLCCG008@808@##################:;. ,;;:;;: +,,;:::::,,,,:,;!;itCG0GCLfttitfti!;:;!!!!t0#@0ftii!:,,::,::,;;tff;,,:L08CCCLLCLfftiiitfCLCCLLCLLCCCCCG080G00####i;:, .,,:,,;, +. ...,:;itttfG###@8@0G8@@#08@#00@#808@#8fti!i!it!!itiiit!ittiLG!,,;LCLLLfttii;;;!;;!!!;;;;;;;;;!!!iti!!itLGCfiC: ,.,,...,. +.,,,:;itiLG8@#################@88@@@#8GLftiffCfitGL8Gf80@808LLLtfC8#! ;GCCGLftii!;;;::;!!::::,,,,,,,,,:::;::fLCGi;. ,.,,...,, +itftCCC008888@8@008@@####800GGCGGCC8Giit!::!iiitCCLC8Cff#8800GGCLC##; ,tGftfi!!!i!!!;;;!!;:;ii!;:::,,,::,.,.,::;:, . . +tfttft!!ittiitLffGLCfLCCLfGGCLLGCfC08;,::,:tt;:;;t;i!!:,:!itf@##@Gi!;iLGiifi;;i!!tftiii!;;::;!iiii!;,,it:,,,,..,,, . ,, ,  +;::,,,,,.,,,,::;;!!;;!iii!tfiifi!!iLf!:;;;;;:,. ,:,.:,. ,fGtiLfiii!0#8!::;;;ii!!iti!;;::,,,,::::::,,,:;iitt!;;!Cf!;;::,. ,.,,  +:,.. .,,::::,,,,,,;iLCi!!ii!!!;::;;itLLtCi :G: .,,,L8!t@G.!@fii;;,,,;!;;;;tffttiiii!it!;:,,,,,,:;!iiitffGi!fGLf;t!:!:::., +:::....,!itiii;::::::;!!;:!iftt!;;;;!tLLftCC: :.t0: ,:!!iftii!:.:@8, :ti:::;::::;!tLCLCCLfit!!i,,::;;!;::::;;t;,,:;;::ittfi:,:; +;,..,,:::!ti!!i!;!;:!:,,::::;;::;;;;;;;;;!fGL:;;!ffi.,C0#####G;,,:!;..!iLG;,:,,,,,,,:;;;!;;;:;;;:,,,:,,,::,..,:. .i,,:,,::::!L:: +;::::::::,,,,,,,,,,,,;,;;;,:,,,,:,,:::,.,,:;;tt####@0ttG####G!:!t: .,:;!LG!;:,,,,,,,,,,:::::;!;:,,;,,.:,;,,,:. :i;tt:t::..f;!f +!iti;::::,,,:::,,,..,,,:::,,;:,,,,,..,,,,,,::;i0#######i:;;::,::!i!:;!;;:!L0f!;;;;;!,;:::,,,::::::::::,,,,:,:: ,Lt!G!:i:;,,,,,! +;!:,.,!ii;::!!;;;;;;;!!:;:,,:::!;:,,::::::;!!!!!!iiC###!,;::;;:,t###C##;::;!!;:,::;;;::!,,.,,:::t;i:;;;:,;;i!: :C;fL;i:,:,!, ii + . ,;:;!!;,,,,,ifLL!!!;,,;!!!!i;:;iii!;;;;::;!ii!::i!::!iLCLt;:;L###8;:;;;;:::,::;!:!;!::,,;:!:;;:;:i:;;;;;. ..,!,,!,: ,!,,,, +::::::,.,;:. .,:::,,,,,,,,:::,:::;;:,,:;;:.:####, :L;..,:;;;;. ,!##t:;;;it!!;;::::;:;::!:;:,,,;:;::,:;,,;. ... . .i;,! +!ttft!;:.,,...,,.... . .,,... :C8!:;!tf!,.;#C. .,......,:;;:::!!i:;!!::,,,,:,,;:!;:;,;:,;,:;,;,. ,, ,:... .:f! +!;;:::,..,;:,:;::,:,,,,,. .. ,:!t!,.:tLffLtiiiiLiL##ttf00tfLiL08ft0LCC8t!iiiiii!!;;:;:!!::,,:,,,,;,,,. .. . .:f  +,.. .....,,,,,:,,,:,,,;,,,,.!###@;,i8GLL08888@@08@#@8@##@@@@@##@@@#@#@088008888ffi!::;:,:,;,.:... ..., ... :, ,f:  +:,...,,,,:,,,,::,,,:::::;!!!;:;;:;GLi;::8@i;!!ii!iiiii;;!!!!!!!!!!!!!!!!!!iiiiiiiii!;;:;,,:,:,,;,:,,,,,,... ,,,... .. ,ft;: +,,.,,:;;!;;;;::,:,.,,,,::::::,,,,,,,.. ,:;:,,,,...;,f, .,..,.,.........,,,,,,,,.::!t;,, .:, :L:., +:,:.,,,,:,,,,,.,...,,.::,,..,,. ...... ........ ..,.. ..,:,.,,,!;:::,.....,...,,,,.,::....,,,,.., .;. .i,  +;,,,,.,,,:.,..,,:....,.,.... .,,,.. ..... .....,,,iLfff,:::,:,,:,,..........,,,,,::, .,,.,..: .i,  +::,:,,..,.,....,., ..,.,,:,,.....,,,....,...... ..:;,:tf:,.:;!!!:.....,,,,,,:;:;i!::;;;,,,. ,. . ,!.  +.!.,... . ..... . .,.:,:,,:::;::,,::::;!;!,,,, . ,!. .,,,::,,,:,,,,::!!ti;ii!!;:;:,..,iiit:. ,..  +.,, . ...,...,,.,,...,..:.,,.,,,,,:,,::,:::,,,.. ..:. ,:;::::,,:,,tftfffftiiiii!::. , ,,,,,::,,,:i!;!!;   .,,,;!;;;;:,;:.,:,;iiit088##@8Cf!!!;;;:;!i!iti!::::,.. . . ..:.,, . ,:, . . ...,.,,,,.,. ...,.,. :i! . +:,,,...;,.,,...::,;,;!:;;;tG88##0Ltti;it;!!f;:,:;::,;!::::,:,. .,.,,.,,,,....,.:. .:i!!:,:., . .:,.......,;fG:.,:: +:......., .;:,,:i,:;,::,:,:ttC0##8GCt;;;!,;ff!::;ti:;!;iittCi,:, .;. ,,:::,.,,.,,,,:,,,:;,. :!::,,.,;L8L:,:,.  +:,,::,,::,,;fi;;;,,!,:;;!::!:;iLG8##Ct!!!:;!!;::!itfftttfti!,:t;:;:,::,... .......:t,tt, .. ..,,, .. .,..,:;f0G!,...,,, +iiiti:;!::;;LCLfi!:;:;!CtC::;;titfG#0f!iif;;;;::tG####@GCCC!:,,,tG0;;ftfi!:,. .t,,:t!.,.......... .,,,..,:!GCC!,. ,:;:: +ti;;:,:i:;;;Lt!GtL;:;,;iC!!.;;GtfiitfffLtiiLCiiiiL@###@LtiLtii,;;;!fiiitGti!!!!,. . . ,...,:,;,,,.,,.,,.,..:;fLit:,.. .:;;:, +i;:,:::,,:;:;i!:;;::t:::::;,:!!itCt!CfC8@Ctffi!tLLffti;;:,:;;!;!..::::::;;::!iii!:::;. . ...:::::,,,,,,:;:,.,;;:,,...  +ii;,:;!,,!!:;fi:,,;,t;,,,:!i:i:;;!f!!ffLCft!;i;!i;:,.,::::;;:;: .,i!:,:::::;itti!;;;:,!it!;;;,. . . .... ,:,:::...,,,,,,,,.  +!:,,::::::i::if;;!:,;!,,:;tt;t;;;ii;;fi;:!;;;!!,,..,:::i;!Gi!t: ;Lfi:;ft;!0###0GCfLt:@#0LG##GL!,... ...:::::,,::;.,;,; +:::!;i;i!:,:::!tfti:;f:;;ff;:t;iLLC::Ct::tt!;:;;;::,:i!;:;i;;t; :!;;;;!!;!G###@0GC8L;Cfi!iffLCi;:;, .,:;::::,... +i!!;;::;L;,,!i::tGLf;f;,;fL:.t!:iL!,::L;:;;:,:!C@t!:,::,:;!;;!: ,;:,!;,,!;;itti!!if;;f;,,;;;!;;::,,. ...,::;;:;:,. ,C0i,ff:.., +;:,,::;;;t,,it;:!!i!;t;,;Lf:.!t,,,,.,,::;f!,,,:!ii!!:,::!i;iif: .t!,,,,,,,,:::;!i!!,if!::ti!!;;;:,,,....:ititLG80f, :Gi,;!:,::, +::::;ifi::,,:tf:!;!Li;!:i!;: :f:. .,::;!!;:,,;;;::;iL;,,::::;tL: ,:,..,:,:;f!!tftit;;Lft!ttfLi;;!ii!;;:,;!tiitfLG8: ::, ,...,,; +:;!;::::,,,,,:i;:;:::,t;;ii!::f: ,:tLf:::;fi:,:,;ti;if;,:;;:,!L, .;,,,:;:!ti!ttftCCG:i0L!fLCGLitLCCCCLtfi;;:::::;:,,:,,,,:,,,!i +::,,,,,:,:;,,:::;;:. . ,tGGCt:t; ;G;::;:iit!,..,,:;:,,!f:,,::;: .!;::::;!!!;!ii;;!i;,!i!ftfittft!!ti!::;;,:, .,!..;ftiifi:,,,,  +,...,:!i:,:!,!:,,,,::,,,;!itf;!!,!;:,::!ti!,.,.,,..,::::!,.;!!. :!!!;:;!tt::tCt:,,,,;!!;!!::::;:,... :!,.,;Li;iLt;,.,:: +::::::;;,,:,,:i:,,:itfC8f!:;!i!;!;,;::t;fCt,.:;:,.,;ti;....,!!. ;;;;:,,:::::;!!;;;!!!iititttitttttttti!iiiiiiit!:,i,, .,,,,,,,. +;i;;;;!!::;,.,!i;:!G##8C#0!,::!iCL:,,:!:;;;;tLGCi;!;:,,. .,::,. :ttti!!!!!iitiffLLCCGG08@888@@#################:;. ,;;:;;: +,,;:::::,,.,:,:;:!tLGGLLffi!i;::;;;,,,,...:iL0CLttii,,;;:::,;;fL;,,:t08GCLLLLCLfftiiitfCLCCLLCLLCCCCCG080G08@###i!:, ,,,,,,;, +. ..,,,;!ittLG####880G00##Cti!!t;:::..,:;;;;ttti!ii!!!!tiittLCf;::i0Lfffftti!;;;;;;;!;;;:;;;;;;;!!iti!!itLGCftC: ,.,,..,,. +.,,::;ittLCG8####################GLLLL!;;,. .,,:iG0LCfGC8GG0fCCfL0##: .;GLCCLtii!;::::::!!:::::,,,,,,,::::;::fLCGt;. ,.,,...,, +ifftCCC0088@@808008@@####000GG08f!!!!fLiif!;::,,:;!ifCG@##8088GLLG##,.:fCttti!!!!!!!;;;!!;:;ii!;::::,,::,.,,,::;:, .. . +tLtift!!ittiiiftf0CGffLLffGGCLGf!!!i!;!CGGLLfti,..,:;iitfLti##!L##L;::GG!!ti;;!!!tfftii!;;;:;!itii!!,,!t:,:,,..,,, . ,, ,  +;:,,,,,..,,,,::;;!!;;!iiiitfttLfLfG80:,::;:;;;!, ....,,:;;;!i!;!ft!;it!;::;;;i!!!itt!!;::,,,,:::::::,,:;iitt!;;!CL!;;:,,. ..:,  +:,.. . .,,::,,,,,,,:;iLCi!!!!!ii!iif;,. .,!!: ...::..,....,,:iLi;:!f;::,,,,;;;;;!tffttti!!!iti;:,,,,,,:;!iiiftfGi!fGLf;t!:!:::., +:,:....,!itiii;;::;;;;!!;:;itiii!;!!, ,G8G! .,,:;!Lf!:. ..,:;!!:;:;:::,,:;;::::;!tLCLCCLtit!!i,,::;;!;::::;;t!,,:;;::ittfi:,:! +;,..,,:::iti!ii!;!!!:,,:::::::::;!!ft:,:iLLf!,.Lff8###@f,,,,:;;::::,:,:,,,,:::,,,,,,:;;;!;;::;;;:,,::,,,::,..,:. .i,,:,:::::;L:: +!:::::::,,,,,,:,,,,;,,:!;;:,,,.,:,:;if;C###08i,!@####8t;;t!;!CCtti;:;;;;;!!;;:,,,,,,,,,,:::::;!;:,,;,,.:,;,,,:. :i;tt:t::..f;!f +!iti;,:::,,,:::,,,..,,,:::,,:,,,,,.,:::i#####@@t;!!!!;,,;!!!tiiCf!!tftitCLt;!;;::;!!,;:::,,,::::::::::,,,,:,::. ,Lt!G!:!:;,,,,:! +;!:,.,!ii;::!!;;;;;;;!::;:,,,::;;:,,,::;!tiG###8, ...,.;###CL@#fi!;:;;;:,,::,::;;;::!,,.:,:::t!i:;;;:,!;i!; :C;fL;!:,:,!,.it + . :!;;!!;,,,,:ifLL!;;!,,;;!!!i;:;!!!iii;:;i!!;;;;,.,,,:;@########!,::::;:::,:,::;;:!;!::,,;:!:;;;;:!:;;;!;. ..,!,,!,: ,;:,,, +;;:::;,.,;;. .,:::,:!,,,,,:::,:::;;:,,:;;;,..i:i,.,;;;;;:;!CL###t:,::!tti!;!;;::::;:;::!:;::,,::;::,:;,,;. .... . .i;,i +!ttft!;,.,,..,,...... .;. .. ..,,... ,t###L!::!!:,,,:. ..,::!;;;:::;:;;;:;;!:::,,,:,,;:;;:;,;;,;,:;,;,.. ,, ,:... .:f! +!;;:::,..:;:,:;:,::,,,,,: ...,:!t!,.:iL####@i8L##ttGiiiLGt0#iit80C0CLtLiiiiiiii!!;;:;:!;,:,,:,,,,;,,,. ,. .. . .:f  +,.. .....,,,,,:,,,,,,,,,,,,.!###@;,i##ttttf0@####@@@8@@@@##@8@##8@@@@@888G08888ffti;:;:,:,;,.:... ..., ... :, .,f:  +,....,,,,:,,,,::,,,:::::;!!!;;;!:;0Li;::8@i;,,,:;iii!!!!!!!!!!!!!!!!!!!!!iiiiiiiiii!;;;;,,,,:,,;,:,,,:,,... .,,... .. ,ft;: +,,.,,::;!;!;;::,:,,,,,,::::::,,,,,,,. ,:::,,,,..,t! ...,.,,,,............,,,,,,,,::!t;,,. .:, :L:., +:,:.,,,,::,,,,.,...,,,:::,..,,. ...... ... . . .;:, ..,,...,:,,..:,......,..,,.,,.,,:. ..,,,,.., .;, .i,  +!,,.,..,,:.,..,,:....,.,...... .,,,.. ..,.. . .. .,::,,,,,:,:::::,,:,,..........,,,,,::, .,,,...: .i,  +:,,:,,..,.,....,., .,.,,:,......,,,......... .,!.,,.,:;ti.,;!!!:.....,,,,,,:;:;i!::;!;,,,. .. ,!.  +.;.,... . .. . . . .,,:,::,:::;::,,::::;;;;, .;, ::,.,,,..,,:,,,,::;;ti;ii!!;:!:,..,iiit:. .,..  +.,, . ,..,.,.,,.,,.,.,..:,,.,,,,,,:,,::,::,,. .,,,. :;. ..,,,,:,,tftfffftiiiii!::. , ,:,,,:::,,:i!!!!;   .,,,;!;;;i!,;:.,:,;iiit088##@80Lti!;!i:;ii!!i!!:,,,,.. .. . ..:.,, . ::, . . ...,.,,.,.,. ...,.,. :i! . +:,,,. .;,.,,:..:::;,;!:;!;tG0G##@GCCi!tt;!!f;:,;;::,;!::::::. . ,:,,,.,,,,....,.:. .:i!!:,:., . .:,.......,;fC:.,:: +:.... ... ,:,,,:i,:;,:::;:;ttGG###0CL!!;!,;ff!::;t!:;!!iifGL:::. :!, ,,:::,.,,.,,,,,,,,:;,. ;!:::..,;L8L:,:,.  +:,,::,,::,,,;i;;;,,!,:;;!;:!;;iLG0##Ct!!!:;!!;:,;itfffttffi;,fi;;!,:f:..,. .......;t,tt, .. ..,,, .. .,..,:;f0G!,...,,, +iiiti:;!::!:!fLf!!:;:;!CtC::;;titfC@Gt!i!t;;;;::tG@###@GGGL;:,:!G0t!tftti!::,. .t,,:t!.,.......... .,,,..,:!GCC!,. ,:;:: +ti;;:,:i:;;;Ci!Gtf;:;,;iC!!.;;GtftiiifLCfiiLCiiiiL@###@LtiLff:,i;!Ltii!tCii!!!;,. . . ....,,,;,,,.,,,,..,..:;fLit:,.. .:;;:, +i;:,:::,,:;:;t!:;:::t:::::;,:!!itCf!ffC8#CffLi!fLfffti;:,,:;;ii..,:::,,:;;::;iii!:;::. . . .:::::,,,,,,:;:,.,;;:,,...  +ii;,:;!,,!!:;fi:,,;,t;,,,:;i:i:;;!f!!ffLCfti;i;!t;:,.,,:::;;:!, ,!;;:,,::::;itii!;;;;:!it!;!;,. . . .... ,:,:::...,,,,,,,,.  +!:,,::::::i::tC!;!:,;i,,:;tt:t;;!ii;!Li:;!!!!!!,,,,::::i;!Gii!. ,Cfti,;tt;;8###0GGfLC;8#0LG@#GL!.... ...:::::,,::;.,;,; +:::!;i;i!:,::;Ltfti:;f:;;ff;,t;iLLC:;Gi::ti!;:;!;:;,:ii;:;i;;t, ,i!;;:;!!;!G###@00L0G;ff!!iffLCi;:;, .,;;::::,... +i!!;;::;L!,,!i:;iGLf:f;,;fL:.t!:iL!,:;f;::;:,:;f0;:;,::,,;!:::. ,!;:,!:.,!;;itti!!!t;:f;,,;;;i;;::,,. ..,:;!;;;;:,. ,C0i,ft:.., +;:,,::;;;t,,ii:,!;!;:t;,:LL:.!t,,,,.,,,::!!,,,:;!!;!:,:;!i!it;. .ii;,,,.,,,,,:,:!i!;.:Li::ti!;;;;:,,,...,;tfttCC80f, :Gi:;!:,::, +::::;ifi::,,:!;:!::;::!,i!;:.:f:. .,:::!i;:::!!!;::!Li::;:;!iCi ,;:,..,:,:;t;;tftii;:LLt!ttffi;;!ii!;;:,;!ttitfL08: ::, ,...,,; +:;!;::::,,,:,,::!i;t!,;::!ii::f: ,:tLf::,:iti!!;;!!!tf:,....:!; .:,,.,:;:!ii;ttftLL0;:0L!fLCGL!tLCCCCLtfi:;:::::;:,,:,,,,::,,!i +::,,,,,,,:;,::;;!!!ff,.::LGGf,t: ;G;::;:;::;:;:,::::,,,::..,,, :,::::::!;;;!ii;;;i!,:i!ftfittft!!ti!::;;,:, ,i..;ftiifi:,.,,  +,...::!i:,:;,i;,,,:;;:,;!!ii!::;,!;:,;;!::::,:;,,,,:;:,;L!:if; ,,::;::;!it:,iCt:,,,.,!!;!!::::;:,... :i:.,;Li;iLt;,.,:: +::::::;;,,:,,:!!;:!LfLC00Gf;:!;;;:.;;,f!i:,,::!!;:!tLt!,,::;f; ,f;:,,,,,::,,;!;;;;;!!iiiittiitttttttti!iiiiiitti:,i,, .,,,,,,,. +;i;;;;!!,:!,.,ifL!iG###8#8Li:!0t,,,,,,:!;!!ittfLti!!::,. ..,::,.,iii;;;;!!!!!itifffLCCGG088888@##################:;. ,;;:;;: +,,;:::,:,,,,:,:!;ttCGGCCLftiitLft!;:;!tCG08@#@@@#@0i;;;;::;,!iL!,,;!;ifCGG0GCCLtfiiiitfCLLCLLCLLCGCCCG080G00@###i!:, ,,,,,,;, +. ..,,:;!ittfG###@880G88#####8ttfLCGGC0@LfLLt!i@0ti;;!ittftfLi;::;!ittfGCtii!;;;!;;;;;;;:;:;;;;;!!iti!!itLGCftC: ,.,,..,,. +.,,::;ittLG8@###################fifCfti!!!GGttG@0iifttttGG8#@#@88#8:.,!!:,:;;;fi!;::::::;!::::,,,,,,,,::::;::fLCGt;. ,.,,,,.,, +ifftCCC008888@8@008@@####0000Gt!;:;tGLtii!i00C0##8GLfC0#####8@##CLCi;:,,,:;!!!!!!!;;;;;!!;:;ii!;;:::,,:::.,,,::;:, .. . +tLtift!!ittittLffGCCfLCLLfGGGfffi!;:!G8GLLi!fLiti!!LLG##fii!!!!!;:::,,,,:tC0Cii!!itttii!;;!:;!itit!!,,!t:,,,,..,:, . ,, ,  +;::,,,,..,,,,::;;!!;!iiii!tLtL8@8t, ,:!!!;;::,,...,,:;!;,,. ..,:;::;!i!!iii!;!iii!;;:,,,:::::::::,,:;iitt!;;!CL;;;:,,. ..:,  +:,.... .,,::,:,,,,,,;fCCi!!iitLf;,. ,:!!, ......::;;:,:,.. ,:::;ii;;;:::,::::;!tLfttti!!!ifi;:,,,,,,:;!iiiftfGi!fGLf;t!:!:::., +:,:....,!itiii;:::;;:!i!;:;iftC: .i080: ..:;iL00Ci;;,,::::!fCt!!;;::::::::::::;!tLLLGCftit!it:,::;;!;::::;;t!,,:;;::ittfi:,:! +;,.,,,:::itiiii!;;;:,:::::::;;!t::!ttfLt:,!ttf@###0t!;::tfLttt!i!;;:,,,,,,,:;,,,,,,,:;;;!;:::;;;:,,,:,,,;:,..,:. .i,,:,:::::!L:: +!;::::::,,,,,,,,,,,,,,i;;;::,,:!iG###@00::0######Ci!it:;LLi!i!;!!;::::;;;!;;;:,,,,,,,,,,:::::;!;:.,;,,.:,;,,,:. :t;tt:t::..f;!f +!iti;,,::,,,:::,,,...,;:::,,:,,::i#######i:!ittii!;tL;,:::!C!;ii;::!tt!tCLi:;;:::;;!:;:::,,,::::::::::,,,,:,:: ,Lt!G!:!:;,,,,:! +;;:,.,!i!;::!!;!!;!;!!::;:,,:::!;;;!f####; ,!tt;:;ttiifL#f!;;,:;;;:;;;:,,::,::;;;::!:,,:,:::i;t:;;;:,;;i!; :C;fL;!:,:,!,.it +.. :i!;!!;,,,,:iffCt:!!,,;!!iii;;!!itt;:.....,,;;:,:8###G####8;:;;;,::::::::,:,,,;;:!;!::,,;:i;!;;!:!:;;;!;. ..,!,,!,: .;:,,, +;!:::;:,,;;. .,::::,,,,,,,:::,:::;!;:..,,:;!:,;;;;::;!0##8##G;,,,,,::!tti!;!;;::::;:;::!:;:::,,:!::,:;,,;. .... . .i;,i +!ttft!;,.,,,..,,...,. .. .,,.....::!tL@!,,!::,,,. .:!;i!!::,:,,::;:;;;:;!!:;:,,,:,,;;;;:;,::,;::;,;,.. ,, ,:... .:f! +!;;:::,..:;:,:;:,:::,,,,. .. ,:!t!;@####Lit8#0ifGtiCifCGt!fCtLt0Cf0CLtLiiiiiiii!!;;:;;!;,:,,:,,,,;,,,. ,. .. . .:f  +,.. .....,,,,,:,,,,,,,,,,,,.;###@;i8####@@@##@@@@@@@@@#@8@@@88@@08@@@@088008888ffti;:;:,:,;,.:... ..., ... :, .,f:  +,....,,,,:,,,,::,,::::::!i!!;;;;:;GLi;:,tt!iii!;!ii!!!i!!!!!!!!!!!!!!!!!iiiiiiiiiii!;;;;,,,,:,,;,:,,,:,,... .,,... .. ,ft;: +,,.,,::;!;!;;::,:,,,,,,,:!:::,,,,,,,.......,,:..:t. .... ..,,,,,..,,,,.,.........,,,,,,,,,::!t;:,. .:, :L:., +:,:.,,,,:,,,,,.,...,,,::,,,.,,. ...... .. ....:fi. .::::..;,;!i:;;:;:... ..,..,,.,,.,,:....,,,,.., .;, .i,  +!,,.,..,,:.,..,,:....,,,.... .,,,.. .....,,,. .,,...,;;t;,;;;,:;,,,:,,:,,.........,,,,,,::, .,,,...: .i,  +::,:,,..,.,....,., .,.,,:,......,,,.....,..... . .. ..,,:t:..,;;!,,!!!:.....,,,,,,:;:!i!::;!;,,,. .. ,!.  +.!.,... . .. . ... .,.:,::,:::;::,,::::;!;!,,,,... , ...,!!:. .,;:,,:,,,:::;!ti;ii!!;:!:,..,iiit:. .,..  +.,, . ,..,.,.,,.,,.,.,..:,,.,,,,,,:,,::,:::,,.... .,.. .,.:, ::,,. ,:;:,,tftfffftiiiii!::. , ,:,,,::,,,:i!!!!;   .,,,;!;;;::,!:.,:,;iiitG88##@80Lti!!!!;;!i!!i!!:.,.,. . . ..:.,, . ::, . . ...,.,,.,.,. ...,... :i! . +:,,,...;,.,,...:::;,;!:;!;tG0G##@GCCt!tL!!!L!::;;:,,;!:::,,::, ,:,,,.,,,,....,.:. .:i!!:,:., . .,,,......,;fG:.,:: +:......., ,::,,:i,:;,:::;:;ftGG###0GLi!ti,;ft!::;t!;!i!ittiLL::, .:. ,,:::,.,,..,,,:,,,:;,. ..:!:::,.,;L8L:,:,.  +:,,::,,:,,,,;i;;;,,!,:;;!;:!;;iL00##Ct!;!:;!!;:,;itfffttttt!:,i;,:;:!,,.,. .......;i,tt, .. ..,,, .. .,..,:;f0G!,...,:, +iiiti:;!::!:!fLf!!:;:;!CtC::;;titfG@Gt!i!t;;;;::iG####@0CLL!,..,:C0C!ttt!!::, .t,,:fi.,.......... .,,,..,:!GCC!,. ,:;;: +ti;;:::i:;;;LfiCff;:;,;iC!!.;;GtfiiitfLCLi!fLiiiif@###@Lt!fii,.,f;;tii!tCi!;!;;,. . . ,,..,:,;,,,.,,.,,.,..:;fCit:,.. .:;;:, +i;:,:::,,:;:;ti:!;::t:::::;,:!!itGf!fCC8#Lftf!!fLfffti;:,,,;:!:i,,,,,,,::;::;!i!!::::. . . ,::::::,,.,,:;:,.,;!:,,...  +ii;,:;!,,!!:;ti:,,;,t;,,,,;i:i:;;!f!!CLfCLfL!!;!i;:,.,,:::;;:;: .,!;,,,::::;itii!;:;;:;ii!;!;,. . .... ,:,:::...,,,,,,,,.  +!:,,::::::i:,if;;;:.;!,,:;tt;t;;!ii;!fi:;iiLffi:,.,,:::i;!Gi!t, ;Lfi,;tt;!8###0GCffG;G#0LG##GL!... ...:::,,,,::;.,;,; +:::!;i;!!:,:::!ifti:;f:;;ff;,t;iLLC::Ct::ii;i!;;;;:,:ii;,;i;;f: :;;;:;!!;!G###@00LGG;!t!!iffLCi;::, ,:;::::,... +i!!;;:::f!,,!!::iGLf:f;,;tL:.t!:iL!,::f;,:::,,:i@fi;,::,,;!:;!, :::,;:.,!;;itti!!!i;:t;,,;;;!;;:,,,. ..,:;;;;;;:,. ,C0i:ft:.., +;:,:,:;;;t,,ii:,!;!::t;,;Lf:.!t,,,,.,::::!!,,,:;ii!!:,:;!i;iit: :t;,,,.,,,,,:,:!i;;,:Ci::t!!;;;;:,,,...,!fLftCG80f, :Gi:;i:,::, +::::;ifi;:,,:!;:;,,;::!,i!;: :f:. .,:t!;i;:::!!!;:;tGL;:;:;;!Lf. .::,..,:,:;t;;ift!i;:fCt!tttfi;;!ii!;;::;itfttfLG8: ::, ,,..,,; +:;!;,:::,,,:,,:;i!!ti,;::!i!::L: ,:tLf;:,,!t!;!!!iiiG@f:..,:;i!. :,..,:;:!ii;fttiLLG;:8C!fLCGL!tLCCLCCtfi;;;;:::;:,,:,,,::,,.!i +::,,,,,:,:;,,:::L!!ff:.::LGGf:t; ;G;::;:;::;::,,::;::;:::,,.,. ,::,::::!;;:!ii;;;!!,:tifffittft!!t!!::;;,:, .:i..;ftiifi:,,,,  +,...,:!!:,:;:i;:,::;;:,;!!ii!:;;,!!:,;;;::,,::::;:::;:,;Gf;ii: .,,::::;!it:,iCt:,,,.,!i;!!::::;:,... :i:.,;Li;iLt;,.:,: +::::::;;,,::,:i;::!LfLC0GGf;:!;;;:,!;:L:,,::;iiLf!!fLt!,:fi:ti. .t!:,,..,,,,,:!;:;;;;!iiiittiitttttttti!iiiiiitti:,i,, .,,,,,,,. +;i;;;;!!,,!,.,tLi;i0###8#8Li:!0i,,,,,:!;;iitfLLi!:::::,..,,,:::..;t!i!:;;!!!!!tifffLCCGG008888@##################:;. ,;;::;: +,,;:::::,,,,:,;!;itCG0GCLfttifCfi;:;iffC08@#@##@L!::::;;::;,!iLt:,:!t!tLGGGGCCfttiiiitfLLLLLLCLLCCCCCG080G00@###i!:, .,::,:;, +. ..,,:;!ittLG###@880G8@####GfifLCGGC0@Lffit80tttii;;!itttffCf;,,:;!itfLCft!!;:;;;;;;;:::;;;;;;;!!iti!!itLGCftC: ,.,,..,,. +.,,::;ittLG8@##################ftfftftfti80tf8ff#Gt!!!itGG0#@@808#@:.,:!!;:;;;;t!;::::::;;:::::,,,,,,,::::;;:fLCGt;. ,..,...,, +itffCCC008088@8@008@#####8008f!;;fLCtiii!iG0C0#@LfitttL0####88##8G0ii!;:,,::;;!!!;;;;;;!!;;;ii!;::::,,::,.,.,:;;:, ... . +tfttft!!ittittLffGLCfLCCLf0Ci!ii!!!iCGCCLi!iCLii;:tCGC##fii!!!!!!;:;::,,,:!fLLLi!iiitii!;;!:;!ititi!,,!t:,:,,..,:, . ,: ,  +;::,,,...,,,,::;;!;;;!iiiifLtL08L,.,;tGCti!::::..,:;!!i;,,.. .,,:;::,:i!!!iti!!!ii!;;:,,,:::::::::,,:;iitt!;;!CL!;;::,. ,.:,  +:,.. .,,::,:,,,,,,;iLCi!!iif8G;. .,:,,,,,..,;:,:;:,,,.. .,:::!it!;;:::,:::::;tffftti!!;ift!:,,.,,,:;!iiifff0i!fGLf;t!:!:::., +:,:,...,!ttiii;;:::;:;!!;:;itLt,.. ,t, .,.;,:;iCGCt!!,:::::iLff!!;;;;:,::::::::;!tLLLGCft!t!it:,::;;!;::::;;t!,,:;;::ittfi:,:! +;,.,,,:::iti!ii!;!;::,,::,::;;;. .,;i;!.,;iitL###8C!;::tffttt!i!;;;,,:,,,,:;,,,.,,,:;;;!;:::;;;:,,,:,,,;:,..,:. .i,,:,:::::!L:: +!;::::::,,,,,,,,,,,,,,:!;;::,,:!:i@0ffLi ,8#######f!!f::tt!ii!;!!;::::;;;!!;;:,,,,,,,,,,:::::;!;:..:,,.::;,,,:. :i;tt:t::..t;!f +!iti;,::,,,,:::,,,..,,:;::,,:::,;######ti!i@###Gfi!!C;,::;f;::i!:,:!tt!iCLi:;;:::;;!,;:::,,,::::,:::,,,,,,:::: ,Lt!G!:!:;,,,,:! +;;:,,,!ii;:;i!;;!!!;;!:;;:,,:::;;!ttC####f,,;;;:,;ii:;!iitCLt!:;,,:;;;:;;;,,,,:,,,;;;::!:,,:,:::i;t:;:::,!;i!: :C;fL;!:,:,!,.it +.. .;ti!!!;:::,:tfLLi;!!,,;!!i!i:::;tG8L:,, ...,::,:0###L##C@i,:;;:,::::::::,:,,,;;:!;!::,,;:i;!;;!:!:;;;;;. ..,!,,!,:.,;:,,, +;!;:;;:,,;;, .,:;:,,,,,,,,::::;;;:.....:;;::..,.,!:;!!i##C##!,,,,,,;;!tti!;!;;::::;:;::!:;:::,::!::::;,,;. .... . .i;,! +!tfLt!;,.,,,.,,,..,,.. .:.. .,,.,. ;t8L,.. ... .;;ii;,,:,,:::;:;;;:;;!:::,,,:,,;;!;:;,::,;:;;,;,.. ,, ,:... .:f! +!;;;::,..:;:,:::,,:::,;,,. .. ,:!tiifL0CLftttti!iCftCitL0GiiftLt0CL0CCfLi!iiiiii!!;;:;;!!::,,:,,,,;,,,. ,. .. . .:f  +,.. .,...,,,,,:,:,,,:,,,,,,.!#########@@######@@@@@@8@##@88@88@8888@@@088008888ftii;:;:,:,;,.:... ..., ... ;, .,f:  +:,...,,,,:,,,,,:,,,:::::;!!;;;;!:;GLi!iiGf!ii!iiiii!!!ii!!!!!!!!!!!!!!!!!!iiiiiiiii!;;;;,,:,;,,!,:,,,:,,... .,,... .. ,ft;: +,,.,,;;;!;;;;::,,.,,,,,:::::::,,,,,,........,:..:t. ... .,. .........,.........,,,,,,:,,;:!t;,, .:, :L:., +:,:.,,:,:,,,,,.,...,,,:::,..,,. .......,,, ...:ft, ,,,,..:;:.,..,.,:, ....,...,.,,.,,:....,,,,.., .;, .i,  +;,,,,.,:,:.,..,,:....,.,.... .,,,...... . .,,,. .:,..:!,,;,,:,:i. ,:,:,,,,,.... .....,,,,,:,, .,,....: .i,  +:,,:,,..,.,....,., .,.,,;,......,,....,,..... .,,!, .;;;;::. ,;!!!:.....,,,,,,:;:!i!::;;;,,,. .. ,!.  +.!.,... . .. .. . .,,:,::,,:::,,,,::,:;!;!,,,,., ..,!:. .,!ft,.,,,,:,,,,::;!ti;ii!!;:!:,..,iiit:. .,..  +.,. . ,..,.,.,,.,,.,.,..:.,,,,,,!!:,,::,:::,:,,,,, ,,:.:,,,. .,;:,,,,:,,tftfffftiiiii!::, , ,,,,,::,,,:i!!!!;  !;:,::,,i;.,,,!i!!;,;;tG0@##88GLfftitt!;;;;!!::...,, . . ,,.: . ::. . ,..,., ,.,...... .!i. . , +::.,:,..,f;:!:;::!!,!;;!f8GG##@GLL!;!L!::!!;:,:;:,:;:::,,..,,,. ,.,,,...,,...,..:. .:i;!:,, . , . .,,..... .,!Ci..:t,  +:,...:,,:;i,;:,::,:,:t;;!!tLG###0Ct:;fLi;:;i;::!;!!!itift!:;Ct,. , .,::::,.,...,,,,,,,::. . . ,!;::,,.,!G0;,,,...  +;::,,,ii;;;,:;,;;;!!:i;;;!;!iL08##Ci!!;;::;itfffffttft!!;;:;;:;: .:;:,. ...,....:t,tt, . ..,,, , .,...,:!G8f:, .,,... +i;:!:;ttCf!i:;:;;CfG;,;;LiL!tfifG@Ct!;::;;iL#####80CLt;::;;;:. ,,;C0f:,:,,. .t:,:t!........... .,,, ,:tGCC;, ,:;;:;, +!!:;:;C!;Lif::;,:!L!i.;!CLfCitLti;!tGGtiiiitG8##8fi!;i,,,,,;i, ,L!:!L;:;;;:.... . ....:,,;,,,.:,.,..,..:;LLt!,,. .::::;;, +!,::;:;i;,::::f:::::;::!!tiLL!!ftt;!G##GftfLft!!:,,.,:,.,,,,,:,:!:,::,,::,:,,;;,..,.,. . ..,:::::,,,..,:::. .;:,,...  +!,,!!:!Li:,,!,ii,:,,;f:i;:;;i!!ftt:;!L8G@Gi;:,,,,::::i:,,!!::!;. ,it,:!iiii!!!;!!;:0tLffi!;,. .... ,:,::,.. .,:,,,,,,,,, +;:::i::!f!!!:,;f:,:;tt:!::;iit!fi;:;ii;it0Li!!!;:;t:LL;;:,:!!ti. :G!:t####080LCL8f;0C8#8##0fi;. ...,::,. :::;.:::fi! +!f!:,:::;!ffi;;L;;;ff!.:;:LfGf;iLt;:Li;,:!GG@#00Ci;;ii:,:,,,,:;. :t!:i@###CLttttt!,!iittfi!;;:.., ...,.. .,;::;;:..,::. +!;f!,,!i::!CCL:t!,:iL! :f;:tt:::!f;::;:,:;!fG@##Gi:iti:::::,.,, ,::;:;!i!;::::;f:.,:!;i;::,,,... .:;iitfG0Ci;;, .t0t;fC!:,,,:; +i;;i,,ii;,;;!t;;t,:tL;.:C:.,,.,,,::;t!,,:!fi:;!;:::::!iii;L;,:. .;,.,,:::;i!:,;i::;!iii!;:::::,...:fLftLC0@@##G, ,Li::;:,,::,:: +ti::,,:!!:;:,!t:i:;!;:,,t;....,;!!!;;;:;iii,. ...,::::;!;!i,., :;,:!i;itti!;!t!:t!ffCL!;!tft!!;:;!tLf!!!ifLff, ,:, .....,;f;i +;:,,,,,,::;!;tt;:!,;!ii:;t,.:iCCt;::!f!;;:,..,!:::;fG;,,:::;,., ::,;!:;tti!ftff0;:LffLCtiLLCLLL!ti:;;;:::,..,,,,;:::::,,::ff:i +::,:;:,::;!!;tft,!:!CCG;:C:.LG;:;itii;:,,,::,:;:::;iC#L!:,,.,,:,.,::;;::;!!:::;;!;,:CL!!itf!;!;;:,::,:;. :f, ,!fftiLf:,,,:::,  +;i:,,;:!i:,,::!::;!!ii!;:i;:!;:,;!!;;:,,,;;:,,,:,:;!iG##0t:. :!iL:,,i!,,if;,,:,,.,,;!!:::;;:,,,, . .!:, .,i;ti:;i!,,.,::;;: +::,,:::,;!:,:ftfLGGGGf;!!;;;,.!,:f:!!!!!;:,,.,:::,,,:!C##8!,..:iLf::::::;!;;!!!!iitttffffffLCCG8CffCLffffffttff:!,. .,,,,,::,, +;!:,!;,.;Lt:!f###8@#Gf!:f0!,,,,,,:,,;!itttiiifCLtL!:,.:;!;:,::,:;!LttffffLtLLCCGCG000000008@#@###############G;;, ,:;::;;::, +:::,,,:,:i;!ifC0GCLfttttfLti!;;!!;;;ifCG08888#Gii08L;::;;,,!fLi::;;iLCGGGffti!iiitfttttfftfLfffLLG0GCCCG00G08;:i. .,,,,,;,,,, +....,:;!ittL8###8880G8@@#88##@@#@LtfCLfftttf8LtitffftitiiiittitLi;::;!iiiii!;:;;:::::::::::::::;;;!;;;;!ittt;;!:: ...,. ..,,,, +;!!tLG0@###@#############@@8@#@LtiitfLfi;;;;tGfG#8G80CGCG88GGGLC8C!;::::;iff!;:::,:!i;::;::,,,,,,,,::;::ftitLt!t. ..,,. ,;:;: +LG00888@#8@00@@#####800GCCCCCCfftifLitG0LffiiL0CG0f8@CLCG8GfC@808@C:::::::!i!;;i!;;!;;;itti;;;::,;!:,,.,,,,;Li,.. ...::. +fiitttittCffGCCLLCCLfCGCLLCCLC8##8;:!itC8CLffii;:::!fCG#8!::;!iiii!:;;,,,,,:ti!!iii;;!!:::!!ii!,,!i!::::,,.,,,::,. ,. , .;. :i  +!,,,,,,::;;;!!;;!iii!iffitt!!iC8f;, .,:;:::,..,,,.,;!i;:.,..,...,,::::::;!!itiii!!;;;;;;:;::,,,:;iittt!;!i;;GCt!::::::,,!,.;;  +:...,,,,,,,,,,,:ifCf!!!iii!!:;!:. .,:!i;. ...,,:ti,,:,,,,.. .,::;;;!!itii!ifLCCCCCftifLft!:,..,,!!!!!itiCG0L;;!itiiCfti:;,,fGi +;,.:!i!ii;::::::;tii;;!tfti!;;i, .,f088L, .:,:i:;itGCt!i:,,:;;;itii;:::;;;;::;!!iiifti;;!;!!:,,,:,::;:::::;!t: .,::::;;;!;;;!it, +;:::;ttiiii!!!!:,,::;::;;;:::!ii:!f!iti!;i,:!itfC###8L!!;iifCLfi;:;;,,,:;:,,,,..,,,:::,,,,,:;,.::..;;!,,.,,:. .i:t;,;,,.,LGtG;, +!:::,::::::,,,,,,,,;!;,:,,,,:::ttt!tC@CfLt.,G#######L!!t;ifiii;;::;!;ii!!!:,,,,,,,::;;;;::::...,,,,,::,,,,,: .;;!C;:i::.,!;tC!. +!,,,,..,,,,,,,...,,,::,,::,,,,,,:,:######LitiC###Cfi!!C!,,:!t,,;ii!!fLi::::;:;;i::::;,,::::::;::,:,,,::::;!: ,C;!L;;:,:,!,.iL:! +,:;;;:::!!;;;;;;;;:,::,,,,:;;:,,,,;!ttf####@,,:;;:,!i!:;ittCfft!!;::;:,..,:,,,::;!:!::,,::;:tit;;;;;,!;i;!i, :;:L;:i,:.,i,.i!i; +,!fft!;;:;:::ifLLt;;!:,::;!!ii::;!!;,,:ittt;:::...,:::,:8##@C#8#@:,:,:;;:;::::::!:;;;;:;,::;!;:;!;;,,;;;:;; ....... .,;,:LC  +:;;::ii:.....,:;;:,:,,::,,,,,:::,:;,.,;. ;i;!.,;:;;;::;;t@L##f,,,:;ttii!!:;:;::::::!;:;,:,,,;!:::,:,:,:. .. . ::i8:  +!;:.,,,,...,,..,,. . .,. .,,.. ,:!!t;,,::;;,,.,::,. .;!!i::,::;;;!;;::;,:::,,:,:;;!:::,;,,,,;:::,,. ,,.,. ., . .:G:.  +;;::..::.,:;;;:;;;,,:,.. . ;#####!:!fLf#f;!tLL;iif88i;;t!LLiffLtf;;;;;;!!!;!;i;,:,,,.,..:,,..,. .... , .,i:.  +,... .....,,,,:::,,,,,,,,,,,,,,,,,,.!#####!:!ftC##CifLCffttt00ftfiiftLCCLLffLLfLLLLii;;::::;:,:..,,,. ., ,:,,. , ,if::,  +,....,,,,,,,,,,,:::::;!!!;;;!;;!!;;:,,:;tt;,,!,,:;!;:;::;:,,,:;::,,,,::::;;;;!i!;;!;::,,:;,,;:::,:!;,. .. .,. ,L:iLf: +,,:::;;;:;::::,,,,,,,:::::,::,,::,,.,;tti;:,;!;;;;;!;::::::::;;:::;;;!;;;:::;:;;;;;!;;::,,,,,,.,,:!:,... .;, !:,.::: +::,:,:,,,,,.,,...,.,::,.:,,........ :####G,,LLGG0000CCfCiCGLCfGGiGLfG0CGGf;CiiLftGCCGfG!...,:....,,,,,,: .. ...;. .!: i +,,.,,,,....,.,..,...,..... .,,,.:G@8#t,,:;;!!!;;;:::::;;:;;:;:;;!!;;i!!;::;;;;!!;;::. ..,,::::;,!i;,,. ,,,,,., .i, ,i +:.,.,:,,....,.,. .....,.......,...,:;;;:..... .. ., ;i;. ...,..,,,,:::,:;!!:;i;;,,!fi;;,,.,,. ,,:,. !, +,,.,..... .... . .,.,,,:,,,:::,,.,,:,!itii:,::,:,.,: ...... .,;:......,ttittft;!!;!;,:,. ,,,,;ti;;:!:....;;;tf; .;  + . ...,..,.,,.,....,,,:,,,,,,,;i;:,:::,:::,:,,,,,:,,,. ,,,...,,:,,:,.ittffffti!!!!;:,. . .,,,.::;iti;:::,  it8###@@###0GCLtii!;;;:;:,,..:.:;,,, .. . ;i!i; .,.. . ,, :;. !, ,...,,,, ,t: ::..,;:,::;;!::::: +fiif00#8####0Cfi;;;:::,:,..,,. .,,,:.. ., ..,. ,;ffC:,;!:, .. ,.,:....., .::,.,,,,. ,,.... .;0:,:. .,;0C:,!,;... . +t!;!iftLCG8@##0Ci;!;::,,:,,::. ....,;::. . . .: .,:,.,G0f:!. . . .. ...,,,:;...,. ,,,:,..!8i,.,,..::t0;,t:;. .  +0ttfCf!!!itG@###Li;!;!!:::;,,,,,,,.;:::. ..,,.. ,; ,ti;,:..:!;,,.. ,t:i!,. ..:,.....,:t8;, ;i,::iC!,,!:: :;, +#0LCLft;::;!fG80CLfi!;:,,:::,,::;:,,::, ,::,:;,::,,,:,, ,:. .,CG!!!!:,,,,,.,,.;i::i: .. ., .,!G8;,..:;,::it:..!,!..,,,,. +Gt!;:;!:,,,,,::;iG##GLi:,;!;:,,,:;:,., ,,,:;;;!t:,,:!,.,,,.,:. .!i;;,..,;.,,...,::;:::,,,. .. ...,tGf;,. .:,.:!;!, ::::. ::,:, +i:,,,,,::,,:::::;iL@##Cfi!;::,,,,,,,::;;:;!iiiitffti!:,,,,;..;!;,!;,, .,;!!;,.,,.,,,,.,::,.,..,:;fi:;t. ;,!.. ,., +;!;:;:;f;,,!;!;it;;tG88#@Littf!!i!!iC88LCC@@##8####8LL:,!,,:.,fG; :i;,,. ... ....,:::,,,. ,:,,..,,:i00;:f,..::,. .,  +i;:;f;fC!,::::!;!ii:;iLC#00##fC80CGCGGftL880@8LLGLLLtf;,;... ,iC: ;Gtii;;:,.. ... ..:,, .,....:.:;;!:i,. :,!. .,.:ti; +;!ti:,:!!,,,:,,,,:::;::!tG888800CLfii!;:;iiii;::,,....,.,,,:;!fC: !#CLLiti:ti..t!::;:,.. ;L!,,;,,,,,:,,. ,,:::..,;,. :fC;; +!::::.,!;;::::;,.,,,;,,,:!tL###0Lfi;ii:::ii!!;!::,,... .ttiifC@0: !0fLL!;::if.,ti:fGf!ii, i0!:ii;:i!i!!;:;;!ti!;;:L:,:,:tG;:! +;:,:;:::!;i!t:!t:::,.,,,,,:!tfLLtii!!!!!i!ttti;;;!!;;:,,!ftffL00, :t!;:;;;:,,.,!:,;!ittt;:...;!,.,,,,:::::;tfi;:::::Lftiti!G!;!; +:,,::,,,,:;;;!;ii:,,:,.,;,:;t;!ffLCCCLfCL!tCGGi!tCGCffti::ft!fLC: .,,..,;;::;;;;,,;GtC0!:;. ,!;::::,,,:;::;C;:;...,:i:::::;!C:,t +i!;,::,,:;;:,;;:i:,,:,:,;::!!;!tLG8###CLLttffLffftfti!;!:.,:,:t!, .:...,;;itiG!.,iCi!!tt!!.,fCfiLL;.,.,,,,:,,. . .:L!:::::;t!,,t +iti;::,.,:,,,,,,,,,,::::::;;;:;ittfCG0GCLtft;;;!;:,,.. . . ,, .,..,!t;:::;i:,;:,..:;;;.,iL;:;!,. ...::,...,::tfittiiiCLf:;i +:::::::,,,,,;;;,..,::;:;,;;t!,:tt::;!tC@#GCLii!!!!!iiti!iittiit;.:fi!!tti;::,,;;,... ,if: ,i:. .,,,,,,,,.,:i!if!,:::;;i!!tt!t +;,,:!i!;::::;ii!..,.... ..,,,,:;!!!!!ifCG##L00G0@##############@,:###@i!t:tC;:;:;,;::,:i!:.:!. ,::;,;!,,..:ti:,;,.,.::ii:;itCC +;,:;i;,,.....,,,:,::,:,,,,::;!!tLLffftiifCCCCGG8##@0GCG0G8@@0C@#;,t#Ci:!!::!f!;;:;;!ii;!;::L!. ,,,:,,::::,,:;:. ,.,.:!itC00t: +...,,:,,,,,,,,,:!fttfftiiiittffttftii!;!tfLLfC8f!!ii!;;;!iiti!tLC:,,;:;ii!;::::::;;;::!CC:f0L :,,:.,.,;!!:iiii, ,:;i0880!::, +;,,,,;i!!ttt!;;;;!;!!!!!!!!!!!!!!!!!i;;!!ii!!iCt!ii!;:::,:::::;!LL; .iC0GCCt;;;tit:..:::;!!, .... ..,,:!,,;f:.,,;L00f!;:,.;C +Lt!!ii!!!ttittitLttfttttiiiiittftift;;;!i!;::;;tGCG8L!!;::,::!i::;t. .:i!;iti;t;::,, ..,::. ., . ;. ,; :!;;tt!if!,,:i!!iG +GGCGGCLiiiiC@88@88###@0GGGGCGGGfiLCititttfLftftttfGGG0LGf!;:,:;!:!;. ,., ...,:;;:::,,:;!itCt::!:,:::!::; ,;;!fGtiiii80. :0LfL@@ +8@88GGLLifLfG0GLffLGLfLftttfLLLt!LfiL0LCffC008CLfit!Lt!fLCGfit!!@G::itiit!;:,.!LCLLft!iiiiff!iftf;tCtfi;;,:CGfLt;!LC0L;. !@L!!tL +.iffffftffftfLft!;!!;;;!;::;::;::;::;;::::::;;;;::,....,:i0@#f:!@#i:@##iC0CLt:::;!;!tfC0Cf!,.:;;;;;!;;:,:!fii!L!!;:;;, ,CC!;!f +i8@888888888800Ci;!;!:;;!!::,,,,,,,:,..,:: ....,,:,,,:;!,.,:;:,!8C!;!!;;:. ..,;;!!L! ,f;ti:i::. ;t!G;i;,. :. :ft!if +80fftttttttftttt!!;;;!;:;i!!i:::;!;::,.:;..:f!. ,,!::ti;,,;;:, :!;,:;:;i;,,,::,,,,,::,.,;, :Citf!t;;.,i:;Ci: . .;Ci;!f +Ct!!!::;::i!!itttti!;;:::!!;;::;!i;,,:,..,:!0L,..,,!;ittf8@@8i,,,,;!iii!ii:,:;!i!::,::,.,;. :C;tf;t;:.,f,,tL. .CC!;;i +Gfti!tti!!!:;!!!!ii!!!;:::::::!;;;:,:!t::f;ifLfiti:.;C8@####C;!i;,,:;;;;:;!ti;;;;:,,....:;. .,,::,!::..,:;f! ,!;:,:t +t!;:;it!i!;;::::;;!!;;:::::;:;;;::::!iiiift;######f!ttiiiti!:,,;!i!;;:;!!;ifL;,,,:,,::,:;: ......, ,LG,. .,.. ..,,.:f +i!;:,,::::::,;:;!tifti!!;;;;!::;;::::;;;;;!;iG##@#####, ..,.. :@#G!iiifft!tt:.,,;:;!!!:;. : .::,, ,t;,!, ,fi;!:,;::;:! +;:,,,,:,,,:,,:::;;;iiiti;::::,,,,,,,,,:;!:,,,:;:!!ftt!:!iiti:::;!!;!!!!!!;::,,.,,,::::,,. ,,...... ,. :!:i!. :L;,.,,;Lti!it +;:::,,,:,::;;::::,,::;;:,,,,,,.....,,,,,,,.,;i: .t, ,;:;tLttt;,. ..:,...;,:.,,.:;;:;;,. .,,:, . .if;t:,:,.;L. .t:fGft;i +i;;;;;;;;;:;!;;:,,,:;;;;:....,..,,,,!:,:;iiftf. .,:,,,::,.,;;;:.. .,;!;:::,,......,,,,!: ... .:. .i:,;!!ff..:, .;,,tt;!i +i!ii;::;:,,,,,,:::..:,,,..,,::;::i;!;:;;#####!:i::i0i!G#t;!it!i;;i;L8LLfGLf;;;;;;;;::::, .. ,!. :, ;C:,,, :f::, .,:;! +,,::,...,... ..,. . ...,:i;!!:!;;i:;:;fGC8C;iiitfLfi@##CitLCL0LffLitttCLCLfLLLLLLf!ti: ....,.,,.:. ., . ,G: ,i::fCi. , :i +,,,::. . . ,. . ..,:,:!:!;:!,,:,,,,..,L!,,,,,Lt:;;,::;;:,,::;:;::,,,,,:;;;;;;;;;;;;;i;,,,..... .. .,::..i: :L;:;i!, iL +,..,.. ....,,.,;::;:;;:;:,:,..,::,:;ift!:,;!iii!;;;::;::::::::::;;;;;;;::,;;!;!!!!!!;;!f!!;:,,.....,:tfCf, .. ,GL:.,. ,L +.,,,.,,:::!;:;:,!;;!:;i;:;,,,.,;!ftt;####8,,G0000G00GCf0fGGLGLGC!CCLG0GCGC!GtL0CfGG00CG!,,,:!i!;;;;;!!L8Ci:. . ;Lf, . . +;;!!::!;;;::;,,;,,:,,;::!,,:..:;!!;::f88@i,,:!!!!!!!;:::;:;;:;;:::;:;;;;!i;:fi!!!!!!!;:, .,,,.,.,,;L!:,...,:;:,...,,:;.;;.  +;:::;:,::,,:,,,..,.....,.,,..,,,:,,,,::;:,.... ...:!, .::..:::,,,;, i;,,;!;!i!!!:;;. ..,ii!,  +:,.,,,:;,,,..:..,,,:..,..,:.,,...,:!:;t!:!,.:, .,,;ti. .,.::.;ti;:::,,..... :i;;!ti!ii!!!;:. .;;!i  +;:;:,,,.,, .,.,;::;,.,,.,,..,,,:,,:::;;:;;;::,,,.. . :,:!tti!!;::;!;!!!;,:,,.,. :!!itffLLLLfii;, ., . 0GLi!;:::::,,:,:;:,!;,.. ,.;;;:f: ,t;, :, ... .. . .i!..;. . . i:,;,.:,,:!:;itL;ifLi;!;:,,..,,,, +#GLi!::,,,,......,:!Li!: ., ,. ,tLft:C08@#0tLC;;,,;,,,..,,;:. ,, .,.....;:...,,:,,.!C:..,,,.;i,.,,,,,,,:L!::!!!:,:,.  +##0Ct;:,,.,,. .,,::::,,,,, ... .,:!,,:!LG0GCGCfiL!:ii;ft:0@C; , . . .,:,:::. .;@L: .;L;,:,. ..,,..,tC!:::!tii,. +####0i;,,.,,..,,,;;::,,..;; ,;!;:. .. !, .,,,:::;ffttCii@t!0ti: :;,. ,!:!:,!;. ,G@; .!iG:!.. .,,;;,.,,;0L;,,,,,;; +#08#GCf!;,,.,:,,,,,,,.. ,: .;!ii;:it::::,:. ,,:tLCCfi:,, .:GC, ;f:;!..,:,:L@!. ,ii:::. ,,...,,,::,,;f0t:. .. +i!!iC0@#8Lt;::,:!:,,,::;:,,..;;;ift::;!!!,::,, ,::,;: :i!;;,.,,.. ,,,,,. ..:CG!, .!i!.,.. ,,,,,,,,:;!::,,;0C:..., +!,,:;iC###0fi;;!i!;:,,;CL,;;.,,,:;:,,:;::::;::.,!!;,. ::,!,. ,:;:.....,,:,,. ,::, .;G!:.:.. ,:;;::..... .:!i:,,: +:,,;!ifL0@00GCLfffLLt!!i!;;:.:,,:::,,!:,,:;t!;,:Ct,:;:,,,, ;t:.. .,:. ...,....,....,:;0i; .:. .,,:::::;!!;!!iti:tCt +!!!L8@8C0CC8@#888G088CCLt;;;,.:!!:t;:i;:;if;;i;;:, :fi,!L!::::;!L:,. .,:. ,.:.,:.!,,!;!, ,., .,:!tf8#@@8@##8C8@0t;00f +CLffLfttfGGLGCG@GG08GLtt!:::. ,,:;iL::tif##;;t;,,. ;t;:!!!tLGCG@L,::, ;i;,,:,,,,:::::,..;,. ... ,CL0@#####0C08@iti;;!!tC +i!!;;;:::iiiiifLLG###Cf!::,:::;!!!iL!;@LL#G;:;,:!:.;!;:tt;!!i!i8i.,Li!!::, ;0t;tti:!!ii!!!;,:!::::!;:iGiiiittti!;;;;;,,:!iCfi +i;;:!f;:::tit!!tfLC0#0f!:;;i;!ifCLf8L!Gttti;;:::ii.:!;,;::::,.:!;.,tttftfC, , :L;,::,,,::::::,;Ci!,::LLfG!!;!!!;;;!:,,;CtiG@0t!! +fi;::;;;!!!titti!!!ttfffLfftiiitLLC00;:!;;,.;i!:,;:;!,.:;!L!,:,;L,.!i!iifC! .;i;,::,.,,:::;:.;:,..,;!;;!tLCCGLLtfti;!L##@0t!;!t +Lt!!!!i!LL!!CG0LiitfLfC8@##@LL!!ii!i!;,,:,,.,!;;;!Ct:.:LGiLf:::Lf,:Li!iitf; .LCtiLL;.,...,,.. . .,f;::tttittt!!!iitG8ffti!;;!i +Lf!ifiiitftifLfCftttffffC@@#0Li;::::;;;..:...:f!fi!i:,!C!;:;!.:f;,fGtii!iL: ,iL;:;:,......,..,:::;!;,,!tttttLf;;!i0ftt!iGLL0LLG +!i!;;!;!!!;;LL!;;!i;:;::;ffC#GLfi;:,,,,....,!fi;;:,;ti;,, .,::;t:,GLiiiitfi ::!. ,:,,:,,,.:!fCi!i,.:i;:!;;!!iCGfi!fL;iLtfLftG +tCt:,;;;::!;!!;;!!iiiittfffCG0#8@GLLftti!;;;ftt,;L;:i;:,,,,:!t;t:,LCi!!ifLt,,.!. .::::,;:..,,:::,,,,::t::;!!ff!!i;!Ct:::!;;;;;t +:;:,,:;;;!iiitLGGG0@########@@G8#8G#####88Lf!ii;;fi!!:;:;!tii::ii,:0LiitttiGft!, ,,,:,,,,,::,:,,,,,,.,:;!G80i;;,,i;Ci::;;ii;;;f +;;!i!itLCGLCC0GGGGG000000GGGCGGGGGLG0GG@0tfft00:,,,:!!:,:;;;;t!:C;,:CGLfCLt@##0. .,..,, .:;;;!;;ti. .:!LGit;:,,,,,,,::f;,:;ttit +tfftttttt!!!iii!!!!!ii!!iiii!!iitt!:!!i!!!iLCti!;;:,:,..,i;:ifi,!0: :CLfLLiGGt;. . . .:,.::.,;!:;if!ii;!iiiiitttttL@GfffttLf +f!;;;;;:::::::::::::;!;:::::::,:::::!L!;;;!tt;iLG8@0ti;::::,,,. :i! ,!!!!!;t!;;:,,:.., ,:.;:..::!fCLC@;;0GC@G088@####@G######### +L!;;!!!!!!!!!i!:,:;;tfi;,:;;;!!;;!;!0ftii!;;;tt!fCG8@#@i!Lf!!!;:;!;;!::!;;;;itCiiifi,;!:t::i,.!G0Git8C,!#0CCGCCCCG08@00#00###### +CffLLffCCt!;!!;;::;;;!!;;;iifLLfft!ftitLLti;;!!iiiiif0G8fLCG888GG@80Cif##f!fC0i::;:;::t;;!;;:;iii!i;:,..!Ctt!!!ifLt###@GG00GG0@# +Gfttii!!ii!;;:!i;;;::!!!i!;;!!!!!;;;;;;;;;;!iifCGLt!;;i;:,:;!iL0##Gttti##f!;!t, ,,:!::::,,,:LiL!;. :Gt!itif0CffftL@#8t;iC# +L!;;!!::!ttt!;it:,,,:;!iiiiiii!!!ifCLLt;:,,,::;!;;:,.... .,,.,,i8!.,80::f8!:!!, :t;Ci;t:;.;;:iC; ,LttLf;G0G!!!:!it!;::!L +f;,,::,,::;::,,,,,,,:!ffL0G00GCfttL##Gfi;:,,,,. ...:t;::;ti!,:;;, ;0t;GG, :GiiL!i;,,,f,:L: ;;;:;:,:tt;;;;:,,,::;;t +t;,,:,,,..,::,.,:;:::::;!!iii!!;;:;!i!;;:,:;!;,.,.:;. .;!!itC###8!i!!;,::;;iLf,.:C:,f:!:,,,:::i, :!::ti;,,,,;ft;::;;tfiL +t;:;;:,::::::,,::,,.,,.,,,,...,,,,:::;;;,,,,::;;:.,:!;ti:,!G@###@i;;ii;:::,,,;fG!,.,,,:.,,.. ,f! ..,,.,:::tCLf; ,i!;:!iti!!!t +t!!!!;:;!!!;::;!!:,,::::;::,,,,,:::;::,,,,,,:;,:,.!#####8!tLti!;:,.;###i:,,,::;if; .::,, :;:, ,G!,.,f;:;!i!::,:,.,:;;::,:i +t;:::::;!;;::,,:!i:;ii!;;;:::!;;!;;:,,,,,,:;;!:,,.;#########0,,::::!####8!:,:,,!L; ..... . ,!i. ..tt, :!t;;!;::,::,........,! +t;:,,,,:::::;,,::;i!;!;:,,.,;:;,,,,,:;:;;:::,,,...,:ittiitft;;ifCLt!;;t##@:,:,:!L: ,, . ,t;::;;:t. ,,!iii!;::,,,,,...,,,,; +i;::::,:;::::;:,,,::::::,,:::::::::::::::,,,:;:, . ,C!;:;, .,::;:,,,.:!:;!::,!L: ,,...,:. .,:i::;..,,,,..,;ift!:;::,:,:::;::; +fti!!;,:;,,,,,.....::;;:.,;!!!it!;;:;:;::!ttLtL.... :!!::C;!;. .,,,. .,,,..,;i. ,!. , .tt. .::tL: .,:ti:!;;;i;:::,,; +i;:::,,,,.,........,,::,.,::::;:::,,:;;,:#####!:;i;!;L8f;!0#@!ti;iiCCtt;;;i:,:,;;::::,,,.:. . ,,f: .!!;:;;, ,G!,,,;::,,,,,! +:,,,,,:,,,....:.,::!;:i:,:,,,,:,,..,,,,:iLLL8t:!!tfiffLfiifCGGtLtfCCGLffitttLLffLfCGtt!,. .,;i,..; ,tL;,. :f,., :::!;!;! +::;!;:.....:,:!,,!:;;:;::!,:;,,;,,;::,.,00:,,,.,fC:,:i:,,,,,:::,::::::::,:!!!iii;;!;::,...::L@G: .,. .tL!. .,. .;. :!!;:,;! +,.:,.. ,,,!;:;,,;::!::;:::::::;;:;::!tfLi;;::,:;!;;;;;,:;:::::::::::;;;;;;:::!!;;!!;;:::;;!0L:,,:!i;:,,,,,..i,;i:. .:,... .. +... ....,,:!::;:,;,,;,,:.,!,,!::!,,:;####0,,i;tfftGC0GtCi00LCLGC!CGLGGCGGftC:iGCfGCGGfGi..,ii:,:!i!!;;i!!:. ..,iii;. ., . +... ,;,:!,:;,,!:,:..,,,:;:::::::::,,;0@8@t:;!!iti;:;;:::::;;:;;:::;;;;;;;;i:,,;:::;;:::, !::tf!;!;;!;::!: ,:!, . ,; , +.,,,:;,:;,:;,,:,.,,:!!;tLi::!i;::;:;;::,,,!ffti;; .:; . .;;;;;;!!!!!!:,,, . .  +:;:,;::!i::;:,;,.,!!iti!;:,::,,,,,,,.. ..,:;;::,. .;:..:;:!!;,:,..,,.,,:;i!!!!!;;!:,,. ., ..  +:;:::,:;;::!:::,.,:;;;:,:,.,,,,::,,,.,;;;!ii;;;;:,. . :;!!!iii!!!!!iti!!ttffLLLfittfti: .. .!!,,,, . .;ii!ii!;::, .,,;;,. i :,... ,, , !f:,,,,.,,,,,tt ..,,,;!i:;::. ,.,,,,::;; ,.,! +;!:,. .,,,;LG88GLLf!G;, ..,,:::, .,. .Ci., .,:,. ,,.!i::;;;;;:,,,tt:it!G0;,:G;...,,,...,;;:,.,:ii!.,,,iC, +;tLt,, . .:;;!i!L!080::!;;itfCf;, .,;. ,0GL, . .,,!fLf00i!!;:,,,,::!C!:if:::iC;;,.,,::::!!,,,,.t;;i. +,:;:,,,,,.! ,:.,:!i:!t;:;ii!08!. ., .... .,,.:GtL, ,,..,, .,:;;;;tff;:,:,,,. .,fCi0;.:::!.,,,,;ti:.. .,:.,: +:::!t:,,,,.. .;: ....iGL!fGt::., ,t: :GL .,,...iL. ft,,,.:,...,:L!:,:!t!;,:::t0i, .,!!,,::,..,::.,.,,;, +!!iC0;:!tfCt;:!!;!::,,. ,:;tffLt;:,. ,C; :G;. .,;:i,.;t: ..:,,,,,,:fG!::,;;i!;..;Gi,..,::::,,;!ii!!8L!. :L;  +!;!!!i;i8###fG@###8i;!:, .. .,:,!!i: .., .. ... ::.,... ,,;f:.,,,,:!!;:.,;GC:....,.,:ifii;:,,itf;!ittf!;i@!,,i0;f +i:;:;;!if8@@tiC##GLC@L,...,i: , ... !:,,. ,:,.. ,t0:.:;;:,..,. ,:if:,...,!@8:;!!:::;it;:!fLfi;!i0ti8G!; +Ci;!;;!ifLGCt;f##CG8#C,...,,: ,,... i0:,..,.. ,;,:,.,.:8C: .,::::::;::;;!C;,!;!f#@i;;!!;!!;;:,:!tftii;C#G!iL:. +8LfffftG88@#Cit@#Cttti:. .,,... ... .,!G; .:,,,,..,if::;;tLLLLLfLf;;;!f;;ft@8t!!!;;::::;i!;;!fG;;;;!Gi;Gi.: +@88GCCLLLLCC#0ff0#iiiLC!!!tLfiii!;:::i!,,,,,. .Lii:,,......;...,..,;;:00C#Citfti!!!;;;:!f00t!;!i::,,:::;Lfffttt!!0;..:CL:,: +####Cf0Lt!iiC#0ffLiC0GtG0GC0GCG0#0itt!:!tfLLf:. .!8i:!;:,:;::. ,;,;,:L;:iiiCt;!!!i!;!i;;!L@L!;;i!:::::;!!t!;;;i0i;f0; .;C:,!; +8000Lffft!;!tti!!;!!i!!itiCLLfC0G@fG#!,;tLLLtfL, .: :C;..,...,,.,.,,,..:G;:!!ii!:;;!!it!!tL@Lii!t!;;:::!;;;ii:,,,!0!:i!,.;8L:!;, +LiiifLCCLti!;itii!!ii!!i!;i#8tC@fCfC#t,i!ittftC: :f!::;:,.,.:..:,.. ,,,:f;G8;,!t;it!iC#8iiLti!tt!:;;::;;fi;;!;!!!t0f;:C0;!ft! +t;;!tC##8@#GfLfti!!tiiiit!i#CtL0LLLC#t:!ttLG0i,. !LLttft:...,..:,...,::iffLf!;!iittt00t;;t!;;;;;::,,,,,:!!!ttft!i!!88!;!;!!;, +!::!GfLG#@##GLffttiiiiiitii0GLC8ff@fLG;;!!!t!. . .;if!,,,,,.., ,,:,;;,!####GLit!C##Gi;:,;L!!t;,:;,:,,:,;;:;!!!;;!,:;;;:.,Lf.. +!::;i!;ifCG0#GCLfffftiiitC!t#@tLGL@LG8!!iii!::,... .!!L: :::,, :,,::,:!####Giitt@Gt!;!:,iC;,:,,;:;;:;;!;!tiit!;;!;, .C;.,::,. +;::;;;:;;ifC0@##0GLfttttffii##tf0fGC8#t!iff!iit!:. ,t;f: .,,,,,, ::::,,.!iifCftC@C!i;;fi;:if;,::,:;tifitfitti!!!!;GC::;::,,,:;; +:;it!!,:!;;fGG####8CLffffLt!G0LL0fCGC#i:!!!!!itGL; .:,., :....;. :i!ii::,ti!0080i::;!!tt:,ft:,tt,:t:;t;;;;::,,:!;;iLCtC!.:::::, +,;i;;;::ii!iftf008##Cfttftt!CCLfGffLtL!,;iCfitLCGi;:, ,,;. ,,,::..,;iffLLfi:::::::..,, .,,.,..,,::::;;;::;:;C8!!;,....  +!ft;:!::tLL!;!!!tfLGtffffCLit@Gttfii!!;;f80i!!!itCC0f!!;::. ,.: ,: .,,fC@#######8@@88GLffttttttttfffLLLLG0@GGGCC0i!!: ....  +.:,;!:,:;i!:;GL,;f!;:ififLGi!GL!!;;ititttGfiii!iiifL88880CC!;;;!!;;!;::t8L##############################880CGC@0CLCLiiC: ,:;:::, +,::!;!:;ifi,:;:.,;!!t;;!!!!i;i!:::;ttitt!iCtfftffi!itfffffC880C00000#8if@G####888@08880GG0CLCGGCLLLLfLCfLfttffi:,;i::Li, ..,,:, +tGCLC!LCt;,, .,,::;:,.,::::::;!!!!!!i;;;!;;!!tttttffLfi!!tii!!!L#G;:88i0Ltfftiii!!ii;;;;;:;;;:::::;!;:,;G88!;;i;:!t:.,,,,,,,, +,:;!::!!,..,,:::;;;!!;C!,;;!i;;itiii!;:;;!L!:;;!!!;;;!!ii:,,.,ii:,:;, .;;,,8L;;:::::::::,:;::;::::;;!ift,.,:!!fGCfCCt;:::!ii;::, +:... .:!itti!!;!ii!;;;;!i!;i!;;:::::;G@t:,tLL!,. .... ..:i;;;ii:.....:;!!:;ii;:::,:,::!!;:::,:::;!;:,. .:;::;;,.. .,,,..  +it;!i!;:::::::;!::tfC0GG0GCffi!i!it;;;;!!fL;,,,::!i!;:. ,::. ,:;t@##0. .,;::,,;iLt!!!;:::;;;!!;;:,,,,,,:!i;,.:;:,,,::::::,,,,,.. +tttLCLLLt!;:,,,,,,;iC@###8G0Lfi!!ittt!ii;;!!;:,..t880L;.,:::!:,;L@##t;;:, ,:,,,:;!:;:::;:,,,,,,;;,.,,,.,,::;::;!;!itttitftitt!!: +!::;!ii!;::;;;;::,,:!tfLft!!;::::::::::,,:!:,. .;;!ii;,,i##0##ftfi!:;8##i:,;::,.::::,,,,,,,,,.,,,.........,:,,::::::::::::::,,,, +;:,::;i;:::,::::,,:::;;:::,,,,..::,.....,,,,. .:;:,,;;::8#########;:;!f##8!.;:,,:!!!!!;:::;;,,,,,,,,,,,,,,,,,:::::,,,. . .. . +!i!!;,::,,,,,,,,,:;;:;;;::::,.,,,,,,,,,,;:,,,:!if!,;tfti!iiti!itt!;ff,.:tC: .;;,,:,;!fLi!!:::,,,,,,,,.,,,,,,,,:,,,,,:,. ..,,::,, +!::::,..,,::;;;::;;:,,:,,:::,.,,:;::!!::;:,,,iGC;...,:,;C;:;;!: .,,, . ..,.,,...,::,;t!,i;:!;:::::;,...,,,,,,,,,,,,,,,,:::: +;,,::,,,::;!!!i!!:,,,::::::::,,.,;:,,,,,,::::;;:, .....;0!,:;0;;t, ..,,:,..:,. ,:.. .;:,;:t!ii;,i!;::,,,,,,,,::,,,:,,,,,,, +;,.,,,:;,,,,,:::,,,,:;::;!;;;::::,..,,,;:,f8L;:;;i!tft!L!fCtLfi##t;Lt;CLGf!,,,,,,,:i!, .,. ,iLf;.,:;:!!;;:,,::,::,,,,,,,,:;! +!,,,::::,,,,,,,,,,,,,,,,,;:,::,:;:,,:,,:!fG#8CfiffffLffi;G8fi:!8@00LfttLLff!!!!!!;;;;!, :;;!;:,,,:,.. .::,,,,,,,,,,,,::,,,,,;;! +!::::,,,,,,;;!!;::,,........,,,,,:!;,..,C#####;,:::,,:,,;!!:...,;;;:,,,,,:tt;:;:::;:,,. .,.,ttti, :: ,::;!:,,,,,:;;:;::::i +i;:::::,,,::::::::::,,,..,,,::,,:,,!;!tfft0Gt!!;:::;;::,:t:::::::::::;;;:,!t!:::;!;;;!;, .,;it. ;tii!;::,,,.,:;:!;:;i +i::;;;!:,,,::,:::::;;::::::,,,,::,,:;####L,:ifGGGC080GfG;!fLGC0C!CGLG0CGG!;0itfitCtfGL0t ....,, ,i;, .,,,::;;;;,,,,,::::;i +;:,,,,,:,..,,,,::;:;:,,;;:.,,,!,,;,,:G###f,!t;;;;;;;;;;;C;,;;;;:::;;;;;;:,:ffiti!;!!iti!;. . ,Ci:. ,::::,:;;;;;:,.,! +;,......,,,,.,,,,:;::,,:,,.,,i,,;,..,,;!;,.:, .;, ,ii;;;;:,ittiift:. ,,. .,;. . ,;ti!i!ift;:!!:::! +;;:,,,:,:;;:,::,,:;:,:;:,..,i:,,,,,..,!i;,,::. .:!;;tti;;i!ttiff!. !t:, ; .,,;fGGCti!!!!;;i +::;;;;!!;;;;;;;;:;:;:::,:,:!::::;!;::::,,;itt! ,!ttfffLC!!i!!;!:,,,. : ...,:!;!ititi ;:::::,,. .:;:, ;!!:Gf,i; ;;L;!. :,,.. :. .,,,:::,i. ..,,;:,:;;;!:::!:.;i;t. .,.::.:i;::t;:;,,:!:,,,,,... +:!!iii;;;::;, .,. ,. .;;i8iC: ,i;tf, ,,., .:. :..,,,. ,!t,;GLGCL!;;:..,,,,.,,:it,;C:ii:i!!:..!t!f;,!,,,...,.,..,: +,:,;itfLt;t0:::;t; .Gif@;.:,;L;,,. .. .,,fLL:.;G0!;GL;!;:,,,,,.;;:::Cf;:;f!:;!!!:::.,,,!C!,,,. ,..,,, + :, .,:;;;G;!#G!;, .,. .,. .:Gt#t,,:fL,.,. .. . .,:i,i8Lf.,:!L;!C:;f!;:!!,,:::tf;!!,tC:.,::::,,;!:.:Ci:::. . ..., +.:!:, ,,,;L8t::.,,. . .,::C8#;.!f:. .. .. .. .!0i..:::,,,,,,tL0f;;!,,,,,,!i:,,..!,:;;:,;!fi;:::,.,,,... .,,...,.,: + ,!!;. ,;ii!;:, .0C:,f@!,;,. . fG: .,,. ,!i;,,;f0;,,:,,::,:::,...,,:;i;,,::;:,.... . . ...::,:,: +;.,;:.,..,,. .,;t!., .i#i.,:t,., .,..... . .,:, .,.;;:,:,:;.,;0;.if!:,,;!i!::::i!;;:..,:,::,,,,. ..., .,,...,t +fi!;;:,.,Lt,:.....,,. ;##:.::.,,..,,,,,,... .... .:,,:ii:,::,:;f!!;;!!!::::,,,:,:G!GG, ..,,,,.... ... ...,:!L +@#GLfftii;,. .:, . .. .tC#8:;,,,,,,,,,,,,,.,.. .,:i:L;;CffLt;t#CtGtCGC;,.. ,:f!;,::,:,::,..,, . .,.:, ,,.,fGL +GfttiiG8Ci,,,,.. . ,, . . :fi@@!,;::;;:::;;:;,;:t;,,,:!tG!:tt;i0;iit#8t8##GtLf,.........,!,,,,,,,:::,,,,,:::::..,,..,,;iit +Ctiit!!ii;!ifLi!!!;,. t!f!!!:,,,,::,,::::,,,:CftLtttLGi,;ii!;;!f#t!ffL@!i@f,,:;:,,::,i:!i:::;;;;;;;;:.,:::,,,,,.,;!;!!t +GtiiLi;;;;i00GG0###8;,,. .:8Gt,it!;;;;:;;;;:!;,,;fiLL!;;!f:,t0ff!t#@tii00;,;0#f,,,::::,,,,,:,,:,,,,,,,,,,.... ...,:t!;!tff +Gt!;f0!ittfGGGGfL0@#G;ff, .,..t@!,::,,:,,,,::::,,.,:f!;!;,:!!,:0tii0#ti@@iti:.;#L;,,:;i!!;:;:,:,::,. ..::;:,,..,,,,,:;L!;!Gt!; +0fi;iCi;!!!!ii!;;!itiiftt:.:., ;G! ......,,,:,:, ..:fi;!!;:!i,:Ctt##!:;@8i!!:.i#L:;::;:;;:;f:;tit!;:,..,;!;,..::!!:;tfi;;tfi!t +0Lfitii!!iiiii!!!f!!;!;;t; ;Gt:;i!:,,,.........,,iL!;!i:!t,:t8#C!;;;!!iL@i;L@t:;;;:,,,i!::!::::::::. .,,. .,,::,:::,:;;:;; +##CGG8GffL00GCLtitLC!,,,,. ;GCftft;......,.,,,,,,:;::;::!i,,@8!;;,:;::;!G#ftL;;,..,,,,,,..,,,:;:,,,,::i;. ..,::;,.,;::!!ff! +##GG@##LffLftttii!i!,. ,,... :ttL!,,,,,,,,:,.:!;Li:,,,,,,:ti.;Ci;:,,:;:!i;f@0!::;:;;;ff;.,,:;;;!Lt::;iLf;,,,,!!,,:;i!,:i!fCL: +88#880G@GCftttfft!!t!::....:;, :t!G;.,;;;::!:..,,:Lfi:.,,:;iC:,!GCft!;i!!!!0i!!;!!:f0GtLLfi:!!;,,;t!;iii!::,.,;,..,;!;!,,i;;!;: +#8####@0GLftii!i!;!tCGCt:.... :t;iL.:,,:,,,,:;!;!!;:,.,,;08;.,Gf!;:;ift!,;LC;:t:,;!i;;::::;,,,.,:,,,:::::;::::,,::,,:::;!;:,:t +8008####CfLft!!;;;!itiL8i!, .,.,,,.:.,..,:C#@0GL!;:::;L!;. !;;,,,,:,:,,;G0!i;, ,. .,,,,,,:;;:::;;;!tCLit!:;ii;::!!tti:i:i +CLGfC@@#0G0Cii;::;!Ci:::;:::,. .: .. :0##8ftifLCifG!!!::!CfLCGLt!;;:!@Lifi,.,,,,,,:i!;!!;!ii!!!!;::;!;;;:,:;;CL;:;;;!:,,i +i!!!!ifLC#CLfi!!;;!ii!!iiit8#C;. .;;;. ,. .t8ftGCtiittfLfC00GfC#######@CCi!tCCLG:.:!!!i!;,,,,,,:::,,,,,,.,.,,;..::;tL;;i;,,,:;; +Lti!!!iitLttGfCCCCCCG@#########C::G@L;,:!!.,fLi;i00ftffffttffttttttitiitL##ii!;Lf:.,:;;:::,,:;;:,::,,,::,,:::;,.,,,,::::!;;,,if! +0GCLLLftiiLtCC008@0C8@@#@888@#8##i:t0iit!;;::;:::;!!;;!itffttttt::, ,8GL##!!Li,.:ii::;;;;fGGt,;;i!!tt;,:;i: ,,,,,:;::,:;!: +0tiftffffLCf!tffiiiiitttLLG0@##G#! .::,,:;;iC;;;::,,,::;iii!!;;;:;;:.. .,,!8CC0L:,.:!;,....,:;;,,.,,,,,,. .... .. :;;::;:,: +C!;;;;;!!!!;;:,:!::::::;!iiittttL: .: ;@@L8!:;0i....:fLCfi, ,;!tG!,.,,:;;;!;::::::,,,,,......,,,...,,:,,,:::::::,..... .:; +Li!::::;;;;;;;::;;;;;:::;;!;::;!!. .:..f#i!t: :C:.:!iiii;;,. ,iL8#8:,,,,,i!!!ifttttitii!::;!;;!i!;;!!f!!!!tLfLfCLi:,  +f!::::;!;;it!!;;tii!ii!!iii;:;!!!;;..!. :t;,,,,,..,i0##@L:,!,,;;!iitfLt:,::;:;!;;;:::::;:,,,.,:::,,,,,,:::,:;;;;;;!!;:,..,:,,..  +i;,:!;:;!!ttCGLG##CL0Ctti;::!ifGCtf:,!, ,!!!;:. .:!LGGLi:,;######Lf##L;::,,,:!:,...... ....... ...,;!!:!!!ittii::::::::, +ti;;it;;tLLCCC@###GC8Ci!;::!!;!ii!it:;.,L!:,,. .;;;iii!;,;#########f#0;:::,:!;::,,:.,.,:;::;, .,,,!;,:;;:;!ttfttf!!!;:..... +tii!;;!;;!!iitLLCfti!;::;;;::,:,;iif,.,:::,.. ,ttfCCCftf;;ttii!!!:;;!!i,,,,,:!;:;:::::::,,,,,,:!i;;;:,:;;,,,::::::,,,.  +;::,,,,,,,,::::;;::,,,,:;;:::::;;;;,. t;,:!!, ...,:;;;;:!f;;i!t!. : .:. .:!:;!i!ii;;::,,,;!!!;:::,,,,,,,,..,,::,. ...,.  +!;,,,,.,,,,:;;:,:,,::::::;:::::!!,:, :;,!G8i, . :0!,,:G;!L, ,.,., .it,,!;!!!i!!;:::;;;::,,,:::,,,,:,.,:;;:,,,,;;!tii +;:,,.,,,,,::,.:;;;!!tf;::,,,,,::;!!tt!;,;tLtii;;;titfttGiiL#GtfftL##CfLtGf0!;;!ii!!!i!;;,,;!;:::::::::::::,,,,.,,;tff!!ii;!!ifCL +i!:::,;;;;;,..,Lfftttttf!:,...,,,i###8;,!8GC!!iiC888@8@@@8@888888@###@@#@#@@888888880GL:,:;:::;;!;;;!;:,,,,,,...,,:;;;;;itffffLL +t:,,;:::;:,,,:;!!!;;!itii::,....,;Cft;,.GffLCLLLti!!!!!!!!;!tti!!!!!!!!!!!!!!itti!!!;!::ifti;:::::::::,,,,,,,:::,,,...,:;;;;;;;! +!:,:::,,..:::ttf;;i,,,:,,,,;:,,,,::,,L::.;######8. .,,. fC. ,,. .i::::;!!!t!;!;:,;:,:!;:::;:::,,.,,,.,,,,,: +i;:!;;:,..;;;:;;:::,,:::,:,,::,:::i;:;G: :@##Lti:. .LC, .,,. !C; , ,i, .:f0Liffi!!!!:;;;:;::,,,:,,,,,,,,,:; +!::,,,,;..!:,,,,,;,,:;,,!!;::,,::::,:,;i,,,;:. .;;, .,;, ,:, :!;:,. .. ,;!i!itLfti!!i!;;;;;;:::,,:::::,,: +;,...,,..,,:!!;;::,,,,:,i!;!;:;!;,.,,... :Ci , :ttff, ,; ..,:::ittLfiii;::::;::,,,,::,; +!:::;:;,,!!:;;!;:,,,,,::!;;;;!!i!:::,,. .,, .,,,. ..,:,, :: ,. .,::::::::::::::,,,,,,:; +;!;;!;;::!;:;;;;;:;!i!;;!tttttiii!!!::, :;!iti;,. ... .;;;;,. .,,,:,:!tttii!!!!;!::;! ;;;::,.. ,:,, .;!;f8;!t. ,;ift; ,:,,...: .,. ,:,:;; ..::!;!,;::;;;:::,..i;!i .,.,;: ;!,,i!;:::;:,,,,,..,:;;: +;!i!!!;;Lt, ;;. . ,;iG@!, :,:f!G: ,... .: ;..,:,.,,ffGtL!;.....,,,,..,:!f:,L:,t!it!!. ,ti!f:.....,.,.,:::,,,, +.,itCf!i@i;!;:i; .. L0t#t.,:;;Lt,, .... .:,fCC;:G!;ti:;:,...,:!i:::iG!::;f:,!:,,:,,,::;LC:., ..,,..,:,, +,..::,,LL:f#G!:,. ,, .. .:LCt#!:i;L0:.,,....... .. .,:i.;0LC::L!;L;!L!::;:,:;:!fi:t;,L!:,::,,,,!ft;,ff;,,. . .....;;:: +:;;. ,,,:tGt;:,,, .!;::C##;,tC:, ..... .. i0i,,,,:,::,;f8f::!,,,,,;i;,,,.,;,,:t!!iti:.,::,,,,... ,....,...,.,: +:i;:, .,!i!;:, .08, :0#;;!,. . .tC;;; :t,.,!G!,,,,;!;:;:,,,:,,:;,,:,:::, . ...,. . .:,.,,:!!;i +,:,.,,,,,.. ..:ti.. .t#f. :!f,., ...,... . , ...,,,.,:..,..,..:!0i,!t!::!ii;!!!,iC!,:. ... . . ..,. .....,:LCCif +!!!i;,,Li.,. ...,,. .!##!,,t,.,....,,,,,.. ..., .:,!L:,.,.:fG!!!it:,:,,,,,,..;G!Gi. .... . ..,.....,;LLi!;t +fC08C:::,. .:, ,.... ,CL##!!,,..,,,,,,:,,..,,. .,,,:i!,LGL!t;iC#tif8ff:.,,... ,;!::,,..,:,,,,,,...,,.,:,;:.:CCt:,,f +CCCfi!;i;:::,. . . . ..;Ci0@i.:,,::::;;!:;,:,!L;:!tttLif;,!tC;!f0#t!8@!fC;,;;:,.,,..,::,,.,,,::,,,,,:::::,..,,::;;!i;:,:! +Li;;:;tfLtL0Cti!;,. .CiL!;!;:,,::::::::;:,..t0iLCCt!iLf;.:f!;!#@t!!!;!@@!,,,:,,,,..:i,!:,:;!!;;;!:,,::,.:,,,,it!!i!t!:!t +0iiitiCGCCCG@@@8#0::,. .:@0t:tLi!!!!!!!!!!t!,,,!!iti!;:;fL, iLit#fii0!..i#C;;,.;::;,.,;:..::,,,:::;;:,,,,,,,,,,;i!!tti;::iL +8t;tfttftLf!ittiLGi!G!, ,:..i@!,:::,,,::::::::,,,.:L!;;!;;!!;,,!f@#t8!;!!::C8t;:::;;;::::t;,:::,. .:!i!::,::!;:::iL;!tGi;:,!it +Gi;!!;;!itii!;:,;iiftf!: ,.. :C!..,,,..,,::::,, ...;Li;:::;tt!.:8#@!iL!!0i;!@@ti!!!;!!:::ii:ttii!,.,.,,,,...,,:,,ii;;:i;;i!:;tt +Gfti!iitffLffttiiti,:;i, ;Gt;;it;:,,..,,,.,....:!!i;:;;if!.:@f;:::;;t#0C@G!;:,,,,,,;i,,,:!!;,,:..,:,. ..:,.,:,:;;!!::i0L +#88GLLCLfti!!ttf0f,,.,.. ;GCfiii:,.....,.,,,:,,,:;;!!;:!!!,,::,;;:;,!##ft;:!. ,:,;i,,.,,tCi:;:;iLLi,,,,::,,:::;:!iLGL;:!it +#0CCLLfftii!ii!!i;. ,,,... :LtG;.,,:,,,,::,:!;ff:,:;:;:;!t@f.,i:;;;;;!iCGG:,:;!!;!0t!;:;!,,;;!Lt!iLt;:;!!ti,.,:ii,,t!fCt:,:tL +#@GLfLCCLtfLftiiii!:, .. :!, ;CiGi.,::;:,!:,,,,,;L:,;:tiit@#f:.!t!ii;!:L@i!i!;;!G0LttffLfi;,.:;;:;:::,. .,;;::,,,::::;;:::if;;f +###8880Cfftti!!!iiC8!:;,. . :L;:C,,,::,,,,,:;:;i!;:,::;G@f!, ,::;;;:,:iGGtLf,,:;;:,,::;;;:::;;:::,,,:;;::i!!i;,,,!!i!::::!!;!i +#88####Gfftii;;!!!tGtfCt, .,.,:, :,:,., .,;C#8LLf!;;ti!;, .ti!!;,,::t@t!i!, .,:::!!!itttiti!!ifLti;::;!ti::;!i!:,:!;iLt +G0LC0##8Lfi!;;!t!,:,:;!tt!;, .! ..., .:8@8@ftttfLt;!Ci,;@#@##Cti;tC!;Cf:.,:,,:,;:,:::::;;:;;;:::;;;;,.;:;LG;:;;::,.,i::;: +itiitCG0@CfttitffttfffC8###@!. ,t!;, ,,.:. ,L0fifGttitttLffGCf8#@#@@@8;;ti!fL:,,::!;,..,,,,.,......,,,,,;!,.,,:it;,!;:,,;!!!;:! +GfttfCGC#GC#0@@#######@8@#8##C::L@8!,,;t:,!,:Lf!;;C8Ltffffttttttti!!ii!;f##it!:,:;;::,,,,ifi:,:::,:;;;;:!;,.,,,,:,,:!!;,:LGtti;; +8GCGGCfLL#L0#0@888G0GGG0G@@G###;,i0L!ii:,..,:;;:,,;!!!;!!ifftttft:,. ,00i88f:;tft;;;::fifL!;:;::!t;..,;, ,..,;i!;,;!i!;:,. +0ftLLf!iiti!i!!ii!!!iLLCG@#fC#G;:,:!:...,;;iLit;::,..,::;iiii!;;::!:. .,,,;!:,,::,,.,,,,:::,,,,,,::,,,,::,:,,.. .,,...;!ti,,, +C!;;;;;:::!i!,,!;;::!;!!iii!i@8,.,,!. :f@G80;:f0; ...:fLCLt: .:;iG!,....,,,,::::::;!:,:;:::!!;;;;!tii!ifff!!!,. .,:;;:: +L;:;;:;;;;;!!;:;ii;;:;!!;:,:;;!;,,,:, .f@i;!:. ;L: ,;!!i!!;;:. ;t0@@::,.,..:itftttt!;;:,;;:;;;::::!!::::;;:;;!!:,. .... .... +f;;!i::ti!!!tLi!!;;;;!!!!;;;;!ifL, ;, :!:,,...,...;L@##@t:;!,,;;!iitft;:,,:::;;!;:::,............ ......,.,::;!ii!!:,:::,,,,..  +fi;:;;!iiiit0CLC08fifi::;ttfLf!!i;.,:..;!;!;:. ,;iG80Li:.!#####0f0#8!::;,,,,,;:,.....,... .,:,,,::;;ifLLLCCt;;;,...,,:;, +fti::fLLfifCG0####GGt!;:!;;!;!;;tf,.::f!:,,,. . ,:;!iti!:,!########L#8;:::,::,:!;:,::::;::..,,;:!!;:;!::;;!;;;;;:,:;, ..  +i;:;;;!!;;;itLGGGLti!i!;::::,,i;!f,.,:::,. .itfLLCLtti;!ttii!!;;;;:;:,:,,,,,::;;;:::::;!iii::::,:;;,,,,.... .  +;,,,,,,,,::::::;:::::;;;:;;::;:;;:,:!,,,,::;, ..,::;;;;:!t;!!!f: : .,;;;,.,,,!t;i;;;;!i!;;:,:,,,,:,,,,,,::,,....,,;;;;::, +;,,.,,,.,;;;,,,:::;:::;;:::;;i;:i!.:::,:,:G8i, . . !0!,,;C;f;......,:i;,!;!:::i;!;;;;;:::::,:;;:,:,::,!tti:;!;;;!tCGCCCL +;,,,,:,,,:,,:;;;iift;:::,,::::t!;!!tfi:.,iLLtt;;;titfitCift8#fLttfC#@LCtCfGi!i!!ii!!ii;;:!;;!!::::::::::,,.,,,,:ii!!!tttttLLLffL +i:::;;;;:,..;Ltfitittfi;,,,,,,:i,;###8;.;@08Ctfif88888@@@8@@808@88@###@@@#@@88888888GGCt!;;:::;;;;;:,,,,,,,,,,.,,,,::;;;;;;;;:;i +!;:,,;::,,::!!!;;;!ii!!,,,.,..,,,,ft!;,,GCfLLCCLCti!!!!!!!!;!tti!!!;;;!!!!!!iii!!!!!i!!;tfi!;;;;::::;,,::::::::,,,,,,,,,,,,,,,,; +!::,,,..;:!LLL;;i,,,,,,.,;:,,,,:,: .:;,,;#######0. .,,. .Lt .:,. ;!,.,,:;L0iift!;;;:;i;::;;,,,::,,,,;;:::,,,, +ii!;::.,!;::;;:::,,:::,:,,::,:::;!,. .:,.:0###Lti:. .CL. ,:: ,CC. .,:,,.,, ,iLCLffLftti!!!;::::::::,,:::::,,.,:: +!::,,;.,;:,,,,,:,,:;,,!!;:::,,,,:,: ,,,,,:;:. .;:. .:t, .::. :fLLt,. .;. .,,:,:;!!iffft;;!;:;;;;:,,,,:::,.,,; +;,.,,,.,,:ii;;:::,,,:,;!;!!::!;:,,,. . !C, .:;;tt .!, .... .,,::;;!i;,,,,,,,,...,,,,,,; +;:;::,.:i:;;!;:,,,;::::!;;;!!!i!:;,,, ... .,;!, .,, .;: :t!,.. .,,,:;:::,,::,:,.,:,,; +!;!;;;:;!:;;;;;;;;ii!;;itttttii!!!;:;, :ttftt;:;;;,.. ,,. ;itti!:. ,;;!itffti!!!!!!;!!!;; :,,,,. .:, .::i:fG;f; . ;:;Cfi ::..,.,, ;:,::;;!::::;;;::,,..!!;i.,,,;;.,!;;;t:;,,,,,,.,:;;:,,,,,,:!!!! +;!80::..:it: ;8i!#@; .;:.,Gf!C:. .,.. ,. :,.:::,,!:. ...,,,,,.,:;L;:t!:tifi!;..;t!C; ...,,,::,,,,...:i!;;:!t +;!8!:iLi:;;, ,, ,G@!i#i,:::,i88;,, .... ..:C0CL;::,...,;;i;::!Gt::;C:,;:,:::,:::i0!.,. ..,,.,::..,;ii;it;;t + ,,..i@#t:,....:. . .,;iGii#!:;;i@8;,,:,....,, .,. .,:;,t8fCG;ti;,:;,:::!ff;i!,i!:::::,::tft,!C!,,, .,..,;:,:!i!;;;;::i + ,;ff!;,,:. . :C:.,if@#;:08!:, .... .. .. :Gi..:,:,;L:::.,,,:!!,::,,;,,;fiitt;,:::,,,,,.....,,,..,.,:;!!;ii:.:t +: ,;!!;,, ;#t. :i8iii:,.. .. .... .ff:., .ii:::;ti;;;:;!!:,:;,,:;:,,.. .,. ,;..,,;!i!ttLtiit!:;f +:.:;:., ..;t; :##!. .:!f,.,..,..... . ,.,:,;.,!;,..,. ,:!0f!LL!;!iti!ii.;G!::. ..... .....,;CGLtii!i!!;;i;i +,.:L!.,.....,, :L##!,,L!........,,,,.... .,::,,:t:,.:!!C0!!;::,.,,:,,,. ;G!Gi. ..:,....,!Cfi;;i!tiLft!!;! +;!;:,. ,:, ,,... i!f##!i:,,...,.,,,,,..,,,...,!i!!!:!C! !@C#i;i,,,,.........,:!::. .....,,,,:,..:,::,:LLi:,:ii;!fi;;;!t +LLfti!!:,... .,;;!0L!..,,,,,:;:!,!,,:tC!tft!itii;;f@! !##i!Cf:;!;;::::,:;;,:,,,,,.,,,..::;:,...,::;;!i!;::::.:::,:ifL +GCCGC###0fi:. !fiC;;;:,,,::::::;:;,,.;@8t80fLCCGCt!80; :@i:i#C;::::::,,,,!::!,::::,.,:..,,,..,..,!f!;itLt;!!!!!::;;;!f +GLG80L##@@80:::,. .,0#G!!Lti!i!i!ii!!it!,:;Ct!CGt!!;!tf;iC; ,:,:80!:;:;i!!:,;!,,,,,,..,,:::,...,,,,,,;L!!tfi;:;tLLGt;;ti!iL +fiii!!ititttf!8L;, ,:,.;#C;,:::,,:::::,,::,,;:!;,::, .,,:L#;.:;,!#C!;;;!!!;::;!;:!:,:,..:!ti:,.:;i!::iLi!iCt;,,!i!i!!;tL!;!t +ti!;::;fi;!;!GLL;i:.:.. .!C;.,;,...,::,..,,,;!;, .,:::;;!f!i#@;:@8tL#8ttii!!!!::::;tf:;!;,,.,,,,...,:::,::::;;:::,;ti:i;:;::!!t +0CLti!iGGt!;!:::ii, ..iCi;!!!;,..,,,::;;;:,,::!GGCC0Gii0#t;::G#@@#G!::::::;i: .:;;t!;::,:::,. ..,:;..,,,;;!i:,tf!;!!;;:::;f +@GLLLftf0tit:,:,,,. .tffi;;:,..,;!ii!;:::,,!Litt!!iit@@i;:..,:;;;,,..,,ii:f;::.,L0Gi,.!CCf;,,,:;,,:;!;,:itC0;.:!ittiCi!i!!G +@GCftt!iCitt:,. .:,,,.. ::;;, .:,,:;;;:,,,,ti!iti!!;:!@@t;;i;..::,,,:,::,:;;;;iff;:!i!:..!fi:,,!!;,.,;:!;,:i!tt;::iLL;!t!:;!fC +8CLLfLfiffiLt;,,....,!;. :::C:.;!:::;;,,,,,;!LL0LLL!!f#C!:,:i; ,0C;LLiftf;..,,::;;i;;!;,..,,,,,,:;:,::,,:::!!;::!ti;!;:!!!!;;ff +#800GC0Gf0t!tLi;;!:, .. . !i:!i..,,,,,,,:!!;:::!!t!;;C0i!ii!ii!:t#GfCL;:!:, .::;::::::,,,,:;ifi!t!;it;:;!ift!!!;!!it!:tCfL;;!! +#####0CLCGfttf!iG0L,. ,:.,,... .::,,,:;;::.,:;iittifffLG0@8G8#f!t;:,,. .,:!fLfi:,,,,:;!;:;;!;;:::;;LG!:!!;!:,:i:i!;!;;;;:;!f +808###GfLti!!!fttLi;,,. ,;. ::;,,,,,;;;;G##GtiiitiitCLfCG8ftt!L:..;tfft;:,,,:::,,,,,,,,,:..::!fC;;i!,,,;!!;;::::,,:it!f +GtfG00GGLfffLC##0C#CL#0:. .!;;i, ,....,,::,...,i!t8#i;!tft!!!tiiiiCCi!;,,;;;;::;!!:,,:,,,,:,,,:;;.,:,,::::!!;,:ff!f!;;!tLi;;iCi +8CLCGLG8CG@#@#8##G######t,,i00L;,,:!,.;,,... ...,:;:,:!iittfifGtiitLG:.,.,. ;G00C,.:!;:!i:,,;;, .,,.,:!;:,;;;:,,,,C80f;;if; +##888LC#0G#880000#GG##8###;,;iGt!i!,;,.,. .. . ,:,.,:;i!!!f@GfffCf::!,:. ,!!;:,.....,,. ... . :::::::,;:,.:;t!;;;;:, +8LftitfLGftfCLLG0##tC#CC@@;,.,:!,,,:,;,,:... :!:,...........,;!!!tGf::;;L8;.,,,,.....,,,,..,,::,,,::::::,.. .,;i;:::;i;;::;: +L!;;!!!!!!:::!i!ttt!t@0C@f,.: .!. ii:tt:!,..,tf!,;,.:::,. ....,,,,..f#!,;iti;:;!;!!!;;;;it;!;iffftLfi;. .,,,:,,;i!,:,: +Gftffft!i!!;,,;t!;:;!:;!!;,.. .;, .!C!ti:!.,;,:;i:,.;LL;,. ::..,i#L;;;:::,,::::,,,,,,,,,::;;;;!!!;;;:;,,,....,,. ..., , +L!;!!;tfi!!i;;!;;;;!i!;:,,it:. ;: .iG,,:.,,: ,f!,,:!C0Gt;:, ..,,;i#t.. ...... ....,:;:;!ittfLff!;:,,,:;;!;.  +f!;!!!!iftffiifCLttLLCf!;:!Gf. :!. ,:,..... :,it!::!f8##8Gt!!;..,!tftfft:,..,::::. .,,;!;:;;::;iti!!!!!:!::....,,,,,,,  +LiifLLtiitLLC8###@CCLti!;;;!i: ,t, ...;:,: ,,,:!i,,:!C###@8L!,,@########L;:;::,,,:::;t!;;::;;:,,::,........ .,... +f!;!!;;;;;fLC####GfCt!;it;;!t: .;. .,...,. , .,;.,:!L:.,;!ii!;:,,i@########!!;;;:::!ii!:::,,::,,,,,,,,:,,....,:;;;;;::,. . +!:,,,:,,,:;;fCffii!!;:;;;;:;f!. .. :. ,;;, . i0C;. ..,;..,:;::;;!;!iitf!;::;:::,,,:;:,,,:,,;!ii;;i;!itC080080Gf!:,.. +;:,::,,,,,,,:!ti;::::;!i::i!!f, .. ;08i, ..,:;;:...,,..,,:,;:,. . ..:i::!:,:::::::::,,,,...,:!tiittttifCCLLCGG00Ct!: +;:;,,::;:;;;!:!Gf,,,::::t!;!;!, ::;t!, ,iLCftiftLtLfiiL!iifLtiiiLtGG@fLCtL!;;;;!i!!!!;;!;;!!:,,,,,,,,,.,,,::;;;;;!!!;;;!!i!!i;, +!:,,.,ttittt!iiti:;:.,,,:!!,,,, i###8:.!##@@8@@@@@8@8@@888@@888@@@@#####@@@88888888Cft;:;::,,,,,,,::::::,,.,,,,,,::,,,.,:,,,,.. +!:,,,,,:::;:;itit!;f;,..,,,,..;:.:0f;:..GGi!ii!!!!!!!!!!!!!!!!!!!!!!!!ifti!!!!!!tti!;!!fLiii!;:;::i;::;;::,::,,,,;::,,,,,..... . +:,,::;;;::;:,,,:,,,:Li,,,,,,,,,ti:,. .::,..:,,,:, ,, .::, ,, ,C8CLCftttt!!!!;:::::::,::::::,,,::,,,,,,: +,.;i!ffft;!!,.....,,:C:,;;::;,,,tL::,,,.,,;, .,:00L!!;;;:. !; tG! ,,. . .,::::!tfttttti;;!;;;;;:,,,,:::,,,;;::;;:: +;,:::::;::::,:;,.::,:Gf,,:::,,:.,ii:;!;,.:,... :fCL@#####L. :t, ,;;, ,:, :L, ;: .. .,,,:::!!ii;:,,,,,,...,,,,,,:,,,,,: +;.,;,,::,::::,::,,!:tCL:,,Cf:,,. ...... .. ;##########. !C, .CC. .:: :!,. ,i;::. .,::;;!;;:,,,,,,.,;,,,..,.,: +:,,,:t!;i!::,,::;;itft;;;:!0t,,,,. :, .:;i!;;!!!;. ... .::. ... .:!i,.,iGCi:,,. .:;iffLLi;;::;;:;!;,,,,::,: +:,:i;:;!!;;;;tLLLfiiiiiitii0i!!:;: . ,;! .!;:: .,,,. .tLCGLi!;:. ,,:!;;!!;!!;;!;;;;;;;:: ;!:,. . .,. ..,;!,t0it; , :t.tLt; ::..,.,, . :,,,;:;:;;;;,,,,,,.:i,i;,,,:!; ,!!,!i,,,,,,,,:;:;:,,,,:::;;;!it +i0::,,,:!t, ;0i;0#!,.:::.iL!!i, ,... , :..:::,.,. ..,,,,,:,:;tf:;C;:itf!!:..::!L:.....,,,,,:,..,:fiff!tfif +fi:,G0i:;:. . ..,,. ,L8t!G8:.;:,;t8t,.. ... .,,f0Gt::,..:;;!;::!fG!:,fL:.,::;;;::,:C0;,.. .,,..;:..,!t;;;;;;;;! + . ,f@8!:,.,,.,. .,:;fLi#t::;t88!,.:,,....,,.,, . .,:!.;0tC;;;,,:,,,,;tf!:t:,!!;:::;;!tLf!:fi,.,..,,,.,:,.:!;:::::,;::i + .;it!!,,,. . ;G, .:CC#;;08t:, .... . ... ;0t,.,,:.:;,..,:,;;::;;:::,;fCiti:,,:::,,,. .::::,,:,;;!!!:ii;,;i!t + ,;;i;,, !#t. ,;LC!i;,.. ... ........:,;L;,;. ,!;:;tLi:::!tft::!;:;::,. . .,:, ,:,..:ifLiLLCi!;i!iitGC +.;!:.. .;i: :@#!. .,!f:....,..,.. , ,:,:.;..!;::.,:.,;!LCtCt;:;!;::!,,tC!i: ...... ...,:!CLtiifttii!!!;:;i +,;t;.,.. .... .;f@#i,:fi,,. . .,,,. . .,::::,;C;i:,:L#G;;;:,...,.. .iftC:.:...,. .....:, .,.,fGt!::ffGG0CL!!,,:i +!;:,. ,;, :,.. ,C;t##ti:,,,......,,,,.:,,.,,;fftt!!tGiL.;##i;,.,,......,,,,,;!::,,,,,,,:::;,.,,..,,;ti;,,::!;!ii;;;;;!t +CLCCt!;;:,. ..:t;;Li:.. ....:,;,;.,,tGifti!iii!!G8i!!,;@ttL;::;;,,::,:!i;,!,!!;;;;;,,:;;,,,,,.,:!;!!!;:,,,,,,,,:!i!iC +0CG####@Ci:, .ftif:::,,,,,,,,,,:::,,.:CGt0Lffffft;LffLf,,:i@G;,,:;:::,:::,,:,,,,,,,,,,.........,it;!ffLi;!i!t!:;!!;;!if +08tf0fCGLLG:!::. .,0@L;!Li!!!!!!!!!;!!;,;:Liii!;;;;;::i0C#t ,G0i:::;ii!;:!t:.,,:....,:;:,,..,,,,,:tL;!LLi!;;ffLGt;!fi!;!Cf +fi!!!!!!itLttGi!, .,:,.;@f:,::,,,::::::,,,,,;:!G!;::::::::C##@;,,i#0!;::!;;;::;;i;:f:;:..,:!;,..::!;:!ff!!!fiii;;iiii!;it!;;;iL +L!;;LGi;ti!GLi!;t:.:. ,!L:.,:,,.,::;,,....,:;ifL!i!ii!ft!;tL!,:LC80!;!!;;:;::,:,,;::;;::..,,. .,,::,::::;;;;;:;Cfit:,:::!;;CG +0fi!f8Ctt!;!:,:i;. .fLi!!tt;:,,.,,,,,;!!ttti;;:;:,,,,,,;;:,;8CGt::,,,,,:t!...;;!t;,,,:;t!,..,::;;,,:::!ifC!:tiiii!!;;;;;fGC +@CtiiLCitt;.,:,,,. .tfLi;;:,,.. ,ii;;!ft!;;;;!;:,,:!;,f0GC,:8#i;;;;;:!Ci!;;!;:t00i,,:tGi:,::ii,,:;i!,:itCG;,:!!Ltt0t!iiitiL +#8fi!tGii8!,,. .;,,,... .;;!t, .,:,,.:i;::::::!iC0CGL!i@8!,!Lti,,tCifi!CGftLLi;tti;;!!:,:!i;:,.,:,,,::,::,:;;!;:!!;ti!!ii!!!Lf!i +@CLLftCftf0t::,....:!;...;;:G;.::::,,,,:,:,,,;C08GtiiC@i:. .. ,,::;;!i!;;!;;;!;;;;:,,,:::;;:::,.::,.,,;!!::,!i;;!;:titLi;t;:i +#0GGCfC#ttffff!!!:.... .!!:it.,,,:,.. .::::::!i!;;!GG!:::;;!!;;;;i: .:. ..,:;:::::;!!;;!!;ifGLti,,;i!;:::tt!::;;;ffi;tt;!;;!;;! +####0CCGGCLtitC00t, .,.:,,,:,,,. ...,;;;,,,,,!@0CLCfCCC88888fGfi;,...:fGf!;:,,!i!;!;;:;;!!;:,::;L0;:;;;;,.,!:;;:;:,,,:iiC!! +@00##@0LLLffGLLCLi;!;. ,i, .. ., .;.,,,:;:,..:i@##8CttttftffGG@#8t:,!fti;:,,,:::,,,,,,,,,:;:.,,:tf!:!;,,:!!!!;:;!ii;:!iti;i +8CC000@8L088###8#8C##L:. .t!!t, ,,,:,,;:,:, ,,.. :;!t8Littti;;;!tfLG#G!;:,,,:!!;:,,,,::::;:;;;,,,,,:,,:i!;,;CGif!;:f00f;;tC::t +#80CGC#0C8@#@@@80##@###f,,i0@0!,,;f;,i;!f;;;..:, .:!!;;iftiii!ifftf0C:.,.,C0CG!:;!!!tf;.,;;. ,,.,:!!;,;!i!::.,tf!:;;!;:,: +#@G80LG8C08C88#@LC##GC##@:,;iGL!ii:;;,:::;,,;.,:;:. !,,::::;!ffi!iC0LfCf!: .:;;:,..,,,:,,.,,,,,,.. .,,...;!fi,,::::::;:,::. +GtittLfGfttfCCCCGtC#CfC#f;;..:i:.,;,:;,;,...:,,L0f;. ,,::,,,,,,:;!iif8@Ctf0;.,,.,,,,::,,,,;!!!;!tti;!:,. .,:;!;!;!tt!:!;!f! +Ci;:;;!!;::::t!!!;i80C8GL,.: ,i, if;!f:!,.:,!:;ffi,,:.,::;:,,. .,,:;!;,t#t:i;::;;;!!;:::!i:;::!!;;!i!:,,,,... ...,.,:;:,,.:;; +Ci;;;;!!;:!;;:;!::;;;!!!;,,, .;: .:G!;t:!,,i,:,:;;i:,,;fL;,. ,..!##!:,..,,,,,....,.,...,,,:;!!!ittt!,,,,,..,.. ,: +L!!;;;;!!;!!!;;;;i!!f!;::ff: :!. .:G,.:.,,;..:ft!;:,::iGCt;,. ,,.:t##, ..... .,,,,::,:itfLLLLft!:,,.,::;;:,. . +f!!!!!ttifitiifCCLfGCt!;;iGi. :t, ,,,,.... .!:!Lfi::,:tC@@Gfi!;;; .:;tffff; .::;:,..,,,:!;:;;::;;!;;;;;::,:,, ......,,...  +CffLiii!iffLCG@##CfCLfi!t;!t: ,t, ...:;,, ::::;i!::,:;f8###@8Ct:;#######CLi;::::;!ii;:::,:;;,,,,..... .,,,,,.. .. .. +L;;;;:::;!LfL####GfCfifi;;!t:..;, .:.,.... , ,!. .::!L:.,;!tfLfti:;##########!!!;!i!;::,:,,:::,,,,::;;::::;!tLLLLfi!!;:, . +!::::::::;!ifLGGLftiti;;::;tt, ., .:... ,,.. ... ,f8Gi,,,,,:::::;::!!!;!iii;it;:;::::::,:;;:,,,:,:iff!iftittL08000888Gt;,,., +!:;:::,,,:;;;;;!;;;;!i!::!;iC: , ,,,,,.. ,, ,:.,;ft!;;;;;!ii;:;:::: . .;,:!;;;;::::::::,,,,,,::;;;!ittttffftttfLCCLt:,, +!;,,:;;;!;it:::::,,:::ff;:;i;, ,:. .... ....:::,:,,.. ..,,,:::!!;,:f::, ... ,,:;;:;;;;;;:,,,,,,,::,,...,:::::::::,,::;;;:,.. +;,. ,Lfftttiiit;:,,,,,:tL;,,,;..;, ., ,!;,,.,ff0G;,,,...,.......fG,,:!@#!,;:i,,;!ft!!!!;:::;;,,:;:::;:,,,.,,..,,,,,,..,..,. . +;:..,:;:;;;!tftf!:,..,.:Ct,..:i,., ,,,,GC,,.;L!i!,,:;;;;;;;;;;:::;,;L!0#0t:;;;ifi:::!0CiLft!!!;!!;:;;:,,,:,,:,:::,,,,,,,..,..,: +::::;t;::i:::::::,::,,,::::,.,!t:,. ..:;;:,,;::::,............. ,::;it!,. ..,:, ,tfCCLfCLft!!i!;;;;;:::,::::::,,,;;::::,::; +,!!;ttti;!i,,,,,,,,,:,:::,::,::;C!,:,:;;!;!i..!itC!, :L..LC. ,;, ,. ,,:::;!;iffft!ii;:::;::,..,,,,,,;:::,:,,: +,:::,::::::::;:,:;!:::,,,,,,.i@;:i;:;;,,,,::,.,;iftiffftti,. .,,. :::.:;. ,Ct :;. ,,. .,,::::::::::,,,....,,,,,,...,,,; +,,;,,::::;:;:;;,,f!!i!::!;,..i#;.:,,.. .,::,,.:##G#######0. .CC. ;L: .,,, .i!, .ift;:,. ..,ttti;::,,:,,;;,,,..,..,: +:,,:ti;!!::::::;:;i!!!!i!i!,,f0;i;0; .ii;!, :@###Lf0@Gf;. .:,. ,,. .!;,., ,:i;,,:f0GLt;,.....:iiLL!:;:::::;;,,,,,::.,: +::i!:;!!;;;;!ii!;;ittitttii!!G0:::C8! ,. :ii!;;: :,,,. :tLGCfii!;,. .,::!;;!!;;;;;!;:;:::: : ,,:. . ,f,;:0L;, ,,.,iii::Cti. . .:,. ,,,. .:;,,..,,:,,. .,,,.,!i ;i:;;!;;, .!;,t,,,,:::::;:,,,,;iitiitftLCCti +:;!:,,!; .L8t;!@!,:,;;.,;iL;!,. . . . ,..,::;,...,:;ii!:;Cf:.:t;,;:;,,,.,,:!G!,:,,:,.,;,,,:ii;;i!;!;::;;!f +,8#G;:,. ,. . :t0L;!@;:!:,:!L8t:... . ... .:;.i08C:.:!:,:;;tGii:.!C:,:;:;::!i!,L0i!;,,,..:;:,;i!;::;:::,,,,,i0 +,;C8f;;,.,... .:i;,. .,,,,;Cit@!;!iL8G;,.,,,,,..,,.,, .. ,;G, :GLL!.....:ii::::;,;!i;ifLtiti:,,:::,,,,,..,,.::!!;;t!,,!!!!;!tL + .:iti;:::,,,:0#@Li:,,0t. .,!i@C!CLf;:. .... ..........f8t, ,,:.,,:;!i;;!::!!;;itt;;;::,:,.. ::...,;!i;tfLiiit::iCCLLLLf + .,,;i,,, ,:;:;fGf;C#i. ,!0i::,... . . .,..,i..;t:., .,;iCGf!!tft:,,:fi!!, .,.. ...,,iGCfi!ii!!!;!!;!!!iiit +:,,, .:; .,,:i##!. .,it, ,..,.,... .,.,. .:t:::;,.:,!LLi;;:,,,:,. :G;GC. . ..:.....:fCt!;;!!tfLfi!;,,,,;f;f +!. .. ... ,tf##t:it;,,....,.,.,,. ..,::::,:t0!L0t,,Lf!;:,,........ ,:i;:, ...,,,,:..,,,:,,;Cf!:,!i!;tf!;;;;;:;ttii +8L, :;, ::.. ;G!G##Ci:,::::,,,:,;.,,:;::itLCi;CCiLii#C::C!;i!!::::::;;,,,,,.,..,,..::;:....,:;!;!i!;:::,,:::,;tttttGfCC +880;:,.. ,;!0!;!;:,. .......,,,. :G8iGCffi;!88iit!t8;,Ct::;;:::,,:!;::,;,:;,.,:..,,......,tf;!itLi!!!!i!::;;!iiittiit +CG8#C;;::,, .Gf@!.,,,,,,,,,,...::...;@L!fti!;,;tft08i#8:,!i!:;i!!;,;i:,..:,,,,,:::,..,,,,,,:it!!Lt!;:!fLCC;;!t!;iLt;!i:i +t!!L0LGG;Ct!, .:#8!.;!,,;;;::,,,.....:;ti:,,,,..,G8iiL#L:.,ti;;;;!;::;ii;::,!...:!i!:,,;;i;:;tf!!tCi;,,!!!i!;!Lt;;;;i!;:,; +L!;:!LGGffG;;:. .,:: .!8;..,...,,,,,.... ,,:ff::::,,.:!tf##fi, ;Gfiii!!!:::;!!::t:,,,.,,,....,::,,:;::!;:;,:;L;ii::;:;!;!Li:::i +0!!i!!;t0i:::t;.,.. :fi:,;;:,,,,,,... .:L!;itt!,:::!#GL##; ;ti:,,,,:!:..,.,i!;,:,,,:,. .,,;:..:,:!!!i::fi!!!;;;::;;CCi!!!t +8t!iii;!GL,:!:. . ;GLttfGf!,......... .,!:::;;:;:!G#i;i##! ,C!...:!;!;::,:.,Gt,:!tLft:,,:;,,:;!::!ifCC:,;!ififL!!i;tfiiifLC +8C!tft0!;#;.... :LiL;;:;:,....,..,.,;;;;ti;;::;t##i:;!tf; :;!tt;iGf;;ff!:,:!:,;;!ft:,:;,..:,,;:,!!!t!::;tLi!!!;;;tfi;:;iti +88titCG!:!i. ,,.::,, ,f;;i, .::;:,;,....:GGCLLf!::!@#L!:.;8t;..,i;LGt;;!!!;;;;:;,...,,:;:,::,,:,,,,,:!;:,:it;;!:;!!!i;it;:,,tGt +@0CiifffL!!!!;,..:;. ,f:,C:.,,,:,,,,,,,,;fCLf;:::!#0!,,,,!C#; ;,:::,. ,:::::;;;;::;;:!tftii;;i;,,,;!tt:::!!!tt::Ctfi;;!;:,:!i! +@GCCfCCttGCG8t,...,,,.,i:,!;.,,,,....:!;:::::;;!!L@Li!;;tft@f!;!;, .,ii!iiitti!i!;:;;!;;:,:;::;,:;i!i,,!;!t;;!:;::;!tL:;itCL +##8@GCCCLfffti!!;,:0!,:...;,.,,.,,. .,,:,,: :@8GLLC88CLftCGG8@@0i!;:.,:;:::::::;:,:,,,.,,,,,.:;;!!,;i,.. .;,:,,:;!:::tit!;;!fif +#8###GL@@GCGCtL##Ci!LL ...,!, . .: .!.;!:!,,i#000CGCCLfiiiittLLG@@@Gi;:;;::;!:,,. ....,,,:;,,;;;;:!;: .:;fGG;;!Ci,!itL!i +#00@0G@0@#8########L!!,,f::t:..,,.:,:!;:t:,;iL!i!i!!;!Cffft!!;!ttfLL0@L!08;;G@f..,,,:;:,,:;::;itit!:,...,,::,...;GGt;;!i;,:;iift +#8GGC8#CG8@@0##@8####i,!i;:,:!;:.:;i!it!!!,,;itt!!:,,:!;;;itfi!!fCtitfGCt!,,;!;::!!tffi:!iifti;;;:,.. ,;!ttit:,,;!i;;;;::::,,,,; +#0CGLCGCC####C@#LLGCt;,:,.. .,:,..,,::,L8f!,!L@#GLt!!;,..,,:;;;iitCCtttiC:,...,,:::;;;;;;;;!!;;:::,. .,,,:;!:;;!iti;:!:it;:,,, +CtttiitCtfLCLtf8@t@f;:, ., .,,,:,;:!L!:;;ii!!:;@0, :,....,,:::;i@Gfft0! ...... ..,!::::;!!ittt!. ... ..,,,,:;!::,,;!!!;,; +C!!;::;;;;:,:!tt;iC@0t:,,..,:!::ii!ititt!;:iff!::.,;;, .. ..,,..,:,,!Ct:i#i,,,;:::.....,,,,,,,::;!!;;!it!:,,...,,... .,::.., +Ci;!:::;i!::::;!;!iii!!;:,::::!!;:;i;:;::,,,:;;:,..,.,!;;:,.. . ...!@0,..,,.. .,..,:,,;ittffffft:,,.,:;!;,.  +C!;!;;!;!iti;;;t0Git!iCi:,,:;::,. .:. . .,, ;iLi;:,,,!G0GLfi!;:..:, :iL: .,:. .,,;!::;:::;ii!;;;;;::::...,,..,,,.. .  +Cittiiiitf#8ftfCGLLfttti;;,.,i, ..,,..... .;:;LGt;::,;iC8####8f!t, .!if#0Lt!:,,:::;t;::::;;:,,,,,... ..,,.. .... . . +L!;;;!!itfG0CC8##Cf00Ct!if;,,!; .,.:;:,.,!!, ,,,::;;:::,:!tG###8L;, :########!,;!i!!::,,,:::,,,,,:;;:,:::;iffftii!!;:. ., +i:::::;ifCffC####GLLCLt!iLi,.:;. :,,,,..!t;. . ,:!GL:,,:;!iii;:,.:;ittttti;;::;:::,,,:;;:,::::!tfi;tftttL0@808888Ct;,,....., +i;::::;!!tffLG80GLLLti!!!LL:..:. .,:,,,.,,.. .!CCt!!!;!!!!;;;.,,: .i,:;;:::::::::,,,,,,,:;;;!ittiifLfttffLGCLt;,,,,:: +i;:,,:;;!!!!iiitiitti;;!;!t:. ., ,:,,....,:;i!,,::,,::;::,,:::,:!!:.:!:,.. . ,,.,;:!!;;!;:,,,,,,,,,,,,,,:::::::::,,::;;;:,.. .. +;;;;!iitfi;;;;::;;:;;!:::,,, .::.......,!08###tGGCiti!!L;!;!t;;!8G!!!tG#i!L;;:;;!!ii!;:::::,,,::::::,,,.,,..,,,,,...,.,. .,,,, +;:fLfftt!!itti:,,,,,,,::,.,!,,;!. ,,. ,!8#8Ctf8@GfffCLLLfffftitfGGiGC!##0fLffGLLCG08Gttti!;;:;i::;!:,,::,,:,;::,,.,,,,.,..,:!!!; +;;;!!!!;;;ii!!,,,,,..,,,,..,t!,,. . ,fL;,,,:;:,,:::::::::,:,::,:;;::!;::;;;!i;;!iLLCGLLLff!!i!;;;;;:::::::;::,,,;;::::,::;;:: +!iiti;!f:::,,,,,:::,,:;:::,,,!i:,...,:iit;::::::,. ,,,:.,,:::;;:;;;:,,:;;;;;;;;;i!!;!itiffft!!i;;::;:,,,,,:,,,:;:::,,,,,,,; +i!ti!;:;!::::,,:::,,:,,,::,,.,!L;;;::####8,f0it0ftfLftfCiLCfCiGC!C0CG000Gf;CG00GL00CGiC:....,,:::::::::::,,,..,.,:,,,,,,..,:::,: +;:,::,,,::;;;,:ii;:;:,,,,,,:, .,:,,.:L88#i,:0Ci#########G;;f@Cf::;ii!;;;;:,:;!!;:;ii;;:ii;;:. ,!tti!::,,:,,;;,,..,...,,::; +!,,!:::::::;::,ii!ii!!!;;,,,,, ..,,. :;i!@###C8##f: .:::. !L. .:,,,,. :!,..:C0GLt;,. .!ifCi;!;:::,::,,,,,:..,,,:; +;:!!;!!;::::::::!!!!!iiit!;;:,:. . .. .:;;,..,,. ,,. .!tfiii! ,:,,.,:!C##8t!;:,,,,,:,,!;:!;:,,,,;,,:,.:,,:; +ii:;!!;:;;;!i!;;;itttttiii!i!;;;: ... .., !, .;;; ,!!i!;!!, :t!!i;:,.;ifffLfiii,. ,:!!!i!!!!;;;::;,:: \ No newline at end of file diff --git a/assets/animations/hakari_dance.ans b/assets/animations/hakari_dance.ans new file mode 100644 index 0000000..15618ea --- /dev/null +++ b/assets/animations/hakari_dance.ans @@ -0,0 +1,8471 @@ + HOLD UP, WAIT + ============================================================================== +O. : : ; ; ;; : : , : : : : , / , ,  +mv ; ; ; ; ; : :: , : : : : : : :: : , ] X +mc + ; ; ; ; : : : + , : : : : : : : :, |  +U.+ ; ; ; : : : : : : ; : : : : : = {, :: >x@/ :#M  +z.+ ;; ; ; : : : : , : ;; ; : : : , > : : :: : +.+ ; ; ;; : : : : + : : M|{] :: : , : : / # : : : : ++ ; : : : :: : : : : ] / ; ; :: ; ; : W : : : :  +: : :] : : : , :: : =#M| , : : <= {] ; ; ; ;; : @: : : : :  + : ) > / : : : ; : ; ;; : : : ,\ x (: : ; : /(}, :: XW : : :  + ; ] : : ; ; ; ; : :: : : } + , : : W [ x@ } :: : :  + ; x@ : : ; : : ; + : :@ .<=# :: : : : > W\ ; ::  + ; ,, , , =: : ; / *..{]+ : @ , : : : : +XW\ : ;  + ; : ) , ,, : ; | ] X \)[ /(} # [ : :: : : ; : ; ; + ; : : : : , ( : + ( |zn XW #: : : ;: ; X @ : ; ;  +; : ; : : / : \ : :,# |{ W\)..X*X(} ] XW [ : }<= |{] : x@ : : :  +: : : : : : ( , , >x@/cqv..* z~ XW\)[>x@ }< : ] /(, >: : :  + : :, , : x: : < #Mun*z0Yzn >x@/. ;#. + : + M ,:  + , : : : , : \ *vvQZv. x+ n. +..[>x@ , :  + : ( , M|{: : :, , ) ,( <.+ .{JcJu n.. cn}<= | , @ , , @  + ; ; ; ; : : , , , : ] X* + .C.*. |{]+ : , , , : { W, ,  + ; ; ; ; : : , , + :: (.uux...zn ..X[ , , : : < : :: : : , , +;; (}<= ; ; : : , : | ]+QuncX.x.nYc<=# : : : : : : : : :: : :  +; { :; ; : : ; ;> _/U.uuvuuuuvX : : : : : : | : : : ;;  + [ ( : ; X >x : M : ; | ]CQu*....*/( : :: : : : : \ > : : , :  + { : ; : = :, : : M ; > @cv..xxnvzJ(-W\ ; : ,: : : , : W ) : :  + : : ; ; : : :: ; ;#qUhao#dWWMM&#oLc<; :+ : , :: :+ : M :  + : : ; ; , : : : / < ;; ; um&@%W8#&W*####*ZuW\ , , +X: :@ , , ,  + ,: : ; ; : , : : : : +(YxWMooo*o*M*#MM##odX<=# , / : ] (} : : + : : :: ; : (, : : , , |{ZoWM**oohkbbpp#*abbhbZW\) , ; : |{ : :: +; : , : :: ; ; ; , , \)0zdkkahkhkddqZOwMabkdmmwdJ-=, [ : : W : : :  +; ; : : : ; ;; : : : (zkbppqpbpppmOY>x@/(}<xQwppmOZW\ ,@ ( : : : , , : ;  + ; : : x ( ; ; : :: : uYLCOwwmmz(}< \~xU0OCC}< : : :: : =# ] : ;  + ; ; : + : : : : +.x +xvU0Cv#>| =#M|0UUJW, : : : X :  + ;; ; : ) : , + .x.{]+X (} = z0CCU} : : : @ , :  + ; ; ;; :=#M : : {]+XW+)[> ( : : :: > : ;#YZZpn : : :# +X )[>x@/ ; : +.+ : ; ; :: : , , , ; : : : :: )[>x@/(: : x : : ; : +Cx# : : ; : ; ;: @ } =#M|{: W )[ + ; : : : <=, X ; @/(}< # ; ; : ;  +bmU)[>x@/(} ; XW\) *... + M|{]+XW\)[>x (}<..xuvun.*\)[>; ; : ]+XW\)[>x@/ <=#x|{]+XW\)[>x@ x* . >x] WuX +&W#hkbZZOO0LJXvuuucYLQQQQQLCUYUUYXzXYcnunxxuvvczzXUJJJJJUUYYYXcvnuvunx\)[>xXCCCJCCLLCCCQQ00QQQQQCYYCQLO{]< -~, x~/(<> +B%8&WMM#oooahhkbdpddddpppqqqwwwZmmZ0QQLQQQQQ00000ZmmZZ0Lc*zL0ZZmmwwmmwwwwwqwqqqwwqqqppqpqqqqqppqqqqqpppwOOdpmL|udoWdbw + >>> I JUST HIT THE JACKPOT <<< +  HOLD UP, WAIT + ============================================================================== +whc* ; ; ;; ; : : : , : : :: : : : : ,  +mpn ; ; : ; :: : : : : : : :: : \ x@ = : +XW\ [>x (}  +ZkU + ; : : : : :: : ( < | : : : ; : , X : : : : , +UQx ; ; : : : : : : { : : ,} #M : : : : +XW @ :: : : : : +** ; ;@ : : , : : : / :: > : ; : : : : : :: : :  ++ : =#M { : : , , : ( : :x@/ M| ; ; : : , : / : : : ::  + :] : ,, : : : : ; :)[ : : :+X > :: ; ; : >x@/ < :M + : : :  + ; x #: : ; ;; : : ; : : : : ( M|{] : [>x (: /( : : :  + ; | , : ;+ : :: ; : <=: : , , W ; :  + ; (, , ) >x : : , :: : \ : M, W : : :]+X / : :  + ;; : {: : | : @, # , , : | : : : : : / { :: : ; + : : :: : : ; x@ < + :, > : ; : : : :] > : : ;; +: : : : ) : , ( + x{ )[ : ],: ; ; : : :x #M : ;  +: , , : < , , = + W+ [ /(}nv#M|: \) / : :;+XW,)[> : :# : :  + : , =#M| ]: )[>x , :: (} =# |{X.*X.Xz> / =#M| +: > | : +X:  + : # : : , :]+ .\)zwx*. cx# XW + >x , (  + :: ( : : , , :x vc.cJ+ x.*z\)[>x / + =#M + , ,@  + : } M|;:+XW\ : : : ,/ , _.+ .cz0C.v *x .unM| ++XW ] , , : ,  + ; X \ ; ; :: : : ( X: >.. *.LXQ*.x +.xz>x < M : : : , ,  + ; : ; ; : : :: @: #M.c.* . nU.x.+ uz=# , : :: : : : : : , [> +; = { ; ; @ : : > : W )[uJXvn.*c. .xz.X: , : : : :: : # , , , :  + : ; | : :M : :;} =xQncYz.. uXcU@ : : : : : : :W ,, @ , ;  + , ; >x : : > = ; X \vLxvvvnuvn.X|; : : : : : : , +X :: :  + ]+ : ;; ; ] ): : X ; ;} =CQu...*...~: : : :W x@ : : (: :  + : : ; ; :: : > @ : : _ \XznnuvvzU0v1|{] , ( : : x + :  + : : : : : X :: : : : : Qko*#&*oBWWW8#kqx@/( # , , : :{ , : : + : : : : : : ; : , : | oB@$88%W%&W&&&W#wY{]+ , / =: :: : # : : +: : : :x , ; ; : @ = :: )[n8W$&W&&8&88&8%%8WMhX@/( : : : : ,: : : :  +: :: : :# : ; : : : : }wd&W%888&&WMMW#W@8W####dt]: : : : : , : :: ;  + ; : :W , : ; : : : {]0W#MW&&MW&8%8Mbda*kW&#oao*C~ : : : : (}< #M + : ;  + ; ; : , )[ : : : \)uqM%###*MWWW#bXXW\)[>x@rZaMokaw} ; : : : { : :  + ; ; ; ] : # ,: : : /(QoM#**##&&obQx>x@ : :]1Xdbbbdx; :: : XW\) , :  + : ; ; @/ : { , x ,M|LCvLqkaoMMLc(}< : : : (bpqmm| : : @ |{ , :  + : : ; : : : \qhmv*Jdap=#M|: : : : cLdwwZOx : : ) :: : : : + ; :: ; : : : , [ (*MW#MWqn+X : :: : : : @u#o*#OM: : [ : , ,  +; : ; :: : : : ; {wW#8%ov> , ( ; ; : :; <=# ]uYZZ) : : { :  + . ; ; : : :: ; X..) +x@v*0< M|{]+Xucccvvn/(}<=#M|xunvULCCz?@ =#M* ]+XW\)[>x@ : : :\) ; / +YOX{] ; : : ; *.xuccC[ =#?|YLYLO000mwwqppppppqwZQC0ZmwqppdpppppdpOv(-W\uvzXzcvux=#M|{]+XW\ ; , : .X +mWhdQu/(}xnxM|{]+XW\)[nvzXXYvcXUJCJLL0Owqmmqppdbkkkhaaaaaaaaoooooooo******ooahbpqZY(}xJLQOOOOOO000QLCUYu< #M|{] XW1>  +qBWM*akbbbdpqwmZOOO0QLLLLCJUXXUJCCLLQOZmwpdbkkaoo***#####M#MMMMMMWWW&&&&&&&WWM#*abqmmwqdddbbbddddddppppp0QmqQO\|Zp*dqw + >>> I JUST HIT THE JACKPOT <<< +  HOLD UP, WAIT + ============================================================================== +B&kLn + ++ : : : : : : : : : / : : : : : : : : : : +8*Ox ; ;{]+ , :: : , , : } : : := ]+XW: : : : : : : : : : +WM*pC* )[ , : :: : : ; : , : : , ,,W\ x : < {] , : : :  +oakqUx@ : ; ; : :; ; : { W\ : : : :  +dqLX#M > : : ; : ; ; ;; [ = : ] : :  +OUnW\ : + \) : : ; : :/(}< : @ {,+XW\: @/(} : {] :: :  +n@ + \ : , : ) : : :| : :| , : : : : @/ { : :  + ; ,) x@/ : X : , # : ] : > ,: ; ; : : x : :  + ; , : : : ,, , : M| : : :: : : [ { ,\ : + ; : W )[ : #M : , : ; : #M| , : @/ = ; +; : : : : : : / , # :]+ :=# \  +: :: | XW : : : : , ]+X >x :: : ]+XW @/  + : : ;; : : : , ) ; / : M ;@ }<  + ; : ; : ,, : : = ,| : \ [>x /(} M {]++W\),,x = , @  + |{] W\ ; : #M X : :: : > : <= *x+ @/ <= | ,, , , , > M  + } ; + < : + +X +x / #M {]+ \ : , : :: : W\  + : X ; @ : : + W [> ; ...* |{]+XW\*[> , : : : : ,, ( : + X : ; {] : : + x < +.u.** n * }< # : : , : : W : |{ :  +:/ : ;; ; : : # ; X ; .nn ..* {, W : , , : : }< , , : :  + { XW\)[: ; ; :: , : # ; / + + u ; [ x : ,, : ) : : : : : :  + : : ; ; : : :: )[ , : | ]; \ + ..+ <=# + : : ,: : : : : : :  + : : ; ; : ; ; : , x ( +. *..XW\ : : : : :: : : : :  + ; : : : : ; ; : W\ x :: ..+ ...*....(}< :| : : ; : : : :: : :  + ; :: : : : : X : : : : [n *zn ** *.xXW\ , ; : : : : | \) :: ; + ; : : :: : W ( : : : , =#M..u+xnuzXQLZmmCn=#, ; : : : : = ; ; +; ; : : : : : : qo#&W8o*B*o#ok*oOu)[ ;; : : : : = W : ;  +:|{ ; : ; : , :: ; : <=Y@M*#M##M#MW&#*##hJ# ; ; :: }< M|{] ,\ ( : :  + ; ; ; : : , : :: :# {]+X>h%MWWMWMM##M%&M#M*#kv[ ; : ]+ #M|{ : :  + #: ; ; : : : ) : : ) >*/do8&&&&8&&8WM&$MM#*ooakc# ; : x M|{ :: : :  + ; ;; ; : : : =#M| : , : <=L-qWMM8&%8#hOUUwkW8&#o**oakz): ; :M , : : : ::  + : ; : ;; : ; : : : : ]+\MMWWMW&#pC<=#M :]+XW0*W*#**aaJ= : , : : :  + ]+ ; : : ; ;; ; ; : :-ub&MW##k0|{]; : :}<L*ooooahx : : +: : , : : + ; : ; ; ; ;; : / <=pa*b0XOW\) : : : W\Zp*ahhY} : :: X , = : : ;  +#M| : ; =: ; ; ; ,|{1{mpqqU_x@/( : : \ @ {QMooakUXW : + )[, @ : :  +\)[ , ; | \ ; ; ; W []U0C0}<= W : , WO%W%&v/ = ) , :  +X<=#M :: [ : ; : / <=.* .] : [ :: +XW\)[: / ;<Xqqbc] [: : , ::  +kq0Yv[>x@/(}<=#M|{]+X ; : : | W ?n ; =#M ]+XW ; >x@/x}<=#M|xvXnXCvx.x@/(}<=# |{]+XW\)[>x@/(} # | ;  +&W#**ahppwO0QQLCCJJJUXccv#M|{]+XW\)x>x@>+}< #xvu]+XW\x[>x@/nvczXC0ZmmwqpddbbkbbbkbOfxQUUJUYzzzvuczzzccc|+. * n>: /.x +$B%8&&WM###**ooaakhhhhhkkbdppppqwmZZwpqwmZ0Zmwwwwwwwwwwwwwqqpdbbhhhaaooo*##MMMM#*aaoadppppwwmmmmZOOO00m[>> +< #M|{>; +@@@$$$B%%%88&&WWMMMM#####*ooaaaaaahhkhahhaahaaoaooaoooaao****#MMMW&&&&8&88%B%%%888&WWM##*ahhkkkkbbdddbbqO0qwOJ)jZdhmqO + >>> I JUST HIT THE JACKPOT <<< +  HOLD UP, WAIT + ============================================================================== +&bY..**. ; \ : : ; ; ; ; : : >: :: , : :: :  +Wqu + x@/ # : ; ; ; ; ; ; |{ : [ [ : : :  +M#bC* =#M| : :; ; : ; ; :] @ : # :: , : \ > : :  +abmv+X / : ] W :: ; : :> | : ) : : :: : M : :  +0c>x } |: : > = : X : , }<= [ : = { : : : : : : :  + ; :XW ): : X : ( <= < : : \) : , =#: : : , >x }<  + ; :: : ; >x: , M M| ] :: : : [ : :#M W : + ; : { W :: , < : W\ : : : +XW :x : W\ >: }: +: ; / : : :: @ XW )[>x@/ ; : : <=# >x / { +  +; : M| ; ; : : : ; ; : ,  + ; ; ; ; : : {]: ; ; = : \ =,M|{ , M|  + >x /( : ]+XW [>: : ,{ ( + .**...W\ : / ]+X : , } , ,, \  + < : , : x { + W\ ; x@ +}< ,: {]: , : : : : , , (:  + x@ : ,{] : | @/ }: M {.. W :/ # : : : : : , |{;  + # ; : , : :> #M {] X \ [>.X c} : ] W [: :, : : : ( M: ]+X ; : + { , [ : ; , , : := , x@ (}c=. x+ @/(}< , x:: : :+ W : : ; :  +: x : ; : , : : ,: = M ...XQcu.*x@/(}< x ] ; ) : :: : : : :  +: : \ ; : : : : ) *xJYnu..z.nvX x[ , :+ [ ; : : :: : :  + : :: : : : : : } = + ]z.c...** .(}< : , : /(}: : : : : ; ::  + : : : :: :# | : , @ # + W + x@/(. + { ; :: , : : : : : : ; :  + : : : : , :: , : : }+ |{ + [ x@ : : :: ; : : : :/( ; ;  + : : : , > , , :: : { X [ *.u= ]+ : : : :, : ,} X ; ; + ; : : : : : : , /(.+ ...*..XW, : ; : : : ,] / ; : +;; ; ; : W\ > : : , +nn * ( <= : : : ; ,W (}<=#M| : :  +; ; ;; ; : , : :=# \ >x /( .*..|ucu{W\) : = : ; >x {: : : ::  +X ; ; ; ;; : (} : #M0xqpbow***o#hwz<= :: ) : : > : : :  + : ; ; ; : :: W , , : \cYd@*WM*#M#*omY\) :; : =: : : :  +{] : ; : : : ; : :: , : (}n[*Mo**M#&8W&88&WMaJ= | + : : ( M, : : :  + ; : : ; ; ; ; ; : :: {{nh*M*M###*#*o*%WM#WM#k\)[ x : ; /, : : :  + ;; ; : : ; ; ; ; : : )[O*OhkoooMMWW8&&8@%8&Moo*ML}# : : x #M : : :: : : + : : , : ; ; ; ; :[ : }<bddqwqbho*kp0X@/]{nXJkM&W*M*n)+ : :|{ : / : : ;: + < : W x@ ;; ; ; : M|{nOwZmmpkbZL(}<=#M )[QqM#*&w+ : : , = M| + : :  + : , { : ; ;; : { W\)xmwZmmOmQ1M| ,>x@ #*|kMa&X\) > ( , , :  + : { : ; : : @/JcQqOmZn]+XW : : { :) X#Mo#cx= :: , :  + ; ; x <= ; ; : : ,| {*ohoO[: , | : ; : #c*%$kuW : : M @ :  + ;; ; M X : ; : {]+ \ [xuZkO}<: : ; : ;[tLOn> : M|{; \)[>x@ | ]+ :  +=#M|{]+XW\)[>x@/(} + , <= ;|{ + [>x@/(}<=#M+ XWx)[>x@/(}x=# ?{]+XW\nc>x@uczXcvn|{]+XW\)[>x ( *. M| +akbkhhbpwOLJUXzXXXUYXXv>x@/(}<=#M|{~(zx\)..uXUYzcvcXYYUYcvccv. @U0ZwwmwwqpdddkkkkammpwqwmZmwwwwwwwmmZZmcY0JJw|1Z{?.nwX +%%8WWWWM##**oaaahaaaahkdpppqwwmOOO0wqZZZmwpddddbbddpmQcLmwwZOzMJmphaaooo*#MWWWWWWMWWWWWWMM#***ooaaaahkM{_ +;1[ :@{t ?< +@@@$$$BB%888&WWWWWWMMWM##**ooaaaahhhaaaaoo***#####**ohdkaooaoo*o*#W&&&&88%%%%%%%B$$@$BBBBB%%88&&&&&WWWWabbMhkC\0#$%h#C + >>> I JUST HIT THE JACKPOT <<< +  HOLD UP, WAIT + ============================================================================== +ok0v* = ; \ , : : :: : @ , : : : | , :: : :  +Wqu ; +X [; @ # : : x >: : :{ XW : W\ , , : (}::  +*kZv @ : | W : : ,M : : : : X : / W  +qLv< | +X; >x@/ : :: , W: : := + W ( |  +{]+ : x ; ; ; : @ , : ; ; : + ; : ; ; ; : {] :: ; ; , + , : +;; : : ; =#M { : : @ ; ; ;; : { >x }<=#M, ]+ , , = :  +: :/ = ; X x@/( : { > ; ; ; : }<= : : : : : W , ]+X ::  + : { : }< # +: :x # ; ; ; : : : :: : ,{] , : M: X, [ : :  + \ [ ( : ; \ @: : \; ; =# : : : : : , : { \ : : : :  + ( { ; ; : : ; ) } M; +X ) : ; : { :: : : : : :  + ] [ : ; : : : < : \ = ; ; , > : : :: : : :  + ;: : : : : : : X (}<=# : ; : : = : : : ; :: : ; + ; : :: : : : : @ {n+ .)[ x (} = ;X )[ : : : : : : ; : : :: +; : : : , >, := x* * M|{]cuW\)[ < |:, : : : : : ; ; ; :  +; : , : :, /( <= M| xW )Un x.vCu=# +XW\) x : :: : : / , ; ; ;  + : : : : : :: : [u +.(<<Qzx. *v. ) @u = : : : :: | ; ; ;  + : : : \) : : : : #+* .cxcOXvn u(:<=#M*{] , : : : : ) : :: : ; ;  + :: : ; = , , : <, : \*. . *.xX*#M|{; *[ : =# : : : } # : : ;; ;  + : ; ;; : : / # , ,<. xx ; ) ; u< : +X : ; : : : ; ; + : ; ; ; :: ] , W *.zx.* =# ..+ : x < : : [ : ; : ; ; + : [> ; ; : : { , : }< Lv.nn * v*@ : M : :; : , X : ; : : ;  +: ; ; : : : , :: : :XcxYn....*...YX : [ ( ; , ( : : : :  + W : : ; ; : : {]+ ; ;; Cu*CY..*.. uX[ : : : : :: : :  + :: : : ; ; ; ; : /(} ; ]CX.n.**...*.c=#M| +,W : : ] : , :: :  + : : ::/( ; ; ; ; :# ; xohkdkb0kdkkbZbZ) | : : @/ : W : :  + : : M +: ;; ; ; : @ : MoM8#*Mb#bkkkqqO<=#M, ] [: : : , / = : :  + : : +X / ; : :: @ , : \ZpobqddkkahoohkdwC\)[ / # :: : , , : + : : @ : : : +,: : /zxOddpdqqwqppd*abqqpq0=#M: < ,: X : : +: : | )[ : : : : : : |LL00OwmqddbdqZO#kddpwmZwOc[>x@ \ : ) :  +: ;: > ; : , : : :\)JLUCLOwmOUu|{]+XW\uvYZqpqZOOcM|{]+ :@/ : | }, :  + x : # : , W ) @/(cLYJLCCX+XW\): :}<=#M|{cQZOwZY>x@ , : : : x ] :  + : ) : :, M|{ccYLc)[>x , : , x@pmOZmZQ|: : : , , X : :  + : : < : : \vvXvu/(} =# ] : : :|{vwhbdod> :; : : : ; : X  + =# : W )[ : : M (czLOO|{ + W : : : : x@pdo*## : : :: : ; : :(  +] , :} : : ]+XYc)[ = : : : @ } |{]+_t\) : }<=#M|{]+XW\)[>x@/(}<=#M|{]+XW +x@/(}<=# ;]+X + >x@/(}<=#M|{]+XW\ > / =#M|{]+XW\)[>x@/(}<=#M|{]+XW\) =; |{]vJQZmmZZZZZZmwwppwqwZZmJLZZO00 +c|{uxXW\nuvXUJCCCCUUYXzuxW\)[>....}<=#M|{.+XW\)[>xczXXYUCL0mZmZOZZOO00LCUv=#M|{]+XW\)vCmpdbkhao*######MbOMhhMqtoCfcQda +oakkbdpqqpppppppppqqqmOQQQLCJUUUXzXzu.ncULLQQ0ZZZZmwqpdbbkkkhhhhhkkbbbbbdpppmOO00mpbkao**###M*oMW&888&@U>{++)]:> \/:+- +&W####****ooo*oooaaahhbdpqwwmmmmZZZ0O0OZmqpdddbkkhhaao**###MM###########*ooooooooo*#MW&8%%%%%M*8BBB$BB$WbdM*dZ(xkB@haq + >>> I JUST HIT THE JACKPOT <<< +  HOLD UP, WAIT + ============================================================================== +pOz* : ; ; : : :: : : , , :  +qC@; :#M| ; ;[> : : ]+ < : ; ;: : } X [ M , , , : x@  +Jc* ,: }< , ; ; /( X: ; ; :] x : ,]+X : : , : =# : +.* # >x ; : /: : : : x } : :: : , : : : : =#M : : + + : ,@/(} |: :: , |: : : : |{ : : : M| W: : ( , : : : :  +; [ @ (}< : : ): ; # [ : = +X : : | , \ , :: +, : : : :  + } : ; : }: ; W } : :: } : : , : : :: : , :  + , ; : : : /( {] ; ; = : +: : : x : : : : :  + ; } : ;; : : : |{ )[ : ; X : : ;: : : /( : : : : : : :  + ; : : : : : ) : : , , | ; : :: : : : : : ; : }:  + ; : : : : : }< : , : , :(}<= : : :: : : : ; : : + ; : : , /(} : ] )[>: :< :\) : : : : ,, : ; ; : : +; : : , X : (} : , \);>x@ #M| + , (} : : : :} : :: ; : :  +; ;; ; : , : : }< W\)[> : : {] : : : :] : : : ;; :  + ; ; : +X : : <=# X \)[ x /*...cM { , [*x@ ( <= , : )[ : : : ; ;  + ; ; : , , : + , }<u#M|*x *) <;#M {: : , ; : : ;  + ; ; ; : ,|{] , , ]+X.n.cJOXux* =#M|{ *W )[: : ,W / ; : : ;  + \ : ; ; : ; , :: @/( .xvU0Yz. v + @/ } : | : , M { X ; : : ;  + : : : : ; ; [,x (: +{]+** .cxv. + = : )[ , : + ( : :, : ; ; + :+X :: : : : ; ; : | + : > @/x. + n++ \ | : : / ]: : ;; ;  +: ; : :: >x@/ ; ; : @ : M {.znu.. * } X, : : : W x : , : ;  + ; ; :(} # ,: ; ; M : ) xJ* .x + ]+X >x@ : :: : : , M| ]+ / } :  + ; ; : >: : ;; , : := M|z... * > @ ( < : : > ,,# , :  + ; ; : : : : ; :: ; W\ [. + = M : , : , : :} :  + : ; : : : : ; : :/O?tJUuXYYCUX\- : : \ : , : X :  + : ;; : : , \)[>x@ : : .Q8#k*wkppbd0L<=#: ] : : : : \ ,: : + ] ; , |: ; {: ; ?bqwpqdpqdbwpqZOU)[ :: : : : / , : : : + x ; : : :: (*}YpbppqqqmZpakpmOmOLY#M; : :: : : , , , : : ,  +: ; : ( : : : *[Xdmqppkkkbpw*#qmZOQCJYn[> , : : :: : , , : : :  + [: : M|{ : : @/ , \ ,{pOZZqppLCUUXXJZmdpwZOQUXvnx|{] : x : : ,, : : : : [ + ; ; : # =#zwwqq0c\)[>x@/(}<=#M|LZO0OLJJJU@/( X : : : ;; : :  + : :: ; ; , , ] WJqOmzx/(}< : :: >x@vYCCJJUUU]+X : ; : ; : ::  + : : ; :: : <=# , < (mQq#M [ @/: : {]+XxYOLCCu/(} : : [> , , ]+ \) :  + ; ; : : :: : |(mpmc\ x@ ] ; , (}<Zkdhw]+ : : < | , : + ; ; , , : : )[>*Qc( : {] > : : : -rZZC@ : :: : ,  ++ ; : : , : >x <=.MC{: : :/(}<: : : ;/(><* | , : =, , )[>x@:(}<=#M +XW\ : (} ; ] XW )[>x@/(} M|{]+X : ; ;; ; )[>x@/(}<uzXXL0ZZZUXX_x@/ }<=#M|{]+XW\ x (}<=#M*{]xnuun +hZUux#uv{]xxncccccccvuuuvvvvczzXXYYJQLXzu<=#MxnxxxxnuuuvvuuzJQZmmwmwdbdbkkkbbbbdqwZQQJYXzzcXzcuxnnxx#M|{ XzU0z[0x1*zOw +@$B8WM##***oaahbddppqqwwwwwwwqqqpqwwwmwqppqwqqqpppddddbbkkkhhaaao**#####MWWMWM#**oo**ohhhhhkbddddppppwbux- ]_ |( ~+ +@@@@$BB%8&WMMMM#*aahkkbbbbkbbkkhkbppbbkhhhhhkhhaoooo****####MWW&&8888%8%BB%%8WMMWWWW&&WWWMMM###*oo***o*bZObdZL1fq#%qdZ + >>> I JUST HIT THE JACKPOT <<< +  HOLD UP, WAIT + ============================================================================== +mCn# ) ; ; {; ; ; :M : : : : ::} # , :  +cXW\ (} ; W\ x ; M x ;; ; : [ : : : )[> @ : : \ ::/ }: : : + /( |{] ; : =: ; ) : ; :: = ]: ): , { : : ( : : :: :  ++ )[ ; ;; ; : : < \ ; }<=#M : ,) :: ( = , : : : : : : :  + @/ } ; + : :( : + ( ; + : : \ ,,x , : : : : + ,  + : : ; : { X x |{ ; { : x , \: : : : : #  + ; : : : , # W\):: ; , > : M , ) >x : : :: : ; ,{] :  + ; : : : : ( : ; :, , = : : : : : : : : ;; ; ;  + : :: : ,| , #M| : ; : : : (} : : : : : : : ; ;; ; + ; : : , W ; / <= , X \, : <=: | : : : :XW\) : : ; ; : +; ; : :< ::\ @/ ; :{ )[ x ] / : :: : :@ : : ; ; :  +; ; : : [ , : :; : x@/(} .#M : : : < ,, \ : : ; : ;  + ; ; : , : :@/ , # +*.+X, >x@ , , ,@ ( : : + }:: : : ; ;  + ; ; ; : :M )[>x@ :} =vn|{], ,> / +: : @ M X ; :: ; ;  + : :: ; : : : \ } : +XW*...c@ #M|{ +X :) : x ; : ; ;;  + : :: : ; , XW : x@0Ux. *| +XW\ .* (: : = ] ; : : ;  + : : : : : ;; ; +XW [ : } = xuYZCcz.[>x*. * {: ) :: : x ; : : ; : + : : : : ; ; ; :} = : X \ xvYZQYu z.+ ;W\)[, : : : >x@ : , : : ;  +: : : ]+ ) ; ; : X \; ::( <*. .XuXn.*. / : : : : + W : : , | : ;  +; : : : : ; / , : + Wxn.** vx ;{ W : : #M| : )[ : = :] >: :  + ; ;; } , : : ; , : @ (}vccvx..x )[ : , : :} M :  + ; ; W\) : : : : : :{ +cz .v.*....<= : XW [ : # , \ @ :  + : ; ; ; ;: : ; : ; x /Uu..*. .+ : : , : , : , , } :  + ; ; : ; ; M ,]+X:\) x : #M|{n. * x : X : : : , : : , : : : + , ; ; , < : : M :XWdOmOOUOQL0CL) : : : : : : , :, , : :  +,, : ; : ; : , @/w#W***h#kkadqU[ : : : : : : , : :: :  + M ;: : ; :| : [ < ;|vkhppdbhdhohbkqCnM| [ /(} =# : : : : ; : :<  + ; ; ;; , / , + {zahdpwqdpwwh#hdqppQu>x@ , : : : : : :  + :} : ; ; , : }uJpqbbkbkahdb8oddpwZOQX|_]+ ,\ [> =# , : : : : :  + : ; ; : : \)[>x : ]Zapqpddddwz}(=#unCL0wwm0Lcx@/(} : : : :: : [ : :  + ; ; : : : : >upqpdpdpY|{ \)[>x@/(}YCUvYCz+]; ; : : XW\ # ,  + +; ; : : : : ,( =]ppdpqdC\)[ ( : :XW\)[cLQCu} : : : @ , < : + ; ; ;: : , , : X)Xdwqwc/( : #M|{ )[ :: ( : Mz00Ov-+ : : , \, +:(}< ; ; : :: ,M : ;>x /Xdahaw| ; ; :} : [>qddk}< : : [ ,  +, X: ; : : :: ; |zC*W&w) ; ; ; W , : -{CwLXW:: :/(} )  +>x@ : ; : : @ : ; [xL0*C} : ; ; } = +XW\)[: | \)[>x@  +#M|{]+XW\)[>x@/(}<= M|{ \ ;/(}+=...{;+XW\)[>x@/(} ; M|{]+XW\)[>xuJ0000YM{~]+XW [ @/(}<=#M \)[>x@/(}..*M|  +&okbbkbhahkbdZ00QCXcu[>x@/(}<=#MnvCOwpm0X>cCLC0ZmpqmZQLJJLQOwwwmOQCLZpppdddpqqqmQUcv}<=#M|xnxxW\)[>x@/(}+zuvLu-JX<  +@@@@@@$$B%88&8&WMM*ahbdOJ0qpddkkkhhaao*****##########*o****ooo**********#M###*ohhhakkbppqqqqqqwwqqwmwwbnX~ -+ />\<=# +@@@@@@@@@@@@@$$B%888&M##MMM######MWWW&&&&&&&888&&&8888&&&&&&&&88&8888888%%%88WM##MMM##*oooaaooooooaaoaohpp*adZ/ck#&dbw + >>> I JUST HIT THE JACKPOT <<< +  HOLD UP, WAIT + ============================================================================== +Qb0u : : ; : : : : , , : : :: : : : ] : :  +xvM ; : : :#M|{ : > } : :: , :M : : , : : :: : \ : :  ++ ; : : : = ] : : , <=# , , : M + : : :: : ,  + ; :, : : > : : |{], # > , , , ( : : : ::  + ; : : | : < : :) : , : , : : : :  + ; : : ,> ,: , : : < , : :: , @ : : W :  + ; ; : : #M { : :: \ : : } = : : | : : : : + ; ; : : [ : : ,: {]+XW\) , :{ , : = x : : : +:; ; ; : : : : ,+ [ :: : : x@ , : { : ,, : :  +: ; ;; : : , : : +X : @ : | )[ : x , , ::  + ; : : : ; : > : \ [ , #M : :[ @ + :  + : ; : : ;; : : ] W : : #M : +XW, : } \ , :  + ; : , : ; : )[> /(}<=#M|{ : ; : : : : :: /( # : :  + : : : } M: ; ; : {x+ +\) x / <=#M X \) , : : :)[ :: : : :  + ;; : ; ] , : : , x. + = ,| ;+.n) (} M : ,} : } ] : : + ; : :: , : : : |x .\) x; = W\ : , \) >x @: :: +; : : = , : : ; : >u * xu. XW\ :x / :: : : @ , |{ M: :  +: : : \)[ : : :: ; ; ; Mz.+ .xc..+. + | ) , :: , : , \: :  + : : : : : : : :; ; [x .. + * ; ) : @ = : : , ,: : : : : :  + : ; : ; : : : : >x@/ =# .*. +.. ; } : { : : : , , ,, : : :  + :: ; ; : : : , ] :\.. zv.xn* . + ]+ : : : : : : , : : :: :  + : @: :; ; : , : | : <XvnY..x. .*.x :: : : : : : : : : : : : + : ; :, + : > : WU uU*.. + M : , @/(}, : : : : : : : + : : ; ; : \) , :M W : + <..* * xx[ : : : )[> /(} : :  +: : ; : : : M|, : , {0wdqqZ0qwwqJXm=# ,]+ , [>x@ : : W > ) :  + ; ; , , ; ; : , ] )[xUW*a*kaakkhpqmOn)[, : : : : = :  + ;@ ; , : : : : , (}<+#ohdkkkhbh*ahadqdO=#M : ; : : { ,  + # ] : ;; ; , , : } |{]+xxdohhbkhkdpkWhpqqwZwOUx> ; : : [ M|  + , x: ; ; : ; : xvuhdbkkoopZ0C0MhddqwZOmwZOz|{;: : x@/  + : ; ; : M| W\ ; : /dmwqbb0)[>x@/(}<nLLOqpwmOQQCYu@/ # >x (}  + : \)[ : : M|{] @/ ; ;; Wvdwqdmz(} ; ; )[>xU000CLLCLv] :: : )  +: ( : :\ M: ; ; >Xpmpq]|{ + : ; ; {]u0CUUJUJ@/ < \ :  +: : ): : :MLUkqZY\)[ @ : ;; ; ; @/U0q0QQm{ , ) < : ,W  + : : :: + : +XW\)po*wY(}, : ; : :: ,]+LppdbCx: , , )  + : : ; @/( =# , _YJkL{ , ; ; : > ~]<=ux : )[>x@ : : \)[>x@/(}  ++XW\)[>x@/(}nvnM|{]+XW\)[>x@/(}<=#M| \. @/ : ; +) > ;/(}<=#zYYz+XW<; >x@/(}<=#M|{]+XW\) ; }<=#M|{]+XW\ +qBW##*oaaaaoooohbddpqqwZ0LCXcvccznnc\j@/uXzUUv|{]+XW\)[>x@/cUcxzYXUL0OZwqwwwppwmLYYUCQLCJUYXzccuxx}<.#.xn.nuuvXXJLQLCU +d@@@$$$$$$BB%%88&&WM##**ooaahhkkkbdpbkbdpqpppqwwmZ00QLQOmwpbkkkkkhaaaaaaoaaaaoahkbddddpqqwmmO0QQQLLLCLLJ.CYYLL]YX[{nXm +d@@@@@@@@@@@@@@@@@$BBB%B%%88&&WWM###****ooooooooaooo***oo****##MM#MWWWW&&&WWWM########*ooaaahkddddppqqqO#? +>} ,:)/+:~ +d@@@@@@@@@@@@@@@@@@@@@@@@@@@@$$$$B%B%8&888&8&&&W&&&&&&&&&8888%%B%8%BBBBBBB%%88&&&888888&&WWM#*****ooaaoaqwk*pdjfd*B*hb + >>> I JUST HIT THE JACKPOT <<< +  HOLD UP, WAIT + ============================================================================== +apQn+ : ; | , ,: } : : , , x , , ,: , : : : : :  +pLn ; , : : >: :< , # , , : >, : : : :  +0z + : ; < : <=, + : \ [ , : , , M :: : : : {  +vn*+ ; ; W\ : + : [> , : + : : : M :: :  + + ; ;; : < ,> : >x : ]+, , / : :W : , : : : + ; : ; ; W : : : + = : , , : ( W : : : : + ; : ; ; : , :: :>x : : [ :, } : : :  +: ; ; ; , : : :# \ [>x@ : , x: :# , , : :  + ; ; : : : : )[:x@ (: :: : : # : : ) M ,, : :  + :; ; : : ; ; : : : : : :: : : : ], : , : , :: :  + : : :: : )[> } : : : : : : | : : :=#M >x ,= {] :  + ; : :[ @ ; : : , , = :: : :X {]+ :  + ; : :< x / :; : : ) + : # : :\)[>x@/ }, : : :, =# | { : + ; : :X , , : : :: = M| : W )[ @/ + : : : : +: [ : +; ; ; / , : : : \ [>;; ( < {] : x+ (} : , : : : M|{] M :  +; ;: ; ]+ : , : : : : <=#* ]+; *> @ : #:|{] , , : : : , | W\ :  + : : :: : : : : : : + \) ; ; M {] X *) : : : : : , : : ;  + : : ; ; :: : : XW\)[> < +... ; . * (} = :: : : , , , : : ;  + : : ; ; : , :, , XW + +x * |{, : : : :: , : : : ;  + : : ; ; , : : > @ (*... + .. ; [ ; : : : : :: : : : :  + : ; <: : <=: { +.c.*. + < # , W [ , : : : : :: : : : + , ; ; : ] : + : _/v.*.. ** XW : : : (}< ,]+X : : :: :  +: : : ;; : @/ : , , /( M {]Xc...* @ ; # ]+ W\ : : : { (} M : :  + : : , : :: : : : | W: >x@. * .{ : : ;; : : , , :  + ; ; , : : : ;; : /: <zCYdwbQdqdpZmzv/, : ; : :: = ) ,  + < # ; : : : , + ; ; M|: XtY$oa#k*hhkbwqLJ]+ ; ; : ]+ }  + : : ; : : , /( ; : : +kabhhaaoa#*aakkkZn(; ; : [>  + : ;; ; W: ; ; ;# _qaoaahbkkdqhMhbdbppdOzX : ,( X : >x  + : X : [>x ; : ; L)[hdhhh*ooohhoBokdqwwwqw0z}<= / : , + , +: , : ; ; ; :+whkpbhdOznW\)xncCmdbhbpwmwqZQx\:: @ } ), /( ):  +; : ] : + : :: } |vbpddqL[>x ; |{]+XXZddwwmmmU< : = : \) :  + : : # : |{ XW )Qpwq/(}< : ; : (}<=0ZwZOmXW ; : ): : , ,  + : : ;\) ,@ , ) /vrphwC{: :: ; : : \)vkabom}: : = :: /  + ; ;; ; <= , ,} {1pWQC)[ /( ; ;: ) : #j0kpY+ , /(} : <=#M|{  + : + ; :: >x@ < >ntCu}< : ; } M|{]+XW\)_..*_ <; |{]+XW\)[>x@/(} : ]+X *  +U#M|{]+XW\ ; (}<=#M|{]+XW\)[>x@/(}<=#:| +XW ( #M|{]+XW\)ncCQOZZpwmQY{]+cW )uzYXYYYXcvn|{]+XW\)[>x.. +<= .n +@B8&WMM*kZCLUcczYLLLL0mppddpqppwm0Q00mQQ0LJCJz(}<=#M|{]+XWuJOmOZwwqpbbkhahahhhhhbpm0CYJOZZmZmmmZOO0QLLJLQCCUzv{ + W\*c +@@@@@@@@@@@@@B$BB%8888&WWW&WWMMM#*ooahhahhkbddpppqwmmwmwpbkkhaaao***##MMWWWWMM#**aoahhhhhhhkkkhkkbbbdqdJ+OzcJ[>*@ (}<z +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$$$BB%%88888&WWWMM#####M#MMMWWW&&&8BBBB$B$$$$$B%%8&&&&W&&&&&&&WWWWWMM###*&Y~]-_]_# |[u++~ +&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&WWWWWWWMMMM#####M####MMMWWWW&&&&&&&&&&&&W#####MWWWMMMM######*******akk*obmjYko#bkp + >>> I JUST HIT THE JACKPOT <<< +  HOLD UP, WAIT + ============================================================================== +J. ; : ; ; ;; : : , , : : : : :  +0x ; ; ; ; ; : :: , : , , : : : : :: : : W  +Qx+ ; ; ; ; : : : < , : : : : : : : :: , +  +z* ; ; ; : : : : : : ; : : : : : | X :: /(} : {]  +u* ;; ; ; : : : : , , : : ;; ; : : : : / : : :: :  +* ; ; ;; : : : : , \ : : ] XW :: : , : : :< : : : :  + ; : : : :: : : : : W }<: ; ;: ; ; : ) : : : :  + : : W : : : , :: : M|{]+ : : M| X ; ; ; ;; : } : : : :  + : x <: : : ; : : ;; : : : : > ( = : ; : <=# :: \)[ : : :  + ; X : : ; ; : ; : :: : : # \ : : : + @ ( # :: : :  + ; : ( : , : : : ; \: :( *M {;: \ : , : @/ [> : :: : + ; , , , | : ; ( < +..+XW\ [ ; : : : : \)[> : ; : +; : >x , , , , ; +XW )+>x }< # @ : :: : : : : ; ;  +; : : : : = , : :@ ( = ]uzx+)[ { : : ;; : \ } : ; ;  + : ; ; : : ,> : ,, { +X )[>x .v J= | X )[ @ : #M +XW : /(} : : :  + : : : : : , , @/(}<Qmn.* cW )[>x:/(} *#M : = , : :  + : :: , , ( : , M { ux.Y0zX. (}<. + {. + : ,  + , , : : , , > +.vzO0uM ] .x.+[ux@/(} , , :  + : , <= , ]+X : :: , , x =#M* .XUuL[*ux. *un#M , } , , }  + ; ; ; ; : : , :, : W ). + uJ*. *+XW\ / , : : ,X ,  +; ; ; ; : : : , \ :: ( <=.cunx..z...uu , , : : , M : :: : : , ,  +; <=#M| : ; : : , : + W\0x.cc*x.cXcM| : : : : : : : : :: : :  + +X ,: ; : : : ; / <Ynvuvnuunu) : : : : : : + : : : :;  + @ =: ; ) / : ] [ : ; + WLCx....*.<= : :: : : : : > : : , :  + , X: ; ; ] :: : : {] ; +/ }zuxnuuvYUL|{[> : : ,: : : :# : ,[>x: :  + : : ; ; : : :: \ x ; ; Upq##WWkB&WW&#aL#M :W : }< :: : , , : , + , : ; ; : |, : : < #M ;; ; [CL$BWM&*WM*M###*0c[> :/ \: : } , , , + : : : ; : : : : : ; =XL8*o*o*o##*#MM#*odvM|{ < : W <=# : :  +: : ,: ; : , : : , ]+fh*W***oakbddqdMohdbbdZ[>x X ; : + : ::  + : , : :: ; ; ; : [>XOCbbkakbkbddmQ0pMbbkdmmwpX+| [ ,@ ; : , : : :  + ; : : , ; ;; : : : <=QkppqwpdppqOJx/(}<=#M|LwppZZ0[> ,:}< : : : , M|{ : :  + ; ; : / = ; ; : :: : +vYCCZwmZC<=#M >x@XQ0CJ#M : : :: : | , :  + ; ; : { \: : : : ;>..**ucCQz|{] |{]n0UJY[ : : : :  + ;; ; : >x : , , * *..XW\ ,=# | > ]U0JQc# : : : } ) : : + ; ; ;; ; | : : +XW\); x@/ <= : : :: : : {JOmw\ : : :|{ W )[>x@/(} ; :: +* : ; ; :: : : , : ; : : : :: x@/(}<= : ( : : : :  +J|{ : : : : ; ;; (} =#,|{]+X )[>x * ; : : : M| \) ; (}<=#M|{ ; ; ; +  +bmYx@/(}<=#M|{ \)[>x@/...* ..]+XW\)[>x@/( =#M.xnvvunx.>x@/ ; : W\)[>x@/(}<.#M|nunxnn)[>x@/(} * . ~xW [X. +8&MoohqqwwmOQUXXzXUL0OO000QLCJCJUUYUUcvcvuuczzXXYUCCCCCJUUYUJUYXzzXzcuxxn/uCQ0QCLLQQLQ00OZOO0O00QCCQOQq}+ _ {x (|j=?< +M##*aaahbbbdpdpqwwwwqwwmmmmZOOO0O0QCCCJCCCCCLLQLLQ00QQCU* zJL00OOZOOOZZZZZZZmZZOZZZmmmmmmmZmmmmZZmmZmmmZOmdwwX/LboodkU + >>> I JUST HIT THE JACKPOT <<< +  HOLD UP, WAIT + ============================================================================== +Mwn ; ; ;; ; : : : : : : :: : : : :  +#Q. + ; ; ; ;: : : : : : ; :: : > (} M : \)[>x@/ ,=  +oqc + ; : : : : :: : = + : : : ; : : : : : :  +ZU. ; ; : : : : : : X: : ,=# {] : : : , \) }:: : : : :  +n ; ; } : : : : : : :: , @/: ; : : : : : :: : :  + ; |{ X: : : , : <= : : (}< ] ; ; ; : , : <: : : ::  + : W /: :, : : @ : : ; :>x : : : \) @/:: ; ; : /(}< M:{] W\ : : :  + ; , , ; ;; ; : ; : , : : = ]+XW : @,( <, <=: : :  + ; + , : ; : :: ; ; : M| : [ \ ; : : + ; , = : x,/ : , : :: : > : ] :[ : : : W\ : : : +;; : X : +: , } : , : + : : : : : < :: : ;  +: : :: : > : ; /(} :M \:: / , ; : : : : /: : ;;  + : : , : , , <= + .+X x@ , W: ; ; : : :/ { : :  + : , : :M , | ] )[ x@ <=#vu{]+ :> < : :; \)[ x@ : : { : :  + : , |{] W x@/ : , ,: > = M|{ +Xz*xc.Un/ < M|{]+ \ @/ + : ] \)  + : { : : ,:W\ [>xZQ*. .X|{ \).+ @/( , =  + ;: [ = ] : : : , , *cu.Uc x*.c>x@/(} * |{ , , , M ,  + ; # {]:: \)[> : : : , < * .zXOXxn+u. xu{]++W\) W , , : + ,  +; :)[> ; ; ;: : : ) ;/.. *.uQXL.x. * .xz/( M {] \ , : , : , ,  +; : ; ; : : :: (} :{ uv*. .*zz.x* .vv|{ W : :: : : : }: : , x@  + | X : ; } , : / :[ x.zUzux*.v .*vv\) , : : : :: : { , :  + ) , ; : : ] ::=# |zJnzUn. zzzY}: : : : : : : x, } : :  + ; / < : : @ ; \):>UYxvvvnuv.nv+ : : : : : : M \):: :  + W : ;; ; W\ x : ) ; ; _M|LCx..*...*@ : : , [ ( : : X = : : + : : ; ; ;: = : , @ (} : ; <[>YvnnvvvXUOt1+X x , +: : ( , : : + : : : : ; ) :: : : : : <bho##&hM%WW&&#dO(}<= {: W : :+X , : :  +: : : : : : ; : , : X@%@B&%&&%WW&&&WoOzXW\ } | :: : |{ : :  + : : : ( ; ; ; } M : :: x@OW8BWW&&8&8&&8%8&WMdx}<= : : : : ,, : : :  + ;: : : { : ; : : : : #bk&&%&8&&WMMMM#8$&M####Z)W : : : : , : :: :  + ; : ::[ , : : : : ,+XWbW#MW&&M&&8%&*bd*aa&W*aaoon} : : : : =#M {] \ : ;  + ; ; : :, x : : : >xYd%&##**WWWW*qu)[>x@/()zw*#akaC_; : : : +X }: :  + ; ; ; W > : | : : : <=m#M#o*#M&WhbY@/( : : W\Cbbdbm} :: : )[>x , : : + : ; ; } : X ( :,]+0Yc0dko*&oUu=#M : : : ~XbqwmQ+ : : } ]+X x, : : +: : ; : : : [>kkO(}Oka0|{]+ : : : *vZpwmZQ/: : x :: : : :  +; :: ; : : : : ,@ :=WMW*W#OW\) ; :: : : : }LMo#*X] : : , :  + ; ; :: : : : ; XoMM88d@/, : ; : :: M|{ +>?cUmLx : : , ,  +. + ; : : :: ; + . x; (}C*U {]+XW\)vcccvvx<=#M|{]+nnncJLCLx+} |{* W\)[>x@/(} : : : > ;  +OLcXW : : : ; *..nvczC#M|{[+LCUQO00OmwwqppppppqwOLLOmwqpppdpppppdqQx1~[+vvXzzcvuM|{]+XW\)[ : : M: ]nc +#*hqC}<=#xn{]+XW\)[>xnuczYYXuzYJCJJLQOOwqmwpppdbkkkhaaaaaoaaoooooooo******ooahbpq0c=#cCL0OOOOOO00QQLJYU#M {]+X )[(x  +8&W#*hkbdbdpwwmZOOOQQLLLCCJYXYUJCCLL0Ommqddbkhaoo**#######MMMMMMMWW&&&&&&&&WWM#ohbqmmwpdddbbbdddddpppppwQ0wm0J(rmk*qpZ + >>> I JUST HIT THE JACKPOT <<< +  HOLD UP, WAIT + ============================================================================== +B&kLn + ++ ; : : : : : : : :: < : : : : : : : : : :: +8*Ox ; ; XW\: ,: : : : # , : : | W\)[ : : : : : : : : :  +WM*pC. :x@ : :: : : ; : : : : ,, [> ( : M XW, : : :  +oakqU(} : : ; : :: ; : :X [> : : :  +dqLX{] , / : : ; : ; ; :; :@ |: W : :  +OUn[> : \ >x : : : : : <=#M :} X \)[> :}<=#: XW :: :  +n}+ >: , : x: : : + ::+ : : : : }< X : : : + ; : x (}< : ): , { , , W : / ,, ; ; : : (, : : + ; : , : : ,, , : ]+ : : :: : : @ X , > :  +; : [ x@ : : {] : , : : : ,{]+ : }< |:  + : : : : : < , { : W\ : |{ >  + :: + )[: : : : , W\) , /(:: : W\)[ }<  + : : ;; : : : : x ; < , ] , :;} #M ,  + ; : ; : :, : : |; + , > @/( <=# :] XW\ [>x, ( |, }  + +XW [> ; : {] ), :: /: M| * x\ : }< M| + , : , , / ] : + : # ; :\ M : \ \) + ( <, {] XW\ > : , : :: , : [> : +; ): :} : \ [ @/; ..* +XW\)[> @/ , : : : : :, = :  +;) ; XW: : \ ( : M + .ux* n+ +#M {: : : , : ,[ , +X :  + < ;; ; : : { : ) ; xnn .* X, [: , : : : #M , , :  + X )[>x@ ; ; :: : : { : <+ + u + @ ( : ,, : x : : : : : :  + : : : ; ; : :: :x@ : + W >+ .* M|{ ,\ , , ,, : : : : : :  + ; : : ; : ; ; : : ( =: . * ..)[> : , : : : :: : : : :  + ; : : : : ; ; ; [> ( , :: .* ..* ...*=#M : + , : ; : : : :: : : : + ; :: : : : : ): : : : : @n+ zn** * .x)[> , : : : : : + >x :: ;  +; ; : :: : [ = : : ; |{]..u\xnuzXQLZmmCn|{ ; : : : : | : ;  + ; : : : : : ; qo#&W8o*B*o#ok*oOux@ ;; : : : : | [: ;  + +X ; : ; : : :: : ; : M|Y@M*#M##M#MW&#*##hJ{; ; :: ;#M ]+XW > =: ;  + : ; ; : : : , : :: : { XW\)>h%MWWMWMM##M%&M#M*#kv@ ; : W\ :{]+X: :  + { ; ; : : : x , : x / /do8&&&&8&&8WM&$MM#*ooakc{: ; :( ]+X :: : :  + : ;; ; ; : : |{]+: , : M|L-qWMM8&%8#hOUUwkW8&#o**oakzx ; : ] : : : :: : + : ; : :; : : ; : : : W\\MMWWMW&#pCM|{]; W\)[0*W*#**aaJ| : : : : : +,W\ ; : : ; :; ; ; : ; -ub&MW##k0+XW : : #ML*ooooahx : : \ : , : :  + : : , ; ; ; ;; : < ;<|pa*b0XO[>x : : : [>Zp*ahhY#; :: ) :| : : :  +{]+ : ; , | ; ; ; : +X1{mpqqU_(}<= : : > }: {QMooakU)[ : , \ x@ } , :  +>x@: ; + > ; ; ; [ @]U0C0#M| [ : : [O%W%&v< | , :x :  +XM|{] :: :@ ; ; : < M|x .W; @ :: \)[>x@ <: MXqqbcW @ : ::  +kq0Yv@/(}<=#M|{]+XW\); : : + [:?n : ;|{] W\)[; /(}<x#M|{]+xvXnXCvx.(}<=#M|{ +XW\)[>x@/(}<=# { + ;  +&W#**ahppwO0QQLCCJJJUXccv{]+XW\)[>xx/(}>+#M {xvuW\)[>x@/(}<nvczXC0ZmmwqpddbbkbbbkbOfxQUUJUYzzzvuczzzccc+ . +. n/ <.x +$B%8&&WM###**ooaakhhhhhkkbdppppqwmZZwpqwmZ0Zmwwwwwwwwwwwwwqqpdbbhhhaaooo*##MMMM#*aaoadppppwwmmmmZOOO00m@/> ;+< {]|X>  +@@@$$$B%%%88&&WWMMMM#####*ooaaaaaahhkhahhaahaaoaooaoooaao****#MMMW&&&&8&88%B%%%888&WWM##*ahhkkkkbbdddbbqO0qwOJ)jZdhmqO + >>> I JUST HIT THE JACKPOT <<< +  HOLD UP, WAIT + ============================================================================== +8aL.**...+ > : ; ; ; ; ; : /( ;: : : :: :  +&bX + (}< { : ; ; ; ; ; ; M +XW :@ < : :  +M#hOx |{]+ , :: ;+ : ; ; ; \, } : { ,, , : :>x / W : :  +akqY\)[ <= , W [ :: ; ; : /( : x : : :: : :] : :  +OY/( , X : / : ): :, # | @ : :| X : : : :: : :  +M| : [ x@ ; { ) : } = M| M : : >x@ |{] : : , /( :#M : + ; :: , ; : /( , ] ]+:W :: : ; : @ : : ] >  +; ; X [ :: , M|: [> : : : ,)[> : ( : : > #  + ; = : : :: :} )[, @/(}< ; : : M:{ /( =  + : :]+ ; ; : : , : ; ; ; :  + ; : ; ; : : , XW ; ; | , x +X +  + :/( <= : W\)[ @/ : : X =+ **...*.> : < W\): : #M { , , >  + M : , ) : ( +X \ [>+@ }: #M:,] X ) , : : : : : > = ; + } : ,,XW : +X ;( < M ] XW. [> : < { : : : : : { +X : +, {] ; : , , : / {] W ) > @/.X*.#M : W [> @/ :: : : : , ] W ) : :  +:X : ; , , : :: > @ (} =#z|. ;.\ [ ;}<=#M| , > (} : : \ [> : : :  + ( ; : , : : , | ]+..*cQYnn.(}<=#M +x W; , : :: : : : :  + : > ; : : : : > @ +*.XCnv. znxvn *x@/ : : \ @ : : : :: : :  + : ,: : : : : : , | + Wuxu..x*. .=#M : : <=#M : : : : ; ;:  + : : : :: : { +: : }< , \ [> (}<=. * XW :: , : : : : : : ; ;  + : : : : , , : : : , #M ] X * @/ } : : :: ; : : : : <=: ; ; + : : : : : :: : X ) +@ * .n| W\ , : : :: : : # ) ; ;  +; ; : : : : : , <=# . *...)[ ; : : : :, < ; ;  +; ; ; ; > / , : : , > )v.* +=# | , : : : : [ =# |{]+ : :  + : :; ; ; , , : |{ : + <=.*...+nvc|?>x : :|{ : : /(} X : : ::  +) , ; ; ;; : :=# , : M {]ZrZpdoqh#oo#adXM|;: :) x: : / : : :  + # ; ; ; : :: [ : >xLC@8#&#MW*#MM#odJux :< : ; > : : :  +XW: ; : : : : ; :: , : =#u]w&o**M#W8W&88&WW*O|{; \: ; :# : : : : + ; ; : : ; ; ; ; : :: X )kaM*M###**#oo8&W#MMMoX~@ (: ; : : : : +:; ; : : ; ; ; ; : : @0(Xkka*aMMMW&8&&@B88W*ooMq|{ : : :( {], : :: : ;  +, ; :: : ; ; ; ; : @ } #1wbppqqdka*hdZUn<[[jXYp#WW*#MJx : ; X : < : : ::  + M : : } ;; ; ; ; :M ]+XWQwZmmqkkw0n#M|{] x@CZ*Mo&a{ : : , |{]+ ), , :  + : ; X: ; :; ; X [>x@0qZmmZZm{~+ : /(} {])OWaMd>x = , :  + =: ; W / : : : <zXYqZOwzW\)[ : :XW : x./aWoMLn| :: ) :  + : ; ( M|: ; : : , +d#h*qx/ : + : ; : {]h8BWY[ : , ] } , :  +@;; ; + ): ; : ,XW\ :> @xxQkqxM , : ; : : -C0Y? : ]+X ;x@/(} +:W\ , : +x{]+XW\)[>x@/(}<=# ; : <= M|; +uW; ;/(}<=#M|{] ;)[nx@/(}<=#Mn{*[<W\)[>xz/(}nvzXzvn+XW\)[>x@/(} =+ . ]+ +*kbkhhkdwZQJUYzzXzUYYXc/(}<=#M|{]+X]]zu>x..nzUYXcvczYYUUzvcccx }zQOmwmwwqpdddkkkkapOpwqqmZmwwwwwwwwmmZmJuOJJZX[O\?|nLZ +%%8&WWWM##**oahahaaaahkbpppqwwmOOZ0ZqZZZZwpdpddbbbddw0zJmwwmOU]XZqkaaaoo*##MWWWWWMW&WWWWMMM#**ooaaaahk*z\-<<]-: }+j#~~ +@@@$$$BB%888&WWWWWWMMWM##***oaaaahhhaaaaooo***#####*oadbhaoaoo****M&&&&&88%B%%%%B$$@$$BBBB%%888&&&&WWWW*bd**bmtzo8@aob + >>> I JUST HIT THE JACKPOT <<< +  HOLD UP, WAIT + ============================================================================== +wMwz. ;| ; > , : : X: : , : : + , ,: : :  +whz* :) @ } {: : : / : ::X )[ : [> , , =#M  +Z*qU } | + [: : , ] { : : , , : < / [  +J0uM : \) /(}< : :: [ ; : | )[ { : + W : ; ; ; : } : : ; , :  +; : ; ; ; : : W :: ; ; : \ [ , (:  +: : >x ; |{] X : : }< X : ; ;; : /( :#M| ] W\ , : > |{:  + : < { : }<= : XW /; ; ; : ( < #M| : : : , : [ : W\) ::  + : X : ,, M { : ( {; ; ; ; : : :: : , X : ] ) @: :  + ;> = : ; :x } ; > ; |{ : : : : , ,, : W >: : : :  + = X : ; : : ; # ]+ ) x@: : : :: : : : : : : + ; > @ : ; ; : : : ; : / : : :: : : : ; +:; : : : : : : ) =#M|{] : ; : : # | : : : : ;: : :  +: : :: : : : : } XW\ x@ ( =#M| :) ,@/ : : : : : : : ; : ::  + : : : , @/ : | (. +.| +XWcY[cx@/ M| X : : : : : : ; : :  + : : : , + :: ,=#M|, + +.[ xQv..*.Cv|{] \x[>x@ ( : :: : : < ; ; ;  + : : : : : :: : @/* .u#MLUu.* u. :x }v +| : : : :: + \ ; ; ;  + : : : >x { : : : {* nunQCuu }u= M|{] XW : : : : : x :: : ; ;  + ;: : ; : , : M| ,x. .+ ..c*{]+X * @ : |{] : : : # : : ;; ; ; + : ; ;; ; : < {] : M. *n. + +nM : \) : : + : : : ; :: +, ; ; ; :: : \ : [>..zux. |{ .x\) : M: : : : ; : : ;  +, @/ ; ; : : < X : :M XU*.u.* . ux} : + : :: : [ ; : : :  + M : : : : : , :: : ; xuccx..*....u0+ : :@ = : : [ : , : :  + :[ : : ; ; : : : \ : ;; =C XC.*... *.Y@ : : { : : :: , :  + : : : ; ; ; ; : / =# ; WU).n**...*..X|{] \ [ : : W :: :  + : :: <=; ; ; ; : ); / 0Waah*Zhkkhampkx +: : ,<= , [ : : ; + : :]+ \ ;; ; ; : (} : ]ha&*aMb*kbkkdwmz|{]+ W\ / : : : < |{, : : + : ) < : : :: :} : [>UpahpdpkbakaoahbpOvx@ :< {] :: : , :  +: : } X : : : : \, : <J#QqpqpqwwwqqpoobqwqqmX{] , ) :  + : + x@ : : : : : : +CLQ00mmwdddpwOChhpddqwZmmJ@/(} x } x :  + X :; :/ : : , : : : >xXLUCLOmmQX]+XW\)[>x@xCZqqm0ZJ]+XW\ : }< + , :  + (, : : : [ x }<=nCUULCJc\)[>x : M {]+XWYZOZmLv(}, : , , W\ ,  + : x : :: ]+XccXCUx@/( : (}mmZOZZZzX : : : , ): :  + : | X, : >vcXzv<=# |{ : : , : XWLahkao/ :: : : : : : :)[  + { : :>x@: : ] =nzCOZxXW\ [ : : : (}QZkaMU : : ;: : ; ; : =#  +W\ : ; : > W\)xXx@ , : : }< M XW\)[\x ;#M|{]+XW\)[>x@/(}<=xM|{]+XW\)[ +(}<=#M|{]; W\)* /(}<=#M|{]+XW\)[> /( < M|{]+XW\)[>x@/(}<=xM|{]+XW\)[>x@ | +XWvJQZwwwwwwwwqpppkqpdwmw00wqmmZ +ncnzcuxxvczYCCCLCLCJUYXcvxxx@/...*.M|{]+X.xxxxxunnzYUUJCLQ0mmwmZmmZZOO0LCYv{]+XW\)[>xcLmpdbkha**#MMM##MoY*ddah)ZO)\YQh +Z#hhkbdpppdddppppppqqwZ0QQLCCUJJUXXXvxnzYLQQ00ZZZmmwqpdbkkkhaahhhhkkkkkkbdpdqmmmmwpkhao**#MMM#a#W&8888Bo|(>?_(\ >t_ - +q%MMM##**********oooahkddpqwwwmmmmZOZZOmwpddbbbkhhaaoo**###MMM###MMM#####*oo*ooooo*#MW&8%%%%%8#&BBB$$$$B#*&B**unoB@8W* + >>> I JUST HIT THE JACKPOT <<< +  HOLD UP, WAIT + ============================================================================== +kmX : ; ; : : < :: : ; , , :  +wU} : {]+: ;x@/ : : :W\ M: ; ;; : # \) :@/ ] , : , : ( : +Uv ) , :# + ; ; <= ) ; ; : W ( : : W\ : : : = |{ :: +* : { , /(: : , < : : : # : ,: : : : : , : |{] : :  ++ : : }< # + :: : + : : : , : : ]+ [ : = : : : :  + :@ }: #M: : ) x ; { x@ : | \ : : + , > :: \ : : : :  + : ; : : ; [ =#: :: , #: : , : : :: : , :  + : ; : : : <= XW; ; |:: : ; : : \ ( : : : : :  + ; # ;; ; : : +X x : ; : : } ;; : : :< : : : : ; : : : + ; : : : :: , x : : , , + ; : ,: : : : : : ; : # : + ; : : : : , #M : , , , : =#M| , : :: : : : ; : :  +; : : , <=# : x@/ :: : >x , : : : : :( : ; ; : :  + ; : , ) : = : ; [ x /(} {]+ ,\ ( <=# : : : : # : :: : ; :  + ;; ; , : , : : #M| )[nx@/, ;XW , : : : W : : : ;; ;  + ; ; ::= ) : : M|{ : ) >x@/( < ...c] @ (} = M| : x : : ; ;  + : ; ; , , \ #Mv{]v.u. +.x = M {] X : ; : : ;  + : ; ; : : +X : : W ).x.uUZYvu. |{]+X ;.[ x: : :,[ < ; : : ; ; + :> : : ; : ; : ] ,: ;}<= *.uX0Uz. n+ /(}< #: + : : ]+X ) : : : ; : +: : : : : ; ; @ ( = : XW\* *u.u.+ | + , x@ , : \ =: :, : ; ;  +: \ :: : : : ; ; : + \ : / }<n..* x* > / + : : :<= W : : :; ;  + ; ; :: :/(}<: ; : : ] XWXnux. * # ) : : : [> ( : , W : ;  + ; ; : =# , ; ; ] : :@ (U. ..* .W ) /( : :: : : , ]+ W < # :  + ; ; : ; :; : : : | ]+z...* / } =, : : / ,| :  + ; ; : , : : : ;: : [> @. + | ] : , / : , , ::# :  + : ; : : : ; : ; <m(vQLzJCJQLY>x : , :> : | : )[ , : + : ;; : : , [>x@/(}: : /L&obowkppdd0Qx|{ W : : , : > ,, :  + W ; : + ; X : }hwwppdpqbbqdqmZCx@ :: : : : :< , , : : :  + /( : : : :: X = ?QddppqqqmOqakqZOmOQU{] : :: : : , , , : : :  + ; : = : : : ( ; 1)dZqpdkkhkdq*#pmZOQCJUu@/ : : : :: : , , : : :  + @ : {]+ : : (}< # > ;,}dwZZppwUXccnuzLOppmmZ0JXzvv+XW\: :( , : :, : : : :  + : : ; :{ , :{UmwpwLx>x /(, =#M|{]+U0OOZQJJCJn<= ) : : : ;; : :  + : : : ; : : :[QwOZn}<= M : :: /(}<vYJJJUUJW\) @ : ; : ; : :: : + : , ; :: : M|{] : _:=mQq{] / }< : \)[XO0LLX<=# : : @/( : XW x: : +; : : , :: : +XqpZv> (} W : : #M0kbhqW\ : : +, { :  ++ ; : : : x@xoLc= : W @/ : : : >|L0C}<: :: : , W  + ; : : , , /(} M[(]UX : : =#M , : @ + <=#~. + W : | : >x@/(}<=#M|{] +)[>: <=# ; XW\)[>x@/(}<=#M|+]+XW+~ : ; ;; ;) >x@/(}<=#MzYUU0OZmmLJJ{(}<=#M|{]+XW\)[> /( =#M|{] Xnuvzzz +*pQYcuzXuvvczYYYYYYXzzzczzzzXYYUUJULOQUYzM|nuvcvvvvczzzXzzzUQOwqqqqpbkbkhhhkhkkbpqmOOLJUUUYUUXzcccvvn]nX+XvX0c?Q(?*xLZ +@@$%&&MM##**oahkbdddpqqqwqqwwqqppqqqwmqqddpqqqqpddbdbbkkhhhhhaao**##MMMMWWWWWM#*******aaaaahkbbbbddddqku(_<>?_ ]~fW~~ +@@@@$BB%8&WMMMMM*oaahkkkkkkbkkhhhbqwbbkhaahhhhao***o*######MMW&&888%%%%%BB%%8&WWWW&&&&&WWWWMM###**#****hdd*adZtcaWBhob + >>> I JUST HIT THE JACKPOT <<< +  HOLD UP, WAIT + ============================================================================== +ZU|{ : ; ; X ; ; : ] : : , : :: # : : : +u)[> =# ; ,[ ( ; / ;; ; : @ =: : : x@ } : : :: # : :  ++<= +X ; : | ; ;x : ; :: | W >x := X: : < : : :: :  + x ; +; ; ; : #M > ; #M|{ : , x :: | , W , : : : : : :  + (} # ; + ; ::= : W\ = ; W : ,, : : : : \ @  + ; : ; : :X / +X ; ( X : > : : : :  + ; : : : : [>:: : : / : :] W, x /( : : :: : ; : X :  + ; : : : : < : ; :, | : : : : : : : : ;; : ; : + ; :: : : + W, {]+ : ; : : : <= : : : : : : : ; ;; ;  +; : : :, < [: :< #M , \ > : M| + : : : : )[>x : : ; ; :  + ; : : ,: (}<: : X x@+( , W : :: : : : : ; ; :  + ; : : ) , : :: : (}<=# *{] : : : M,, : : : : ;  + ; ; : , , : : }< , |{++..\) @/( , , } =: : #: : : ; ;  + ; ; ; : , : ] >x@/(} |cx+XW < , : : } , ) ; :: ; ;  + : :: ; : : : : # | + \)[ n.x(} {]+XW\) : ( < ; : ; ;;  + : :: : ; , ,) ; (xZc. +.+ \)[> * <: M , M| : W; : : ;  +: : : : : ;; ; \)[ : =# | .xvJmUcc.@<(.. +. : > :: : (: : : ; :  +: : : : ; ; ; ::# |: +) > *ncJZCX. Y+ + [>x@ = : : :/(} , : : : ;  + : : :W >x ; ; : \ [; :: =#M.. XXnY.*.. ;< : : : : W\ [ , : , + : :  + : : / : : ; < : )[nx** c. ;+ [ : : {]+ : x@, | :XW / :  + ; ;; # : ; ; : : } =#zvcux *. +x@ , : : : { ::  + ; ; )[>x : : : : ; : X \Un..v* ...xM| , )[ @: = , [ :} :  + : ; ; , : ;; : ; ; : <Yx.*. W\ : / : :, : : , @ =# : : + ; ; : : ; ] W\):>x / : { +Xn * /: : ): : : :, , : , : :  +: ; ; : M: : ::)[b0mOQJOQL0JJ[ : : : : : : , :: , : :  +, : ; : ; : , { :}cdWM*#aa*khaqqx : : : : : : , : :: :  + ] :: : ; : + : @ ; xYobppdbhdaobbbmY{]+ @ <=# | : : : : : : ::M  + [ x : ; ;; : < : \ +[Zakdqmpdqmqo*kpqdqC@/(} : , : : : :  + : # : ; ; : : =xxZqpkkkbhakdh8hddqmOOLc+>W x@/ | , : : : : :  + : : ; : : [>x /(: +kkqqdddddOu#)|{nvLLZwwmQCn(}<=# ; : : :: : , @ , , : + ; ; : x: : : /Cpppdpdwu+ >x@/(}]=nUCXvJCv\- : : : )[> : +++ ; : : : : = |{bpdpqdv>x = :{ : )[>xxXQQJ=_ ; : : } , M :  +; ; ;: : , , : + )[OpwqZn<=: |{]+ , x@:: < , ]J000)? : : , >  + =#M; ; : :: , : ; / <YaahoU+ : ; : # , +@cdpkw# : : x@ :]  + , ; ; : ,> ,: ; +CQWM&Yx ; ; ; [ : +t0wU)[: : <=# ,x  +/(}: ; : : } ; ;@cQm#x# : ; ; =# |, \)[>>, } ,+ >x@/(}  +{]+XW\)[>x@/(}<=#M| ]+ [> ; ?#M|.. X \)[>x@/(}<=#; ]+XW\)[>x@/(vC00OQz]]XW\)[ }<=#M|{] >x@/(}<=#x*.]+  +WabbkkkaahkbdO00QJzcx@/(}<=#M|{xnzQZqpmQv/YLCCOmwpqmOQCJCLQZwqwZ0QCQmppdddppqqqZLYcu#M|{]+xnxx[>x@/(}<=+.cucQX}C? , +@@@@@@$$B%88&&&WM#oakbpQJZppddkkhhhaao**#**#########**o****ooo**********#M###*ahhhhkbdpqqqqqqqmwqqwwwmh[+ ~:}/ <?(M<{ +@@@@@@@@@@@@$$$B%888WM##MM######MMWWW&&&&&&&888&&&888&&&&&&8&&8&88888888%%%8&M###MMM##*ooaaoooooooaaoaobpd#kbU|LhW#phU + >>> I JUST HIT THE JACKPOT <<< +  HOLD UP, WAIT + ============================================================================== +, , , , : ,, , ,  + : , / , : , , ,, , ,  + : : ] , , , , , , : , , ,  + : :: , , , , : : , : ; :: : , , ,,  + ; : , ,, , , , : : : : + ; , ,, , : ] , , ,  + : : , , ,, , : : : : x@ , : , , , , , + : : , + , , :: , , , : ;: ; , , , , ,  +, , , X , : : , ,, , +XW\ [ : , ; ;[ ,, , , [  +, : : ] , : : , , ,x < #; : \ , >. ; XW ,, /  + : :: , , , , , = +Xn\) :: }<=# , )[>x@: =# : : < ,  + : : , , , , , , ]+ >x@ (zn= + W\) : /(}<.. |{ W\. ; \ ,  + , : , , ,, , , ) }<=#M +vxW :[ + #M {]v. ++ ,(c< : +X +  + , , , , , , #(] #(]x\}+@+ X|[=/ x , + , , , , , , :[=/ (]x\}+@); | + + \ : ) |[= {>#(]+ +@)#; + ;; ,> , +,, , , / , : )< [=/{> + +@) + =/{> ]: }+@)#+ \}+@) + ; , ;  +, ,, , , : x }+@)#; x\}v@). ]x +@)< [:/{># x\}+@)<, , :;  + , , , ,, :>#(]x\}+cx#( xz}+@ # x ; ..#( : : , {># :  + , , , , =/{>#(]Xu*+@ .*xnnnx.#(.zz}+@). |+ {>#JCx\&+@)#(+x\}++ #( : : , :  + , , , , ,|[=ZJCJv]* ..nxxxx*.nx.#(cXzYY@)<+...xu>#Y]x$MhdmQC|[$/{>*.]x\+ # : : : :  + , : , :)#....}+@)<*|[=/{>#YCvcY+@). +x\ .@)zvvXU/{>; : : :  + :: : [= , : @)<XCz=/....*....*)# x\}m@)L(]x\Xc@)#(]xX}+@)qXO[=/{># uCOQ+@)uX|[ ; ; ; ;; +: : \ |, ;; ]x\LJcccvvvuuunx(]UC}+@)<YQOOZL>#(QC\}+@)<L|[=/{>#(]x\}wppwa|[=/{*.(]xOQ+@zXX + ; ; ;  +: , X : >#(]L\}ccccccccc{>OQ0qm0+@)#kbpqkbd*kQJ[=/{>#(]xQUXX)< + + + +  + , ) : /{>pQ]xX}YYXQ(]0qdw0Xmkabdw+@)#(]xUZ+@) + + +  + , @ + ,X|[=J{0ZOQLQ0QO)<bm[=CZmQ(]O\CUvunX|[LZpppdbk\}+YCLX|[=mqq#(bhoM+X)<XXz=/{>#(]x\}+@ + + +  + , >#( x ,@ X|[qqO>#(]mqkM*d<wmQ=/wpqm0C\}+nuxX|[qq{>hhaadL+@Y0Q0QQZwbkbbx\}+@UJX|[=nv.#(]x\}+ * ++ +  + , ,, ,\ @)<pb[=Owdbdqd#okhhbw0[=/{>#LLJznxnc#(UXczLwmw0|[QZ{>#(]czXQZwhd0Xvc{>#k]x\*.. .* + * + , , : #( \}z@)<qdpq/{>#(WWadq@)wwZ[=/{>#zcv\}+@)dkd[=/{>#(cxOw+pw#(]x\}+@)h(]x...*....*....* + , , , / #(]x\}+hp#(]x\}a*d#(nn\}+ucvXYQC/{M#(]..*...*....*. +, , , | /{>C(]xa}+@*M*abh&%#MWW*kq+@)Zwqm=/{>#%Moo}O@JJJJJUUU>Qqpkh}+0)L0OZZ0C>#(]uv}czXJQ0[=/{>#(]....*....*. + , , @)Mh]aM&Mak<bkWW/{>*#ax\w+@)<b*#*MM>p(]xQQLLLLLLLLC{dkaaxmw+@)#(YLJ}+mq0X|[=/{>#(]x\....*.. + :: , }+@)kbbk#W#>&B8*\}bbb<oWWM###MM#oa}kha*h|[=/{>#00000Q00QQQQ=pk*o(waa}+@)xJhbaWB@@$8MM*aaaao#MW&88M#*#&%$@@Wkddbbddppppppqppqqqqqwwwdh#WkphkwmqbhbmLUJJUQmwLXzXCphZzUmbbddwCcvJmdp0 + : |{a&@@$B&MM***#M&&&WMWM#o*##M%@@@@BWokkbbbbbbkbkbbddppppppkoM&opdhhbmOwbkZ0QQQLObaqQUXYmhwJQwOUQqpqZCCL0J + , ,) >U%%&WMMM####MW8W#*oaaahhh#B#Oh@@@@8M#oa***ooaoooa**oahaoMMooM##oko*kwZZZqpwZZZwhoadmCYOwCXJYcczXJQ0QQJX +, , , MMWM#MMWWMMMMM##***#MMW8B#J<[>a@8ohhho#WWMMM****##WWWWWWM#o*MM*kko#M*aakbkakqZZOmqbhkwCXzccczzcczzccczc +, ,, , ,)qk*&&WWWWWWWWWMM##MW8&q/(} #MkWkhaa#&8WWM#*oooooooooa#WWWWWWabkbbbk*&&MM#*ohkpm0Q0mdw0QCzvvvuvvcccccz + , : ,,<=#M|CaMWWWWWWWWMMMMMmM| )[p#ao#&$$8W*oo**oooooooaa#MWWWMokkkkbbbho#&8W*aoahbqwdhkmQUvx.xxxuvcczzz + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  HOLD UP, WAIT + ============================================================================== + : , , , ,, : , : , , ,  + : , , , , , : ,, : ] , ,  + : , , , : : , , ,:@/(} , # , ,,  + :: , , : : , , , + ;: : W ,  + : , , , : )[>x , , , >x@/ ; , :: , [ < , / ,  +: , , ,, : } { , , } ]+ : : = > M , ,  +: : : , , x , x; ; ;; :)[> , , ,  + : , , , x } | :, # : : ; ; #M| , , ,  + : , , , \ > : W\) ; < : : : M ; ; >x , , ,  + ,, , , , , [ : M W /(}u=#:: XW\)[> , =#M|{ : ) + : |{ ,,  + , , ,, , , ,# {: X ) @ #M|{++cv\: +..<=#M ,+XW\*. x : <.+ , : > ,( , , + , , , ,, , > (}<= X; + /.*< + + [ x@ux*+ ; +nn\ ; / ; , XW\ , , , + , , , , , , # x\ +).X|[=/{>;(]x\} <+ [=/{># ;x\ @).. [=/{>#(]x\}+@) ]x }+@ # ]x + ++ /{:#(] \}+@)#(+ . +@)# ]x\} #(]x\ @)# . \}+@)#(].*}+@)vu]x+ .@)< ;  + : X,, : ]x:} ).(]x\}Qc)#( \.vcz#;]x\}+@)<vY[=/XX#(XLJULY)#(]x\}+@)#( \}+ # x\ ;  + ; ] : >#(]QUXUCJLJcvJ0UzYCYx\CmLvc(]x\}+@)#ULx\}+@)#zXXXc..).X|[=/{cCL]x\}vccu*|[=/{ #z0C\}+zJJX|[=/C>#z]x + @. X|[= * #(]* }+@)LOJz\}+@)#(.* xz@),, } )O0Jx\}+@)<dpdh/{vn..x\xx@)<+ =/{>Oz*.. +zY#(]xzCLCUvX|*x/z>UZ]x\kpbhkk*b=/{u#(]x x.@)< +=/{>#( x\cJ@ + +  + , , X|, : ]x\C+@)#(]x\}+Wd#aadbhd@)hX|[=m{>#(]x*uu@)< [=+{>..]XU}++ +  + , , : /{>#(]O\pqOLJCJJCJJUY(]xM}+@J0ZZZOQCJXv]x\}UY)mqqx\ko*#wJJXYX{> ]xX0+@) X*../.u#0Cx\ +  + , , : X /{>b(khp0Q000Q0QQO0>#o]xCCJ@YUX|[=/vvvzUJQQQLznXUQ0Q{0Zpbbdh+@YLz|vU/{>.(]xCz.nu#. ** +  +: , ,x\ )<mQ[=&o>kooohq+@)#(]xc}YZw<dZ[=/Y0pwJc\}YC).*....*. + , ,# }+w)#(]xmb+@JdhdwQYu.*... + , } /{>k(]x\ok@)<oMWM#o>#(M&&o+dhbwmZO0QL#(QQQQQQQQQQQLLLL#ZkhobQUYYXXXXzczz(Lk*}+mw#(]k\}+wd#(]*bpd@)<oMM####*(*a\b*o)pppwZZZZmZZZZO00000Q0QQ{wko#b\CCJCCJJJUUYY#(]**kbb)#kbL\dhad<UcLbhmU + , /0pp*#dp#WadbkkbkaM&8#hkbhM#kkM&adddpddpqppqqqqwwmZmZZOO0wkoMhZQ0QQLLLLCCCCCJCmoWhbkbZCCwahmJZwLQwmQp#bJzO*8# + , # |0kdkMW*MB8#kkkkh*WW#abbh#M&Maa%@8abbbbbbbbbddppppqppqwwwwph#W*qOO000000QQ0QQQLCQb*akhhpOQwaaZCCJCLJUCwhkmLZha +, , [zhhhWWM%@8W#ao*M8&#ohaoMWW8M#MB@@$WakkkkbbbbbbdddddddpdppdhMW*dqwqwwwwwwZOOZOZmmwbo*hhooao*#hbq0QLLLCJ0pkdmqw + > , #MZ*W88@@&MMo*MWW#oaoooMMW&&&W@@@@@$W#*aaaaaaaaaaahhhkkkk*#MWW*ahbdpdpddppdbbkhaakk#W&&&&&M*hkdOQ0QQQQLL0mmZQ + , , [J&B@@$8WWM#MM##*oooo#M&%a<=v*@@%M##MMMWWM#####MMM&&MMMWWoo#MWM****oaao*##*hk*#ohkho*M88&*oadwZO00000QQ0QQQ + , #L$@@B&MMWWWWMWM*#MM&Wdu+ )Z$oaoa*W&&WWWWM#MMMMMWWWWWMW&8W#ao#####*##*aakk*&&W*bppbaW%&MMMapqwmmwmZZOOO0 + , :)OBB8WWWMMWWMMMM&&Mm[> =k#ao#&B$%&MM##M#M##****MW&8%B8#oaaaahhhkkkbkkkoWWWW*hkbbba#M#*okpqppqqqqqwmm + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  HOLD UP, WAIT + ============================================================================== + : , , , ,, , , : , W : ,  + : : , , , ,, : , : # , ,  + , ; , , , , : ,, ) : , ,  +: ; , , , , , # ; ] : : ,  +, :: , , , , , , , # W\ : @ , , {  + , , ,, , , , , +X (n< #M { : > ,  + , , , ,, , , M|{ + W ; , /: M|{ ,  + , , , , , ,, , [.x@ ; \ : | , XW:; >x@ W , ,  + M ]+ , , , } =#z|{ ; [> ; : XW : @Y ; +{] , , ,  + , \ , , , } #M , XW\0U>x: <*#M|{: )[>x@/(} , M| ; :[ =, ,, , , =  ++X ( = M ] , , , , ]+X :x@/ +<OCM| ] ++. uux@/ }<UCvx..+ : )Jvx ;< ) , , ,,  + } ] :)[ @ , , W\+ > ; =# . + \x[ @; =* u{,+nv\;[>x@, }xL# ; W\) =; /  +|{ X | = > ,, +@).(]x\}+@) ]x\}+@: | =/{> :  + >x@ #(]* @)#(]x\}+ )#(]:\}+@)+ : @)  += u| }+@)#(]*x}+@+ +.{>#(]x\}+ X|..v{>#(]x\}+@)#(]xn}+@) }+@) X|[=/{unc]x\+ @)#(]; }+@)<..[zJxC#(]x\}+@X.+|[=/{>#x]x @)# } @)#(]x\ * #(]x\nc@)#(] : @)< : (]x +x)< |[= +/ : + WLu[ /{ (m0\}+@)#(]x..v*).X|J=/{>#(]x\}+@) :x\}++)#(]x\}x@): |[M*{ : + xLQ#M [=/{>J(vcQZd@)*(]u\}+@ <0|[=/qbbw0xW}+@)<O|[= >#(]xv .@)< |[=/c># :x\}+ X)uzx ;  + | +YQmZnXcv=*{>#(]d\h+@....*=/ *# \ .@)#(]x\}O@C (].\}+ :=Od|  + @ZwmQz)#(bx\}+..*....* (]v..*@ X|[=un*.. x\}+@d#(]xQ}0@)#(]c\} @**X|v=/ #(]x\ ; \)*  + |wCcnYLYvJJ]vzvxnvJz|x=/{>.*...}+dOLX|[=/{>#d]x\}+nx X .=/{>#(vx\}x )<v|[ {>p(]; ;  + W )YuvQboq}+L0OmZQ=/{@#(uvuuuuuxx..vCC>YQXcx}+@vvvULQYc>#(nn\}LC0#n xu.+@)UX +/{u#+] *+ \. + ( =LkM*d]pdqZL)ccccvuunuxn|O=C0>#(]x\}+@)#uxxv}+kaMMkd*/{*#(]x\. @)xnuYz/{>#(ux\} .) + [..{v# * (c  + ] W&aZLwoopx\}+Q0Zwo%=/C>#(]x\}+@)<hpC=/{U0OmmQLQJc#(Yx\}+@)dd|[hhh>#Yc..*+@)<uzcx.{>#(]x\}+@)u(]x\Odd)koohW/{>#(]*.. @)<.nuX/p>#(]x\x.@)#(]uuuzYU0ZQmLv{>ddpx\}pp)<k|[=/..*....*..)O(]nv}+@) X|wwn xJ +: x@ (Zk*bdhk>#(qq\}8@%MM*ab/{>#(]mhQJUUUUUYYXXXzccz\}+@)d(]x\QZdh#wwZ\}+@bz.vd%h + , >x u@#hq]000QQQLQLLLLLLCLLLCCCCC<qd[*q{UYY]xQLX@cvXvvvvuuvuuuuu+*okZZpm/{>dq]x\hmxumpda + , ;|u}W@)$8#[=MW>#%&xMo+@dddpdp/*bwwmmZmmOOO00[=0QQQLLQLLL@pkXMb=CJCCJ]JYUYYXzXzzccvcvvvv\}*@dL(zZdk*Ov + }<Zb(]M%B$B%%WW$B/hh*8B%obbbddXWW=ddddddddddddpppppwwwwwmZd#*Wb<QQ[QQLLLLQQLLCLCJJJJJJJJ#(@x\a&##W#obO/{>YOLYpWw + +wab*&oao###W&8@8oooMBM%&ahkkkh8@odbdddddddddddddddddpqpqwd##&kwwmmmZOO00QQQLQLLLLLLLLLCQW@@@*dM*bpqddOJUUYYUqMq + Y#hoB8oo*###*8@&#*##W#WWoaaao#$@B*hbbkbbbbkbddddddddddddpb*#8apqppwqqqwwmmmZZZ00OQ0LQ0pW@@@@@Mh%#obZQLLLLCLCCoo + {]0#8@W*##M##8@%#M####W8****M8@@@@%#oahhhhkkkkkhkbddddddph#M&kppdddppppppqwwqqppdqwdaW@@$@@@@@B&ooWamL0QLLLLCm* + :@U%$$&M##M#8@BM#####8%##W%B@@@@@@$%M#*MM##*####**oohbho&M#B&o*abdddbdddbkaoho*ooaMWM&%B@@@@@8*#baoqOZOO0QQ0Lm + ; {u$@@$%&MW8%&WM#MM#$B#M%$apJa@@&#MM#M$%WWMMMMMW8$$B%%%8#o#WW&M###*#**#MMM*ho&#akbhbh#W8$$@@@WWapdwwwwmmmwZO0 + , x@&@@@$&&&&W&&WWM&@$M8%w<=#Mm{kM##&$$BBB8WWWWWWWW&&8%%%%$$M*#M&WM###M#*ooao%B%WabddkaaM$8&%8ohYUqqqpppqqqqw + , :|{k@@@$88%%%%%%W8@%*dv+X )[>x@@@$&MM###########%@$$@@W#####****oooaaao&%%BWokkkbbkhhpwh<= cpqpdddddpp + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  HOLD UP, WAIT + ============================================================================== + : : ,, , , , , : : ,  +, , , , , , , = \ x / , ] W , ,  +, , , , , } # , ,, X [ # | , , ,  + , , , , , , , @+ : ]+X : ,, , , , ,  + , , , , , , , x@/( M+; : [ ; , , : / , ,, ,  + , ,, , , , | + , , , , \)x x@ :}< | : : { +: , ,  + , , , ,, , , , : , , (}< #J| ].X ;/ < ,  + : , , , , ,, , : , , +XW );>x ,| \ < :| ] XW , + : : , < M , , ,, , /U} : M ] ) >x ( , , )[ x;: }<, # ,  +: ; , + , , , M|{mYuW : @/(} W\)[; }u=# , XW @ ] X ,  +: : : , , , M {]+ W\). Ydc(}<+#M ]vXW : x@/(}<=# :+YW ; >x ], ,, , ,  + : ,, , , XW\ [:x@/(* . |pL+ W\u +;@w(}< #MOZUuc*X) >xLC( : M|{ @/ , # , ,,  + , ), ,{>#(:x\}++) [=..* .. +}+c)#.Yx\}+Y)#(]x\}+@ *X|[=/{> (] | ,  + , (]x\} , # \}+@)#(]x\uv@)#(]xv}c@)#( +@ + { + #(.x\}+@)#( +* ; [= {> @))[ x , + , , , (]x\}+.z#(]x\J+@)#x]x0}+@).c]x\}+@)<Y| = {>#(]x\}+@) :: : , }+ =# ?{  +,, , , , {>#ZvnuY+@)#(]x\}+C)# x : : :: \; )[  +, , ,, , [=/{>#Un.\ +xuuxnn..un.(]xCnc@)#(bx\}+@)#(]x#}+@) [=/{>#( : : : ]: ,#M + , , , X|[=Q0>#( *\}+@)< |[=/{.#(]u\O+@z#(]x\; ) ; ; ; : Wx) + , , , @)YX|Z=/{.**...* * [.nx>#(]x\JXU)a(]x\}bm0<M|[=/{>#(:x\} +..X.u=/ ; ; X ; /.}  + , , , }+u)mX|ux.*....*...**#(]x\}+L)#( }+@)#(CCQ}+@)v(L0OJz@)*vv[=qb>#(]x\}+$)<8|[c/{>#YcuJ}+@)#(]xz}+@)n(JL\J+@)#(JQQZ+@)zv|m=pd>#(]x%}+#)vuzC\}+@ + + + +@pz. .*+ +}< , , [=/{b#(0C00QCC#a]x\}+@QL0OLC0Uu#(]xZ}+@)<C|[=#kkahdx*}k@)Jcx.=/{>#XYz\}+@ * + + \}aXnLu+. +uX+ :[ : #ULJczXYXXz|[=uuYY(]QC}vuckooa%}+n)<...*.{>#ncz\}+ * * ]xdxZU+.z +08$C{u# : }+@)#(aoMM*@)<0|[a/{>#(]x\}+@)uuu[vYJLmOOpU}+@hdX|[=kb>#h]x\}*....*...{>#(ax\...*....* .>#(xLQu*vL +Q8oopx\), (] \}mm*MX|wwpoM#odx\}+@)LXk[=UUYXYXzXzzzzzzX[=/{>#(]x\b+@##M]x.xx...*.../d>LmQx mq +qMddkrXn=# (]dpdd@dppphMk{>#mmmmO0O)bp|LCCJCCJJCJJCCCUJJJUUUYU(]#\}#@)zX|[h/{>uuvuuuuuuuuuuuv{>#(nnuxnnx..|[h/JCQ.xpm +Oohhb&h~W\/{>b(dbbbbbbddk[ddddpqwwmZ+hh<ZOOO0QQLLLLLLCLLLLLCCCLC#a]a#}JUY#unuuuuuu%@B%%*aahhhkhkkbb##$xdddddpdppdddpdddpdqppqpXkW=B{>ZmZZOO0O0QQLQQLQLLLCCCLL@)@@|[=UYYYYYX\}&oOQddZU +Z&#B&M#&B&%W@M*BW*#*8$88%W*o*ooaahhkaB@WbkkbbbdbbddddddddddddddphMMBbdqpqwqmwwmZZZOO0O0000QQLC0&@@@%OJCCCCCJwMd*MQL0CU +ZBW&M##B@$&&@8#@$M###&&M#W%##*####**M@@@8oaaahhhkkbhbbbbdddbdddpoM&8bdddppppdppppqqwwmZmZmZOmaB@@@@@%wLLQLLJ#om&*ZCCLL +p@$@%MW@@W&@$B$B$@W#MM####&$#####MW8B@@@@@%W##oooooo*#oaahhkbkbh&#BWddbpppdpppppppdbkbhhdd#WB@$B$$@@@&bmOO0OWdZow0OO0L +</J*@B&$@B@%M8&M%@@BWWMMMMW%$&##*&B%$MW@@&W&WW8BWMMMMMWW&88WM#M%&*W&&8Mahkkhkbhha**oh#oaooM**W8BBB@@@8dwwqwaMOmmmwmZmm +XW\)&@B$$$%#h#MW8%$@$&&&&&&W8@%M&@8aY+q@#*###&%8&%8&&&&&&88BB%&WMMW8M#*W%88&MM&8MW#ak8%#obbkbo#M%B$@@@#d0v<fQmwqpqwwqq + } =q%W%%&W&8888%%B@%%8888&&8@&8L[>x /@##MW$@$$8WMMM#M######M%BBB$@W*####M#####oaoaa%$BBWkkkbhah&B#*&W+ Lqqdpdpddp + + \zW%@@$B%%%BB$%%BB%%%888&B@U<, {mdWW$@$@BWWWWWWWWM###M#W$$BB&###M############*8B8%%#*oahkkbadwMO> /(Mqddpddddd + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  HOLD UP, WAIT + ============================================================================== +, : ,, , , , , : : , < {: : , ,,  + : , , ,, , , , , , x ( ; , } { \ ,  + : : ,# W\, ,, , , , :(}< : @:( <= | ] | ,  + ; : , , ,, , , X;\)[ : }< { + , , ) ,  + : : X , , M x@u( ; | + \ [ W )[> } , ,, @ ,  + :: , M| / , , = {u +\) > /( : | : {] , , ,, , , + , , \ { , , )~- @.( <=#M { , > @ , , , , ,, +, \)[ , , , #M {]+ W*) {, : ( = ] , , , ,  + /, , ,, , \C[, /;}< +X [; #;: ] : ; , , , ) ,  + , , , , ,, /(}L=cM + W\)[ x;/( <;# ]+ : >d@; =#M| , }  + , , [, , , \ , < =#M|{. Xav)[> @ (x<=#M| W\)[>x@/ } YM: X /(;:  + ,, , , , , , ( : ] XW\* . *zqUx#M .;+XXdL[>x /YXwJnc.{ ; Ww) > :(} X ) ,  + , , ,, , x +@); ]x.* ).+|[=J{>#(]+\}+@)#(]x\}+@)# ]x }+@)#( x\}+@)#(]x\}a@) + / ; ,+ )< {># + <= , + ; , , , ,|[ /{>#(xx\ ; |[J/{>#(]x ; #(]x\}+@)vXx[=/{>: ]x\}+@)+ ; ,x } /{+ Xu\  +; , , , ,)<u|[= x>#(]x\}+@)# ; }+@).XC[=/{>#( x\}+u)XX|[=/{>#(]x }+@) , => /(U< + , , , \}+@)# ]x\zx@)<q|[=/{>#(]x\}x@)#( :}+@);X : :, , | {:+X + ,, , , ]x\}+x)#cxxvc*@)0X|[=/{>#(]w\}+@) / + , , ,, >#(]xXc+@); [=/{>#(]x\}n@)< |[0/xv#u]x\}+@##(]x\}+@)&X| >#(]x\}+ : : : : <=vM|{ + , , , ,{ #(]x\ + * * (]xnv+@)#(] \}+#)<@|a&obZ#&@x\}p@)< |[; ..*.x\}; : : # : +XW\ [U + , , , , =/{C#(. * ** * .>#L]xzznunuX|[u..* (]x\}k@)#(]q\w+@) +* =/{>#z]x ; ; ; x@*( <C# + , , , ,< |[=/{..*....*....*.x/0z#JUvu}u@w<vv[=/x..*]x\}+@vYZZQ=/{>#(]x\ x )<.|[=/{>C(] ; ; ; #(.{ +mn\ +, , ( \},@)#c]x\}+c)zQQJ=v{>nv]xwQU@)o(].\++@cc*X[=/{c# + ;; ; /{>* @/;  + }+cQ#(]x\}+@)<wUC=/{>#(]x\v+@)XUQQ=/{.c(]QOL+@)#(]x }+u.nU|[=/ + + + [=/* . ;  +{_1> / x\}+@JCXLLCC{Q#(]C0}+X)#(]xhpwkadXqb=/{>n. x\}+@)zc|[=/ + + #(]x\}cXzULC[x/u>#(]xqm+wbbq#[=*{> * }.*.nn|[ + + @)#&dx\C+@)*oak=/{>#(]b\}+@)#(Qxwkk@)#(]L0wq@)*....*....*...+@MzcvvcczzzXXYYYXXXXXzzXX+Qb#(Cvuuuununnuuuun.xnx\8+..xxx...{>#m]C*>dbJ  +akhhbMobkbbx\$8#ahkhb=/{qqwmZmZZOQQQ|k=/CCUUUJJCJCCCCCJJCCCCJCC\}o@M#vccvvvuvvvvvvvuvc(]B\}vnuunnu=/W>k&0mpZ*c +#ooa*&hhhk#$]x8BMo*&8##*/pbdppqqwmZZ<a|[0LQQQQLLLLLLLLLLLLLLLLQ]ph}8@CCJJUUUYXXXzzccccccccccvc>#@]x\vuvvvvv[=h{wbqOvuX +$#oo8Maaoo{8$(]MB}+@M8M&&a/bbbddpddd@)$XmZZZZZOZOZ0QQO0QQQ0QQ{L#haoW}QQLLLQLLCCJJCJJJUUUUXYXXX/{@@(]xcccccUBM88@@%%BB%BB%8$$888&&W&M@Q|{] Ww$#MW@B%BMMM#M**#**o***W%%888ooaahhkkkkkbkbbkd#8W88hbkbdbbbMadcL( #oQwwwwqwwmw + Mchkao##*ooooo*ooaoaooakkkdv[; }#bk**hoakkbbbbbbbbbbbbbkhohppppppppqqqqqqwwqwkabbhbqmmmmmmOOY|z]+ ,\OCOOOOZZZZ0 + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  HOLD UP, WAIT + ============================================================================== + ,, , X , , , , = M : , }< , , ,  + , , , \:[ | , [ , W , , , , ,  + , , , ( < # ) > @ < , , , , , ,  + , \, , W =, ]+ \, x =: : ], , , , , )  + , XW } , , > ; : ;] X : { >,, , , , (  +, , , , x , , =:M ;X > : , : ( = , , ,, ,  +: :, , , , , , , / +X :)[> @.( = : +XW: , , ] ,,  + : : ,, , , > } ,| /*}<n# |{] W ; @/.; #, ,  + ; : , , ,, ,= ]+X ;)[ x@ , M +X : / <=# | ; ; , , ,  + ; : , , , X M| )[>xc/(: + {]+ \ [ x ( #M; Wz) : (}< , , ,  + : , , , , @ ]_>W\*[> /(}<+ CL]+ W ,[>x@/( ; |{]+XW\) x /C}< ;M| x /(}<=, ,  + : , , , , M XW\)[> : |{ ++ [Z0c/ } vzwqnXW [XYZcnu<= ,nX+X: >x |+ ; ( , + : :, , , , + ) =/{ #; x\}+@)#*]x\}YU)#(]x\}+ +# ;}+@)#(]x\m+@) X|[=/{>#(]nuc+@)#+ }+ ;|[ ># \ x@  + : : , , ]x\}+@)cX|[+ >#; x\v+@)#(]x\}+@)#u]n\}+@ X|U=/{># + : | < , { + , : , , {>#U]x\.u@).(]x\}+@)*(]x\}+@) ;)[> + , , x\}, , =/{>#x.x\} *nnvuxxun**]xY}.@)#(]x\}+@)<: /{> (:: , :< # + , / }+ , X|[=/zJ#( * @ <* [= { #(]J.Y+@)<.|nX/{>#(]x\}+@)LXZ[=/{>#(]x\}+: |[= {>: : , | :+YW\ + + < |[=/{ x\} @)< [=..>#(]x\C+Y)<x|[ /{>#(]x\}+@)#(]x ; @),@/(, + }+ #(]nznJ*)#($M*WkpZ<B|[=/O># ]x\} +) Xn[= : : , |[=,M|{ , + / @)<* ..*....*....x)0X|zzcxYcU]x\....*X|[=k{>#(]x\}+@)# \}+@):  + , ] \}+* ...*...**...\}O@)CQ|c=x{>XnYc\}+x ..|[*/{>vLZOQ}+@)pX|[=n.>#*]x\}+@)#(] *...)*....x....]Z\}O@)vX|[=/{>#XQOYz+@.uX|W=O{>#(]x\}%@)MXc. /{>Y.nz\}+@)< = { ;]x\}+ X :  +addC#M|{, =/{>.(xxnuuv)#hmJ\}+@CUOZ[YYX>#zJLQ}+@z#(]*\}k@)#(]x\ :  +Q0mk*Q)>x ,@ |}=/ULQzUCUJ+@)dpqqOC{CUXYCJC00CQCXYUn{>#(]0\}+@)UX|Zp0pbb(]a\d+ + =/{.xx.*\} + ;/{O#(]. ;;  +LLCLQ&*vz|] \ X|mOJ{>#(]xbhok)<QCCp/{zzX]x\}+@) (Jx\+ + [=h{>Y) + /  +00O0hoOqYC#( +@)WX|[JJ{o**dq\}+@)#(]x\+ * /{>#(]x + X|[=x. ; |u] +wwma#ZZ0JJ{>#( x\JZ@)LQLOhq{>#(]UYXYXXCm|cvvvvcccccccccccccv/{>#v]xZ}p@)# * ..**...*..{>#( + )  +dpaMpbdpk#=/{>#(Qx\}QQQ# * +m)#kW&MW*@pqqwOO0LC#(]x\}+uzYJCCLLLLLLCLQLLCCCX|a=8{>UYXXXczczccccccvvvcvvvvc@)@X|[=..*.(]q\YLYn+  +k88haoW#aa*B@&<B|[8*{k#MWx&MkdbpqwmO/{>@(]xzYJJLQLLQQQQQQQQQQQQQ)bhoM=LLLCCJUUYYYYXXXXzzzccccc\}+@@#o]x vc.  +WBao8MMooo8$&##$Mh$8aahhM#a*#hbbbdqqqp&@$bLLLQ0O00ZZmZZOOZZOOZOO0ob&hL0QQQQQQQQLLLCCCJUYUYXcczCa@@@@@pnxxn.bULOY * + +&oaaB*%&o#@$#W%8&88B%o*ohkhkh&kbkbkk*M8@@@Bodpqqpdbkkkbbdqwmwwwwk**&qZOO00QQLQQLLLLQ000O0CQqp#$$B8B@@@pYvux#uLmY*. + +tCbo%&%@8&B@8$B88W#%B8###o*oh#8bkbhBp*W@@Whaaha#*hahhhaoo##*aaa#Wdh*#M*kdqqmmZmmwqqppbkqbwb*h*o#***$@@qJXvvhcvL*....*  + \)OYo@%%%%8&&WWW&8%BWMM###a&8ka$n{z+B0bdbb*##o#*aoaoaao*###*ooa*MohhaM#*ooa*#*o*kqhWhpmZwOZka*&*&@@BLYXYwxunnxxxxx  + #M#WM8&W&&WWWWW&@8MWW###oB8p{ >x@k(dkkW%W&ahkkhkkkkkbbbk#WW&&8hdbkkkkkkkkkbbdbp*&#&#qmmmmqwb8oh&$ZnvUmccvvunnxx. + \<+o%B@@$%%%8%88B%&8&&&&Wok< :|U]f&8$&B8#*#***###*#***o&&8MohhhhhkkkkkkkkkkkbM8MM8akddpqwmwZQ\q[>x@n(}UYXzzvv. + } ;#qkhM#*aaaaaahaaahhhk*+[+ :; >t@o#ahohbkbbkkbdbdbbdddppdpqppppppqqqwwqwwwwqahbbhhdmmZmOOQQ(?u=: |.]+Uvczcvc. + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  HOLD UP, WAIT + ============================================================================== + : , , , , , , , | : , , , x@, , ,,  + : :, , , , , , ) { X : @ (: M X: { , , < X, + : : , ,, , , W > < X : +X \) x : < > , , @ , +: ; : , , ,, ,x / <=#M: ] W\ # | , , , , M ,  +: : : , , , ]+XW ; x ; : | , , , ,,| X , , , W ,  + : : , , , ,\ x@0( + # |{]+XW: x , X : , ,, , , , ,  + : : : , , , =#ML{]UXW\)x> @/; M , , ,, , ) + : :: : , , ,] , +X ,)u> @x( <*# @ {+ ,)[> , , ,  + , : , ,, , , >x , <=OM| +XW\ (} M )[+ @/ : ; ] W , ,  + , , , , , , (_<; ]+XWQXz> * <=#M ;+X \;[ /(} ; |o] :[> < , ,  + , X / , + @ :} #M|{].X )[> . }hY#M: ] Xv\)[>x +<=#M|{]+ )cu:x/ }< \ :  + | + W, M|{+ XW + @; }<* *.x*Lz[>xu*.YUaqM|{:+JUq0ccx@: }<Lxu| +XW\) / <=: |{ +  + + X >#(]x\}+* #(]x.+ @ +X|[=/{>#(]x }+@)<O|[=/U>#(]x\}+ )#(].c} ; /{>#(]x\}+@)< |[=/{>#( x\}+@)#(]x\}#@)< + /{+# :}+@ ,  + ,X|[=Uu>Xv]x +@)#(] ; @)#(]x\}+@) ]x\}+@)< + #(]x :/(  + ,{ } @)<w|[nU{>#(] *... #(; \}+@u XO[=/{>#(] \}+c)YX|[=/{>#O]x +@) x | ]+ + |[ \}+@)<z|[=+{.uvnuu.*nx.X|[c/.>#(]xun+x)<p|[p/{>#(]x\}v@)#( ::}+@; X : , ,@) \) ; + ) x\}LL)#( x\}+@+#*].X}+@)#(]p\}+@)#(]x\}+@)WX| /{>#(J* }+@: : ::]x\:+X :  + , + {>#Q]x..*....* + #(]n\ ;#(]x\}+h)#..c\; ; ;>#(]xv/ ::  +)+X @ |[ /C>#..*....*... */ >z(] }+@) +|[=/*.. x\}+@)#(]x\p+@).*.[=/{>#Y]x ; ;=/{>#MJ{ :  +x[](} ,| .(]x +@) ux./{.*..x\#+@)XOm0=/Y>#(]x\}Y@)J(] ; X|c=;{JX>;  +kLX(}-W~+ {># )#(]x\}+@).u]xd}C@)&(]c\}+@)zxY[=/{n + ;) }w@O<XXzYUUYX(]x\}+@)<q|[=/+>#(] ..x*)#(]..}+xx.Yc[=/{++ ;}+q)v(]xqwmkkwXabkkzCv.. *}+@nnn..=/ ;x\C+@.< + = + +0OOOO0O*qZ#(]xOJ+@)#(YxQ}+.)<.|[=/{># ]...vcYLJQ[=/{>m(]xpm+bhpX#[=/{...*...+@).X|[= + (]Q\}+@ + XY\; +pwwwmm#dQL@)<Z|[=/X>a(]CQC+kahd|[=/{>#(]b\nxx...*....*....\}+v)<Ycu=/qZ#(]xpZ+wh#(] }: .nO}  +bbddpMbwqwO+@)000xbb+@)<CCJUYYX#m]vvuuunnnnnnunuuuuuvuvu)vX|b=/o>#(]xpd+@)*...*....*....*@##(]: MnXx  +*8kd8hdbbd*ap+@)<@|[=/{>Z(qw\OQQQQQLLCJ{b#(ccvcccvcvccccccvcvcvccc)<q|h=/cvv(]Q\.*....*xx.**...*.}+@) [z/{>#( )XU*  +$8hWWakbbhM]bbd+%)%$|oakk>#(mmZO00Q0QQL=o{CUUYYYXzXzXzz[zXzXzXXzzX+wd<M|[cccv#(u*\}..nucvvnnxn.*.x\}+.. X|[=z{>}uOC |C +$Mo*&8kkh&hkb]x\@&@)B*ka&&**b(dqwZOOOZ0|#=/QQLLLLLCJJJJJCJCCJJJCCL\bda#<UUYXzccn(]x.ucvvvvccvvvuu(]x\}..*%(&xB}+WW#@]x\x.@)aX|ZwOUu.x* +bZW@*o8**##=&@8M($M\&8@abdddpq+@@#o]8\}0QQLLQLCJUUUUJJCJJUXXX|[=/{@@(]xvv+@M /+}<*@%$B8&&8888%B&WWWWWWM$#ManW vr>adM%M8ohaaaaaaaoaaah*%%88%*aaahahhahkkbbdbbk8MW&apppwpdw#&ddo8U=?M|ZLQQQQQQ + , ,] XW0B$@$%%%B%%%888&&WWWM%%z@/ <v##W$M&8###*#######*#M#M&8&#aooaaoaaaaaaahhhk#%MM8MabbbdpqmwZC#OX ) QQQOOOZZ + : : @ ]})o%$@@@@$%%%%%888WW#%XM XC[d$&&%BMWMMMMWMWW&&WWWMMMMMMMMMM#**oooaoaaao%8&W8%&hbkbbddwm&X@ * [m0mwwqq + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  HOLD UP, WAIT + ============================================================================== + : : : , , , , ] , \ : , W ,, , , , , +:: : : , , , , x , [> +X ) / =: { , , ,, , =  +: , :: , , , ,< , = M| ]+ = , , , , , X  + , : , ,, , ] / < \)[ / } ; {] , x , , , ,  + , , , , , + x <=.M; X, ; ( ,, >: ( ,=# , , , ,  + , =#M| , , , + W , \.[ x@ (} : ::W , , : , [  + , + ,= x @_j <C# |{ + , ,/ : ,, : ,  + ,, x @ ] # ]vXW )[ @ M X ( #:|{n ; , : ,, ,  + ,] \ )[>x0/( = |{ ; [ | ; WO) + }< M , , , <  + = , [ [ (}<=#MQQc+:W +x@/( < ,; XW\) : /cY . ,{] [> , ,  + X , > # @/(}<= M|{]+X. +[dC@/ } ;#YvmY+XW >x@n(u<= M {p+ *[> | : ,  + , = , =#M|{ +: \ [> *..#C0v] Xz ..>mY (} =OUU x v* [v0Q/ ;; #M|{ , /( <= ,  + < ,[ X|[=/{>#(] }+@)#(]x\U+@)#(]x\Y+@)#( x\ )#(]x\}+@)#z]u\}+ ) |[=/{>+ \+ @ ; [=/{ ;=  +W\)[> ,,@ ]x\}+@Y+(]L\}+@)<; /{>#(]x\}+@) .] @)< , (] +X [ +.}<=#M ,\ >#(]vcc+@)#(]0\}+@) |[=/c>#J]x\}+@)#(]x\}+@)< :=/{>#(] \: : /{> @/(} , +.*.W\\[ ,( =#{>vucx\ .vXzYXncYv.#(QYnv+@)L(]x\}+@)#(]x\}+@ : [=/ # : : #.. .*+@)xX|[./.>#(CcZ}+@c<nC[=/{>#(]x\}+@)#(]x\ ;)x  +WdZMWLav),=/ , @)#(]Z\zY@x#(@8#}QZJ#( \}+@cUXu[=; ;; \}+@)#(ccYC+@)< |[=k{>#(]xmQ+k)#( +@.nz| ; ]z\}+v): \c[  + =dMkbdqCf#(]x\}0@xnxx..x....*..x+@0#(Q0C}+@)#(]x\}+ }C=  + W\mpamYcJO)#(]w\uuuvvuunnxnxx.]v00+@OUcu[=/0zcQXv\}x.n.X|#=Y{cXYUxc}+h)aX|XX/{>#(.x\}+L)< + /{>#(]x\ +*W  + (}kOUXYUY}+@)#(]vvvvvvvvvvuvvu#YZxCm+@zU0OXU}+@c#(]x8}+&)<x|[=/{YuY]x\}x + [U/ >#(] + z(}< +}t{JJCLCCUxm}a#)#YXYYY+@)h0Jx\}zLUwQJUJX{v#JLO\}+v)<Y|ZwOm>#B]xo}+@).n.[=.n>JX]x\} # +|. +C +8hYLLQLLJZkqx\}*@ #(Qx\}+z)#okaaYCv..*.[=/nvuu.x\ @)ZX|[=/.>+)c @w +kZOZp0JQdp>#CCx\}+ )#(qoo*kdQZJZ[=/YXX(]x\}+@)Uzxx\mOb)#(...*....*...*{>#(*.\}+@Z#L]x@}+@OZXpa=/{>#CCCCUY@00Xccvuunxxn.x..xnxxx[nu{>u(bx\a+@)#.]x\}Q@)<wUp.* nQ +qM%bph#*0CX|[=/Q0#(8@\}+wmpbmOQQLQLLLCC}Z0)cccunxxxx.x..nnxnnuuuvvv>p(]o\cv@)<QC[vvuxxnnnnnnnnx..[=/{.#(]ULZ+@)ZZ*.XOk +d@*qo8awwZ)<0O[m/{@#($M*hb@)<mZOOQLLLQLxwO+zcvunx.*....x.xxuuuvvvc=/d>#h]cccc@)Uzcccn{vvvvvvvunxxX|W=.{>#(]C\}+pw* 0#z +#B]h*&oh)wmmZQQQLL(px\zvvx..**...*....nuuvczz|[k/*>#UXXzcc@)zcczccccccvcvvvc)<@|[n/{>mw]x\q0.uoU* + >~(vqa$bMh}+@@MM|&#/{%#d]#W#8@qqwO0OLL>q(]zvn...* *...xxuvzzzzkdmQcx..*Q + |{?uMk$]x\@8@)MBM[%&{a#a&x*&bppwwZ0Q/{@#(c.. +@)#LQc.xxX + >x@w#8@WM@&M%88W&8$oaaa**h*#ddqpwZZmW@WCu.. ;=# |{ *.vcXXYJLJqdoMLLLLLQLLLY* zJLCCLLCJJJYzCo@@@@@Z}+ZhUJx.u..nnn + }< , |{8*&%%BBB8&&&M&BWooohhkd#oddqppb*W@@@oU.+XW > .xnvcXUCCCJhdWp00000QQLLCJJJCCCLQ0QCQmd*$B%8%@@@L*ux)[C...xnvv + , >##M#&&WMMMMMM&8%&*#*oahh8dbqh#MuC@@%kmCu/(}<=#M.uXJ0ZOQ0OwoawMohkbwmmmmOOOOmwqddhpbwpohaa*o*h%@@J/(} =....nucc + : ,M8WM8$8WW&&WWMW%@WMM#ooh8#ph8p( /@%QYYzuXUvxUvcXJQOwbaaoahapqkho*ko*ooohh**o#adpWabqZwZ0dha#ho@@8{] XW ..ncczc + : ::)z*W&8@@8&&&&&W8%WWWM##a*Bap)# {haLOQLddwOQUYUCLQQ00Omqh*a#M%8bpdhahhahhaahkkbd&WMMpZmOQmZmWaph&>x@n .xucczXY + : : =#Ja8$$@$BB%888&WWMMMM#a%JXW ,x%QZOk#p*OJLQ00OOZmwqpddoWMMModkbbbbbbbddddddbdW##W*qqwmOQQ0mU.b# {nvcXYUJCL +; ; \)QXq%B@@@$$%88&&&WWWMo&n/ , MwqZh%ok#qwwwwwqpqpdbbbkbo*Mohahaahhhhhhkhkkhha8MMW8#bdqwZZQQCLk\) <0cJCLLQQQ + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== +: , : , , , , ) > , ( <; , M , , , , ,  + , , , , , ,| W X { : [: , ,, , ,  + ,, W >x , , ) ( , x ;( ,, , x , < # , , < , , , ,,  + , / { , \ , { , |{ : :: # , , , : # + , , , ,  + , ,( , , x /( # , , { ; , x , , , ,  + , >, ,, , # {]+ W ) x; : #M , , , ,  + [ M| , , ,X \)[>.@ ( < , ,W\.++x@ , , , ,  + ] < M >, , x <=# :] XW ;/ = \ x@ ; : ,, , ,  + ] ) M , , , =# ]+XY\),> ;}<= | x@ : #J| ; )[> , : ,,  + ,, } , , ; + [>x@ JJ<= M ]+XW\) }<=#M|{ \n : {] , ,  + #, ] , +x /(}<=.+ +Zn\ [* xx=#M ]+** + (Un= + ]+ /(+ :  + # W, [ ,: @/ : | ]+ + /.}< #M {:+X : > / } =#M {]LnW : @/(} ]+ : @/  + XW\)[ { # ]x\} +) ;[=/{>u( x; +@)#(] \}+@ #(]x\}+ ;X [++ #( ,@)#(]x\} < |[=/{>#(]x\}:@).X*[=/{>#( @): |[=/{ #(]x\}+ | ; (]x\ | [> ( +M+ *+ <[| }+ )#+ }+ )<X|[=/{> \}+ **X| =/{># }+ ) , }+@)<::# :] +; * } =< | ] }+@)#(] +}+@)<c|[=/{ (]x. +@)x + #ZXu]OXY@) X| > ]x\}+@ucX| *.uuzunvn.*@)YX*[=/{>n.]* }+@U#+]x\}+@)# x\Y/ =#M + \0hQk&OU}+@) X|[= #(]xXL+@) **...{.#( * }+@UnuJ[=/ >x(]x\}+@)#(]x\}+@)#(]x\} :|[=/{> (]x{ , \) + <=bqbbQZ\}+@) , { #0]x\. *# ]+\}+@)<UUZXun>#(]x\}+@ :|[=/x>#n]x :)#(...*....* {>c(vx\}+@)n.vx= {>;( x\}+@)#(]z\}+@ [=/ .#(] ;+@)xM:  +Ux@ }<hqO>#(bx\}+@ [L/*....*...*...|*=/U>#zXxvvJ@)#Q]x\* # ; \n+@)JX|; /\Y[  +cJLn[_>Lvu/c>#d]x\} ) ]X\ +q)< [}#= : +kLQhdn/YYUUX/{>%(]x }+@)<cuuvuvuvvuux..@)OXYm=/v>#(]x\}+zCUvX[=/.>#CnJ\}+@)<h|[d*{>#(]x\}x.ucX|[.+ >#X] \}+@ +Y );  +kh#pXCQCLLX|qkw0q#( x\}v@)#(]x\}Ld0LX|[=/{m#YXXv}+@YzQ|[ {v#(]kZwmZ)<w|[=/n..*]x .*cu#(]xLOZJ0O0Q[m/mZmw0x\wC@XLL0m0LLYvzn.\}+@)YX|[=x{>#(QQ\}+0dq#|nn/{> ]x\..xx*X|[=m{>#(] \}+| +CW  +#ZQQa8wCdkm@)QQ|[=${>#wqOL}+@)<aoMahwdOq]x\UJU)#*.zXULCLQX|[=ZXY#(C0qwZ@k#n]x\O +JXJ +CLOW%bpahO\0O@mkp|[=/&d#(Lx\###ahX|[=/{>a(]x\}zzccczccvuun(]xv}+vx#0CxOp+@)..*.. * . * }+@)X(OC ++v0m +00*%bZb*#dmm\bh@)ZZ|@=/{ZOqob\}+@)<QQQQ/wq#CJJX}cccczzzcczcvunx\}+@)bX|k=/{>#Zwx\}..*....*....*..\}+@)%XJL=/{>LQ * zwC +zhBhwhMowmppokqqwq)<&@[=/{daw]xZZO0000Q[wp{LLLJUJUXXzzzczzzzzcccccv+d)<a|nnx{>JJ]xxxx...x....*...]x\}+h)ZO|[=q{Q* =ww| +WZ#Zk#qOdk{*b(dxb}+@)<@M*h/{>wqwZmZZZ)0Xqk=0QLLLLLLCJUY<XXzzzzXzzzc\b+qa<ccvv/{Xvnuuunnunnxxnxxxx#(8x\b+@)ZX|[q0*.mox. +:}<qdUcQWwh/{>#%*oo&#@)$Xa#Wh{>dpqqqqwm)ph|Q00QQQLLLLLLCCCUYYYYXzXz]k\ak@zczcccvcvcvuvuvccuvvvvvv{>@(]x\}OO)aZB[dh%%*o]%\}*&)dX&W&/{bdppqqqw@8<O000OO000QLLQLLLLCJCCUCU#a]#\}XXYXXXXzcczcu]zzcccccccc=/@>#(]#db#@mqY.vc*Cq + :<=mdo@X|[@/{*&8]x$}+k)#W|%a/bbddpq\}@@)wmZOOOOO000000QQQQLLLLQ{o#WpxCCCCUUUYYYXzXzXzczzccczz|[@@{>#(MxqqqmOJnvvUX + ; W\jm8B8$$M%%8&W&$8hhk*Wo*Wkbbbbddd&@%pwqwmmZZOO0OOOOOOOO0000QOhp&pLQQLLLLCLLLCCLCCJUYUUXXzXZ%@@@@axm&q0UJOJczzvv + : } =*boM&8&W#W##%%*oohhhk*Mdkbbdaa&@@@MdwwwwwZZOOOZO0000OOOZ0Zak#Z000000Q00QQLLLCLCLQCCQZqW@$$B@@@o0%wkkLvzzzzzz + : + ~okW8####M##W8B8###oahh8bbbb*MM&@@@@&*kbpdbbpddpdqqqmmZZZm#kh8kdqwO00OOO000OZwwqppqmho*#**#*%@@WQWQw*pzzzzzzz + : , /{zW*%B&MWWWWW&8@WM##*oa8*ddM8tWqW@Bbpddpb#hdkddppbko##aoa*#wqbh#Mbkkbbdpwmbkadwd*qwmwdOpaoWMo$@@pwWXwOYUXXUJU +,, , ])q#W$@8WWWWWW&%MWM*#oa*%h#O< +}<$mqppwaohhoakbbbbdppkkhohbao&*dpd**oooahhakkpqk8M*bmmZOwqw#&#&@#X#LJCCJJUJCJ +, ,@C%MWB@@BB88&WWWWMM#*aa@J#M ;] Xdwwqqh8oWdmZmmmwwmmwwmwd*##*M*pdddddpddddpqqqqd&*#MkmwZ0OO0bZLxz/nLcJJCLCLCC + , {O&&&B@@@$B8&WWWWWMo*CX] , /(UJqb&akMqwmmZmmmwwqqpppb#MMabbbkkbkbkbbbbbbbbk&**M#kqmOZ00LQ#MO{]+XCJCCLQQQ + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== + < , , , ,, , W / } @ ( , , , , , ,  + , , , , , ,, , }< # | :+ )[> M { > M ,, , , , ,  +@ { , , , , , , +W ) ; / ; :{ : : = ,{] \ , , ,, ,  + x, , [ , , , , , : |{] \: , : x@ ( , , : , ,, , + | ,, > = , , , , ,{ X*\ [.x ( + | ] , , : , , , + , = \, , : , [>x@ (} =#M \ /, ]+ ;> : , : : , ,  + , < ,, : , #M|{ W+ [ <= |; [> ;/(}:= : , , : , ,  + X ,> , , ,, , )Q>n@/* #M|{ +;W );> /(}< , {zx; + @/,,< , : , }  + , ,= , , , }<0qM|,] XWx)x>x@ ( <;#M|{]+X >x ( :#M| W\: ,: : ,  + + { ,>x@/( :|{].*WCdY> @.n*vxQk|{] WULQnxnx(:<=n.|{ +W\ <= , , ,  + x (}<=ux .x \)[. + <=YM {] X \X .u@ (}x=#M|{] Wn)[ ; }<=# \) , , {  + [ x@/ < #M|{]z* . ; (}. * * \)[: (x< #M {] .+\ /U}< ; W\)[> <=#M ]+ : , + _#M| ]+ W}+@ +@). |[=/{>#(]x\x+ *(]x\} @) @/ x\ +@ X ]x\}n.)<+ {.#(]x\}+@)< ;=/z.L(]x\}+@)#(]x\}Z@ #({ + W*) + }< #M { ]x X {>#(]Y\}++ X|[=/{U#(]x\; #(]x\ +@ :X|[=/{>#(]x , z(] @ [=/cvY(]x\}+@.*.|[=/{X..]x\ +@)c.|[v/d>#(]x\}v@z#(]x\ : #( \ <m|[cc{> .nvczYunzcx*=/Ln.(]x\n.@.xX| =W{>#(]x\}+@)#(] : +@)# ] +@)<Q|[=. *.(]x*.+@)<.|[=Y.J#(].\.+@)#(bQCzq@)#(]x:}+@)< =#L|  + [ (pZm|[=/ > x\}+0)<....*{ *] +@.uX|[=/{Yxu]x\} @)#(]x\}+@)zX|[=/{>#( +\ .z)< [=/{>#( \}+@ :\)p> +}<=#M|{]ww)XX|[=/{ , xQ}+....*....*. .\}uxux. [=/{.n* };@ #(]x\}+@ X|[=/C> x\}+ : <Ck +YX~\cJQYXv+@)nX|[=/{ (Jxxnuunnx..*....n]Oc}Xvc.cu0=.{>#( + + )< . =/{>#(]O\U+@)<*|[=/{>#(]xL}+ )XX|[0/ ;(]x\; :\ +QawhmLXzzXXXz@)aX|[=/{>#vvuvuuuuunux..{>Z(]LCnn@)Y0wxhhun* X|[X.u>#(]c\++U) Xp[= +>#o]; +(  +cdobLYJCCCJx\wkp)0(]x\}+@)#(]+\L++)# # +]+ +OWmCQwdOLQOpbm\}+@)<d|[=CJJUU]x\}+@)#(CCCLUccu |[= { #( +@)#(]L\}+@)<+ =*{ O); n  +CZ0Zo%bZpabm#(000}$@)qZpmQZZ0Zp]xbdqpQCX|YYJCYUUczu*+ ) X [=/;>#(]x\}+@)zXXQ0OZ*#(]x\+ +X|..nu>#*]x\}.@ #(]x + * {>#(] }+@vYX|[w/{> * * #(]w\}Y@)#(]x\}a@)vvuvunnx*.. **+@)#(]0\}+@vUQ|[= * * ...*.|[=/{>#q]x\U+h)< *UqL + + ~#kp*W*dddXoobpddd(B$\}qk*#Z] +}+@0#(km\}*ch0 /O +, ]+Xd#Mba+@)<WahM${>$##o\}+ddqpwwmZZ>pk]QQLCUUYzccvvuunxx...*...X0[=q{*....\xxxxxunuunuuuuuuuu+@%<h|Q=p{>#k]x.b#x*Lw + >x>/(#o#&\k+BB##|%=/8&#aW&\}+dddpqqwmd*#QQQLLLCJUYXzcvvvuunnnxxx)ZXqp=nnnunnuuuuuuuuvvvuuuuuvv\}@@)pX|w=/{a#(cMCuQwh + { +z$&]x@B+@)&%|[%/a>*8&8h}bdbdddp=%{mZO000QLQQLJU[X/zcvvuvvv+q)bk|vuuuvvvvvcccccczzXzcczXY]x\@+MMakM[wh{>cvxJpQw + x|~W@&W@x\&88M<B%[oao8#&8xhkkbddX|@=/pqmZmZ0O0QQQLLJJUUYYXXX\w+hk<XXXYXXXYYYUYYJUUJUJUUCCL#(@@@&+Wh<hkpw/XXzYYnz + , + qa#&B%B%&8&&8B##**WW#&#hahhkkdW@@opddqwwwwZZZ00QQQQLLLLLLJppoaJLCCLLCCCLLLLQLQLLCLQLLL0b$@@@@8d&*dZ0wmCUYYYUU + x*oW#MMMM##M8%MM#MMM#*8aoooa##W$@@8obddddpqqqwwmZZO000O00Lkd#pLLQ00QQQQQQ0000000ZO0Zbh8@BBB$@@B&Wh#hQCQQLLCCJ + =< a*$8MMMMMMMW%B#MMMMM#8###*&M88@@@@B&#ahkaahhhhhkdbdpwwwqh&pW#hbdwZZZZmZmwqdbbbhdhkhM**#WW&&@@$k#w*Wp00000Q0L + +B#@B#MMM&&W8@WMMMM##%&##M&WbpQ@@#kaooo#8a*ahhaaao#MM##*MaqdhaMokoahahho***okp##hbpbbdo*M8W8@@%8#ZaqZOZZOZOO + )[ (}< \%BB%8&&W&&&8&&&WMMMW$*#&MU[) 8vm*aoo&WMM8##***ooaaaoo#a**W8#ddk*oaaoooohkkbdM%W&addddkkh88M&$*&wwqqqqqwwmm + ,, ,Xv|\m$@@@$B888&8&&WWMM#BWh0)( +U>#o*8B&BM***oooaooaaha*W&MM&#khkbbbkbbbdbbbkko8MW8obkbbbddhdwdoQ-[dqpqppppq + , : ( *1(o$@$BB%888&&&WMW#8h\ Q r&MB8&BMMMMMM########*#888W*oooooaahkdhhaaaa*%WM88#hhhkkkdanCn}< )bpdddddd + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== + , | , , \ @/ :# |{ : + , , , , ,  + , > , \ : [: / } , , , , , , , + , ] , , < M {: X )[>x | ] , | , ,, , , , , + | ] , , , +\ ;; / ; ; ] , : : # : ] W , , : ,, ,  + ,,( , , , ,(v +M| ]+ \):> : W ; :} , , , ,  + , ] # , , , ] Xc\)[>x@ ( + :]+ \ , , , ,  + ) @ X , , , ,>.@ (.< #.| ( ]++ \ :>n@/: , , , , {  + /( , , X [>x , ,, x Mc{] W;)[ += { + >x+ (n ; M {,+ : , , , ,  + | , , (} , +X , ,, )[zu@ + #M|{ X \ [:x (}< : ]oX + @/ <= XW\ , ,  + , , , x > , <=#z|{,+X \X[cx@ } ;#M|{]+XW ) >Y@ ( :#M| = |{]  + ,, , , = ) , ,} , ]+X.\oqzx@/z*.YXhq{]+ WJUqUvux(; =#Z|{ +\) {  + , , ,,+X | ] X :[>x* <uuM| ]+ W )U 0@ (}x=;M|{]+ WuU[ x ; }<=#M X , =  +>x , , , \} /{>#:]x\}+@)#(]x\}*@)# x\}+ *x  + M|{ + ,X , ( |[=/ ; ( ;;}+@)<c .* >#(]x\}+@)#(]*\}+@) X|[=/{> + }+ ) + =/{> ) < ~*|  +\) +x@/ } , > @)#(]z\}+@)#c]x\}+@)<z| =/{># .x ) + <*+ |{]+ , , {> ]x\}+@U#(]J\}+@) +/{>c(Ux\d+@)#(]x\}+Y) X|: /{>#(]x\:+ : =/{># :: +} =  ++XWuxuwnY/\,, , {>#(cxcX+@)#(]U\}+@) X|[=X{>c(]x\}+@)#(]x\}x@) : =/{ (: : #(]|.+ \ + /zCm#Mc)u]x\ , [=/{>#vvx\*.uzzYXcccn.#(Lux}+@)<Xv[z/c>#(]x\}+@)#(bx\} ; X|[=/{>: }+@).@ (} + ,]|kpkkn<\ x\: #.**..+*)xX|*. {>#JuL\}+X)vQ|[=x{>#(]xqaopO<M|[=/OO#(] ;; @)<C..=/{ ]x\}h@) X|L=/ : M.{]  +, |*pqdC{>#(;x\ @)#(]0cJ+@)#(]x\}+@)#(]x @)..X[= ;#(]x\}+ #c]x\}+@)ZX|unx....*....*)<z.[=/{>#(zuC. )#zQQC}+c).(]x\}Z@)vvvuuvunnx..*.+@L#(]x\}+d)#x]..}+@)XX+[=X{>#(] ; +k)< ; )u +LrfJQJCLLLJX|[%/{>#(]qC}zzzvvvvvvvvuuxu\O+@Zzv|[=/JvzCzv\x+..uX|UU0{>#(]xZ}o@h#X|[=/{>YuuJ\}+@u X|z=/{*#+ \}+@ +  +a&hLLQQ0QQmkbZ|[=/{>M(]UUU+@)XLUzY}+@u<v|[=k{W#(]#\}o@)awCx\ucLUZQYzYv{>#ccL\} @)CX|[d/{Zp(]h\k+nJ.** =/{>#vvu.}+@)#*]xUz>x..( +wmwW8dpooqxmm+qbbW8[=ddpOQOx\}bbhhkdqQCCCYYCJJQLYCXnu.*/{>#(vx\}+.)#x]q\}+@)# <Oxzm.J +qq8%haM*dqdpphap@)#bko**akm<ZLb=/zzz(]x\}+@)<*. .nnzzcCx }+0JQX|[mZ{>#(]x.*.. .*....*>#(hxa}+m)<c|[=/{ *Qmdn*  +d88bpaMWhd>b#adddp@@$X|qw/#**k]x\}+@J#( xzJ+C)#..*...*....*...>#(ax\m+@)0Xp[=**JdL= M +}M#b#Wopbba#>#ddd\B+$B*b|ao/{>#0QLLLCC)dX|cvvunx....* + + (]L\Cm@.B(]mw}+@bmX|*xwhX*\a + (_m&bq**d#hk{aa(#$\}$W**h|[qqwZOQCCCL+qQ<Xcvvux...* + + >#J]Lm}...#mmx\}+d)#w]x\a+@)8pxXmpZ + , })kM$)nuvcvvvcczzYYYYUUYUCJCCJ@)@@@@=/oohdmx\ccCLuU# + , ,/X#W%%$$B$%88&&$&ooa*Mo*MbbbdpqwZk@oJJJYzcu*.. ; W x ; nLUhzuvvczzXYYYUCCCCCCCCCLCCJm%@@@@@WkqOOpwCJJYXYLM +: : -0M*WW&&WWMM#&%8MM#*ooh#*bbddddd#$@MZCUYcvu.. + }<=# ; .xCLkXvzcXUUJCCLCCJCCLLQ0CLwp#@$$B$@@@*oaqCLLLLCCLUZ + : ]&#%$WMWWWMWW8B8MW##*a#8hkbbhhoMB@@@WdOCXcu.x. ]+XW\)[ ..zwJ*0JCJJJJJCCQLL0mwpbbbdd#M##W&&8@@@hpWWZQQLCCLCLC + : {t$#%@%&&&WWWWB$MMWWM##BaahaW#M*%8@B*kpqmLZmYzvnx*..vXUXYCLk0c0wdapOqqqqqpkha*hdpMakpdbqh*M888@@@bq#wZZO0O000Q + : +<|W$$$%888&&&%&&WMMMM#B&h*8#pC{]8@bZO000ppOQpLUYYYXXJL0OZZQZmdokO0qahkkhaaahkkdpW%M&hpddbhkMBWM%*qpwqmmmmmmZZ + : : r/zW@@@$$%88&&8&&WWMM8Bo*U(-[> @acdwpma#bomOCJUYYXXXzYUJObhhh**Zwqwwqppppppdddda8MW&hbbdddpkbpb8)mppqppqqpqq + : :, )n/ (: , @ ,  + , , , , , , } =: |{, X [ } |{ , # ,  + ,, , , , | ] , X*\ ; ;+ | ] : , : #M ] (  + \, , ,, , < , , \ ,(}< + ], W\): , : , : @ ,} |  + < , , , } , , = ,] XW\) >x@ M }+ + )  + , , , ,, , , @/(z< #M| ++ :>x@/(}<  + , , , , , ,, , #M|{] W\ [ = {] x; }<:# ; :, <  +# { , , , , , , , XW [zx@ ;. #M| X \ [;x@ <= ; ]CLW ) + /(: ,W ) / } ,  +, , , , , , , , @ <=qQ|{ + \)[>x@ ;#M|{]+XW [>xq/.} ; M|{ : , , ,, ,  + , , ,, , , , , : =# ]+XW\Owzx /.* XYbqn]+,W\zYZznv(} cc{] +\) =# + ,\ ,  + , , , , ,, , ,) [_/ #(]x\*.@)# ]x\}+@)#(] \}+@)#|  + /(, , , , ,= , \} @ #.*x\..@)#(]x\}+@)x |[=/{ #(]x }+@)< *[=/{> ] ,}+@ [=+ <  + n]+ , , , , {>#(]x\}+;)< ;[=x.* ..x+ +@.#(]x\}+.)#(] + )< | +; >#(] |[ n|{  + +.Y/(, : , ,) =/{># ; )#(]x\}+@)#(] *}+@)#(] * |[=/ , }+@)  +.* O], : : \}+@)#x]x\}+@)#(]x\}Q@)#u]x\b+@)#(]x\}+@)<.|[: #(] \ : : =/{ (]x +@+ ,[ +b0*8Lhq{]: : >#(]x\uc@) ..nvXccc(.x\L+@).xux\}+@)#(]x\q+@)<: /{> (]x :#(] }x / ,<  +8opaa0ZoJ@}+@: =/{>#JZx\ * ..**.x/*u..]x\Jc@)#(]x\}$M#MbpO=${>#(Uh\}+ ; |[=Y{>#( :+@ <b|[ /{># : |{]+  +x*#kbdmQdqx\}+@ : [=/0Q#(.*..+@)# ;x\}+@): [>X@ . +M|OdhmUzXZh]x\}+ ) |[L/{.*....*....*.[=ccz#(]x\JYJzh(]xvC0QL;(]x\}z@);;|[=/ #kz{  +) xwUXUUYc>#(]x\,+@ <0|[vuuuuxnnn..*.nX|C=XJXvXcz\}uxux* [=/{*#0]x\}+@)<&|0=p{>#u x\}+ )#(]x\}+; Xa[= ;;)Zv+ +p(~CULLCUC/{*#(]x\}+@)<vvvvvvvvuvuuunX)mX|wYU{zcwXcYz+@n...x=/QQ0(]x\}+*)pp|*=cX> (]xX.cY) (]x\ )#(]LOZUY)hZ]&\}+*)<*|[=/{*#(].*}Uu)#(] +@)#(]p\0LCQCCJ[=/{>#(]xhm0@)#(]xxnnn.#( x\ +@m> @z;cv +mhBhwhopOmm<wbm=/{>#qpmLQQ@)#(]x }+zxCJnCX +o$*k*#bppqqhh#(]x\ha*#*kkmZZ0b#(UYU}+@)k( x\Oq0*n x +BMqd*Wadpdoh+qqqXW@&/{>#(#oab+@)U(]Xzccccvcvvvvv>#XXxUzu@0wXp[=/{CLppx\.*....*...*....x\}+@)ZX|[=/k>.(]Ob=+ cm +8dk&MdqdbMbxp}d@%%X$8oh{ak(]x\}QCCCCC[b/CCJJYxzccccccvvvvvu#v]vc}mp)wX|v=/UQ#(]xnn..x.xxx*....x]x\}Cw)#hz*\ZWd +#b#hdk&kak#(]W\*WB)<$|h*Ma>#mZZO0QQLCXd0=CJJCJCUzXccccccvvvvvvvvx\p+pk<vvv=/{Uuuvvuuuuuuuuuuuuv#(@x\}w@)<k|[=/WQ*(mmpL +xdokd%#*Wbk>$%#x\8+@8aX|*&##>#mwmmZOQ)dw|CCCCCJUUYXXXzzzccccvcccz]d\po@ccccvu/vvvvvvvvvvvvvvcvv{>@(]Z\}+@)aX|[=.XObdu  +,/(m#8h%Bh=$$>##8W\M%@bdXW[#W{pqwwZZ0+p)<LCCCJJUUUUYXYYXXYXzzzzcX#(dxM}zzzYzczccczXXzzXXXzzzXcX=/{@#(ko\mk@)w%#M8$$8&WWM####*o*ooh%ob*m|| +Q@ZUCYYzZ0LCZCXzYYYYJLQ00Zpdho#WbZwqqqdpdpppwqqpqWMWWhwpwwqqhhwMmOmmZO00000LOX +:: : MC8MM8@@$$8MM#M####ook&#cW )[ ,/0oCJXcCbUmz.**..nvczUJCLLOda*oodwqwqqqpppdpdddbp#&#M8*kddppwpmwkmwwwwmmmmmZwU + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== + , , ,, , , , , ,  + , , , , , , ) , , , ,  + , , , , ,, , = : , , \: X , , , W  + , , , , , , , ,, ) > @ : (:< / , ,, , , } +  + , , , , , , , , , =: {]: : x , | , , , ,, ,  + , ,, , , , , , , , ; [ ; ( : ;: + , , : M : + ) , , , , , , + , , , ,, , , , , , : < # |{ +X ), ,, \ ; /( < , , , , , + , +, , , , , ,, , , , , + Wz)[>x@/ };+ ,]+XW, , : , x <  +, , : : , [>x , ,, , , x@/ } = M { } X ) :xv *}<= , : , M  + , : : , } , , , ,,#M|{]+ \ >x +# {] X >x@ }z= + . : ,, , ,  + , : : , , , :W >zv/:+ M|{]+,W ) > }<= : +*W + @/(, : , ,, , |  + : :: : , > , , , @/ }<=##v{] XW )X>X@/ , M|{]+XW\ [ xm/ : : , , ,,  + ; ; ; ,, ( ) ,/{>#(]x\}+@)#(]X.}z@kp(cnu}+ ) },@)Y(]x\}+@). |[=/{>#(] \}+@)mX|[=Y{>#(]x\}+@)#(]x\}+ ) X|[=/{>#(* \}], , + ; ; : ) , = ], +@+< **/{ #(]x.*. ..*|[=/{>#(]x\}+@)#( x\}+@ ; =++ + +,) {># @/ ,  +] : : , X ]x\*+ Y.** .+@).X|[=/{>#(]x\}+@)<*|[=/{ #(]x\}+;  :|Q] ,  + @ : , , ) =/{>#n* \ + .[=/{>+(]x\}+@)<c|[=/{>#(]x\}+@u#( x\} @)*X =/{> : ,)x /( +M {], ,, , @ # \}+@)<Q|[=/{ + \}+XvJX|k=/{>#(]xO}+@)# : }+@) X| : ]x\ +@); / :,{0 +pd>u@/ , , ,}+w)#(]x. +@)<L|[=/{+ (]xU}+@)#u]x\}+@)#( \}+@)x +**0vX(] [ , ]xa}+@X.X|+=/.nczvuYz.@)0Uv[=/{>CU]c.z+@)#(]x\}+@LpX|[;; #(]x\}+ ;[=/{>#(]xQ}+ :#(].\.+@)JUZ[=/c>L(]xn}+@)&(]x\0+o)< ; =/{vc..Y\} ; (Cx\.*.. * =/ * (]z\}+@)<Z|Cc/u>#+]v\*+@)#(Ox\}+@)Ov .}: + |bXvcucZb+@)#(..*...*....*..>#zzX\}+@)UXQX=/{* (uxM}+@Y0QL[=/{k#O]d\}+x *|[=/{>#(]x }Y@+<L| ; {>#( ;M*c ;  +v YYJJJXck\}(@) | =z{uuununxxxnn.x.v/mU#CJUXCQJ)#(]bZ0+@)#(]xX}+@)JXx[=/{>v(]xJ} @k<+ =/{> ; [U**  +QQCCCJUmhw]x\}+@)# ; . +CQ00LOkbLY#(]x\}+@)LXX[Y/z>#(]x\}+v)OZ|w=/{>#(]x\}+QmwQ0[=/Y>z(]x*b%Wp<W|[o/{>#.xx\}+*)<Xv[=/{>#(]x\} <*|[=/{ x \X[> +h#wZkow0O0{>#p]x\}+mmwL0O0QO>#(]xQ}+Z*mX|[=Zmwbm000Y+@CZm|[=X{0#(]k\}ddp<khd=/Y>#( }+@)**xY=p{>#(]x.}+@)#(]xaqZ@)#(]pk}qhhpb|[=/ ..*. +@)@@]x\Zm@*MMook/w>#(]a\}C@C#Q]k\}*@)dZ>. LY} +dp*Wkqdd#b<pqp=${>B(hq\oh@)#(]xZd+X)x...xx..x.*...*@)@X|OZ/{>mm]x\}+@=*MQM]* +a8Mpd*p#hp@kaXo$#/{8#oo#\}+pwqwmmmZZ>a(O0QLL@CCXJCJJJJJJCUJJJJJ<dd[a/{z#(]xCYunnuuvunnuvunnnnn+@)<mw[=/bq#(]x*}*uwhBC@ +qhkb8ooabb}$W#<W#[=B{>#&M*h}pppppqwq/#>mmmZZZZO0QQLQCCCCJJJCCCC@)hXa[=YYYz(]z\vvuuuuvuvvuvvvvu\}+@)<w|[=h{>#B]xcmwQvoY +WxLd$h$#ba$B}#@%#XWW=h{oW(%x\ddpdppp[#b{qqwwwmmmmmmZZZOO0QLLLxC}+o)o*|UJJJJJYYYXXXzXzzzcczcccz]x@}+db#(dqWZ\nq + }<=mWB$*M@M*&8&#M$8khko&##&kbbdddddqo&qddpdppqqwwwwwwmmmmmZZZZOQkok&0CCJJJJJJCCCJJJUUUUUUUUYYcd@@Bod*akp0JvvvLCu08pxx + ,Wx)qB%%$%B8W&&MW$#ooo***oMbkbbbbdp*@hqdddppppppqqqqqwmmmwmmmwZw#k8pOO0QQCLCJJJCJJCCCJJJJUUJd$@@@B*pmQOpOYYXzzcOWpuc + : } =&*MMWMMM#MM8%&##**ooa&aahhkkkh8@$adppdddddppddpppppqpwqwwqmhaWhZZZZmmmZOO0O0QQQQ0OQQqkM$8%%B@$hokQJJJCJJJJc#*cz + : } #MB%###MMM#M&$W###*#o8*aoo*o##8$@@%#hbpdddppdbddddddpppqqpq#hW*ddppwmZmmmmmqdbdpaddqhobh#W&WB$mhWaJCCCJCCJJL8qX + : +(~B*$@&#MMMMMW@MMMMMMM8&o*oWW88W@@@@%W#oaha#ahhhhahhao**oao*Wdbo*##ba*aahko*ooobw*WakwmwwbaoW8$8ZaaQCLCCLCCCUQhC +, { X8W$$%888WW&W#MMMMMMWB**M8WX[Ou@@Mdbkako#MaM*aaoaaao*#****a#*&8*pbhahkbkkkdddppd&M&Mdwqqqpd#aWpOwmZZO0OOO0QL00 + , x@jCW&$@@$$8W&&&WWMMMMM$#a#L{? +XWMzkkkka%#WM*hhhkkkbbddbbkaW&WM8#bhbbbdddpdddddbd*W#W&hdddpppwbamwmmmmmmmmZZZOZ + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== + , ,, , , , , ( <=# , :x = , , , , , >  + , : , ,, , , , > : , , , \, , , , , ,  + : : : , , ,W > = M X : M: , < , , , ,  + : : : , , ,, , M + : # {] W : , ,, , , , + : : : , , , , [ x /(: = ) / } , @ , , , , , +:: : : : x M , , , #M ; :: , : x :} M , ,, , ,  +: : :: : , , , ,\) +@/ }< , # ; X : , , , , ,,  + ; : : , , , ,} =nM| ]+X \)+ /(} , , , ( , , ,  + : , , } ,, , , ]+XW\.[ x+/ \ }<+ M :]+X ; , , , ,  + , , , + x , , ,, >x@Y(} M {] > ( ]+* \v[; (: ,, , , , , ,  + ,= ] , , # , , , <= M|{YnX + x@/(} : M {: \)[> ; }8u . +.XW x : ,, , , <= + ,X , W , , , ] + >oJ/(,<= Mx{]+XW ;x@/(}<=# | ]XC;. ;x@ {] : , ,,  + @ # , , , ]x\}+@) |[=/{>#(]x\}+@)* u[q/{>#(]x\}QzcvX| =/{>#( *}+@)#(]x\}+@ #(Xx\}+@)< |[=/{>#(]x\}+@) )< [, #  + [= , : @).x +@)..*[.n.>#(]x\} @)Xn]x\}+@)<o|[. +> * ) | = };@)<*X  + X , : x\}+@)<.+ /{>#(]x\}n.* .|[=/{>.(]x\}+@)#(]x +@)#(]x\}xX)#(]x\}+ )#(]x\J+ ) (]x\} : [=/{>:(]x }+{ <  +r(} | : =/{>0J]YJ}+ #.]x\ + X|[XX{>p(]x\}+@)<*|[=/{>#(Lx }+ :: : )<:|[= ; ]+\ x@ (}< +{x+XW ), ,, X|[#/{>C(]x\}+@)<.|[=/m>#(]x ++@)<c|[=/{>#(]x\C+m)#.]x : )+ ] |{0+: +x:[.(}: , )<#|[JX{>#(ucYXJYXUUn[=0L>#(]x\}CU)<cc[=/{>#(]x\}+@)#(; }+@)# ,[.x : +aL)_ < )# x\,+@)<0Z[=.*..(]x\n+@x.n|[=0JZ#(]J\YO@)uX|[=/{b*Mbp\8%@) (]x +@)< ;= {,< :  +bhdXut-([n{># x\}+0)JJ]Y\} @u<o|[=/{>#(]x\}+@)<d|[ /{ ]x\.+U)< +[=/{>0( ;}Q@); |[=+ . ;  +pCzXXJZd+: / > x\}+. * ...*xxnnnn\}JXC#(]x\}+@)+XY[=/Z> ++x\}+ X|*/. ;  +YJCCCUzb%f|[=,{> (Qxn.+@).xnuuunuuz]w0}C0LULLQ=/{>ccv.\}+@oOZ|[=/{>#(Mxm}a@)<U.[=J{nX(]x\Y+@)LX+[a/{+ (]x\ )<|O.*X  +QQ0QLmadJZYcuczU+L0pX|[=/{o#*ax8}CX)#(]x\ +@ > *n } +mZOZhaZQQ0@)YXzx\}+@)<zzz=Jd>Zd]xC}+@)#(]x\c=#Xc ]Z +dmb*dZwmZq}+@)#(0pmh+O0OX|L0wq>#(UxCY+@k*Xkba/{M#M]LCx*...X|[.xnvc(]w\}+@).X|[=/{>#(]J.nw UwO +doMdqpdqhoq\}+&)<dq[=/{>#(*#MMoabqX|[OOqpwdpwpwQZQUX|[=Z{>#(]Q\}+@daq|hoh{M#(]x....*..|[=/{>#(]xw}+Y)#(v0 dkM| +a#Mappqooqpdd\%@@)<mwqoMW**odd\}+@b#(]x\}CCJOZwppdb>#(]kwd+@)hX|[b/{.x...xx....x.x./{@#(px\}Z@hx L0\+  +o&opdk#apd>d(%W\$Wok<aa[=/{>#(mmmm+M)OOOZO0O00QLLLLL@)qb]b\}+@)Obd[=.*..xnnnnnnnnnn[=/{>mm]x\bq@)xX|[=/xQW(*  +8bq#ko*dbk#{o8B]x$}aoW*X|ppdpppppp\odwwwwmmmZZZZOOO00QQLLLLCC/mo#b*xU}+@)QUx[=.xnnnnnuunuunv|[*/qq#(]xb}+@)MX|[do$O+.  +Ub8Wa*kak%B##{%#(%*\}M&W#Xddppppqp]*a}pppqqwqwwqwmmZZZOOOO0000=o{>M(JJYX+@YcvvuuuvccvccczzcY#(ox\}%@)#LJJCJYYYYXXYUUYYYUUUJUU@)@X|bk/{>*(]x\}+kdWpnnpm] +  ( < # ] : \ , , , , , + : , x, = , > , , ; XW\) @ {:+ W [ , , , , , + : , , , , , , , (; =# : :\) , \ < , , , ) ,  +: , , , ] W , ,, {]+ ; > @; :M : : :M ]+ , ,, , ,  + ,x@ , ] , , x@ (;<= M| +X \ ] : >+@ , , , ,, ,  + # @/( <=, , , #M {Y+ W\) x ; < #* , , , , , ,  + X , , , , , \z[ x / < >:: M + + W\X[ : , , , ,  + , ,, , <v#M ]; W x ( = ;| W\ ;,xQ/+ ; , , , , \  + , , [ XYu)[ : <=# : >x@/ ;#LU{* \)[> ( , , , , <  + ( , , , > @/(m<=# + )[: }<=#Mn{] X \k ux XW , , , X \) : + { , , , | x@ <=#M|.;+dc\)[> @/(} ; M ]CYU.x cx /(J0L# ++X } ; ,: , @+ =,  +,W [, , , , ( )#(].\} @)<*|[=/{ ]x\ +@)#(]x\}+@)#(]x + =/ ;(]x+{ X:  +/(}<, , ,, , {>#(]x\}+@)<: [=/* * ;) X| #(]x\} @.#(]x + < + { ;( \ [ /~ (]> @ ,  + ]~+W , , X [ /{>#(; \ +@)#(]x\*+@)#(]x }.@)#(]x+ + :{> (, X| =/{># ,  + @/( , (]x +@) ]x\ .@)#(] \}+@)#(]x.}+@) X|[ : (]x\}+@ x@/ +#zJq0+ : { ]x\}+@)<Y|[=+{>#(]x\}Y@)#( x\x+@)X(]x\}+@)#+ }+@)< |[= =.MOn +wWoJM@/ /{ (]x\}uY)#(]x\}+@)#( x : #(]x+}+@; | : )0> +pdhOQO{] , /{>#(UXx.+ vvvccuxvcx]x\Jxn)#(]xp}+@ :[=/.; (]: @) |[=/{ (] \}+x) :: }uX# +Wbpq00jx < [=/{O0(]x +@).(]xUnQ@)..|v=/{>.(kx\}+@0CX|m=/{>#(qx\ )...**...*L(]x\}+ #(]x\}+ ;#(]x\} /.  +ZLXuvvxUoJ}+@)h(]xnczv).X|0L/O>#(]* +@)#(]x= ,{Cn +XXUYYYzvOBb\}+@O#(]+ +@)< ;=/{># \ [ZZ* +JCCUULmbpZ(]x\QZ@zuuvvuuuuuuuuu}+w)<m0zX/{>#XnUQCY@uZ(]x\}k@*qXW[=/{>#(]XxuU@)( <8vMb +wLLQqbmCYY>#(*d\}+@)<cc[=/{>#(uxZZ+w)#(]YCLLL)d#op\#+@o#(.x\Yv@)<L| =/{> +x\}+@)< |[=0]+w0\)v +qmkaqLQQCJ/{>#(0J0YLQLCC|[=/{JJ(]*O}+@Cmwmqm0LQX(]xz}m@)mZ]zX}+@)h##*kkqp#(]Q0ZJLLCJUX=c{n#zcxJL+@x#(]x0}+@u#(]xooooapX|[=/h>#(]x\}+@) (]x\}.@)U + Y +Mkqddaodwww#kpp\}+@)QLL[=a{CJJJJUUUXXXXzccc{>#(]x\u+pZ<k|[=/{mdm]xnnx....*....*.(]x\}q@)<O|b=/.>#h]x\}+v * x +qd#po*pppb+@)8X@[=/k>#(]OOZmZZZZ|h=OQQLLCCJJUUUUYUYXYYzzzcz\bq@a#(]x%kW.* . +k%aoadbpW&\oM&)<B|ook{>wqqwqwwqq<#|mmZZO00Q0QLLLLCJUJUUJJUU]xb}*@)zcz[=cXnuuuuuuuuunuunuu{>*(qwp}+@b#(]*0}*... +q&h$oka8$#*x&*+@%#(wx\}ho)#xpwX... +U*#@Wa8@ao*&8x\%+@b<MMW%/{dddddd}M*)dppddpqqqqwwwwmmmOOOO00Q>*(Mx\LJJUUUzv=/uvcXzXXYXzzXYU[=${bdk]xkk+@J&bo*MM&8&WMWMMBWo*o*M*#&aahhhhka%@Wddddddpddddddddddddpppppwbo*&qmmZO0QLLCLCCCCCJJCCLLCLq&@@@@%apmOZpOJUYzYXQ8bcYb8&U +#w#*MBW***####W88####**o&*aaaaa##$@@BMhkbkdbdbbdddddddddddddqd##WpqwwwmmmZOOO00Ommqqpwwo*B%&8&B@@ook0UJJJCCCCXp@0Uha&% + )8*#W$8##M####&$W*####*&&***WMM@#$@@@$&#*oooooooooaoahakdbbhW#a&*o*adpppdppddkhhbaabkbohb*M&&W$@kbW#ZO0LLLLLLJdMCakpQ + <XoMM%@8MMMMWMW@&M####*&8##*%$8u{M@@8#MM#MM%W#W###*#WW&8W&&WMaho##MaoM**oaoM#o#adb8#obqdqdho#&%@$pb#qZOO0O0OOOLwwmOJC + WQ*a8B@$%%&WW&&WWWWWM#M$#MBkf-- M8$o###*M8&W&8MMMM#MM#####WMW&8B&khooooaahhkbdddpM&W&apppqddaMd*MZpwwwwwmmmmmZ0OQQQL + :}zQO8B@@@$8&W&&WW&&WMM$Wb]]+; [8M#M#M$B%B####*#**###***#&88&8Waaahhhhkhhhhkhhko8M&&obddpdqpqwoOqqqqwqqqqqqwwmmZOO + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== + : : , , , : , , : , , ,  + : ,, , | , : , x : : x; <: , , , ,  +,}< , , , : M , \ +;, , , , ,  + , ,, , , ) ; ; {] : , , {: x , , , ,  + W [> , , ,, =# ; X,\ ; , , , : (} =# ,, , , , , [  + , { X , / # )[> @*( { , =+ + \ , , ,, , , , ,  + , , # <x# |{] W+ : /(}< , , , ,, , XW  + X , , ,M| ]+ W )[ :M +X /( #:| . *W\), , , , ,  + ,\ , ,, , [ xn/( ; { ; [ @ ( M ; n0) + .. ; , [ , , M ]  +, } | , , , #MCY]+,W :>x@/( : {]+XW\ /m} ; ]+X : , , ) x@  +, XW ) , , XW\)[wC@/ } ;#uYwJ+XW [>xCzvu<: {L ; , {] , : < {  + : , {] [ /( W >x@/(* #Cv{] X ) >0..(}<=LC| .+cW [mO@ ; #M| [;+@/(: : X \  +#M| ] , = >#(]x\}+@)< +[ >#v]x\} @)u(]x\}+@)#(.x\}+@)< [=/ , x\*+@)< { + > @ ,, X|[=/{; x\. + |[= > (] \}+@)#(]x...@ ,\ > + + M {: #(] \ +@)#(]x\}+@)#(]x\}+@) , ,/{ (]x\+; ; =u{>#(]x :u(]x\}+@)<*.[=/{>#(]Y\ +:)#(]x : )# ]x\} {]+Uv; +CwXUd=#M , X| = {>#x]x }+@)#(] ;+@) +|[=n{>#(]x .+J)X( x\: )+ ]x : X(  +|JZboUvC[ , @)YX|[=c{># .x.xx.*|[Xc{.#(]x\..+ |[./{>#(]x\}+@)<$|[=a{>#(: +@) |: ># ]x\}+@)< |[=/ #(: z]+ +:>OpwOCq0#(] \}+@)<Xn[= {.nxxx. .*. X|[X.v>#( \*+@):X|[=/kwqZJUz}+@) )[Lx@ += MpqqOLmO>#(]x\ +C)#(]x\}+@..(]x\}+@) X|[=/{>#(]x\}+@Q<m|[ /{> *.\ u@)#(]x; +@)# xQ}+@.*....* * \}xx)#(]x\.+@)U(] +@) ]x\}+@.< |[= {>#(]x\}w@)<. [*/{>#(]x\}Y@)UX| /{># ;}+@) . ;(mn  +vCUYXYzcXUX8h=/{0#vununnnnxx...*x>0Y]UUu*..cv*../{>#( x;}+nnuX|[=/{>Oq0xa}*n)#(]zv}+@)< =b{> + x\}+@) {*nX+ +cQCCJJCwbkw<BB[p/{cvcvvvvuvvunn[=Q{>LC]c\}+@)*X.nn.{>#( \.+@00X|[w/pd#a]x\}+@) (.x\}c [Cb@/  +O#OQmpkpQJ+@)@X|[=/{>#(]x\}+@)#(]x\}+..# x.}+@pmm|wk/b>#(]un.*@)<*|x./{>z( x\}+ +*(]x\<QOM {  +OkpoaqOQQL\}b$M#(nx\}+Q0OX|[kbM>#u]x )< =/{>#(]x\+ @).X|Q=/{J#Q]Qo\ ;>  +L*M*pmwwwdhkp}#hkw0|[=/{o#M#akbq@)<JLLX/{>#(]x\}. .vuzzXY{ #(]U\}+00pqp[o/{># . * *|[h/{>#.]*\}+@)#h( +#M +0WModpqboap(wx\@+@Zx..*..+@)uc|vn/{>0LOx\}+Q)<p|[=.*...**...*.#z]xd}+.)<p|[=/{U + \  +m#dpdbo*bp{qq(]@\}+b*ohb[=/{QQLLxo}UUYYXzzccvuvunuxxx@)Ok]x\}+pwC(px\.+@k8(@%oaa@)wwwwZZO00(kxLLCCUUYYXzzvcccvvvvuuuvu|Qw/dq#uvu\}CYuuuvuuuuunnnnn.n@)$X|Z=/{kwd].\}*@)#B*#h}+ppppqqwww>ad]O0QLCCCCJJYYXX#zzcccvcc#B]x\da@.Zkc.x* +\Qa%@Mo@Bh@)MX|[8/{>#&88\}bbbddd[o&{qqqqwwqZmOQQ0QQQQQCCLLLC+h)*o|CJCJJJJJJUUUUUUUUUYUYUUU]x@}+pb#(kp*}LxYhCxn +:<=k%%$@8&%&W*a%Bkhha8&WBahkkkbbdo@hpdppppqppqwwwZmOOOO000QQQho**QQQLQLLCCCCCCCCCCCLCCCLCLYb@@8#*8W#hm0YXYQQcL&#JnC%O# + 1Waa#W&%%8WWWM8$#oaoWWM8Mahaaahh8@%kdddddddpppppppqqppqqmmwmh*MWwOZOO00QLCJCQQQLLQLQQLLC0k$@@@@MahdphbQUJUYULaMCXO&Bp + (bM&B#*####*#8$M*######8oaaahooB@@$Makbbbdddddpdddpppdddppwk#W#pqwwqwmZQUvYLQ00mmqqmwba%@$$$@@@8*kw00CCLLCCUL8hUZ*#B + :+%M@$&#MMMMM&@B###M##MB#***MW$@@@@@$8M*oaaaooaaaaahkbdppdbW*W%ohhbpqqwmOOOwdbhhoaaha&WM&&88B@@BhMWk0000QQQQCOMpwokq + ;@mM8@@&WMWWWW@@WM####M@M#*%@d+Q8@@BWMWM#MB&MMM####M&88WWM88aa*M&8*o*ooaha*###aboWohddbdoM&88$@@*d#*wZZOOOZOOLZbwqQJ + : |k%W$@@$B%88&%8WWWMMMM$8M%*f> @/M@*#*#*W8&W%8WMMWMMMW88&&WMMW%8*aa#WM#*#MM*oohda$8W#bpddkka&BW&@kqdqqqwqmwwwmZmZQQL + : >aB8$@@@@$%%&8&&&&&WM%$w] # {]%##M#&@$$BW#####*##*oo*#W8%$@$#aahhaahaahhhhhha&&W8#kbdddddkbLqWqqqpppqqqqqqqqwwZ0 + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== +, , , , , , , : , , , ,  + , , , > @ , # > , , , ,, ,  + , , , ] X > : , :: , , , , , , ,,  + , ,, , X ; ; , :, : W , , , , ,  + ,) , , , , ( +M : ; , , ; :[ , , , , , , ,  + , , , , , # {] :\ [ , , ;= , ,, , , ,)[> @/ , + , , , , \)[>x : , ; \)[ , , { , ,} , +,: : M }<.# ; :, , ( , : ) +/ }<=# , + / , ,: \ @  +: : = XWv)[ ; <= , :, , @/: MY. + [: | , , :< |  + : +X , @/(0C=# ; +XW\)[ : <=#M|{] ;)n ; =# ) : , [  +}< M| , , ( >x@ : M| x0Q\) + .YQwC#M| ]+zJCXcxx }zU +; } , , ) x =  + W > , , , + /(}<=# ;: XW\ +/uv<: M *+uUuv[ xzQc * M :+Zc\; /(} X ; : < W  + /;} M , , =/ (]x\ * ;=/{.* ..** @.*X|[=/{>#(]x\}+vzuX|[=/{>#(]x+ +@)+ |[=/{> (]x :@)< |[= { ( (} + ] X [ , , [=/{>: \}+@)#(]x\xn@)#(; +@)#(]x*.n@)#(]..}+@)#(] *. ; : , , #( ...*@c#v.x\}+@)#(]x\};@)#(]x\}+@X#(]x\} )0c]nn.+@ ..xnvuun..]xXzux)#(]x\q+@) =/{ (] }+ <v|[=/{ (]x\ @) /cv<  + \LL>x@) , =/uYYu]x ..*...[= ..#(]vzzU@).x*u=/{>#(Ux\}&ahpm0[=@{>#(bx\} ;|[v.{># ]x\ @).X|;;/{ #( ;+ {]+X  + @ }OOQM| )#(Yx\}+@.O(]x\uYUc#( *+@)#(] #M|{  +vCCXcnuuvn]x\h+@CUXnnnx..x....*..x<Cc[zcvnucnx\}+@ + /{Q#u]x\}+@)<d|[p/{.x.] .}+@) ]xZ}++ |[=/ +(CQ=#  +JQOCJJLOwdqw#8Bx\}zzvvvvuuuvvuuuzLC+CX<n|[=/{>#(*....+)< [=/{0Z(kpwkdph*X|[=/ .xx..}+@..X|z=/ +#(]X\ @ * |[x+n0XW\  +h#bOZqdpZL=/{>8(]xJJUY)#(wmLX+@)zXJYvxx*+(]x\ )# x* x.)#u]n\}+..<c|vmx +}  +WaboobmOOQ|Owo$>#wmOZZOmmOOUXYYUCJYcu..* (]x\ +@) |[=/OO#OqbhMhJu*X| * > *..X}+@)#.zx\}Xzc<wU|+ +  +dd*WoqmwwpkkddaMaqZ(]x\boMM#hdpwm{>XYXc\}+@) ]x+ @.cUU[=/Qwwwdk\}+@...*.. >#(Ym\}+v*..|[Xn{>X0]mCc+XC) + @  +k*#*kdpdhokpqX|MM/{qk#M#*od@)#un.*... + = (] \}*c)LC|[=/L>p(]x*...*....*..>#p]xU0+@c ]xuC+LL#x.x.xx...**../{>k(]m\}uJ)qX|[=Ld>#(]xC*. .[  +nko##a*hbbh\}*B%B@W#o/p>wmwwmZQ@OpZ|JUzccvun*... + |[; *vC\0Q@xxn|[UXvuuuuuuuuuunx.[=/{##OOx\}pd)<n|[b/{>#%hv...=# + X#&#MokaM8##&$+@@%M*[=dpppqqwwZwdp<CCJUXzvuuun.**. * ..*>zL]wm}uuuvX|zc/uuvuvuuvuuuuuu[=h{>d(]x\kp@)#(oq\QZ@0dko[OcJwQux + > @%B@@@%%$$B8%@W**#&%%%#kkkkbddM%hppqwmmOQQLCCJUYYYXXXXXzYQdhopCCCCCCLLCLJCCLCLLLLCLLLLJL*@@8M#W#*ad0JUJ0ZC0#MOcLoqc + # |#*M&%%88&88$@&###&%&8Moaahhko%@8adppppqwwmO00QLLLLQLLLLCObaMk0Q00QQQ000OO0000000000QLOhB@@@@&#*akhkZCCCCCQhMqUQ#%k + \)[O8%W*ooo*##8@8M#M#M#WW#**oo#W$@@$MhbddpppqqqqmmmZZZOZZZZwa*Mkmmmmmmwwwmwwmmmmmwqwwqbo8@@@@@@@%#hdpwm0QQLLCO*#OZoW8 + ;< #&B$MpQwaMM8@@&#M#MMW%W##M&%$@@@@@$&oahkhhhhhhkkbbdppqpda##W*hbdpppppppppbkkhaoooa#&8%B$B@@@@@W#MawmZmZZO00wokqhab + ;X \LB@%hwbo##W$@BWWWWM8@B#M8$8Wo&@@%MM###WM#oooooo*#MM##*#Moho*MM*aaaaaha**#M#aoM#oaaoaoM8B$@@@@&o##dqwwwmmmmZwddpwL +; (}<0B@@@B%8%%$@B%B%%8%@@%@@*zXW\bZbWMMW%%88%WMMMMMMMW&&&WWMW8%WooMWWWWWW&WMMM*#8@%Wohhao*#8@@$@@WhabddpppppppqqqwZO + + W\h##MM*o**ooooooao##aaqc@/,}<=#kbk*#**akbbbbbdddppbbkao***kpqppddddddpqpppdh*ookpqqwwqqkkqpohUn0ZmmZmmmZZZZZ0O0 + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== + , , , , } ,, , , , ,  + , , , , , x , , ,  + :: , ,W : , , ,, ,  + : , , } : , , : , , , , + : , , ( , XW\)[+ ; : , : :, : @ , , , , , + : : , ,+ , , }< + ; : : , , ; , # , , , ,  +: , , , / , ,, , + + , ; : , , , ,  + , , , ] , , ;; : , : ; @/ ,, , , ,  + :: , , , , , + : ,, : , : ; {]+ , , ,, @/(  + : , , , , ,|{ [>x@ ; ;|{ : :: < : * ; @/ , , ,  + : , , , x@ }<=cJX{ ;)[>x@ : |{]+XW:: *. ; , ,  +=#: : ) , =#M|{ * .cYcx +.uYCJv]+: \)vvvvx + u. ++ ) \ , : #M| + ) : , , x /{>#(] \}+ .*. /{X#(]x\ @)XUz[=/{>Jv]x\}+ )#(]x\}+@)#(]x\}+@.#(]x\ ; ; >#(]x\}+@)#(]x\}+@)< .vx/{>#(]x\+ @)<+ + ; , =/{>#( \; ,  + @/ , ,, |[=/{># \} @  (]x +)#(]x\}+@)*n|[=/{>#(]. }+@) + : : #(] :  + {]+X , , @)#( ++..xnXUU/{>#(+ \}+vux x: + +X|[=/{ :x\} ; :[ > : {  +.XCUn/ , , }+@Ycx.* *..xnnnx.*.nvcvn> (*.vvv*.#.xucc+@)<ZXvvz{> (; \}+@) X: {>#(] \ ; [ + : .. +<Um0x : , ]x\Jzzc* | *....*.\..*)<.ucXXu*#xvun}+@)<Y0p#/{>#(]x\}+k)x , #(]czXn*) * =/{> (]x\...)nvcu\}...*....* .*.vvvn.)# .* *..|[= #; \ *.)<+; *. +{uLCXvvn>x#(QZOJ+@* =/{> *....* + [ *> x\UU@+ *  +.UYvvvuuX0@)bkbmJcn. xn.. { .un*\ . ) |.x/{>+(]xx*. xxu +XXzXXXXJLmh+@)<OCz=/vuuvuvvvvvuvvXCLCJYz(]x\}+@)uzUJUzu>#*nxLOCC)#(vcXLmqpdbkbbkb>#(...* ...n.. /*.# nn @.nx.* # .. nYu  +bdwmqqwOQL(]k*a+ZZO0QQQ0Zm#wmwm0LQQQCUYUCCQLCYXcv.@)x(]x\mqqqpdbkhZUun.* }+@)#(] *+..*nx[=/.nnuzXn  +#akhbpZOOZwpbhakdwO0#(]..*xvczYYzvxxcUCCLLOmqddk|[=/{># ++@)<nYJ=/..#.]xxn+@ucc|XYvzCUv + +aa#*bpwpddbp>#h*a\}Zphooahdm{>#(LO0U+@)vvvuuuu...*....xunnnxnU000J]XJO0mq#mmJ\}+obQv*x  +W\z*M#oa#88MMM#####o*##obddppwmO|ddw{LJJXzvvu..* =/ *...cCOwZC|vvvcczccccccczcczcccccc(]hh}+m)#(8x\dq@)qbO[L0QQwkkwLCQLJ. + +xa%B%B$B8&88&&%&#ha#MWMMhddddpp*WoqQ0QJUzcv*. ( M; ...XQqdOJXYUJJCCJJJCLCCCLCLLLLCCCQkB@$&#***akwQCJJQ0OphpCCZqX + @/Zh#W8$$B%8&W%$8#oo#####*kbdddhW@%oq0QQLUzvn. ]+ \) ..uY0pdZLJCCCLLLLQLQQQQLQLQLQLL0Zh8@@@@$M#ohbbmQLJCCCmhkOCpWO + |{]Y*#MMMMMM##WBBMM#######ohhho#%@@$&hqZ0LJXcu..x@/(}< ..uXLZbbZLLLQQQQQ0000OOOZZZmmmqdaW$@@@@@@$MabdwOQQQLLLOdhdZd&m + x@dW&%M##MM#WB@%M#MM###M#o##MW%@@@$WabpwwZQJUXvnxnuvccXJ0mbkbdqqmZZZmZmwwqpddkkkhkhoMW8BBB@@@@@8##apZO00QQ0Qwkbdd*O + |{h%@B&####M8$B&######MM#WM#d0p88*bbbbkkkdwOQLCCQOZqqqdbdpdbhahkkhkkkhho**ohk***akhhao#W8B@@@@BM#*kqmZZmmZZZqdddbC + >xq%@@$B888%BB8&WWWW&8WMdCx#M|mWhbho#M#*hkpmZO00OZwpbkha**#*kkko****o***oahaM&8W#akbko*M&B$$@BqCOdpppqpppqqpddqpJ + #M|nk#MM*oahahahhkbbkakC+XW, [>mqqdkhhbqwZ0O0QLQLLQ0Zmpbbkkpwmwmmwwmmwmmwmwpbkahkbqwmwwqpddpk0=#MLZZmZZZmZZZOOOZY + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== + , , , , :: , , ,  + , : , { , : , ,, , , ,  + : : , , , , , , ,: / , , , , + : :: , , , , , : : : : ;: : , , ,, ,  +: : , ,, , , , : : : : ; : ,, : ,> , , , ,  + ; , , , , , : : : : M; X; ; : , , , , ,  + : , , , ,: : , , ,X : ,; : , , , ,  + : , , , : , ,, , ,@ }+= , , : : := , , <  + , , , x , : , , , # +XW\ : (} , , , #* ; /(, ,  + , :: : , : , , , X x@/v}<: :]+XW , }<=#M| W* : X , <  + , : : , , , , , x =#M| nYX + (}< # {]+x.. [> (x ; } , +, , : ,, , , @ } ]+XW\ x/( = + \) >nn* + {]uX : @/ @,  +, , , , , , ::) (] \}+@ |[=/.*#(]x\}+@)*X| ;/{ +]x\}+ [  + , , , ,@) , , x\}  ;] + + = ># ]x\}+@)#(]x\}+@)< + ++ ; )  + , , , , : # x\}+@ ; {># x;}+@+ | :/{>#(]x\}+@)< *[=/{>#(]x +@) + : \,,  + , , , , :[=/{>#(]* + .n/{>#(] \}*@) ;;[=/c>#(]; }+@x X| + >#* \:+ )<+|[=/:>#( , ,  + , , ,, , )#(]x\}+@)#(]..un@)<+|[ /+. (]x +@)< : : ,+@ ,  + , , , , , }+@)x.]x * @)cJU[=8{>#(]x\}+@)< [=/{ ;(]x\}+@)#( * .x*)zX|[%abdmQLx8%+@ .x|[ ++ (]xc}+@)< : : : :  +, , , , : #(]z\LCu).*.../{># *x\}+@)nJY[XX{ #(].\}+@XQX|[=/{>#(]x\}Y@) [ {>#vuuY}+@ ; : : :  +, : : \} : {>#(JJ\}+*....*...>#..xUUXv)X.]x\}+0q#(]xO}+@)< [=/Z>#(]Y\}+; ;; ; ;  + : :, # \ : :=/{YJzunxxx..*...=xuczC00C}z@)LX|[=zn>#(]xcU+@)#w]Z\}+@)#vXx\ ; ; ;;  + : : / x,: ; |[=LYcccvvcvuun#(Y0OOZU)#ZYx\}**)Xc] + ; ;  + : , [ (, :)#(cccc+@0OLZpwZ{>#(]xJYJZL<Q|[kkb0#(..\}+@)aabqdhpko(]Y\}+@)#( + + +  + , , X # :}+@qZC|YYYUUY(]x\m0@LQX|0ppw0z(]x\}OC)qhkbb/{>#(]UCOdbbppd[=kb>#XJYc}+@)#+ + + + + , , < :]x\}+@ZZOQL0Q0>#kdx\}LmwQXZ[=UXvun]x\0wdqqdbk=/{JLU]x\}wqw<phh#*{>#(XXz}+@) + + + +,, , , ) ]x\dm@)LZO0\QZqbdp|[=v{>LJ]x\ucc)#0pw\}wdbdp|k#oaakpmQ\}+@)<CLUc/{uc(]xphb@)#wddq}+@)OqwZ\}+@)<cv[=/{>#kkx\}+c)cc|Umm{dO(]O\}+@)#(]xXC+LkhX|[....*....*.. + , , : }+ OwqwOL+@)LqdmOLU@)#mwqm}+@)88*ak/{JJJCCJUJU)Opdab/0>#CQ0OZOL)YLOL\}M@)#(]x\qw@##X|#&&oh#dbaWW*@)**h[=/{>#(aWM*#@)#(]xL0dk)#bbbaWW@WBBW[=bbbb(#WWWM#MWWM*ohaoah]x\}+@OO00O000000Q0QZba#aXp*h/{>#(]x\OmZOJJQOwkh>#(]xWaqOQLLQOZQJY + ; : ,, >Oadbbo&%&B$8W#hkkkbhh*WW#**o*M&B@$MhdpqqqqqqqwwwwmmmwmmmZZmboM*qwbbbkbmQJJYXXJQLJzzULZbpLzJmpZCUYzzJd##* +: : , #MQhk#%@@@BWM#ooaao#MWW8%&M##W8$@@$#kbbbbdddddppppppqqqqqqwqbaW#ddabmmqkhbmCJCJJ0qqLXzXLbkQzCqkbdbwCzcJZq +: , , [Y#B@$B8WM#**#M&88&WMM*oao**M$@@@@B&ohkkbbbbkkkkkbdddppdpda#WWhdbhhbmOwdpO0Q000mhaq0JXUqhZJ0mCXQwqqOQLQ + , ,< #q%8WMMMM#M##MW&M**ooooaho8%ZU#@@@BWM#oo##**oo**o*##*oao#W*h*MMMah##kwZZmpdwZZZphahdmCUOOYzUXzccXULLLC + , , , \U&WWMMMWWWMMMM###*#MMW&BWm}<=#M@#hkhh*MWWMMM***###WWWWWWM**#WMhbko##**okkhakqmOOZqdkkmJzzccczcczccccc + ,, , , }<qqoW&WWWWWWWWWMM#MW&8av{] \)o#kaa*W88WM#**ooooooooaa#WWWWWMkbkbbdk#&&WW#*ohkpm0QQwdwOOUcuvuuvvcccz + , : :: ,XW\)[JaWWWWWWWWWMMMWbn) <=h*a*M%$B8M******ooooooao#WWWW#hkkkkkbbka*W8Woaohkbpdhad0Jznx.x.xuvzzz + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== + : : , , , ,, , : : : + , , ,  + : : , , , , , :: , : @ , /( < ,  +: : , , , : : , ,, , {]+X : ) ,, ,  +: : , , , : : , , , ;+ ; : , } ,  + : ,, , , : =#M|{ , , , M|{] ; :, : : # X >, ] ,,  + : , , , : X @, , ,+X @+ < : ; ) | ,  + , : : , ,, / { , x |{ : ; :=#M , ,  + , : : , , X ) x : ) : : : :: [>x { , , , + , : , , , > / < |: , }<=# ; W\ : , : >.+ ; M| x , , +,, , , , , , :M ]: W [ } ]+Xc\): (}<=#M : \)[>x@ = + : x@ ,  + , ,, , , , , x: ( |{ )[>x; nX<= ++ .nx)[> ,/(}x*. : Wn* ; : ,+X ,  + , , ,, , , | +XW\ ( ; +*W\ ; + :|{nx* > /(v< ; ] ; : (}< , ,  + , , , , , ,, / + x\}+@)<;|[=/{> +x }+@) ]x + : /{ : ]x\} ;(  + , , , , , ]x\ ) |[=/{> ; }+;)< [= {># ]x\}+@)< |[=:{> *x\}+@)#(]x |+  + , : , , , \ )# ]x\}+@) ]x\}+@)  + ,, : (] \ , : ,( \}+.z#(]x\}+@) |[=/ *..nx\}+@ +X|[.*{>#(]x\}* X|[=/ >#(] \}+@)<nv.=+ : ; + : : x, : =:{> (]x\}z@)<.|[=/{O#c]x\} )#( x\ ; )..|[ : ;; +: ; X ] :: X;[=/{>u(]cYX+@zJXvzCCYLJ(]x\}+@...*../cz#(&x\}+@)#(]x\ : ) ]x\}+@x#8obpZLL)8X|[=/Q>#( : }+@). |[=/ (]x }+v.<+ :  + : , + )<c|[=/{>#(]x\}+.uXUX[LQ{>zXvn.}+@) |[XQ{>#(]x\}+@)#(]x\** ..*|[= * #(]x\}..* :  + , , x +@)<zUCJJYu.(...}+@)<JQ[=/{>vvvx } )zJCXc}+@LJXU[= + #.]x\}+ * |*=/{>#(]x\X+ ;  + ,, , \0OmZOZZLUc{>#(]x.}+@OmCcvcc{>#(]..* @)#(]x\}w@Z#(]bdbha)cu..=/*n.(]x +@)<0Ux.. >#C] ; ; + , ]x @, [:/{>#(YLQOOO0UzXzXYUC0(]bb}+@)#(]x\}+@)&h]x\UJ00JUYXc/XYCL]x\}.u)CCQZZOOQJUXc[=/{>Uz]x\uv@)<Zqq=/booMkLJ}+Xz#( x*...)uvCO=+ +  + , , : x\ )<hpbadOQQ0QQQQQ00mX#[=/CJ#(]x\}+@ccczUCQQ00UvxYOZ0)<Oqdd/kk#(CJ\}YY)<..[=JYnxcxx\}YXcYC| +  + ,, , , #( }+wb##b[=/{>#(]x\}+@*oX|[=/{>#(zcccccccX|XYXYXz(LmmqZ@)JQ0wk/{>#UUx\J0@)<.|[vu{cXY]00z+@X< ..*  + : , ,,=/ (]xQ}+MM<h*#*ob>#wqx\*okwQLLCJJUUYYXXzXXzzcX|[zc{>0q]dp}+@)CwqL=v{cCU]xCLv.x.Xvc=/uJZdZx\}+@v..*... + : , ,X {>q(]m\h&&#ahahka#WW8@#\dd@00QLLLCJJJCCJCJUUYYXYXX/0pqkpx\z+@)JJzcc/YQ#(]x\vuu)<Q|[=/{wp(]x\&hCu.... + : : ,@ |[=/Q>bhdx*W#o)ooo*o/#88(]kkm+0QQQLJ=CLLLLLLLCCCCCUJ[0pdhk0]zzz+@zzccc=Lm>#(CLYXUUOdX|[=/k>#(mkdwOLXu* + : , \ @)#hhpwmmO0QX|00000QQQQ0QQLQLL|bh*aOJUUUYYXXzzX|[=*{>mq]x\LmbbZbqJXULOQ +: , \}+bovadb#W##BBMakkha*WWMakkh#W&W*a&@$#hbbbbbbbbbbdpdpppppqqqwpk*WMbmOOOOOO00000QQQLLwaohhhbw0Zk*pQLCCCCUJ0dadO + , , #Mwah#&M8@%WMoo*M8&MoaaoMWW8WMM%@@@%#ahkkkbbbbbbbbdddbdddpdh#WMkpqqqqqqqqwmZmZmwqqdh#oao**###*kbZQQLQLCLmbk + M , :[vhM&8$@%WM*oMWW#ooooo*MM&8&*%@@@@@&M#*o**oooooooaoaahhh*MMMWM*ohbdddddddbkhhhaohkoW&888&W*akdm000000QLQO + >, : #MoB@@$BWWMMMMM##*o*o*M8%*W\)0%@%M*##MWWWWM###MMMW&8&WWWW*o#MWM#####*o*####akoM#okkka*&%8M**hpwZZO00O0Q0 + , )[#@@$8MMWWWWMWM##MM&Wpx/( #8#aoa*W&&&WWWW#MMMMMMMMWWWW&%8Moo*##*****oahhkoW&WMhdpdk*&8WMW#bqqwwqwmmZ + ,=#*B&WWWWWWWMMMM&&Ww#M \UMoo#WB$B&WM##MM#####**#W&88%8MooaaahhhkkkkkkkhWWWWMohkbdk*MM*ohdqpppqppq + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== +, : : ,, , : , : , , : ,: ,  +, : : , , , ,, , , : , > ,  + : : : , , , , ,, : , | ] > : , ,  + , : : , , , , , , ,, > } ; :  + ,, , : , , , , , , , > # ; X : , / ,  + , , :, , , , , , , < \.[ x / < : , , + , , , , ,, , , , , { @/( < : @/ , , + , , , , , , = , , |{x+ ; x , @ <= M ;]+X , ,  +/( , @ }< , , ,, \ >cn/( ;|{ <= : +xx ;; /( , ,  + XW W , , , \ >x: :=#XZx] :)[>x@/( |{]+XW\ @u : { > , , ,  +>x < , \ >x } , , , }< : ]+X zZc@ ( . .*|z]+X )XCUnn.*< :|J.+; )[ ,, ,  +# |{] \ (} # | + , , =#M { : [>x* +#..{:+X +; x.*/(}<cuM {;+X )Qux ; =#M [ :  + )[ @/ #( * + |.=/{>#(]x\}+@)<**x=/{>#(]x\}+ + X|[+ {>#(] + )#(.*\}+@)#( \}+@*<.|[=/{ #(xx\}+ +| + x\}+@).@/ (]x\} @:#(]; }+@xnX|[=/{>#(]x\}..)# x\}+ )vX|[=/ ;(]x\*.@xLXc[=/{>#(]xc}+@)Q(]x\}+@zzzu[=/{>*. }+@).*| /;>#(u*\.n@0#cxx\}+@)#(]x\}+@w#(]x\} #(]W :x. + \]O\} )#(] \}+@)<v|[./xu#(] \}0@).( : | + }#JZx\}cccnX|[=/{dph]x**...#.*x\}+@)zvcx=/{> (.x\Z+@)#(Lx\}+@)w(Jx\}+@.xX|[=k{k#(xx...*...** /{n..].*}+@)xv...* >#.]xw}+vULLY[=/{q#(]x\} +X|[=/v>#+]xn}+@)< ;[=u@:  + , ,> @=/{>#(Czc}+zUQZdW*/{>xnnnxxx..*.n[Lz{zzuxvXCx@n# ux\}z@) |CQ{ ; + : ,, |Y[=/{hZ(]0ZmwOQ#OC0\}+@)<boa=MM>c..x\xXccXX|[u.{ c(]xO}+ <)U +  +: :W [#(]x\}XLQ00|[.v{>#(]a*W*daaXa*=/{>#* x.nnzY#(.x @+. .v+  + ; } @8#(Q0Om+%*<LC[=/{>#(]x\whZ)#(dxdbd@)oXa[XUn.. ]x\.czc.X|[0/{>#(]x\}. X>x + ; X }+wboabq=/{mpbbq\}*@mZwpd=/kbbmO00LQQOQ0ZQLLY>zvvvXX+CLJX|u=/J>#qbqpaoa*&X|[=/..*..x\*xuz#wdq\}o@)#(@@&MM*hdX|[=/{k#(CxJJJYYUXYXzzzz#(]x\}+@)<d|[k/{>#Zqkh}+uunnnxnnxxx...\}d@#QQQQQLLLLLCJJJJUJYXYYXY+0hqXa[=/{Cmp]x\vcvvvvvvuvuuvunx\hok)mX|[=pwJ*.Xbm + , , :> (]%\}h@B8*oW$/{@&#]ddppppqw|dh/O000Q0\QQLLLLLLLLLLCCLLCOk@koXUYY/{>QJ]cc}vccvvvvvvvuv(]&\d+qq#@]xBBW@)*&*[=${oMa]dbbdddph*[qwwmmmZZZOO0)0000QQQQQQLxk}o#)LCCCCJJJYUYYXXXzzzcccccv>#W]b\}+Z)o*M#\}0@QQQLQLQQQQLLLCCCCCCJC[=$@>#MW#WW*aqLUzXC + <MdaWMao#M#W&&B@Moo*88&B*hhkhk#@8bbbdddbbbdbdddbdddddpppqqo#WMpqwwwmZZOO00QQQQQLQQQQQQLCd@@@%kaWhdppbqQJJU + XoaaW$#o*####M$BM##MMMM&#aaaoo8@@&akkkhbkbkkbbdddddddbddddo#&&bpppqqpqqqwwwmZZZ0Z0Q0L0ma$@@@@BhW8*aqOQLLLL + (}aW@B##MMMMW$@W#MM###8M*#*#W$@@@$&*oaahhhhhhhhhkbdbbbddb*M&#dpddddpddpppqqqqppddwph*%@@@@@@@@8WaMWb0Q0QQ + X*$@%WM#MMW@@&MMMMMM$W#M8%@@@@@@@B8M##MM#######**oohka#8#&B#*ohbddbbbbbkhoah**oo*&WW8%$@@@@@#Mak*kmZZOO + ,(h@@@$%&W&B8&WMMM#&@W#&$&kZQ$@$MMMMM8$&WWMMWWW&%@$B%%%Wo*WW&&M#M###*#MMWMohM&*hbhhk*W&B$@@@BMMdbpwqqww + }, |: +m@@@@%&&&&&&&&WMB@&W%Mu[>xCzXW##MB$$B$%&&WWWWWW&&8%%%BB$%###W&WMM#MM**ooaM$B%#hbbbha*8$&8$MowcZpqppp + /n%@@@B8%BB%%B8W$@Wo0}< ,|{]pWM$@@@%WMM##########W@@@$@%#MM###***ooooaoa#B%$%#akkkkkhabwk0[> @qpppd + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== + , : , , , , , #; ,  + , , , , ,, , , , ) < X , } , ,  + , , , , , X ,, , ( # : , , ,  + , , , , , ,/ , ) {] : @/( / ] , , , ,  + , , , , , , { , , |{]+ [> : # ; W : : ] ,, , , + , ,, , , , , > / , , , , <=#.| ,: W : @/ ,  +, , , ,, , , , , : , , +Xn )Q> @/(} : W\ ,  + : , , , ,, , , , , ,> /(} =+M| x < : W : x /+} , |  + : ; : W\ [> @ , ,, , , ,]CXW; [ ;@/ | + : @ ,# |; XW\ )  + : ; : / { , , , , [>xQCc} : ] XW + <=#M XW ) : ;} { @ (}  + : : : >, , , [ x@/ }<=. |dC+X + :x(} ; {]+xWn)[ x;/Q} ; | @, , ,  + , :: , #, , (}< #: {]+*. >Qw/(:<v + {OYXW\ [m0Oxz*c= {OcX >x@ ] ,\) ,, , + , , \} (, , +( ;}+..* . + >#z]x\}++ X|[=/{>#(]x\}+@)#(*x\}+@)< |[ # , + > , |[=/{,, x\}+@)#(]x +) x  + + , :{>#(]x\}+@)< ; {>#(]x\}+ ; [=uu>#(]x }+@)#(]x\}Y@).uux\}+ )#(]x + )#(]x\}+@)#(]x\ + )#(]: : , +)[ + , , , , )#(]x\}+...X|[=/Ux.(]x\}+@YnX|[Z/{h#(]x\}+@m#(]x )#(]x\v+@)#( }+@) X| : : : ::  + , , , ,, x\h+@Q#(]x\}+@).X|[=n{0#ncxc}+@) X|[=/{>#(CL\}+@)#(Ox\ux.*...**...*(]xU}....*.[=/{z...* }+@)aO|[=/{L#(]x\}+@)#(]xX}++ ; ; ; >u +: , , , ,=/{>L(uuunxxx.x....*.#J]x }+* xz0[uu{>#u...}+@##(]p\}+@)< |[./{>#(]L\} + + + <=uM +: , , x , ,|[=p{vcvvuvuuuuux.*=/Cc#.]x\++@)<cxY00Lzz(]uz}+hp$k]W\}z. #(Ux + ++ + zq\  + : ,, , @)#(]x\}+@)<n|[0/Jv#(]x\}+@)#(nX\}+@boW]x\}+*)<vucJ/{># + + + @pUx  +{]+XW , , ,}+@)dX|OLQ00CC]x\}+@)#QLQOQCQLcX|[=Lp>#(]XX}+@obohk=k*>#(YXn.+@)#* + + |#Cuz +QpQJJ}<:# : :x\}+@dkqQ0O/{>#*#*hhqq)u(]...* ) * * )qMvJO +Lbpko@q1u)X: {> (Qx\Wd@)#(]uuuuzULOmQpQ{>#kbx\}+bk<b|*=/{*...**...)m(&x\wwq)M#*b=/{>#(Lx\a+JUYXYXzXzzczzzXz+@)q*]ZOOO0QQLLLLLLCLLLLLCCCLCXa[=&{>UU]x\ZJzzccc[vvcvvvuuuu+@@#(]dbddddddddpqbM#wwwmZZmOOOO000QQQ0QQQQQL)*XoWwLLCCLLCCCJJJUUYXXXXXzzzz\}B@)vvvvvuuuuxw8d&#Q +Z@&###*8&*a*]%B}B@%W&&%W##>#hkbkhkbddddp=8{pppppqqwwqwwwmmwmwmmmZZZ+#)WM|000LQLLLCLLCLCLCCCJJCUJJ]x@}+@XXzzccczvL8kp*a +qB%%##MBM##M#W@%\}$W)<&@$%BM>hhhhkhkhbbX|@=/ddddpddpdpdddddppppdppq\W+8*<mmmZZO0O0QQQLQLQLLLCLCLL#(@@\}+JYYYYYYcpBopJq +OB$###8%M#M$&BM$&o8%*#*W$%&%&#o*ooaahhhh&@%kbkbbbbbbddddpdddddpdddpdM#BapppqwqwmwmZZZOO0O00Q0QQQLLo@@@@dJCCLCCCLWdaWqJ +k@&WW##&@@%M@$#%@&###W&M#M%W**####**#B@@B*aaaahhkkbkbdbbdddbdddphMM%addddqpppppppqpwwmZZZmZOZb8@@@@@@kLLQQLCp%0MMpC +(Qd#@@$$WM$@8M$$BB$B@8#MM####M$W*####W&%@@@@@B&M#*ooooo*#oaahhkbkkkWW&%kdbdppppppppppdbkkkhbpoM8@$B$B@@@$hqOO0QooOhb0O +]+XW}Yq@$8%@$$$W&8W&@@$&WWMMMM&$%#M#MB%B&MB@8W&&WWB8MMMMMMW&88&M#M8%*M&&8&oakbkkbkhho*oh*#aooM#*M&%B%@@@$kqmwwd&mZmmwm + }<?d@$$$$BWh*MW&8$@@8&&&&&&&$$MM@$oq/(@W**##W8%&%8&W&&&&&8BB%&WMMW8WM*#8%8&WMW8WMMokMBM*hdkba*M8BB@@@%bmXW\Umwqppq + \c%&8%8W&8888%%%@B8%&888&&$%&b#M| ]&&#MM%@$$%&MMM#MM######8BBB$@8*####M#####*aaahW$%B8abkkkah#BW*M$x@ tpqppdp + } {#8$@$B%%%%B$B%BBB%%%88&%@bW, xvb*W%@@$$&WWWWWWWM##M#M#B@$B%M######*#########W$8%BW**ahkkbhkqk#M {,+bdpdpdd + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== + , :: , , , , , : , , > @ , , ,  + , : , ,, , , , : , , M { / , + > (  + : : : \ ( ,, , , , , {]+X [ , | ] W [ ,: x = , + : : : +, , ,, , , : @/ }< M > # < ,  +: ; : , W\ , M|{+ ; + } = : , ], ,, | ,  +: : : ) , , , >x ; = : ] ; , , , :\ >x , , , ,  + , ,, } , , < #M|{] X.\ ( > : =# | , , , , X  + <= , , W\)[xx /(} W* >x, , , ,  + { , ,, , , }c=: |{ :X @/ = : \ :>x /; + , , , <= ,  + , [ , , ,, ,@ {]+LW\ . ; (} M { X \ x@ ,#0|+; W\)[ : , + \  + , , =, , :<{ W\)[>. 0m}< #; {]+XW\ [+ (}<=#M| +;WO) + @ {] :  +,, , , , , , , > , x@/(}<* {ZZcW,) > @.mwu=# {vvOX.X[> + (L<+ {] @/  +, , ,, , , , [: {>#(]x } @ :|[. * . x\}J@)#(]x\}LC)#(]x\}+@)#(]x\O+@ <; [=/{>#(]x\Y+@)# ;+ ;| { #( @M +X  + : , , , x\}+@)#c]u\}+ :X|C=/{> + ; |[=/ [ ;@n( + ; , , , >#(]x\}+v)<+ [=/{>#(]xJ}+@)< ;=/{>*(]x\}+@)*(] \ +@)< ; {C + ; , , , =/{>#(+x\}++) .u.nx>#(]Uv*.@)< [=z.>#(]xJ}+@)#(]x\}+@)< =/{>#(] ,: , , : x + :: , ] , |[=/{>#(]x; ...*..[.n..#(]Y\c+@)<X|[vu{>#(]x\}+@)0X0[=/{>@(]x\}+@ |[=/ > : : :: : #; + , , ,, , )# +x\}+@)#(]xO}+c)<z|[=/{>#(]x\}+@)#*]x; )#(]YYcX@)#(@&MMbdO<$@[=/d>#;]x\ +..#(]x\}+@)# +\}+@+cJmOQ}+@)dXw[=/x #* x\}+@)#(]x\...xx...*....*]xQ}+0)uv|[=/nu#QLLz}+@xuX|&=0{>#(]x\}+@)*X|.=/{>Yn.x\}+@)< ++ ; }+Lc ; u + / + =/{>Y(nn\}+@)#UQC0}+@v#(]x\}b@)JYYCCJJC)#(]xncQ0L0QCULz{>#z]Z\}+*)zcvx\} + + +(]Ov*J< * ++QpOqw1x ,\ #(]x\bh*hdwqL=/{nx(]*\n+v)#d*0z Wv +UYCm8MBk| , x @)<Wm[=J{>baoak}+@)#(]x\}+.n.nnuXYJZCOZv\}+b0p(]x\* . * . /{>#o] * *=/{[YC. xY +OmOaomwo*>{> ( \}+a)<LQL=hkpm(]x\}Ycv<q|.=/{>..xnuuuuuvu|[=/{>#v]xq}+o)#.*....*...**..{>#(. * *.|[=Y0Q. Cw +dqo*wpwQ*B=/{ (]QZ}+Z00Xhd=/{LLLLCJUX@Z<x.[=.xuuuvvvvvcvccvvvvuv#(dx\}+v)#**...*..<k|YXZ.>wL +da&pbbdh*w|[=/{>Z(]qqwwwwwXZ0O00QLLLLC}d@zcvvvcczzzXXXXXzzzzzzzzX{qm(#x\cvv)<JU[uunnnuxnnunnx..x[=/{x....*..@W<p0z*cbp +a%hhhkb&hkbd|[=%{ahkbb\}+qwwmZZZZO0QLQxo}CJUYYUUJJJCJCCJJJJCCJJJJ=bb>M(]Xzzcc)cvcvvvvuvvvvvvuuvcX|[=uununnnu}+MmMhUwd0 +%WoaoaMMhhh)*%|W$8***8M**k+ddpqqqwmZZZ(Wx\QLQLQLLLLLLLLLLLLLLLLLQ|a=o*>CJUUYYYXXXzccc/ccvccccvvv)$(]mOOZOOOOOO=QQ0QQ]QQ}+L)<M|&=/QQLLLLLLJCJJJJJUYYYYXXXz}+@@x (B##*W$8%&*****aoooaaaao&88&8WhhhkkkbbbbbdddddpWWW&#ddbppbpa&bdY0 YdQmmmmmmZ + , )aW&8B@$$B%%%%B%%888%%&WWMa) : ]Z%#W$B&BWMM######*######&&8Moooaaaaahhhhhhkkhh8W#W&okbbddbpqq)>Cx (}hQqqqwppp + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== + ,, , x , , , ,:W {] , , , , + , , W , , / } ;: \ , @ , , , ,, +, ), , , ] , (: =# ] , , , , , ,  +, / , , , + W :[> ;/ + > @ , , , ,(  + , x , , ,,{ +, ; + )[, , ) < , , , ,  + , , , = M , , + W ; x , < : , , | + , ,, , ,  + :: , , , , , , M >? .}< #.| ) + ; >x@ , , , ,  + ; : ,, , , , < # | , \ M {]cX \)[ ; #M| ;X , ), + ; : , , ,, , + )[>,@ (}+= W >x; ;] X \ + , , , , + ; : , , , , x (}<=nM| * \)[ /;} =#;| W : @z( ;|{] , , ,  +: : , , , , # [>x@/(}< M|{] QY[> @ }<=#M| ] \)[>x@/( = MJ{] W <: M| + , ,  + : , , , , W @/(}<=.* , \);+ +}qJuM { XcYpO>x@ }xu0c.u]+: )Y> }<= \ + : |  + :: , , , { x\}+ X|[=/{>#(] + #(]x\}O@.#(vx:}+@)#(]  W\ >  + : , ,, , ,[ #(].+}+@ ; | =/{> ( x\}+@)#(]x\}+@ +[= ; #(] @) / <=  + : : , , ,#(] ;@ XY[=/{>#( : @)#(]x\}+@u<n|[=/: #(Qx\}+@+ ; ( ]; ) + : : , , +@Y#(]x\}+@) ; x\}+.)#(]x\}.@)#( x\}+.)<:|[=/{ , }< + , , X|[ , x\q+@).u|[+ ..xuu.nux.)<Yc../{>#(]uu.+@)#(]xuu+@) x\}+;)< , ] X +, , M [= #(]x\}U@)<+ . * . ]x. @)<U|Y=/{>n(.z\}+@)#m]x\}+@)z@/ + [= ,> (]Y\} + X|[=/{>+(]x.}+@)#(]x@}+@)#(]x\} : : ( } #M|  + [ >#(] * * * #(xnn}+@)<cXuY/{># x\}+@)@WM#dp0>@@]x\m+@  *....*....*..{0#(vzvxznv#(LL\}+@ + |[=/ >#(; : : {> (x<  + , , < |[= .*...**...*.|[Oz{U0(zxu}Zzxzn|[=x * (]*\}+@CZ0Q[=/{d#p]x\.+@.#( : : [=*{ {C+  +@/ #, ,( @)< ...*....x....*) ; x ;  \)+*)#(]x\}+@kOCU[=/Y>#O]zzv+vYCLQ[=/X>#qZ0\}+@)<*|[a/{>#( \}x.vzX|[ ; ;; +@)mZm0U}+L)zUJLZOL0LUUJu}+@)<Z|[=/{L#(mqL}da)<a|q= + ]x\}.un.X|[+ ; \}0@)<*; :  +CCCL0Wbju\< | #(0ZL}+@)#(nxvYzULCX|[./{>#Lqq\}qpqpX|[=/{ + \}*..XX| + ]xk}+X( M  +Q0OQd#qqUQ@) =/{W#(]U\}+**kd|[=/{>#(]xv}+vcuuuuuvvvvuvvcUQ@QLn|[wwm>#(mw\}+d)#(LZZ}+@) **...*. .}+@) + {>#(c* .*x<  +dphWddpqd#m\}+@)LX|[QQQL#b]x\LQCJJUUY=CZ>cvcvvccccczccccccccccccc@bOXo[=u{>#0]x.*....*....*...*x\}+@ +=Z{>#v .*.  +dk&bbkkdWb(qx\}+@)qX|[=/{>O00QQQQCJUU|Lm/cvuvvcczzXXXXXzcczXzzccc}d@)*Xcvuu{>Yux....x....*....*(]8\}...**|[=X{> [uu@  +b8okkkb#*bkk(M&\B%*oaoodp/mwwmZOLLLCU<L|[=/.nczXXYYUUJJUYUUUYYXYXxh}*@)ccccccvvvvuvuunnnnnnnnxx>#$]x...*.M@]x\B+ka&W#Ma/pqwwO0QLC@)B(]%\}+@WW*&#bddpwmZOQ}+@)#(xx..+@o$dbdbda*#o#*aoaoao*#MMM**aho*oaaa##*ooho#*o*kqkMbqmZqOmho#&o8@@8JXzXm.unn.xx.x  + +XW8MW8&W&&WW&&&&@8MWW###*$Wor}<=#a|kkk#%W&ahkkhkhkkkbkkkMMM&8Baddkhhkhhhhhkkbkd*&#WoqmmZmpqh8##B@wzXCqzzvuunxxx. + / }W&B$B%&&&&&W&%8WWWWWM#M*~]+ \L[n#WBW8&oaoooaoooooaaaa&&&Mokkbbbbbbbbbbbbbbd*&*#&kdppqwwZqm0/d}<=#n|{YXzcvuu* + { ~-*W&@@B8%8%88&8&8&&&MB{(>x: <t#%$8&%&#####M#***##**ooo#oaaaaaaahhhkkhkkkkh8&M#8W*ddppqqOZ|-U+ \u[>CXXYXzX. + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== +M*dCu* + ; : : : , : : : : / : : : : : : :: : : :  +%#Z.+; ; {]+ : : : : ,} , :: : = ]+X : : : : : : : :: ,  +WMoqU. :)[ : : : : : ; X : : : : W } , , W\ x : <= |{] : : :  +oohpCx@/ : ;: ; : : ; : : { W\ : : :  +dq0Y#M : [> : : ; :: : ; : :[ = , ] : :  +ZJuW\ +X \) : : : ;: : /(}< :@ +XW\ :@/(}: :{] : :  +v@ , \: : : : : | : | > : : : : @ { : : : + ; :: ) @/ : X: , = : , ] : > , ; ; : : : x, :: :  +: : , :: : / , , : :M|{ , : : : : [> { , :  + : , )[ : : #M|: , : : : :: M| : @/ x <=  + : , : : : / #: + :: =#M  + : XW: : : : , ,]+X >x: : ]+XW > /  + : : ; : : : : ) ; / , M : @ }< :  + ; :: ; : : : : = | \ [>x+/(} : M {] W\) x =, [ , + ;|{]+XW ; :: #M X : [> ,<= * n+ : @/ + = | : , X, > M : +; } : :+ <, :+ ,+X + x / M|{]+X \:: , : : , : , W\ :  +; X : :: , + W >: ..* |{]+XW\ [> ( : : :: : , : ( :  + X ; {] ,[ : x : < ; .n*. n* +}< # : : , : :, |{ :  + / ; ; : : : : X+; *xnx *.. {] W: , : + : : }<= :, , ;  + { W\)[ ; ; : : @ : # : /+ + u*+ [ x : , : : : : : : ::  + : : : ;; ; : : :) : |{] \ .* <=# :,+ , , , : : : : : :  + ; : : ; ; ;; ; : : x ( . * ..X \ : , :: : : : : : : : : + ; : : : : ; ; ;; W , : .x ..* ..*.(} : | : ; :: : : : : : :  +; : : : : : : : : :: [u .zn*.. * .xXW\ : : : : : :: | W\) : :  +; ; : : : W ( : : ; ,#M..n+.WxuvJUQOOz<=# ; : : : : =: ;  + ; :: : : : : ; : whaM#Who%o*#ok**L\)[ ; : : : : := W: ;;  + | ; ; ; :: : , : : ; : <cJ@&#MW#M##MWW*o*#bc# ; : ; <= M {]+ \ ( ;  + x ; ; : : ::= , , : : {]+XWd%MMWMWMMM#M8&M####d)[ ;; : : + :#M|{ :  + # ; ; : : : ) , : \ >./mb8&8&&&&&&W#WBMM#**oobu#: : ::x |{ : : : : + : : ; ; : : :=#M|{ + :: <=U~m&WM8&%%&*q0Qdo%%W#o**oabu) ; : M ,: : : : : +:: ; : : : : ; : : : ]+{###W#W8WhOu=#M {]+Xnw#M*##*aaX= : : : :, : :  +,]+ ; :: : ; : ; ; : : ~xwWMWMMowc{]+ :: : }<Z#ooooahx : : } + : , : ::  + /: : , ;; ; ; ; : ;<=ma#awLmv\) : : : :W\md*ahhz} : X : =# : : :  +# |, ; : = ; ;; ; ; |{[?0dpdQ?x@/( : : \) @: |OMaoabYX : , , {]+X ), :  +\)[: ; : \ ; ; ; :W [{UZQOn<= XW : XWq$W8Wu/ <= ,, : ) :  +c<=#M : :[ : ; ; / <=*. .]+ :[ : :XW\)[ / <Jdbkn] , : :  +dmCcx[>x@/(+<=#M|{]+X; : : | W ]u : ;=#M ]+XW >x@/(}<=#M|{]v\vUux.x@/(}<=# {]+XW\)[>x@/( # ; : +WM*oohbwmZQCJJUYYXXXzunnx#M|{]+XW\)[>x@/(}< #Mn{]+XW\)[>x@/(xnuvYLOZZZmqqppbbbdbbpL(tCzXYXzvvvn@nvcvvvu| . + x> *x +$%%8&WW###**ooahhkkkkkkbbdpqwqwwmO0OmwwZZOQOZmmmmmmmmmmmZZwwqpdbkhhhaaooo*##M##*oaaahdqqqqwmmmmZZOO00QZ[><: _< : M} ;> +@@@$BBB88%88&WMMM##M####**oaaaaaaahhbkhkhhhkhhaaaaaaaaaaaooo*###MMWWW&&&&8%%%88888&WMM**oahkkkkbdddddddmJJO0Jz?)CqhQ0J + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== +#bC.*. + \ : ; ; ; : ;; : > : : , : :  +8kz* x@/ } # : ; ; ; ; ; ; < |{ : [ : : :  +M#bQ. =#M| : ; ; ; ; ; +, @ :: # , } : ]+: \) > ] : ::  +ohdC+XW / , :]+ W\) : ; ; : >x : ) , : : : :M : :  +mJ>x :} { : > : X : } = [: : = :: : : : : : : +<= : W )[ ; :# X : @ ( <= < : : \)[ =: : :: : >x : :  +; : , ; : >x@ , M M| ]+ : : ; : [ : : M \  +; ; { W ; : <=: , \): : : :XW : x , : \ }  + ; (: : : :@ W )[>x@/( ; : :: , < # , > ,/( ,  + : :M|{ ; ;; : : , : : ; : :  + ; ; ; ; : :: : {] ; ; ;= , :) | |  + :>x ( : +XW\ [> : : { ( *....*.\ : / ]+X : } #,, , \) : + < : | : x |{ + W\ [ @/ }<: M { X , : : : : : , \ ( : +: @ : , ] ( :|{ ;x / }< M {].*W\ : / : : : : : { :  +, #M :; : : , : #M ] [>.Y*.} :: ] W [ : : : : : M ] X : ;:  + { : ; :, , , : \ [ x@ (}n=. + .+ ;@ (}< : ,\ x : : + W\ : : :  + x ; : , ,: : = M|..*XLXn. x@/(}< + . + , : : : : : :  + : \ : : : : : ;\ [ *..YJnv. vnxvx* x[>: : + :: : : : : :  + : , : : : : : , =+ ]cnv..n.. .x}< : W : /(}< : : :: : : ;  + :: : : : : # |: : :@ , + W\ x@/(.+ {] : , : : : : : : :; ; : + : : :: : , : : : , } { * *> @ : : : ; : : : : : ; ;; +: : : : : : : } { X + [ + .x= ]+ ,: : : : : : } X ; ;  +; ; : : :: : : , /(x .*....XW , ; :: : : : ; ;  + ; ; ; , : :: , , +Xu.* *(} = : : : :: W\ (}<=#M| : :  + : : ; ; : : : =# :: /(* ..*{nx[~\) : : = : : >x@ { : : :  +X , ; ; ; : :(} : < #MJ)LZwkmboaa*hqc<=: :X ): : > : :: :  + } ; ;; ; : : W : \)m0@%M8#M&o*##*owz\) : / ; \ : : : : +{] ; : ; :: : ; : , : ,(}n-0&oo*M#W8&&88W&MaQ=;; +X ; :} M : : : : + ; ; : : ; ; ;; ; : : { +dbW#M###*##*o&&W#MW#hu) x: ;; , ( : : : :  +: ; : : ; ; ; ; ;: : [C.vhha*aMMMM&&W&@B&&Woo*MO{#: : : #M| : : : :  + : : : ; ; ; ; : [ @ }]mkppqqbka#ahp0Yn//zQ0hMWW*M#c) : ; { : :/ : : :  + < :: : x@ ; ; ; ; : < |{]CwZZmwbkpmX}<=#M )[OpMM*&b[ : : , = M| + , , :  + : ; { : : ; { W\)[LwZZmmmqn}|{ + : >x@ =#M|mWoWw\) > ( , :  + ( ; > :: : : /ccvqZOwYn+XW : :{]+ : ).>*Ma#Yn= , : X, :  + {: ; x = ; : :: , |{_p#kopv> : | : ; : #xM%BMzW :: , :M , : : + ; ; | X ; : :{]+ :\ [xxZhbz< : : ; : : [1ZwL[ : M|{ ;;)[>x |:]+ , : +=#M|{]+XW\)[>x /( ; : / <=; |z]; ;:>x@/(}<=#M ;XW.)[>x@/(}<=# ] ]+XW\)v>x@/nvcuxM|{]+XW\)[>x@ (} M| +apqpbbbqZQJXzcnuvuzccvn>x@/(}<=#M|{+>uW\)..xvXzvnxnvzzXXvxnuu.* cLOZZZZZmqqqpbdpqbZCqZwmO0OmmwmmwmmZOOOCzZLLmY{Ox1.c0w +8%8WMWMM#**ooahhhhhhhkbpqwwmmZOQQ0LOwZOOOZqpppddddppm0zJZmmZ0X*cOwbhhaao**#MMMWWWMWWMMMMMM#*ooaaaaahkk*c ?><[-: /|:~+ +@@$B$$BB888&WWMMWWWMMMM#***oahhahkhhhhhhaaooo******oakqpkaahaaoaoo#WWW&&&8%%%%%%%B$$$B%%%%8888&&WWWWMMWhmZkbmL1fpW$pdZ + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== +WaZu. <= M; :\ , : : + , : @ : : | , : : :  +Mwu +X [ @ : : : x > : : { X : :W\ , : (}<  +*kmv :@ < | W: : M :: : , , : ,/ > W ; +mJx< :| +X ;>x@ : : XW ; : = :: +{] : ; ; ;; : @ : : ; , :  +; : ; ; ; : ::{] : ; ; : + W , >,  + : \) ; =#M {: : @ : ; ; : { > : }<= M ]+ ,, , : W = :  + : / = : x@/(: :{ >; ;; ; ; / }<= : : : , : W : ]+ :  + :: { : , }< # + : x # ; ; ;; : : : : , { : M X :: :  + :\ /(:: ; : x@ ; \ ; :=# : : :: : , , : , W\ : : : : + ;( { : ; :: : ; ) } M| +X ): ; : : { : : : : : : : + ;] [ : ; ; : :: , = : ; : > : : : : : : :  +; : : : : : : X @ (}<=#M : ; ; , }<= : :: : : ; : :  + : : : : : : @ {n+ *)[ x (}<= , X ,[> : , : : : : :; ; : :  + :: : : , ) > : = x +. M|{]Yzxc)[ }< { : : : : : : ; :: ;  + : : :: , : /(}<= | + xW )Lx .*uJn=# +XW\)[ x : : : : / ; ; ;  + : : : : , : : [u* .x}<LYx* .u.; ) @u( += :: : : : | ; ; ;  + : : : \) , :: : : # .vnv0Xun @u <=#M.{]: : : :: : ) : : ; ; : + ; : ; : , : < :\x. * ..c.#M|{ * [ : :=# : : : (} # : : ; ; : +: ; ; ; : / # : <.*xx + ) *u< : +X : : : : :: : ; :  +, ;; ; ; : :] : W* .Xxn. +=# *.+ : x : : : [ : ; : :: ;  + [> ; ;; ; : } { , , : < Cc.xn * . cx@ :: M , : : X ; : : :  + : : : :: : : : : ; XXxXu..x....*YY : :[ ( : : ( : , : :  + :W : : ; ; : ;: : { +: ; Uv JY.*...* nz[: : = : :: : , :  + : : ; ; ; ; : (} ; ]LX.x*....*.nz=#M + W , : ] , : :  + : : @/(; ; ; ; : ; ,x#*oaoaZabhakZbm) | : :@/ : W : : ; + :: : M + ; ; ; : X x : Ma*Woo#b*bkbkpwOx=#M ] [ : : : / = : ,: :  + : +X / : : : :@ : W\ZpobpddkkhkoohhdqQ\)[ : / # : : , , :  + : @ : :: : : ]+ : /YnOppqpqwwqqpd*adqqqqOu#M X :  + : | )[ : : : :: : : |0LQQ0mmqbddqm0Q*bpdpqmZwZX[>x@ ,] \ ) :  +| : :> : : , : : :: \)JCJCQOwZLcM|{]+XW\)[uQmqqZOOYM|{]+ : @/ :| } :  + x : # : : W @/(zCYJLCUu+XW\ , < #M|{nCZ0mZJxx@ : , , x ]  + :: ) : : M|xccYLu)[>x :: :x@qmZOZZO|{ : : : , X: :  + : ,: : \ccXcu/(} =# , : , :: |{]Zakkod> : : : , : : :X  + =#: :W\)[: : M (zXLO0|{ + W , : : x@Owha## : : ; : ; ; : (  +] : ; : \ ]+Xzx)[ =, : ; @ } : |{]+X1() :;}<=#M|{]+XW\)[>x@/(x<=#M|{]+XW +x@/(}<=#M; ]+X* [>x@/(}<=#M|{]+XW\ > / :<=#M|{]+XW\)[>x@/(n<=#M|{]+XW\)[ = |{]zC0mwwwwwwwwqppdbqdpwwwQOqwwZZ +XnuzvnWnvczUCCLLLLJJUYXcuxx)[...*..<=#M|{.xxxxxuxuXYUJJCQQOmmwmZmmZZOOQLJXu#M|{]+XW\nXQwddbhao**#MMM##WpC*pp#Z)ac)rYwk +*ohhkbdppddddppppppqqmZQQQLCJUJUYXXzu.uzUQQ00OZZmmwwqpdkkkkhaahhhhkkkkkbbdpdwmmmmqdkha***#MMM*aMW&8888@J<[++{? _x[+_ +&WMMM##*********oooaahbddpqwwwmmmmZOZOZmwpddbbbkhhaao**####MMM###MMM#####*oo*ooooo*#MW&8%%%%%W#8BB$$$$$%#*B%*brUM@@MWa + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== +0dU. ; ; ; : : , : : ; , : , +J0@ : #M|: ; [>: : :]+ ; ; : } X : > M , :: : x@: +uY. : > :} | : ; /( ;; ; : x@ : , +X : : :: ( =# :  +*. :: #M : >x: : : / : : ;: } : , : : , : : #M :: :  + : : /(} | : : { : , : , :: : | W : : : : :  + ; [ @ }<: : X ) ; ;#M [ : = , X : |{:, : : : : : :  + } ; : : ; ;W\ }< : >, } ; :\ , + : : : : , :  + : ; ; : : :( {]; ; : =: + ; : # + x : :: : : :  + ; } ; ; : : |{ [ : ; :: X, @ ; : : : / : : : : :; : : : + ; ;: : ; : , : : , , { : ; , : : : : : ; : , :  +; ; : :: : , < : , : , x: (}<=# , : : : : : ; : :  + ; : , /(} :: ] )[> : < : ) : :: : : :x : ; ; : :  + ; : : X , (}:: : W+) >x@ #M| + x (} : : : :: } : : ; ;  + ; ; : : : : ,}<= Wx)[> @ ;{] X : : : ] , : : ; ;  + ; ; : ( X , : <=# : W\)[>x /( .*XM [ x@ ( <= M : ,[ M : :: ; ;  + : ;; ; , , + : }<n# c{u. +.) (:< #M { : ; : : ;; ; + : ; ; ;: : |{] : ] X..xnXOCvu. =#M|{ ;.W [ : : W < ; ; : ; ; +: \) ; : ; : :: : M , :@ ( *.uzLCzu x x@/ }: | , : |{ W: : : ; ;  +: : : : : ; ; :[ x ( : { +. *u.n.+ = , )[ , : + ( : : ; ;  + +X: : : : ; ; : | + ;: /xx* x. \ , : :/( ] : : : ;  + ; ; : : x@/: ; ; :> : M {]cunx.* . +} XW : : : :W\ : ,, ]+: :  + ; ;; : ( # ; ; : M : : [ xYv ..* *]+X >x, : : : , , | ]+ ::  + ; ; ; > : : : : : #M|cn.* > @ (, :: : > # , :  + ; ; ; , :: : ; ; : W< [. + =# | : , > : , : } , : + : ; ; : : ;; ; : /Orf0LYYLJQ0Xn+ : :\) : : XW , :  +:/ ; : : , W\)[>x@: :: .n&#bopbdppbO0c=#M : : , , :: \ , :  + : : | ; : >ppwpppdqdbqppmmQx[>: : : : : ( , , :: : :  + x : :: , : { : .+YqbppqqqwZwhapmOmZQJnM : : : : : , , : : ::  + : : (:: : : x ; +XZwwppkkkhdqhWdwZZ0CJUc[>x: : : : : , : : :  + [> ; =#M|{ : : @/ } : \ ; xqwmZqpqCXzcuuvJQqdwmZ0CXzcvn{]+: ::x : : : : : :  + : : ; : # , :=#nmmqq0c\) >x, }<=#M|c0OOZ0CJJCz/( :: : : ; : : : + : : ; : \ , ; nqOZX@/( < : : :x@/uXJUUUYJv+XW / : ; :: : : : : +:: , ; : : <=#M , @~_wQwzM > @/ : ]+XWc00LLU/(} : : :[>x : , ]+ ) :  +: ; :: , : : [1QdmJ~ : @/ ] :: : }<Ykkkh]+ : : :< ,:  + ; = : : : [>hwc( : ] > : : ;: + / }<. < + : , / : )[>x@/(}<=#M +XW\: ;(} ; {]+XW\)[>x@/(}<=+M|-]<~> ; ; ; ; \)[>x@/(}<vYUULOZmm0UL>_@/(}<=#M|{]+XW\ : x@ (}<=#M {]uvczc +ZhOUzucYvuvccXYYYYYXXzzczzzzXYYYUJUC00JUXx=xnvvcvvvczzzzzzzYL0mqqqppdkkkhhhhkhkbpqwZZQCUUUYUUYzcccvvuMx{ XvzCL?zv?[xXm +d@$B8&WMM#**ooakbbddppqqwqqwwqqpdpqqwmwqpdpqqqqpddbbbbbkkhhhhaaao*##MMMMMWWWWW##******aaaaahkbbbbddddpdmx] +>}= :|/~ ~ +d@$@$$BB8&WMMMMM*oaahkkkkkkkbkkhhbpwdbkhaaahhhao******#####MMW&&8888%%%%BBB%8&WWWW&&&&&WWWWMM###***#***odpa#ddrjb#B*ak + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== +ZJ=# ; ; ; { ; ; : M : :: : : : } # : : :  +vXW\ (} ; : W\ x ; :M x ; ; : [ : : )[ @ :: : \ : / } : :  + /( |{] ; : ,= ; ;) : : : , ] ) : : : ,, : : : :  + ): + ; ; : ;}< \ ; :} =#M , : ( = , : : : :: : :  + @/ :; + ; : ( : ]+ ( ; : : , x : : : : +  + ; : ; ;: : { X , |{ ; : { : :x \ : : : : , #  + ; : : : : , W\: : : > : : , ) >x : : : : ; : { : : + ; : : : : (: ; : , = : : : : : :: : : ; ; ; ;  +: : : : |{]+ #M| : ;; : : : /(} , : : : : :: : ; ; ;  +; ; : W : / <= : X \ , }<= | : : : : XW\ : : ;; ; ;  + ; :: : < , \ x@/: : { )[ x ] /: : : : @ : : ; ; ;:  + ; : : [ , : : x@/(}*.#M , :: : : <, \: : : : ;  + ; ; ; : , : : @/ #+ .+X >x@ , @ : :: + : : ; ;  + ; ; ; : : : M )[>x@ } =vu|{] > / + : @ , X ; : ; ; : + : , ; : : : \ : { XW ..*v@ #M|{ +X ) : , x (:; ; : ;  +: , : : : ; : : W ) >x@ZJu.*+ | +XW\+. +( < , : =# | ]; : :: ; ,  +: : :: : : ; ; +XW [: } = xnXZQzX. <x.. +;.# ;{ ) : : x : : ; ;:  + : : : =: ; ; : } =: ;X \* .uX00Yc c. + W\)[ , : : : x@/ : : : ;  + : : : ] ) ; ;; ; X \ : ( <.. *vncu .. ; / : : :: : : : , |: :  + : ; : : ; / : + Wxn*. ux ; { W : : #M| : )[, : = : ] > :  + ; ; } : : : : : :@ (}ccvvu* . +)[ , : : , } , M : X  + ;; ; ; W\) : : : : ; : { +vX .ux ..*.<= , +XW : #, \ : @ : : + : ; ;; : : ; : : : : x:/Yv.*. ]+ :: > : : , : , (} : :: +: : ; : ,: ; M ] X \) x : #M|{n.* > : +X: : : : , : , : ,  +: : ; : <: : , : XWhpdwwCwZOm00M| : : : : :: : , : , : : ,  + , ; : : : : M : @/w*Moo*h*kkadqJ[ ; : : : : : :, : : : ,  + M : : ; : | , :[ < ; |zhhppdbhdhohbkp0cM| [ (} =# , : : ,: : : : <  + , : ; ; : , : }cakdpwqdpmmhMhdwppOX>x@ : , : : :: :  + : } : ;; ; : , }XLqqkbkbhohbd&oddpwZO0J|{]+ \)[>x =#, : : : : : : + : : ; : :: :\) x ]mappppddp0(}?_#M|YUCZww0Lcx@/(}:; : : : : [ , , : + ; ; : : : :: , >zdqpdddwv| \)[> @/(}cUUcUQJ+{< : :: : XW\ :  ++ ; : , : : : ( =[dpdpqqX\) ( : : XW\)[nCQLz}<: : : @ , < :  + ; ; : : , , ; XWUdwqwu/(: #M| : [: Mv00OY} : : , ,, / ) + ( <: ; : : : ; >x /cdoaom| : ; :: } + >wdda}< : : :[ ,  + X ; ;; : ; |Y0*W&0) : ; ; W : >_XQCXW : /(} )  +>x@ ; : : @ : :[.UCaz} : ; ; : }<=, +XW\)[ \)[>x@/ +#M|{]+XW\)[>x@/(}<=#M|{ W\) :; /(}?unx*{ +XW\)[>x@/(}+=#M|{]+XW\)[>ncCO0OOCc|{<+XW )[>x@/(}<=#M| W\)[>x@/(}ux. |; +%Moaaaa**oahkqmmZ0JYzn>x@/xx<=xucXQwddwZJvU000ZwqddqwZ0LQOOmqppwmZ0Owdddbdbdpppm0CYXu<=xxnvcvunnn[>x@/n} c.xJ{~Y] < : +@@@@@@@@$BB%%%8&&W#*ahkwQZbbkkhhaaooo#M#MMMMMMMMMMMWM#######**###M##MMMMMWWMM#*oaooaakbddppdddpppppqpqkc>_++?- :/?x<<< +&&&&&&&&&&&&&WWMM##*oahaaaaahhhhaaooo********#*********o************######M#*oahhaaahhkkkbbbkkbkkbbbbbkbpdaabZfYka*dbw + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== +pZX ; : ; :: / , : : , : : , : : : : = : :  +u# ; : : :=#M| X:: [ (}: : : , + : , :, : : : : \ > : :  + ; : : : < ]:: : : , :}<= , , : # +, : : : :  + ; : : : X [ : : M|{, = > : , , / :: : : :  + ;; : ; : : } : : , : , ] : : :: : , + ; ; :: : , , : , }< :, : : : : : : W : :: ++ ; : : # : : ,\ : :@ ,< , : [ |: : : :  +; ; : : ) :: : \ / |{]+XW , ( : { , :: >x : , : :  + + ; : : : : : : [ : := : x : { , : :  + + ; : : : : : ]+ , : @ : : ), , :  + ;; ; : : ; : > # , W ) :: # : : ,] + , :  + , ; :: : ; : : X :: : : ]+ : (} \ [ : : : + : : , :: ; ; :)[ ;/(}<=#M|: [ , : :: : : , / :# : : : + : : ; , , : :; : {. + \) : / }<=#M X \)[, @ : : ::\) : : : : :  +; : ; ,] : : :: x* <= M| , x.) /( + M {: , M , :( : :  + : : , : ; : *. *W ) > +< + W\ [ : , \ > x :  + :: : < , , : ; : ; >. + v.. ;;.W : >x / : : : @ : |{ M :  + : : ::\ [: : : : ; ; #nn *.vn.+ . + M| ) : : , : , ] XW\ ;  + : : : : :: : : : ; )c .* + + \ : x :: : : , : : : : :  + : ; ; : : : :: X,\ >x@/ :=. *. + x + (}: { : : :: : , , : : : : + : : ; : : : , : \.+.U.xnx * ] : : : : : : ,, : : : : : + : ; : ,@ : : <C.zu*... *..> : : : : : : : : :: : : :  + # : ; : +, [> , Xv Yu.. ++ . ; ,x /(, : : : : : :: :  + : ; ;; : \) : : :/ <* * .c) , : : : \ [ (} : :  + : ; : , :: M : |{bkhpk0dpqpwYQL= , + , [>x@ : : X > ) :  + ; ; , , ; ; ;: : \)[nb#haokobkhbpwmQ\) : : : :: / =:  + ;x@ : : : : : : :\ /(}<=O#bkhkkkbo*hakqppJ=#M: ; : : |{ ,  + : , ; ; : : , ; } M| ]xnQ*khkbhhbdp##bqqwmmw0U[> ; ; : )  + :\ >: ; ; : ; : uxwbpkkaopOCUYd*ddpqmOZwZOQx|{ : >x@  +: ; ; ;: : ,M XW ; ; >mqwqdkZu)[> @/(}<cUJOqqwm0QQCUx@/ [> (}  + W\)[ : : M| x@ ; ; WpqmpwJ/( ; : : [>xCJQLCCCCC{] = :  + / # : \ : ;; ; ]/dmqb#M| ] : ; ; : {]CQJUJUUU@/ } \ : ,  + \ : ) : ; QUdpqUW\ [ , : ; ; @nJwq00ZJ{, ) } :: , W  + : : : + : ]+XW\La#hQ/( , ; ; : : ]+Zmpdd>x : , ,,= \  + : :: ; @/ <=# , }|vLd| : , ; ;; : :[> +<[<=x : \)[>x@ M : \)[>x@/( : +nXW\)[>x@/(nXzuM|{]+XW\)[>x@/(}<=#M| W . >x@ : : +\)[>x@/(}<=zJUJznXW< [u*@/(}<=#M|{]+XW\) ; (}<=#M|*]+XW\ +%%WWM###**###*ohhkbbdpqmO0LUYYYUYvYvucuzYYUQUv|{]+XW\)[>x@zJJczJJJ0ZZmqpqqqqppqmQCJCQ0LCCJUYXzzuunx<.xxvnvcccXYJQQ00Qc +@@@@$$$$$$BBB%888&WMM#***ooahhkhkbddkbbdppppppqqwmZZOOZwqpbkkkkkhaaaaaoooooaooahkbbbbdppqwwmZ00QQLLLLL0.xXvc0|[0-~\tOv +@@@@@@@@@@@@@@@@@@@$$$$$$BB%%8&&WWWMMM#####*##*****#######M#MWW&WW&&&&8%88&&&WMMMMMWWM#**oooakkkkbbddqa{_>? 1+, \\n>]< +&&&&&&&&&&&&&&&&&&&&&&&&&&&&WW&WWMMM#*********oo*********#####MM##MMMMMMMM###*****###***ooahhkkhkkkbbbkpqpakbJt0a##hoJ + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== +op0u : :: | + , } : : x : , : , : , : :  +dQu( ; : ) , > : < : # :: : > : : : :  +OX* ; ; < , : = : + : \ [ : , :: M : : : : {  +cn ; ; : W\ : +: [>x , : : ] : : : : : M: : , +* + ; ; < , , >x: , >x,/ ]+ : / : W : :: : :  +; ;; ; ; :W , : : + = : :, (, : ( , : :: :  + ; ; ;; ; : : : x W : , , )[ : (} : : :  + ; : ; , :: : : # \ [>x@ : : + x : # , , :  + ; ; : , : ; :: )[ x@ ( : : : # : ) M , : :  + : ; : : : ; : : :: : : : : : : ] : , : : , :  + : ; : : )[ : : : : : :: : : | : : : =#M| >x :: = {] : : + ; :: : [ @ , : : : , : : := : : : X |{]+ @: :  +; : ; < , x , ; : ), x : , \)[>x@/ } : : : =#M| { :  + : ; X ,, : ; : =#M| : W )[ @/( ; ] : :: : +X :[ > :  + ; ; / , : :: : : \ > ( < *{] : , (} : : x : #M ] M:  + ; ; ]+ , : : : ;: } =# ]+ + > @: # |{] : : : : :: , :M| W\ :  + ; : : : : : : : ; + \ *+ + M+{] X; ) : : : : : , :: : :  + : ,: : ; : : : , W\)[> < + ..+ \*+ +(} =: : : : : : : ;; : + ; : ; ;; : : : XW + . + { :: : : : : ; : ; : +: : : ; : :: : @ (...* .* [ x : : :: , , : : : : : :  + : : : < : = { +.v*.. + < # , W\)[ , , :: : : : : : :  + : ; ; : , +: : _nc. . + XW , : : (} | ]+X : : :  + : : ; : @ , : , [ : ( M {]Xc.*. @ :# ]+XW\: : : { W (} M : :  + : ;: : : : ; : :| x@. * **{ : , : : : , , ::  + ; ; : , ; : ; : / <uXxwOwCwmqw0muu/ :: ; ; : = ,  + : < #: : : : :: : ; M| XnJ@#oMk#hhkdwwCX]+ ; ; ;; : +X }  + : : ; ; , : /( ;; : : *>dabkhaaoa#*ahbkbQ/( ; : [>  +: : ; : : ; ; ;; # ?OkohahbbkbphMhbdbppp0uX; : ( XW: >x  +: : X : / [>x ; ; ; U/[abhhh*oo*hkoBabdqwwwqwQu}< /: : +  + : : : : ; ; ; (whbpdhkwJcx\)czJOpkkkdqwmwqOJW\ @ } \) ,/ )  + : ]: : , : :} M|{dpdbpOc>x ; M|{]+uCqbdwmwmmX< : ,W = : : \) }  + ; : ; # : |{ XW+)Udwpu(}<: ; ; /(}<=ZmwOOmvW+: : ) : ,  + : : ; \) @ : ztZhwQ|{ : ; ; : ,W\)XkhpaZ} : = : , : + : ; ; <= : }< {}q&0Q)[ : ( : ; ) , ;#Xmadz : ,(} , , =#M|{ : +;: ; ; : >x@ < : >cx0c}< , ; M|{]+X+\ _.*.? +< |{]+XW\)[>x@/(}: ::]+X+ +  +c#M|{]+XW\; ; }<:#M|{]+XW\)[>x@/> =# | ++X ( ;M {]+XW\)[nUCQ00wZOJv{]+uW )ucXzzzzcunM|{]+XW\)[>x. * <=**n +B8M##*ohpLXXcxxnuYYYXJ0wwwqmmwmZOCJLJQUULCYUYu(}<=#M|{]+XW\YQOL0ZZmqdbbkhhhhhkkkdwZQUcYQOOZZZZZO000LCCUCCUUYcv* + W\.v +@@@@@@@@@$@@$%%%%%8888&WMWWWMMM#**oaahhhkkkdddqqqwZOOO0Zwpbkkaaaaoo**##MMMMMMM#*oaahkhhhhhkbkkkkbbddpqpLcmJYQx<.@ (}nY +@@@@@@@@@@@@@@@@@@@@@@$$$$$$$BB%%88&WWWWWMM###*********###MMMWW&888%%%%%BBB%88&WWWWMMMWWWWMMMMM##****oMz@-< +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$$$$$$BB%%%%%888%%88%%BBBB$$@@@@@@@@@@@@B%%%%%%B$B%BB%%%%%8888&&&&&#kkM*bm/ck#&bkq + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== +O.+ :: ; ; ; ; : : , , : : : : : : < : +mv ; ; ;; ; ; : : : : :: : : : : : W ) +mc ; ; ; ; ;; : : , \ , : : : : :: : : : +  +U. ; ; ; ; : , :: : , : ; : : : : :: , | X : /(}< , {]  +z. ; ; ; ; : : : : , : , ; ; : : : : / : : : :  +. ; ; ; ; : : : : \, :: ]+XW : : : , : : < { : :: : :  + ; :: : : : , , : : W < ; ; : ; : [ : : : ::  + ; : W , :: : , : : : |{]+ : : :M| XW :; ; ; ; : } : : : :  + ; :x / < : : :: ; : ; : : : : > ( := : ;; ; <=# , :)[ : : : : + ; : W : : ; ; :: ; ; , : : # \ , , : , [ @ (} #: : : :  +; : (}: , : ; : ; ;\ : }; .M|{ : , : :/ [> : : :  +; ; , | : ; ; < + ..*XW\ : :} : : : : : \)[> :: ; ;  + : x , : : + W+) >x@ <=# {: @ , ; : : : : : ;;  + : , : :: , = : , : = +zn )[ { : ; : : : ) } : ;  + : : : : < ,: : > { +X [>x*.X X=# W )[ @: :#M| +XW : :(} , : :  + : : : : , : = , : /(}<cqv*. z~ )[>x@/(} #M W <= , / : , : + : : , , : ( : : ,,M {]un.z0Yzn /(}<.* {.* ; , \ , ] : +,, : : : : , , >* .vvQZv.; x n. .x@/(}: : , : ,  +, : =: ]+X : : , : x , = M. *XJcJu n.*+ cn#M| + } , ,}  + ; ; ; :: : : : W ). * *C...+ +XW\ : , , : X [ ,  + ; ; ; : : ,, \ , ; =.uux.*.zn *.X@ , : :: : M , : : , ,  + ;=#M|: ; : : , ; + W\QuncX...nYcM|{ : : : : :: : : : : :  + ;X ; : : ;; /,_<U.uuvuuuuv) ; : : : : : , +:: : : :  + ;@ = ; :) ,/( : :] ; ;+ WCQu..*...<= : : , : : : > / : :: : ; + : X ;; ; :| : : : ] : ; / }cv..xxnvzJ(-[> : : : : : , [ x : :: +: : ; ; :, : : : ; ; {qUhao#dWWMM&#oLcM :: \, , : : \ : ]: ,  + : ; ; : :: : :< M: ; um&@%W8#&W*####*Zu[>: :, \) : }  + : : ; ; : : :: : ; =YxWMooo*o*M*#MM##odXM|{ , < ;; : W =#: :  + : , : : : = : : : :: +XZoWM**oohkbbpp#*abbhbZ[>x , ; : :, +X : :  + ;; , : : ; ; ; : , >x0zdkkahkhkddqZOwMabkdmmwdJ-| , @ : : : [, :: :  + ; ; :: : ; ; ; : : ;=zkbppqpbpppmOY/(}<=#MxQwppmOZ[> : } = : : , : : : ; + ; ; : ( =:; ; ; : : + uYLCOwwmmz=#M >~xU0OCC#M : : : |{ W : ; + ; ; : , \ : :: : : .x xvU0Cv{>+ , |{]+0UUJ[ :: : : ) : ;  ++ ; ; : x : , , :; * ...XW\) , =# | z0CCU# : : :: } : :  + ; ; : |{] : , , , XW\)[ x@/ = : : / , {YZZpn+ : : { \) x@/(}< : :  +. ;; ; ; : : : , ; :: : : : x@/(}<= : : ( : : :: :  +Cx{; : ;; : ; ; : } # |{]+X :[ x@; + : :: : :M| ); ;}<=#M { : ; ; ;  +bmUx@/(}<=# + ; )[>x ..*. * ]+XW\)[>x@/( +=#M*.xuvun..>x@/ ; : W\)[>x@/(}< M|{x+XW\)[>x@/(}* x * >xW: [uX +&W#hkbZZOO0LJXvuuucYLQQQQQLCUYUUYXzXYcnunxxuvvczzXUJJJJJUUYYYXcvnuvunx>x@/(XCCCJCCLLCCCQQ00QQQQQCYYCQLOXW< -~ (~/=<> +B%8&WMM#oooahhkbdpddddpppqqqwwwZmmZ0QQLQQQQQ00000ZmmZZ0Lc.zL0ZZmmwwmmwwwwwqwqqqwwqqqppqpqqqqqppqqqqqpppwOOdpmL|udoWdbw + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== +Ox , ; ; ; ; : : , : : , , : , > :  +mv : ;; ; ; ; : : , : ,, : : : : : : M,{ +mc ; ; ; ;; ; : : : |: : : : :: : : : : =  +U. ; ; ; ; : :: : : : : : : : : :: : , ( # : :\)[> }<  +z. ; ; ; ; : : : :: , , : ; ; : : : \: : : :  +. ; ; ; ; : : : : | : , ,<=#M: : : , : : > }: : : :  + +; : : : : , : : : :,M > ; ; : ; : : ]: : :: : : + ; : M : : : : : : (}<= : : : /( #M; ; ; ; ; , [ : : : : :: +; : X \ > : :: : ; : ; ; : : + ): x :: ; ; :>x@ : : {]: : : :  +; : M: : ; ;; : ; ; , : : :@ |, , :: : ] W,)[ @ : : :  + ; )[ , : ; : ;; ; | : [ ./(} : , : : \ ]+: ; :  + ; , , ( : : ; >+; .*.#M|: : [ , : : : : |{]+ : ;  + ;; X , : ; = M { +XW >x@ } : W : : : : ; :: ;  + : : :: : , , x: , : x, =zn {] } : : : : ; { [ : ; ; + : : ; : :> : + , } =# ]+X..X Xx@ M {] W : @/( =#M: : )[ : : : + : : : ; , :: x , \)[>cqv.. *z~ {]+XW\)[ @/ ,M >x : \ : , :  +: : , , : ) : : , / }<un.z0Yzn+\)[>* }. ; : |, < :  + : : : : , , + .vvQZvx x *n. *.W\)[ , : , ,  + :: x <=# : : , : X, x /. +.#JcJu nx. cn@/( = [ , , [  + ; ; ;; ; : , : : :M {.* +.C..* =#M| : , , , : # ] , ,  + ; ; ; ; :: : , , | : x.uux*..zn*..XW , :: : : / : : : , ,  + ; x@/( ; : : : , ; = M|QuncX..*nYc/(} : : : :: : : : : : : : + ; # ; ; , : : ; \ _>Uxuuvuuuuv{, : : : : : :: = : : : ; +; W x ; ; { , \): : < ; ;: = MCQu.*....>x : : : : : : + \ :: : : :  +; # : ; : ( : , : : <: ; \ [cvxxxxnvzJ(-]+ ; : : : : , ] X :: :  + , ; ;; : : : : ; }qUhao#dWWMM&#oLc/ : | : : : | , < ,  + : : ; ; , : : : > / ; :um&@%W8#&W*####*Zu]+ , |{ : [ , ,  + : : ; ; : : :: : : : xYxWMooo*o*M*#MM##odX/(} >: : M , x@ :  + : , : ; : x : : : , , =#ZoWM**oohkbbpp#*abbhbZ]+X , : ;: : =#: :  + ; : : : ; ; ; : , , +X0zdkkahkhkddqZOwMabkdmmwdJ-( : W: : : ] : : : + ; ;; : : ; ; ; : : : xzkbppqpbpppmOY\)[>x@/xQwppmOZ]+: [ x : : : , , :: ;  +; ; : ::) x ; ; : : ; uYLCOwwmmzx@/ +~xU0OCC@/ : : : : (} M : ;  + ; : : | :: : : : *x xvU0Cv}>= (}<=0UUJ] ; : : :{ , :  + ; ; : X : ,, , * ..x#M|{ , x@ ( z0CCU@+ :: : :[ , :  + ; ; ; (}< : : #M|{] XW\ x : : :\ , }YZZpn : : } |{ XW\)[>: :  +. ; : ; : : : , , :: ; : : : ;XW\)[>x : : ): :: : ;  +Cx} :: ; : : : : [ @ (}<=# : ] XW + :: : : : /( { ; [>x@/ }: ; : ;; ; +bmUXW\)[>x@+ ;; {]+X .*.. * <=#M|{]+XW\) x@/..xuvun..+XW\ ; ;; :M|{]+XW\)[> /(}x=#M|{]+XW\)[ x +. >xM ]uX +&W#hkbZZOO0LJXvuuucYLQQQQQLCUYUUYXzXYcnunxxuvvczzXUJJJJJUUYYYXcvnuvunx+XW\)XCCCJCCLLCCCQQ00QQQQQCYYCQLO#M<; -~ :)~/x<> +B%8&WMM#oooahhkbdpddddpppqqqwwwZmmZ0QQLQQQQQ00000ZmmZZ0Lc.zL0ZZmmwwmmwwwwwqwqqqwwqqqppqpqqqqqppqqqqqpppwOOdpmL|udoWdbw + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== +whc + ; ; ; ; : : , , : : : : : : : ,  +mpn++ ; ; : ; , : : ,: : : : : : : + )[ ( : |{]+ W\) x@  +ZkU* + ;; : ; : : : , x / = , : :; : : , : { : : : :  +UQx + ; : :: : : : # : : @ }<: : ;: : : |{] [ : : : :  +..+ ; [ : : : ,, : , > : \ : ; : :: : : : : : : + + : (}< # : : : :, x : )[> <= ; ; : : : > : : : : ++ M : : : : : : ; XW : : |{ \ ; ; : :\)[> / < |: : : :  +: :) } : : ; ; : : ; : : :: : x <=#M : W\) x : >x : :: :  + : = ,: , ; | : ; ; : /( : , :] : ; :  + ; x : , ,X \) : : , : : + < :: ], : : M|{ > : :  + ; # : : = :: , [ : } , ,= : : :: : : > # : ;  + : : : : : )[ / | , \ : : : : :: M \ : :  + : : : : X : x; *x# XW : M : ; : : : ) }<, : ; + : ,, , : / : ( | ] ;W >x@nv}<= : +X > : |{] XW\ : } :: :  +: : , (}<= M : XW\) , : x@ (} =#X..X.Xz\, > ,:(}<= | : \ =: , |{ :  + :} , :: : , M| .+Xzwx.* cx} {] +\) x  + : x , : : ,, ) vc.cJ +x..z+XW\) > +(}< | , [  + : @ <= |{]+: : : : > , _. +.cz0C.v .x .un<= |{] M ,, , : ,  + : {,+ ; ; : : , x { : \** .*LXQ.*x *xz\) /, < , : : :: ,  + : ;; ; : : : , [ ; }<.c..*. nU*x. *uz(} : : : : : : : :, W\ + ;( # ; :[ : : \ : ] XWuJXvn..c. .xz.{ :: : : : : : :} : : , : +: ; := :: : < : @ (xQncYz*. uXcU[ : : :: : : : ] ,[ , ;  +: : ; \): : : :: \ ( ; { +vLxvvvnuvn.X= : : : : :: : , , |{ : ;  + M| ; ; ; M X : : {; ; @ (CQu....*..~ : : : ] )[ : :, x : :  + : ; ; ; : , : : \ [; : ::_ +XznnuvvzU0v1=#M: :x : : ) | :  + : :: : : : {: : , : : : Qko*#&*oBWWW8#kq)[>x } , : : # , ::  + : : : :: : : ; : = oB@$88%W%&W&&&W#wY#M| : > ( : : : , }: :  + : : : ) : ;; ; :[ ( :XWn8W$&W&&8&88&8%%8WMhX[>x ,: , : : , : : : : + ; : : } , : ; :: : : ,@wd&W%888&&WMMW#W@8W####dtM : : :: : : : : : ;  +: ; : ] , : : : : :: #M0W#MW&&MW&8%8Mbda*kW&#oao*C~ : : : ::x@/ }< | : ;  +: ; ; XW : ; : +XuqM%###*MWWW#bX{]+XW\)[rZaMokaw} : : : ,# : ;  + ; ;; ;M } : : ,>xQoM#**##&&obQx\)[: : M1Xdbbbd) ; : : {]+X : ::  + : ; ; [>:: : # :) : <=LCvLqkaoMMLcx@/ : : :; xbpqmm= : :[ =# : :  + : ; ; : : :: , +qhmv Jdap(}<= : : : : cLdwwZOx : : X: : : :  + : : : : : : , W:: x*MW#MWqn|{ : : : : ;[u#o*#O< : :: W : , , + + : ; : : : : ; #wW#8%ov\ ,x ; ; : ; /(} MuYZZX+ : , : # : +** ; ; : : ; ; {*.X +)[v*0/ <=#M|{ucccvvn>x@/(}<=xunvULCCz?[ (}< *M|{]+XW\)[ : ,, +X ;> +YOX#M; ;; : : + .*xuccC[ (}?=YLYLO000mwwqppppppqwZQC0ZmwqppdpppppdpOv(-]+uvzXzcvux(}<=#M|{]+ : ; +*X +mWhdQu>x@xnx<=#M|{]+XWnvzXXYvcXUJCJLL0Owqmmqppdbkkkhaaaaaaaaoooooooo******ooahbpqZYx@xJLQOOOOOO000QLCUYu/;}<=#M {]1>  +qBWM*akbbbdpqwmZOOO0QLLLLCJUXXUJCCLLQOZmwpdbkkaoo***#####M#MMMMMMWWW&&&&&&&WWM#*abqmmwqdddbbbddddddppppp0QmqQO\|Zp*dqw + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== +B&kLn ; + : : : , : :: : : >: : : : : :: : : :  +8*Ox + #M| , : , : : @ : : ( M|{] : : : : : : :: : :  +WM*pC.+; XW : : : : : : ; : : :: : , ]+ ) :/ #M : : :: : +oakqU)[ :: : ; ; : ; ; : # ]+: : : : : +dqLX}< \ : ;; ; : ; ; : W ( : , M : : :  +OUn]+: :| +X : :: ; : >x@/ : [ # |{]+ : [>x@ : #M : : :  +n[ ; + : : X : ,, = : = : : : : :[> # : :  + : X )[> : { : , } : M: :\ : ; ; : : ) : :  + : ,: ; : : , , : <=, : : : : : W #: +:  + ; : ] XW :: }< , : :: : }<= , : [> (  + ; , : : :, , , :> } M| : (} +: + : ,= {] : : : : : M|{ \) : : M|{] [> ,  +: : : ; : : : , X ;> : < : , [+ @/ ,  +: ; : ; : : : , ( = ::+ W\) >x@ < #M| ]+X ) ( [  + =#M ]+: ; ,}< { : : \ : /(+ x| [> /(, = , , , :\ <  + @ ; | / : | |{+ ) > }<:#M| + : , : : : ]+  + { ; [ : , | ] W\ *... + =#M|{]+ W\ : :: : : : x  + { ; ;#M : : :, | ) / *u.. +n * @/ } : , , :: : ] : =#: : + > ; ; : : }: { + .nn .. + # ] : : : :@/ : , : : +:# {]+XW : ; ; : : } , > ++ +u ; W ): , , :X : : : :: : :  +: : :, ; ; : : : XW , := M : + +.. ++/(}; | : , : : : : : ::  + : : ; ;; : ; ; : ); x * *.{]+: : : : : : : : :  + : : : : : ;; ; :]+ ) , *.. +... *...x@/ = : :: ; : : : : : :  + ; : : : : : { : :: : :Wn zn . * *x{]+, : ; : :: : : = +X: :  + ; : : : :] x: : ; ,, : (}<x.u|xnuzXQLZmmCn(} : : : : : :: ( ;  + ;; ; : : , : ; : qo#&W8o*B*o#ok*oOuXW ; : : : : ( ] ; ; + =# ; :: ; : , : ; : /(Y@M*#M##M#MW&#*##hJ} ; ; : @/ <=#M + x : ;: + ; ; ; :: : , , } #M|{>h%MWWMWMM##M%&M#M*#kvW ; : M| , }<=# : :  + } ; ; ; : : ::X : :X \ /do8&&&&8&&8WM&$MM#*ooakc} ;; : ) <=#: : : :  + ; ; ; : : ; (}<= , : : /(L-qWMM8&%8#hOUUwkW8&#o**oakzX : : < : : : :  + ; ; : : : ; : : : ;M|\MMWWMW&#pC/(}< M|{]0*W*#**aaJ( : :: : :  + M|: ; : : ; ; ; : : -ub&MW##k0=#M ; : @/L*ooooahx : , | : : ,: :  + ; :: , ; ; ; ; > <(pa*b0XO]+X : :: : ]+Zp*ahhY@ : :{ : ( : : ; +}<= : : ( ;; ; ; ; =#1{mpqqU_)[>x: : :+ [ {QMooakU{] : | XW ,[ : : ++XW : ; = +: ; ;; ; ] ,W]U0C0@/(; ] , ]O%W%&v> ( X : :  +X/(}<; ; W ; ; : > /(. *.M : W : |{]+XW : > /XqqbcM W :: : :  +kq0YvW\)[>x@/(}<=#M|{ ; : : = ] ?n ;; (}< M|{] ;\)[>x@/(}<=xvXnXCvx.)[>x@/(}+=#M|{]+XW\)[>x@ }:= ;  +&W#**ahppwO0QQLCCJJJUXccv}<=#M|{]+Xx\)[>+@/ }xvuM|{]+xW\)[>nvczXC0ZmmwqpddbbkbbbkbOfxQUUJUYzzzvuczzzccc= x .+;n\ ;>.x +$B%8&&WM###**ooaakhhhhhkkbdppppqwmZZwpqwmZ0Zmwwwwwwwwwwwwwqqpdbbhhhaaooo*##MMMM#*aaoadppppwwmmmmZOOO00mW\> +< }<|#>  +@@@$$$B%%%88&&WWMMMM#####*ooaaaaaahhkhahhaahaaoaooaoooaao****#MMMW&&&&8&88%B%%%888&WWM##*ahhkkkkbbdddbbqO0qwOJ)jZdhmqO + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== +&bY... * ;+ : : ; ; ;; ; : : \ : : , : : : +Wqu + )[> }: ; ; ; ; ; :: : =# : W W: : : : +M#bC.+(}<= : ; ; : ; ; M [ :} , : : + \ : : :  +abmv|{ >, : M ] , : ; : \ = :: X : : : : < : ::  +0c\); @ = : :: \ ( : { : @/( W : ( # : : : : : :  + : {] X ; : {: : x,/( / : :+X , ,(} :: : : \) @/  + ; : : ; \) : :< <= M, : : : W : }< ]  + ; ,# ] : ,/ : ]+ : : : |{]: ) : ]+ \ , @  + :: : > : : : [ {] XW\)[>; ;; : : /(} \) > , # |, + : : <=; ; ; : : : ; ; : ::  +: : ; ; :: : : #M ; ; ; ( : : + ( <=# <=  +: \) >x , :M|{] W\ : :: # : x + ...*..]+ :> M|{ : , @ , , +:  + / , , :) # |;]+ ;)[ @/ :#M , : : : :: , x :  + )[ : #M : = [> @ : < #*. ] > } , : : : : =# :  + }: ; : : \ }< #M {:+ W\*X c@ : M ] W : , , : : x < :M|{:: ;  + # :W ;; : , : : ( ; )[+x@c(* x| ,; [>x@/ ) : : | ] : : ; : + :) , : ; :: , : , :( <+...XQcu..)[>x@/ x+M ,:X : : : : : : : + : , +: ; : : :: : , X+ ..JYnu*.z.nv{ xW , | W : : : : : :  +: : : : : : : : @ ( *Mz.c*....+.x@/ , : :>x@ : :: : : : ; :  + : : : : } = : : [ }, | ] + )[>x. + # : : : : : : : :: : ; :  + :: : : , : : : @ + =#+ ; W )[ : : : : : : : >x ;; ;  + : : :: ,\ : : , # { W+ .*u( M|: : : : : : @ {; ;  + ; : : : : , , >x. *....*.{] :: : : : : M > ;  + ; ; ; :]+ \ ,: : : : |nn * x /( : : :: ; ] x@/(}<=: : : + : ; ; ; : , : (} + \) >x ..*.=ucu{]+X : (: : :\) # : : : : +{ ; ; ; : : x@ : }<0xqpbow***o#hwz/( : X : : \:: : : :  + :; ; ; ; : : ] , , : +cYd@*WM*#M#*omY+X; ; : ( : ; :: :  +#M ; ; :: : : ; : : : : x@n[*Mo**M#&8W&88&WMaJ( = | ; : x < , : : : :  + ; : : ; ;; ; ; : : ; #{nh*M*M###*#*o*%WM#WM#k+XW ) : : > : : : :  + ; : : ; ; ; ;; ; , :XWO OhkoooMMWW8&&8@%8&Moo*ML}} : :: ) }< : : : :  + : : ; ; ; ; : W ;@/bddqwqbho*kp0X[>]{nXJkM&W*M*nX ; : =# : > , , :  + / ; ] )[ ; ; ; : <=#nOwZmmpkbZLx@/(}< XWQqM#*&w+ : : , (,<= | : : + :; # : : ; : # ]+XxmwZmmOmQ1<= ,: \)[ } |kMa&X+X \, x, : :: :  + : # : ; : : [>JcQqOmZnM|{] : : #,, X X#Mo#cx( : : :  + ; ;) /( ; ;: : : = {*ohoOW ; = ; : : }c*%$ku] : : < [ , :  + ; ; < { ; : : #M| + WxuZkO@/ ; ; ; : WtLOn> :<=# ; +XW\)[ = M|, :  +(}<=#M|{]+XW\)[>x@ ; /( =# + W\)[>x@/(}< + {]xXW\)[>x@x(} ?#M|{]+nc\)[uczXcvn=#M|{]+XW\)* x * <= +akbkhhbpwOLJUXzXXXUYXXv\)[>x@/(}<=#~(zx+X*.uXUYzcvcXYYUYcvccv. [U0ZwwmwwqpdddkkkkammpwqwmZmwwwwwwwmmZZmcY0JJw=1Z{?.nwX +%%8WWWWM##**oaaahaaaahkdpppqwwmOOO0wqZZZmwpddddbbddpmQcLmwwZOz<Jmphaaooo*#MWWWWWWMWWWWWWMM#***ooaaaahkM{_ + 1W [{t ?< +@@@$$$BB%888&WWWWWWMMWM##**ooaaaahhhaaaaoo***#####**ohdkaooaoo*o*#W&&&&88%%%%%%%B$$@$BBBBB%%88&&&&&WWWWabbMhkC\0#$%h#C + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== +ok0v.+ (: ; + : :: , , : : [ : :: := , : : :  +Wqu ; |{ W :[ } : , ) \ : : # {]: , : ]+ ,, , , :x@ ;  +*kZv+ [ := ] : : < , ; : : : { : > , ]  +qLv/; = |{ : \)[> : , ] ; :: ( | ] x =  +#M ; :) ;; ; ; : [ , : : :  + ; : ; ; ;; : #M , ; ; ; , | ,  + ; : ; ; (}< # : ::[ ; ; ; :# \) @/(}< ,M| : ( : + ; > (: : { )[>x : # \ ; ; ; : @/(: : : : : ::] M|{ : +; :# : @/ } | : ) } ; ;; ; : : : : : #M : : < , { : W : ;  +; +,W x ; : + [ ; : + : : (}: :: : : : , , : # + : : :: :  + x # ;; ; : : ;X @: < ; |{ X , , ;; ; #: : : : : : :  + M W ; ; :: : : / : + ( : ; ; , \ : : : ; : :  + : , : : : : :: { , x@/(} : : ; : (: : : : ; : :  + : : : : : : : [ #n|+ .XW,) x@ ( { XW; : : : : :: : ; : :  + ; : : : , \ , ( ) ; ::<=#Mcu]+XW / = , : : : : : ;; ; ; : + ; :: , : >x /( <= x] XUn*x.vCu(} |{]+X ) : : : : > : ; ;; ;  +; : : : : : :Wu xx</Qzx. .v. X [u* ( : : : := , ; ; ;  + : : :+X : : : : } *.cxcOXvn* ux /(}<.#M , :: : : :X : : ; ; ;  + : : ; ( , : :: / , : +.* . .*xX.}<=# + W : (}, : :; :@ }: : : ; ;  + : ; ; : : > , } :: /. x.* ;X + u/: : |{ ; : : : : ; ;  + : ; ; : : M , :] *zx..+ (}+ ..|: :) / : : W ; ;: : ;  + : W\:: ; ; : , # , : @/*Lv.nn ** v.[ : < : ; , { : : : :: ; + : , ; ;; : : : : : ; {cxYnx....*..YX: :: W x: ; x: : : : : +, ]: : : ; ;; ; : #M| ; ;Cu.CY...*. uXW : : , , , , : :  + : : : ; ; ; ;: >x@ ; MC{*n...*...xc(}<= | ] : :,M : , : ;  + : : >x ; ; ; : } ; )ohkdkb0kdkkbZbZX = : : [> : ] , : ;  + : : < | : ; ; ; : [ : <oM8#*Mb#bkkkqqO/(}< ,M W : : : , ,> ( , :  + : :|{ > ; : : [ : : +ZpobqddkkahoohkdwC+XW > }: : , , ::  + : :[ : : : : | : : >zxOddpdqqwqppd*abqqpq0(}< , / : { :  + : : = XW : :: : : : :=LL00OwmqddbdqZO#kddpwmZwOcW\)[ + : X , : + : ; \ , : : : :: : +XJLUCLOwmOUu=#M|{]+uvYZqpqZOOc<=#M| , [> : = @ :  + ) ; } ; ] X [>xcLYJLCCX|{]+X , @/(}<=#cQZOwZY\)[ : : ,) M ,  + : :X : , <=#ccYLcXW\) : : : )[pmOZmZQ= : ; : , ,{ :: :  + : ::/ : : +vvXvu>x@ (} M : :: , =#vwhbdod\: ; : , : ; : {  + (} : ] XW :: : < xczLOO=#:| ] : : , :, )[pdo*#} : : : ; ; : x  +M : @ : , M|{YcXW ( : : :[ @, =#M|_t+X : @/(}<=#M|{]+XW\)[>x@/(}<=#M|{] +)[>x@/(} M|{ * \)[>x@/(}<=#M|{]+ \ > (}<=#M|{]+XW\)[>x@/(}<=#M|{]+X ( :=#MvJQZmmZZZZZZmwwppwqwZZmJLZZO00 +c=#ux{]+nuvXUJCCCCUUYXzux]+XW\*...@/(}<=#.|{]+XW\)czXXYUCL0mZmZOZZOO00LCUv(}<=#M|{]+XvCmpdbkhao*######MbOMhhMqtoCfcQda +oakkbdpqqpppppppppqqqmOQQQLCJUUUXzXzu.ncULLQQ0ZZZZmwqpdbbkkkhhhhhkkbbbbbdpppmOO00mpbkao**###M*oMW&888&@U>{++)] > +/ +- +&W####****ooo*oooaaahhbdpqwwmmmmZZZ0O0OZmqpdddbkkhhaao**###MM###########*ooooooooo*#MW&8%%%%%M*8BBB$BB$WbdM*dZ(xkB@haq + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== +pOz ; ; ; ; :: : : : : : :  +qC[ : }<= ; W\ : : M| / ; ; : :@ { W <, , : , )[  +Jc + : @/ : ; :>x { : ; ; M ): : M|{ : : , : (}  +..+ }: \) ; : > : :: : :) @ : : : , : : :,(}<: :  + ; [>x@ = : : = : : : :: =#, : : :<= ] : :x : : : :: : + ; W [ x@/ :: X : ; } W: : ( |{ : :: = :+ : : | : : : : : +; @ ; ; : @ :: ; ] @ : : @ ; : ,, , : : : : :  +; : ; : : : >x #M ; : ( | : : : ): : : : , :  + : @ : ; : , : =# XW :: ; { ; ; , : >x : : :: : : : :  + ; : ; : : X , : : ,, : =: ; : : : : : : ; ;: : @ :  + ; :: : : , :@/ : , : x@/( : : : : : ; ; : ,:  + ; : : ,,>x@: :M XW\ : / : +X , : : : : : : ; : :  + ; : : { :, x@ : , +X \)[ }<= |, , x@ : :: : @ : : ; : : + ; : : : : ;; : @/ ]+XW\ : : #M : : : M : : ; ; :  +: ; ; |{ : :/(} : {;+XW ) > x..c< # : W )[ x,/( : : XW :: : : ; :  +: ; ; : , : ,| @/u}<= x* .X / }< # : : : : : :: ; ;  + ; ;; ; : =#M M|{*n.cJOXux.+(}<=# .] XW : : ] , > , ; : ; ;;  + +: : ; ;: : ; , : [>x .xvU0Yz* v * [> @ ::= : < # { ; : : ;  + : : : : ;; : W ) x : #M|. * .cxv. +( :XW :: : | x : : : ;  + |{ ; : : ; ; ; ::= | :\ [>x. + n ; + = : : > M : : ; ; + : : : : \)[> ; ; : [ :: < #.znux. + @ { , : : : ] ):: , : ; +:: ; ; x@ } : : ; < : X )J.**x * M|{ \)[ : : : : , <= M| > @ :  +; ; ;; , \ : : : , : ( <=zx.. + \ [:x /: : : \ } : ::  + ; ; , : : : ; ; :]+ Wx + ( <; : ,: : : @ :  + ; ; : : :: : ; : >O?tJUuXYYCUX+- : : + : : :{ :  + : ; , : : ,+XW\)[ : *.Q8#k*wkppbd0L/(} : M , : : , , + :  + M : = : : # : +;?bqwpqdpqdbwpqZOUXW : : : : > , ,: , : :  + ) ; , ; : : x.}YpbppqqqmZpakpmOmOLY}< : : : : : , , : :: :  + : ; , x ; : : [{dmqppkkkbpw*#qmZOQCJYnW\ : : : : : , , : : ,  + W : , <=# ;: :[> : + {pOZZqppLCUUXXJZmdpwZOQUXvnx=#M : ), : : , : : : :W +, : ; : } (}zwwqq0c+XW\)[>x@/(}<=LZO0OLJJJU[>x, { : : : : : :  + , : ; : M ]JqOmzx>x@/: : : \)[vYCCJJUUUM|{ :: : : : : :  + : : : : : /(} < xmQq}<: W [> : :#M|{xYOLCCu>x@ : : W\: : M| +X :  + ;; ; : : : , =(mpmc+; )[ M ; :x@/ZkdhwM| : : / = ,  + ; ; :: , : , : XW\*Qcx; :#M \, ;; : +-rZZC[ : : : , , + ; ; : : :: , : \) /(*<C# ; : >x@/ : : ; >x>/.+ = ; , ( : XW\)[ x@/(}< +{]+ ; x@ ; M {] XW\)[>x@; <=#M|{: ; ; ; ; XW\)[>x@/uzXXL0ZZZUXX_)[> @/(}<=#M|{]+ ) x@/(}< #Mxnuun +hZUux}uv#MxxncccccccvuuuvvvvczzXXYYJQLXzu/(}<xnxxxxnuuuvvuuzJQZmmwmwdbdbkkkbbbbdqwZQQJYXzzcXzcuxnnxx}<=# XzU0z[0x1.zOw +@$B8WM##***oaahbddppqqwwwwwwwqqqpqwwwmwqppqwqqqpppddddbbkkkhhaaao**#####MWWMWM#**oo**ohhhhhkbddddppppwbu)- ]_: =(:~+ +@@@@$BB%8&WMMMM#*aahkkbbbbkbbkkhkbppbbkhhhhhkhhaoooo****####MWW&&8888%8%BB%%8WMMWWWW&&WWWMMM###*oo***o*bZObdZL1fq#%qdZ + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== +mCn} X; ;: : ; # : ; ; < : : : : : @ }: :  +c{]+ x@: : ]+ ): ; < ): ; ; : W , : :XW\ [ : , +: > @ : :  + >x =#M; : : ( : ; X : : ; : ( M : X : # :: : x: : : : : + : XW ; ; : : ; / +: : @/(}< , X :x ( , : : :: : : : : +;; [> @ ; ; : x, : | x; ; | : : + ) : : : : :: | :  +; : :; ; : # { ) =#: ; #:: : ) , + : : : : : }:  + ; : : :: } ]+X : ; \: : < , X \) : : : : ; #M :  + ; : : : , ,, x : : , , (, : : :: : : : : ; ; ;  + ; , : = : }<=: : : : : : : x@, : : : :: : : : ; ;  + ; : : ] : > /(:: ,{ + , /( := : : : {]+X :: : ; ;  + ;; : : / + [> ; # XW ) M > : : : [ : : ;; ; : + ; ; :: : W : : : : )[>x@ .}< : : :/ + : : : : :: +; ; ; : ,: : [> } .*|{ , \)[ , [ x : :| @ ; : : ; :  +: ; ; : : :: < : XW\)[ @ (vn=#M \ > | : ::[ < {: : : ; ;  + ; ; : : : + ,: @ :|{] *..c[ }<=#+|{ X , : ,, ) ; : ; :  + : : : : : ; , {] ;)[0Ux. = |{]+ . + x : : ( M ;; : ; ;  + :: : : : : ; :|{] W : @ (* xuYZCcz*W\).* + # : X: : ) ; : :: ;  + : : :: : ; ; ; @ ( : { + .vYZQYu z. * ]+XW , : : : \)[ : : : ; + : : : M| X: ; ; :{ + ; x /.* .XuXn..* > :: : : : |,] : : ,= : ; + ; : : : :: ; > : , | ]xn. + v.+ # ]: : ,}<=,: :XW : ( M \ : ,  +; ; :@ : : : ; ,: : [ x@vccvx...+ XW : , : @ ,, <:  + ; ; ]+X , : : : ; : # |cz*.v. *.../( , {] W : } , +: [ :  + :; ; ; ; : : ; : :) >Uu...** .|; : , : : : @: :  + ; ;; ; : < M|{ +X ): :}<=#n. + ) : , { : : : : : : : :  + , ; ; / ;; : <: {]dOmOOUOQL0CL)* : : :: : : , , , : : :  + : ; ; : ; : , [>w#W***h#kkadqUW : : : : :: : , , , : :  + <: : : ; = : W / =vkhppdbhdhohbkqCn<=: , W >x@:(} : :: : : : : /  + ; ; ; > | {zahdpwqdpwwh#hdqppQu\)[ : : : :: : : :  +: @ ; ; ; , @uJpqbbkbkahdb8oddpwZOQX=_M| + W\ (} , : , : : :: :  + : ; :: ; : +XW\) , MZapqpddddwz@((}unCL0wwm0Lc)[>x@ : : : : , W, : :  + ; ; , :: : : \upqpdpdpY=# +XW\)[>x@YCUvYCz|] :; : : : {]+ } :  + ; ; : : : ;: x (]ppdpqdC+XW x ; {]+XWcLQCu} : :: : [ , /  + ; ; : : : , ; {)Xdwqwc>x :}<=#: XW :x ; <z00Ov- ; : : , +  + x@/ ; ; : < : \) >Xdahaw= :; ; @ ; W\qddk@/ : : W  + { :; ; : : : : =zC*W&wX ; ; ;: ] : ;-{CwL{] : >x@ X  +\)[ : : :: : [ : ; WxL0*C@ ; ; : @ ( ,: |{]+XW , : = +XW\)[  +}<=#M|{]+XW\)[>x@/(:<=# +: >x@+(*..# |{]+XW\)[>x@ ;<=#M|{]+XW\)uJ0000Y<{~M|{] W [>x@/(}< +XW\)[>x@...<=  +&okbbkbhahkbdZ00QCXcuW\)[>x@/(}<nvCOwpm0X\cCLC0ZmpqmZQLJJLQOwwwmOQCLZpppdddpqqqmQUcv@/(}<=xnxx]+XW\)[>x@ zuvLu-J{<;  +@@@@@@$$B%88&8&WMM*ahbdOJ0qpddkkkhhaao*****##########*o****ooo**********#M###*ohhhakkbppqqqqqqwwqqwmwwbn{~ -+ >>\/(} +@@@@@@@@@@@@@$$B%888&M##MMM######MWWW&&&&&&&888&&&8888&&&&&&&&88&8888888%%%88WM##MMM##*oooaaooooooaaoaohpp*adZ/ck#&dbw + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== +Qb0u : ;; ; : , : : :: : , : : : : M : : +xv< : : : }<=# :\ @ : : < , : : , : : : : + : : + + ; : : :( M : : , /(} , ,: : < | : : : :  +; ; : : : \ :: :=#M , } , \ , , x: : : :  + ; : : = : /, : X : , : , : :: : : :  + ;; : : \ , : : :/ : , , : , , [ : , ]: :  + ; : ,, :}< #, : + :: @ ( : , = : : :  + ; ; : W,, : : : #M|{]+X : # : :( ): : :  + ; ; ; : : :: : | W : : )[ , :, # : , : : + ; ; ; : : , : : |{ : [ : = XW : ), , : : +: ; : : , : ; :\ , ,: + W }< : W [ , |, :  +: :; ; : : ; : , :M ]: : :}< ,|{] : : @ +, ,: :  + : ; :: , : ; : XW\ >x@/(}<=# , ; , : : : : >x, } : :  + : : : @ < :: ; : : #x| +X ) > /(}< : { +X : :: : XW , : : : :  + ; : : M , , ;; : ,). + ( = *nX , x@ < : @ : @ M :  + ; : , , ; : :; =.+ .+X ) + (: ]+ : , +X:\) [ :  + ; : : ( : : ; ; \u *+ xu* {]+ ) > : , :[ : =# < : : + : :: : +XW : : : ; ; :<z. + .xc.. *+ + = X: , : , : , , + :: :  +: : : :: : : : : ; ; Wx+.. ; + +X :[ ( : : : : : : : :  + : ; : ; :: : : :\)[>: (}* ..* x. +@ : # :: : : , , , : : :  + : ; : : : : , M +.. zv.xn.*. +M| : , : : :: , , : : : :  + : [ : : ; , : := : /XvnY..x* ..*) : : : : , : :: : : : :  + : , ; ; | : \ : ]U+uU.*. * < : , [>x@ , : : : :: : :  + : ,: ; ; : +X : < ] : ;/.. * +*xxW: , : : , XW\: >x@, :: : + : : ; ,, : : <= : , , #0wdqqZ0qwwqJXm(} M| ,W\)[: : : ] \ X: : +; ; : , : ;; : : , M XWxUW*a*kaakkhpqmOnXW : : :: : : ( :  +; [: ; : : : : ;: x@/ }ohdkkkhbh*ahadqdO(}< ; : : :: #  + } M : ; : : , : @ =#M|.xdohhbkhkdpkWhpqqwZwOUx\; ; : : W <=  + ) : ; : : : ; : )vuhdbkkoopZ0C0MhddqwZOmwZOz=# : : )[>  + : ;: ; : <= ]+ ; ; /dmwqbb0XW\)[>x@/nLLOqpwmOQQCYu[> } \), x@  + : +XW : :<=#M [>; ; +]vdwqdmzx@ ; : XW\)U000CLLCLvM : , X  + : x : + < ; ; *>Xpmpq]=# | ; ; ; #Mu0CUUJUJ[> / +: :  + : : , X : :: <LUkqZY+XW [ : ; ; : [>U0q0QQm# , X / : ]  +: : : :| :|{]+Xpo*wYx@ , : ; : : M|LppdbC) : ,, : X:  +: : : ; [>x (} _YJkL# :: ; : : \; ~]/(ux+ : XW\)[ : ,+XW\)[>x@:  +|{]+XW\)[>x@nvn<=#M|{]+XW\)[>x@/(}<= +x [> : ; X:\ >x@/(}zYYz|{]< :\x[>x@/(}<=#M|{]+X: ;@/(}<=#M|{]+ +qBW##*oaaaaoooohbddpqqwZ0LCXcvccznnc\j[>uXzUUv=#M|{]+XW\)[>cUcxzYXUL0OZwqwwwppwmLYYUCQLCJUYXzccuxx@/.}..n.nuuvXXJLQLCU +d@@@$$$$$$BB%%88&&WM##**ooaahhkkkbdpbkbdpqpppqwwmZ00QLQOmwpbkkkkkhaaaaaaoaaaaoahkbddddpqqwmmO0QQQLLLCLLJ*CYYLL]YX[{nXm +d@@@@@@@@@@@@@@@@@$BBB%B%%88&&WWM###****ooooooooaooo***oo****##MM#MWWWW&&&WWWM########*ooaaahkddddppqqqO}? +>} X/+ ~ +d@@@@@@@@@@@@@@@@@@@@@@@@@@@@$$$$B%B%8&888&8&&&W&&&&&&&&&8888%%B%8%BBBBBBB%%88&&&888888&&WWM#*****ooaaoaqwk*pdjfd*B*hb + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== +apQn ;; : : = :@ : : , ) , , : : : : ::  +pLn ; : :, : \ : / , ,} : : \ : : : :  +0z ; : : / : /( : | : + W, : :: : <, : : : :#  +vn + ; ; ]+ : | : W\ : : | : , : < : :  + + ; ; : / \ : \) , M| : > : ] : : :  + ; : ; ; ] : :| (: : : ,x ] : , : :  + ; , ; ; : , : \) : , : W , @, : , :: : + : ; ; :: : : : } +:W\)[, : ) :: } , , : : +: ; ; : : :; : XW )[ x : : : , } : :X , < , : :  +, ; : : : ; ; :, : : : : : , : : : M : :: : : :  + ; : : : XW\: @: : : , : : : : =: : : (}< \): ( #M :  + ; : W [ , ; : : ,, , ( : : { #M| :  + ; :: / , ) > ; : :X ; :} +XW\)[> @ , : : (} = #::  + ; : { : ; : : ( <= :] XW; [> : ; :: : : | : W ,  + ; ; :> : : : : + W\ :x /; #M : ) +x@ : ,: : : ,<=#M < : + ; ; ; M| : , : :: : ;/(} * M| + \ [ , } =#M : , , :: : : : = ]+ ;  +; : : : : : : : : :| +X + ;< #M:{ X : : : : :: : : : ;  +; : ; : : : : {]+XW\ / **. : . * x@ ( : : : , : :: ; :  + : :: ; ; : : , ,{] + x +;=# : : : : : , , : : : ::  + : : : ;; , : , \,[ x.*.. +.. ; W : :: : , : : : : : : :  + , , ; ; / :: : /( : # |*c..* + / }: ,] W : : : : : : :  + : : ; ; ,M : | : _>v. *. * {]: : : ::x@/, M|{ : : : : + : : ; : : [> ; , , >x < #MXc... * [ : } M|,]+ : : :# x@ <: : : +;; ; : ; : : : : = ] , \)[* * .#; : : ; : : , :  +; ; ;: , : : : ; : > :/zCYdwbQdqdpZmzv> : ; ; : :( , X ,,  + / } ; : :: : ,| ; ; <= : {tY$oa#k*hhkbwqLJM| ;; ; : M| @  + , : ; : : >x: ; : ; +kabhhaaoa#*aakkkZnx ; ; :: W\  + : : ; ] : : ;; ; } _qaoaahbkkdqhMhbdbppdOz{ : x { ,\)  + : {, : W\) ; ; :LXWhdhhh*ooohhoBokdqwwwqw0z@/( > : ,,|  + :: : ; ; ; +whkpbhdOzn]+XxncCmdbhbpwmwqZQx+ : [ @ X , >x X : + : ,M :: | : : @; =vbpddqLW\); ; =#M|{XZddwwmmmU/: : ( : +X :: +; : : } , :=# {] XQpwq>x@/ ; ; , x@/(0ZwZOmX] ; , X : : :  +; : : +X [ ,, ,X >vrphwC{ : : ; : : +Xvkabom@ :: : (, : >  + ; ; ; /( , : @ #1pWQCXW: >x ; : X : }j0kpY ; : >x@ : /(}<=#  + ; ; ; : \)[ /, \ntCu@/ : : @ <=#M|{]+X_..._ / ; =#M|{]+XW\)[>x@ : M|{ *  +U}<=#M|{]+ ; x@/(}<=#M|{]+XW\)[>x@/(} = |{] x:: }<=#M|{]+XncCQOZZpwmQY#M|c] XuzYXYYYXcvn=#M|{]+XW\)*. /( .n +@B8&WMM*kZCLUcczYLLLL0mppddpqppwm0Q00mQQ0LJCJzx@/(}<=#M|{]uJOmOZwwqpbbkhahahhhhhbpm0CYJOZZmZmmmZOO0QLLJLQCCUzv# | ]+.c +@@@@@@@@@@@@@B$BB%8888&WWW&WWMMM#*ooahhahhkbddpppqwmmwmwpbkkhaaao***##MMWWWWMM#**aoahhhhhhhkkkhkkbbbdqdJ|OzcJW\.[ x@/z +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$$$BB%%88888&WWWMM#####M#MMMWWW&&&8BBBB$B$$$$$B%%8&&&&W&&&&&&&WWWWWMM###*&Y~]-_]_}:=[u|+~ +&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&WWWWWWWMMMM#####M####MMMWWWW&&&&&&&&&&&&W#####MWWWMMMM######*******akk*obmjYko#bkp + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== +J. , : ; ; ; : : , : : , : : : , :  +0x : ;; ; ; ; : : , : : , : : : : : : , ]  +Qx + ; ; ;; ; : : : / , : : : :: : : : : ,|  +z.+ ; ; ; : :: : : : : ; : : :: : , = {: : >x@ :#M  +u.+ ; ; ; : : : :: , , : ; ; : : : , > : : : : +.+ ; ; ; : : : : + : : M {] : : , : : / : : : : : ++; ; : : : : , , , : :: ] @/ ; ; : ; : : X, : :: : :  +: : :] : : : : : : <=#M| : : : <= {: ; ; ; ; : @: : : : ::  + : ) / : :: : ; : ; ; , : : ,\ x (:: : ; : /(}, : +XW : : :  + : {: : : ;; ; ; ; : : : : } + , :: : | [ x } : : :  + ; x : : ; : :; ; + : x .< # : + : : : [> W\ ; :  + ; , , , =: : ; x /+ *.|{]+ W : : : : : +XW\ : ;  + ;; , \) : , : ; |{] X \) @/ } [ : : : : ; :: ; ; + : : :: : : , ( : [ x ( Muzx XW #: : : : ; + @ : ; ;: +; : ; : :: : \ : :# |{ XW\) .v*J( = { XW [ : }< |{] : >x@ : : :  +: : : : : :: , [>x@/Qmn..* c] XW\) >x@ }< : (, : : :  + : , : x: : < # ux*Y0zX* x@/. ;#. + : :  + , : : , , : \ *vzO0u< M+.x. Wu)[>x@ , :,  + :: /( , M|{: : , , ) :(}<.+ .{UuLW.ux. .un}< , @ , , @  + ; ; ;; ; : , : , : ] X* + uJ.* .|{]+ >: , : , : { , ,  + ; ; ; ; :: : , , + : x /(.cunx..z*..uu , :: : : < : : : : , , + ; /(}<= ; ; : : , ; | ]+0xxcc.x.cXc<= : : : ;: : : : : : : :  +; |{ ; ; : : ; ;> /YnvuvnuunuX : : : : : :: | : : : ;  + [ ( : ; X >: : M W : ;: | ]LCx*....*/( : : : : : : \ :: : : :  + { : ; : M , : : #M ; > @zuxnuuvYUL|{W\ ; : : : : } : W\) :: :  + : ; ;; ; : : :+ ) ; :Upq##WWkB&WW&#aL}<; ] : @/ : : , :  + : : ; ; ,, = : : : / }< ; ;WCL$BWM&*WM*M###*0cW\ > , + : :@ , , ,  + : : ; ; : , :: : : : +(XL8*o*o*o##*#MM#*odv<=# , / : ], /(} : : + : : : ; : , : : ,, , M|fh*W***oakbddqdMohdbbdZW\) , { ;: : |: : : +; : : : : ; ; ; , , W\XOCbbkakbkbddmQ0pMbbkdmmwpX+=: W [ : : : : :  +; ;; : : : ; ; : : : /(QkppqwpdppqOJx>x@/(}<=LwppZZ0W\ @/ : : : , <=# :: ;  + ; : ::> ( ; ; : : : vYCCZwmZC/(}< \)[XQ0CJ}< : : : : = : ;  + ; ; : # + :: , : : \.. .ucCQz=#M =#Mn0UJYW: : : : , :  + ; ; : \) : , , + .*.{]+ , (} = \ ]U0JQc} :: : : @ X, :  + ; ; ; := : : |{]+X +)[> /( : : : : ;#JOmw+ : : =# ] XW\)[>x@: ;  +.+ : ; : : : , , :: ; : : : : )[>x@/(: : x :: : : : +J=# :: : : ; ; ; x@ (} =#M|{: XW\) * ;: : : : <=, +X ; x@/(}<=# ; ; ;; +  +bmY)[>x@/(}<=#;; +XW\)[>....* ..M|{]+XW\)[>x (}<.xnvvun.*\)[>; ;; ; ]+XW\)[>x@/.}<=nunxnnXW\)[>x@ .+ . ~x] WX. +8&MoohqqwwmOQUXXzXUL0OO000QLCJCJUUYUUcvcvuuczzXXYUCCCCCJUUYUJUYXzzXzcuxxn>uCQ0QCLLQQLQ00OZOO0O00QCCQOQq}+;_ {), x|j(?< +M##*aaahbbbdpdpqwwwwqwwmmmmZOOO0O0QCCCJCCCCCLLQLLQ00QQCU.*zJL00OOZOOOZZZZZZZmZZOZZZmmmmmmmZmmmmZZmmZmmmZOmdwwX/LboodkU + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== +Mwn+ ; ; ; ; : : : , : : : : : : : ,  +#Q*+ ; ; : ; : : : : : : : : : : \ x@ < : +XW\)[> (  +oqc + ;; : ; : : : : ( |, : :: : ; : : : : : : , +ZU. ; ; : :: : : : : { : : (} #M : :; : : +X @ : : : : : +n* ; ;@ : : , :, : : : [> : ; : :: : : : : : :  +* : =# { : : , : :, /( : :x@/ M ; ; : : , : / : : : :  + :] > : : : : [ : : ; \) : : :+X [> ; ; ; : >x@/ < #M ]+ : : :  + :: : : ; ; : : ; : : :: : ( M|{] : [ x / : /( : :: :  + ; | ,, , ; : : : ; : <=: : , : W + ; :  + ; (, , , ) > : : , : : \ , M:: W : : :]+ : :  + ; , {: : | :: @, , , , : | : : :: : : / : : ; + : : : : \ : ; >x@ < + , > : : : : :: : > : : ; +: : : : : /( +*|{ )[ : ] : ; ; : : > # : ;  +: ,, , : < , , = M XW+)[ /(}vu#M|: \ / : :+XW,)[ : ,# :: :  + : , =#M ]: )[> , : \ ( <=# +{z.xc.Un> / :<=#M| +: [> | : M +X:  + : # , :: : , ]+ W\)ZQ.* .X=# +X. +[>x (  + :W ( M : : ,, ; .cu.Uc+ x.*c\)[>x@ + =# , , <  + : } #M :+XW\ : : : ,/ , .+ .zXOXxn u. .u#M| ]+X ] ,, , : | ,  + ; XW\ ; ; : : : X: >*. *uQXL*x. +.xz>x < #M + : : :: , ,  + ; :; ; ; : : : x@: # uv.* . zz.x.+.vv=# ], : : : : : @ : : ,: )[  +; = { ; ::@ : : > : W ).zUzux.xv ..vv+X:: : : : : : : # : , , :  + X : : ,: : :M : (} =zJnzUn. zzzY@ : : :: : : : : ) , @ , ;  + , ; >: / : :: [ ; +X \UYxvvvnuv.nv|; : : : :: : : <, +X : ;  + ] : ; ; ]+ ): : X ; ;_<=LCx...*...[: : : :W x : ::{ (: :  + : : ; ; : ( : , [ x@ : :, <W\YvnnvvvXUOt1|{: ) , | : : x :  + : :: : : : X : : : : : /bho##&hM%WW&&#dOx@/( # , ] : : |{ , :: : + : : : :: : : ; : , : {@%@B&%&&%WW&&&WoOz{]+ : @ =: : : , =# : : +: : : :x : ;; ; : @ < : )[OW8BWW&&8&8&&8%8&WMdx@/( , : : : : : : : :  +; : : :# , : ; :: : : : }bk&&%&8&&WMMMM#8$&M####Z)]: : :: : : : : : ;  + ; : W , : ; : : :: |{]bW#MW&&M&&8%&*bd*aa&W*aaoon@ : : : :: (}< #M + : ;  + ; ; : ) : : : \)Yd%&##**WWWW*quXW\)[>x)zw*#akaC_ ; : : :|{ @ : :  + ; ;; ; ] \ , = : : : /(m#M#o*#M&WhbY[>x: : :]\Cbbdbm}; : : XW\) , ::  + : ; ; @:: : { : x , M|0Yc0dko*&oUu(}< : : :: ~XbqwmQ| : : @ M|{ ) , :  + : : ; : : :: W\kkOx@Oka0=#M|: : : : .vZpwmZQ> : : ) : : : : + : : ; : : : , [: (WMW*W#O]+X : : : : : @LMo#*XM: :: : , ,  ++ : ; : : : : ; {oMM88d[> , ; ; : ; <=# |>?cUmL) : : :  +* ; ; : : : ; *. ) +x@C*U #M|{]+Xvcccvvx/(}<=#M|nnncJLCLx+@ =#.* ]+XW\)[>x@ : ,, :\ ;  +OLc{] ;; : : ; .*.nvczC}<=#[|LCUQO00OmwwqppppppqwOLLOmwqpppdpppppdqQx1~W vvXzzcvu<=#M|{]+XW ; , < ;Mnc +#*hqC@/(}xn#M|{]+XW\)nuczYYXuzYJCJJLQOOwqmwpppdbkkkhaaaaaoaaoooooooo******ooahbpq0c(}cCL0OOOOOO00QQLJYU}< #M|{ XW()  +8&W#*hkbdbdpwwmZOOOQQLLLCCJYXYUJCCLL0Ommqddbkhaoo**#######MMMMMMMWW&&&&&&&&WWM#ohbqmmwpdddbbbdddddpppppwQ0wm0J(rmk*qpZ + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== +B&kLn + + : : : : : :: : : / : : : : :: : : : :  +8*Ox ; ;{]+ , : : , , : } : : := ]+XW: : : : : : :: : : : +WM*pC*+ )[ , : : : : ; : , :: : , ,W\ x : < {] , : :: :  +oakqUx@ : : ; ; : ; ; : { W\ : : : :  +dqLX#M > : :; ; : ; ; ; [ = : ] : :  +OUnW\ : + \) : :: ; : :/(}< : @ {,+XW\: @/(} : {] : :  +n@ + \ : , : ) : :, :| : | , : : : ::@/ { : :  + ; ,) x@/ : X : , # : ] : > : ; ; : : x : :  + ; ,, : : : , , : M| : : : : : [ { ,\ : + ; : W )[ :: #M : , : ;: : #M| , : @/ = ; +; : : : :: : : / , # :]+ :=# \  +: : | XW : : : : , ]+X >x : : ]+XW @/  + : : ; : : : , ) ; / : M @ }<  + ; : ; : , : : = ,| :: \ [>x /(} M {]++W\) ,x = , @  + |{] W\ ; : #M X : : : > : <= *x+ @/ <= | , , , , > M  + } ; + < : + +X +x / #M:{]+ \ : , : : : W\  + : X ; @ : : + W [> ; ...* |{]+XW\*[> , :: : : : , ( : + X : ; {] : :: + x < +.u..* n * }< # : : , :: : W : |{ :  +:/ : ; ; : : # ; X ; .nn ..* { W : , , : ::}< , , : :  +:{ XW\)[: ; ; : , : # ; / ++ + u ; [ x : , : ) : : : :: : :  + : :: ; ; : : : )[ , : | ]; \ + ..++ <=# + : : : : : : : : ::  + : : ; ;; : ; ; : , x ( +. *..XW\ : : : : : : : : :  + ; : : : : ;; ; : W\ x : ..+ ...*....(}< :| : :: ; : : : : : :  + ; : : : : : X : :: : : [n *zn .* *.xXW\ , ; : :: : : | \) : ; + ; : : : : W ( : : :, , =#M..u+xnuzXQLZmmCn=#, ; : : : :: = ; ; +;; ; : : : : : : qo#&W8o*B*o#ok*oOu)[ ; : : : : = W : ;  +:|{ ; :: ; : , : ; : <=Y@M*#M##M#MW&#*##hJ# ; ; : }< M|{] ,\ ( : :;  + ; ; ; :: : , : : :# {]+X>h%MWWMWMM##M%&M#M*#kv[ ; : ]+ #M|{ : :  + #: ; ; : : :: ) : : ) >*/do8&&&&8&&8WM&$MM#*ooakc# ;; : x M|{ : : :  + ; ; ; : : : =#M| :, , : <=L-qWMM8&%8#hOUUwkW8&#o**oakz): ; :M , : : : :  + : ; : ; : ; : : : :;]+\MMWWMW&#pC<=#M :]+XW0*W*#**aaJ= : , :: : :  + ]+ ; : : ; ; ; ; : :-ub&MW##k0|{]; : :}<L*ooooahx : : +: : ,, : : + ; :: ; ; ; ; : / <=pa*b0XOW\) : :: : W\Zp*ahhY} : : X , = : : ;; +#M| : ; =:; ; ; ; ,|{1{mpqqU_x@/( : : \ @ {QMooakUXW : + )[, @ : :  +\)[ , ; | \ ; ;; ; W []U0C0}<= W : , WO%W%&v/ = ) , :  +X<=#M : [ : ; : / <=.* .] : [ : +XW\)[: / ;<Xqqbc] [:: : , :  +kq0Yv[>x@/(}<=#M|{]+X ; : : | W ?n ;; =#M ]+XW ; >x@/x}<=#M|xvXnXCvx.x@/(}<=# |{]+XW\)[>x@/(} # | ;  +&W#**ahppwO0QQLCCJJJUXccv#M|{]+XW\)x>x@>+}< #xvu]+XW\x[>x@/nvczXC0ZmmwqpddbbkbbbkbOfxQUUJUYzzzvuczzzccc|+. *+ n>: /.x +$B%8&&WM###**ooaakhhhhhkkbdppppqwmZZwpqwmZ0Zmwwwwwwwwwwwwwqqpdbbhhhaaooo*##MMMM#*aaoadppppwwmmmmZOOO00m[>> +< #M|{>; +@@@$$$B%%%88&&WWMMMM#####*ooaaaaaahhkhahhaahaaoaooaoooaao****#MMMW&&&&8&88%B%%%888&WWM##*ahhkkkkbbdddbbqO0qwOJ)jZdhmqO + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== +8aL...*.. ; \ : : ; ; ;; ; : : >x : , : : :  +&bX + x@/ # : ; ; ; ; ;: ; < |{]: [ / : : :  +M#hOx =#M| : ; | : ; ; : + @ : # : , : \) > ] : :  +akqY+XW /( : ] W : ; : :>x :: ) : : : : M : ::  +OY>x { :: > : X : },= [ : = { : : : : , : :  +<=; : W )[ : # X : @ ( <= < : : \)[: , =#M: : : , >x }<  + ; : : ; >x: , M M| ] : : : , [ : ::M \: + ; : { W : , <= : W\ : : : XW\ :x : :\ : }: +:: ; ( : : : @ XW ,[>x@/ ;; : : < # >x (  +; : M| ; ; : : : ; ; ; ,:  + ; : ; ;: : : {]: ; ; =, , ) , |{ , |  + >x /( : ]+XW [>, :: ,{ ( + ..*...*\ : / ]+X : , }< # , , \  + < : ,X : x |{ + W\ [ @ ;}< M { :X , : : : :: : , \ (:  + @ : {] : |{ x / < M {]. W\ :/ # : : : : : # |{;  + #M ; : , : :> #M ] X \ [>.X x}< : ] W\ [> , : : : M: ] X: ; ; + { , :; ; , : , \ [ x@ (}z=. *+ W , @/(}<= , \ x@: : :+ W\: : ; :: +; x , ; :: , : : : = M|.. cQYnn*x@/(}< x ] ;: : : : : : :  +: , \ ; : : :: : \ [ .*XCnv. znxvn x[> , :+ [ ; : : : : :  + : : : : : : : ; = + ]uxu..x.* .(}< : , : /(}< :: : : : ; :  + : : : : :# | : , @/ + W\+ x@/(. + {]; : , : : : : :: : ; :  + :: : : : , : : : : }< M { + [> @ : : : ; : : : :/( ;; ;  + : : :: : : : : { X [ *.n= ]+ : : : , : :} X ; ; + ; : : : : : : , /(}* . .*..XW :: ; : : : , / ; ; + ; ; ; ; \ > : : > Xv. * (} = : : :: ; ,W (} =#M| : :  +; ; ; ; : , : :=# , /(. *..|nvc|?\) : =# : ; >x@ {: : : :  +X : ; ; ; : (} ::< #MZrZpdoqh#oo#adX<= : X ) : : >: : : :  + }:: ; ; ; : : W , : \)LC@8#&#MW*#MM#odJu) / ; : \ : : :: :  +{] : ; :: : : : ; : , : (}u]w&o**M#W8W&88&WW*O=# : + : : } , : : :  + ; : : ; ;; ; ; ; : : {*)kaM*M###**#oo8&W#MMMoX~[ x : ; , : : :  + ; ; : : ; ; ;; ; : : [0xXkka*aMMMW&8&&@B88W*ooMq|# : :: x #M : : : : : + : : : ; ; ; ; :[ @: }1wbppqqdka*hdZUn/[[jXYp#WW*#MJ)+ : : { : / : : ; + < : , @ ; ; ; : < M|{]QwZmmqkkw0n}<=#M )[CZ*Mo&a{ : : , =#M| X : :  + :: : { : ; ; : { W\)[0qZmmZZm#~| , ,>x@ #M)OWaMd\) ( , ,: :  + ( : :] >: ; : : /zXYqZOwz]+XW : : {] :).>aWoMLn= : X , :  + ; ; x <= ; ;; : : , +d#h*qx> , | : ; : #Mh8BWYW : : M @ :  +[ ; ; | X : ; : {]+ \ [x.Qkqx<: : ; : ; -C0Y? ::M|{; )[>x@ | ]+ :  +x#M|{]+XW\)[>x@/(} + , /( <= ;|u] ; >x@/(}<=#M+ XWn)[>x@/(}<n#.[<]+XW\)z>x@nvzXzvn|{]+XW\)[>x@ ( *. M| +*kbkhhkdwZQJUYzzXzUYYXc>x@/(}<=#M|{]]zu\)..nzUYXcvczYYUUzvcccx @zQOmwmwwqpdddkkkkapOpwqqmZmwwwwwwwwmmZmJuOJJZX[O+?|nLZ +%%8&WWWM##**oahahaaaahkbpppqwwmOOZ0ZqZZZZwpdpddbbbddw0zJmwwmOUMXZqkaaaoo*##MWWWWWMW&WWWWMMM#**ooaaaahk*z+-<<]- :@+j}~~ +@@@$$$BB%888&WWWWWWMMWM##***oaaaahhhaaaaooo***#####*oadbhaoaoo****M&&&&&88%B%%%%B$$@$$BBBB%%888&&&&WWWW*bd**bmtzo8@aob + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== +wMwz* = ; \ , :: : { : : , :: : | , : : :  +whz + X [: @ # : : : >: : { XW : W\ , , , , (}<:  +Z*qU @ =: | W : : ,M # : : : : / > W  +J0u< , +X; >x@/ : : , W: :: := XW #  + ]; : ;; ; ; : @ : ; ; : + ; : ; ; ;; : :] : ; ; , + W : x : + ; : \): ; =#M { : :: @/ { ; ; ; : >x }<= M: ]+ , ,\ =# :  +: :/ # : @/( : {] > ; ; ; : x / }<= : : : : :: W , ]+X :  + : { : ,< # : :x # ; ;; ; : : : : : ,{ , : M:: X, [ : :  + \, ( : ; ) @: : \: ; =# :: , : : : : ] \ : : :: :  + ( { ;; ; : : ; } M| X )[ : ;; : : : : : : :  + : \ [ : ; :: : : , ; ; , > : : : : : :  + : : : : : : :: X (}<=#M : ; : : } = : : : ; : : ; + ; : : : : : : @ {]+ )[ x (}<= X [> : : : : :: : ; ; : : +: : : : [> := x* *= |{]cYWc)[> <= {, : : : : : :; ; ; :  +: :: , , | : (}<= ,| *W )Qv...*Cv=#M +xW\)[ x : : : : / , ; ;; ;  + : : : : : : : [>.+.u}<LUu..*u. ) @v = : : : : | + ; ; ;  + : : : \) #: : : : # * nunQCuu @u(:<=#M*{] , :: : : : ) : : : ; ;  + : : ; : , , :: <= : ). . *..c.#M|{; .*[ : =#M : :: : } : : ; ;  + : ; ; : : / #M ,: ,<. .n. ; ; n< : +X : : | : : : ;  + , ; ; ; : ,+ : W\**zux* =# ..+X : < : : , : ;: : : ; + : [>: ; ; : : / { , : < XU.xu. **. ux@ : | : : : , W, ; : :: :  +: < : :: : : : , : : ; xuccx...*...u0| :: [ ( : :W : , : :  + W : : ; ;; : : + : ; (C*XC..*.. *Y[ : :# : : : : :  + : : : ; ; ; ;; :> (} ; ]UX.n..*...*.X=#M +,W : :: ] , , : :  + : : :/( ; ; ; ; : X ; > 0Waah*Zhkkhampk) | : : /( , : W : :  + : : M| +: ; ; ; , x@ : Mha&*aMb*kbkkdwmz=#M| ]+ > : : , / =# , :  + : :: X / : : : @ , : W\UpahpdpkbakaoahbpOv)[ / #M : : , ,: : + : : @ { : : : , + : : /J}QqpqpqwwwqqpoobqwqqmX#M: : X , : +: : | )[ : :: : : : : |CLQ00mmwdddpwOChhpddqwZmmJ[>x@ ): @ ), :  +,{ : > : : , ,, , :\)XLUCLOmmQXM|{]+XW\)[xCZqqm0ZJM|{]+ :@/ : | , :  + x : : : : W ) @/(nCUULCJc+XW\): : < #M|{]YZOZmLvx@ , : : :, ]+:  + : ) : , M|{ccXCU)[>x , : x@mmZOZZZz{ : : , , X :: :  + , :: = { : : \vcXzv/(} =# : :: , : {]Lahkao> : : : : ; : XW  + # : \)[ :: : M (nzCOZx{]+ W : : : ,: x@QZkaMU : : : ; ; ; :(}  +]+ : : : \ ]+XxX)[ : : : @/ < {]+X[\) : }<=#M|{]+XW\)[>x@/(x<=#M|{]+XW +x@/(}<=#M ;]+X * >x@/(}<=#M|{]+XW\ >x / <=#M|{]+XW\)[>x@/(x<=#M|{]+XW\)[ , =; |{]vJQZwwwwwwwwqpppkqpdwmw00wqmmZ +ncnzcuxxvczYCCCLCLCJUYXcvxx)[>....*<=#M|{.xxxxxunnzYUUJCLQ0mmwmZmmZZOO0LCYv#M|{]+XW\xcLmpdbkha**#MMM##MoY*ddah)ZO)\YQh +Z#hhkbdpppdddppppppqqwZ0QQLCCUJJUXXXv.nzYLQQ00ZZZmmwqpdbkkkhaahhhhkkkkkkbdpdqmmmmwpkhao**#MMM#a#W&8888Bo=(>?_(+ \t_ - +q%MMM##**********oooahkddpqwwwmmmmZOZZOmwpddbbbkhhaaoo**###MMM###MMM#####*oo*ooooo*#MW&8%%%%%8#&BBB$$$$B#*&B**unoB@8W* + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== +kmX* ; ; ; :: : / : : : , , :  +wU@; :#M| : )[> : : ]+ < : ; ; : } +X [> M , , , : x  +Uv* X : } | ; ; /( X: ; ; :] x : ,]+ : :, , : ( =#  +.* # >x ; : /: :: : : } : : : , : : : :: =#M : : + + : ,@/ } |: : , |: : : :, , : : : M| W: : ( , : : :: :  +; [ @ ,}< :: :X ): ; # )[ : = + : :: | , \ , : +: : : : :  + : ; : :: ; W (} ; : } : : ,, : : : : :  + , ; : : : /( {] ; ; = : : : + x : : : : :  + ; } : ; : : : |{ ) :: ; : @: ; : : / : : :: : : : :  + ; : : : : ) : : ,, , | ; : : : : : : : ;; : }:  + ; :: : : : : }< : , : , :(}<= : : : : : : ; : , : + ; : : ,, /(} : )[>: , , :\) : : : : x, : ; ; : : +; : : , X :: ( : , W );>x@ #M| + , x /(} : :: : :} : : : : :  +; ; ; : , :; : }<= XWn)[> : : {] : : : :] : : : ; :  + ; ; ( X : : <=# X \)[>x /*...cM , [*x@ ( <= : ) :: : : ; ;  + ; ; ; , , : + , }<v#Mv*u. *) ( <;#M {: : , ; :: : ;  + ; ;; ; : ,|{ , , ] X.x.uUZYvu* =#M|{ *W ) : : W / ; : : ;;  + \ : ; ;; : ; , M : @/( xuX0Uz. n + >x@/ } :: | : , M|{ X : : : ;  + : : : : ;; ; [,x (: ;{]+.* .u.u. + = | : )[ ,: : + ( : , : ; ; + :+ : : : : ; ; :: | + : > @/n.. + x + \ > | : : /( ]: : ; ;  +: ; : : >x@/ ; ; : :: M {]Xnux. * } X, : : : W\ x: , ] : ;  +: ; ; :(} : ; ; M : [ xUx*.. + .] X >x : : : : , M| ] / } :  + ; ;; : : : : , : := M|z... + > @ ( , : : > = , ::  + ; ; : : : : ; : ; W\ [. + = M : > : , : } :  + : ; : , :: : ; : :/m(vQLzJCJQLY\) : : \ : = : XW :  + : ; : , : ,W\)[>x@ : : /L&obowkppdd0Qx=#: ] : : , : \ : : + ] ; , |: ; {: ;+ }hwwppdpqbbqdqmZC)[ : : : : / ,, , : : : + >x ; : : : , { (*?QddppqqqmOqakqZOmOQU#M; : : : : , , , :: : ,  +: ; :, ( : : : x *1XdZqpdkkhkdq*#pmZOQCJUu[> , : : : : , , : : :,  + [: : #M| :; :x@/ } \ }dwZZppwUXccnuzLOppmmZ0JXzvv|{]+ , x : : , : : : :  + ; ; : # #UmwpwLx\):>x ,(}<=#M|U0OOZQJJCJn/( X : : : ; : :  + : : ; ; , WQwOZn@/( < : : >x@/vYJJJUUJ]+X [ :: ; : : : :  + : : ; : : <=#M , _ (mQq#M > @/: : +XWXO0LLX/(} : : [>x , , {] ) :  + ;; ; : : : : |{qpZv\ x@ ] ; : }<0kbhq]+ : : | , # : + ; ; , , , : : )[xoLc( : ] [> :; : : \|L0C@/ : : : , ] , ++ ; : :: : >x@ <[(MU{: : : (}<: : ;[ ;/(}~* | ] : =, , \)[>x@/(}<=#M +XW\ : /(} ; {]+XW\)[>x@/(}<= M|{]+~ : ; ; X \)[>x@/(}<zYUU0OZmmLJJ{x@/(}<=#M|{]+XW\ >x (}<=#M*{nuvzzz +*pQYcuzXuvvczYYYYYYXzzzczzzzXYYUUJULOQUYz<=nuvcvvvvczzzXzzzUQOwqqqqpbkbkhhhkhkkbpqmOOLJUUUYUUXzcccvvnMn{ XvX0c?Qx? xLZ +@@$%&&MM##**oahkbdddpqqqwqqwwqqppqqqwmqqddpqqqqpddbdbbkkhhhhhaao**##MMMMWWWWWM#*******aaaaahkbbbbddddqkux_<>?_ M~f]~~ +@@@@$BB%8&WMMMMM*oaahkkkkkkbkkhhhbqwbbkhaahhhhao***o*######MMW&&888%%%%%BB%%8&WWWW&&&&&WWWWMM###**#****hdd*adZtcaWBhob + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== +ZU=# : ;; ; {: ; ; :M , : : : : :} , :  +uXW\ (} ; W x ; >: ; ; : [ ( , : ::)[ @ : , : , }: : : + /( |{; ; : =: ; ) : ; : = ]: \): ( { :: : /: : : : :  +; ) ; ; ; : ; }< \ ; }<=# : ,) : = ,] : : :: : : : :  +; x@ } ; + : ( : ]+ ( ; ] : : , : : : : :: + [:  + : :; ; : { > |{ ; x {: : , \: : : : : ,  + ; : : :: , W\ : ; , > : M ] , ) >x : : : : ; ,{ :  + ; : : : : , / : ; , , = : , : :: : : : : ; ; ;  + ; : : ,| ] : #M| : ; : : , : /(, : : : :: : : : ; ; : + ; : : / W ; / }<:: ,+ \, : <=: | : : : :XW\) :: : ; ; : +;; ; : : : x@/ ; :{ )[ x ] : : : , : : ;; ; :  +; ; :: : X , : ; : x@/(} .#M : : : < , : : ; : ::  + ; ; : ,: : :@/ ,=# *.+X, [>x , , ,@ ( : : } : : : ; :  + ; ; ; : ,: :M \)[>x@ : =cx|{], , / : :: @ X : : ; ;  + : : ; : : : , } = |: +XW*n.xx@ #M|{]+X : : , x / ; : ; ;  + , , : : : ; , X :;xxZc. *| +XW\ .+ / :< : <= ] ;; : : ;  + :: : : : : ; : +XW : (} = .xvJmUcc*[<x*. * : \, : , x ; : :: ; : + : : :: : ; ; ; } = : X \ .ncJZCX. Y + ;W\)[, (: : : >x@ : , : : ;; +: : : ] \) ; ; :+ W ; ;(}<*. {XnY. *. / :: : : : ]+ W : : , | : ;  +; ; : > : :: ; / : : XWnx. * c* | W : : #M|: : )[ : ,= {] >: ,  + ; ; } , : : ; ,: : @ (}zvcux .* )[ : , : , , #:  + ; ; XW\) : : : : : :{ +Un..v.*....<= : XW [ : ( : W: @ :  + :: ; ; ; : : ; : : /Yx..** ]+ ,> : : : : , [, (} :  + ; ;; , ; ; M ,]+X \) >: : # |{n * > , :, X : : : : : , : : : + , ; ; < :; : , XWb0mOQJOQL0JJ[ : : :: : : : , , , : :  + , : ; : ; : ,,# @cdWM*#aa*khaqqx : : : : :: : , , : :  + M : : ; :| : [ ;xYobppdbhdaobbbmY#M| [ /(} = : :: : : : : <  + W ) ; ; ; / , + [Zakdqmpdqmqo*kpqdqC[>x@ , : : :: : : :  + :} ; ; ; , : (xxZqpkkkbhakdh8hddqmOOLc|>] )[> = , : : : :: :  + : ; :: : : W\) >x : +kkqqdddddOu})=#nvLLZwwmQCnx@/(} : : : : : [ : :  + ; ; : ) :: : : >Cpppdpdwu| \)[>x@](nUCXvJCv+-;: ; : : XW\ ,  + ; ; : : : :; ,( =#bpdpqdv\) ( # :XW\)xXQQJ(_ : :: : @ , < : + ; ; : : , , : | XWOpwqZn/( :=#M|: )[ :/ : MJ000X?+ : : , \, +:(}< ; ; : , : :> /YaahoU| ;; ; :} : [cdpkw} : : )[ M  + :: ; : : \ : ; |CQWM&Y) ; ; ;; W : ; +t0wUXW : :/(} )  +>x@ : ; :: : @ : ; [cQm#x} : ; ; (} = : +XW\> : @ , | \)[>x@  +#M|{]+XW\)[>x@/(}<= M| W\ : ?}<=.. {;+XW\)[>x@/(} ; M|{]+XW\)[>xvC00OQzM]{]+XW @/(}<=#M \)[>x@/(}x.*M|  +WabbkkkaahkbdO00QJzcx[>x@/(}<=#xnzQZqpmQv>YLCCOmwpqmOQCJCLQZwqwZ0QCQmppdddppqqqZLYcu}<=#M|xnxxW\)[>x@/( *cucQ{}C?;  +@@@@@@$$B%88&&&WM#oakbpQJZppddkkhhhaao**#**#########**o****ooo**********#M###*ahhhhkbdpqqqqqqqmwqqwwwmh[+ ~ }> /?(<<# +@@@@@@@@@@@@$$$B%888WM##MM######MMWWW&&&&&&&888&&&888&&&&&&8&&8&88888888%%%8&M###MMM##*ooaaoooooooaaoaobpd#kbU|LhW#phU + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT + ============================================================================== + , , , , : , , , ,  +, : , > , : , , , , ,  +: : , M , , :, , , , , , , ,  + : , , , , , :: : : : : : , , , ,  + ; , , , , , : : :: : ; : : : M , ,, , ,  + ;; : , , , , : : : : )[+ ; : : , , , ,, ,  + : , ,, | , , : , , , , : : : , , , , , , + : , , { , : , , , ,|{]++W , , : W , , , W , + : , : M , :: , , , ) / } : ,+ , , ,, \* ; {], ,>  +, : : , : , ,, , ( |{n+X: ;@/(} XW\)[ (}* :: / , ,  + : : , , , , ,M| \)[ xzn( + ]+X >x@/.. =# ]+. ; + ,  + ,, : , , , , , X @/(}< vx] W + }< #Mv* ; xc/ : |{ |,  + , , ,, , , : =/{ }+@)#(]x ++@)  + , , , ,, , )#(]x\ ;@ + + # :\ @)< |[=/{ **]x\}+@) (]x\}+@+ ++ x(]x\}+@)#(vx\}+@); ]x\} ) X|[=++>#(]x\} , , ; +, , , , [=/{>#(]cx}+@)XY]x\}+. .c.[=+ > +..}+@ |[=/ : :: , |[=, :  + ,, , , : #&]x\}+@)#(] ;}+@)$MhdmQC@)$X|[.x{># + }+@)#(Jx\O+@)<c|[. ># .x\zvvXUX|[ ; : : :  + : : )< : :x\}XCz#(mx\}+z)#Xcx\}+@)UX|[=/{>X(]x\q+O)#LJcccvvvuuunx/{UC(]x\}YQOOZL[=/QC#(]x\}L@)#(wppwa@)OQ]xzX+ ++ ; ; ; + : ,, + :[=/{L#(ccccccccc|[OQ0qm0]x\}+XLCYQ0=JO>#bkq\}..*QUXX\} + + ++ +  +, , \ : X|[pQ{>X(YYX}+@)OmL[Q/{0qdw0X}+@)<ZC[mkabdw]x\}+@J0dhhdpdd#dkx\}JJvUZ]x\+ + + +  + , [ ] +@)<J|0ZOQLQ0QO\}bm)<CZmQ/{O#CUvun+@)LZpppdbk#(]YCL+@)<mqq=/bhoM]X\}XXz#(]x + + +  + , , [=/ > x +@)qqO[=/{mqkM*d}wmQ#(]xUJ+@)<nvx=/{>#(] + + +  + , , , # x\}pb)<Owdbdqd#okhhbw0)#.*. ..* +  + , , : =/ #(zx\}qdpqX|[=/WWadqx\wwZ)Ow]pw}+Q)#(]x\}+@cJX|[h/{>*...*....*.... + , ,, : X =/{x#(]hp}+@pkp|#8/{>#(]xZwqwOLU|[=/{>#(a*d}+@XXXXXz/Qq#bpx\wdmOCU|[=/nn#(]ucv+YQCX|M=/{...*...**...* + , , : @ X|[C/{>a(]x*M*abh&%#MWW*kq]x\Zwqm#w]x\}b*#*MM[p/{>QQLLLLLLLLC|dkaa>mw]x\}+@QOwb[=/YLJ(]mq0+@)#*....*. +; : , (]x\kbbk#W#[&B8*#(bbb}oWWM###MM#oa(kha*h@)x@ }<kWkhaa#&8WWM#*oooooooooa#WWWWWWabkbbbk*&&MM#*ohkpm0Q0mdw0QCzvvvuvvcccccz +, , : /(}<=CaMWWWWWWWWMMMMMm<= XWp#ao#&$$8W*oo**oooooooaa#MWWWMokkkkbbbho#&8W*aoahbqwdhkmQUvx.xxxuvcczzz + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== +: :, , , , , : , : , , , ,,  + : , ,, , , : , : M , ,  + : , , ,, : , , , [>x@: } , ,  + , , , : ,, , , , ; : : ] ,  + : : , :XW\), , ,, , \)[> : , : ,W / , >  + : : , , :@ # , , @ M : : ( \ < ,  + : :: , , : ): , ) , : ; XW\ , ,, ,  +: : , , ,) @ = , } : , : : + }<= , , ,  + : , , ,, + \ , ]+X : / , , :< ; +\) , , ,  + , , , , W : <, ] >x@u(} : {]+XW\: (}<=# ;X ;; ; =# , ,  + , , , , , } # :{ X, [ }<=# |cv+ : *./(}< |{]+.* ) : /. ; :\ x ,  + , , , , , \: x@/( { : ++>../ + ; W )[ux + : |nn+ ;> ; : {]+ , ,  + , ,, , , , ,= ># \.+@)#(+ } +)# x\.. )#(]x\}+ + ,# \ +@): ,, , + , , , ,, ,}+@ , | /{>#(] } ;)< |[ {> (]x+}+@) (] . +@) + +X| =/{ #(]x\}+@)< +x@ , +, , , , , ,@ |[=/ +. ]x\}+@)#( }+@)# x\}+@) + + ) x\}+@; {]  +, , @ , , \ @)<n|[=+. #(]x\}+@)#...*}+@)# ];\} @) +.x\}: +  + : + : : {> ( \}+@)XX|[./{>#(Qc\}+@) |[=/ #*vcz}+@)<.*.ux{>#(0x\ ; :/{>#(]x\*+@ +.. /{ (]x ;  + ; @ }, :[= {>#(]x\}vY)#(]x\}+ :|[=/; #(]+ }+@)<..[= ># ;  + : M : [=/{QUXUCJLJcvJ0UzYCY>#CmLv}+@*....=/{>z(]x&adwQJX|B=/{>#(]x\ )# x\} @)<u /{ ::  + : ) :: )< |[c/{>#(]x\}+@)<ncJUc{0#(uYcn... X| /uY0(]x\}+@C#(]x\}+@..*..=/{> ]x\}+@). ;= :  + : > , + #(vccu.@) +x. +@)< +=/{.*(]x\}+@c# +x\}c@) ; ;  +, [ , ( \}+J)#(]x\}dpdhX|vn*.>#xxx\} + zCLCUv+@.xXz[UZ{>#kpbhkk*b x.x\} #cJx + +  + , ,,+@ , :{>#C]x\}+@)#(]Wd}+@)<QCXXzcczYJLJv+*)xn|[=aadbhdx\h+@)<m|[=/{>.uux\}+ )< |[..{XU(] + ++  + , , : X|[=/{O#pqOLJCJJCJJUY/{>M(]xJ0ZZZOQCJXv{>#(UY\}+xv#ko*#wJJXYX|[ {>X0]x\ +.*.X.u=0C>#+ +  + , , : + X|[b/khp0Q000Q0QQO0[=o{>CCJxYU+@)Cz.nu}+@)zzcCU/{ +  + , , : x @)<ph#*d{>#(]x\}+@)#(]x\}ccccccczXUUUUzcz0mwwCX|Q0/qk#(]XJ}+vL# \}mQ)<&o[kooohq]x\}+@oodZLCCJUUYYXXXzczzz|[=/{>c(YZw}dZ)#zQmdC+@)#(px\}+@Mm(ZbkpkWWoX|aao#**WBW\}kd)0QQQLLUUCLLLLLLLCCJJJUU{Zp(hpC}zzc0Z]x\CJzXXXw[=/{>mb]xJdhdwQYu..**. + , @ X|[k/{>#okx\}oMWM#o[=/M&&o]dhbwmZO0QL=/QQQQQQQQQQQLLLL=ZkhobQUYYXXXXzczz/Lk*(]mw}+UQwk|[=/{k#(]wd}+@C0QUu.. + , @)<kh[=/{*bpdx\}oMM####*/*a#b*o\pppwZZZZmZZZZO00000Q0QQ|wko#b#CCJCCJJJUUYY=/{**kbb\}+0dhX|[=kbL#dhad}UcLbhmU + , >0pp*#dp#WadbkkbkaM&8#hkbhM#kkM&adddpddpqppqqqqwwmZmZZOO0wkoMhZQ0QQLLLLCCCCCJCmoWhbkbZCCwahmJZwLQwmQp#bJzO*8# + , } =0kdkMW*MB8#kkkkh*WW#abbh#M&Maa%@8abbbbbbbbbddppppqppqwwwwph#W*qOO000000QQ0QQQLCQb*akhhpOQwaaZCCJCLJUCwhkmLZha + ,, : WzhhhWWM%@8W#ao*M8&#ohaoMWW8M#MB@@$WakkkkbbbbbbdddddddpdppdhMW*dqwqwwwwwwZOOZOZmmwbo*hhooao*#hbq0QLLLCJ0pkdmqw + \ : }<Z*W88@@&MMo*MWW#oaoooMMW&&&W@@@@@$W#*aaaaaaaaaaahhhkkkk*#MWW*ahbdpdpddppdbbkhaakk#W&&&&&M*hkdOQ0QQQQLL0mmZQ + , ,WJ&B@@$8WWM#MM##*oooo#M&%a/(v*@@%M##MMMWWM#####MMM&&MMMWWoo#MWM****oaao*##*hk*#ohkho*M88&*oadwZO00000QQ0QQQ + , : }L$@@B&MMWWWWMWM*#MM&Wdu| XZ$oaoa*W&&WWWWM#MMMMMWWWWWMW&8W#ao#####*##*aakk*&&W*bppbaW%&MMMapqwmmwmZZOOO0 + , XOBB8WWWMMWWMMMM&&MmW\ (k#ao#&B$%&MM##M#M##****MW&8%B8#oaaaahhhkkkbkkkoWWWW*hkbbba#M#*okpqppqqqqqwmm + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== + : , , , , , , , ] , , ,  + : ,, , , , , : , , } , ,  + : : ,, , , , : , X; , , , ,  + , ; , ,, , , , } ;M ; , , ,  + , : , , , ,, , } ]+ : [ : ,# ,  +, : , , , , , , |{ xn/,}< # : \ , ,  +, , , , , , , , <=# |+] , > : <=# , ,  + ,, , , , , W.)[; : + : = :{] ;\)[ ] , , ,,  + < M|,, , , , @ (}z=# : W\ , {] :[Y ; #M , , ,  + , + , ,, , , @ }< ,{]+0U\) ; / }<=# : XW\)[>x@ :<= + W ( , , , , (  +|{, x ( < M , , , , M|{: )[> /OC<=:M * uu)[> @/UCvx*.| :XJv): / X , , ,  + @ M XW [, , , ]+ +\ : (}*. * +xW [ ; (.*u# |nv+ W\)[ @xL}; +]+X ( ; >  +=# { @;< [: ,]x\}+.. + =/; #( * + [*/{>#(]x\}+@)#(]x\z+@ X|[ {>#(]x , @ #(.* } @)#(] \}+@ <.|[=/{ #(]x\}+ +|[ ; :x\}+@) W\  +( u= (]x\}+ ) X|[=/{.x(]x ; *|[=/{>#(] +@..v|[=/{>#(]x\}+..n(]x\}++ ; , ,}+@): =/x /(}<= + +X;\ (]x\ +@)# +x\}+@)nu|[=/{ ;(]x\}..)zJxC=/{>#(]xX. @): x\}+@)#(] \}+@zccc[=/{># *}+@)x.| / #(xx.}.x)LX|[=/{>#ncx\}+8) ]x\} @)< >+  + ]LuW X| /m0#(]x\}+cv#(]x\}+@p#(] \}+ ):X|[=/{>#(xx\ :@)<.#  + xLQ}< )#(]x\}+@)<u|[./{u#(]x }0@)W(]x\}O@)< [=/{>v*.x\};@)#(]:: +Xuz) : + = |YQmZn+cv<.|[=/{d#h]x*.... ( .\O0@)#(OxC}+@)< | {*.(]; }+@)<x|[;/{.#(] (Od=+; + [ZwmQz\}+@)x.|[=/b>#(]...*....* /{v...x* +@)<un.*. >#(]xd}+@zCLJ[=/{>Q(0x\}+ + X|[=/{c#( x..+@v# ; +X +  +, =wCcnYLYv}+@XJ0moW/d>#xxnx.x.*...[JJ{vzvxnvJz@x#(]nx*+ .#(.*\}v@) |[p/{ ; ;  + ] XYuvQboq(]L0OmZQzn.x\ czvXX|[=n >u.]x\U+ X|u= { ++. + x (LkM*d{pdqZL\}+@)<8|[ccccvuunuxn@O<C0[=/{>#(]x\}+ULQ0|[=ux>v(]kaMMkd*X|*=/{>#. x\xnuYzX|[=/u>#(**\ +)..|v= .+xc  + M ]&aZLwoop>#(]Q0Zwo%#(]x\}hpC#(]x\dd@)hhh[=Yc.. ]x\}uzcx.|[=/{>#(]x\}+.)zcvucX+@CCXv[u/{>#Odd\koohWX|[=/{ *. x\}.nuXXp[=/{>#.*x\}+@)CLO0vn.Q + : # {kwZ#(pp\}k@)#QZdh}+nunnxxxxxx....\}w@q#X0Q=/Y>mO]x\}pL. XmL +, = |8}ob)Qpwx\uvvuvvvuuuunuunx\o+#)<w|[=wwZ#(]xbz.vd%h + , \) ux#}+@WB#o*B/{BBMhxddppqqmm[hq{000QQQLQLLLLLLCLLLCCCCC}qd)*q|UYY{>QLXxcv+vvvvuuvuuuuu]*okZZpmX|[dq{>#hmxumpda + ,, =u(Wx\$8#)<MW[=%&>Mo]xdddpdpX*bwwmmZmmOOO00)<0QQQLLQLLLxpk+Mb<CJCCJ{JYUYYXzXzzccvcvvvv#(*xd}+Z)YcQppXz + Wq>BB@8\}M&8$(baddb@)dk|[L/zZdk*Ov + @/Zb/{M%B$B%%WW$BXhh*8B%obbbdd+WW<ddddddddddddpppppwwwwwmZd#*Wb}QQ)QQLLLLQQLLCLCJJJJJJJJ=/@>#a&##W#obOX|[YOLYpWw + |wab*&oao###W&8@8oooMBM%&ahkkkh8@odbdddddddddddddddddpqpqwd##&kwwmmmZOO00QQQLQLLLLLLLLLCQW@@@*dM*bpqddOJUUYYUqMq + Y#hoB8oo*###*8@&#*##W#WWoaaao#$@B*hbbkbbbbkbddddddddddddpb*#8apqppwqqqwwmmmZZZ00OQ0LQ0pW@@@@@Mh%#obZQLLLLCLCCoo + #M0#8@W*##M##8@%#M####W8****M8@@@@%#oahhhhkkkkkhkbddddddph#M&kppdddppppppqwwqqppdqwdaW@@$@@@@@B&ooWamL0QLLLLCm* + [U%$$&M##M#8@BM#####8%##W%B@@@@@@$%M#*MM##*####**oohbho&M#B&o*abdddbdddbkaoho*ooaMWM&%B@@@@@8*#baoqOZOO0QQ0Lm + ;#u$@@$%&MW8%&WM#MM#$B#M%$apJa@@&#MM#M$%WWMMMMMW8$$B%%%8#o#WW&M###*#**#MMM*ho&#akbhbh#W8$$@@@WWapdwwwwmmmwZO0 + )[&@@@$&&&&W&&WWM&@$M8%w/(}<m#kM##&$$BBB8WWWWWWWW&&8%%%%$$M*#M&WM###M#*ooao%B%WabddkaaM$8&%8ohYUqqqpppqqqqw + , =#k@@@$88%%%%%%W8@%*dv|{, XW\)@@@$&MM###########%@$$@@W#####****oooaaao&%%BWokkkbbkhhpwh/( cpqpdddddpp + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== + : : , , , , , , : , ,  + ,, , , , , , (:: + ) >; , M ] , ,,  + , , ,, , , @ } , , { W } = , , ,  +, , , , ,, , , [ ; : M|{ : , , ,  +, , , , , ,, , , )[>x < ; : W ; , , :> , , , ,  + , , , , ,= |, , ,, , +Xx*)[ @/ = : ;# | , , ,  + , , , , , , , : , x@/,}J= M.{ : > / ,, ,  + :: , , , , , , , , |X] X \) = + / = M {] , ,  + : : ,, / < , , , , >U@ ;< M X+\) x : XW ) ;@/ }, , + ; : , | , , , <=#mYu] ;[>x@ : ]+XW : @u(} : {] [ M { , , + : : , , ,, , :< #M| ]+X* Ydcx@/ }< Mv{] )[>x@/(} |Y] ;\) M , , , ,  +, : , , , {]+ W )[>x.* . =pL| ]+u [wx@/ }<OZUuc.XX \)LCx ; <=# [> } , ,  + , \ , |[=/ >#(] \ )<.. +*. (]c\}+@) |[=.Y>#(]Y\}+@)#(]x +@)#( ,}+@)#uvx\}+@)v(cx\}+@ nz]x\}+@)#(]x\}+@)#(]*z}+ )< |[=/{>#J]x\}+ X|[=.{>0(]x\}+@)#(]x\}Y@ <:|[=/{>#(]x\ : , ,(] (} ?#  + , , , , |[=ZvnuY]x\}+@)x*..=/{>Cz.*\}+@)#(]C\}+:: |[= >: : : : # + XW  + , , , , )Cncx\}+Xn<X|[=/b>#(]x\}+@z#(]x\; )#(]x\CJ@)# ; \}+@)#JXU\}+@)#(bm0}M@)#( *.+.u*@  + , , ,, (]u\m+@ux..*....*.. }+z)*..../{>#uc... *)#(]L\}+@)#(Qx\uuunxnx.x*....*xJ}+@) .xCU{v#(]xu...)#L]x\}+@)#(]$\}8@)cX|[=YcuJ(]x\}+ + + +}ZQ* # + , , , X|[=/{>z(]x\}+@)%(]#\}+@). |[vuzC#(]x* + + +]xpz* .  +@/ , , )#(]xQL0OLC0Uu=/{>Z(]x\}C@)<#kkahd>*(kx\Jcx*#(]a*#*khmq|[=ULJczXYXXz@)<uuYY/{QC(vuc}+@)<hp[kooa%(]n\}*...*|[=ncz#(]* * * {>dxZU *z +08$C{u} : (]x\}+@*qX|[=/aoMM*x\}0@)aX|[=/{>#(]x\uuu)vYJLmOOpU(]xhd+@)<kb[=h{>#(.*....*..|[=/a>#....*... *.[=/xLQu vL +Q8oopx+X ,/{ #(mm*M+@wwpoM#od>#(]x\L+k)<UUYXYXzXzzzzzzX)#b]x#}+@)Zwba=/unnnxnxxnx..x.[=M{>...*...*..Xd[LmQ.*mq +qMddkrXn(} /{dpddxdppphMk|[=mmmmO0O\bp@LCCJCCJJCJJCCCUJJJUUUYU/{##(#x\z+@)hX|[uuvuuuuuuuuuuuv|[=/nnuxnnx*.@)hXJCQ*xpm +Oohhb&h~]+X|[b/dbbbbbbddk)ddddpqwwmZ]hh}ZOOO0QQLLLLLLCLLLLLCCCLC=a{a#(JUY}+@O<Xzccvvvvvvvvuuuu#(kbdddbdddddddpp#ooxwwwZZZZOOOO000Q]Q0Q0QQQX|#=M*>LLCCLCCCJJCJUUYXXXXXzzzz@)BX|vvvvuuuuu\}Mb%bQbhJ +ZW##%Moa*M$8)$@&WW&%M#*]xhkbhkkbdddd{*W(pppppqqwwqwwwmmmwwZmmZZ)pM|%h/00QQQLLLLLCLCLLCCCJCCUJU}+@)dddddpdppdddpdddpdqppqp+kW<B|[ZmZZOO0O0QQLQQLQLLLCCCLLx\@@@)<UYYYYYX#(&oOQddZU +Z&#B&M#&B&%W@M*BW*#*8$88%W*o*ooaahhkaB@WbkkbbbdbbddddddddddddddphMMBbdqpqwqmwwmZZZOO0O0000QQLC0&@@@%OJCCCCCJwMd*MQL0CU +ZBW&M##B@$&&@8#@$M###&&M#W%##*####**M@@@8oaaahhhkkbhbbbbdddbdddpoM&8bdddppppdppppqqwwmZmZmZOmaB@@@@@%wLLQLLJ#om&*ZCCLL +p@$@%MW@@W&@$B$B$@W#MM####&$#####MW8B@@@@@%W##oooooo*#oaahhkbkbh&#BWddbpppdpppppppdbkbhhdd#WB@$B$$@@@&bmOO0OWdZow0OO0L +//J*@B&$@B@%M8&M%@@BWWMMMMW%$&##*&B%$MW@@&W&WW8BWMMMMMWW&88WM#M%&*W&&8Mahkkhkbhha**oh#oaooM**W8BBB@@@8dwwqwaMOmmmwmZmm +{]+X&@B$$$%#h#MW8%$@$&&&&&&W8@%M&@8aY|q@#*###&%8&%8&&&&&&88BB%&WMMW8M#*W%88&MM&8MW#ak8%#obbkbo#M%B$@@@#d0v/fQmwqpqwwqq + @ (q%W%%&W&8888%%B@%%8888&&8@&8LW\) >@##MW$@$$8WMMM#M######M%BBB$@W*####M#####oaoaa%$BBWkkkbhah&B#*&W+ Lqqdpdpddp + | +zW%@@$B%%%BB$%%BB%%%888&B@U/ , #mdWW$@$@BWWWWWWWWM###M#W$$BB&###M############*8B8%%#*oahkkbadwMO\ >xMqddpddddd + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== + , : , , , , , : ,, , / # : , , , , +, : , , , , , : , , ) x , @ # + ,  +: :: : } ]+ , , , , , x@/ , [ x /( = : M = ,  + : : , , , , , , { +XW , @/ #:| , X ,  + ; : { , , < ,)[ux += + + W :: ,] XW\ @ , [ ,  + : , <= > , , ( #u +X \ ,>x ; = , , , :: #M , , , , ,  + , , + # , , X~- [.x /(}< # , \+[ ,, , , ,  + +XW , , }< #M| ] X # ,x (* M, , ,, , , + > , , , +CW ; > @/ |{ W ; } :M ; + , , ,X , ,  +, , , , , , >x@L(c< ; ]+XW ) >x / } M| :\d[ ; (}<= , , @  + , W , ,, , + , < (}<=#. {avXW\+[ xx/(}<=+ ]+XW\)[> @; Y< + { >x ,  + , , , , , , ,x : M,{]+ *. zqUx}< . |{XdLW\) >YXwJnc.# :]wX*\ x@ { X  + , , , , , >, ]x\}+@ ;|[ ;{>. * \. @)<J|[=/{ #(]x\}+@)#(]x\}+@)#(] \ @ /{ ,  + : , , , , = >#(] ;)+(]x\}+@)JX|[=/ >#(]x\}+@)UX|[=/{>#(ax\ +X ; ] \} |[= +/(  + ; ,, , , @) X|[=/x># ; @)JX|[=/{> ; }+@)#(]x\v+x)#(]x\ + ; > ( X| ;;{u+, + ; , , ,, \}u@)< x[=/{>#(]x\}+@YYX|[= ; (]x\.+C)#(]u\X+@) (]x\}+@)xU/ +: , , , #(]x\}+@)#zxx\}q@)#(xx\}+@)#(].\}+@ < ..**.>#*. \}+U..X|[=cx>vc x\0+@)#( x\ : : : : \; > + , , , [=/{>Xc]x\ + )#(nx\} @)0Xxv=u{>#(]x#}+@)#(]x\&+@; [=/{>#(] :: : : : /(v<=# + , , , | =/{># + * */{>nv]x\}+@JvY|[=/{ #(]#\}@@a&obZ=&@>#(px\} @) + .. *>#( ; : := : |{]+ WU + , ,, , :zznunu+@)u...*/{>#(kx\}+@); ; ; ;>[.x:/C} + , , , };@)#(]xvYZZQ# x \}.@)#(]c\zQQJ<v|[nv{>wQUx\}+@) ; + (]cQ}+@u#(]x\}wUC#v]x\XUQQ+(]uxnU@) X >#(]xJCXLLCC|Q=/{C0(]X\}+@ncJ0LL0LXCYxx\}+Uwhpwkad+qb#(]x\zc@)Lm0U\}+@)kk#akZwLm(]..}+@)#(cXzULC)xXu[=/{>qm]wbbq#)<.|[ * (..*nn@)* + ++x\}+YQ/ c = +JCWMW@n>,, ) [=&d>#C]x\*oakqq]m\}+@)* *.. *]x\}+@. * * (#x\Cc ]Juw +Zk#ZZwWQM } )wkkx\}+@)<UXc=0{>#(]x..xxuuuuuuvuu#(]x\}u@p#(QOv uqCd +hMwdpZp$k[] }+QO#Z.*Cmw] +8kbbbkMqdw#(]x\}+qpqwwww/{OO00QQLLLL<qO[zcvvcczzzXXYYYXXXXXzzXX]Qb}+@)ccv[=/Cvuuuununnuuuun.xn>#8]x.xx.*..|[=m{C.\dbJ* +akhhbMobkbb>#$8#ahkhb8BMo*&8##*XpbdppqqwmZZ}a@)0LQQQQLLLLLLLLLLLLLLLLQ{ph(8xCCJJUUUYXXXzzccccccccccvc[=@{>#vuvvvvv)<h|wbqOvuX +$#oo8Maaoo|8$/{MB(]xM8M&&aXbbbddpdddx\$+mZZZZZOZOZ0QQO0QQQ0QQ|L=haoW(QQLLLQLLCCJJCJJJUUUUXYXXXX|@@/{>ccccc}+%h<UUmmYuv +W*##8M##%B&WMBoa$ohahM8#WW*bkbbbbdddh$@WdppppdqqwwwwwwmmwmmmmZmZok8*0OO00QQLLQQLLQLLLLLLLCCJUJp@@@@BCzYXzYvqdwh#XXYzzz +#MBM&MMM$$8M8$MW@B#oo****aM&hhhkbkk*&$@@$#kdddpddddbdppdppqqppqp#oWdwwmmmZmZOOZO00QQQQQLCQ0Ok8@@@@@@BZJUUJXMpOWdCJUJUY +M&@M@%MW@$#%B8%%W$BM##**#*oW8aaaho8*Z@@@@8&#aa*oaaaaahhaahkbbkhWa*&ahkdqwwmwwmmwqwpqdpbdwh#M88WWW8@@@bmCJCL#ZLbLLLCCCC +nYo$&@$%$@$@B8&WM%B$&MMMMM##88oa*$a+XO@Bakhao#W##M*ooo**#W&WM*##bha*M#hoaahhkhoaoohdh#dppdkmb*M&&MB@@#OZZOOhJQLLLLLLLL +}<=0@&%B%%%8&&&&WW&8@%#MMMMM#8BW*\x_ ($#a*o#%&&MM**oaaaaahaaoM#MW&B#bdh*ooaooo*ohhkdo8WMkqdqpbkkM8&B@@z+]>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT + ============================================================================== +, , , {, , ,, , , ( < , , @/ , , ,  + , , , , + W := ; W ] ,, , ,  + , x / } X \ [ /: , , ,, , ,  + , + , , ] ( , M|, + ) ( : M , , , , , X  + , {] @, , , > ; : M { , , , #: \ , , , x  + , , , , , ) , , , ( < { \ , , ; x ( , , ,  + : , , , , , ,, ,> |{ XW\ [*x , (; ;|{] : , , M  +; : : , , \ @ = >.@/n} =#M ] ,[>. ; } ,, , , ,  +; ; : , , , ( M|{ XW )[ ;< |{ > /(} = ; : , , ,  + : :, , , , { <= XW\)c>x ; +#M| + W ) x }< : ]zX : x@/ : , ,,  + : , , ,, , [ M_>]+ W\ >x@/ + CLM| ] W\)[>x :=#M|{]+X ) >C@/ <= ) >x@/( , ,  + : , , , , < {]+XW\+ ; =# + WZ0c> @* vzwqn{], WXYZcnu/( nX|{ ; \) = ; : x  + : , , , ,] \ #(]x\}+@* + {>#(Xx\}+@)#(YU\}+@)#(] }+@) { # \} <= |, + : , , , , ( }+@). |[= (]x\}+@)#m]x\ +@)#(]x\c+@) ; [= ;>#v]x\}+@; [=/{>#(]x\}+@)#.ux\}+@)< +=/{>J(]x\} )#(]x\}+@)#(]x\}+@ X|[./{>#(]x\ XW\ + , ,>#( , ,,Y(*x\}+@)vx.*=/{>C(]x\}.@)<c|[=/{>#(]x\} : X|[ / , , / } + ,> (] ,+@)#(]x\L+Z)#(] : @)< |[ : , = |Y]+ + ] } @)#( x\} )<..[=/{>#C]Y\}.@) X|[=/{>#(]x\}+@) :x\}+@)x  + (] }+@)* * * +@xxn|[=/{nznJ.\}+ #( \ +n)< :: : ,@)( <=#  + ,X x\} *...*....*....\0+@zzcxYcU{>#**.. +@)<k|[=/{>#(]x\}+@UQX|[= #(]x\}+@ : : :\}+ ,X.\ : + ,, { #(] *....*....*..#(Ox\CQ@c<.|[XnYc#(]x*..@)*X|[vLZOQ(]x\p+@)<n*[=.{>#(]x\}+@; : (] \ @0( :: +~+ [ , @ [=/{ .*..\.x....x...{Z#(Ox\v+@)#(%x\M+c* X|[Y.nz#(]x\}; <;| {>#(]: { :  +addC}<=# , #(]+ ; [=/{># :  +Q0mk*Q)\), x @}bhok\}QCCpX|zzX{>#(]x\}+@nncJYL0CQ#(.x\}+@wqX|dpmp>#(]x\+ X|[ /J># ++ +)<h|[YX ; >  +00O0hoOqYC=/ ]x\W+@)JJ|o**dq#(]x\}+@)<cvuvcvvvvuvvvvvv# + * X|[=/{>+ ++@)<x. + =uM +wwma#ZZ0JJ|[=/ >#JZx\LQLOhq|[=/{UYXYXXCm@cvvvvcccccccccccccvX|[=v{>Z(px\}+@QmO|[= *....*...*.|[=/ + \}+*c. x.n\: +dpaMpbdpk##(QQQ}+d)<LQQLCJUUY]Jm}vvvvvccccczcczcccccccccc=b{>o(]u\}XLC<....*....*....*.ccvu\}Xvxx.xxx.xxx...*..@)8X|..* #(]X\}+Mvc];  +k8ohkkbMobkk@W&X%B#oo*#kdx\wwwZOXLLCU{L#(]x*nvzYYYYUUJJJUUJUUYYUY<h|M=/zczcccvvvvuvuunuunnunnnn}+@)<.*...{>a(Qbnxvx +. +W*8Wkho&khxh}M@)#(]uzYJCCLLLLLLCLQLLCCC+@a<8|[UYXXXczczccccccvvvcvvvvcx\@+@)<...*/{q#YLYn +  +k88haoW#aa*Bx&}B@)8*|k=MW>&MkdbpqwmOX|[@/{>zYJJLQLLQQQQQQQQQQQQQ\bhoM<LLLCCJUUYYYYXXXXzzzccccc#(]@@}+@)x.x[=o{> vc*  +WBao8MMooo8$&##$Mh$8aahhM#a*#hbbbdqqqp&@$bLLLQ0O00ZZmZZOOZZOOZOO0ob&hL0QQQQQQQQLLLCCCJUYUYXcczCa@@@@@pnxxn.bULOY +  +&oaaB*%&o#@$#W%8&88B%o*ohkhkh&kbkbkk*M8@@@Bodpqqpdbkkkbbdqwmwwwwk**&qZOO00QQLQQLLLLQ000O0CQqp#$$B8B@@@pYvux#uLmY.*  +tCbo%&%@8&B@8$B88W#%B8###o*oh#8bkbhBp*W@@Whaaha#*hahhhaoo##*aaa#Wdh*#M*kdqqmmZmmwqqppbkqbwb*h*o#***$@@qJXvvhcvL.x....+ + +XOYo@%%%%8&&WWW&8%BWMM###a&8ka$n#z|B0bdbb*##o#*aoaoaao*###*ooa*MohhaM#*ooa*#*o*kqhWhpmZwOZka*&*&@@BLYXYwxunnxxx.x* + }<#WM8&W&&WWWWW&@8MWW###oB8p{ \)[kxdkkW%W&ahkkhkkkkkbbbk#WW&&8hdbkkkkkkkkkbbdbp*&#&#qmmmmqwb8oh&$ZnvUmccvvunnxx. + +<+o%B@@$%%%8%88B%&8&&&&Wok< =UMf&8$&B8#*#***###*#***o&&8MohhhhhkkkkkkkkkkkbM8MM8akddpqwmwZQ+qW\)[nx@UYXzzvv. + @ }qkhM#*aaaaaahaaahhhk*+[| :\t[o#ahohbkbbkkbdbdbbdddppdpqppppppqqqwwqwwwwqahbbhhdmmZmOOQQx?u( :=.M|Uvczcvc. + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + : , , , ,, , , , = : )[ , , ,  + : , , , , , ,, , X # { ;[ x < { : # , , / {  + : : , , , ] \ / { |{ +X ) / , \ ,, , [  + :: ; : , , , ) > /(}< :M ]+ } = , , < , + : : :: , , , M|{] +) ++ ,= : , = { , , , ] ,, +: : : , ,, , + )[0x ;} =#M|{] : ) , { : : , , , , ,  +, : : , , , , (}<L#MU{]+Xx\ [> ; < , , , , X + : : : , , M |{ Xu\ [xx /.} [ # + XW\ , , , ,  + : : , , , , \) ,/(O<= |{]+ x@ <; XW :[> ; :M ], , ,  + ,, , , , , x_/ : M|{]QXz\ + /(}< |{ + W >x@ : =oM; W\ / , ,,  + , { ,, > , , | [ @ }<=#M.{: XW\*. @hY}< +M {v+XW\) /(}<=#M| ;Xcu x> @/ + :  + = | ] ,, <=# +{] * [ :@/ * *x*LzW\)u xYUaq<=# |JUq0ccx[ :@/Lxu= {]+X > /( :=# |,  + | +, [=/{>#(].+}+@). *x +@) (]x\}O@)#(] \}+@)#(  + , / \ #(]x\} @)#(]x\}+@)Cn|[=/{>#(#x\} *+X| = (]x ,  + , +@)<Uu[Xv{> ]x\}+@)vz|[=/{ ; x\}+@)#(]x\}+.)#(]x\}+ ; =/{> >x  + | ( x\}w@)nU|[=/{ *.. }+@)Yx*[=/ ;#(]xu +O) ]x\}+@) = M| + @) #(]x\}z@)< |.uvnuu..nx.+@)cX.[=/{>un]x\}p@)pX|[=/{>#(vx\}+@)#(LL\}+ *< |[=/ >#(]x }+@u X|[=.{.X( x\}+@)#(]x\ : : #(] @Z(  + ), =/{>Q(]..** * + #(.x\}+@)<x..= {># ]x\}+@)#(]x\W+@; X|[=/J.*(]x : : {># |{ : + , | |[=Q{>...*... * +=/{n# }+@) *c[=/{>#(]h\}+@kM*bq=/@>#(]x\} @) * [=**c# ; : [=/{)v> : +)|{ [ @) XC[=...*....*.. X [z/{ (]x\ @)#(]x\}+@)#p]x\. *); ;;  ]x\+ u.*X|. *.>##]x\XOm0#(Yx\}+@.#(]x\}+XUuX|[.u{>d(Cx\}+@)#(]x\}q@)#(J0OUYU)..*x\}+@Cqwmkkw+abkkzCv*. (]xnnn..#C]x*} ; (  +0OOOO0O*qZ}+0)OJ]x\}+pbah|[=/Y>Q(].\}*@)pm]bhp+#)pZ]wh}+@) ...*....* \}+@ ++[=/{ ( +.nO@+ +bbddpMbwqwO]x\}+@)<O|[000>bb]x\}CCJUYYX=m{vvuuunnnnnnunuuuuuvuvu\v+@bpd]x\.*...*....*....x#}+ + X|[=/{ :<nXx+  +*8kd8hdbbd*ap]x\}@@)#(]*. +@)<z|[@uOC*=C +$Mo*&8kkh&hkb{>#@&x\B*ka&&**b/dqwZOOOZ0@#.ucvvvvccvvvuu/{>#(...}+@)bXvLQu Ja +$#bW8koaMMXh[%/&>B(]WW}+@WW#%a=dppqqmwm}$@)0QQQQQQQLQQQQQQQLQQQQQQ{*#W]xCCCCCJXzzccccc(ccc}vccccc[=@{>#xxx\a+@ZwOUu.x. +bZW@*o8**##<&@8M/$M#&8xa}+&M*&*[bdddpq]x@}+@OOZO0OZOO0000000O00OO[=o{8#(0QQLLQLCJUUUUJJCJJUXXX@)vv]xM}+cLOJuvv +[>?(zm@&$8*M@$MW%%&M%$Wooa**aa#*dkbbdbk*@@BowZmmmwwwwmmwwwwqqwwwwZaoWMwZZO0O0QQQQQQLLLLLLLQLCJCm*@@@@@$OucnomqkZucvvcc + #M|{]]jk@%WB@&$B8%8WBBM#*ooaaa8abbboa##B@@$#akbkakbhhhhbkhkddppbaMhBobddqwmwmmZOO00ZZmmmw0OkaM%%W8W@@@&ZCv#QZapzXzzzz + x@)(*@%%BB8&WMMW8%$&MM##*oM%kkh&*hZkUYJQpbh##a#aaaaao*WWMM##Wkba*MWaahkkkbbkkhahkd*bbdbhdba*MW*8@@80QzabckLYUUUUY + M ]+MWW8&W&W&&&W&B@WW&W##*%&h#**m}mX.0wp*MM*##aahahhhhao#MM*MW%Wkkh##*o*o*##o*hbb8MobqwmZdkhM&M$@@oCLk0UJLLCLCLL +]+XW\ > @/*@%$B8&&8888%B&WWWWWWM$#Man] vr\adM%M8ohaaaaaaaoaaah*%%88%*aaahahhahkkbbdbbk8MW&apppwpdw#&ddo8U(?<=ZLQQQQQQ + , M {]0B$@$%%%B%%%888&&WWWM%%z[> /v}#W$M&8###*#######*#M#M&8&#aooaaoaaaaaaahhhk#%MM8MabbbdpqmwZC#O{ X QQQOOOZZ + : ::[ ]@)o%$@@@@$%%%%%888WW#%X<, {C[d$&&%BMWMMMMWMWW&&WWWMMMMMMMMMM#**oooaoaaao%8&W8%&hbkbbddwm&X[ :[m0mwwqq + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + : : : , ,, , , M , + ; , ], , , , ,  + : : : , , , ,, ) , W\ |{ X: > ( , # , , , , (  + : , : , , , / ,, ( <=:M| ( , , , , , {  +: , : , , , M >, / +XW >:@ : #M ) , ,, , ,  +, ,, , , , , | ) /(.< ;; { : : x , \ , x (} , , , ,,  + , (}<= ,, , , | ] ; +.W+)[ x@ : ] , , , , W  + , | ( ), [_j /C} =#+| ; > : , : ,  + ) [ ,, M } Mv{] XW; [ < {, x;: } =#n : , : ,  + , M +, XW\)0>x (; =# ;W : = ; ]OX; ++@/ < , , /  + ( , W, , W x@/(}<QQc| ] )[>x / {]+X >cY;. #M W\:: , ,  + { , \ } , [>x@/( <=#M|{. WdC[>,@ }YvmY|{] :\)[nxu/( < #p| W\ = : ,,  + ,,( (}<=# | ++ W\* *.}C0vM {z*..\mY x@ (OUU*x v.: Wv0Q> +}<=# , :>x /(  + } ) +@)#U]x\}+@) X|[=/{>#Y]x\}+@)# \}+@) :| + ;  + } ]+ , ]x\}+@)< ; #(]x\}+@)#(]x\}+@)#(]xY}+@ X|[ /{L#(]x\} ; X|[=/{>#(]x\}+@)#(] \}+@)#(]x\}+@)#(]x\} x@  +..*]+\W, / <#|[vuc># .vXzYXncYv.=/QYnv]x\}+zu<u|[L/{>#(]x\}+@q#(]x : )#(]x\}+@)# \}+@)#(]x* @)cX|[=/{Z#zYxx}+  (]x0}+@.*...**...*..\}J@zvX|[=/ccYC]x\} @)<k|[=/{>mQ]k\}+@)<m|[=/++ ]x.nz@; ; {z#(]v\ : +cW  + (dMkbdqCf}+@)#(0xxnxx...*....*.x]x0}+UYvzYC=/{>#xn..}+@)mX|[=/Q0C(]x\}+@m#(]xU}+ ; [=/{>#(]; @C(  + ]+mpamYcJO\}+@)< ,[=/{w#uuuvvuunnxnxx.{v00]xOUcu)c(]h\a+@XXX|[=/*>#(]L\} + X|[=/{># |*]  + x@kOUXYUY(]x\}+@, X|[=/{vvvvvvvvvvuvvu=YZ>Cm]xz}+@)8(]&\}.@)#(x + )UX [=/{ ;zx@/ +}t{JJCLCCU>m(a#\}+@)#(zLUwQJUJX|v=JLO#(]v\}Y@ZwOm[=B{>o(]x\*n.)<xn[JX{>#(+ }+Z)#(*x }+@)0OwOCZOQ0(qxdqwp0CX|JUYCJL0LULUcYc.X|[=/Q>#(]z\}+@qpd|[=okaaYCv.. *)# x\Z+@)#(] \}+bm0X|[=/qoo*kdQZJZ)#(]x\}+..XXYQLQ0>#(]x\}+@m<hhd=M{>#(].**... (]x\}O@)vX@0J +q +wZpBa0qaOUY|cUqO>#(]x&}+L)#(]x\}b@)cX|vuunxn.xxx.x@)<cz[Uzx>#mOb\}+qZ@(]xOZ+pa#a]x\}+qb#(Qx\}wUp. *nQ +qM%bph#*0C+@)wO]zcvunx..*....xxxuuuvvvc#zvvx....*...*...nuuvczz@)kX*[=UXXzccx\zcczccccccvcvvvc\}@@)nX|[mw{>#q0*uoU. + \~(vqa$bMh(]x@MM@&#X|%=d{#W#8xqqwO0OLL[q/{zvn... + *..xxuvzzzz}+h)8X|LJJUYYXzzzccc)ccccvvvcvz]x@}+@)#@8x\MBM)%&|a=a&>*&bppwwZ0QX|@=/cx. ]x\}+@+ ...nvczzYUxZh+W)CLLLCLCJXuuczUUUUUYzcXzz>#(@@\}+@)hX|[=LQc.xxX + \)[w#8@WM@&M%88W&8$oaaa**h*#ddqpwZZmW@WCu.. (} =#; .*vcXXYJLJqdoMLLLLLQLLLY.*zJLCCLLCJJJYzCo@@@@@Z@ ZhUJx*u..nnn + @/ ,=#8*&%%BBB8&&&M&BWooohhkd#oddqppb*W@@@oU. {] \ ..nvcXUCCCJhdWp00000QQLLCJJJCCCLQ0QCQmd*$B%8%@@@L uxXWC*..xnvv + , \##M#&&WMMMMMM&8%&*#*oahh8dbqh#MuC@@%kmCu>x@/(}<.uXJ0ZOQ0OwoawMohkbwmmmmOOOOmwqddhpbwpohaa*o*h%@@J>x@ (*...nucc + : <8WM8$8WW&&WWMW%@WMM#ooh8#ph8p( >@%QYYzuXUvxUvcXJQOwbaaoahapqkho*ko*ooohh**o#adpWabqZwZ0dha#ho@@8#M {] ..ncczc + : Xz*W&8@@8&&&&&W8%WWWM##a*Bap)} #haLOQLddwOQUYUCLQQ00Omqh*a#M%8bpdhahhahhaahkkbd&WMMpZmOQmZmWaph&\)[n*.xucczXY + : : (}Ja8$$@$BB%888&WWMMMM#a%J{] )%QZOk#p*OJLQ00OOZmwqpddoWMMModkbbbbbbbddddddbdW##W*qqwmOQQ0mUxb} #nvcXYUJCL + :; : +XQXq%B@@@$$%88&&&WWWMo&n> ,<wqZh%ok#qwwwwwqpqpdbbbkbo*Mohahaahhhhhhkhkkhha8MMW8#bdqwZZQQCLk+X <0cJCLLQQQ + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + , , : ,, , , X;\ :x / , < , , , ,  +, , , , , ,, = ] { : # W : , , , , ,  +, , ] \) , , , X x , ) x : , ) / } / , , ,  + , > # ,+ # =# , ; :} , , , ,} | ,, , , ,  + , x , , , ) >x } , # : ) , , ,, ,  + , , \ , , , ,} #M| ]*X ) : ,}< , , , ,  + W, <= , , { +XW\.[ x+/ : ]+. )[ , : , ,  + M /, < \ , , ) /(} M {] > (: +: )[: ; , , , ,  + M , X <, ,, , (} M|{Y+X \+ @/( = , )[ }J=; ; XW\: , , ,  + , @ , , :| W\)[+JJ/( < M|{]+X, @/(}<=# +n: #M; , ,  + } , M , ; ) >x@/(. ++ |Zn+ W * .x(}< M|..+ ; xUn( +M| >x ;; :  + } ] ,W : [> ; = M| + >*@/ }< # |{ \ >:@ (}< #MLn] : [>x@ M|; ; [>  + {]+XW | = {>#( \ ) ;]x\}+@x#(] + ) + =/, x\}+@)<<= M|  + [> (} = | }+ [=/{>#( }+@)#( x\.+ )#(]+ @+ :/{># @ W\ x +< + ;<W@, (] \}+@)#(] \; ). ]x\}+n): ]x\}+@).X| ,>#(]x\}+@) : /{>:(]x{: XW\) +,:}ZXuMO{Yx\ +@ [ {>#(]xuc+@ .*uuzunvn. x\Y+ )#(]x\}+@)# ] : :|[=;:>#Y> (}< +, +0hQk&OU(]x\,+@)< =/{>XL]x\ .*..|*=/ *(]xUnuJ)#(]x\}+@)#(]x\}+@) :|[=/{>#(: @)# ,+X + /(bqbbQZ#(]x\ ,, | =0{>#. }+@)#(]x @): \}+@)YX =/z) ,  +#M _hwwmQOw#(]x\,+ X|[=/*...*....* |[c/v>#(]x\n.vx< |[ / >#(]x\}+@)#(]x )LX.*....*...**.@.#.+ }+@)LvuXc[=d{>#( \}+@.x.nnnxnx..*...vLL#UnuCuu@)< ..=/a>L(]x\}+@)bX|k=.u>#( c\.+@)<X|[;;{X#;]q\}; )@#(  +kLQhdn>YYUUXX|[%/{> (]x\}cuuvuvuvvuux..x\O+Ym#(]zCUvX)#(x.uc+@). +[=X{+#(]x; |Y X ; +kh#pXCQCLL+@qkw0q=/ >#(vx\}+@)#(Ld0L+@) ..cu}+@) X|z=/{>#+ \[> @c(; +aWZLLmmLCQpbm@)LOZJ0O0Q)mXmZmw0>#wCxXLL0m0LLYvzn.#(]x\Y+@)<x|[=/QQ#(]0dq#@nnX|[+ {>#*.xx.+@)<m|[=/{ #(]= |C]  +#ZQQa8wCdkmx\QQ@)<$|[=wqOL(]x\}aoMahwdOq{>#UJU\}+@)#(.xb}+@w#O JXJ +CLOW%bpahO#0Oxmkp@)####ah+@)#(zzccczccvuun/{>v(]vx}+@Q<q|[=0C>Op]x\...*. ** *(]x\}+@)0X|[X/OC v0m +00*%bZb*#dmm#bhx\ZZ@@#(]x\b+@k#(...*....*....*.#(]x\%+JLZZO0000Q)wp|LLLJUJUXXzzzczzzzzcccccv]d\}a@nnx|[JJ{xxxx....*....*..{>#(]h\ZO@)<q|Q *(ww= +]Z#Zk#qOdk|*b/d>b(]@\}@M*hX|[wqwZmZZZ\0+qk<0QLLLLLLCJUY}XXzzzzXzzzc#b]qa}ccvvX|Xvnuuunnunnxxnxxxx=/8>#b]x\Z+@)q0.*mox* + @/qdUcQWwhX|[=%*oo&#x\$+a#Wh|[dpqqqqwm\ph@Q00QQQLLLLLLCCCUYYYYXzXz{k#akxzczcccvcvcvuvuvccuvvvvvv|[@/{>#(OO\}+bw*c&J.Y + : ]+Q \aZB)dh%%*o{%#(*&\d+&W&X|bdppqqqwx8}O000OO000QLLQLLLLCJCCUCU=a{##(XXYXXXXzcczcu{zzcccccccc$(]k\#W@%aXbbddpq#(@x\wmZOOOOO000000QQQQLLLLQ|o=Wp>CCCCUUUYYYXzXzXzczzccczz@)@@|[=/M>qqqmOJnvvUX + ; ]+jm8B8$$M%%8&W&$8hhk*Wo*Wkbbbbddd&@%pwqwmmZZOO0OOOOOOOO0000QOhp&pLQQLLLLCLLLCCLCCJUYUUXXzXZ%@@@@axm&q0UJOJczzvv + ;; @ (*boM&8&W#W##%%*oohhhk*Mdkbbdaa&@@@MdwwwwwZZOOOZO0000OOOZ0Zak#Z000000Q00QQLLLCLCLQCCQZqW@$$B@@@o0%wkkLvzzzzzz + : |*~okW8####M##W8B8###oahh8bbbb*MM&@@@@&*kbpdbbpddpdqqqmmZZZm#kh8kdqwO00OOO000OZwwqppqmho*#**#*%@@WQWQw*pzzzzzzz + : :>{zW*%B&MWWWWW&8@WM##*oa8*ddM8t]qW@Bbpddpb#hdkddppbko##aoa*#wqbh#Mbkkbbdpwmbkadwd*qwmwdOpaoWMo$@@pwWXwOYUXXUJU + , , M)q#W$@8WWWWWW&%MWM*#oa*%h#O< @/$mqppwaohhoakbbbbdppkkhohbao&*dpd**oooahhakkpqk8M*bmmZOwqw#&#&@#X#LJCCJJUJCJ + , , [C%MWB@@BB88&WWWWMM#*aa@J}< M,{dwwqqh8oWdmZmmmwwmmwwmwd*##*M*pdddddpddddpqqqqd&*#MkmwZ0OO0bZL)z>nLcJJCLCLCC +, ,#O&&&B@@@$B8&WWWWWMo*CX] , >xUJqb&akMqwmmZmmmwwqqpppb#MMabbbkkbkbkbbbbbbbbk&**M#kqmOZ00LQ}<O#M|{CJCCLQQQ + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +,/ ,, , , , , ] > @ : [ x , , , , , , ,,  + , , ,, , , , , , , @/ } = | XW\ < # \ < , , , , ,  +[ # , , , , , , , ] X ; > + # : :( #M + , , , ,  + ) , , W , ,, , , ; :=#M + : , , , ;)[ x, , , , , ,  + =, , \ ( , , , ,, # { + W.) x : = M , ,: : , ,  + , ( + , , , , W\)[ x@ (}< + > : M + \ , , : ,, , , + , / , : , }<=#: ] :W /( = ; W\ >x@ (+ : , : : ,  + { \ , , XQ\n[> : }<=# | ] X \ >x@/ ;#zx + *[> / , : , @  + , ( , : , @/0q<= M {]xXx\)[;x / }<=#M|{ ::\) +x }<= ]+ , : ,  + , | # \)[>x+ =#M. ]CdY\,[.n vxQk=#M ]ULQnxnxx /(n.=# ]+ /( , ,  + , ) x@/(ux ..: +XW. * /(Y< #M+{ +X*.u[ x@x(}<=#M ]nXW +@/(} +X* : , #  + W )[> / }<=#Mz.* . + x@* .* .;+XW : x./ }< #M . + >U@/ ; ]+XW\ : /(}< M| :  + _}<= M| ](]x ]x\* @)#.] }+@)#(]x\}+@)#(:x\}+@)< * /{+# :}+ {> : }  + W\;[> ># ]x + {>#(n.\} + |*=/{>#(]x\} #(]x\}+@)<.|[=/{>#(Zx;}+@)< / # ]x\}  + |[=/{Y#(] + +@)# ; }+@.<.|Z=z{>#(]x\}+n)#+]x +@) }+@); ; >x@k + ]+Xvvn[z/{, x )#(]x..*@)# ]x\c.@)vXd[=/{>#(vxz}+@)# :}+@;;X : (] \}+@)#n.x..+@ <W|[=/{>#(]x\}+@)#( x\}+ : XW )[> + M|{]pp).*]x\}*@)<YxJ=/{x#.]x\}+@)#(Jx\}+@: X|[=/{> (]x\}: (}L=  + W xpZm@)#(]0\}*....| {* ]x.u+@)#( x\}+@)#(]x\z+@)Q(]x....*....* .#(uxux* )#(]x +@)#(] ; /Ck +YX~+cJQYXv]x\n+@)xnuunnx...*...n{Oc(Xvc.cu0<.|[=/ ; ] \} . L(] \X+@)0X /{># ; + +QawhmLXzzXXXzx\a+@) (]x\}++ hhun ++@)X*u[=/{c# ]U\ +p)< [=o{ ; x: +cdobLYJCCCJ>#wkp\}+@)<Y|zzccccvuuvvunn<0|[0/{>#(]x\}+@) + /{> \} @CCXCZ=/w>#(]x +@..vU[=/{ #L] \}+@ + |[=+} M| +OWmCQwdOLQOpbm#(]x\}d@)<CJJUU{>#(]x\}+@)hL|[=/CCCLUccu @)<+| =/ ]x\}+@)UX|w=d{nz \}+@)cvu[=/{L#(]x\} + <.|+OX ;n  +CZ0Zo%bZpabm=/000($x\qZpmQZZ0Zp{>bdqpQC+@YYJCYUUczu.] \ ++)#(]x\z+XQ0OZ*=/{># + +@..nu[=*{>#(.x*}+@)< uX(uL  +YOZ&8hbo#p<wqw=dbd##]kbZ+@) + ; |[=/{ (]xvY+@)wX|[ + *}+@)<a|[=/{w#(Yx\}+@ |0QwX. +xZ8Wdmk#Mhpdpkoaq/{>$(]mm}+MM#ak[=/{>#(ax\vvuvunnx.*. ]x\}+@)< |[=/{0#(]xvUQ@)< ** *....*@)#U]h\} UqL  + ~#kp*W*ddd+oobpddd/B$#(qk*}+@)wm]Yzzvuuunnx...*. + #w]x .Qb|  + <>?*#qwakxMa+@)dX|$=BB#b(obdqwmmZO000/mp#CUUXcccvvuunx....* + )JX|m=..*#(]X....*...xx...xxnn\}8@h<ww[=/km#(.ch0 >O + : M|{d#Mba]x\}WahM$|[$##o#(]ddqpwwmZZ[pk{QQLCUUYzccvvuunxx*...*..+0)<q|.*...#xxxxxunuunuuuuuuuu]x%}h@Q<p|[=k{>*b#x.Lw +, \)>>x#o#&#k]BB##@%@B]x\&%@)%Xa[*8&8h(bdbdddp<%|mZO000QLQQLJU)XXzcvvuvvv]q\bk@vuuuvvvvvcccccczzXzcczXY{>#@]MMakM)wh|[cvxJpQw + )|~W@&W@>#&88M}B%)oao8=&8>hkkbdd+@@#o*8B&BM***oooaooaaha*W&MM&#khkbbbkbbbdbbbkko8MW8obkbbbddhdwdoQ-Wdqpqppppq + , :x .1(o$@$BB%888&&&WMW#8h\ Q r&MB8&BMMMMMM########*#888W*oooooaahkdhhaaaa*%WM88#hhhkkkdanCn@/ )bpdddddd + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + , = , + [> } =# : | , , , ,, ,  + , \ , , + :: W > @ , , , , , ,  + , M, , / < # :{ XW\) = M , := , , , , ,  + = M , , , + +> + :M ; :} :M ]: , , : , ,  + x , ,, , xv <= M| +X \ , ] : @ ,, , : , ,  + ,M } , , M {c+XW\x[ x ; M| +, , ,, , ,  + X, [ { , , \.[ x*/ }*= x: M| ++ \n[> : , , , ,, #  + >x , ,, { W\), , ) , <c#M ] XW ( #+| \) :xn +< # | , , , , ,  + = , , x@ ,, |{ , XWzu[ + }<=# {++ W ) x@/ : Mo{+ +[> /( {]+ , ,  + , , , , ) , \ , /(#z=# |{ +XWc)[: @ }<=#M|{] X+\Y[:x }<= , ( =#M  + , , , , ( X , @ : M|{*+oqz)[>z.*YXhq#M| ]JUqUvuxx ;(}Z=# +X #  + , , , |{ , = M+{ W\).** /uu<= M| ] XU 0[ x@x( <=#M| ]uUW ) ;@/(}< { , (  +\) , , , #( X|[= {>#(]x\}+@).. .*...#(Ox\}+@)<n|[=/{>#( x\}+@)#(] }+@)<: } ,X \)  ++<=# | + ,, / @)#(]x\}+@) @, , [ x\}+@. X| { #(]x\}+@)#(]x\}z@ + \}+ >#(]| ] Xc\ + / +=#M| , ,|[ {>#(]xU}+++ X|[=/{J#(]x\+ X|[c/U>#d]x\}+@)#(]Y\*+@ :X|[=/{># ] : # , , |[=/c>cX]x\}+@).*|[=/{U#(]x\ +@)<X|[c/{>#(]x\}+@0#(xx\ : zCm#Mc)u{># , )# *uzzYXcccn*=/Lux(]x\}Xv)zXc[=/{>#(]x\}+@)#( ; +@)# , }+@)Q0w[=.. *.].\x+@.* |[=JuL#(]X\vQ@)<x|[=/{>qaopO}M@)#(hx\ +@L# x\}+mZ#(]x +@)#(]x\}+@m x\..X)< =/{>#(] }+@) ; Wp)[ +; =10hqQcUX|[=c{>#(]x\Z+@un.x....*... \}z.)# ;\Q+@; uMU +]+XxhZLUXU@)#(Zx\vvvuuvunnx...*]xL}+YXnXzQ=/{>#...* +@)dLC[=/{>#(]d\}+@) |[=.{*.(]x\X+ )<X|[=/{ +]k\}; ;Xu +LrfJQJCLLLJ+@)%X|[=/{qC(zzzvvvvvvvvuu.u#O]xZzv@)Z(oxh#+@)Jm]xc}+@)#(c= +n{  +Wq0ZkdZOqhkmx\}+@)<k|b=O0000LC\}+@)<X|[awC>#ucLUZQYzYv|[=ccL#( x\C+@)dX|Zp/{h#k]nJ.. +Uz\)..x +wmwW8dpooq>mm]qbbW8)<ddpOQO>#(bbhhkdqQCCCYYCJJQLYCXnu..X|[=/v>#(]x\}+@0w0|wdd{##(]x\* .*|[=.{q#(]x\}+@n#(]x\}.* .nnzzcCx*(]0JQ+@)mZ|[=/{>..*. ..*....[=/h>a(]m\}c@)#(]xJ}+*)<vuuunx.*....* @)zJ]C\}+@)Jmm[=...*...**...*..[=/a>#m]x\0+p)<. JdL(+< +}M#b#Wopbba#[=ddd#B]$B*b@aoX|[=0QLLLCC\d+@cvvunxx....* + + /{L#Cmx*}+c)#(]d\}+QMY.cpq + {+L&$k&+h)<@MM=8*>MB]k#&ok)ppwZ0QQL#pmxYzvvun....+ ; ;; |C=Lq>..xnun+uvuvvvvvvvuvvuvvv@)@X|[=w{>#a]x\8p.XmpZ + : @)kM$\}+@&MX|$=/8##k]WM&+@dpwmmZ0{w#(CXzcvn...* :#(]x: CUXzvvn..* :/ ] +@)JXb[nuvcvvvcczzYYYYUUYUCJCCJx\@@@@#ccCLuU# + , >X#W%%$$B$%88&&$&ooa*Mo*MbbbdpqwZk@oJJJYzcu.*. :] ) ; nLUhzuvvczzXYYYUCCCCCCCCCLCCJm%@@@@@WkqOOpwCJJYXYLM + : ;-0M*WW&&WWMM#&%8MM#*ooh#*bbddddd#$@MZCUYcvu.. ; @/(} + ..CLkXvzcXUUJCCLCCJCCLLQ0CLwp#@$$B$@@@*oaqCLLLLCCLUZ +:: : ]&#%$WMWWWMWW8B8MW##*a#8hkbbhhoMB@@@WdOCXcu..** M {]+XW+ ..zwJ*0JCJJJJJCCQLL0mwpbbbdd#M##W&&8@@@hpWWZQQLCCLCLC +: : {t$#%@%&&&WWWWB$MMWWM##BaahaW#M*%8@B*kpqmLZmYzvnx.*.vXUXYCLk0c0wdapOqqqqqpkha*hdpMakpdbqh*M888@@@bq#wZZO0O000Q + : <|W$$$%888&&&%&&WMMMM#B&h*8#pC#M8@bZO000ppOQpLUYYYXXJL0OZZQZmdokO0qahkkhaaahkkdpW%M&hpddbhkMBWM%*qpwqmmmmmmZZ + : , r/zW@@@$$%88&&8&&WWMM8Bo*U(-W\ [acdwpma#bomOCJUYYXXXzYUJObhhh**Zwqwwqppppppdddda8MW&hbbdddpkbpb8)mppqppqqpqq + : : Xn/x =#CxkdkW#h#OO0QQQQLLQQ00O0mho*odpdpdbbbdbbbbbbkboB&W8%MhhkbbbbpWaW?kqpdddpppp + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + , @:( , x , , ,, , ,  + > ,, , { x , { + ;: } + , X, , , , ,, , + , , , x = , , XW , ]: W\ x , , [ , + , , , , ,, , @ ( ;=# ;{ W @ =# , } ,  + , , , , = M ,, , {.+ ; + =,M : ,}< M x  + + , , , , / , , + , x@/ ; M ,]+X : , : : [ @ =  + / , , , @ , , ( M {]+X \.[ < @ ; :| X  + ,, , , , , , [>xz/ }<= | + \)[>x@/  + , , ,, , , :}<=#M ]++W ( #M; ) ; @/ } + /  +} # , , , , , , , {] Wz)[ * }<= {++ W )[ /( :;MCL] X + >x , ] X > @ , + , , , , , ,, , [ /(qQ=# | +XW\)[, }<=#M|{] W\)q>*@ :<=# ; , , ,  +, , , , , , , , :(} M|{]+Owz) >. *XYbqnM| ]+zYZznvx@: cc#M +X (} ; + , ,  +, , , , , , , \ )_X =/{>#.*x\}+@)#.]x\}z@)#(]x\}+@)x , ,, , , < : #( x }+@ #..x\}+@)#(]x\.+@) (]x\} )#(] \} )<x. +..> *]x.}+@)#(]*\}+@: X|[=/{ ; \}+@ :[=/{ @) n=#  + *Y>x , : , \ #(]x\}+@)Xz]x0}+@)#(]x\}+@) X =/{>#(]x : : =/{># , ,(}<  +cucLwd[ : : /{>#(]xcz+@)#(Qx\}+@ X|[=u{>#b]x\}+@)QXw[=/{>#(]x\}.@) : =/{ # : :: ]x ; W +b0*8Lhq#M : : [=/{>#ucx\*..nvXccc/*>#L]x\}+@)<YX[*xu>#(]x\}+@)#q]x\} ; X|[ /{>: }+@) /  +8opaa0ZoJ[(]x : # *....xxX.u..{>#Jcx\}+Y)uL|[=/{>#($M#MbpO<$|[=/Uh#(] ; @)<Y|[=/ ]x }b@) X|[= ,=#M|*  +)*#kbdmQdq>#(]x :)#(mxvX+X)#(]x\}+@) (]x\ @) x|[= >#(]x\}+ #(] \: @)LX|..x*...*....*)<ccz=/{>#JYJz}+@)vC0QL}+@)CJ|0=/{>* x\}+@)#(zx\ @)# ]x }0@)vuuuuxnnn...*n+@C<XJXvXcz#(uxux.*)#(]x\}&@0<p|[=u >#(] \}+@)#(] ; +a)< XZv  +p(~CULLCUCX|*#/{>#(]x\}vvvvvvvvuvuuunX\m+@wYU|zcwXcYz]xn...x#(]*\pp@*<cX[ /{>X.cY\}+@.+XX[+/{>#+ \}+@) + (  +k0ZLLQCCwhw#L]xz}+@chm0x\}+C)wXYJX/{UC0Ox\}z@Xxnnn.}+k)#*]xm\;[z cv +mhBhwhopOmm}wbm#Q]x\}nC)#*]d\k+@) (]zxCJnC{ +o$*k*#bppqqhh}+@)#ha*#*kkmZZ0b=/UYU(]x\}+@)#(]x.** ..* . * #(px\}+q)<X|[k/ >#Oq0 n x +BMqd*Wadpdoh]qqq+W@&X|[=/#oab]x\}+@)Uzux0w+p)#..*....*...**..>#(]x\Z+@)p(dx%%+$8oh|ak/{>#(QCCCCC)bXCCJJY>zccccccvvvvvu=v{vc(mp\w+@v#(Cw\}+@ZpX.[=hz +ZWd +#b#hdk&kak=/{W#*WB\}$@h*Ma[=mZZO0QQLC+d0<CJJCJCUzXccccccvvvvvvvv>#p]pk}vvv#(wx\}k@)#8]x8a+@*&##[=mwmmZOQ\dw@CCCCCJUUYXXXzzzccccvcccz{d#poxccccvuXvvvvvvvvvvvvvvcvv|[@/{Z#(]x\a+@)<.XObdu* + >xm#8h%Bh<$$[=#8W#M%xbd+W)#W|pqwwZZ0]p\}LCCCJJUUUUYXYYXXYXzzzzcX=/d>M(zzzYzczccczXXzzXXXzzz+cX0oCJXcCbUmz...*.nvczUJCLLOda*oodwqwqqqpppdpdddbp#&#M8*kddppwpmwkmwwwwmmmmmZwU + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + , , , , , , , ,,  + , , , , , , X , , , , ,  +, , ,, , , , , ( : , + , { , , , ]  + , , , ,, , , :X \ [ : , x / , > , , , , @ |  + , , , , , , , , ( : #M : , ) = , , , , ,  + , , , , , , , ,, , + W ; x ; :| : , < :| X ,, , , , ,  + , , , , , , , , : ,:< }+=# |{ X , + ; >x / , , ,, , , |  + ,, , , , , , , , , :| ]zXW\)[> @ ; M|{] , , : ,, ) /  + , , :: , W\) , , , ,)[> @ ( <+# @ {+ X )v @/( , : , <  +: , : : , @ , , , }<=#M| +; \) } #M;{ \)[+ @z(; +. , , , ,  +; , : : , ,, , , ] \zv> + <=#M| ] X \: @/( : |*]+ +[>x , , , , , =  + : : : , \ , , ,, [> @/(}#v#M,{] XX\X[>; ;<=#M|{]+ W )m>+ , : , , ,  + ; : : ,/ \, X|[=/{>#(]x\}+@*#(]x\}+@)+* ; #(]x ,  + ;; ; : ,|[ ( x\}+@)#(]x\* @)#(]x\}+ )#(] \ +@)..* ...@)#(]x\}+@c*X|[=/ >#(]x : < + : ] \ |[=+ [> , +M* : , ,+ {># ] }+@)#(]x\}.@)#(] :}+ + :{ , , |[ =QM , + [ : , , \ #(]x\}c@)#(]xu}+@)#(:x\.+ x +< {M , , , x }+@)O(]x\}+@)#:]x\ ; X; #0 +pd\u[> , , (]w\}+nX. ]x\}L@)U(]x\}+@)#(]@\}+@).X| : >#( x\ : :[=/+;#(]x\}+@+ W\) +**0vX(M ) , {>a(]xX.+@ #(]xLp+@) ; =/{>#(]; )Q(] }+ /(  +kkh0Qqc[>x+@), =/{>#C]x\ + n(]x\}+woapO[&/{>#0]o\} ;# :\ M|*  +#..*. *#(]x\}+ X| /{> x\}+@C< ;=C{ ; \Ov .@  + |bXvcucZb]x\}+ :< |[=/...*...**...*.[=zzX#(]x\UXQXM(]xY0QL)+(Yx }L@ ;|[=/; <*c ; +v+YYJJJXck#((x\: @ <z|uuununx.xnn.xxvXmU=CJUXCQJ\}+@vvx.[=/{bZ0]x\}+@)<k|[=/{>X(]x\J+x)J(+xk} + #(]x\}+@)vuvvuvvvvvvuvvuYQ#mUY0CU@Xuxvz=/JLp(]x\}+@)#Xb%=/.>#(]xzncJ)+(]x++ @)#(]x\L+X)YXz[=/{>#(]v\OZ@w#(]QmwQ0)*b%Wp}W@)oX|[=.x.#(].\}Xv)#(+ }.@)#(]mmwL0O0QO[=/{>Q(]Z*m+@)<Zmwbm000Y]xCZm@)<X|0=/{k#(ddp}khd.(]x\}+@)<[U uC L +$oq*owwqwwhh|[=/{>aqZx\}+@)aoM##khppO]xZOm0ZmOOO0/J>#(]x\OC@)<XX[=/{pk(qhhpb@)#(]x }Z@mQnU kw +Mpa##bpppoh)ww|[@@{>#Zmx*MMookXw[=/{a#(CxC}+@)LCCJCCCCCCJCJJU{>#(]x\}X@pwXa[=/{>Zd]X\.x..xxx.x..x...x\@+@OZX|[mm{>#(]x( <QMM  +a8Mpd*p#hpxka+o$#X|8=oo##(]pwqwmmmZZ[a/O0QLLxCC+JCJJJJJJCUJJJJJ}dd)aX|z=/{>CYunnuuvunnuvunnnnn]x\}mw)*( uwhBC[ +qhkb8ooabb($W#}W#)<B|[=&M*h(pppppqwqX#[mmmZZZZO0QQLQCCCCJJJCCCCx\h+a)<YYYz/{z#vvuuuuvuvvuvvvvu#(]x\}w@)<h|[=B{>cmwQvoY +]xLd$h$#ba$B(#x%#+WW<h|oW/%>#ddpdppp)#b|qqwwwmmmmmmZZZOO0QLLL>C(]o\o*@UJJJJJYYYXXXzXzzzcczcccz{>@(]db}+mh>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +, , , , , , , , x /(} : ) ( , ,, , , , \ ,  + , : , , , , , ::\ + , , , ,, ,  + :: : : , , , ] \ ( < {:, < : / , , ,  + : : :: , , , :< | }: #M ] : , , ,  + : : : , , , , W );>x :( X > @ [ , , ,  + ; : : : ) < ,, , , }< ; : : :) @ <: , , , , , + ; : : : , , ,, +X [> @/ , } ; { ; ,, , , , +; : : , , , , @ (n<= M { +X ; >x@ , , x , , ,  +; :: , , @ , , , M|{]+*W ) > +, @/ *< M|{ : , ,, ,  + , , ,, | ) , , , \)[Yx@ <;#M \ x;; M| ;+vW + x ; , , , , , ,  + ( M , } , , , /(;<=#Yn{ + )[>x@ ;< # , +XW\ :+@8u+. *{] ) , , , , /( + { , ] , ,, , M ; \oJ>x /( <x#M|{] )[>x@/(} =+MXC x )[ #M : , ,  + [ =, , , , {>#(]x\ @)#(]x\.*u)qX|[=/{>#(Qzcv+@;#(]x\ )<  + : , @)#(]x\}+@)<.*[=/{>#(]x }+@)<L|[=/X>#(]x\}:@)#(]x\}+@)#( x\}+@)#(]x\}o@). [+ * \; @ <, ( x\}.{,  + + :: :>#(]x\}. + X|[=/{>#(n..*.@)#(]x\}+ ): ]x\}+@) + + ( :\ : , ># ]x\vx < +{ >, : [=/{>#(xX\}+@ +|.=/{ #(]x\}+@)#(] \}+@)vX|[=/{>#J]+\}+@)< |[ /{>#( : ) (]# <  +rx@ =, : # ++@)XX|[p/{>#(]x\}.@)*(] }+@)<:|[ : : \} @)< ; { # )[ (@/ +#x|{] X , , +@)#X|[C/{>#(]x\}.@) ]x\}c@)#C]m\}+@) : \}+@ < : :#(] +}+@)#(CU\}cc)#(]x\}+@)<p|[=/ ; (]x\}+@); =/{>#(]x\}+@ X|[= W.)  +aL)_ <:; X=, ># ]x\}0Z)<..*./{>#n]xx.n@)<0JZ=/{J#YOx\u+@)#YcxX}+ X|[ /{> ]x\} < | /+ ; +bhdXut-x[n|[= >#(]0\}+..*.|..*.>..]xcX+@u#(]x\}d@) X| {>#.]U\} )#(]. **...xxnnnn#(JXC}+@)<LC0L/{>#*]X\M+@)YZZO=/Y>#(mxq}+@)*..[=/{>#(]x\ +Y)#(]; +@*>. ;  +YJCCCUzb%f@)< |[ /Q>n.]x\.xnuuunuuz{w0(C0LULLQm(ax\}U.)<J|nX/{>#Y]x\L+ )aX| +/{>#+ \}=O..{  +QQ0QLmadJZ}+@)pLLxz}qQJ0Q|[YcuczU]L0p+@)8(CX\}+@)UzzQ=/{> (]J\++@) + [=/{># x \ .n @ +mZOZhaZQQ0x\}+@)dw|[YXz>#(]x\}zzz<Jd[Zd{>C(]x\}+@0qdO0=/{U#Y]x\Wk@BkXa#=*o>#(]nc}+@.#C]x\}+ + X|[=/{>#c(}Xc MZ +dmb*dZwmZq(]x\}+@qmq00ZOQ0#(]x\}+@)<b|[=/0pmh]O0O+@L0wq[=/U>CY]xk*+kbaX|M=M{LCx.*..+@).xnvc/{w#(]x\*+@)*....*.@)w(]Y\}+@) XZ[=/v0+dk<= +a#Mappqooqpdd#%@x\}mwqoMW**odd#(]xb}+@)#(CCJOZwppdb[=/{kwd]x\h+@)bX|..**.xxx....xx.X|@=/p>#(Zxh}+.)<h|[.+L0+ * +o&opdk#apd[d/%W#$Wok}aa)#bqx\x+@)$(aoW*+@ppdpppppp#odwwwwmmmZZZZOOO00QQLLLLCCXmo=b*>U(]x\QUx)<.xnnnnnuunuunv@)*Xqq=/{>b(]x\M+@)do$O|*  +Ub8Wa*kak%B##|%=/%*#(M&W#+ddppppqp{*a(pppqqwqwwqwmmZZZOOOO0000<o|[M/JJYX]xYcvvuuuvccvccczzcY}+@)#(%x\}+bmYoL>. + =La&8ka%@+@)88|#%/ah#8#&8}kbkbbdd=o#>dpppdppppdppppqqwwwmmmZZ@h*X&[=LJJCJYYYYXXYUUYYYUUUJUUx\@+@bkX|[*/{>#(]kdWpnnpmM + >> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + : , , , ,, , [: : ,  + : , , , , , x@ # \ x / } M ;+ , , , ,  + : , ) , ( , \ , , ;{]+X [ # | ] W , , , , ,  + : ,, , , , , x ;(} : +X : : + /, , , X , + : , , M, ] , , , #M| ;\ [ : < :: ; < M|, , , , ,  +, )[ ,M , , , )[ x /( <= |{ + , M :+ \ [ , , , , ,  +, } , [>x /( , , ,, }< #Y| ]+X ) ;/ }.+ ,, , , , ,  + { , , , , , +zW )+> / \ < +| ]+XW : , ,, , ,  + , , , , /v}<: M ;] ) x ( = ]+ )Q> * + , , ,, ,+  + , : , W {YuXW , /(} ; \)[> }LU# ; +XW\ x , , , , /  + x , ,, , \ [>xm/(} ; + XW : @/(}<n#M {;+k u) {]: , , , { +X  + #, , , , = )[ /(}<=. |dc+XW\ [>x@ ;< MCYU..*c) >xJ0L}; |{ @ : : , [ : ( : + ] W , , , , / \}+@ # ]x\}+@)#(]x\}+*) ]  #: { :  +>x@/ , , , , |[=/{>#(]x\} ;)#(*x.}+@) +} + | / # ) X~ /{\ [ ,  ++M~ ] , , + ) X|[=/ ;# ]x\}+@n< [=/{># ]x\}+@ [=/{> (.x\}+@  + ; |[ / , +@+x ,, /{> ]x\}+@)# .x\}+@).(]x\ +@) :/{>#(]x }+ ) +}zJq0| , | {>#(]x\}Y@)< |[=/{>#(Yx\}+@ ; |[=/ >#x]x\}+@)#(]x\}+ )< =/{>#(] : : X| /{>#(uY\}+@)#Ucx\}+@ X|n=/ *#(]x\}+@)#(]x\}+ ::[=/;> : }+@+ (]x + @ : X0\ +pdhOQO#M , X|[=/UXx*] vvvccuxvcx{>#Jxn\}+@v#(]x\}+@np(]x ) ]x\}+@*UnQx\x*@v#(]x0CX@m# \}+ )#(Mx\ +@0#(cx : |CJ* +LpbZUvL0|_x\}+@)<O|[*....*.. }+ #(Jvz}+@) |*=/{>#(]xc}+@)#( + }+@ X|[=/{>#(] }+@) ; [=/{>#(: >*  +ZLXuvvxUoJ(]x\}+m)<nx...*....*...@)zXcv=.{>#(nz.* @)nczv\.+@0LXO[=/{ + ]x\}+@)# ; \Q+@ |[=/{>( #Cn +XXUYYYzvOBb#(]xO}+uuuuunnunnxxxxc}mY)LXYxYYm>x(]x...* .X|0Z/{>#(]x\a+mmhX|Xc/{>#(*u\}+@z<Y|[=/{ + ]x\} #QZxzuuvvuuuuuuuuu(]w\}m0zXX|[=XnUQCYxu}+.u#(kx*q+W)ZZ]w\}+@)#Yvx\}L@ #(]x\} @)<0M|w0+Xv +qmkaqLQQCJX|[=/0J0YLQLCC@)z(mx\}+uU#dox&}Xv) * /{*xunxO} @)#m]x\C+@))%ux . +k#owwwZOwkpJL]xx}+@)#(Mx\}+@)xX|[=/{>0(]xu}+Wv v +*M#ppwpakm+O)ooooap+@)#(]x\}+c)uvuzYJ0LLZzxz}pZ)#p]xq}+Y)<h|[*/{>#(.x\U+ +Y +Mkqddaodwww}+@B#u]pZ}k@)nnxx....*....*/{>#(qx\}O@b#(]v +x +qd#po*pppb]x\8+@)0Z]x\k+@).X|[=/{>%k]. * . +k%aoadbpW&#oM&\}B@ook|[wqqwqwwqq}#@mmZZO00Q0QLLLLCJUJUUJJUU{>b(*x\zcz)<cXnuuuuuuuuunuunuu|[*/qwp(]xb}+@)&X|[=/{*0@.*.. +q&h$oka8$#*>&*]x%}+@%Ma|pdppppppxM}qqwwqwwmZmmZOOQQQLCLLCCCC/a>#(]UXXXXcvvvvuuvvuuvvuuuuvvX|[=/w>#(ho\}+@)#%]xb}MMW%X|dddddd(M*\dppddpqqqqwwwwmmmOOOO00Q[*/M>#LJJUUUzvkk]xJ}+dp<#|X.0kn.u +#8*&B8$BW%8&WM&@*hhkWWo8#bhkkkbbpM$ppddppdpdppddppppqqqqwwmmOaa*#0OQQLLCUXuuzYUUUJJJJJUCCUY*@@WohMohpZCczXCXuq%dcxp&vx +\&bo*MM&8&WMWMMBWo*o*M*#&aahhhhka%@Wddddddpddddddddddddpppppwbo*&qmmZO0QLLCLCCCCCJJCCLLCLq&@@@@%apmOZpOJUYzYXQ8bcYb8&U +}w#*MBW***####W88####**o&*aaaaa##$@@BMhkbkdbdbbdddddddddddddqd##WpqwwwmmmZOOO00Ommqqpwwo*B%&8&B@@ook0UJJJCCCCXp@0Uha&% +,X8*#W$8##M####&$W*####*&&***WMM@#$@@@$&#*oooooooooaoahakdbbhW#a&*o*adpppdppddkhhbaabkbohb*M&&W$@kbW#ZO0LLLLLLJdMCakpQ + /XoMM%@8MMMMWMW@&M####*&8##*%$8u{M@@8#MM#MM%W#W###*#WW&8W&&WMaho##MaoM**oaoM#o#adb8#obqdqdho#&%@$pb#qZOO0O0OOOLwwmOJC + ]Q*a8B@$%%&WW&&WWWWWM#M$#MBkf-- <8$o###*M8&W&8MMMM#MM#####WMW&8B&khooooaahhkbdddpM&W&apppqddaMd*MZpwwwwwmmmmmZ0OQQQL + @zQO8B@@@$8&W&&WW&&WMM$Wb]M| : W8M#M#M$B%B####*#**###***#&88&8Waaahhhhkhhhhkhhko8M&&obddpdqpqwoOqqqqwqqqqqqwwmmZOO + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + : : , , ,, : , : , , ,  + , , , = , , : ) : : ) / , ,, , , ,  + @/ , , , : <:: :+ | , , , ,, ,  +, , , , X ; ;; #M, , # ) , , , ,  +, ] W\ , , (} ; { + : : , : x@ (} , , , , ,W  + , ,, # { , > } XW\ [.x # ( ; | + , , , , , ,  + , , } /x} =#M ] ; :>x@/, , , , , , {]  + { , , <= M|,] XW; < |{ >x+ } = . ]+X ,, , , , ,  + + , , , W )n>x + # ;W [;x < ; n0X +.. : , W , ,< M  + ,@ = , , , }<CYM| ] \)[>x ;#M|{]+ , >m@+ ; M|{, , , ,,X )[  + , {] X ,, , {]+XWwC[> @ }uYwJ|{] ,W\xCzvu/ : #L* : : #M , , / : #  + , ,#M W >x ] \)[>x + }Cv#M {; X \0..x@/(LC=*.|c]: WmO[ + }<= W [>x , : { +  +}<= M ,< [=/{>#(]x\} ) [=v{>#( x\}+@)#(]x\}+@)#(]x\} )# ]x\} # + \ [ , +@)#* + @)<+ [ /{ #(]x\}+@)<x|x=/{># ]xU}+@ + = + ;: @)*..x + \ + +< # , }+@) | ]x\: #(]x\}+@ #(]x\}+@ + ; ]x , ,, =/{>#U]x x@/(  +|.++X \: , X| /{># ; ; <u|[=/{>; }+@ x|[u/{>#(]x\}.*) : \}+: #( #M|Uv  +CwXUd(}< ,, +@ < |[=x{>+(]x\}+@)<X|[=/{ ]x\ @)<n|[=/{>*.]J\}+@)$X|[X/ ># : \}+@)#(] ; )< |[ +{> ; Xx+ +=JZboUvCW , x\Y+@)<c|[=+ .xxxx. @)Xc|*=/{>#.. + @)*X|[=/{>#(]x\}$@)<a|[=/ : ]x\ @ : [=;{>#(]x\}+@)#(]x\}+ # x\ +@)*X [: XWL)[ +( <pqqOLmO[=/{># ]C\}+ * |[=/{>#(]x.}+@.<U|[./{>#(]x\ +@)#(]xQ}m@) X|[ .x# ux\}+@) ;]x\}+@.Q(]x..*....* *#(xx\}+@)*n..=/{>#( }+@)< xnv/{>#O]xO}+ + [=/{>#*]x\}+U) |[U/{; ]x\}+@) *X  +L{/vnuvvnYa....*....*...*/{C#(vn..*.)#(]x*} @)< |[=/{>#(wx\}* ) X|[=/{>#(Yx\U+@; X|[= (]x\** xmn  +vCUYXYzcXU+8h (]nnu+@)a(.n\}+ z<.|[=/{zv(]x\} <b|[ +>#(]x\ #*n{  +cQCCJJCwbkw}BB)pX|cvcvvvvuvvunn)<Q|[LC{c#(]x\.+.nn*|[=/; #.]x00+@)wXpd=a{>#(]x\}+n.vX| =/X>#(dx @)wX|[ /.>#(c WCb[>  +O#OQmpkpQJ]x\@+@)#(]x\}+@qQ0|[=/{>#(]x.}+.*xn|[= >*(]xpmm@wkXb[=/{un..x\} @x.X|[z/ >#(] }+@).X|[./{>#/QO< #  +OkpoaqOQQL#(b$M}+wO0ZO0O/{>#(Qx\}+@)<cYLO0LLJczu.}+@)<v|[=/n>#(]Q0O+@)kbM[=u{>* \} # +x\.+@Q#(**.vuzzXY|*=/{U#(]00pqp)oX|[=*. * @)hX|[=.{.#(]x\}+@)<Lz[=hx }< +0WModpqboap/w>#@]xZ}+#M##*b=/{>#p]x\}+@)vXu[x...*.]x\uc@vnX|[0LO>#(]Q\}p@)<..*....*.. *}+@)d(].\}p@)o(UUYYXzzccvuvunuxxxx\}+@.#(]pw}+@.x....*....*.\}M@)wX|[C/p>#.]xk}+@)<L *@/ +LdoMboodddbd|[8/@%oaax\wwwwZZO00/k>LLCCUUYYXzzvcccvvvvuuuvu@QwXdq=uvu#(CYuuuvuuuuunnnnn.nx\$+@Z#Xvvvuvvvvvvvuuuuuu]x\Zb@)#(]xp}odW...  +0%MW$hk#B$Ma@M#dax.Zkc... ++Qa%@Mo@Bhx\M+@)8X|[=&88#(bbbddd)o&|qqqqwwqZmOQQ0QQQQQCCLLLC]h\*o@CJCJJJJJJUUUUUUUUUYUYUUU{>@(]pb}+@#M@*#*#*W8&W%8WMMWMMMW88&&WMMW%8*aa#WM#*#MM*oohda$8W#bpddkka&BW&@kqdqqqwqmwwwmZmZQQL + : \aB8$@@@@$%%&8&&&&&WM%$w] } #M%##M#&@$$BW#####*##*oo*#W8%$@$#aahhaahaahhhhhha&&W8#kbdddddkbLqWqqqpppqqqqqqqqwwZ0 + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + , ,, , , , : : , , ,  + , , , \ [ , } : : \: , , , , , ,  +, , , , M { \ : , : , ,, , , , , ,  + , , {;; ; ; : : , : ], , ,, , , ,  + X , , , , x < :: : , , ; W , , , , ,, ,  + , , ,, , , } #M + W , ; ( , , , , , XW\ [>  + , , , ,, +XW\) , , ; ; +XW, , ,# , : @  + , , < @/*} : , : x , X > @/(} ,| > : + [, + : : ( {]vXW; ;/( : : [> ; <Y. + W = , : / =, +: : |{ : [>x0C(} :|{]+XW : /(}<=#M: Xn ; (} X, ,, , : W  +@/ <= , , x \)[ : <= x0Q+X * .YQwC}<= M|zJCXcx) @zU + @, , ,X ): (  + ] \ , ,, ,| >x@/(} :{]+* >uv/ :< |uUuvW )zQc *< |Zc+ ; >x@ { : , / ]  + > @ <, , , # + #(]vzu+@) ;]x\ *@) x\} @)< | / x@ + M;{ W , , )#. x\}+@)#xnx\}+@)#(] }+@)x ( , , \}+@).*nx\}+@)#(]x\...)< ;/{>.cux\}+@ ;[=/**...xc}+@)#(]x\}+n) : [=/{>#( x\}+ :#: x\+ @) ; . + + : Wxm[ x ) =/{>#xxx.}+@)uYcx\}+@+#(]xX}+@) [=/{>#( \}+@)<; {> ( + +:; x ;W +, (}wc#M|;@ X|[0c{nn.]x ...nvuunx.{>Xzux\}+@uunu. .{UY(]x\}+@)#q]x\; # x\: >cv/  + +LL\)[\ :**...*..)<*..=/{vzzUx\.x.u#(&ahpm0)<@|[=/b>#(;; @)v.|[= {># x\x+@ X| =/ ] #M|{  + [ @OOQ<= \}+@)<Qz.=.* (]x\}+@)<..*=/{>#Uzcn}+@) X =JQ>#(]x\}+@)#(]x *...nX|[=/Y>#(]x.}+; X|Y=/{># +[  +<=#~|Uzuuv#(]x\}+Lz#xux + #uYUc}+@)ZX0[=/ ]x\}+@v#h]xCU+nnnx...*....*.x}Cc)zcvnucn>#(]x** *X|Q=u{>#(]x\}d@)pX|*x.{*.(]x\}+Y)#n]x\ +@)#(]xkdb#)UXx =*ucnu]x\}Y.)<c|[ {>Z(] + @)#(zzvvvvuuuvvuuuzLC]CX}n@)JJUY\}+@)#+ \}+  *x.\}+Y.< +[=u{n#(]*.}c@vmx @  +WaboobmOOQ@Owo$[=wmOZZOmm}+@mZOL[OOUXYYUCJYcu.. + /{># ]x\ @)#(Xzc}wU= +|  +dd*WoqmwwpkkddaMaqZ/{>#boMM#hdpwm|[XYXc#(]x\}+@) |[ {> + x.cUU).*...*....*.[=p{>U0]xc}+Z)#(c * =  +MobkbbaMab(dp\}B@)<h*okb{>#(QLC}+qQUYcvuuux...*\} @)uC]LL}+@)<mm[=xxx.x.x....*.X|[k/{m#(uJ\q+@)<Ld[=/{>C.**.W  +nko##a*hbbh#(*B%B@W#oXp[wmwwmZQxOpZ@JUzccvun.*.. + @) + .vC#0Qxxxn@)UXvuuuuuuuuuunx.)#(pd\}n@)bX|[=%hv*..(} + {#&#MokaM8##&$]x@%M*)<dpppqqwwZwdp}CCJUXzvuuun...* * ...[zL{wm(uuuv+@zcXuuvuvuuvuuuuuu)<h|[d/{>#kpx\}+d)#ccc\czXzzzXzzzzzzczcczz@phXmp=/{do(]x*}+@dhXcQmY.*@ +=#M|@BM%@&X|8BM{88(]x&$&*kdddddd{o*pwmZ0QLCCUYYzccvuuuuuvuv)<wdhq/YXYYUUUUJUJJUJUUUUJUUUUU}+%) @/(}kbk*#**akbbbbbdddppbbkao***kpqppddddddpqpppdh*ookpqqwwqqkkqpohUn0ZmmZmmmZZZZZ0O0 + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +, , , , , @, , , , , ,  + : : , , ) , , ,  + : ] , , , , , ,  + : , , ,,@ : , , , , , ,  + : , , x , {]+XW ;; ; : : , , [ , ,, , ,  + : ,, , | , :@/ + : :: , , , : } , , , ,, , + : , , ,,> , , , * ; ; , , , , , +: , , , M , , + ; , , ;+ : [> , , , ,  +: : , , , ,, , + ; , : : ; ; #M| , , , [>x  + : , , , , , =# ,: W\x[ ; =# ; : ,/ ; .* ;[> , , ,  + : , , , , )[: @/(cJX#;; XW\)[; : =#M|{] : .* : ,, ,  +(} : ,, X , (}<=# *.cYc) *uYCJvM| :+Xvvvvx ; u* ;X + , :;}<= + X : , ,, > X|[=/{ #(]* . * X|X=/{># x\XUz)#(] \}+U) X|; /{>#(]x\ #(, ;  + ( : , , / (]x\}+@)< ; / * + @)#(]x\}++ <Xz[=/{>#(]x*}+ + +{>#(: \}+ #( : , +M| + , , , |[=/{># ; ++ [=/{>#(]x\}+@)nx|[=/{>#(]x\} .vxX|[=/{># +x\} + ++ ;  , , @)+ \}+.XvX|[=/{>#(]x\.n@)# *}+@uzc.[=/ ]...nXUUX|[=/ +#(]vu}+@) :] +@)#( ; ): [* ;#  +.XCUn> ,, , (]xYcx..* *.xnnnx..*nvcvn[ / *vvv.*}+JLOw|[=*xucc]x\}ZXvvz|[ / ;#(]x\ + : |[=/{ #; ; ) + ;+.. +/Um0x : ,{>#Jzzc.*@ *....*#...\}.ucXXu.=xvun(]x\}Y0p#X|[=/{>#(]k\}+L)#* \};@)< ; +>#( ; +@+ ; .. +{]COU\), , =/{czXn.\ *#*..\}+.vXXzvx/{>#(]xz}Z@8#bpwOO{8#(]x00+@) X+ .xn.(]; }+.*#; \} : .. +>xcZOC<=# @) |[nvcu#(....*....* ..xvvvnx\}+uvvvu.=/{>#(]Y0Z+@)<QL0m/{>#LmU\}+ + [= ..*+ *.@)<+ = ; # .x\} ; .* +#uLCXvvn\)}+@ #UUx + * +*UYvvvuuX0x\}+@)YXvuunuunnnxxx.xncJCCJCUzuunvcvvvccun**..x#Q0U\}+@)x.* )xu +XXzXXXXJLmh]x\}OCz#(]x\uzUJUzu[=.n>LOCC\}+@)<ahaowY>#( .vvcv.X|.u*{ n.] }uXn* nz. +QQLLCQZmZ0>m(]#pQ+YXYYXY=/{>#(]x\LOOC#mqqqpdbkhZUun..**(]x\}+ .u.|[=/{ ]...nx)xn]xucc@XYvzCUv  +aa#*bpwpddbp[=h*a#(Zphooahdm|[=/LO0U]x\vvvuuuux...*...xunnnxnU000J{XJO0mq}+@)..*.. .* xxJZ@YUzunx/YXx(nUZZCc)czv  +ho#addbkkbppq|*88{>pkakd}+@)<LLC=O0CXXXcvvvuun....*..#(].\}*vCQ00J=/{>QZZUn....*...*....*]XOpO0U<uzC0Cv>#UZQ\}+XX. .+ +*ohhkhahkdd@)*W$B8#oh#(qwZZOO0LLQOOQJYzzcvvuux...*....*....*vJQ0OC|uu/XJJcuuvuuunuuuxxnnn#(0bp0QX)Y0pQ=/{CZL]x\bmc..** +(m###*akkooo*MWMX&&#ohb#pqqmmZOQ0wm0LJUXXcvvux..*. *....*.vUQOOC<vvv=vzcuvuvvvvvvuvuuvuu>Qpdxw0+@LpmU[=mmJ#(]obQv.x  +]+z*M#oa#88MMM#####o*##obddppwmO@ddw|LJJXzvvu...* #dqx\qbO)L0QQwkkwLCQLJ. + |xa%B%B$B8&88&&%&#ha#MWMMhddddpp*WoqQ0QJUzcv.*+ x < +...XQqdOJXYUJJCCJJJCLCCCLCLLLLCCCQkB@$&#***akwQCJJQ0OphpCCZqX + [>Zh#W8$$B%8&W%$8#oo#####*kbdddhW@%oq0QQLUzvn* M| +X+*..uY0pdZLJCCCLLLLQLQQQQLQLQLQLL0Zh8@@@@$M#ohbbmQLJCCCmhkOCpWO + =#MY*#MMMMMM##WBBMM#######ohhho#%@@$&hqZ0LJXcu..)[>x@/*..uXLZbbZLLLQQQQQ0000OOOZZZmmmqdaW$@@@@@@$MabdwOQQQLLLOdhdZd&m + )[dW&%M##MM#WB@%M#MM###M#o##MW%@@@$WabpwwZQJUXvnxnuvccXJ0mbkbdqqmZZZmZmwwqpddkkkhkhoMW8BBB@@@@@8##apZO00QQ0Qwkbdd*O + =#h%@B&####M8$B&######MM#WM#d0p88*bbbbkkkdwOQLCCQOZqqqdbdpdbhahkkhkkkhho**ohk***akhhao#W8B@@@@BM#*kqmZZmmZZZqdddbC + \)q%@@$B888%BB8&WWWW&8WMdCx}<=mWhbho#M#*hkpmZO00OZwpbkha**#*kkko****o***oahaM&8W#akbko*M&B$$@BqCOdpppqpppqqpddqpJ + }<=nk#MM*oahahahhkbbkakC|{] ,W\mqqdkhhbqwZ0O0QLQLLQ0Zmpbbkkpwmwmmwwmmwmmwmwpbkahkbqwmwwqpddpk0(}<LZZmZZZmZZZOOOZY + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + , ,: : : , , , ,  + , : ,# , : , , , : ,  + : : , , , ,, , : , , : > : ,  + : : , , , , , ,: : , : ; : : , , , , + : : , , , , , , : :: : : ; , , : \ ,, , , , +,: ; , , , , , : : : :: < + { : ; : , , , , ,  +, : ,, , , , : : , , { : :: ; : , , , , ,,  + : , , : , , , [ @ ( : , : : : ( , , , /  + : , , ) ,, : , , , } |{]+ ; x@ : : , }.; ; >x ,  + , , : , : ,, , , { )[>v@/ : M|{] : @/(}<= ] +; : { /  + , : : , , , , ,) (}<= nY{; + x@/ } #M|x*. W\, x.* : @  + ,, , : , , , [ @ M|{]+++ x>x (+ + +X,\nn + ; #Mu{ ; [> [ , + , , ,, , , \}+ =/{>#(]x + X|[ /{;#(]x @)#(]x\.+@ X| {>#(], )  +, , , , x\ , , >#( }+@)#(]x\}+@ *|[=/{>#( x\} + + ; \ ,  +, , , , , :: = >#(]x ; |[= > (]x * @ X|[=/{>#(]x\} )+ ]x\; + : # ,  + , , , , , )#(]x\}+@nXX|[=/{.#(]x\}+@JzL|[=/{..unx\} @) X * /{>: ]x\} :: : ]x ,  + , , , , , (]x\}+Xc.X|*..xuuuun.*+@XcX|[.*{> +x\cJU)<8|[=/{>#(]x\} )#(]x\}+: : :: :  + , , , : >#(QUQY.@..*.x.*..#.x..}+cXUUY[=/ *.x.\zX@)%abdmQL>8%]x .x@) + /{>c(]x\} : : : : + , , , , :: =/{z#LCu\..*..X|[= >#(]x\nJY)XX| =/{.#(]xXQ+@)#(Yx\ )+ |[=vuuY(]x ; : : : + , : , #(, : |[=/JJ#(].*....*..[=*.>UUXv\}+JY..*[X.{>#(]0q}+cu<QJ[=/{>O(]x\}+ )cU]x\}+@vvX|[=w{Z#(]x\}+X)QL|[=vX>#; ; ; ;  + : ,X > : :@)<LYcccvvcvuun}+@LCX|[=/Y0OOZU\}+0U#( \}+@)#(]x\}+@)O0Y[Xc{+ + ; ;  + ,, , ) / , \}+q)JYJZL}Q@)kkb0=/..#(]x\aabqdhpko/{Y#(]x\}+@)CXY[=/ + ++ +  + , , + = (]xqZC@YYYUUY/{>#m0xLQ+@0ppw0z/{>#(OC\qhkbbX|[=/{UCOdbbppd)<kb[=XJYc(]x\}+@)QX|[= + + +  + , , } {>#(]xZZOQL0Q0[=kd>#(LmwQ+Z)<UXvun{>#0wdqqdbk#(wqw}phh#*|[=/XXz(]x\}+@q#dmx\}+mqpoWh=qpwQ(LwpwZ0C#q]xbahhkwY|[LZO0#QZqbdp@)<v|[LJ{>#ucc\}+a)phbx\}+@zcYOmmwL>#O]x\}+@czYQOpaqCuvcx\}k@)<..* . * * +, , , : } )#(]c\cc@Umm|dO/{O#(]x\}+@)XC]Lkh+@)*....*....*. +, ,, , :(] }+@)hhpk&&+@) (]x0}+@akX|*MMoh#o%&#MWW*kw|[=mwqm(]x\88*akX|JJJCCJUJU\OpdabX0[=CQ0OZOL\}+@v#qwx##+@#&&oh=dbaWW*x\**h)L0dk\}+C0CX|pq/{>##]x\c+@x..*... + ; : #(]xOO00O000000Q0QZba#a+p*hX|[=/{>#OmZOJJQOwkh[=/{>WaqOQLLQOZQJY + ; , :\Oadbbo&%&B$8W#hkkkbhh*WW#**o*M&B@$MhdpqqqqqqqwwwwmmmwmmmZZmboM*qwbbbkbmQJJYXXJQLJzzULZbpLzJmpZCUYzzJd##* + ; , , }<Qhk#%@@@BWM#ooaao#MWW8%&M##W8$@@$#kbbbbdddddppppppqqqqqqwqbaW#ddabmmqkhbmCJCJJ0qqLXzXLbkQzCqkbdbwCzcJZq + : ,, , WY#B@$B8WM#**#M&88&WMM*oao**M$@@@@B&ohkkbbbbkkkkkbdddppdpda#WWhdbhhbmOwdpO0Q000mhaq0JXUqhZJ0mCXQwqqOQLQ +: , , / }q%8WMMMM#M##MW&M**ooooaho8%ZU#@@@BWM#oo##**oo**o*##*oao#W*h*MMMah##kwZZmpdwZZZphahdmCUOOYzUXzccXULLLC + , , , +U&WWMMMWWWMMMM###*#MMW&BWm@/(}M@#hkhh*MWWMMM***###WWWWWWM**#WMhbko##**okkhakqmOOZqdkkmJzzccczcczccccc + , , , @/qqoW&WWWWWWWWWMM#MW&8av#M +Xo#kaa*W88WM#**ooooooooaa#WWWWWMkbkbbdk#&&WW#*ohkpm0QQwdwOOUcuvuuvvcccz + , : : {]+XWJaWWWWWWWWWMMMWbnX /(h*a*M%$B8M******ooooooao#WWWW#hkkkkkbbka*W8Woaohkbpdhad0Jzn.*x.xuvzzz + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + :: : , , , , : , : | , ,, ,  + : : ,, , , : : , : [ , >x / ,  + : : , , , : , , , :#M|{: , X , ,  + : : : , :: , , , , ; ; ; @ ,  +, : : , , :(}<=# ,, , , <=#M : , : ,} { \ , M ,  + : : , , :{ [ , , |{ [ : / : X = ,  + :: : , , :> # , ) =#: : ; (}< ,, ,  + : : ,, , , { X ) : X , : : : ; W\) # , ,  + , : , ,, , \ > / = , @/(} ; ]+ : , : \. ; +<= ) , ,  + , , , , , < M :] W, @ M|{c+X : x@/(}<: ,+XW\)[ ::( ; : )[ ,  + , , , , , , , ) :x , =# XW\) +nX/(: *.n.XW\ >x@x.* : ]n ; : : |{ ,  + , , , , , = |{]+ x;: + |.]+ + ; =#nx + \: >xv/ ;M ; ,: x@/ , ,  + ,, , , , , , X + >#(]x\} @)+(]x\}+  + ,X| :{>#(: x  + , , ,, , ,{># , \ @)#(]x\}:@)< |[ >#(]x\}+@)< + + x\}+@ X|[=/{> = +  + , , , , ,, ,# \}+@ +..[=;{>#(]x\}+@ #(]x\}+@)#(]x\ ; )#(]x\ @)#(]x +@)..|[=/{>#( +; +@) , : < |[ /{>#(zx\}.@)#( \}+@ .X*vzzC>#(]*..un)# +\..@) :  + : ; { {, : + )#(]x....*.Xcz=/&>#(]x\}+@)# :\}+@+ X|[+ {>#(]xx}+ : ; + ; ;: : }+@)0JYUCJCJzvXQJXXJJXXJm0zu>#*...**@)<z|[=8obpZLL\8+@) (]v.} ;: :  +: : , ] \}c@)#(].uXUX)LQ|[zXvn.(]x\ @)XQ|[=/{>#(]x\}+YCJX|[=/{>#..*...@)< +=/{>#(.. ; :  + : , > ]x\}zUCJJYu./*..(]x\}JQ)#(] + @.#X] ;  + , , #0OmZOZZLUc|[=/{>*(]xOmCcvcc|[=/{...*x\}+O0Uz|[=/{>#(wxZ}+@.**.zu/{>#(] .zz)#(pdO}nnzzccXXcvnx..x\}Q0LUX|[=/{bdbha\cux.+ ]x\}0Ux*. [=C{ ;  + , {> x , ) X|[=/YLQOOO0UzXzXYUC0/{bb(]x\}+@)#(xnv}+0d<aobdhkboa]x\v+@)# , : #(]x\}+@)#UJ00JUYXcXXYCL{>#(.u\}+bhddkb=/ab#(]ZZ}+@) ( *}.u)<C| ++ + + , , , :: x\}+@)wZddZQLLLCLLCCCJ)<#|[CCQZZOOQJUXc)#uvx\}Zqq *..\uvCO< + + +, , , : ># \}hpbadOQQ0QQQQQ00m+#)#(]xccczUCQQ00Uv>YOZ0\}OqddXkk=/CJ#(YY\}*.)<JYnxcx>#(YXcYC@+ +  +, , , : =/ (]wb##b)#(]x*o+@)#J0x\}.@)vu|cXY{00z]xX}*.. *  + : , Q(]MM}h*#*ob[=wq>#*okwQLLCJJUUYYXXzXXzzc+@)zc|[0q{dp(]x\CwqL<v|cCU{>CLv..*+vc#(]xv...*.. + : , + |[q/{m#h&&#ahahka#WW8@##ddx00QLLLCJJJCCJCJUUYYXYXXX0pqkp>#z]x\JJzccXYQ=/{>#vuu\}Q@)#&hCu*... + : ,, x @)*W#o\ooo*oX#88/{kkm]0QQQLJ<CLLLLLLLCCCCCUJ)0pdhk0{zzz]xzzccc<Lm[=/CLYXUUOd+@)#Lmbb}+@)bp|[ZbqJXULOQ + : , #(]bo}+@)#kdddd{>#WMMM#*@**k|a#kpppqwmwmwmmmmZO0O00000QQ}ka#oXLLCCCCJJJUUU+@)hMobbp{>#mkh\}+@aOXqhahbQzYw + , , MCdqaMhb#&*bbkkbka#W&#hkkhMWab#%#dddddddppppqpqqwwmwwmZOOmkoM*qQ00QQLQLLLCLLCC0dM*bkhp0J0kobQQmQCmmCZooZXC +, , \vadb#W##BBMakkha*WWMakkh#W&W*a&@$#hbbbbbbbbbbdpdpppppqqqwpk*WMbmOOOOOO00000QQQLLwaohhhbw0Zk*pQLCCCCUJ0dadO +, , : }<wah#&M8@%WMoo*M8&MoaaoMWW8WMM%@@@%#ahkkkbbbbbbbbdddbdddpdh#WMkpqqqqqqqqwmZmZmwqqdh#oao**###*kbZQQLQLCLmbk + < ,, WvhM&8$@%WM*oMWW#ooooo*MM&8&*%@@@@@&M#*o**oooooooaoaahhh*MMMWM*ohbdddddddbkhhhaohkoW&888&W*akdm000000QLQO + \ , ,}<oB@@$BWWMMMMM##*o*o*M8%*]+X0%@%M*##MWWWWM###MMMW&8&WWWW*o#MWM#####*o*####akoM#okkka*&%8M**hpwZZO00O0Q0 + , XW#@@$8MMWWWWMWM##MM&Wpx>x }8#aoa*W&&&WWWW#MMMMMMMMWWWW&%8Moo*##*****oahhkoW&WMhdpdk*&8WMW#bqqwwqwmmZ + (}*B&WWWWWWWMMMM&&Ww}< +UMoo#WB$B&WM##MM#####**#W&88%8MooaaahhhkkkkkkkhWWWWMohkbdk*MM*ohdqpppqppq + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + , : , , , : , : , , , , + , :: : , , , , : , : , \ ,  +, : ; , , , , , : , , = M: \ , ,  + : : , , ,, , , , , , \; @, : , , ,  + , , , , , , ,, , , ,\ }+ +{ , , :: > ,  + , , , , , , , , ,, / +.W )*> /: ,  + , , , , , , , , , # [>x / , , [> ,  + , , , , , , ( , , =#x| :; ) ; , [, /( < M|{ ,, , +>x , ,, [ @/ , , , + \cn>x: =# , , /( , |xx ; >x , , , + {]: , ],, , , + \) : (}XZxM XW\)[>x : =#M|{]+ [u : # \ , , ,  +\) / + \) @ , ,, , @/ : M|{* zZc[ x+. . =zM|{, XXCUnn. / =J.| + XW , , ,  +} =#M +: x@ } = | , , (}< #;+ :W\).* }..# |{ +x..>x@/cu< # |{ XQu) ; (}< W  + XW+ [> /X = ]x\} ) , {>#(]* ;< [=/ +* + @.#(]x\}..x#(] ;+@) +|[=/{ ]:\}+@)  +@ }< M| #(]x + , |[=/..#(]x\}+@)#(]x\.+*)#(] @ + >#(]x\}+ ,/  + {] W\*[> /{>#( x }+@)#(*.\}+@)#(] + ; =, (]x : ]+ + , @ }< #\ =/d> (]x\}+@ncu|[= >#(] \v+@)#.*xxL+c)c(]x\}+@)#(]x\}+@)< :=/ >#( : @ + , { XW ]x |[Q/{>#(]xzzzu)#(]x\}+@)#( x: :X| ;{># : +  + (J#(] +@ #(]xw}+@ : [=/{>#(: }+@)C(].*...)#O]x\ : )# x\}+U)< |[*x : = + @=JZ>#(cccn+@)..*..}+. *[=..>#(]x\zvc.#Z]x\}+@)#(]x\}+ + X..u/{ #(zx\.+@ X|.| ::  + /( # |[w/J>#(]x.x+@)<k|k=/.x....*....*X|n*.{. (]x\xv... *[=.{>w(]vULLY)#( +@)n(]x\} )<u[ ;  + , \ [#(zx\+ @CQ#  + : =Y)cvXLQCXz)<xv[=OC0#(]x\}boa<MM[c..>#xXccX+@)u*| c/{>O(]+ }XU* + + : ] W}+@MhX|bdwO>#(]x\o#@)zcccvuuunn]L0}0C)#(XLQ00@).v|[=/{a*W*daa+a*.nnzY}+@)+ x x .v + +:: : @ x8}+@k*hm[=/Q0Om]%*}LC)#whZ\}+YQOZwZQQQXv(]xJO+@)<vU[=/d>dbdx\o+a)XUn*. {>#.czc*+@)0X|[=/{>#(* X\) +: ; { (]wboabq#.xuz}+a)C. c0L + ; x #(bx\}+qdkkdqqw{>W(]xb*WW#hqwmdq{>JJ]x\}+@)#(oadkhd)JJJYYUXYXzzzz=/{>#(]x\}d@)kX|[=Zqkh(]uunnnxnnxxxx..#(dx#}+Z)*hox\}+ab#(]xmZOO0<pd[QQQQQLLLLLCJJJJUJYXYYXY]0hq+a)#vcvvvvvvuvuuvun>#hok\m+@)<pwJ.*Xbm + , , [ /{%#(hxB8*oW$X|@&#{ddppppqw@dhXO000Q0#QQLLLLLLLLLLCCLLCOkxko+UYYX|[QJ{cc(vccvvvvvvvuv/{&#d]qq}+@wb0nnmaU + ,, , , [=@{>BBWx\*&*)<$|oMa{dbbdddph*)qwwmmmZZZOO0\0000QQQQQQL>k(o#\LCCCCJJJYUYYXXXzzzcccccv[=W{b#(]Z\}+aquYMwv + , +@)#(W%W}#&#n%@@@B8%BB%%B8W$@Wo0@/ =#MpWM$@@@%WMM##########W@@@$@%#MM###***ooooaoa#B%$%#akkkkkhabwk0W\ [qpppd + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +, : : , , , , , } , : : , ,  +, , , , , , , X / +{ @ , ,  + , ,, , , , { , , x } , ,  + , , , ,, , > , , X #M; : [>x ,: > M , ,  + , , , , , ,# , , , =#M| W\; : } ; ] , ,, :M , , ,  + , , , , , ,\ >, ,, , , /(}*= +] : ; [>:, , , + , , , , , , , , : ,, , |{n XQ\ [>x@ ; ]+ , , +:: : , , , , , , : , \ >x@ ( <= ,) / ] ,) > @ , =  +: : :: , ]+ W\ [ , , , , MC{] ;W [> , = | [: } = : {]+ X,  + ; : , > # , , , W\)QCc@ ; M {] ,: /(}<; {] X : @ # [ x@,  + : : , \ ,, , , ,W )[> @/(* =dC|{ ; xx@ , #M|x]nXW ) >Q@ ; = [ , , ,  + : : , } , , x@/ } :#M|.* \Qw>x /v ;#OY{]+ Wm0Oxz.c( #Oc{:; \)[ M +X ,  + , , #( / , ,}+@ #(] ; +@)#(]x\}+@)#(]x\} @) },  + \ @)#(]x\}+ X|[=/{> \}+@)#(]x\}+@)#( x\}+@+ = ;] } [ ): + ] , |[=/{>#(]x\} ; |[=/{>#(] ; )<uu[=/{> (]x\}+@u<c|[=/{>#(Yx\}+@ * ; ], } / } , + ,, @)#(] \}+@) +\}+.*<L|[=/{>#(]x\}+n)# ]:\}+@)#(]*..+@)#(]xYn+@)ZX|h=/{>#(]xm}+@): \}+@ <: : : : ;  + , , , , (]xa}+Uccv]cz +@)#v]x\}+@)#h]xQ}+@ *|[=/{>#(]x\.+@)<n|0=nc>c(]x\*+@)#(]x\} ;; : ; :  + ,, , , , /{>#Z]x\..*... * *(]xn}+@)#(+x.}a@)..cx\ ; ; / ;; ; M + : , ,, , |[=/O>#ux..*....*.. /{>U(*....*)#(]x\}+@) |[=/{>X(] ; ; ; : \u + : , , , +(] *xz0)uu|[=u...(]x#}+@UCL|[=/{p#(]x\} @)*X|[=/{L#(+ + ; ; /(u< + : , , > , @)<p|vcvvuvuuuuux..# ]x\}cxY00Lzz/{uz(]hp}+@) + + + zq+  +: , , , x\}+@)<zX[=/{>#(]x\}n@)0XJv=/{>#(]x\}+@UL0O[=/nX#(]xb}+Z)<8|[oW{>#(].\}vucJX|[= + + + [pUx  +#M|{] , , (]x\d+@OLQ00CC{>#(]x\}+am#(]xdkqQ0OX|[=*#*hhqq\}+UCLzzXYzXz#(]xnXU@)QL|c=c{>#(]kb}do*hW|[u/{....*\}+nvcX|[* * ** XqMvJO +Lbpko@q1uX+ :: |[ /Q>#Wdx\}+@aa#M#k/{>#(ax\}+@)#(]bk}b@*#wwq\M#*b#a]JUYXYXzXzzczzzXz]x\}+@)#(Oxda+@)unnxnnxxxx.x.x+*)<..x....*...O0YwOc +0okWWbdkJrJx\} @)<pdb=/dppbMa\}+@wmmZ0O/{a#LCCJCCCJCCUCCCJUJJJUUYUU)*d|#=/z>#(kx\}vuvuuuuuuuuuuuv\}+@)nunnnxx..noYCXZx +0*M8hhak*8#(]x\}+@)bbbbbbddkdddddpqqwwZ[q*{ZOOO0QQLLLLLLCLLLLLCCCLC+a)<&|[UU{>#ZJzzccc)vvcvvvuuuu]x@}+unuuuuuuun#hddUx +O8B*o#*o8h{>#(]@%Moaa@(]xXXzzccczvL8kp*a +qB%%##MBM##M=W@%#($W\}&@$%BM[hhhhkhkhbb+@@x@W**##W8%&%8&W&&&&&8BB%&WMMW8WM*#8%8&WMW8WMMokMBM*hdkba*M8BB@@@%bmX]\Umwqppq + +c%&8%8W&8888%%%@B8%&888&&$%&b}<= M&&#MM%@$$%&MMM#MM######8BBB$@8*####M#####*aaahW$%B8abkkkah#BW*M$)[ tpqppdp + @ {#8$@$B%%%%B$B%BBB%%%88&%@b] , )vb*W%@@$$&WWWWWWWM##M#M#B@$B%M######*#########W$8%BW**ahkkbhkqk#< # |bdpdpdd + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + : , , , , , , :: , , \ [ : , , , , ,  + , : , , , , , : , ,, <;# > ; , | , \ x ,  + :: : , + x , , , , , #M|{ W = M ] W ) (  + : : :, | , , , , , *[> @/ < \: , } / , + : : : , , ]+ , ,<=# + : ;@ ( , , M , = , , + : : : X , ,, , \); ;( ,M : , :; + \), , , , ,  +, , ,@ , / }<=#M {.+ x \ ; (};= , , , , {,  + /( , , ]+XWx) >x@ : ] + \) , ,, , ,  + # , , , , @c( +=# { , [> ( + \) > + ; , , /( ,  + W , , , , [ #M|L]+: . ;x@ < # { + )[; }0= : ]+XW : , | +  + , , ( ,, , , <# ]+XW\. 0m@/ } ,#M|{]+ W x@/(}<= | ]OX :[ #M ,  + , , , , , , ,, > , )[>x@/.+ #ZZc] X \ [*mwu(} #vvOX.XW\ :xL/ : #M [>; , + , , , , , , ) :|[=/{> (;x @). + . >#(Jx\}+ )#(LC\}+@u#(]x\}+@) }): , +, , , , , , \} )#(]x\}.@ +X|[=/{>#O]x } ;)#Y]x\}+@)#(]x\}+@); ; >#(]x\}+@) X ; /{>#(]x\}+@)#(]v\} ;)J(]x\} #(]x\}+@)#(]x\}+@):X|[./{ #:]x\}, :#C + : , , , #(] \ .u*nx[=/{Uv.*x\}+ )<zx[=/{>J(]x\}+@)<vv[=/{>#(]x\}:  +*...x.).n*.=/{Y#c]x\}X@)vu|[=/{>#(]x\0+0)#(]x: @)#(]x\}+@)< |[=/{>O(]c\}z@)#(]x\}+@) ; \}+@)# ]*.}+v)< : :: \: :[>x@: + , ,, , , ># ]x\}* * * *\}X@ncuxx=/{>nc.. }+@)#(]x\}+@0#(.n..+@)*X|[cJmOQ(]x\d+w)#(]x\}+; ; ; \+X [b + , , +@)#x..xx....x....{>Q(]0\uv@)#(]x\*+@.#(]x\} ; ; (]Lc ; u + > ] #(bx\}+@)+X|u.cY>#(* + + >#qv +  +)]~}~= # @wncQ0L0QCULz|[=z{Z#(].\}+@)aZ|k*/{k#m]x\..*)#( + + /{Ov.J/  +|QpOqw1) # }+@)Qm0[=/{>#bh*hdwqL#(]v\}+@mqX|mdkp&#u.x\ )# + ++ +[=d 0z ]v +UYCm8MBk= , > x\}Wm)<J|[baoak(]x\}+@)#(].n.nnuXYJZCOZv#(]b0}+@mpqw[p/{># *. *. X|[=o{* * #(Ycv}q@.q(]o\}+Q)<w|[=..*....*....*.|[=/. * *@)<Y0Q. Cw +dqo*wpwQ*B#(]v\}+ww#cvv\}JU)uunnnuxnnunnx..x)o(CJUYYUUJJJCJCCJJJJCCJJJJ<bb[M/{Xzzcc\cvcvvvvuvvvvvvuuvc+@)<uununnnu(]MmMhUwd0 +%WoaoaMMhhh\*%@W$8***8M**k]ddpqqqwmZZZ/W>#QLQLQLLLLLLLLLLLLLLLLLQ@a<o*[CJUUYYYXXXzcccXccvccccvvv\}+@)vvvvvvv>##wOkdqCn +&&%ooo8oaao]#B%+@BMX|o&&M8*(dbbddppppp[$/{mOOZOOOOOO<QQ0QQ{QQ(]L\}M@&C) x@hQqqqwppp + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + , , ) , ,, ] #M , , , ,  + , , ] , , > @ + , [,, , , ,  + , X , , M , x (} M : , , ,, , , , + , > , , | ] W\ > | \ [ , , , ,, x  +, , ) , , # + ; ; ;XW : ,X /, , , , ,  + , , ,, ( < , , | ] ; ) : / ; ,, , := |, , , , ,  + : , , , ,, , < \?; .@/ }.= X | :: \)[ , , , ,  + ; : , , , , / } = , + < #Mc{ +XW : }<= {, X  + ; : , , , , | XW\ [ x@ ( ] \) : M { ++ + , ,  + ; :: , , , ,) x@/(n<= ;++XW > @ (} = ] [zx+ =#M , ,, , + : : , ,, , ,} W\)[>x@/ <=#M QYW\ [; @/(}<= M+ +XW\)[>x (;<J#M* ] / :<= | , , +: : , , , ,] [>x@/(. + ,+X + @qJu<,# {cYpO\)[ @xu0cxuM| + XY\+ @/( + ; , =,  +: : , , , | >#( ;+ +@)#(Ox.}+@)JJ|[=/v> (]x\}+@)<+ [=/{ }+@)< |[;]+ \  + : , , , ) =/{. (]x ;@ #(]x\}+@)#(]x\}nuc#(]x )< :=/{ x\ > /(  + : : , , }+@)#(]xu}n@)#(]x + : / M : X + : :: , , ]xY}+@*uX|[=/{>#(]x\}+J)#(]*\}+@)#(.x\}+@)#(].\} @)#q]x\*u@) +..xuu.nu.*\}Yc..X|[=/{uu.]x\}+L)uu]x\}+@)#(] \} , : M { + , < )<, =/{>#(Ux\} + . .*. {>* x\}U@Y#(]@\}+@)< /{> (] : , +: \z[> + )< [ /{Y#( *+@).(]x\}+Q)<X|*u/{>#(]x\}+@)@(]x\}+; X|[=/{>#( : : / @; }<=  + ): [=/{ * * *=/.nn(]x\}cXuYX|[=+ >#(]x\@WM#dp0[@@{>#m]x;}+@)+ .=u{> :: : , /{| ]+X,  + { # X|[ .*....*....*.|0=/vzvxznv}+@x..* =/{>a(]x\}+@)u(Zzxzn@)<x .*/{*#(]xCZ0Q)#. x*}+@) } , / x\}+....*....x....\}+@)QX|cn/{>#(]xUQQzvL(]x\}+@)BX|M=cu>#(]Y.n+@)<u|[ ;> ; }+@)< ):  +hm0n{]+, ,[ #)].\}+x)#(]xkOCU)#YULzUCJCQX|[mZm0U(]L\zUJLZOL0LUUJu(]x\}Z@)#(.unx+@) + ; #(0x\}. ; ; +CCCL0Wbju+},@ =/0ZL(]x\}+dk*hkQOLQw#(XYY}+@)k(]Xx: <* +Q0OQd#qqUQx\ v(]vcuuuuuvvvvuvvcUQxQLn@)wwm[=/mw#(]d\}+@ * >#(]x\} + =/{>#.+ +vW +wwZkMZ00Uz(] +@)ZX|LQLOkp(]x\}+YXXXXJm/ccvvvccccccccccvvv>#(]xv}+m)qX|[=/LZZ(]x\+ ..*...* .(]x\ + |[=/c.+ ..x/  +dphWddpqd#m#(]x\L+@)QQQL=b{>#LQCJJUUY<CZ[cvcvvccccczcccccccccccccxbO+o)<u|[=0{>..*....*....*...>#(]x* <Z|[=v ..*  +dk&bbkkdWb/q>#(]x\q+@)h(*x\ccccccvvvvuvuunnnnnnnnxx[=${>....*}+aC0X/.vv . +W#&Wkha&khkk[M@{>#B]ka&W#MaXpqwwO0QLCx\}+@)8(]YXXzzczcccccvcvvvvvuvvuvX|@=/{..*..\}w@CQYx  +k&%aaaW#ha*8XW[B/{%#(]xWW*&#bddpwmZOQ(]@\}+vXUJLQLLQQLQQQQQQLQQQ|dh/M>LLCJJUYYXXXXzzzzzcccccccc)<@@[=/xx..]xo}+.cc. ; +M$oo&M#ooo&$&#*$MhB&hhhaW#a##kbbddqqwqW@%wJCLQ000QOZZOO0OZO0OOOO0ab&aL0QQQQLLLLLCCCJJUUYYYXcccYp@@@@@Z[xxn.bQCZc*. ++ +&ohaB#%Wo#@$#M%8W&%B8ooahhhka&bkkbkbo#8@@@8hpqqwwqdbbbdppqwmwwmmd#o&wO0000QQQQQQLLLLQQQ0LJCOmaB@@B$@@@wzuux*uQZJ.. +  +Xqo*BW%@&WB@&BB88&#%B&##*a*ak#&dkbh%o#%@@8**ohh#*hahhhhaa**ahkh*Wba#*#adqmmZZOOOZmwqqddqdmb*oM*#**#$@@qCXvuozvO....*  + [>xbZ8$BBBB%8&WMW&8B%MMM###a8WkkBLXC\$dbdbda*#o#*aoaoao*#MMM**aho*oaaa##*ooho#*o*kqkMbqmZqOmho#&o8@@8JXzXm.unn...xx  + |{]8MW8&W&&WW&&&&@8MWW###*$Wor@/(}a=kkk#%W&ahkkhkhkkkbkkkMMM&8Baddkhhkhhhhhkkbkd*&#WoqmmZmpqh8##B@wzXCqzzvuunxxx. + >:}W&B$B%&&&&&W&%8WWWWWM#M*~M|; +LWn#WBW8&oaoooaoooooaaaa&&&Mokkbbbbbbbbbbbbbbd*&*#&kdppqwwZqm0>d@/(}n=#YXzcvuu. + #;~-*W&@@B8%8%88&8&8&&&MB{(\) : /t}%$8&%&#####M#***##**ooo#oaaaaaaahhhkkhkkkkh8&M#8W*ddppqqOZ=-U| +uW\CXXYXzX* + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +M*dCu + + : : :: : : : : : : > : :: : : : : : : : : +%#Z. ; ; #M|: : , , , : @ : : : ( M|{: : : :: : : : : : :  +WMoqU* XW : : : : ;;{ : : : : ] @ , ]+ ) : /( =#M, : : :  +oohpC)[> , ; ; : : ; : :# ]+ : ,: : :  +dq0Y}< W\ : : ; : ; ; ; W (:: M : ::  +ZJu]+ :: |{ +X : : ; : : >x@/ : [ |{]+ [>x@ : #M : :  +v[+ + : ,, : : : := := \ :: : : : [ # : :  + ; ,X [> : { : , ( , , M : \ , ; ; :: : ) : : : + ; , : : >: , , ,, : <=# , : : : : W\ # , : +;; : XW : }<= : , : ; : ,<= , : [> ) /(:  +; : : : : , :: > , } : | :(}< :  + : {] : :: : : M|{ , \) : : M|{] \ >  + : : ; : : :: : X ; > , <, , ;[ @/ ,  + ; : ; : : : : (; = : + W\) >x@ :< #M; ]+X, ) ( , W  + =#M|{] ; : }< {, : : W\: /( *n| , [> ;( = , , , { , \ <  + : @ ; | / : | |{ + ) >, <=#M|{ + : , : : : ]+ : + : {:: : : : | ] \ ; ...* =#M|{]+ W\ , x : : : : , x :: +;{ : : #M:: W : ) : / + .n.* n * @/ }:: : : : : : =# :  +:> ; ; : : ; { ; .xnx .*. #M ] : , :, | : : @/(, , , ;  + # ]+XW: ; ; : , [ : } : > + + u + W ) : , : :: : : : : :  + : : ; ; ; : : X , :: =#M ++ ..+ /(} | , , , : : :: : : :  + ;: : : ; : ; ; : : ) x:+. * ..{ + : : : : : : : :: :  + ; : :: : : ; ; : ] , : ..+ .. *...*x@ : = , : ; : : : : : : : + ; : : : :: : : : : : Wu+.zn *. .*.x{]+ ,, : : : : : = ]+X : : + ; ; : : : ] x : : : , }<..n|.]xuvJUQOOz/(}, : :: : : : ( : ;  +; ; : : : : :: ; whaM#Who%o*#ok**L+XW ; : : :: : ( ] : ;  + = ; : ; : , : ; : : /cJ@&#MW#M##MWW*o*#bc}: ; : :/( <,#M| ,+ x: :  + ); ; ; : : ( , : : : #M|{]d%MMWMWMMM#M8&M####dXW ; : :| }<=#:: :  + }: ; ;; : : : X : + \./mb8&8&&&&&&W#WBMM#**oobu} ; : ) =# : : :  + : ; ; : :: : (}<=#:| , : /(U~m&WM8&%%&*q0Qdo%%W#o**oabuX ; :< , : : : :  + : ; : ; : ; ;: : : : M|{###W#W8WhOu(}<;#M|{nw#M*##*aaX( :: : : : : : + M| ; : : ; ; ; ; :: ; ~)wWMWMMowc#M| : : @/Z#ooooahx : :@ | : , : : + > : : ; ; ; ; : /(ma#awLmv+X : : : ]+md*ahhz@; : { , :(} : : ;  +} = :: ; , (; ; ; ; : =#[?0dpdQ?)[>x :: : +X [ |OMaoabY{ : #M|{ X , ,: :  ++XW , ; , + ; ; ; ], W{UZQOn/( {], : , {]q$W8Wu> /( :X :  +c/(}< : W ;: ; : > /(.* .M|: W : {]+XW: >:;/JdbknM , : :  +dmCcxW\)[>x /(}<=#M|{ ; : :: = ]:]u ; (}< M|{]: \)[>x@/(}<=#Mv\vUux.)[>x@/(} #M|{]+XW\)[>x } ;  +WM*oohbwmZQCJJUYYXXXzunnx}<=#M|{]+XW\)[>x@/ }<n#M|{]+XW\)[>xxnuvYLOZZZmqqppbbbdbbpL(tCzXYXzvvvn[nvcvvvu= . * x\; .x +$%%8&WW###**ooahhkkkkkkbbdpqwqwwmO0OmwwZZOQOZmmmmmmmmmmmZZwwqpdbkhhhaaooo*##M##*oaaahdqqqqwmmmmZZOO00QZW\< :_< <} > +@@@$BBB88%88&WMMM##M####**oaaaaaaahhbkhkhhhkhhaaaaaaaaaaaooo*###MMWWW&&&&8%%%88888&WMM**oahkkkkbdddddddmJJO0Jz?)CqhQ0J + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +#bC..* ; + : :: ; ; ; ; : : \ : : : :  +8kz + )[> @ } : ; ;; ; ; ; ; / =#: :W : : :  +M#bQx (}<= , ; ; : ;; ; ; | [ : } , @ :M| :+X \ M : :  +ohdC|{] > : M| ]+X : ; : ::\) : X : : : : < : :  +mJ\) @ # : \ : {: : @,( W : :( : : : : : :: :  +/(; : ] XW ; } { : [ x /( / : :: +XW ( : : : : \) : : + ; : : ; : \)[ , < <=,M| : : : ,, W : : < +: + ; ; # ] ; , /( : +X : : : {] :) :: : + @  +: ; x : : : [ ],XW\)[>x ; : : /:} , \ >x  + : <=# ; ; : : : ;; ; ; ,  + ;; ; ; ; : : , #M ; ; (, , X , = , =  + \) x, :: |{]+ W\ : ,# x+ *....*+ : > M|{: , @ } , , +X  + / : = , : ) =# | ]++W [> @/ ,< # :{ , :: : : : , + x  + [ : M x:: =# ) > @/ < #M. ]+ : > : : :: : : # : + }< ; : , : : }< M W\.Y.x@ : M ] W : : : :: , < M { ; : +:# : ; , : : + W )[ x@n(. ;.| , [ x@/ : + ): : :| ]+: : : :  +; ) ; : , : : ( <=.. XLXnx*)[>x@/ +. ; : : : : :: :  + , + ;; : : : : + W *.YJnv. vnxvx +xW\ : :| ; : : : : :  + : : : : :: : : ; ( ; Mcnv..n*. ..@/ : ] : >x@/ : : : : ; :  + : : : : :} = : :, [ | ]++ )[>x. * #M : , : :: , : : : ; ;  + : : : : , , : : :: , @ # + \ [ : : : ; : :: : : ; ;  + : : : , : : : @ # { ;W + .x( M| : : : : : :@ { ; ; + ; :: : : : : : >x.+ . **..{] : ; : : : , ;; ;  +; ; ; ;: , : : , |{u. * x@ ( , ; : ; ,]+ x@/(}<= : :  + : ; ; : ,, : :(} , ; >x * ...#nx[~+X : :( : : \)[ #: : : :  +{ : ; ; ; : x@ , : / }<J)LZwkmboaa*hqc/( : { X : :: \ : : :  + @, ; ; ; : : ] , : +Xm0@%M8#M&o*##*owz+X :> : : + : : :  +#M: ; : ; : : ; : , : x@n-0&oo*M#W8&&88W&MaQ( : |{ ; @ <, :: : :  + ; ;; : : ; ; ; ; : : #*|dbW#M###*##*o&&W#MW#huX ) : ; x : : :: : + ; ; : :: ; ; ; ; : : WC.vhha*aMMMM&&W&@B&&Woo*MO{} : : }<= : : : : +, ; : : ; ;; ; ; :W [: @]mkppqqbka#ahp0Yn//zQ0hMWW*M#cX+ : ; # : > : : :  + / : : )[ ; ; ; ;: :/ =#MCwZZmwbkpmX@/(}< XWOpMM*&b[ : ;: , ( <= | : :  + : : #: ; ; ; # ]+XWLwZZmmmqn}=# | ,\)[ (}<|mWoWw+X \ x , , :  + x: ; \: ; : : >ccvqZOwYn|{] : #M| :X.\*Ma#Yn( : { :  + # ; ;; ) (: ; : : , =#_p#kopv\ , = :: ; : }xM%BMz] : , < ::  + ; ; = {:: ; : #M| + Wx.Zhbz/ , : ; :: : W1ZwL[ : <=#; XW\) = M| :  +(}<=#M|{]+XW\) >x ; :, > /( ;=zM ; \)[>x@/(}< {].XW\)[>x@/(}*] M|{]+Xv\)[>nvcux<=#M|{]+XW\)[ x@ <= +apqpbbbqZQJXzcnuvuzccvn\)[>x@/(}<=#+>u]+X..)vXzvnxnvzzXXvxnuu. *cLOZZZZZmqqqpbdpqbZCqZwmO0OmmwmmwmmZOOOCzZLLmY{Ox1.c0w +8%8WMWMM#**ooahhhhhhhkbpqwwmmZOQQ0LOwZOOOZqpppddddppm0zJZmmZ0X cOwbhhaao**#MMMWWWMWWMMMMMM#*ooaaaaahkk*c ?><[- ; >| ~+ +@@$B$$BB888&WWMMWWWMMMM#***oahhahkhhhhhhaaooo******oakqpkaahaaoaoo#WWW&&&8%%%%%%%B$$$B%%%%8888&&WWWWMMWhmZkbmL1fpW$pdZ + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +WaZu* /( < ;; + , : :| : : [ , : : = , , : : :  +Mwu+ |{ W; [ :: : :) \ : :# {: : ]+ , , , x@/  +*kmv [ /: = ] : : ,,< : : : , : > \ ]  +mJx/ = |{; \)[ : : ,, {] : :(  +#M : ; ; ; : [ : :; ; , : + ; :: ; ; ; : #M : ; ; ,, | ] : \ :  +; : +X: ;; (}< # : : [ : ; ; : # \ :@/( < M| : ,] ( :  + : > ( : )[>x : # \ ; ; ; : > @/( : :: : , : ] , M| :  + , # : ,@/ } |: ::) }; ; ; : : : : : ,# , : <: {, : :  + + >x ; ; , )[ ; +: ; (} : , : : : , : ]+: : : :  + x # ; ; : : ; X @ <= |{ X : ; : # : : : :: : :  + M W : ; : : : ( : ; , \ : : : : : :: ; + ; : : :: : : : { [ x@/(}< : ;; : : @/( : : : : : : ; +; : : : : :: : [ #n| .XW ) x@/( :{ W\ : :: : : : : ; ; : :  +; : : : X \ :( ) * <=#MYzxcXW @/ # : : :: : : ; ; ; :  + : , , , : >x@/(,,= +x] XLx ..uJn(} |{]+XW ) : : : : > ; ; ;  + : : : : : : : Wu +.x@/LYx.*.u. :X [ux ( : : : : = ;; ; ;  + : :: : +X : : : : }+ .vnv0Xun [u;:/(}<.#M : : : : : X , : : ; ;;  + : : ; :, , : /, : +x. .+ ..c*}<=#; .*W :: (} : : :x@ } : : ; ;  + : ; ; : : > } , ,/. .x + X u/ : |{ :: : : : : ; : + , ; ; ; : M : ] *.Xxn* (} .x| : ) : : :W : : : : ;  +, W\ ; ; : : @ # , :: :/ Cc*xn *. c)[ : < : : : , {,: ; : : :  +: : : : : : , : : :{X.Xu...*....YY : W x : : x : ,, : :  + ] :: : ; ; : : :# | : ; Uv*JY..*.. *nzW : :( : : : : ::  + : : : ;; ; ; ; : x@ ; ML{.x.*....*nz(}< |,] : : M : :  + , : :[>x ; ; ;; ; : ; )#*oaoaZabhakZbmX =:: : [> : ] : :  + : : :< | ; ; ; :{ ) : <a*Woo#b*bkbkpwOx(}< M W: : :: , > ( , : : + , : |{ > : : : [ , :: ]+ZpobpddkkhkoohhdqQ+XW :> } : : , , : +:: : [ : : : : M|, : >YnOppqpqwwqqpd*adqqqqOu}<: , { :  +: : = XW : : : : : : =0LQQ0mmqbddqm0Q*bpdpqmZwZXW\)[ M +: X ::  += ; \ :: : , , , :+XJCJCQOwZLc<=#M|{]+XWuQmqqZOOY<=#M| :[> : = @, :  + ): :} : , ] [>xzCYJLCUu|{]+: : / }<=#nCZ0mZJx)[,, : , : ) M: ,  + : X : : <=xccYLuXW\) , : )[qmZOZZO=# : :: : , { : :  + : : : +ccXcu>x@ (} : : :=#MZakkod\ : : : :: : : {  + (} : ]+XW : : < xzXLO0=# | ] :: : : , )[Owha#} : : : ; ; ;: : x  +M , :: ; : + M|{zxXW ( : : :: [ @ =#M|{1(X : @/(}<=#M|{]+XW\)[>xx/(}<=#M|{] +)[>x@/(}< ;M|{ * W\)[>x@/(}<=#M|{]+ \ > /(}<=#M|{]+XW\)[>xn/(}<=#M|{]+XW ( =#MzC0mwwwwwwwwqppdbqdpwwwQOqwwZZ +Xnuzvn]nvczUCCLLLLJJUYXcuxxXW*...*./(}<=#.xxxxxuxuXYUJJCQQOmmwmZmmZZOOQLJXu}<=#M|{]+nXQwddbhao**#MMM##WpC*pp#Z)ac)rYwk +*ohhkbdppddddppppppqqmZQQQLCJUJUYXXzuxuzUQQ00OZZmmwwqpdkkkkhaahhhhkkkkkbbdpdwmmmmqdkha***#MMM*aMW&8888@J<[++{?: _xW+_ +&WMMM##*********oooaahbddpqwwwmmmmZOZOZmwpddbbbkhhaao**####MMM###MMM#####*oo*ooooo*#MW&8%%%%%W#8BB$$$$$%#*B%*brUM@@MWa + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +0dU* ;: ; ; : : : : : ,, :  +J0[ :}<= : ;;W\ : : M| : ; ; : @ { : \ < , , : )[  +uY. , \ @ = ;; ; >x : ; ; : )[ : ,, |{ : : , : x (} : + * , }< : \) ; : : > : : : @ : : : , :: : , : }< : :  ++ : , >x@ = : : # : : : , : : = ]: : : : : :  +; :W [: @/ : :{ X, ; }< W : ( ,{ : : =# , : : : :: : :  + @ ,: ; : : ; ]+ @/ : \ @:: : + , | : : : : ::  + , ; ;: : : x #M ; ; ( : |: : :, }: | ) : : : : :  + ; @ ; ; : :: =# W : ; { : [ ; : : :> : : : : : : :  + ; : : : : : : : , , # : : : : : :: : : ; : : : + ; : : : : , / : ,, , , ) :x@/(} , : : : : :: ; : : +:; ; : , >x@ : M XW\ :/ : X : : : : ) : ; ;; : :  +; ; :: : { : x@ : ; ] X \)[ }<= | , ) x@ : : : :@ : : : : ::  + ; ; : , : : @/( ]xXW\ [ , #M {,: : : :M : : : ; ;  + ; ; :x { :: : /(} , ]+XW\) >x . X< W )[ x /( < :: W < : : ; ;  + ; ; ; , , : | @/n} c#u. *X x / }< # : ; : : ;  + : ; ; : : =#M: , M {..xnXOCvu. (}<=# *] W: : ,] / ;; ; : ;  + :+X : : ; : ; : < : [ x *uzLCzu x* )[> @ : = : : =# ] : : :: ; ; + , : :: : : ; ; W,) x : # |x u.n. + ( , XW , : | x: : : ; ;; +: |{ : : : :: ; ; : = | : >xx.* .* + : : >x M: : : ; ;  +: ; ; : :)[> : ;; ; \ : < #Mcunx. *. @ {] : :: : ]+ : M| : ;  + ; ; : x } , ; ; < : :W )Yv ...* .M|{ \) : : : : :, = M| :  + ; ; : \ ; ; : : :: }<=cn..* \ [ x , : : \ , } , :  + ;; ; : , : : : : ; ]< W. ++ (} = : ,\ : , , :@ :  + : ; ;: : : ; ; ; >Orf0LYYLJQ0Xn+ :: , +X : , : {] : : + > ; : : , ]+XW\)[ : : .n&#bopbdppbO0c(}< : : , : + , : + ; : =: ; ; >ppwpppdqdbqppmmQxW\ : : : :: : x , , : : :  + ) ; : : : , # :.+YqbppqqqwZwhapmOmZQJn< : : : : ,, , , : : ,  + ; : x : : : ) +|{ZwwppkkkhdqhWdwZZ0CJUcW\) : : : : : , ,, : : :  + W\ : (}<=# : : [> @ , + :)qwmZqpqCXzcuuvJQqdwmZ0CXzcvn#M| , ) : , : : :: :  + ; :; ; :} , (}nmmqq0c+X \) , @/(}<=c0OOZ0CJJCz>x : : : ; : :  + : : : ; :,+ : nqOZX[>x / : : )[>uXJUUUYJv|{] > : ; : ; : :  + : , ; : : /(}< :, [~_wQwz< \ [> : M|{]c00LLU>x@ :: : W\) : , M| X: : + ; ; : , : : [1QdmJ~ :[> M ; : @/YkkkhM| : : / , : +; ; ( , : : W\hwcx :: M \ : : : : : , :,  +; ;; : : : )[> /_|1Y# : :> @/: : W\ +> @/* < | : > , XW\)[>x@/(}< +{]+ : x@ ;; #M|{]+XW\)[>x@/( <=-M<~> ; ; ; ; +XW\)[>x@/vYUULOZmm0UL\_[>x@/(}<=#M|{]+ :)[ x@/(}<*#Muvczc +ZhOUzucYvuvccXYYYYYXXzzczzzzXYYYUJUC00JUXx(xnvvcvvvczzzzzzzYL0mqqqppdkkkhhhhkhkbpqwZZQCUUUYUUYzcccvvu<x#+XvzCL?zv?[xXm +d@$B8&WMM#**ooakbbddppqqwqqwwqqpdpqqwmwqpdpqqqqpddbbbbbkkhhhhaaao*##MMMMMWWWWW##******aaaaahkbbbbddddpdm)] +>}( =/~ ~ +d@$@$$BB8&WMMMMM*oaahkkkkkkkbkkhhbpwdbkhaaahhhao******#####MMW&&8888%%%%BBB%8&WWWW&&&&&WWWWMM###***#***odpa#ddrjb#B*ak + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +ZJ(} : ; ; #; ; ;; : < : : , : : @ } , : : +v{]+ x@ ; :]+ ) ; < ) ; ; : W , : : XW [ : : + : > @: : :: ++>x =#M ; :: ( ; X : : : M: X: : : : : : : : :  ++ X : + ; : :: @/ + ; @ (}<: : : x ( , , : : : : : :  + [> ; + ; :x : M| x ; : : , ) , :: : : : | ,  + ; : ; : :# { =# ;; , # : ) + : : :: : }  + ;; : : : : ]+ : ; , \ : , , X \) : : : : ; ::# :  + ; : :: : : x : ; : , ( :: : : : : : : : ; ; ; ; + ; : : ,=#M|, }<= : ; : : : >x@ :: : : : : : : ; ; ; + ; ; : , ]: :> /( , { + : @/( = : : :: : {]+ : : ; ; :  +; ; : : / : + )[> ; ::# XW+) M > : : : :[ : : ; ; :  + ; : : W , : : : )[>x@ *}< : : : / , + : :: : ; ;  + ;; ; : , : : [> } + .|{, \)[ , , ,[ : : | : : : ;; ;  + ; ; ;; : : :< XW\)[ @ (vu=#M, \ > , | : [ { ; : ; ;  + : : ; : :: : ,+ # {] ...v[ }<=# |{ :X : ) x ; : : ;  + : : : ; :, , ] X;>)[ZJu. *= |{]+ * x / , , (}:= M ; : : ;  + : : : : : ; ; |{] W :: @ ( xnXZQzX. <)*. *} # X : : ): : : ; : +: : : : ( ; ; ; :@ ( : { + **uX00Yc c* ;]+XW : : : :)[> : :, : : ;  +: :: : :M X ; ; : { + : x /x. vncu**. ;> : : : : : : = :: :  + ; : : : ; > : | ]xn.* ux ;# ] : : }<= : XW , , ( : M \: :  + ; ; @ , :: ; ; , : [ x@ccvvu.*. XW : , :: : @ < :{  + ; ; ;]+X : : :: : ; :# |vX .u.*...*/( , |{] : } ,: + :[ :  + : ; ; : : ; : ; :: : ) >Yv..* M| :\ , , : , :: , x@ :  + , ; ; , ; ; < M {:+X ) : }<=#n. * \: : |{ : : : , , : , , : : + : ;; ; : / : : :{]hpdwwCwZOm00<= : : : : : : , : , : ::  +, : ; :: ; : , < :[>w*Moo*h*kkadqJW : :: : : : : , : : :  + < : : ; ::= , W / ;=zhhppdbhdhohbkp0c<= W x@ (} : : : : : : :/  + : ; ; , :, +}cakdpwqdpmmhMhdwppOX\)[ , : , : : : :  + :@ : ; ; : : ,@XLqqkbkbhohbd&oddpwZO0J=#M| +XW\) (} , : : : : :  + : : : : : +X ): Mmappppddp0x@?_}<=YUCZww0Lc)[>x@ ; : : : : W , ,  + ; ;; : : : : , \zdqpdddwv= +XW\;[>x@cUUcUQJ|{< ; : : {]+ , : + + ; : , : : ,x ([dpdpqqX+X x : :{]+XWnCQLz@/ ; : : [ , / : +; ; ; : , ,, : : {]Udwqwu>x : }<= , W : : <v00OY}* : : ,> X +:x / ; + : : , : ;;\) >cdoaom= ; ; :@ +\wdda@/ : :: W ,  + {: ; ; : : ; =Y0*W&0X : ; ; ] , : >_XQC{]: :>x@ X  +\)[: ; : : [ : W.UCaz@ : ;; ; :@/( |{]+XW: , +XW\)[> +}<=#M|{]+XW\)[>x@/(}<=# ]+X ;>x@?unx # |{]+XW\)[>x@ (}<=#M|{]+XW\ncCO0OOCc=#<|{] XW\)[>x@/(}<= ]+XW\)[>x@ux* =  +%Moaaaa**oahkqmmZ0JYzn\)[>xx/(xucXQwddwZJvU000ZwqddqwZ0LQOOmqppwmZ0Owdddbdbdpppm0CYXu/(xxnvcvunnnW\)[>n@ c.xJ#~Y]:<  +@@@@@@@@$BB%%%8&&W#*ahkwQZbbkkhhaaooo#M#MMMMMMMMMMMWM#######**###M##MMMMMWWMM#*oaooaakbddppdddpppppqpqkc>_++?- >?x/<< +&&&&&&&&&&&&&WWMM##*oahaaaaahhhhaaooo********#*********o************######M#*oahhaaahhkkkbbbkkbkkbbbbbkbpdaabZfYka*dbw + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +pZX : : ; : > , , : :, : , : : : : : ::( : :  +u} ;; : : (}<= { :W x@ : : , :, | : , , : : : : + \ :: :  + ; : :: :/ M : : , , @/( , : : } | : : : :  + ; , : : { W : :<=# , (, \ :: , , >, : : : :  + ; : : : @, : : : : , M : : : :  + ; : : : : : : ,:@/ , , : : , : : ] :  + ; ; , : } : : + : [ / : : W = : :: : : + ; ;; : : X, : : + >: =#M|{] , x : # , : \) : , :: :  +: ; ; :: : : : , W : ( :: ) : #: , : :  + ; ; : : :, : : M| : [ : X , , :  + ; : : : ; :: \ } , ] X } : : , M | :  + : ; : : ; : : {; : : : M| : x@ + W , :  + ; : : ; : XW >x@/(}<= :, W : : : : : : >, } : :  + : :: ; : ; ; : #. *+X > @/(}< , {++XW ,[ : : +X : : : :: : + ; : : M , ; : : ) + /(:<= + x.X, >x +< # : < : x : : +; : : ,, : ; : * .]:X \+ / | ]+ W : , , + \ ): :  +; : : / : : ;; : ;\. * vx. x] ;\) > : : : [ : :=# <: :  + : : + W : , : ; ; ;;}nn* .*vn. +. + <= X : : , : ,, M {]+: :  + : : : : : : : ; ; Xc+ . ++ * ; + :) : : : , : : :: : :  + : ;; : : : : : { + \)[> (. .x *x ;;x@ : # : : : , , , : : ::  + : ; ; :: : : , : +. *U.xnx + M : :, : : : : , : : : :  + , : ; : [, : : /Cxzu.x.. .*.\ : : : :: : : : : : : : : + : } : ; : | : W\ : {v Yu*. +. : ) >x , :: : : : : : :  +: : ; ; : +X , :: > /.* * .cX: : : :, + W x@ : :  +: : ; : : : <: : , =#bkhpk0dpqpwYQL( | : W\)[ : : { \ X :  + ; ;; , , ; : : : +XWnb#haokobkhbpwmQ+X, : : : : > ( ::  + )[ ; : :: : , : + >x@/(O#bkhkkkbo*hakqppJ(}< :; ; : : =# ,  + : ; : , , , :@ <= M.nQ*khkbhhbdp##bqqwmmw0UW\ ; :: : X  + + \ : ; ; : ;; : uxwbpkkaopOCUYd*ddpqmOZwZOQx=#; : \)[  + : ; ; : , < {] ; : >mqwqdkZuXW\ [>x@/cUJOqqwm0QQCU)[> W\, x@  +:: ]+XW : : <= )[ ; ; ]pqmpwJ>x ;; ; :W\)CJQLCCCCC#M (: :  +: > }:: : + : ; ; ]>dmqb}<= M : ; ;; ;#MCQJUJUUU[> @ + :  + +: : X : ;QUdpqU]+:W : ; ; : [nJwq00ZJ# , X @ : , ]  + : : : | : M|{]+La#hQ>x , : ; : : :M|Zmpdd\): , : ( +  + : : ; [> /(} @|vLd= : ; : : W\ <[/(.* : +XW\)[ < : +XW\)[>x:  +n{]+XW\)[>xnXzu<=#M|{]+XW\)[>x@/(}<= ]+. \)[ : ; +XW\)[>x@/(zJUJzn{]< Wu.[>x@/(}<=#M|{]+X ; x@/(}<=.M|{]+ +%%WWM###**###*ohhkbbdpqmO0LUYYYUYvYvucuzYYUQUv=#M|{]+XW\)[zJJczJJJ0ZZmqpqqqqppqmQCJCQ0LCCJUYXzzuunx/.xxvnvcccXYJQQ00Qc +@@@@$$$$$$BBB%888&WMM#***ooahhkhkbddkbbdppppppqqwmZZOOZwqpbkkkkkhaaaaaoooooaooahkbbbbdppqwwmZ00QQLLLLL0.xXvc0|[0-~\tOv +@@@@@@@@@@@@@@@@@@@$$$$$$BB%%8&&WWWMMM#####*##*****#######M#MWW&WW&&&&8%88&&&WMMMMMWWM#**oooakkkkbbddqa{_>? 1| :+\n\]< +&&&&&&&&&&&&&&&&&&&&&&&&&&&&WW&WWMMM#*********oo*********#####MM##MMMMMMMM###*****###***ooahhkkhkkkbbbkpqpakbJt0a##hoJ + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +op0u+ : ; =, | , @ : :: : , ) : , , ,: : , : :  +dQux : : X : \ :/ : } , , , \, : :: : :  +OX + ;: ; / : ( :| :: + W : , , < : : : :: #  +cn* ; ; :]+ | : W\) , , , M , : : : , < : :  + * ; ; : / , \) : \) > M| , > ,: : ] : , : : + ; : ; ; ] : : :: | ( : x : , : x : : : :  +; : ; ; ; : : : ) ] , : : XW : x@ : : :  +: ; ; ; : : : : } + W\)[ :: : | ): :} ,, : :  + ; ;; : : : : XW )[ x : : : }: : X < , : ::  + : ; : :: : ; : : : : : : : :: , M : , : , : :  + : : : : XW, :: : : : : : : = : :: : (}<= \) :( #M :  + ; : : W [ ; :: : , , ( : : :{ =#M| [ : : + ; : :/ ,) : : : X +) , :+XW\)[> @, : : : (}<= # : +;; : ; { , , : : : (}<= : ] XW [>x ; M: : : : |{ W \ :  +; ; ;; > , : : : ;+ \: x / #M :: ; x@, , : ): : }< M < ::  + ; ; M| :: : : : :@ (} M| *\ [ : }:=#M , : : : : , <= ]+ :  + : : : : : :: : : : | + ; ; < #M { *X : :: : : : , : : :  + : : ; ; : : : ,,]+XW\ : / + .. ; +. * x@ ( : : : :: , : : ;  + : : ; ; : : : : {]* * . * #, : : : : , ,: ; : ;  + :: : : ; : : : [ x*...++ ..; W ) : : , : , : : : :: : : + :: ; : /: : ( # |.v.*. + / } , ]+XW , , : : : : : : :: + ; ; :: : | : : _nc* . * {] : : : x@, =,M|{: : : :  +: : : ; : [ :: : ,W :x < #MXc..* [ } M|{]+ : :: : # ] x@ < : :  + : : : , : : : :: = , )[. * .# : : ; : : , , :  + ; ; , , ; : ; : >: /uXxwOwCwmqw0muu>: : ; : : ( ,  + :/ } ; : : : , ; ; <=: {nJ@#oMk#hhkdwwCXM| ; ; : : |{ @  + : : ;; : , , >x ; : : >dabkhaaoa#*ahbkbQ>x ; : W\  + : ; ; : , ; ; ;} ?OkohahbbkbphMhbdbppp0u{ ;: , x {] , \)  + : :{ : > W\) ; ; ; U/Wabhhh*oo*hkoBabdqwwwqwQu@/ > : , | ,  +: , : ; ; ;; + xwhbpdhkwJcx+XczJOpkkkdqwmwqOJ]+: [ @ +X > X:  + : M : : : @ <=#dpdbpOc\) ; <=#M|uCqbdwmwmmX/ : ] ( :: :+X @:  + ;: ; :} : =# {] XUdwpux@/ : ;; : >x@/(ZmwOOmv] ; : X: : ,  + : : ;;+X [ , ztZhwQ|# : ; : :: ]+XXkhpaZ@: : ( :  + : ; ; /( , @/ #}q&0QXW :x : ; X : }Xmadz : x@ : (}<=#  + : + ; : \)[ / , >cx0c@/ : ; <=#M|{ + _..*? /; =#M|{]+XW\)[>x@ : M|{ * + +c}<=#M|{]+ ; : @/ }<=#M|{]+XW\)[>> (}:= |{ x < #M|{]+XWnUCQ00wZOJv#M|u] XucXzzzzcun<=#M|{]+XW\). +/( .n +B8M##*ohpLXXcxxnuYYYXJ0wwwqmmwmZOCJLJQUULCYUYux@/(}<=#M|{]+YQOL0ZZmqdbbkhhhhhkkkdwZQUcYQOOZZZZZO000LCCUCCUUYcv.+| ]+*v +@@@@@@@@@$@@$%%%%%8888&WMWWWMMM#**oaahhhkkkdddqqqwZOOO0Zwpbkkaaaaoo**##MMMMMMM#*oaahkhhhhhkbkkkkbbddpqpLcmJYQx<*[ x@nY +@@@@@@@@@@@@@@@@@@@@@@$$$$$$$BB%%88&WWWWWMM###*********###MMMWW&888%%%%%BBB%88&WWWWMMMWWWWMMMMM##****oMz[-< +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$$$$$$BB%%%%%888%%88%%BBBB$$@@@@@@@@@@@@B%%%%%%B$B%BB%%%%%8888&&&&&#kkM*bm/ck#&bkq + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +O. ; : ; ; ; : : :, , : : : : :: :/  +mv+ ; ; ; ; : : : , , : : : : : : : ] X +mc* ; ; ; ; : : : + , : : : : : : : : , |  +Ux ; ;; ; ; : : : , : : ;; : : : : : = { : >x@/ : #M  +z. ; ; ; :: : : : : , : : ; ; : :: , , : > : : : :  +* ; ; ; : : :: : : + : : M|{] : : , :: : : / # : : : :  + ; ; : : : : :: : ] / ; ; ; ; :: W : : : :  + ; : ] : : : , : ;=#M| : : <= {] ; ; ; ; : @ :: : : :  + ;; ) > / : : : ; : ; : : :: : \ x ( : ; ; /(} : XW : :: :  + ; ] : : ; ; : ; : : : : } + , : : W [ x@ } : : : : + ; : x@ : ,, : ; : ; +; : @ +.<=#; , :: , : > W\ : : : + ; : , ,= : ; / +...{]+ , @ : : :: : :+XW\ : ; :  +; : ), , :; ;| ] X \)[ /(} # , [: : : : :: : : ; ;  + : : : : , ( , : , + ( |zn XW # : ; ; : :X @: : ;  + :: : ; : / : : \ , # |{ W\).*X X(} ] XW [ : }<= |{] : x@ : :: :  + : : :: : : :( , >x@/cqv.* z~ XW\)[>x@+ }< : ] /( > : :  + : : , : ,x : , < #Mun.z0Yzn >x@/. + #. + :: + M  + : : : : ,, , \ +.vvQZv. +x nx ..[>x@ , , : : + : , ( , M|{ : : , , ) : ( <. .{JcJu*n.. *cn}<= | @ , , @  +; ; ; ; : : , : : ] X. + .C... *|{]+ : , , ::{ W ,  +; ;; ; ; : : , + : (.uux..*zn .*X[ , : : : <, : : : ,,  + (}<= : ;; : : , , ;| ]+QuncX*..nYc<=# , : : : : : : : : :  + { ; :: , : ; > _/U.uuvuuuuvX : : :: : : : | : : , :  + [ ( ; X >x : M ; | ]CQu...*../(, : : , :: : :\ >: : , :  + , {, ; ; = : : : M ; : > @cv..xxnvzJ(-W\: : , : : :: , W ): :  + : : ; ; : : : ; ;; #qUhao#dWWMM&#oLc< : + , , : : + , ,, M : , + , :: ; ; : , : : / < ; ; um&@%W8#&W*####*ZuW\ : +X : @ , ,, ,  + : : ;; ; : : : : ; (YxWMooo*o*M*#MM##odX<=# , / : :] (} : :  + : : ; : ,( : : , ,|{ZoWM**oohkbbpp#*abbhbZW\) ; : |{ : :  + : , : : ; ; ;; : \)0zdkkahkhkddqZOwMabkdmmwdJ-= [ : : , W : : :  + ; : : , ; ; : : :: (zkbppqpbpppmOY>x@/(}<xQwppmOZW\ , @ (: : :: , : : :  + ; ; : x ( ; ; ; : : +uYLCOwwmmz(}< \~xU0OCC}<, : : : =# ] :  + ; ;; : +: : : : : .x* xvU0Cv#>| =#M|0UUJW : : : X :: ; + ; ; : :) : , , * *...{]+X ,(} = + z0CCU} : : : @ : : ++ ; ; : =#M, :: , , ,{]+XW )[> (: : : >: : #YZZpn : : : # +X )[>x@/ : :  +* : ; ; : : : ,, , ; : : : : )[>x@/( :: : x : : : :  +Cx# : : : : ; ; :@ },=#M|{ W )[ + ; : : : <= X : @/(}< # ; ; ; +  +bmU)[>x@/(} ; ;XW\)*...* *M|{]+XW\)[>x (}<.xxuvun..\)[> ; : ]+XW\)[>x@/* <=#x|{]+XW\)[>x@ +x .+>x] ;WuX +&W#hkbZZOO0LJXvuuucYLQQQQQLCUYUUYXzXYcnunxxuvvczzXUJJJJJUUYYYXcvnuvunx\)[>xXCCCJCCLLCCCQQ00QQQQQCYYCQLO{]< -~ x~/(<> +B%8&WMM#oooahhkbdpddddpppqqqwwwZmmZ0QQLQQQQQ00000ZmmZZ0Lc.zL0ZZmmwwmmwwwwwqwqqqwwqqqppqpqqqqqppqqqqqpppwOOdpmL|udoWdbw + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +O.+ : ; ; ; ; :: : , , : : : ,: : : \ : +mv ; ; ; ; ; : : : : : : : : : :: < # +mc ; ; ; ; ; : : , = , : : : : : : : : (  +U. ;; ; ; ; : , : : , :: ; : : : : : , x } : +XW\,, @/  +z. ; ; ;; ; : : : : : , ; ; :: : : : + : : : :  +. ; ; ; ; :: : : : =, : /(}< : : :: , : : \ @ : : : :  + ; : : : : , :, : : < \ ; ; : ;; : M : : : :  + ; : < , : : , : : :: x@/( : : :>x }< : ; ; ; : W : : : :  + ; :{ + \ : : : ; : ; : ,: : : | X :) : ; ; \)[ , :#M :: : : : + ; :: < : : ; ; : ; ; , : ;: [ = , , : , M ] XW [: : :: :  +; : XW: , : ; : ; ;= : W; .>x@ : , : :+ M| : : :  + ; , x : ; ; \ + ..*}<= : :W : :: : : : =#M| : ; ;  + : { :, : : ( <+# |{] \)[ @ ] , ; :: : : : : ;  + : , : : , ) : , :: ) (zn #M @ : ; : : ;: # W : ;  + : : : : \ , : | @ (} : M|{*.X X)[ < #M ]: :[>x (}< : :XW , : :  + : :: : : , : ) , : +XW\cqv*. z~ #M|{]+XW [> < \) , + : ,, : + : : , ,, : X : : , > @/un.z0Yzn +XW\.* @** ; , = , / : +, : : :: : , , |* .vvQZv.; x n. .x]+XW: :: , : ,  +, : ) /(} : : , :: { , ) >. *}JcJu n.* cn[>x ( W , ,W  + ; ; ; : : : :: < #. * *C...+ (}<= : , , : } M ,  + ; ; ; : : , = , ; )*uux.*.zn *.X] , : : : > , : :: , ,  + ;)[>x: ; : : , ; ( <=QuncX...nYc>x@ : : : : : : : : : ::  + ;} ; : : : ; +,_\U.uuvuuuuv# ; :: : : : : , (: : : :  + ;] ) ; :# ,+X :: :/ ; ;( <CQu..*...\) : : :, : : : | + : : : ; + : } ; ; :x : : :: / : ; + Wcv..xxnvzJ(-M| : : : :: : , M { : :  +: : ; ; : : : : :; ; @qUhao#dWWMM&#oLc> : =, , : : = : /: ,  + : ; ; : : : :\ >: ; um&@%W8#&W*####*ZuM|: : =# : W  + : :: ; ; : : : : ; )YxWMooo*o*M*#MM##odX>x@ , \ ; : < )[: ::  + : , : :: : ) : : : : (}ZoWM**oohkbbpp#*abbhbZM|{ , ; : : (} : :  + ; , : : ; ;; ; : , |{0zdkkahkhkddqZOwMabkdmmwdJ-x ,, ] : : : M, : :  + ; ; : : ; ; ; :: : ;)zkbppqpbpppmOY+XW\)[>xQwppmOZM| : W ) :: : , : : : ; + ; ; : X ): ; ; : : ++ uYLCOwwmmz)[> |~xU0OCC[> : : : :x@ < : ; ++; ; : , = : : : : .x xvU0Cv@>( , x@/(0UUJM : : : # : ;  ++ ; ;; : { : , , : * ...}<=# , )[ x z0CCU[ : : : W : ::  + ; ; : x@/ : , , , }<=#M {]+ ) : : + ,, @YZZpn+ : : @ =# {]+XW\ : :  +. ; ; ; : : :: , ; : : : : {]+XW\) : : X : : : :  +Cx@; : ; : ; ; : W [ x@/(} :M {]; + : : : :>x #; ;;W\)[> @ : ; ; ;  +bmU{]+XW\)[ + ; #M|{ ..*. * /(}<=#M|{]+X*+)[>*.xuvun..|{]+ ; : <=#M|{]+XW\ >x@x(}<=#M|{]+XW* x * >x<: MuX +&W#hkbZZOO0LJXvuuucYLQQQQQLCUYUUYXzXYcnunxxuvvczzXUJJJJJUUYYYXcvnuvunx|{]+XXCCCJCCLLCCCQQ00QQQQQCYYCQLO}<< ;-~ X~/)<> +B%8&WMM#oooahhkbdpddddpppqqqwwwZmmZ0QQLQQQQQ00000ZmmZZ0Lc.zL0ZZmmwwmmwwwwwqwqqqwwqqqppqpqqqqqppqqqqqpppwOOdpmL|udoWdbw + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +whc ; ; ; ; ;; : : : : : :: : : ,  +mpn + ; ; : ; , :: , , : : : : : : :| XW x : =#M| ]+X, )[  +ZkU + + ; : ; : : : ,) > ( : : ; : : , # : : : :  +UQx+ + ; : : : : : } :: : [ @/ : : : , : =#M W : :: : :  +.. + ;; W: : : : , : \: : + : ; : : : , : : : ::  + ; :x@/ } :: : , : , ) : XW\ /(:: ; ; : : , :\ : : :  + + < : : :: : : : : {], : : =# + ; ;; : +XW\ > / = : : : : + ; X @ : : ; ; :: ; ; : : : : ) /(}< :]+X ) \) : : :  +; ,( : : ; =: : ; ;; : >x : : M : : :  +; : ) : , { +X : : : : , |: / : M : : : <=# \: : :  + : } : ( : , W : @ , ; : ( , ; : : : : \ } : ::  + : : : :, : : , : XW; > = ++ ; : : : : < + : :  + : : : : { , : ) ; x} {] , < : :: : : : X @/ : :  + : , : : > : x, = M ] \)[nv@/( : |{ \: : =#M {]+ : @ , : : + : , ,x@/( < , {]+X , )[+x@ (}X..X*Xz+ :\ x@/( = : + ( : =# : +:: @ , : : <=+.|{zwx..+ cx@ #M +X , , ):  +: ) : : : , X; vc*cJ x..z|{]+X:\ x@/ = , W ,  + ,[ /( =#M| :: : : : , \ +_. *cz0Cxv .x+.un/( =#M < : , : ,  + : # | ; ; : :: , ) # ; +..+ ..LXQ..x .xz+X > ,/ ,, , : : , : ,  + : ; ; : , : , W ; @/*c.. * nU.x. uzx@ : : : :: : : , ]+ + x }: ; W : : + :: M {]uJXvn..c* .xz*# , : : : : : @ : : :  + : ; ( : : / ; [ xxQncYz.* uXcUW , : : : : : M W :: : ; + : ;; ; +X : : : :+ x; ;# |vLxvvvnuvn*X( : : , : : : , =# : ;; +: <= , ; ; ::< , { : : # ; ; [ xCQux....*.~ ; :: : M XW : , ) : :  +: : ; ; ; , :: : ,+ W ; ; _ |XznnuvvzU0v1(}< , ) : :X , =: :  + : : : ; : # : : ,, : : Qko*#&*oBWWW8#kqXW\) @ , ;: : } : :  + : : : : : : ; , :: :( oB@$88%W%&W&&&W#wY}<= , \ x : : , , @ : :  + :: : : X : ; ; W x , {]n8W$&W&&8&88&8%%8WMhXW\) : , : : , : :: :  + ; : :: @ : ; ; : : : [wd&W%888&&WMMW#W@8W####dt< : : : : : : : : ; + ; ; : M :: : : : ; : }<0W#MW&&MW&8%8Mbda*kW&#oao*C~; : : : )[> @/ = : ; + ; ; : , , {]:: : ; :|{uqM%###*MWWW#bX#M|{]+XWrZaMokaw} :: : : } : ;  +: ; ; < @ : :: \)QoM#**##&&obQx+XW : : <1XdbbbdX : : :#M|{ : :  + : ; ;W\ : ,} X : /(LCvLqkaoMMLc)[> : : ; )bpqmm(: : W (} : :  + :: ; ; : : , : |qhmv Jdapx@/( :: : : : cLdwwZOx : : { : : :: :  + : ; :: : : : , ] : )*MW#MWqn=# , : : :: : Wu#o*#O/ : :] : :  + + : ; : :: ; : ; }wW#8%ov+ ) ; ; : :>x@++ <uYZZ{ ; : : : }  + .* ; ; : : ; ;+ #.*{ +XWv*0>+ /(}<=#ucccvvn\)[>x@/(xunvULCCz?W, x@/ <=#M|{]+XW: : , |{ \ +YOX}< ; ; : : + ..xuccC[ x@?(YLYLO000mwwqppppppqwZQC0ZmwqppdpppppdpOv(-M|uvzXzcvuxx@/(}<=#M| : ; .X +mWhdQu\)[xnx/(}<=#M|{]nvzXXYvcXUJCJLL0Owqmmqppdbkkkhaaaaaaaaoooooooo******ooahbpqZY)[xJLQOOOOOO000QLCUYu> @/(}<,#M1>:  +qBWM*akbbbdpqwmZOOO0QLLLLCJUXXUJCCLLQOZmwpdbkkaoo***#####M#MMMMMMWWW&&&&&&&WWM#*abqmmwqdddbbbddddddppppp0QmqQO\|Zp*dqw + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +B&kLn ; + :: : : , : , : : \ :: : : : : : : : :  +8*Ox ; }<= : : ,: : : [ : : x <=#M : :: : : : : : : :  +WM*pC. ; {] : : : : :: : : : : : , : M| X: > }< : : :  +oakqUXW, : ; ; : : ; ;: : } M| : : : :  +dqLX@/: + : ; ; : ; ; : ] x : :< :: : : +OUnM| = |{, : : : : \)[> :: W } =#M| : W\)[ : }< : : :: +nW : | : : :{ : , ( : ( : : : : W\ }: : :  +; : { XW\: : # ,, @: , < : + : ;; ; : : X : :  + : , : : , , , , : /( : : : : :: :] } : | :  + ; :M {]: : @/ , : : : @/( : :W\ x  + :: : : : \ @ <= : x@ |  + : ( #M : : : : , <=#: +X : : <=#M W\ : + : : ; : :: : : {; \ :/ , : W +[> ,  + ; : ; : : : :: , x (; | ]+X \)[, / }<= M|{ X x W  +; (}< M| ; ; @/ # : : + : >x + x= W\+ >x :( : + /:  + [: : = > : = : =# + X \ @/ }<= | : : : : : : M|:  + # : W : , =:M ]+ **. +(}<=#M| ]+ : : : : : ):  + # ;; }< : : = X: >; .u.. n ** [> @ : , , : : M , (} :  + \ ; ; :: : , @ : # + .nn+.. +} M ,, : : : [> : , ;  + } #M|{] : ; : : ,: :@ : \ + u +] X : , : { : : : : : : + : : : ; ; : : : {] , ( < | *. >x@ : = : , : ,: : : : : : +; : : ; ; ; ; ; :: X ;) .+ .*#M| ; : , : , : :: : : :  +; :: : : : : ; ; M| X , *. **. .*..)[> ( : ; : : : : : :: :  + : : :: : , ,# : : : ]n zn . * .x#M| : : : : : : ,( |{ : :  + ; : : : M ) : : ; , :x@/.*u=xnuzXQLZmmCnx@ :: : : : : x ;  + ; ; : : , ,: : ; : qo#&W8o*B*o#ok*oOu{]: : :: : : : x M ;  + (} ; ; : : : : ;; : >xY@M*#M##M#MW&#*##hJ@ ; : : [> /(}< | ) ;  + ; ; : : : : : @ }<=#>h%MWWMWMM##M%&M#M*#kv]; ; : <= :: @/(} : : + ,@ ;; ; ; : : { : { + /do8&&&&8&&8WM&$MM#*ooakc@ ; : X /(} : : :: :  +: ; ; ;; : : : x@/( , : :>xL-qWMM8&%8#hOUUwkW8&#o**oakz{ ; : / : : : :  + ; : : : :: ; : : : <=\MMWWMW&#pC>x@/ <=#M0*W*#**aaJx: : : : , :  + <= ; ; : ; : ; ;; : : -ub&MW##k0(}< ; : [>L*ooooahx; :: = : , : :  + : : : ; ; ; ; \; <xpa*b0XOM|{; : : : M|Zp*ahhY[ : # : x , : :  +@/( ; : ,x ; ; ; ; (}1{mpqqU_XW\) : : | W {QMooakU#M: : , = {] W :  +|{] :: ; ( | ; ; ; : M ]]U0C0[>x : M ,: MO%W%&v\ x , { :: : +X>x@/ ; ; ] : ; ; :\ >x. *< : ] , :=#M|{] :\ >Xqqbc< ] : : : +kq0Yv]+XW\)[>x@/(}<=# ;; : :( M ?n; ; x@/ <=#M +XW\x[>x@/(xvXnXCvx*XW\)[>x@ (}<=#M|{]+XW\)[ @ ( ;  +&W#**ahppwO0QQLCCJJJUXccv@/(}<=#M|{x+XW>+[>*@xvu<=#M|x]+XW\nvczXC0ZmmwqpddbbkbbbkbOfxQUUJUYzzzvuczzzccc( .* . n+ \.x +$B%8&&WM###**ooaakhhhhhkkbdppppqwmZZwpqwmZ0Zmwwwwwwwwwwwwwqqpdbbhhhaaooo*##MMMM#*aaoadppppwwmmmmZOOO00m]+> +<, @/|}>  +@@@$$$B%%%88&&WWMMMM#####*ooaaaaaahhkhahhaahaaoaooaoooaao****#MMMW&&&&8&88%B%%%888&WWM##*ahhkkkkbbdddbbqO0qwOJ)jZdhmqO + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +&bY*.. .* | : ; ; ; ; ; : + : : , : :  +Wqu +XW\ @ : ;; ; ; ; ; ; : (} : ] ] : : :  +M#bC. x@/( : ; ;; ; ; ; <, W: @ , :: : | + : : : +abmv=#, \ : < M : : ;; : + (: :{ : : : :: / : : : +0c+X : [ ( : :+ x: ,# : [>x ] : x } : : : : : ;  +* :: #M { ; : # : : ) >x >: : |{ x@ : : : +X:: [>:  + ; : ;; : +X : / /( < : : :; : ]: : @/ M  + ; } M: : >: , M| : : :=#M : X : M| + , [  + ; , \, : : : W #M {]+XW\ ; : : : >x@ +X \ ,} =  + : : /( ; ; : : : ,: : ; : :  + : : ; ; : : : }< ; ;; ; x : :| x /(} /(  + : +X:\) : <=#M ]+ : : } ) +....*.M|,; \ , <=# : ,[ , , | :  +:> : : X :} = M| XW [> }< : : : : : , ) :  + XW: , }< : ( W\ [ :/ }.* M : \ @: :: : : : : (} :  + @ : ; : :: + @/ }< # | ]+.X c[, :< M ] : : ,: : : ) / <=# : ;  + } ] ; : , , : x XW )[cx.+ x= : W\)[> : , X : :: = M : : ;  + X : : : : : x / **.XQcu..XW\)[>+ x < { , : : : :: : :  + : , | : ; : : : , , { + ..JYnu.*z.nv# x]: , = ]: : : : : :: : + : , : :: : : : [ x <z.c.*... x)[>,: : \)[ : : : : : ; : +: : : : : @ ( : : W @ , = M ;XW\)* +} : : :: : : : : : ; : :  +: : : : , : ,: : : [ : (} * +] XW: : : ; :: : : : \) ; ;  + : , : + : , : } #* ] + ..ux <= , : ; : : :: [ # ; ;  + ; : : : : : : \). *....*#M ; : : : , < \: ;  + ; ;; ; M| +, : : , , ; =nn* ** ) >x : : : ; M )[>x@/( : ::  + : : ; ;; : , : x@ : | +X \) ...*(ucu{M|{:: : x : : +X } : : :  +# ; ; ; : :: )[ : @/0xqpbow***o#hwz>x : { : , + : : : : + ; ; ; : : :M , , |cYd@*WM*#M#*omY|{ : ; :: x : : : :  +}< ; ; : : : ; : : ,: : )[n[*Mo**M#&8W&88&WMaJx ( = ; :) / : : : :  +: ; : : ; ; ; ; : : :}{nh*M*M###*#*o*%WM#WM#k|{] X ; : \ : :: : :  + ; :: : ; ; ; ; ; , {]O OhkoooMMWW8&&8@%8&Moo*ML}@ : : X @/ : : : :;  + : : , ;; ; ; ; : ] [>bddqwqbho*kp0XW\]{nXJkM&W*M*n{ : : (} , : \ : , :  + >: ; M XW; ; ;; ; : /(}nOwZmmpkbZL)[>x@/ {]QqM#*&w++: : , x /( =, :  + , ; } : : ; :} M|{xmwZmmOmQ1/( : +XW , @ |kMa&X|{ + , ) ,, , : : + ; } : : : W\JcQqOmZn<=#M : ; } : {*X#Mo#cxx , , , , : , +,: ; X >x ; : : : (+{*ohoO] : (: ; : ;@c*%$kuM , : / W: : :  +; ; :/ # ; : : }<=, | ]xuZkO[> : : ;; : : ]tLOn>, /(} ; |{]+XW ( <= , ::  +x@/(}<=#M|{]+XW\)[;; ; >x (}; ; ]+XW\)[>x@/ + #Mx{]+XW\)[xx@ ?}<=#M|nc+XWuczXcvn(}<=#M|{]+X +) .*/( +akbkhhbpwOLJUXzXXXUYXXv+XW\)[>x@/(}~(zx|{.*uXUYzcvcXYYUYcvccv* WU0ZwwmwwqpdddkkkkammpwqwmZmwwwwwwwmmZZmcY0JJw(1Z{?*nwX +%%8WWWWM##**oaaahaaaahkdpppqwwmOOO0wqZZZmwpddddbbddpmQcLmwwZOz/Jmphaaooo*#MWWWWWWMWWWWWWMM#***ooaaaahkM{_ + 1] W{t ?< +@@@$$$BB%888&WWWWWWMMWM##**ooaaaahhhaaaaoo***#####**ohdkaooaoo*o*#W&&&&88%%%%%%%B$$@$BBBBB%%88&&&&&WWWWabbMhkC\0#$%h#C + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +ok0v. ++ x : : | : : , : ::W : : ( : :: : +Wqu ;=# ] W @ : : X + : : } #M , : : M| , , )[ ; +*kZv ; W ( M :: / ; : , : #:: : \ , M:  +qLv> ; ( =# : +XW\ : M ; : x = M ) (  +}< ; X ; ; : ,W ,: : ; :  + ; ; ; ; ; : }< : ; ;; ; = ,  + : :: ; ;x@/ } : W , ; ; ; } +X: [>x@/ <= : , x:  + ; \ x : :# XW\) : } + ; ; ; [>x :: : : , : M <=#:  + ; } : , [>:@ = : X @ ; ; ; : : : : :, }< : , / # :] : : + ; | ] ) : : | W ; :, | : : x@ : : : : : , :: :} | , : : :  +; ) }: ; ; : : { [ ;;/ ;=# { , ; : } : : ,: : : : :  +; < ]: ; ; : : :> ,| x , , ; : +: : : : :: : :  + : :: : : : : :# ;)[>x@ : ; ; , x : : : : ; : ::  + : : : :: : : :W }n= +.{] X )[,x # {] ;; , : : : : : ; : :  + : : : : ,+ :: x X + /(}<cuM|{] , > ( : :: : : : : ; ; ;  + ; : : , : ,,\) >x /(+ xM {Un x.vCux@ =#M|{ X: : : :: :\ ; ; ; ; + ; : : , : : ]u .)<>Qzx. .v* { Wu * x : : : : ( : ; ; ; +;; : : |{ : : : :@ *cxcOXvn *u) >x@/.}< : : : : { : : ;; ; ;  +; : ;; ; x : :> , : |..*. ..xX.@/(} +* ]: : x@ : : : [ @ : : ; ; ;;  + : ; ; :: :\ ,@ : >* x. + { + u> ; :=# : : : : : ; ;  + ; ; ; : : < , M .zx.. + x@ +..= : X > ;: : ] : ; : : ;  + :]+ ; ; ; : } , : [> Lv.nn* *v.W: :/ : : # : : : :  + : : ; ; ; : : : : ;; #cxYn.x....*.YX ; : ] ) : : ) :: : : :  + ,: M : : ; ; : ; : }<= ; Cu.CY*...* uX] : , : : ,, : : + : :: : ; ; ; : \)[; :<C#.n....*...cx@/( = M : < , : : ;; + : : \) ;; ; ; : @ : : Xohkdkb0kdkkbZbZ{ ( : : W\ :M : : ;  + : : / = ; ; ;; : , W : /oM8#*Mb#bkkkqqO>x@/ < ] :: : : , \ x, , :  + : =# \: : : : W : : |ZpobqddkkahoohkdwC|{]: \ @ : : ,, , :  + : W : : : : = : :\zxOddpdqqwqppd*abqqpq0x@/ > ,# :  + :: ;( {]: : : : , : (LL00OwmqddbdqZO#kddpwmZwOc]+XW , | : { :  + : : + : : : : : : |{JLUCLOwmOUu(}<=#M|uvYZqpqZOOc/(}<= : W\ : ( [ , : + X ; @ : :: M { W\)cLYJLCCX=#M|{ , [>x@/(}cQZOwZY+XW , : : X <  + : { : /(}ccYLc{]+X : , : XWpmOZmZQ( :: : : , # : :  +, : > : : |vvXvu\)[:x@ ,< : : : (}vwhbdod+ : ; :: , : ; : #  + x@ : M {] : ,/ )czLOO(} =:M : : , ,XWpdo*#@: : : : ;; ; : )  +< : [: : <=#Yc{] x :: ; W [ : (}<=_t|{ : [>x@/(}<=#M|{]+XW\)[>x@/(}<=#M +XW\)[>x@; <=# ++XW\)[>x@/(}<=#M| + \+ x@/(}<=#M|{]+XW\)[>x@/(}<=#M|{ , x (}<vJQZmmZZZZZZmwwppwqwZZmJLZZO00 +c(}ux#M|nuvXUJCCCCUUYXzuxM|{]+.*..[>x@/(}*=#M|{]+XczXXYUCL0mZmZOZZOO00LCUvx@/(}<=#M|{vCmpdbkhao*######MbOMhhMqtoCfcQda +oakkbdpqqpppppppppqqqmOQQQLCJUUUXzXzu.ncULLQQ0ZZZZmwqpdbbkkkhhhhhkkbbbbbdpppmOO00mpbkao**###M*oMW&888&@U>{++)] > |/ +- +&W####****ooo*oooaaahhbdpqwwmmmmZZZ0O0OZmqpdddbkkhhaao**###MM###########*ooooooooo*#MW&8%%%%%M*8BBB$BB$WbdM*dZ(xkB@haq + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +pOz ; ; ; ; : : , : :: , : ,,  +qCW : @/( ; ]+ : : <= > ; ; : [ #: ] / , : : , XW  +Jc ; : [> : ; \) # ; ; : < X :: : <=# : : : x@:  +.. ; @ : +X ;; : \ : : : X [: : : :: , : : x@/ : :  + ; W\)[ ( : : ( : : : :(} : : : /( M :: ) : : : :  + ; ] W )[> : { : ; @ ] :: :x =# : : (: | : := :: : : :  + ;:[ ; ; ,[ ; ; M [ : : , [ ; : : : : : :, , : + ; ;; ; : : :\) }< ; : x = ;; : , X : : : : , :: +; :[ ; ; :: : :(} {]: ; ; # ; : , : \), : : : : : : :  +; ; : ; : :{ : : : , , ( : ; , : :: : : : ; : : [ :  + ; : : : [> ,: : : : )[>x , : : : :: : ; : : :  + ; : : \)[ : < {]+ : > :, |{ , : : : : : :; ; : :  + ;; : : #, )[ : ;|{ +XW @/( = : )[: : : : [ : : ;; ;  + ; : :: : : : : [> M|{]+ , ,: }<: : : : < : : ; ; : + : ; : =# : >x@ : # |{] X \ .*.c/ } : ] XW ) >x : :{] : : ; ; : + : ; ; , :: = , [>u@/( x * .{ , > @/ } : :, ; : : ; ;  +: ; ; ; : (}< , <=#.n.cJOXux. x@/(}; .M {] : : : M :\ ; ; : ; ;  + | : : ; : : : , W\)*.xvU0Yz.+v + W\ [ ( : /,} #: ;; : : ;  + : : : : : ; : ] X ) : }<=. *.cxv* x , {] : ,= ) : : :: ;  + =# : :: : ; ; ; ( =; + W\x* *n :| ( : : \ < : : : ;  + ; ; : : +XW\ ; ; : W: :/ }*znu.* + [ # ,, : : : M X : , , :  + : ; ; )[ @ ; :; : /, : { XJ. .x * <=# +XW : : :: : , /(:<= \ [: : + ; ; ; + : : : :: : x+/(z.*. ++ W ) > : : :+ @ :, : : +: ; ; , : : : ; : M| ].+ +x / : : : : : [ :  +: ;; ; : : ; ; : \O?tJUuXYYCUX|-; : | , : # :  + ; ; : : |{]+XW : *Q8#k*wkppbd0L>x@ :< : : , , : |, :  + <: : ( ;; , } : ?bqwpqdpqdbwpqZOU{]: : :: : : \ , , : : :  + X: : , ; , : ).}YpbppqqqmZpakpmOmOLY@/ : : : :: : , , : , :  + : ; ) ; : : :: [#dmqppkkkbpw*#qmZOQCJYn]+ : : : : :: : : :  + ] ; /(}: : W\ : |: {pOZZqppLCUUXXJZmdpwZOQUXvnx(}<: : X : : , :: : : ] + , ,: : ; : @ , , x@zwwqq0c|{]+XW\)[>x@/(LZO0OLJJJUW\) , #: : : : : :: :  +: : ;; : <, MJqOmzx\)[> : : :+XWvYCCJJUUU<=# : : : : : : :  + : ; : : :>x@ < )mQq@/ ] W\ : }<=#xYOLCCu\)[, : : ]+ : , ,<= |{ :  + ; : : : : ,, ((mpmc| ; XW <: : )[>Zkdhw<=: ;: : > ( ,  + ; : : , : : , {]+*Qc) : }< + , : : -rZZCW : : :  + ; ; : : , :+X >x./C} ; :: \)[> : : ; \)>>. +( : , x : {]+XW )[>x@/ +#M| ;; )[: ;< #M:{]+XW\)[ + /(}<=# : ; ; ; ;{]+XW\)[>uzXXL0ZZZUXX_XW\ [>x@/(}<=#M|: X )[>x@/ }<xnuun +hZUux@uv}<xxncccccccvuuuvvvvczzXXYYJQLXzu>x@/xnxxxxnuuuvvuuzJQZmmwmwdbdbkkkbbbbdqwZQQJYXzzcXzcuxnnxx@/(} XzU0z[0x1.zOw +@$B8WM##***oaahbddppqqwwwwwwwqqqpqwwwmwqppqwqqqpppddddbbkkkhhaaao**#####MWWMWM#**oo**ohhhhhkbddddppppwbuX-; ]_ : (( ~+ +@@@@$BB%8&WMMMM#*aahkkbbbbkbbkkhkbppbbkhhhhhkhhaoooo****####MWW&&8888%8%BB%%8WMMWWWW&&WWWMMM###*oo***o*bZObdZL1fq#%qdZ + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +mCn@; { ; ; : } ;; ; : / : : : : : [ @ :: : :  +c#M|, )[ : : M| X ; ; / X ; ; ;; ,] : : {]+ W: : | : \ [ :: :  + \) (}< ;; : : x : ; { ; : : :x < , { : } : , ) : : : :  + {] ; ; :: : ; > | : : [>x@/ , {, ) x:: : : : : : :  + :W\ [ ; ; : ) : :: = ) ; ; = : : | X : : : : := : + ; : ; ; : } # , X (} ; ; } : : X | : :: : : : @ : +; : : : : , @ M|{ : ;: + : : / ,{ +X, : : : :; : }< :  +; ;: : : : , ) ; : , x : : : : : : : : ; ;; ;  + ; , :: (: @/( : ; : : , : ::)[ : : : : : : ; ; ;  + ; : , M : \ >x : # | , >x ( , :: : : #M|{ , : : ; ;  + ; : : > , | W\ ; } {] X < \ : : :: W : : ; :  + ; : : ] , : : :XW\)[ .@/ , , : : > | : : ; ;  + ; ; ; : : : W\ @ ..=# +XW , , W ) : = [ : :: : ; : + : ;: ; : : : / , {]+XW [ xvn(}< + \ = : W / # : : : ;; :  +: ; ;: : : , | :[ : =#M .x.cW @/(} =# { : : :X : ; : ; :  + , : : : ;; : : #M XW0Ux* ( =#M| . + ) , : x < ; : ; :  + : : : : ; ; =#M ] ;[ x *xuYZCcz.]+X..+ ; } { , : X ; : ; ;  + : : : : ; ; : [ x :: # | .vYZQYu+z. + M|{] , : : : +XW : , : :  + : : : <= { : ; ; # | : ) >..**.XuXn...+ \ : : : : : = M : , ( ;  + : :; , : ; :\ ; := Mxn. +v. +; }, M : : @/( : {] : x: < + :: : + ; ; [ : : : : : : W )[vccvx... + {] :: , [ : / : , +; ; ; M|{ : :: : : ; : } =cz *v. .*..>x ,#M ] :: @ | : W : ,  +; ; ; : , ; : :: : : X \Uu*... *.= ; : , :, : , [ : :  + , ; ; ; ,/ <=# |{ X :: @/(}n* + X : # : : : , :: , , : :  + ; ; > ; : / : #MdOmOOUOQL0CL) : : : : : : , , , :: : ,  + : ;; ; , : : : W\w#W***h#kkadqU]+ : : : : : : , : : :,  + / : : :: ; (, : ] >: (vkhppdbhdhohbkqCn/( ,,] \)[ x@ , : : , : : : >  + : ; ; : \ =: {zahdpwqdpwwh#hdqppQu+XW : : : : : : : + : [ , ; ; ; , [uJpqbbkbkahdb8oddpwZOQX(_<= | ]+ x@ :: : : : : : :  +: , ; : ; : |{]+X <Zapqpddddwz[(x@unCL0wwm0LcXW\)[ : : : : ,, , ] : : :  +; ; : , : : , +upqpdpdpY(} |{]+XW\)[YCUvYCz=] ; : : :#M| @ :  + ; ;; : : : : ) x]ppdpqdC|{] ) , ;: #M|{]cLQCu}: : : :W , >,  + ; ; : :: : , ; #)Xdwqwc\) @/(} : {] ) +/z00Ov- : : : , |  + )[> ; ; : / ; +X \Xdahaw(; ; ; [ + ]+qddk[>: : : ]  + # ; ; : : ::(zC*W&w{: ; ; :M : -{CwL#M : \)[ {  ++XW : : : :W : : ]xL0*C[:: ; ; : [ x :=#M|{] : , ( |{]+XW  +@/(}<=#M|{]+XW\)[>x /(} | : \)[+x.*.} =#M|{]+XW\)[ /(}<=#M|{]+XuJ0000Y/{~<=#M ] W\)[>x@/ |{]+XW\)[.../(  +&okbbkbhahkbdZ00QCXcu]+XW\)[>x@/nvCOwpm0X+cCLC0ZmpqmZQLJJLQOwwwmOQCLZpppdddpqqqmQUcv[>x@/(xnxxM|{]+XW\)[ zuvLu-J#< +;  +@@@@@@$$B%88&8&WMM*ahbdOJ0qpddkkkhhaao*****##########*o****ooo**********#M###*ohhhakkbppqqqqqqwwqqwmwwbn#~ -+, \>\>x@ +@@@@@@@@@@@@@$$B%888&M##MMM######MWWW&&&&&&&888&&&8888&&&&&&&&88&8888888%%%88WM##MMM##*oooaaooooooaaoaohpp*adZ/ck#&dbw + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +Qb0u : : : : :: : : , , , , : :: : <: :  +xv/ : : : @/(} + [ : : / : : , : , : : : :| , :  + + ;; : , , x < : : , >x@ , : ,/ = : : : :: , + ; ; : : , +: : (}< , @ + , , ) : : : :  +; ; : : ( , , > : : { : : :: , , : : : : :  +; ; : : + , :: : > : , : : , ,, W : M : :  + ; : : @/ } , , : | : : [ x : ( : , :  + ; ; , : ] : : , }<=#M|{ : } : x X : :, :  + ; ;; ; : : , : : = ]: : :XW : } : , ::  + ; ; ; :: : , : :=# , : W: :: ( {] , X , , :  + ; ; : , : :: : + , ,| ]: @/: : ] W , = : : : + : ; : : , ; ; , : < M , : @/ =#M : ,,[ | , : : :  +: : ; : , ; ; : {]+ \)[>x@/(} , : , : : : : \) : @ : :  +: : : : [ / : ; : : }x= |{: X \: >x@/ # |{: : : : {] : :, : :  + : :: , < , : : : X. *x (; .n{ :, )[+ / : [ : [ < ::  + : : , ; : :(. + .|{+ X + x : +M| , : , |{ +X W :  + ; : :x , :: ; : ; +u+ +xu.* #M| X+\ : :: W : (} / :  + : : : |{] : : : :: ; /z. + .xc*. . + +( { : , : ,: : , , | : : + : : : : : : : : ; ;:]x *. + + { W x : : : :: : : : : +:: : ; : ; : : : +XW\ : x@ *...+; .* [ :} : : : , : : :: : :  +: : ;; : ; : , < |*. zvxxn. * <= : , : : : , , : : : ::  + W : : ;; , : ( :>XvnY..x.* ...X : :: : : : : : : : : :  + , : ; ; = : + : MU uU..* */ : , W\)[ : : : : : :  + : : ; ; :|{ : / M : >.. * xx] : , :: : ,{]+ ,\)[ : :  + : : ; : :/( : , , }0wdqqZ0qwwqJXmx@: <= ]+XW : : :M + { :  + ;; ; : , : ; : : < {]xUW*a*kaakkhpqmOn{] : : ; : : x : + ; W : ;: : : : : : )[> @ohdkkkhbh*ahadqdOx@/ : ; : :} ,  +: @ < ; ; :: : , ; [ (}<=.xdohhbkhkdpkWhpqqwZwOUx+ ;; ; : ,] /(  +: X : ; : : , : : ;XvuhdbkkoopZ0C0MhddqwZOmwZOz(} : :XW\  + : ; ; : , /( M|: ;; ; /dmwqbb0{]+XW\)[>nLLOqpwmOQQCYuW\ @ +X ,)[  + : |{]: : /(}< W\ ; ; Mvdwqdmz)[ ; ; {]+XU000CLLCLv< : ,,{  + ::) : | / ; ; >Xpmpq](} = ;; ; : }<u0CUUJUJW\, > | : ,  + : :: { : ; /LUkqZY|{] W : ; ;; :W\U0q0QQm} ,{ > : M  + : : : = , =#M|{po*wY)[ : ; : : <=LppdbCX : : { : + : : : ;W\) x@ , _YJkL} : ; : : + ; ~]>xux ;; :{]+XW : |{]+XW\)[ :  +=#M|{]+XW\)[nvn/(}<=#M|{]+XW\)[>x@/( |.+ W\: , ; { + \)[>x@zYYz=#M< +xW\)[>x@/(}<=#M|{ : [>x@/(}<=#M| +qBW##*oaaaaoooohbddpqqwZ0LCXcvccznnc\jW\uXzUUv(}<=#M|{]+XW\cUcxzYXUL0OZwqwwwppwmLYYUCQLCJUYXzccuxx[>*@..nxnuuvXXJLQLCU +d@@@$$$$$$BB%%88&&WM##**ooaahhkkkbdpbkbdpqpppqwwmZ00QLQOmwpbkkkkkhaaaaaaoaaaaoahkbddddpqqwmmO0QQQLLLCLLJ.CYYLL]YX[{nXm +d@@@@@@@@@@@@@@@@@$BBB%B%%88&&WWM###****ooooooooaooo***oo****##MM#MWWWW&&&WWWM########*ooaaahkddddppqqqO@? +>} {/+ ~ +d@@@@@@@@@@@@@@@@@@@@@@@@@@@@$$$$B%B%8&888&8&&&W&&&&&&&&&8888%%B%8%BBBBBBB%%88&&&888888&&WWM#*****ooaaoaqwk*pdjfd*B*hb + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +apQn ; : :( , [ : , ,X : , : : : : : , +pLn ; : : + : > , @ : : + :: : : :  +0z ; : :> : >x : = , :| ] , : , : / : : :: : }  +vn ; ;; ; M| : = ,]+ :: : = , : , : / : ::  + + ; ; :> , , +: +X , <= : \ : M , : : :  + ; : ; : M , : = x : : :: ) M : : :  + ; : ; ; : , : +X : : : ] : [ : , , :  + ; : ; : : , : @ | ]+XW : : X : @ :  + :: ; [92m: : : ; : {] XW ) : : :: @ : { , / , , : : + : ; :: : : ; ; : : : : : , : : , < : : , : : :: +, ; , : ,{]+ : [ : : : , : , : : ( :: : : x@/ +X : x }<: :  +; ; : ] W , , ; : : ; : x : : : :: # }<= :  + ; ; > , X \ ; :: { , @ , |{]+XW\ [ , : : x@:( } :  + ; : # : ; : ;x /( M {] ;W\ : ; : : : = : ] :  + ;; ; \ : : : : ; | ]+ ) > :: }<, : X )[ : : : : /(}< /  + ; ; ::<= : : : : ; >x@ +<= + + W ,:@ (}< : , : : : : : ( M|: ; + ; : : : :: , : : : =; |{+ * / }< # { ,: : : : : : : : : ; + ; : ; : : :: : #M|{]+ >+ ..* +. * )[ x , : :: : , : : ; :  +; , ; ; : : : #M + x* (} : : : : : , : : ; :  + : : ; : : : , + W )..x. *. +] : : : , : : : :: : : :  + :, : ; ; > : : >x ;} =.c...+; *> @ , M ] : : : : : :: :  + : : ;; ; < , : = : _\v. .* *#M :, : : )[> , <=# , : :  + : : ; : ::W\ ; , , \) /+}<Xc*.. +W : @ <= M| : : } )[ / : :  + ; ; : : : ;; : : ( M ++XW.* * .} + : : : :: , , : : + ; ; : , ; : ; : , \ >zCYdwbQdqdpZmzv\ : ; ; : x ,{ , +: > @ : : : : = ; : /( :#tY$oa#k*hhkbwqLJ<=: ; ; : <= [  +: ; ; : : \) ; ; : + +kabhhaaoa#*aakkkZn) ; : :]+  + : : ::M : ; ; ; @*_qaoaahbkkdqhMhbdbppdOz# : ) #: +X  + : # , : ]+X; ; ; L{]hdhhh*ooohhoBokdqwwwqw0z[>x \ : =  + : : , ;; ; ; +whkpbhdOznM|{xncCmdbhbpwmwqZQx| ,W [ { , \) {  + : < : = ; : [ :+ (vbpddqL]+X ; : (}<=#XZddwwmmmU> : : x, : |{  + ; : ; @ : (} #M {Qpwq\)[> ; ; , )[>x0ZwZOmXM ; , { :: : : + : :: ; |{ W : { \vrphwC{ , ; ;; : , |{vkabom[ : , x : : \:  +: ; ; ;>x , : [ }1pWQC{] : \) , ; :{ ; @j0kpY : :\)[ : >x@/(}:  + ; ; ; :+XW > : +ntCu[> : :[ /(}<=#M|{_x.._; > +(}<=#M|{]+XW\)[ : <=# +  +U@/(}<=#M| ; )[>x@/(}<=#M|{]+XW\)[>x@ (* =#M ) :@/(}<=#M|{ncCQOZZpwmQY}<=cM+{uzYXYYYXcvn(}<=#M|{]+X.* >x .n +@B8&WMM*kZCLUcczYLLLL0mppddpqppwm0Q00mQQ0LJCJz)[>x@/(}<=#MuJOmOZwwqpbbkhahahhhhhbpm0CYJOZZmZmmmZOO0QLLJLQCCUzv} = M|.c +@@@@@@@@@@@@@B$BB%8888&WWW&WWMMM#*ooahhahhkbddpppqwmmwmwpbkkhaaao***##MMWWWWMM#**aoahhhhhhhkkkhkkbbbdqdJ=OzcJ]+.W )[>z +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$$$BB%%88888&WWWMM#####M#MMMWWW&&&8BBBB$B$$$$$B%%8&&&&W&&&&&&&WWWWWMM###*&Y~]-_]_@ ([u=+~ +&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&WWWWWWWMMMM#####M####MMMWWWW&&&&&&&&&&&&W#####MWWWMMMM######*******akk*obmjYko#bkp + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +J* , ; ; ; ; :: : , : : , , ,: : : :  +0x : ; ; ; ; : : : : : : : : : :: M,  +Qx ; ; ; ; ; : : : > : : : : : : : : : , =  +z. ;; ; ; ; : , : : : :: : : : : : : ( # : :\)[,: }<  +u. ; ; ;; ; : : : : , , : : ;: : : : \: : : :  +. ; ; ; ; :: : : : | : , < #M: : :: , : : > : : : :  + ; : : : : , :, : : ,M [> ; ; : ;; : , { : : : : : + ; : M : : : : : :: /(}<= : : : /( # : ; ; ; ; [ : : : : : +; : X > : : : ; : ; ; , : : + ): x : : ; :>x@ , :|{]:: : : :  +; :: # : : ; ; : ; ; , : :; :@ |, , : := W,) @ : :: :  + ; ), , : ; : ; ; | : ); ./ } :| , : :W\ ]+: ; :  + ; , , ( : : ;) > + .*=#M|:] : , :: : : : |{]+ ; ;  + ; +X , , : : =#M { +X [> @ : W , : :: : ; : ;  + : : : : , x: , :: W ) x <uzx {] } : : : : ;; | [ : ;  + : : : : : + , } =# ,{]+X .v Jx ( # {] W : @/ =#M: :\)[ : : : + : :: : ; : , W\)[>Qmn.. *cM {]+X \)[ @/ , x : : , :  +: : ,, : ) : : , / } ux.Y0zX.+ )[>* }* ; : , :  + : : :: : , , + .vzO0u/ < *x. ]uXW\)[ ,: : ,  + : >x ,<=# : : , :: X, x@/. +.#UuL].ux. .un@/ [ , , [  + ; ; ; ; : : :: ;M {.* +uJ..* .=#M| \ : , , , : # ,  + ; ; ; ; : : | :) >x*cunx..z.*.uu , : : : / , : :: , :  + ;>x@/( ; : : , ; = M|0x.cc.x*cXc/( : : : : : : : : : :: : + ;=# ; ;: : : , ; \ >Ynvuvnuunu{: :: : : : : : = : : : : +; W x ; ; { , \ :: : < ] ; : = MLCx.*....>x : : :: : : : + : : : :  +: # ; ; : <: : :: , }<: ; \ [zuxnuuvYUL|{]+ ; : : :: : @ : ]+X : :  + , ; ; : : : | X; ; Upq##WWkB&WW&#aL@/ : M, : [>: : , , ,  + : ; ; : ( : : : > @/ ; ]CL$BWM&*WM*M###*0c]+ \ , | : [ , ,  + : :: ; ; , : : : : : xXL8*o*o*o##*#MM#*odv/(} , >: : M , >x@ ::  + : , : ;: : : : : , <=fh*W***oakbddqdMohdbbdZ]+X , #: : : = : :  + ; : : : ; ;; ; : : ]+XOCbbkakbkbddmQ0pMbbkdmmwpX+( :, ] W: : : , : : : + ; ; : : ; ; ; :: : :>xQkppqwpdppqOJx\)[>x@/(LwppZZ0]+: [> :: : : , /(} : ;  +; ; : \ x ; ; : : ;+ vYCCZwmZC>x@/ +XWXQ0CJ@/ : : : :,( : ;  ++ ; : :} | : : : : +*. .ucCQz(}< (}<n0UJY] ; : : , , :  + ; ;; : +X : , , * ..x#M| , x@ ( + ]U0JQc@; : : :[ { : ::  + ; ; : (, : : , =#M|{ XW\ >x : : : :: }JOmw| : : (} M {]+XW\)[ : :  +. ; : ; : : :: , ; ; : : : :XW\)[>x : : ): : : :  +J(} : ; : ; ; ; )[ x@ (}<=# :{]+X; + : : : : /( |{ ;;)[>x@/(}: ; : ; ; +bmYXW\)[>x@/(} ; |{]+XW\*... *..<=#M|{]+XW\)* x@/.xnvvun..+XW\ ; ; :M|{]+XW\)[>.@/(nunxnn{]+XW\)[ . +. ~xM ]X* +8&MoohqqwwmOQUXXzXUL0OO000QLCJCJUUYUUcvcvuuczzXXYUCCCCCJUUYUJUYXzzXzcuxxn\uCQ0QCLLQQLQ00OZOO0O00QCCQOQq}+ _;{X :)|jx?< +M##*aaahbbbdpdpqwwwwqwwmmmmZOOO0O0QCCCJCCCCCLLQLLQ00QQCU. zJL00OOZOOOZZZZZZZmZZOZZZmmmmmmmZmmmmZZmmZmmmZOmdwwX/LboodkU + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +Mwn + ; ; ; ;; : : , , : : : :: : : :  +#Q. + ; ; : ; , :: : : : : : : : ::+ )[ / : |{]+XW\ x  +oqc+ + ; : ; : : : , x = , : ; : : : : : : :  +ZU* + ; : : : : : # :: : x@ }<: : : : : |{, [ : :: : :  +n + ;; [ : : : , : , : W\ : ; : : : : : : :: : + ; : (} # :: : : , >x : )[> <:: ; ; : : : > : : : : ++ M \ : : :: :W : : ; +X : : |{ W\ ; ;; : :\)[> / }< M|: : : :  +; : : ; ; :: ; ; : : : : x <=#M : W ) > : >x : : :  + : = : : ; : : ; ;; : /( : , :] |: ; :  + ; x : , ,X \ : : : : : + < : ], : : M| : : :  + ; # : : = : , [ : : , ,= : : : : : > : ::  + : : : :: + : , \)[ / | : \ : : : : : \ : :  + : : : : : >x: .=# XW : M : ;: : : : \ } , : ; + : , : : / : ( < {] XW >x@vu}<= : + > : |{] XW : } : :  +: : , (}< M : XW\ , ,+ x+/(} +#z.xc.Un\: > /(}<= | : W\ =: < |{ :  +: :} , : : , M| ]+XZQ..* .X(} |{. W\) x  + ] x <: : : , + .cu.Uc *x..c+XW\)[ +(} , /  + : @ }< |{]+:: : : : > : . *.zXOXxn u* .u}<= M|{ M , , := ,  + : {]+ ; ; : :: , { : \.* .uQXL.x. xxz\) /:}< ,| , : : : ,  + : ; ; : , : , )[ ; }*uv..*. zz*x. *vv(} M : : : :: : [ : : , XW, + ;( # ; [ : : \ :: ] X.zUzux..v ..vv|{ , : : : : : :} : : : : +;{ ; , : : < : x@ (zJnzUn* zzzY[ : : : : : : X ,[ : , ;  +: :; ; \ :> : : :W : ;|{ +UYxvvvnuvxnv= : : : : : : , / , |{ : ;;  + M , ; ; ;: M|, X : : {; ; _/(LCx....*..W : :: : ] ) : # , x : :  + : ; ; ; :x ,: : :W )[; : :<]+YvnnvvvXUOt1=# : X : = : : ) , :  + : : : : : {: : ,, : : : >bho##&hM%WW&&#dO)[>x } ,M :; : =# , :  + : : : : : : ; ,: : #@%@B&%&&%WW&&&WoOz#M| , [ ( : : :, , (}: :  + :: : : ) : ; ; :[ / :XWOW8BWW&&8&8&&8%8&WMdx[>x : , : : , : :: : : + ; : :: } : : ; : : : ,@bk&&%&8&&WMMMM#8$&M####Z)M : : : : : : : : ;; +; ; : ] :: : : : ; : =#MbW#MW&&M&&8%&*bd*aa&W*aaoon[ : : : :x@/ }< | : ;  +; ; ; X:: : ; : +XYd%&##**WWWW*qu{]+XW\))zw*#akaC_ :: : : =# [ : ;  + ; ; :M + ( : :: >xm#M#o*#M&WhbYW\) : : M\Cbbdbm} ; : ::{]+X : :  + : ; ; [ : : # :) : <=0Yc0dko*&oUux@/ : : ; ~XbqwmQ= : :[ <=# X : :  + :: ; ; : : : , , ]+kkO)[Oka0(}<= :: : : : .vZpwmZQ\ : : X: : :: :  + : ; :: : : : , W : xWMW*W#OM|{, : : :: : ;[LMo#*X< : : , : , , + + : ; : :: ; : ; #oMM88dW\ , ; ; : ; /(}+=>?cUmLX+ : : : : +.* ; ; : : ; ;; * X )[C*U* }<=#M|{vcccvvx>x@/(}<=nnncJLCLx+[ (}. *M|{]+XW\)[ : , + ;  +OLc#M; ; : : + ..xnvczC@/(}[=LCUQO00OmwwqppppppqwOLLOmwqpppdpppppdqQx1~] vvXzzcvu/(}<=#M|{] : +/ <nc +#*hqC[>x@xn}<=#M|{]+XnuczYYXuzYJCJJLQOOwqmwpppdbkkkhaaaaaoaaoooooooo******ooahbpq0cx@cCL0OOOOOO00QQLJYU@/:}<=#, {](X  +8&W#*hkbdbdpwwmZOOOQQLLLCCJYXYUJCCLL0Ommqddbkhaoo**#######MMMMMMMWW&&&&&&&&WWM#ohbqmmwpdddbbbdddddpppppwQ0wm0J(rmk*qpZ + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +B&kLn ; + :: : : , : : : : >:: : : : : : : : :  +8*Ox + #M| , : ,, : : @ : : ( M|{] : :: : : : : : : :  +WM*pC. ; XW : : : : :: : ; : : : : , ]+ ) :/ #M : : : : +oakqU)[ : : ; ; : ; ;; : # ]+: : : : : +dqLX}< \ : ; ; : ; ; : W ( : , M :: : :  +OUn]+: :| +X : : ; : >x@/ :: [ # |{]+ : [>x@ : #M : : ::  +n[ ; + :: : X : , = : = : : : : [> # : :  + : X )[> : { :, , } : M: :\ : ;; ; : : ) : :  + : : ; : : , , : <=, : : : :: : W #: +:  + ; : ] XW : }< , : : : }<= , : [> (  + ;: , : : , , , :> } M| : (} +: + : ,= {] : : : : : M|{ \) : :: M|{] [> ,: +: : : ; :: : : , X ;> : < : , [+ @/ ,  +: ; : ; : : :: , ( = :+ W\) >x@ < #M| ]+X ) ( [  + =#M ]+: ; ,}< { : : \ : /(+ x| [> /(, = , , , :\ <  + @ ; | / : | : |{+ ) > }< #M| + : , : : : ]+  + { ; [ : , | ] W\ **.. + =#M|{]+ W\ : : : : : x  + { ;; ;#M : : , | ) / *u.. +n ** @/ } : , , : : ] : =#: : + > ; ; :: : }: { + .nn .. + # ] :, : : @/ : , : : + # {]+XW : ; ; : , : } , > + +u ; W ): , , :X : : : : : :  +: : , ; ; : : : XW , := M : + +.. +/(}; | : , : , : : : : :  + : : ; ; : ; ; :: ); x * *.{]+: : : : : :: : : :  + :: : : : : ; ; :]+ ) , *.. +*.. *...x@/ = : : ; : : : : :: :  + ; : :: : : : { : : : :Wn zn . * *x{]+, : ; : : : : = +X: :  + ; : : : :] x: : ; , : (}<x.u|xnuzXQLZmmCn(} :: : : : : : ( ;  + ; ; : : , , : ; : qo#&W8o*B*o#ok*oOuXW ; :: : : : ( ] ; ; + =# ; : ; : , : ;; : /(Y@M*#M##M#MW&#*##hJ} ; ; : @/ <=#M + x : : + ; ; ; : : , , } #M|{>h%MWWMWMM##M%&M#M*#kvW ; : M| ,: }<=# : :  + } ;; ; ; : : :X : :X \ /do8&&&&8&&8WM&$MM#*ooakc} ; : ) <=#: : :: :  + ; ; ;; : : ; (}<= : : /(L-qWMM8&%8#hOUUwkW8&#o**oakzX : : < : : : :  + ; ; : : :: ; : : : M|\MMWWMW&#pC/(}< M|{]0*W*#**aaJ( : : : :  + M|: ; : : ; ; ;; : : -ub&MW##k0=#M ; : @/L*ooooahx :: , | : : : :  + ; : , ; ; ; ; > <(pa*b0XO]+X : : : ]+Zp*ahhY@ : :{ : ( : :  +}<= : : ( ; ; ; ; =#1{mpqqU_)[>x: : :+ [ {QMooakU{] : | XW ,[ : : ++XW :: ; = +: ; ; ; ] ,W]U0C0@/(; ] , , ]O%W%&v> ( X :: :  +X/(}<; ; W ; ; : > /(. *.M : W : |{]+XW : > /XqqbcM W : : :  +kq0YvW\)[>x@/(}<=#M|{ ;; : : = ] ?n ; (}< M|{] ;\)[>x@/(}<=xvXnXCvx.)[>x@/(}+=#M|{]+XW\)[>x@ }:= ;  +&W#**ahppwO0QQLCCJJJUXccv}<=#M|{]+Xx\)[>+@/ }xvuM|{]+xW\)[>nvczXC0ZmmwqpddbbkbbbkbOfxQUUJUYzzzvuczzzccc= x . ;n\ ;>.x +$B%8&&WM###**ooaakhhhhhkkbdppppqwmZZwpqwmZ0Zmwwwwwwwwwwwwwqqpdbbhhhaaooo*##MMMM#*aaoadppppwwmmmmZOOO00mW\> +< }<|#>  +@@@$$$B%%%88&&WWMMMM#####*ooaaaaaahhkhahhaahaaoaooaoooaao****#MMMW&&&&8&88%B%%%888&WWM##*ahhkkkkbbdddbbqO0qwOJ)jZdhmqO + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +8aL....*. ;+ : : ; ; ; ; : : \): : , : : : +&bX + )[> }: :; ; ; ; ; : : / =#M : W , > : : : +M#hOx+(}<= : ; =;; : ; ; :| [ :} , ,: : +X \ M, : :  +akqY|{] >x : M ] : ;; : \) : X : : : :: < : :  +OY\); #: : \ : { : @ ( W : ( # : : : : : :  +/( :; :] XW; : } {: : [ x,/( / : :+XW , (}< : : : \): @/  + ; : :; ; \) : :< <= M, : :: : W : < +  + ; :# ] : ,/( : ]+ : : : {]+ ) : + : @  + : : x : : : [ {] W\)[>: ; : : / } \) x , , + : : <=; ; ; : : , : ; ; : :  +: : ; ; , : : #M ; ;; ; ( , : X ,=# =  +: \),>x , :M|{], W\ : : # : x + ...*...+ :> M|{ : , @/ } , , +:  + / , { :) =# |;]+ W; [ @/ <:# { , : : : : , ,+ x :  + [ : #M : =# ) > /, < #M. ]+ > } ,: : : : : , } =# ;  + }< ; : :: \ }< M {:+ W\*X .@/ : M ]+ W\: , ,, : : < :M { : ;  + # : ; : , : : +:W )[+x@z(* .| ] : [>x@/( + )[ : :: | ]+ : : ;  + :) , : ; : , : , :( <=*. cQYnn.)[>x@/ x*M , : : : :: : : : + : ,, +: ; : : : : , + W ..XCnv**znxvn xW\ | W : : : : :: :  +: : : :: : : : : ( *Muxu*.x..*.x@/, , : :>x@/: : : : : ; :  + : : : : } = : , [> | ]+ + )[>x. + #M : : :: : : : : : : ; :  + : : : : : , : : @/+ < #; ; W\ [ : : : :: : : : >x ; ;  + : : : , , : : # { W* *n( M|, : : : , :: @ {: ;  + ; : : , : : : , >x@ *. ..*.{] , : : : : : > ;  + ; ;; ; : + \ , : : , > {v. ** x@ ( : : : ; ] x@,(}<=: :: : + ; ; ; ;; : , : (} >x. .*.=nvc|?+X: : (} : :\)[ # : : : : +{ ; ; ; ; :: x@ / }<ZrZpdoqh#oo#adX/( : { X : : \ : : : :  + @ ; ; ; ; : : ] ,, , , : +XLC@8#&#MW*#MM#odJuX; > ; :: + : ; : :  +#M ; ; : : : ; : : :: : x@u]w&o**M#W8W&88&WW*O(} | ; : @ , : : : :  + ; : : ; ; ; ; : : ; # )kaM*M###**#oo8&W#MMMoX~W ) : : : :: : :  + ; :: : ; ; ; ; ; : : W0)Xkka*aMMMW&8&&@B88W*ooMq|} : : ) }< : : : ::  + : : ;; ; ; ; ; W [ :@1wbppqqdka*hdZUn>[[jXYp#WW*#MJX ; : :# : > , : :  + / ; [ ; ;; ; : / <=#MQwZmmqkkw0n@/(}< XWCZ*Mo&a{; : : , (}<= { : : + : # : : ; ::# ]+XW0qZmmZZm}~= : \)[ }<)OWaMd+X , x,, : : :  + x : M \ : ; : : >zXYqZOwzM|{] : : #M, X.\aWoMLn( : { : :  +, ; ;) /( ; : : : : +d#h*qx\; = ; : : }<h8BWY] : : < [ , :  +W ; ;: = { ; ; : #M| + Wx.Qkqx/ : ;; ; : -C0Y? <=# ; XW\)[ = M|, ::  +x}<=#M|{]+XW\)[>x@; ; >x /( =uM + \)[>x@/(}< + {]nXW\)[>x@/n}.[<M|{]+Xz\)[nvzXzvn=#M|{]+XW\)[ x * <= +*kbkhhkdwZQJUYzzXzUYYXc\)[>x@/(}<=#]]zu+X*.nzUYXcvczYYUUzvcccx [zQOmwmwwqpdddkkkkapOpwqqmZmwwwwwwwwmmZmJuOJJZX[O|?|nLZ +%%8&WWWM##**oahahaaaahkbpppqwwmOOZ0ZqZZZZwpdpddbbbddw0zJmwwmOU<XZqkaaaoo*##MWWWWWMW&WWWWMMM#**ooaaaahk*z|-<<]- [+j@~~ +@@@$$$BB%888&WWWWWWMMWM##***oaaaahhhaaaaooo***#####*oadbhaoaoo****M&&&&&88%B%%%%B$$@$$BBBB%%888&&&&WWWW*bd**bmtzo8@aob + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +wMwz.*+ (, ; + : : : , # : :: , : : := , : :: :  +whz ; { W :[ } : , \ : : # {]:, : ]+ , , , :x@/ :  +Z*qU* [ ( := ] :: : < , }; : : : , : > \, ]  +J0u/; |{ ; \)[> : , ] ; : ( {] }  + M ; : ; ; ; : [ , : : :  + ; : ; ; ; : M ; ;; ; , | ] , , )  + ; ::+X ; ; (}< # : :[> # ; ; ; :, \) @/( < ,M| , : + (} : + ; > } :: [>x : #M \ ; ; ; : ) > @/(,: : : : : :] M|{ : +: :# : / } : ) } ; ; ; : : : : :: # : : < { : W : :  +; + x ; : X [ ; :: + : : (}: : : : : , ,: : M + : : : :  + x # ; ; : : ; @:: <=; { XW , , ; : : : :: : : : :  + + W : ; : : : : , ; ; , \ : : : :; : :  + : ,: : : : : : { x@/(}< : : ; : @ (: : : : ; : ::  + : : : :: : : , [ #M|+ XW,) x@/( { W\: : : : : : : ; : :  + ; : : : ,W\ ,: ( ).+ .(: =#McY]cXW\ /( # , :: : : : : ; ; ; : + ; : , , = , x@/( = .] XQv*...Cv(}< |x]+XW ) : : :: : > : ; ; ;  +: : : : : : :W\. *u@/LUu.. u. X [v* ( : : : := | , ; ; ;  +; : : :+X } : : : : } * nunQCuu*[ux /(}< #M , : : : :X : : :; ; ;  + : :; ; , , : : /(, : X* . *.c.}<=# ++ . W : (}< : ; :@ , : : ; ;;  + : ; ; :: : > }< : /. .n* ; ; n/: ::|{ : : = , : : : ;  + : ; ; ; : | , ,]+..zux.* (}+ ..|{ : / :: : : : : :  + : W\ : ; ; : :> #, , : /*XU..u. * ux[ : = : : , , ] : ; : : : + : / , ; ; : : : : : :; :xuccx....*..u0= : W x, : ] :: : , : : +, ]: : : ; ; ; : | ; :xC XC...*. .YW : } : : , , ,, : :  + : :: : ; ; ; : \ x@ ; MU{*n...*...xX(}< | ] : :M : , : ;;  + : : >x ;; ; ; : : { ; \ 0Waah*ZhkkhampkX = : : >x : ] , : ;  + : : <= | : : ;; ; , )[ : <ha&*aMb*kbkkdwmz(}<=,M| \:: : : , ,> (} , :  + : :{ > ; : : [ : : ]+UpahpdpkbakaoahbpOvXW > }< : : , :  + : :[ # : : : | : ::>J@QqpqpqwwwqqpoobqwqqmX}< : : { :  + :: : = XW : : : : : :=CLQ00mmwdddpwOChhpddqwZmmJW\)[ X : [ X , : + # ; \ : : , : , +XXLUCLOmmQX<=#M|{]+XWxCZqqm0ZJ<=#M| [> : = :: + ) ; :: ] X [>xnCUULCJc|{]+X : ,/ }<=#MYZOZmLv)[ : : , M| ,  + : :X : , <=#ccXCUXW\) : : : )[mmZOZZZz#:: : : ,{ : :  + : : ( # : : +vcXzv>x@ (} : : , :#MLahkao\: : :: : : ; : {]  + } : +XW : : < xnzCOZx#M| ] : : , : )[QZkaMU : : : ;; ; : x@  +M| , : : :+ M|{xXXW :: ; :[> / #M|{[\X : @/(}<=#M|{]+XW\)[>xx/(}<=#M|{] +)[>x@/(}< M|{ * \)[>x@/(}<=#M|{]+ \) > /(}<=#M|{]+XW\)[>xx/(}<=#M|{]+XW ( :=#MvJQZwwwwwwwwqpppkqpdwmw00wqmmZ +ncnzcuxxvczYCCCLCLCJUYXcvxxXW\*..../(}<=#.xxxxxunnzYUUJCLQ0mmwmZmmZZOO0LCYv}<=#M|{]+xcLmpdbkha**#MMM##MoY*ddah)ZO)\YQh +Z#hhkbdpppdddppppppqqwZ0QQLCCUJJUXXXv.nzYLQQ00ZZZmmwqpdbkkkhaahhhhkkkkkkbdpdqmmmmwpkhao**#MMM#a#W&8888Bo((>?_(|: +t_:- +q%MMM##**********oooahkddpqwwwmmmmZOZZOmwpddbbbkhhaaoo**###MMM###MMM#####*oo*ooooo*#MW&8%%%%%8#&BBB$$$$B#*&B**unoB@8W* + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +kmX ; ; ; ; : : > : :: : : :,  +wU[ : }<= ; XW\ : : M| / ; ; : :@ |{ W\ <, : : , )  +Uv + { : @ =: ; :>x { : ; ; M ):: : M| : : : x (}  +. + }: \) ;; : > : : : : @ : : :: , : : ,(}<: :  + ; [> @ = : : = : : : , : : : :<= ] :: :x : : : : : + ; W [ @/ : { X : ; } XW:: : ( | : : = ,+ : : | :: : : : : +;; ; ; : : ; ] x@ ; : @ ; : , , : : : :, :  +; :; ; : : : >x #M ; : ( :; : : | ): : : : , ::  + : @ : ; :: , : =# X: : ; [ ; ; , : >, : : : : : : :  + ; : ; : ::X , : : , : =: ; : : :: : : : ; : : @ :  + ; : : : , :@/ , : , : x@/( : : : :: : ; ; : :  + ; : : >x@: , XW\ : :: +X , : : : : ) , :: ; : :  + ;; : : { : x ; ,] X \)[ }<= |: :) >x@ : : : @ : : ;; ; : + ; : :: : : ; : @/( {]nXW\ : :, #M : : : M : : ; ; :: +: ; ; x { : :/(} , {;+XW\) > *..c< : W )[ x,/( : : X : : : ; :  +: ; ; : , ,: ,| @/v}<v.u* .X x / }< # : : :: : ; : ; ;  + ; ; ; : =# M {*x.uUZYvu.+(}<=# .] X : : ] ,:> : ; : : ;  + +: : ; : : ; ,< : [>x .uX0Uz* n *\)[> @ := : <=# { ;; : : ;  + : : : : ; : W ) x : #M|. * .u*u. +( = :XW : : | x : : :: ;  + | ; :: : ; ; ; := | :\ [>n.. + x ; + \ = : : >x M : , : ; ; + : : : : \)[> ; ; : : < #MXnux. + @ { ,: : : : ]+ ) : M : ; + : ; ; x@ : :: ; < : W )U. *. * .M { \) : : :: : , <= M > @ :  +; ; ; , : : : :: : ( <=zx.. + \ [:x : : : \ ( :: :  + ; ; , : : : ; ; :]+ W* + ( <; : \: : : @ :  + ;; ; : : : : ; : >m(vQLzJCJQLY+X : : + : (: :{] :  + : ; : : ]+XW\)[ : */L&obowkppdd0Qx(} ::M : : : , , + :  + M : = :; : # : ;}hwwppdpqbbqdqmZCXW : :: : : > : , : :  + \) ; , ; : # : x ?QddppqqqmOqakqZOmOQU}< : : : :: : , , : , :  + : ; x ; : : ) : 1{dZqpdkkhkdq*#pmZOQCJUuW\ : : : : :: , : : :  + W : , }<=: : )[> @: + }dwZZppwUXccnuzLOppmmZ0JXzvv=#M| : ) : : : :: : : :  +: , : ; : } }UmwpwLx+X \) x@/(}<=U0OOZQJJCJn>x, { : : : : :: :  + , : ;; ; ]QwOZn[>x /: : : \)[>vYJJJUUJM|{ W ; : : : : :  + : : : : ::/(}< _ xmQq}<: \ [> : : |{]XO0LLX>x@ : : W\) :#M X :  + ; ; : : : :, =#qpZv+; )[ M ; : @/0kbhqM| :: : = }  + ; ; : , : , : XWxoLcx; : M W\, ; : ++|L0C[> : : : , M  + ; ; : : : , : \)[ /[(<U# ; :: :x@/ : : W >x@~.+ = M; , ( : +XW\)[>x@/(}< +{]+ ;; >x@ ;#M|{]+XW\)[>x@/( <=#M+~; ; ; ; {;+XW\)[>x@/zYUU0OZmmLJJ{)[>x@/(}<=#M|{]+ \) x@/(}< #nuvzzz +*pQYcuzXuvvczYYYYYYXzzzczzzzXYYUUJULOQUYz/(nuvcvvvvczzzXzzzUQOwqqqqpbkbkhhhkhkkbpqmOOLJUUUYUUXzcccvvn<n# XvX0c?Q)? xLZ +@@$%&&MM##**oahkbdddpqqqwqqwwqqppqqqwmqqddpqqqqpddbdbbkkhhhhhaao**##MMMMWWWWWM#*******aaaaahkbbbbddddqku)_<>?_, <~fM~~ +@@@@$BB%8&WMMMMM*oaahkkkkkkbkkhhhbqwbbkhaahhhhao***o*######MMW&&888%%%%%BB%%8&WWWW&&&&&WWWWMM###**#****hdd*adZtcaWBhob + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +ZU(} ; : : : # :; ; ; < : : : : : @ :: , :  +u{]+ x@: : ] ); ; \ : ; ;; : W x , : XW [ : , : @ :: :  + >x =# ;; : : ( : ; X : : ; : ( M : +X : x # : : > : : : : : + : X ; ; :: : ; @/ +: : @/(} , X : (: M : : : : : : : + :)[ @ ; ; : x, :: M| x; ; M : : : : : : : | W ;  +; : ; ; : # , \ =#; ; ) # : : + : :: : : : :  + : : : : ]+ : ;: \: : < M , X \) : : : :: ; # :  + ;; : : : , > : : ,, (: : : : : : : : ; ;; ;  + ; , :: = M : }<=: : : : : : ::>x : : : : : : ; ; ;  + ; , : >, ] : > @/ : | + , , /( ,= :: : : {]+X : : ; ;  + ; : : )[> ; # XW ) ,M : : :: : : ; ; : + ; ; : :{ : : : ::)[>x@ .}< : : :/ : : ; : : +; ; ; : : : [> (} .*|{ , W\) , , [ x : : @ ; :: : ; :  +: ;; ; : : : < : +XW\)[ , (cx=#M > : :[ {: : : ;; ;  + ; ;; : : : : @ ( = :|{] n.x)[ }<=#M|{ , : , ) > ; : ; :  + : : : : :; ; : { )xZc* .= |{]+ . + > / : /( M ; : ; ;  + : : : : : ; :|{] :x@ (*.xvJmUcc.W<).* .+ : + , : ) ; : ; ;  + : : : : ; ; ; @ ( :: { + .ncJZCXx Y * ]+XW , x : : : \)[ : : :  + : : : M +X: ; ; | ] ; x@/.** #XnY. .* > , : : : : M|,] : , ,= : : + : :: : \ : : : > : , {]nx. + c.++ =, ]: : ,}<= : :XW : ( #M \ :: ,  +; ; :@ , : : ; : : [ x@zvcux ..+ XW :: , : : } :  + ; ; {]+X : :: : : ; : # |Un*.v. *.../( , {] W ::x , ] : [ , :  + ; ; : ; : :: ; : ; >Yx... * M|; \ : , :: : : W x@: :  + ; ; ; : < M|{ +X \ :: :} =#n + \ : { : : : :: , : : :  + , ; ; / ; : : {]b0mOQJOQL0JJ[* : : : : : , , , :: : :  + : ;; ; : ; : } , [cdWM*#aa*khaqqx; : : : : : : , , : ::  + <: : :: ; = : W : xYobppdbhdaobbbmY}<=: ,, W >x@:( : : : : : : /  + ] X ; ; ; > | [Zakdqmpdqmqo*kpqdqCW\)[ : : : : : : :  +: @ ; ; ; xxxZqpkkkbhakdh8hddqmOOLc=>M XW\ ( :: : : : : : :  + : ; : ; : ]+X \) +kkqqdddddOu@)(}nvLLZwwmQCn)[>x@ : : : : ,, , W, : :  + ; ; ,X : : : \Cpppdpdwu= +XW\)[]xnUCXvJCv|- ; : : : {]+ :  + ; ;; : : : : x (}bpdpqdv+X x, };; {]+XxXQQJx_ : : : [ , /  + ; ; : :: : , ; = {]OpwqZn>x (}<= : XW > ;+<J000{? : : : , +  + x@/ ; ; : : \ >YaahoU= ; ; @ ; Wcdpkw@: : : XW <  + ; ; : , + : :: =CQWM&YX ; ; : ] : ++t0wU{] : >x@ X  +\)[ : : : : [ : ; WcQm#x@: ; ; : x@ ( : |{]+> ,[ : = +XW\)[  +}<=#M|{]+XW\)[>x@/(:<= ]+: +?@/(x. # |{]+XW\)[>x@ ;<=#M|{]+XW\)vC00OQz<]#M|{] [>x@/(}< +XW\)[>x@x..<=  +WabbkkkaahkbdO00QJzcxW\)[>x@/(}xnzQZqpmQv\YLCCOmwpqmOQCJCLQZwqwZ0QCQmppdddppqqqZLYcu@/(}<=xnxx]+XW\)[>x .cucQ#}C? ++  +@@@@@@$$B%88&&&WM#oakbpQJZppddkkhhhaao**#**#########**o****ooo**********#M###*ahhhhkbdpqqqqqqqmwqqwwwmh[+ ~ }\ >?(/<} +@@@@@@@@@@@@$$$B%888WM##MM######MMWWW&&&&&&&888&&&888&&&&&&8&&8&88888888%%%8&M###MMM##*ooaaoooooooaaoaobpd#kbU|LhW#phU + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + , , , : , ,, , ,  + , : ,\ , : , , , ,: ,  + : :: , < , , , , , , : : ,, ,,  +: : , ,, , , , : : , : : : : , ,  + : , , , , , , : : : : ; , , ,, : ,< , , , ,  + : , , , , ,: : : : : XW ; ; ;: , , , , ,  + : , , = , : : ,, , : : ; ; : ,, , , , ,  + : , ,# , : , , , =#M| ] : : : : ] , ,, , ]  + : ,, , < , : , , , X >+@ :; | : : : +.+ ; #M , \ , + , , , , : , , , x =#n|{ : [>x@ , {]+XW x@ + : > , +, : : , ,, , , , <= +XW )znx + M|{ \)[>** (}, M|* : | ,  +, , : , , ,, , { [>x@/+ vxM ]+ + @/,}<v.+ : )c> ; =# = ,  + , , , , :#(]; }+ + ;=/..#(]x\}+@) ]x\}+, [  + , , , , , \}+ X|[=/{># x ++ ;= # x\} @)#(]x\}++)< + + : )  + , ,, , + , : #( \}+@) ; {># }+@) +| /{>#(]x\}+@)< +=/{>#(]x ++@): + : , ,  + , , , ,, , [ /{>#(]x + + ./{>#(]x\}+*)< [=/v>#(]x\}+@)* |[ ;{>#(* \ +@)< [=/{>#( , ,  + , , , , : )+(]x*}+@ ;X|[XY{>#(]. .c*)< +[ *.(]x: @)*..xnnnx.#.*x @)<JC[=&{>#(]x\}+@)#( .*.xu)<Y|[$MhdmQCx\$+@)..|[= + (]x\}+@)< : : : :  +, , , , : #(]x\UQ@)<.*../{>#( x\}+@)<YCvcY{>#(]..}+@cCX|[=/J>#O]x\}c@). [= .>#zvvXU+@) ; :: : :  + : ,, \}, : >#(XCz}+..*...*...#(]x\XzcuXn]x\}+JqZX|v=LCY#(]x0Q+@)< +[=/m>#(]z\}+ ; ; ; ;:  + : , ( \ :; :/{>CYvnx.x....*.=/xvzJ0OL}+@)LX|[=Xc>#(]x\U+@)#q]O\}+@)< uCOQ{>#uXx\+ ; ; ;  + : , | x : |[=LJcccvvvuuunxX|UC/{>#(YQOOZL)#(Lx\}+@)zX]+ + ; ;  + , , ], )#(]XLCYQ0<JO[=bkq#(.. }+@)<kbpqkbd*kQJ\}+@)#(]xJ0dhhdpdd=dk>#(JJv}+@)# + + + + +,, , W { ]x\}J@0ZOQLQ0QO#(bm\}CZmQX|O=CUvun]x\LZpppdbk=/{YCL]x\}mqq+ ++ + +  +, , ,) ]x\qqO)Y0Q0QQZwbkbb[=/{>UJ]x\}nv.#(pb\}Owdbdqd#okhhbw0\}+@)<LLJznxnc(]xwbh@)#(qdpq+@)#wwZ\}+@)<zcv=/{>#dkd\}+@)#(]xcJ+@)hX|[.*...*....*... + , , : + ZwqwOLU@)#wdmOCU@)*M*abh&%#MWW*kq{>#Zwqm}+@)<%Moo/O>JJJJJUUU)Qqpkh/{0#L0OZZ0C)#(]x\qm@)Mh|aM&Mak(bkWW+@)*#a[=w{>#(b*#*MM)pX|[QQLLLLLLLLC@dkaa[mw{>#(]xQOwb)#kbbk#W#)&B8*=/bbb(oWWM###MM#oa/kha*hx\}+@)<00000Q00QQQQ}pk*oXwaa/{>#(]x\ZqmOLC0OZdap#(]xW#+Z0LLLLLUXcvu +; : :}vkbbbhM8&8@B8WakkkbkhaWM#**o*MW8$$&*kpwwwwwwqwwwmmZmmmZZZOZpa#MbZdkbkdmLJJYXXUQLUXzJQZbdQzUmdwLUYXXJp##*ap +; , , +XJhbaWB@@$8MM*aaaao#MW&88M#*#&%$@@Wkddbbddppppppqppqqqqqwwwdh#WkphkwmqbhbmLUJJUQmwLXzXCphZzUmbbddwCcvJmdp0 + , , (}a&@@$B&MM***#M&&&WMWM#o*##M%@@@@BWokkbbbbbbkbkbbddppppppkoM&opdhhbmOwbkZ0QQQLObaqQUXYmhwJQwOUQqpqZCCL0J + , , { +U%%&WMMM####MW8W#*oaaahhh#B#Oh@@@@8M#oa***ooaoooa**oahaoMMooM##oko*kwZZZqpwZZZwhoadmCYOwCXJYcczXJQ0QQJX + ,, , , /MWM#MMWWMMMMM##***#MMW8B#J<]+a@8ohhho#WWMMM****##WWWWWWM#o*MM*kko#M*aakbkakqZZOmqbhkwCXzccczzcczzccczc + , , ,, {qk*&&WWWWWWWWWMM##MW8&q\)[ @/kWkhaa#&8WWM#*oooooooooa#WWWWWWabkbbbk*&&MM#*ohkpm0Q0mdw0QCzvvvuvvcccccz + , : : >x@/(CaMWWWWWWWWMMMMMm/( {]p#ao#&$$8W*oo**oooooooaa#MWWWMokkkkbbbho#&8W*aoahbqwdhkmQUvxxxxxuvcczzz + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + : , , , , , :, , : , , ,  +: : , , , : , , :: < ,  +: : , , , : , , , W\)[ :, @ , ,  + , ,, , : , , , : ; : :: , M ,  + , : , {]+X , , , , +XW\ ; , , : ] , > , \, ,  + : : , , [ } , , [ < , : :x + / , ,  + : : , , X :: , X : {]+ , , ,  + : : , , X [ (: , @ : , ; +@/( , ,  +,, : , , , , , | + , M|{:: : > : / ; +X ,, , ,  +, , ,, , , , ] / , M \)[ux@ : #M|{]+ , x@/(}: { : ; (} , , ,,  + , , , ,, , @ } # { , W @/(} =cv| ; .x>x@/, =#M|..+X ;>. ; : + ) , ,  + , , , , , + : )[>x # : \..>: + ;] XWux + ,=nn|; \ ; :#M| , , ,  + , , , , , < [=+ #*]x\}+@) X|[=/ + ( \}+@)< [= >#*. \}+@)#(];+ ; = #,]x\ ; ,  + , , , , (]x ,@ X|[=/{+ ( \} @) |[;/{> (]x\}+@ X|[ /{*. ]x\}+@)< |[; + +@ #(]x\} )[  + ,, , , , , x @)#(]x\}+@)< |[=/++ (]x\}+@)#(]x\}+@ #(]x + #M, + , , x, , , # x\}n@)< * =/{>#(]x\}+@+ X|[=....(]x\}+ )#(]x\ :#( ; +: +: , ] : :|[ / #(]x\X+@).X|[=/Qc#(]x\+ @)# : X|[=/{># ]x *. X|+ /{>: ;  +: : [ ( : )< |[=/{>#(vY\}+XX*(]x\}+@)#(]: @)&adwQJ+@B# \}+@.#(;x\}u* X|: :  + : X , :\} @)cX|[=/{>#(]x\}ncJUc|0=/uYcnx.. +@ XuY0/{>#(]xC}+@)<UL[=/{>#(]x...*.#(]x\. < :  + :, [ , ] }+@)<zXXXc..#.]x\}+@cCL|[=/vccu.x\}+@ <z0C=/{zJJXx\}+C)<z|[ >. ]x\} #(]xc}+@ :  + , X , > ]xQZmmmwZLYu/{>#(].\}+OOYnnuu/{x#(*..}+@)LOJz=/{>#(]xmO+O)#(]x\}+ nzu|[= >#(cx\ ; ; + , ) , / #(]J\}+@QQJUzccvu#(]x\dpCuncYzvccvnnx.*..v)O0J[=/{>#(dpdh+@vn.*[=xx>#( +}+@)Oz..* {zY(] ; ; + , , | + , =/{0#JQQOOm0UXXXYUJL0#ddb\Y+@)#( }+@) + +  + , ]x , |[=C{>#(]x\}+@)#h]x\}m@)#( +\} @)..|XU/{ + +  + , , , +@)J0ZZZOQCJXv|[=/UY#(]xv}+@)mqq[=ko*#wJJXYX@) |[X0{>#*]..*+.u<0C[= + +  + ,, , :] +@)bXkhp0Q000Q0QQO0)<o|[CCJ>YU]x\}+vvvzUJQQQLzn]UQ0Q@0Zpbbdh{>YLzxvU+@).X|[Cz*nu(]x\zzcCUX|++ +  + , , :> x\}ph#*d|[=/{>#(]x\}+#b#(ccccccczXUUUUzcz0mwwC+@Q0Xqk=/{XJ(]vL}+@*#(]xoodZLCCJUUYYXXXzczzz@)#(]xunn@XLX|[=/p>#(]xM}+@.*....* + : , { X|[m/ZbkpkWWo+@aao#**WBW#(kd\0QQQLLUUCLLLLLLLCCJJJUU|Zp/hpC(zzc}+zccc|[0Z{>#CJzXX+w)JdhdwQYu....* +: , [ +@)kX|[=ok>#(oMWM#o)#(oMM####*X*a=b*o#pppwZZZZmZZZZO00000Q0QQ@wko#b=CCJCCJJJUUYYxv*@@%M##MMMWWM#####MMM&&MMMWWoo#MWM****oaao*##*hk*#ohkho*M88&*oadwZO00000QQ0QQQ + ,, , @L$@@B&MMWWWWMWM*#MM&Wdu= {Z$oaoa*W&&WWWWM#MMMMMWWWWWMW&8W#ao#####*##*aakk*&&W*bppbaW%&MMMapqwmmwmZZOOO0 + : {OBB8WWWMMWWMMMM&&Mm]+ xk#ao#&B$%&MM##M#M##****MW&8%B8#oaaaahhhkkkbkkkoWWWW*hkbbba#M#*okpqppqqqqqwmm + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +: : , , : ,, , , ,M : : ,  + : , , , , , :, , @  + : , , , , , , , , { ; , ,  + :: : , , , , , , @ <: ; :  + , : , , , , , , , @ M| +W :: : } ,  + , : , , ,, , , , =# )n> @/ } :+ , ,  + , , , , , , ,, , /(} = M \ :: /(} , , ,  +, , , , , , , ].XW : : | ( #M +XW M , , ,  + , / <= , , , [ x@z(} ; ]+ #M: WY : }< , , ,  + | , , , , [ @/ #M|0U+X ;,> @/(} , {]+XW\)[ /( : ], x , , ,, x  +=# ) x / < , , , <=# : XW\ >OC/( < .*uuXW\ [>UCvx.*= {JvX ; > { , ,  + [ < {] W ,, , ,M| + : x@ * + |x]: W ; x. u} =nv| ]+XW [xL@ : M|{ x : \  +(} # x } ) , {>#(]*. + #(]x\}+*..X|[=/{>#z]x+;+@)+ |[=/{> x }+@)  + +XW (]x\ : |[=/..+( x\}+@)#(]x\} @)#(] @) ;+ >#(]x\}+@ #(] \,+@) + .@)#(]..}+@)#(] + ; , (]x\ : x@/( + |{ + /{># ]x\}+@unc|[= >#(]x\nu@)#(*.\zJxCX. x\}+@)<x|[ : >#(]x\}+@)< : / >#(] : ++=#M*{  + >.@/ [=/{ #(]xzccc)#(]8\}+@)#( : : X|[; {x#( x\}+ \ +  + MLu] +@ Xm0=/{>#(]cv}+ .nvuvu.xn. ]x\}+@)#(]xp}+@) [=/{ #(] \ +@)# x\/.}+  + xLQ@/ \}+@)JXvcQZd>#(]x* ..*#(]x\}u@).X|u=/{> (0x\}+qbbw0[W/{>#(Ox\}: )#( x\}+c)< [=/{ :]{uzX  + ( =YQmZn]cv}.@).*...}+ < * = *>#(]x\ucvuC(]x\} @+ |.x/{ ;(]x\}x@) X|.=/{ xOd(  + , WZwmQz#(]x\.x@) *]x\}un..* [=/{>d(]xzCLJ)#(] ++@)..]xv}+;;vvvULQYc)# czvX+@)<n [u*{>#U] +@u< |+ |. + ) xLkM*d|pdqZL#(]x\}8@)ccccvuunuxnxO}C0)#(]ULQ0@)<ux[v/{kaMMkd*+@*#xnuYz+@)#(hpC}+@U0OmmQLQJc(]x\QQ@)#ddx\hhh)<Ycx. {>#(uzcx.@)#(].\}+@@/zncx. + W [mqhokdmX|Owddpm(ahmZZqd#(xnuX+p)#(]x\CLO0vn.Q + ,} #kwZ}+@qbkbp=w{>#&]x\a#WModwmwd{>UUUx\}+@)#*]xwwn xJ + , XW )Zk*bdhk)#(]x\}+p)dX|[=QZdh(]nunnx.xxx.x...#(wxq#+0Q#(pL* {mL + , ( =8(ob\}+hh#(]xmZOO0#uvvuvvvuuuunuun>#o]#\}w@)<wwZ=/{>bz.vd%h +, ,+X u>#(]xWB#o*BX|BBMh>ddppqqmm)hq|000QQQLQLLLLLLCLLLCCCCC(qd\*q@UYY|[QLX>cv]vvvvuuvuuuuu{*okZZpm+@)dq|[=hmxumpda +, , (u/W>#$8#\}MW)<%&[Mo{>dddpdp+*bwwmmZmmOOO00\}0QQQLLQLLL>pk]Mb}CJCCJ|JYUYYXzXzzccvcvvvv=/*>d(]Z\}+dhZbX|M%B$B%%WW$B+hh*8B%obbbdd]WW}ddddddddddddpppppwwwwwmZd#*Wb(QQ\QQLLLLQQLLCLCJJJJJJJJx@/m}kM##&$$BBB8WWWWWWWW&&8%%%%$$M*#M&WM###M#*ooao%B%WabddkaaM$8&%8ohYUqqqpppqqqqw + , (}k@@@$88%%%%%%W8@%*dv=# ,{]+X@@@$&MM###########%@$$@@W#####****oooaaao&%%BWokkkbbkhhpwh>x cpqpdddddpp + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + : , , , ,, , , , ,  + , , , , , , ,, x , | :X \ , < M , ,  + , , , , , [ @ , : # ;] @ ( , , , ,  + , , , , , , , , W ; ; <=# , , , + , ,, , , , , , , XW\) / ; ,] ; , , \ , , , ,  +, , , ,, , ( = , : , , |{x XW [> (, , } = , , ,  + : , , , ,, , , , , )[> @J( <x# ; \ > , ,  + : , , , , , ,, , , =XM,{ +X+ ( | >; ( < #M , ,  + ; : , > / , , , , , \U[ / < { +X ) ; {] X [> , @ ,  + ; : , = , , , , /(}mYuM: W\)[ : M|{] , [ux@ : #M W, < # ,  + : :: , , , , / }<=:M|{.*Ydc)[> @/+ <v#M :XW\)[>x@ =YM +X < , , ,, , + : : , , , #M|+] XW\). +. (pL= M|u Ww)[>,@/OZUuc.X{ +XLC) +/(} W\ @ , , +, , # ,, @) ]x\}+@) X| x : ,  + X|[=/ (]x\}+@)<:; =/{>#(]*\ @)#(]x\}+@)#(]x }+@)+ : @ { (] (} ,  + ] } , =/{>#(]x\}+@: +/{>#(]x\} X|[nz{>#(]x\}+@)#(]x\}+@)#{] X;  + , , X|[=/{.z(] \} @)#(]+ +@)<.|[0/{>#(]x\}+@).c|[=/{>#(Yx } @)# : ,, /{ x@ ?}  + , ,, , , @)<ZvnuY{>#(]x\x.*.#(]x\}+J)#(]Xn}X@)#(]xz}+@)# ; \}+@)#(*x\}+@.z(]z\}+@.<#|[=/{>#CJx\}+@)#Y]xZ}+@....*. ** \.n.)#(]X\} ;+ + ; }:/(.<;# +, , , , [=/Q>#uuunxnx.x.*....>J(]x\ .xCU|v=/{>u*..\}+@)#(]x\}+@* X .=/{>#(]x\ + + ++ x|{. ;WO + , ,, , #(]x\}+@)vXL0OJz>#.vv\}qb)#(]+ + + (ZQ ;; } + , , , +@)#(]x\}+@)nXJL=J{>#(]x\}+@)#zvxm}pd) + + + {>pz.*.  +[>+ , , \}+@bQL0OLC0Uu#(Cx\}#kkahd[*/k>#Jcx.}+@)<XYz=/{> * + +=/aXnLu . +uX+ ] : : (]x\}+bbmQO[=/{a*#*khmq@)<ULJczXYXXzx\}uuYYX|QC/vuc(]x\}hp)kooa%/{n#(.*...@)<ncz=/{ * * *|[dxZU .z +08$C{u@ ,/{>#(]x*q+@)#(0x\a+@)#uuu\vYJLmOOpU/{>hd]x\}kb)<h|[=/..*....*.@)#L]k\}UUYXYXzXzzzzzzX\}+@)#(]x\ZwbadppphMk@)<mmmmO0O#bpxLCCJCCJJCJJCCCUJJJUUUYUX|#=/#>#z]x\h+@)uuvuuuuuuuuuuuv@)wwwZZZZOOOO000Q{Q0Q0QQQ+@#<M*[LLCCLCCCJJCJUUYXXXXXzzzzx\B+@vvvvuuuuu#(Mb%bQbhJ +ZW##%Moa*M$8\$@&WW&%M#*{>hkbhkkbdddd|*W/pppppqqwwqwwwmmmwwZmmZZ\pM@%hX00QQQLLLLLCLCLLCCCJCCUJU(]@\}+Xzzzcccz{>&pb*hpUu +Z&*&%####*%@&x&$+@)%@B%%*aahhhkhkkbb<#$[dddddpdppdddpdddpdqppqp]kW}B@)ZmZZOO0O0QQLQQLQLLLCCCLL>#@@x\}UYYYYYX=/&oOQddZU +Z&#B&M#&B&%W@M*BW*#*8$88%W*o*ooaahhkaB@WbkkbbbdbbddddddddddddddphMMBbdqpqwqmwwmZZZOO0O0000QQLC0&@@@%OJCCCCCJwMd*MQL0CU +ZBW&M##B@$&&@8#@$M###&&M#W%##*####**M@@@8oaaahhhkkbhbbbbdddbdddpoM&8bdddppppdppppqqwwmZmZmZOmaB@@@@@%wLLQLLJ#om&*ZCCLL +p@$@%MW@@W&@$B$B$@W#MM####&$#####MW8B@@@@@%W##oooooo*#oaahhkbkbh&#BWddbpppdpppppppdbkbhhdd#WB@$B$$@@@&bmOO0OWdZow0OO0L +>/J*@B&$@B@%M8&M%@@BWWMMMMW%$&##*&B%$MW@@&W&WW8BWMMMMMWW&88WM#M%&*W&&8Mahkkhkbhha**oh#oaooM**W8BBB@@@8dwwqwaMOmmmwmZmm +#M|{&@B$$$%#h#MW8%$@$&&&&&&W8@%M&@8aY=q@#*###&%8&%8&&&&&&88BB%&WMMW8M#*W%88&MM&8MW#ak8%#obbkbo#M%B$@@@#d0v>fQmwqpqwwqq + [:xq%W%%&W&8888%%B@%%8888&&8@&8L]+X \@##MW$@$$8WMMM#M######M%BBB$@W*####M#####oaoaa%$BBWkkkbhah&B#*&W+ Lqqdpdpddp + =: |zW%@@$B%%%BB$%%BB%%%888&B@U> , }mdWW$@$@BWWWWWWWWM###M#W$$BB&###M############*8B8%%#*oahkkbadwMO+ \)Mqddpddddd + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + , : , ,, , , , : , , > } , :, , , ,  + , : , , ,, , : , , X: ) ; , [ } |  + : : : @ M| , , ,, , , )[> W ) >x ( < (  +: : : , , , , , + # |{] , [> } = , {  +: : : #, , / XWu)++ ( ;| ] , M {]+ [ , W , ,  + : :,/( \ , x, }u+ |{++ \) ; ( ; , }<, , , , ,,  + , ,| } , {~- W.) >x@/ , } ; + W , , , , ,  + |{] ,, , @/ }<= M { } ) x + < , , , ,  + \ , , , ,, |C] :\ [> =# ] , @ < ;; ; , , { , , + , , , , \)[Lxc/ +M|{] X \) > @ <=; +dW , x@/( :: , [  +,, , ] , , | :< x@/(}* #av{]+ W )x>x@/( , M|{]+XW\ [ :Y/ ; # \) ,  +, , ,, , , , : ) , < #M| * zqUx@/+. =#XdL]+X \YXwJnc*} Mw{ +: )[ #; { ,,  + , , , ,, , [ :{>#(]x @) |[. +#. x\}J@)#(]x\}+U)#(]x\}+@ #(]x\J+@)#(]x\U+@)#+ + ; { #( @)< >x  + : , , , x\ +@)#v]x\}+@) |[=/{># ++ ; [ / +@ #u|  + ; , , , #(ux\}*x)#(]xYY+@)< ;/{>#*]C\}+@)#(]x\}+@) ,, , }+ ;\)U> + :: , , , =/{>#(]x\}+ + ..vnnvx.(]xUx*@)< |[=zx>#(qx\}+@)#(]x\}+C)# ]: : , ,, x ; } =# + : , ,, , |[=/{.#(]x }*... x[=.* #(]U..+@)<cx[vc >#0]x\}+@)#(]xZ}+@: [=/ ># : : : : + :\ +, , , , )# +\}+@)#( x\0+xv<u|[=/{>#(]x\}+@)#&]x ; )xv/(} +, , , : @ #(]xJvY@)#(;x\ *.. .[=/ ; : <: :=#M|:]U + , , , }+@C#(]x\}+@)# }+@)<z|[ ; ; ; [W.) >C@ + , , , ( x\}+@....*....*....x+0z<JUvu/u>w(vv\}+x...|[=/{>vYZZQ}+@)#(]U\x.xxnx.x.x....]x0}+0)<c|[=/{c#zQQJ}v@)nv|[wQU>#(]x\}+@)oX|*= {>cc.X\}+@c< + ; +@) ;W\  + /{cQ(]xu}+@)#(wUC}+@)#XUQQ}+@.cX|QOL{>#(]x\}dh) + [=/{>JCXLLCC@Q#(]Uw}+.)#zcx\}+ + + (]h\.Yc + +ppqkL<= ,} X|[Lm0U#(]x\kk#akZwLm/{*.(]x\}+@)#(]YQ> c+( +JCWMW@n\ , \ )<&d[=C{>#*oak}+@)#(]x\}*.nxxnuczXLLJZY\}+bm#(]x. * */#>#Cc MJuw +Zk#ZZwWQ<, ( \}+d)#(]x\}UXc<0|[=/{>...xuuuuuuvuu=/{>#(uxp}+a)#..*....*....*.{>M(]. ** *|[=/QOv uqCd +hMwdpZp$kW{ (]QO}+mOOXph=/{QLLLCCJU@QJXxx=xxuuvvcvvvccvcvvvvvv#(kx\o+vu#..*....*#(]qpqwwwwX|OO00QQLLLL}qO)zcvvcczzzXXYYYXXXXXzzXX{Qb(]x\ccv)M(]XXzzz)<vccvvvuvvvvvvvuvcX|B=/vnuunnu}+W)k&0mpZ.c +#ooa*&hhhk<$|[8BMo*&8##*+pbdppqqwmZZ(ax\0LQQQQLLLLLLLLLLLLLLLLQ|ph/8>CCJJUUUYXXXzzccccccccccvc)<@|[=vuvvvvv\}h@wbqOvuX +$#oo8Maaoo@8$X|MB/{>M8M&&a+bbbddpddd>#$]mZZZZZOZOZ0QQO0QQQ0QQ@L<haoW/QQLLLQLLCCJJCJJJUUUUXYXXX+@@@X|[ccccc(]%h}UUmmYuv +W*##8M##%B&WMBoa$ohahM8#WW*bkbbbbdddh$@WdppppdqqwwwwwwmmwmmmmZmZok8*0OO00QQLLQQLLQLLLLLLLCCJUJp@@@@BCzYXzYvqdwh#XXYzzz +#MBM&MMM$$8M8$MW@B#oo****aM&hhhkbkk*&$@@$#kdddpddddbdppdppqqppqp#oWdwwmmmZmZOOZO00QQQQQLCQ0Ok8@@@@@@BZJUUJXMpOWdCJUJUY +M&@M@%MW@$#%B8%%W$BM##**#*oW8aaaho8*Z@@@@8&#aa*oaaaaahhaahkbbkhWa*&ahkdqwwmwwmmwqwpqdpbdwh#M88WWW8@@@bmCJCL#ZLbLLLCCCC +nYo$&@$%$@$@B8&WM%B$&MMMMM##88oa*$a|{O@Bakhao#W##M*ooo**#W&WM*##bha*M#hoaahhkhoaoohdh#dppdkmb*M&&MB@@#OZZOOhJQLLLLLLLL +@/(0@&%B%%%8&&&&WW&8@%#MMMMM#8BW*\)_;x$#a*o#%&&MM**oaaaaahaaoM#MW&B#bdh*ooaooo*ohhkdo8WMkqdqpbkkM8&B@@z|], , , ,, +, , , , , | ] ; ( ]: M , , , ,  +, , , , ) , >;@ { + W > , , , ,  + | , , M x : <= :| X x < , , , {  + , #M [ , , , > ; ; <,# , } + , ,, , , )  + :: , , X , , x /+; #, +: , : ) x , , , ,  + : , ,, , , , , \ =# {]+ W.) x ; =#M , , , <  + ; : , , , , + [, ( \.[>n@ (}< M; W\. ;@ , , , , + ; : : , , , x <=# {] XW / =# \::>x@:( ; , , , ,  +; : , , , , # /( {]+Xc\) * }<= | ] X: ) @/ , Mz{ ::)[> , , ,  + : , , , , W <_>M| ]+ \)[> ;CL<=,M ]+XW\), (}<=#M|{ X \C[> /( X \)[>x , ,  + :: , , , , / #M|{]+ + ; (}; *]Z0c\ [ * vzwqn#M ]XYZcnu>x: nX=# + +X ( + :: )  + : , ,, , { # }+@+< [=/{>#(]x.+ +|[=/X>#(]x\}+@)<.|[=/YU#(]x\}+@)#(]x\}+@)# ]x\}+@)#(]x }+@)< + /{ ; x\ )< | ; XW  + : : : , ,|[=/{>#c]x\ ;)< [=v{>#(]x ; )#(]x\}+@)<u|n=/{>: ]xU}+@)< ; ,x > } + : : , , @)<U|[=.u>#(]x\} #(; \}+@).X|[=/{>#(]x\}+@.*X|[=/{>#(]x +@).X|[=/{># , {]+ +, , [=/ , }+@)<x.x=/ .nnvu.xun. |[Y/.>#(]x\vx..#(xx\}c@)#( : +@);X , ,, >+@ + , \ /{ ]x\}+zJ ( \} @ #(xxnX+@)#L]Z\}+@)#(+ \}*.)#(]x\}+@)#(]x\}+@: : ,]x +]+ W\)  + /{ (]x\ * * * ]xxxn@)#( *...**...*...#0]xzzcxYcU|[=..*. ]x\}k@)#(]xUQ+@)<+* =/{>#(]x : : #(] {.+  + , , | =/{ *....*....*.=/O>#CQxc}.@)XnYc=/{x *.x\*+@)vLZOQ/{>#p]x\}n.)<.|[=/{>#(]x ; : /{ # [0x  +~| W , x )#v]x\}+@)<XQOYz{>.u]xW}O@)#M]c.*+@)Yxnz=/{>#( ; } @; |[=/{ ;# : +addC@/(} , }+@).Xxxnuuv#(]x\}+@)<hmJ=/{>CUOZ\YYX)<zJLQ/{>z(]q\Z+@)#(]x. +@..uz[=/{ + ; ) x}}+ULQzUCUJ{>#dpqqOC@CUXYCJC00CQCXYUn@)#U]xZp0pbbX|a=d{ + }+@.xx. =/ + +@O#(]xnncJYL0CQ=/.>#(]xwq+@dpmp[=/{># + +@) XJ[= + \}h@)Y{ :\  +00O0hoOqYC#W]x\JJ@o**dq=/{>#(]x\}cvuvcvvvvuvvvvvv}+XC<JJn=/wZw(]xmm+@)#LQLOhq@)#(]xQmO@)< *....*...*@)#(ZOO0QQQCJUU=Qm>#vuvvczzzXXXYXzzzzXzzccc@b#wwwZO+LLCU|L=/{>.nvzYYYYUUJJJUUJUUYYUY}h@Mh(M@\}+$)<kW&MW*>pqqwOO0LC#@]x\}x...X|q=YLYn +  +k88haoW#aa*B>&(Bx\8*@k<MW[&MkdbpqwmO+@)@X|[zYJJLQLLQQQQQQQQQQQQQ#bhoM}LLLCCJUUYYYYXXXXzzzccccc=/{@@(]x\x..)<o|[*vc.+  +WBao8MMooo8$&##$Mh$8aahhM#a*#hbbbdqqqp&@$bLLLQ0O00ZZmZZOOZZOOZOO0ob&hL0QQQQQQQQLLLCCCJUYUYXcczCa@@@@@pnxxn.bULOY +  +&oaaB*%&o#@$#W%8&88B%o*ohkhkh&kbkbkk*M8@@@Bodpqqpdbkkkbbdqwmwwwwk**&qZOO00QQLQQLLLLQ000O0CQqp#$$B8B@@@pYvux#uLmY..*  +tCbo%&%@8&B@8$B88W#%B8###o*oh#8bkbhBp*W@@Whaaha#*hahhhaoo##*aaa#Wdh*#M*kdqqmmZmmwqqppbkqbwb*h*o#***$@@qJXvvhcvL..**..  + |{OYo@%%%%8&&WWW&8%BWMM###a&8ka$n}z=B0bdbb*##o#*aoaoaao*###*ooa*MohhaM#*ooa*#*o*kqhWhpmZwOZka*&*&@@BLYXYwxunnxxx.x  + @/#WM8&W&&WWWWW&@8MWW###oB8p{,+XWk)dkkW%W&ahkkhkkkkkbbbk#WW&&8hdbkkkkkkkkkbbdbp*&#&#qmmmmqwb8oh&$ZnvUmccvvunnxx* + |<+o%B@@$%%%8%88B%&8&&&&Wok<:+ (U<f&8$&B8#*#***###*#***o&&8MohhhhhkkkkkkkkkkkbM8MM8akddpqwmwZQ|q]+XWn)[UYXzzvv. + [ @qkhM#*aaaaaahaaahhhk*+[=: +tWo#ahohbkbbkkbdbdbbdddppdpqppppppqqqwwqwwwwqahbbhhdmmZmOOQQ)?ux (.<=Uvczcvc. + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +, ,, , , , , , , ,( : : , XW , ,  + : , , , , , , ,{ }: # W ) / # : }, , , > #  + : : , ,, , ,M + ,> # =# |{ X :> , +, , , W  + : : : , , , X \ >x@/ < M| : @ ( , , , /  + : : : , , , <=#M X + ( : ( #:, , , , M,  + : : : , , , | XW0) @ (}<=#M ; X , # ; , , ,, , , , + , :: : , , , x@/L}<U#M|{x+ W\ : / , , , ,, { +, : : :, , , < =# {u+ Wx) >.@ W , } ; {]+ : , , ,  + , : , , ,, +X; >xO/(; =#M| )[ / ;, {] W\ + < M , , ,  + , , , , , )_> : <=#MQXz+ ; >x@/ =# | ] \)[ ;(o< * ]+ > , ,  + , # ,\ , , = W [ @/(}<.# :{]+ * [hY@/ < #v|{]+X+ >x@/(}<= {cu x\ [> |: ,  + ,( = M , /(} #M ; W [> +* .x*Lz]+Xu .YUaq/(} =JUq0ccxW [>Lxu( #M|{ \ >x (} =  + = , ] , ) ]x\}+@)#(Ox\}+U)#( x\}+@)#(]x\Cn@)#( +@ <+ /{> ; + , , ]x\}Uu)Xv|[+ {>#(]x\vz@)#(]x\}+@)#(].\}+@) :|[=/{>#( * ;#(wx\nU@)u*]O\}+@)#(]x\}+@) , [ (:<= + , x\ =/{>#(zx\} @xuvnuu..nx*]x\c+.)#(]x\}+m) ]: : ># |{ ;  + , # [=/LL#(] } @) (]xu X@)<.|*X/ >#(]x\}+@)#(]xq}+@ |[=/{># : :: =/{ [Zx  + X ,, #(]x\}x..<*|[=+{>#(]x\}+@)#W]x ;+@) : : |[= =#,  + , = @)<Q|[....*.. * #(+x\ *)<..c= ; : )# x\}+ .* [=/{>#(]x\}+@)#. .\}+@)<Y|[ ; : }+@)# *u..+@. .*[=#{>#XOm0}+Y)#(]x.}+@)JX| ; ]xc} @JX+ ;  +kLX(}-M~ @)< #(]xuuuvu#.]xc}n@)#(]XUuX@)*u|[d/C>#(]x\}+h)&X|c=/{>#zxY\}+@n+ ; #(]x\}>x ;  +aMmLCLZO-: +@) /w>O(XXzYUUYXX|[=/{>#(qx\}+ )#(]xp}*k)#nnxn *. .*[.. >#(]xC}+@)vX|[qwmkkw]abkkzCv.* /{>nnnx.}+ + [=C{>.( ;x  +0OOOO0O*qZ(]0\}+ )#(]pbah@)#*]x\} X|Q=/{> #Y|  +pwwwmm#dQL>#(Zx\}+X)aX|CQC{kahdx\}+@)#(]x\}O@)000[bb{>#(CCJUYYX<m|vvuuunnnnnnunuuuuuvuvu#v]xb}+o)#..*...**...*...>#(] ++@)#(@x\}+@)ZXqw=OQQQQQLLCJ@b# + \z+@)#B*ka&&**bXdqwZOOOZ0x#}+QQLLLLLCJJJJJCJCCJJJCCL=bda#(UUYXzccnX|[.ucvvvvccvvvuuX|[=/...(]x\b+vLQu*Ja +$#bW8koaMM+h)%X&[B/{WW(]xWW#%a<dppqqmwm($x\0QQQQQQQLQQQQQQQLQQQQQQ|*=W{>CCCCCJXzzccccc/ccc(vccccc)<@|[=x.>#a]xZwOUu*x. +bZW@*o8**##}&@8MX$M=&8>a(]&M*&*)bdddpq{>@(]xOOZO0OZOO0000000O00OO)<o|8=/0QQLLQLCJUUUUJJCJJUXXXx\}+@@@X|[vv{>M(]cLOJuvv +W\?(zm@&$8*M@$MW%%&M%$Wooa**aa#*dkbbdbk*@@BowZmmmwwwwmmwwwwqqwwwwZaoWMwZZO0O0QQQQQQLLLLLLLQLCJCm*@@@@@$OucnomqkZucvvcc + }<=#M]jk@%WB@&$B8%8WBBM#*ooaaa8abbboa##B@@$#akbkakbhhhhbkhkddppbaMhBobddqwmwmmZOO00ZZmmmw0OkaM%%W8W@@@&ZCv#QZapzXzzzz + )[)x*@%%BB8&WMMW8%$&MM##*oM%kkh&*hZkUYJQpbh##a#aaaaao*WWMM##Wkba*MWaahkkkbbkkhahkd*bbdbhdba*MW*8@@80QzabckLYUUUUY + <, M|MWW8&W&W&&&W&B@WW&W##*%&h#**m@mX.0wp*MM*##aahahhhhao#MM*MW%Wkkh##*o*o*##o*hbb8MobqwmZdkhM&M$@@oCLk0UJLLCLCLL +M|{]+, \ [>*@%$B8&&8888%B&WWWWWWM$#ManM,vr+adM%M8ohaaaaaaaoaaah*%%88%*aaahahhahkkbbdbbk8MW&apppwpdw#&ddo8Ux?/(ZLQQQQQQ +, , <+#M0B$@$%%%B%%%888&&WWWM%%zW\: >v@#W$M&8###*#######*#M#M&8&#aooaaoaaaaaaahhhk#%MM8MabbbdpqmwZC#O# { QQQOOOZZ + : W ][)o%$@@@@$%%%%%888WW#%X/ :: #C[d$&&%BMWMMMMWMWW&&WWWMMMMMMMMMM#**oooaoaaao%8&W8%&hbkbbddwm&XW, [m0mwwqq + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + : : , , , , ,< | M , , , ,  + : :: : , , , ,X , ]+ =# { \ x :} , : , , , ,,x  + : , : ,, , , > , x /( <= x: , , , , ,#  + : , : , , ,, < \ ,> |{]; \ [ ;}< X , , , ,  + , , , , , , = X >x*/ ;# ; :) + :) x@ , , , ,  +, , x@/( , , = M :|.] XW )[ , : M; ,, , , , ]  +, ,= x X , W_j >C@ (} = : \* , , :: ,  + X W ,< @ <v#M*{] ;W / # : ) ;@ (}n ; , : ,  + < | , {]+X0\) x ;(} ] : ( ,MO{ + [> / , , ,>  + x ] , , ] )[>x@/QQc= M; XW\) >+ #M|{ ;\cY x }< ]+ , , ,  + # ,+ @, , W\)[>x /(}<=#. ]dCW\ [ @YvmY=#M +XWn)u>x /;}p=*+ ]+ ( : ,  + x , x@/(};= |:]+ * .*@C0v< #z *.+mY+)[ xOUU x v. ;]v0Q\ @/(} \) >x;  + ( \ ]x\}+@)#(]. }+@)#(]x\ +@)#(]x\}+@)#(]x\} + =/{>#(]x\}+@)#(]x\}+@)<z|u=/{ # :x\}+@) * = > \}+@ x::  +M|{]+ , > |[=/{>Y(]x +@) X|L=/{>#( ; +@)#(]x\}+@v<z|[=/{:#(]x\}+@)*.| ; >#( X| =# + ] +.[>x@/ , = )#(]x\..@)# +x\}+c)<J|[=/{>#(]x\}+.)#( }+@)#(]zu}u@)LX|[=/{>#(]xq}+@) :\}+ ;< : (]x\}+@ (.<  +UvuY0kU@ > (]&\}CZ)<.* ..{>#.]x\.+.)c(nC\}+@)#(]x\}+@)# ]x\} +X  +WdZMWLav{ }+ >#(]0\}+.*..|[=/{> * x\c+@)x(]+ }+@)cU]u\} ; =/{>#(] x@/( , +{Jodhh0uzxx:}+ [,/{>0(]x..*....*...*.#(Jxzv+@)#( x\}k@)*nzx ; ;|z=/{v# :|c]:: +,xdMkbdqCf(]x\}+ )xnxx....*....*x{>0(]UYvzYC#(]xm}+@. *|[=/{>U(]+ ;)OUcu\}+0zcQXv=/..n.]x#}Y@cXYU[c/{h#a]xXX+@)#(]x ,+@)z(]x\}+@)U0OXU/{>c(]bZZ+@) +}t{JJCLCCU[m/a##(]x\}+p)<YXYYY{>#(]x\}+@)h0J[=/zLUwQJUJX@v<JLO=/{v#(YxZwOm)<B|[o/{>#.n.\}.n)JX|[=/ ++(]Z\}+@)< (x =C +8hYLLQLLJZkq[=/*> (]x\0OwOCZOQ0/q>dqwp0C+@JUYCJL0LULUcYcx+@)#Z]x\}+*) {c Ww +kZOZp0JQdp)<CC[=/{ #(]bm0+@)#(]..XXYQLQ0[=/{>#(]xm}hhd<M|[=/{...*..}+@.<b|[ /{>#(Ox\v+[0J q +wZpBa0qaOUY@cUqO[=/{>&(]L\}+**od|[=/{>#(bx\c+@vuunxn.xxx.xx\}cz)Uzx[=mOb#(]qZ}+h)Z(]x\vkM Q +mpB&ph#qLU\}+Z)<L|[@/{>OZ]pa}+@)<CCCCUY>00]ccvuunxxn.xx..nxxx\nu@)uXb[=a{>#(]qb}+@unnnnxx...*....+#)<.|[=/Q>#(wUp. nQ +qM%bph#*0C]x\}+Q0#(QC\vvuxxnnnnnnnn..x\}+@*#ZZ..#Ok +d@*qo8awwZ#(0O\m+@@#(mZOOQLLLQL[wO{zcvunx...*....xxuuuvvvc}+d)<h|cccc>#Uzcccn@vvvvvvvunxx]xW}x@)p(]*\*&M)<B|h*&oh#wmmZQQQLLXp[=zvvx*....*...*x.nuuvczzx\k+*)<UXXzcc>#zcczccccccvcvvvc#(@x\n+@)mw|[=q0.uoU. + +~(vqa$bMh/{>@MMx&#+@%<d|#W#8>qqwO0OLL)qX|zvn*.. + .*.xxuvzzzz(]h\8+@LJJUYYXzzzccc\ccccvvvcvz{>@(]x\}+d)kdmQcxx..Q + (}?uMk$|[=@8>#MBM\%&@a<a&[*&bppwwZ0Q+@@#(]x +...nvczzYU>Zh]W\CLLLCLCJXuuczUUUUUYzcXzz[=/@@#(]x\h+@)<LQc.xxX + +XWw#8@WM@&M%88W&8$oaaa**h*#ddqpwZZmW@WCu*. x@ (} + ..vcXXYJLJqdoMLLLLLQLLLY. zJLCCLLCJJJYzCo@@@@@Z[ ZhUJx.u..nnn + [> (}8*&%%BBB8&&&M&BWooohhkd#oddqppb*W@@@oU. #M +; ..nvcXUCCCJhdWp00000QQLLCJJJCCCLQ0QCQmd*$B%8%@@@L ux{]C.*.xnvv +, , +##M#&&WMMMMMM&8%&*#*oahh8dbqh#MuC@@%kmCu\)[>x@/.uXJ0ZOQ0OwoawMohkbwmmmmOOOOmwqddhpbwpohaa*o*h%@@J\)[ x.*..nucc +: :: /8WM8$8WW&&WWMW%@WMM#ooh8#ph8p( \@%QYYzuXUvxUvcXJQOwbaaoahapqkho*ko*ooohh**o#adpWabqZwZ0dha#ho@@8}< #M**.ncczc + ; {z*W&8@@8&&&&&W8%WWWM##a*Bap)@+ }haLOQLddwOQUYUCLQQ00Omqh*a#M%8bpdhahhahhaahkkbd&WMMpZmOQmZmWaph&+XWn *xucczXY + ; :x@Ja8$$@$BB%888&WWMMMM#a%J#M; X%QZOk#p*OJLQ00OOZmwqpddoWMMModkbbbbbbbddddddbdW##W*qqwmOQQ0mU.b@ }nvcXYUJCL + ; : |{QXq%B@@@$$%88&&&WWWMo&n\: /wqZh%ok#qwwwwwqpqpdbbbkbo*Mohahaahhhhhhkhkkhha8MMW8#bdqwZZQQCLk|{ <0cJCLLQQQ + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + , , : , , , { + ) > : /, ,, , , ,  + ,, , , , , , ( M, , # }: ] , , , , ,, ,  + , ,M +X , , , { ), X ); , X > @ > , , ,  +, \ } | }, (}; : ; @ : , @ = , , ,  + , ) , , X \), @ , , } : X , , , ,  + + , , , @ }<= M { X : @/ , , , ,  + , ] /( , , # |{]+*W ) > , , M|. XW ,, : ,  + < > ,/ + , , , X >x@: <;#M \ x : | , XW ; + , : ,, ,  + < , { / , :x@ <=#Y|{ + , [>x (: XW ,@J( + +{]+ : : , , , + ,[ , : = ]+XW JJ>x / <=#M|{ : [>x@/(} : |n + }< ; , , , + @ ,< , : X \)[>x. ;=Zn| ] + .xx@/ <=.. + ::)Unx <= \) : ,  + @ M ] : W\;; +( <=+ * \.[> @/;} =# + \ [ x@/ }<LnM :+W\)[ <= ; +W\  + #M|{] @ < |[=/ #: \}+@)uX+[ {>#(]xx}+ ) (] ;+@)#(]x\}/( <=  + W\++ x@ ( @ (] )#*] \}+@)# x\}+@,#( @* < + * [ x( x |,,/{>#(]nc}+@)#(cx\}+@ X|[. {>#(]n\}+@ #(]x\.+@ [=/{>#(]x\, ,X|[ /{># ,{]+X + @ZXu<O#Y># ]x ) ,|[=/{>uc]x ..uuzunvn. >#Y] \}+@)n*| /{>U(]x\}+@)< |[=/{>#(]x\}+ : |[=;{ : @)< [=Y\, x@/ + ,|0hQk&OU/{># ]x\} # ..*.@.UnuJ\}+*)xX|[=/{>#(]x\}+@)#(]x\ @)xbqbbQZ=/{># @ <0|[=* (]x\}++ #(Jxu}+@)< | =/{>#(UUZXun) x\}+.)<n|[ : #(]x\Y+ # ] +@)#n*vx}+@) X+[=/{>#(]x\}+@) ; \}+ .#(]U\ )x/ ,  +UXW [>hqO) \L+..*....*....*x.}+U)<zXxvvJ>#(]x*.. #J]x +|Y] :  +cJLn[_>Lvu+c)<d|[=/ #(]x..xnnnxnx...*..vLL}+OcvX|[=UnuCuux\}+..#(]x\b+@k<.u[=/ c#*]x\}X@) |X= {q#( ;\[#x:  +kLQhdn\YYUUX+@)%X|[ /{>#(cuuvuvuvvuux..>#O]Ym}+v)#(hx\d*@) ; =Y+ {  +kh#pXCQCLL]xqkw0q#(]x\}+@)YzQx\ *@vXLL0m0LLYvzn.=/{>#Y]x\}x@)#QQx\}$@)<wqOL/{>#(aoMahwdOq|[=UJU#(]x\}+@)<..zXULCLQ]x\}ZXYk(]x\ * [=/.>b(]xw}+@)<n|[=O+ JXJ +CLOW%bpahO=0O>mkpx\}+&d#....* .* /{>#(]x\0+@)XXOC v0m +00*%bZb*#dmm=bh>#ZZx@}+@ZOqob=/{>#(QQQQ+wq<CJJX/cccczzzcczcvun[=/{>#b]xk}+@)<Zw[=/....*....*....*=/{>#%]JL}+@)LQ zwC +zhBhwhMowmppokqqwq#(&@\}+@daw|[ZZO0000Q\wp@LLLJUJUXXzzzczzzzzcccccv{d#(axnnx@)JJ|xxxxxx...*....*.|[=/{h#ZOx\}q@Q xww( +MZ#Zk#qOdk@*bXd[b/{@#(@M*h+@)wqwZmZZZ#0]qk}0QLLLLLLCJUY(XXzzzzXzzzc=b{qa(ccvv+@Xvnuuunnunnxxnxxxx#Z]x\q0..mox. + [>qdUcQWwh+@)<%*oo&#>#$]a#Wh@)dpqqqqwm#phxQ00QQQLLLLLLCCCUYYYYXzXz|k=ak>zczcccvcvcvuvuvccuvvvvvv@)@X|[=/OO#(]bw.c&J.Y + :M|Q++aZB\dh%%*o|%=/*&#d]&W&+@bdppqqqw>8(O000OO000QLLQLLLLCJCCUCU<a|#=/XXYXXXXzcczcu|zzcccccccc}+@)mqYxvc.Cq + : >xmdo@]x\@+@*&8|[$/{k##Wx%a+bbddpq=/@>#wmZOOOOO000000QQQQLLLLQ@o<Wp[CCCCUUUYYYXzXzXzczzccczzx\@@@)$mqppwaohhoakbbbbdppkkhohbao&*dpd**oooahhakkpqk8M*bmmZOwqw#&#&@#X#LJCCJJUJCJ + , WC%MWB@@BB88&WWWWMM#*aa@J@/ < #dwwqqh8oWdmZmmmwwmmwwmwd*##*M*pdddddpddddpqqqqd&*#MkmwZ0OO0bZLXz\nLcJJCLCLCC + }O&&&B@@@$B8&WWWWWMo*CX]: \)UJqb&akMqwmmZmmmwwqqpppb#MMabbbkkbkbkbbbbbbbbk&**M#kqmOZ00LQ@/O}<=#CJCCLQQQ + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + > , , , , ,, M \ [ W ) , , ,, , , , , , +, , , , , , , , :[> @;( =, {]+ , /;} , + /, , ,, , , ,  +W } , , , , , , , M { +\ ; } : x; }< |, , , , ,, ,  + X ,, , ], , , , , , (}< | ;; : , : XW ) , , , , , ,  + ( , , + x , , , , } # | ].X ) + ( <: , : : , ,  + , x | ,, , , , ]+XW )[ x@/ | \ < ;+ +* , , : , ,  + , > , ,, , @/(} ; M ] : >x ( : ]+ \)[ x ; ;: , : : ,  + # + , , , {Q+nW\ ; @/(} = M { + \)[> }zx ; W\ >, :: : , [  + , x , + ,[>0q/( <+#Mx{x+XW ) > @/(}<=# +X ) @/( M| , , ,,  + , = } +XW\) ; (}<. MCdY+ W.n vxQk(}< MULQnxnx) >xn.(}; M| >x , ,  + , X )[>xux .. : |{]x * >xY/ }< # |X xuW )[xx@/(}< Mn{]: [>x@ |{ + : ,}  + ] XW\ > @/(}<z. *. + )[.* . + . |{] : ).>+@/ }< . |, \U[>+; + M|{]+ >x@/ <= ,  + _@/( <= M/{> {>#.*x\}+@)#(]x\}+ ).X|[=/ >#(]x\} +X| =+ (] |[ ; @  + + ]+ W\ [=,{> ] |[=/nx#( + @.#(; }+z.LX|[=/{>#(]x\}.@) (]x\}+ X; = {>#( }+@) @/+} |[ , ] @) ]x\}+@) \}+cvYX|[=/{>...x\}+@X..|[= {>#c.x\v+d)z(]x\}+@)..]x }W@)#(]x\}+@)#(]x\ : |[=/ >#(] :{] XW\ +, <=#Mpp\}+.)< | {>#(Qx\}* .X|[..{>#(.x\}Y.J#(]x\}+@)#(]xC}+@: [=/J>#(]x :+@)#( : x@L(  + ] )pZmx\}+ ) [=/{0#(.*...@* | * {>xu]x\}+@Yxu|[=/;>#(]x\}+@)#z]x\}+@): |{p+ +[>x@/(}<ww#XXx\}+@ [Q/{.x....*....* .=/uxux.*\}+@*n + / >+(]x\} ..X|.=/C>#Q]x\} +); ]x\}+C);; [=/{ :>Ck +YX~|cJQYXv{>#n]x\}+@ XJ[xnuunnx*...*..n|Oc/Xvc.cu0}.@)#(.x\}+@)#a]x\}+@)<vvuvuuuuunux*.@)ZX|LCnn>#(]x .vn.< |[ /{>#(] +}+@)Y0w[hhun ]x\X.u)#(]x\ +X|[ #(+xCC+CZ ]x*.vU)#(dx\}CJJUU|[=/{>#(]x\hL@)#(]x\U+@w<d|nz* #(]x\cvu)#( +}.@ O{ n  +CZ0Zo%bZpabm#qZpmQZZ0Zp|[bdqpQC]xYYJCYUUczu.{*# ] \}+ )#z]XQ0OZ* (]x\}+uXxuL  +YOZ&8hbo#p}wqw<dbd=#{kbZ]x\}+d**WakZmLw#(cczv+@)vY]x\w+@) * (]x\}a@)#(]x =0Qw{. +)Z8Wdmk#MhpdpkoaqX|[$/{mm(]MM#ak)#vvuvunnx..* {>#(]x\} @)vUQx\}* * *....x\}+@)<q|[=U{h#( UqL  + ~#kp*W*ddd]oobpdddXB$=/qk*(]x\}+@QQLL[wm{Yzzvuuunnx....* + }+J)<Z| /{>0(]*....*....*....x]x\b+@0 .Qb=  + <\?*#qwak>Ma]x\d+@$<BB#b/obdqwmmZO000Xmp=CUUXcccvvuunx*....* +\J+@m<...=/{Xx*...*..x.x..xxnn#(8xh}ww)#(WahM$@)$##o=/{ddqpwwmZZ)pk|QQLCUUYzccvvuunxx.*...*.]0\}q@..*..=xxxxxunuunuuuuuuuu{>%(hxQ}p@)<k|[.b#x.Lw + ,+X>\)#o#&=k{BB##x%}+8&<aW&=/{dddpqqwmd*<QQQLLLCJUYXzcvvvuunnnxxx#Z]qp}nnnunnuuuuuuuuvvvuuuuuvv=/@>#p]xw}+@a#&%x\%+a)*8&8h/bdbdddp}%@mZO000QLQQLJU\X+zcvvuvvv{q#bkxvuuuvvvvvcccccczzXzcczXY|[=@{MMakM\wh@)cvxJpQw + X|~W@&W@[=&88M(B%\oao8<&8[hkkbdd]x@}+pqmZmZ0O0QQQLLJJUUYYXXX=w{hk(XXXYXXXYYYUYYJUUJUJUUCCL \%BB%8&&W&&&8&&&WMMMW$*#&MU[{ 8vm*aoo&WMM8##***ooaaaoo#a**W8#ddk*oaaoooohkkbdM%W&addddkkh88M&$*&wwqqqqqwwmm + , , #v|\m$@@@$B888&8&&WWMM#BWh0)) +U>#o*8B&BM***oooaooaaha*W&MM&#khkbbbkbbbdbbbkko8MW8obkbbbddhdwdoQ-]dqpqppppq +, , ) .1(o$@$BB%888&&&WMW#8h\ Q r&MB8&BMMMMMM########*#888W*oooooaahkdhhaaaa*%WM88#hhhkkkdanCn[> )bpdddddd + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + , ( , , , | W\, @ (} : , =, , , , , ,  + , + , , | ] \ [ : , , ,, , , , ,  + , < , , :> /;} # {]+X : ( < ( , , ,, , ,  + ( < , , , |; \ +; < : @ < M , , : , ,,  + ) , , , )v /( <= |{ ++ :, , M ; [ , , : , ,  + < @ , , , < #c|{]+xW ) : <= | , , , , ,  + { , W #, , , , +*W ).> @.( ) , <= | +nW\ , , , , , }  + \) , # ]+X , , X :/c}<; M {] , x } = +X )n / } =; ,, , , , ,  + ( , , )[, , =# , {]zuW : @/(} # | ] X )[>; ;<o# + W\ >x #M|, , ,  + , ,, , , , X , + : >x#z(} =# |X]cXW +[ @/(}<=#M { +YW ): @/( x (}<  + , , ,, ,x { , [ , :<=#.|oqzXW\z..YXhq}<= MJUqUvux) x@Z(} |{ }  + , , , , =# ;( < # ]+X. +>uu/( <=+M {U+0W )[xx /(}<=,MuU],X [>x@/ # x  ++X , , , =/ +@)< |[=/{>#(]x\*. ..*..=/O>#(]x\}n@)#(]x\}+x)<+ [=/{ (]x\} : ( {;+X  + /(} =; ], , X x\}+ X /{>#(c*. *)#(]x\}+@)# ]x\}+@) * / # :}+@) # > ~ (, +|{ XW\ [ , , ) >#(]x. +@ |*=/{>#(]x\}+ )#(]x\}+@)<c|[=/{>#(zx;}+@)< .[ + #(] [=/{= M {c+ + > (}<=,, , @) |[=/{>U(] ++@)# + +@)cXU[=d{>#(]x\}+x)#(]x\..@)# ]x\}X@)cX|[=/{>#(]x0}+@)# :}+@ ;X : (]x }+@)#(Xv\z+c)#(]x\}+@)#(]x\}+@: +.W )[ + <|kpkkn<\ :[= , (]x\Q0w)<.. .*{.#x]x..*@)<JuL=/{X#vQx\}x@)#(C**}+@; |[=/h>#:]xL}+ /*}<  + : |*pqdC@)#(]mZ}+....|[=/{> ]x\}+@)#(] \ +h)#(]xm}+@)#*.X\}; #Z]xun..*....*.. #(z.\}+@)#(]x\ @C#vvvuuvunnx*...{>L(]YXnXzQ#X] \}X@)Zzvx\}+JvzCzv=x{..u]xUU0@)h#]x\}+@)YuuJ=/{>u ]xz}+@*< +=/{>+ ;  +a&hLLQQ0QQmkbZx\}+@)MX|UUU{>#(]vvvuvunXm[Jm{>c(]x\}+@)XLUzY/{>u(vx\}k@W#(]x. +@..XJc=/{ #(.x\}+@ +|[=/c( n#  +Wq0ZkdZOqhkm>#(]x\}k@b<O0000LC#(]x\}X@)awC[=ucLUZQYzYv@)<ccL=/*>#C]x\d+@ZpX|h=k{nJ.. }+@)<vvu./{>#(]x\}++)<.|[Uz+Xx.) +wmwW8dpooq[mm{qbbW8\}ddpOQO[=/bbhhkdqQCCCYYCJJQLYCXnu..+@)# * . @)<.|q=/{>#(]xn}+@)< >Oxzm.J +qq8%haM*dqdpphap>#(]xk}+@)<bko**akm(ZLb}+zzzX|[=/{>#(..**nnzzcCx /{0JQ]x\mZ@)@$]xqw+#**k|[=/{>J(]*\}vuuunx..x... *x\}+@)#0]p\}. JdLx / +}M#b#Wopbba#)<ddd=B{$B*bxao+@)<0QLLLCC#d]xcvvunx.*... * + +X|L=Cm>.(]c\}+@...x..xxxxxxxnxn@)BX|mw/{>bm]x.xwh# |a + )_m&bq**d#hk@aaX#$=/$W**hx\qqwZOQCCCL{qQ(Xcvvux.*.. + + + )<J|Lm/.x.(]xYnxnnunuuuuuuuuuvv}+&)<mm[=/{d#(]QMY.cpq + #+L&$k&]h\}@MM<8*[MB{k#&ok\ppwZ0QQL=pm>Yzvvun*... + ; + @C<Lq[*.xnun]uvuvvvvvvvuvvuvvvx\@+@)<w|[=a{>#8p.XmpZ + ;[)kM$#(]@&M+@$ ; }+@LpXxxnuuvvvvvvccvvccccccXzz(]@@}+hb$$]M&8&@&@Xaa=W&>%addpppmO#@@@@}+oohdm[=ccCLuU# + : \X#W%%$$B$%88&&$&ooa*Mo*MbbbdpqwZk@oJJJYzcu..* M X ++nLUhzuvvczzXYYYUCCCCCCCCCLCCJm%@@@@@WkqOOpwCJJYXYLM + : -0M*WW&&WWMM#&%8MM#*ooh#*bbddddd#$@MZCUYcvux. ; [>x@ *..CLkXvzcXUUJCCLCCJCCLLQ0CLwp#@$$B$@@@*oaqCLLLLCCLUZ + : : ]&#%$WMWWWMWW8B8MW##*a#8hkbbhhoMB@@@WdOCXcu... +< #M|{] *..zwJ*0JCJJJJJCCQLL0mwpbbbdd#M##W&&8@@@hpWWZQQLCCLCLC + : : {t$#%@%&&&WWWWB$MMWWM##BaahaW#M*%8@B*kpqmLZmYzvnx..*vXUXYCLk0c0wdapOqqqqqpkha*hdpMakpdbqh*M888@@@bq#wZZO0O000Q +: : <|W$$$%888&&&%&&WMMMM#B&h*8#pC}<8@bZO000ppOQpLUYYYXXJL0OZZQZmdokO0qahkkhaaahkkdpW%M&hpddbhkMBWM%*qpwqmmmmmmZZ +: :: +r/zW@@@$$%88&&8&&WWMM8Bo*U(-]+ Wacdwpma#bomOCJUYYXXXzYUJObhhh**Zwqwwqppppppdddda8MW&hbbdddpkbpb8)mppqppqqpqq + : :{n/ , ,| , )[> ; < M|{ ; , :, , ;W [ (  + >, , , , [ , , , x, < #M|{ +.W / [ :; = {,  + , , , , , , ,, , +W\)z> @/( , = ; +XW\)[>,  + , , , , , @/(}<: M| ] x }< : X :[> @+ + >  +@ } , , , , , , #M ]zXW .;+@/( # | ] XW >x <CLM*{ *\) : , M { \ [  + , ,, , , , , , , W >xqQ(} =; |{]+XW ;; @/(}<=#M ]+Xq\.[ /(} : , , , + , , , ,, , , , x@ <=#M|OwzX,\. XYbqn<= M|zYZznv)[ + cc}< |{ x@ ; | , , + , , , , , ,, #: \_+ #(]x\}+@+#(zx\}+@)< |[=/{>#(]x\}+@)#(] +@)<(  +;\) , , , , } : =/ > (]x;}+@)<..[=..>#(]x\}+@)#. x\}+@,#( \}+@) :| /{> \} +<  + n<=, , , , @).(]x\}+@)#(]x\}+@)#(]x\}+@)#(]; {Y+  +.. +O< , :: , =/{>#(]xX}+ + =/C>#(]x\; X|[Xz{>0(]x\}+@)<x|[=/{>#(]x\++  : , cz]x\}+@)#(]x +@)<u|[=b{>#(]x\Q+w)#(*x\ :  : ] +b0*8Lhq}< : : )# *xnvXcccX.[=L{>#(]x\}YX).xu[=/{>#(]x\}+@)#( ::+@)+X|[ : (]x\}+@)* +8opaa0ZoJW/{> ; }+@)<JZ[= x....x+.ux*|[=Jc>#(]Y\uL@) (bx\ +@)< (}<= : +X*#kbdmQdq[=/{>: \}+0Q#(]x\}+@.vX]X\}+@.#(]x\}+@L<q|[ /{># x\ x@)< [=/{>#(] }+@) :]+XW;. +/(OdhmUzXZh|[=/{ # x\L+@....*...*....\}ccz#(]x\}+@) X|[=/z># x\}+ :: @kz}  +{ xwUXUUYc) (0x\vuuuuxnnnx...n]xC}XJXvXcz=/uxux. \}+@*<0|[=/{>#(&x0}p@)<u+[=/{*#(]x\}+ )#(vvvvvvvvuvuuunX#m]xwYU@zcwXcYz{>nx..x}+QQ0X|[=/{*#ppx*}cX) X|[X.cY#(]x. +X) X|[= + #(]x\ ;x  +k0ZLLQCCwhw}+@&< |[=L{>z(]xc}+@vuvvu=Jw>Cq]xU}+@)#(] *# |{ +wZqdm0whb0]x\}+@)#(]C\w+YJXX|UC0O>#(zxX}+@daXpmo/{o#(]*\ @)m+ Wz cv +mhBhwhopOmm(wbm}+@)<qpmLQQ>#(]aahkdq0QmQ=YL0OwmZmQJQY#(nC\}+0mpX|wbh{&#x x\* .*|[=.{d#k]x\}+*)#(]x\}+vvJJJ0OO0z#(]q\O+@Odd|[=/{>...*.. * . *=/p>#(]q\}X@)kX [=Oq0 n+x +BMqd*Wadpdoh{qqq]W@&+@)#(]x\}+o)UX|Xzccccvcvvvvv)<XX[Uzu>0w]p\}+@CLpp[=...*....*....*.[=/{>#Z]x\}+k).X|Obx cm +8dk&MdqdbMb[p/d>%%]$8oh@akX|[=/QCCCCC\b+CCJJY[zccccccvvvvvu<v|vc/mp#w]xv}+UQ#(kx\}+WQ.)mmpL +xdokd%#*Wbk)$%#[=8{>8a]x*&##)<mwmmZOQ#dwxCCCCCJUUYXXXzzzccccvcccz|d=po>ccccvu+vvvvvvvvvvvvvvcvv@)@X|Z=/{>#a]x\}.XObdu  + \)m#8h%Bh}$$)<#8W=M%>bd]W\#W@pqwwZZ0{p#(LCCCJJUUUUYXYYXXYXzzzzcX#(]xcqZZ*p[ + :=#q8&@%M@8M%8&MM8$obkb#MhMopdqwZmZOmB0LQLLCCJJUUUUYUYXXXXXUYYXzQhmWQUUYUCJJUUUUJJJUJCJJJUYUYzp@@@BapdpqqwUvcvXunb8U + : )0*#&88B%8&MMoMBMahkkhkb#bdpqqwZZk$MLCLLCCJJJJUUUYUYXYYYYJUJJJbqMpJCCCCCCCCCLCCCCJJJJJJJCO*@@@@@$#dmLQOUYXXcccm%c +: <zoo*&M###***#W8%oaohkbd#opdqqwdq*$@8dLJJCJJJUXXXzXYYXXXYJUCCYpq#pJJJLCCCLCQCCCCL0mmwm0boW%&&&8@@#d#*QYCCCJJYYz8Z +: :W%*M8$W##M####W$&o*aaak#MpdpdkkMo8@@@BhmOQJYUJJJCCCJJCCCJJJCO#ZhhpdbmQO0OZZZmqbkdpokdqdbwd*M&&8@8OkWpCLCLCCCLJOO + : (Q%*#%@%#######B&#*oaohaBdbp*&h()a@@%qmOZ0C0bJJCUJCC0OpbkdbbbdOZdkkbmh*aakkaooahdwa8*odmmwqbkM8%@MQbmCLCCCLLCCLc + : +w%#M8$$8&WWM####*o*ooh%ob*m|(: =Q@ZUCYYzZ0LCZCXzYYYYJLQ00Zpdho#WbZwqqqdpdpppwqqpqWMWWhwpwwqqhhwMmOmmZO00000LOX + : :/C8MM8@@$$8MM#M####ook&#cM {] \0oCJXcCbUmz....xnvczUJCLLOda*oodwqwqqqpppdpdddbp#&#M8*kddppwpmwkmwwwwmmmmmZwU + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + , , , ,, , , ,  + , , , , , , ,{ , , , ,  + , , , , , , ,, x | : #, ,, , M  +, , , , , , , { + W , ) > , , \ , , , [ =  +, ,, , , , , , , , x +}< , ,X , ( , , , , ,  + , , ,, , , , , , : :] ;) ; = : :/ = {: , , , , , ,  + , , , , ,, , , , : < @ (} =# { : , | : \) > , , , , , =  + , , , , , , ,, , , = Mz{]+XW\ [ : <=#M , , , ,X >  + , , : , ]+X , , ,, XW\ [*x / } [: # +{ Xv [>x , , , /  + : , : , [ , , , @/(}<=; | ;+X @ }< # +XW :[zx + * , , ,, ,  + : ,, : : , , , M +zv\ : /(}<= M+{ + [>x ;=*M + W\) , , , , (  +; : : :: ,+ , , , W\ [>x@#v}< #M {X+XW\ + /(}<=#M| ]+Xm\ + : : , , ,  + ; : : X # , +@)#(]x.}+@)k(]x\}+@)pXcnu/{+#(]x\} #(]x\ + ; =/{> ,  + ; ; : @) / >#(]x\}+@)YX|[=/{>#.*x\}+@)#m]x\}Y@)#(] \}+@) (+ ..+@ #(]xc.+@) +} ; :,{ # @)< ; W\,  +< + : , ] |[= {+ (]x\}+@)Y.. *{>#*]x\}+@)#(.x\}+@ #(cx\}+@)u(]x\}+@)#.]; }+@) : #(]x }+@ {]+X \) +/ {< , , ,, > (]x\}+X)< + =/{>#(Qx\}+@+ =/{XvJ]xk}+@)#(]x\}+@)< :/{>#;]x : :|[= {># : + : }0 +pd+uW\ , , /{w#(]nX}+@)#(Lx\}+@ X|[U/{>#(]x\}+@)<u|[=/{@#(]x\x+@ : [=/+># : )#(]x ; ]+X +**0vX(< \ , |[a/{>Xx]x }+.nczvuYzx>#0Uv\}+@)CU|c*z{>#(]x\}+@)Lp]x\ ;x  +kkh0QqcW\)]x\ , # * }+@)#JUZ\}+c)LX|[n/{>#(]woapO)&X|[=0{o#( }+@vc*.Y=/; (]x\}+@ X|[= # <= +  +#(ZxCc+u)< |v=*{>#(]x\}+@)#(] +@ X|[ >#(]xC} <C| ; +Ov;.[  + |bXvcucZb{>#(] } @)#UXQX}+@ Xu[M/{>Y0QL\}+@k<O|d=/{x* x\}+@) (Lx @)# :x }z@uuununx.xnn.x.v+mU<CJUXCQJ#(]xvvx*)#(]x\}k@)#J]x\}+@)vX|[J/ >k( +}+@)+ ]U..  +QQCCCJUmhw|[=/{>#(]x\vuvvuvvvvvvuvvuYQ}+OZYJ|[=mUY0CUxXuxvz#(]x\#+b%zncJ\}+@  +x\}+@)< * * +CQ00LOkbLY#L]X\Y+z)CZmx\}X@0#..xY}p@)#(]x\}WU uC+L +$oq*owwqwwhh@)#(]x\aoM##khppO{>ZOm0ZmOOO0XJ[=/{>#OCx\}XX)#(]xmq+@Z (ZxmQnU+kw +Mpa##bpppoh\ww@)@@|[=Zm>*MMook+w)C(]x\}+@Y<XXzLLOqmqwY\}+bmqX|mb/{>h(]x .*....*...*.#(]8\}w@)<Q|k=/.>#dZ+.;LY[ +dp*Wkqdd#b(pqp}$@)BXhq=oh>#(]x\}O0O#(Xxpw+a)#@]xOZ+@)mm|[=/{>x /QM<  +a8Mpd*p#hp>ka]o$#+@8<oo#=/{pwqwmmmZZ)aXO0QLL>CC]JCJJJJJJCUJJJJJ(dd\a+@z#(mw\}+bq#h]a\}YYYzX|z=vvuuuuvuvvuvvvvu=/{>#(wx\}h@)<B|[cmwQvoY +MxLd$h$#ba$B/#>%#]WW}h@oWX%[=ddpdppp\#b@qqwwwmmmmmmZZZOO0QLLL[C/{o#o*xUJJJJJYYYXXXzXzzzcczcccz|[@/{db(]mh}+U)xmWB$*M@M*&8&#M$8khko&##&kbbdddddqo&qddpdppqqwwwwwwmmmmmZZZZOQkok&0CCJJJJJJCCCJJJUUUUUUUUYYcd@@Bod*akp0JvvvLCu08pxx +: Mx{qB%%$%B8W&&MW$#ooo***oMbkbbbbdp*@hqdddppppppqqqqqwmmmwmmmwZw#k8pOO0QQCLCJJJCJJCCCJJJJUUJd$@@@B*pmQOpOYYXzzcOWpuc + [ x&*MMWMMM#MM8%&##**ooa&aahhkkkh8@$adppdddddppddpppppqpwqwwqmhaWhZZZZmmmZOO0O0QQQQ0OQQqkM$8%%B@$hokQJJJCJJJJc#*cz + : } #MB%###MMM#M&$W###*#o8*aoo*o##8$@@%#hbpdddppdbddddddpppqqpq#hW*ddppwmZmmmmmqdbdpaddqhobh#W&WB$mhWaJCCCJCCJJL8qX + : )~B*$@&#MMMMMW@MMMMMMM8&o*oWW88W@@@@%W#oaha#ahhhhahhao**oao*Wdbo*##ba*aahko*ooobw*WakwmwwbaoW8$8ZaaQCLCCLCCCUQhC + , } #8W$$%888WW&W#MMMMMMWB**M8WX[Ou@@Mdbkako#MaM*aaoaaao*#****a#*&8*pbhahkbkkkdddppd&M&Mdwqqqpd#aWpOwmZZO0OOO0QL00 + ,, XWjCW&$@@$$8W&&&WWMMMMM$#a#L{? =#MMzkkkka%#WM*hhhkkkbbddbbkaW&WM8#bhbbbdddpdddddbd*W#W&hdddpppwbamwmmmmmmmmZZZOZ + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + , , , ,, , , , , ) >x@ , , X x , , , , , + , +, , : , , , , , , + : : | , , , , ,  +: , : , , , ,, M, + x / # / : , >,, , , , ,  + : : : , , , / = @ }< M : , , , ,, ,  + : : : , , ;] X \) x, { \ [ , W, , , ,, , ,  + ; :: : ,X / , , , @/: ; , : X [ / , , , , ,,  + ; : ; ,, , , , , |{ W\ [> ,, @ ;# , , , , ,  + ; : : , ,, , , , [ xn/( < # |{ :*\)[: , ) , , , + ; : , , [ , , ,, , <=#M|.] X \ | , [> / <=# :, , , ,  +: , , , = X , , , +XWY)[; / }< + ) , <= |v] * ) ; , ,, , , ,  +: x < , @, , , , >x /(}Yn# :;XW\)[ / } |{]+ [8u * .#M X , , ,, , >x + # , , M, , , ,< : +oJ\) >x /x}<=#M;: XW\)[>x@ ( <XC .; XW }< : , ,  + W < , :: , , |[=/{>#; x\}+@)#. u\q+@)#(]x # \}  + , : , x\}+@ X|[=/{>#(]x\}..)+(]x\}L@)#( x\}+@)#(]x\}+ ) #(+ \ @  + \} : ,>#(]x\}+@).x +* {>#...\*n.)#(]x\}+@)Xn|[=/{>#(ox\* ) + ++ # :x } , / >#(.# ,  + ], : [=/{>#(. *+@)#(] \}+.)#(]x\ * ; / # ,, , [=+{>#v) / +# \ , : )#(]x\}+x)#(.x\}+@) +}x=#M { , , ]x\#+@)CX|[=/{>#(*x\}+m)#(cx\}+@)#(]x\}p@)#(]x\ ; #(]x: +@)< ]*X  +aL)_ < ;{< ,[= {>#(0Z\}...*X|[=n{>xxnx\}0JZ#u]x\}+@b*Mbp=8%>#(]xM}+ |[=Yc>X(];; +@) X|[; {>#( }+@ > +  +bhdXut-)[n@)< [=/{0#(]...*@...*[..{>cX]xu}+q)JJ|Y=/ >u(ox\}+@)#(dx\ +@+ |[=.{U#( \}+@)0X; /Q># x\}= *.  +pCzXXJZd+ + ) [=/{* .x..xxnnnn=/JXC(]x\}LC0LX|[= {X#M]x\YZZOq(]x\.*.)# ]Y\}+Z) [=/{ ;;]x*\. ; +YJCCCUzb%fx\} @) XQ[n.{>#*xnuuunuuz|w0/C0LULLQ}+@)ccv.=/{>oOZx\}+@)#(U*\}J@nXX|[=Y{>#L] \a+@ X|[= + #((O..#;+ +QQ0QLmadJZ(]x\}+@O<vunx/xuuuuvvvc@YwZ|[pLL>z(qQJ0Q@)YcuczU{L0p]x\}+@o<*a[8/CX#(]x\UzzQ;+ .n+[ +mZOZhaZQQ0>#(]x\dw@)YXz[=/{>#(zzz}Jd)Zd|[C/{>#(]x0qdO0#WkxBk+a#<*o[=/{nc(]x.}+JzuX|[=C{>#(] ++@)#(]xqmq00ZOQ0=/{>#(]x\}b@)k*]kba+@M<M|LCx..*.]x\xxnvcX|w=/{>#.]x\}+@)daqxhoh@M#(mwqoMW**odd=/{>b(]x\}+@)#h]x\b+@....xxx.x....x.+@@h(].\}h@). L0|  +o&opdk#apd)dX%W=$Wok(aa\}+@)#(]x\QLC)qb|b=/{>#Obd\}. .xxnnnnnnnnnn\}+@)mm|[=bq>#x]x\}+XQW). * +8bq#ko*dbk#@o8B|[$/aoW*]xppdpppppp=odwwwwmmmZZZZOOO00QQLLLLCC+mo<b*[U/{>#QUx\}*xnnnnnuunuunvx\*+qq#M]x\do$O=.* +Ub8Wa*kak%B##@%YcvvuuuvccvccczzcY(]@\}+d)#(]bmYoL\. + (La&8ka%@]x\88@#%Xah=8#&8(kbkbbdd<o#[dpppdppppdppppqqwwwmmmZZxh*+&)<LJJCJYYYYXXYUUYYYUUUJUU>#@]xbk+@)*X|[=/{kdWpnnpm< + xkt}W##M%B&B&WM############W88888*aahahhhhhhhhkkkh%WM8MabdppqqdMpppppppppppppqqqw + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +: , , , , , W , : : , , ,,  + : , , , , )[ } + ) >+@ < | , , ,  + : , X , x ,+ , , #M|{ W } = M ]; , , , ,  + : , , , ,, : ) x@ : |{ ; ; |: > , ,, , {,  + , , , < ,M , , }<=;; + W ; /, , : ; / <= , , , ,  + ,, XW < , , , XW+) >x*/( =# |; <+ :+ W, , , , , ,,  + , @ , W\) >x , , , @/ }Y= M|{ X > @. : , , , , ,  +, # , ,, , , , |z] X \ > , + / = M|X] , , , , ,  +, , , , ,, , >v@/ :< M X ) x ( M| XQ\ ;+ ; , , , , |  + , : , ] #Yu{] : >x@ , +XW\; @LU} ; |{]+ ): , , , ,>  + ) , , , , + W\)m>x@ : *{] [>x@/n}< # |k uX; #M , ,, , , # |{  + } , , , ,( XW >x@/(. =dc|{]+ W\)[ / <CYU.. cX \)J0L@ + =# [ : , ,,W ; x  + M ] , ,, , ,X #(]x }+@)#(.x\}+@ |[=*{>#(]x\}+@)#(].\}+@) , , , ,@)#( \}+. + + #+]x .(]x\}+ )#(]xn}+ )#(]x )#(]x }+c)#(]x\}+ ; {>#(]x\}+@) |[= .>#(]x\}+@)#(]xQ}+@)#:]x\:: X|[=/{> (];\}+@| ]+XW\ +@zJq0= ,@ |[=/{>#(Yx\} @)#(]x ;@)#(]x\}+@)XX|[=/{>#(] \} #( x\} x./On +wWoJMW\ : +@ X|[=/uY#(]x\}+...X|[=Uc>#(]x +@n#(]x\}+@)#(]: ) +x +{0+ +pdhOQO}<, ,+@)#(]xn}+@); \}+. X| :># ;x\}+@ X|+=/{x# [uX@ +Wbpq00jX ( :\}+@O0X|[* {>#(]x.}+@).X|[UnQ>#..xv}+@).Xk[=/{>0CXxm}+@)# ]x0}+  :=CJ. +LpbZUvL0|_>#(]x\}O@).*....*. (]* }+uuc(]x\}+Y)LX|[=/ +(]x;++@)#(]m\}nx....*....*..x\z+cv<*|[=/nz..*x\}+@)hX|[nczv#.]x0L+O)#(]x\}+@ZO(]uuuuunnunnxxxxc(mY\LXYxYYm[x/{>*.. *.+@0ZX|[=/{>#a]mmh+@XcX|[=/.u#(]xz}Y@)#(+ }+@)< *| ]ZZ* +JCCUULmbpZX|[=QZ>zuuvvuuuuuuuuu/{w#(m0zX+@)<XnUQCY>u(].u}+X)ZX|[=/k>*q]W\}+@)#(]xC}+@o#( x*}+@)) >8v/b +wLLQqbmCYY)#(cc\}+@)o(]x\uxx)#(Lx+}+@) [=/{>#( x\}0<=w0|{v +qmkaqLQQCJ+@)Cmwmqm0LQXX|[z/m>#(]uU}+@m<pq[=do>&(Xv\ * X|.xun>O( x\}+@ #C]x\X%u) . +k#owwwZOwkp}+a)mZ|zX/{>#h##*kkqpx(]x\}+Op<qhk=/o>#(]. *. X|[=/M>#(]x\x+@)u(]Wv; v +*M#ppwpakm]O\}+@)#(]c\uvuzYJ0LLZzxz(pZ\}+@pq(]Y\}h@) X|[=/*>#U * Y +Mkqddaodwww(]xB}+@)<kpp=/{>#QLL\}a@CJJJJUUUXXXXzccc@)#(Oxb}+*)<h|[=/{v+ x +qd#po*pppb{>#8]@\}+k)a(]v\}+@QzXuuuunnuunnnxxnn#k]x\x+@)#zcz\}cXnuuuuuuuuunuunuu@)*Xqwp/{>b(]x\&+@)%(]x%Ma@pdpppppp>M(qqwwqwwmZmmZOOQQQLCLLCCCCXa[#/{UXXXXcvvvvuuvvuuvvuuuuvv+@)b(MMW%+@dddddd/M*#dppddpqqqqwwwwmmmOOOO00Q)*XM[=LJJUUUzv}+uvcXzXXYXzzXYU\}$@bdk|[kk{>J(]dp}#@X.0kn.u +}8*&B8$BW%8&WM&@*hhkWWo8#bhkkkbbpM$ppddppdpdppddppppqqqqwwmmOaa*#0OQQLLCUXuuzYUUUJJJJJUCCUY*@@WohMohpZCczXCXuq%dcxp&vx ++&bo*MM&8&WMWMMBWo*o*M*#&aahhhhka%@Wddddddpddddddddddddpppppwbo*&qmmZO0QLLCLCCCCCJJCCLLCLq&@@@@%apmOZpOJUYzYXQ8bcYb8&U +@w#*MBW***####W88####**o&*aaaaa##$@@BMhkbkdbdbbdddddddddddddqd##WpqwwwmmmZOOO00Ommqqpwwo*B%&8&B@@ook0UJJJCCCCXp@0Uha&% + {8*#W$8##M####&$W*####*&&***WMM@#$@@@$&#*oooooooooaoahakdbbhW#a&*o*adpppdppddkhhbaabkbohb*M&&W$@kbW#ZO0LLLLLLJdMCakpQ +,>XoMM%@8MMMMWMW@&M####*&8##*%$8u{M@@8#MM#MM%W#W###*#WW&8W&&WMaho##MaoM**oaoM#o#adb8#obqdqdho#&%@$pb#qZOO0O0OOOLwwmOJC +, MQ*a8B@$%%&WW&&WWWWWM#M$#MBkf--;/8$o###*M8&W&8MMMM#MM#####WMW&8B&khooooaahhkbdddpM&W&apppqddaMd*MZpwwwwwmmmmmZ0OQQQL + [zQO8B@@@$8&W&&WW&&WMM$Wb]<= , ]8M#M#M$B%B####*#**###***#&88&8Waaahhhhkhhhhkhhko8M&&obddpdqpqwoOqqqqwqqqqqqwwmmZOO + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + ,, : , , : : , , : , , , , ,  + , , ,,( , : : , X , X > : , , , ,  + [> , , ,, , : / , | : = , , , ,  + , , , ,, { : ; ;}< : ,} X , , , ,  + , M ]+ , , , x@ ; # |: ; , : : :)[ x@ , ,, , , ]  +, , ,} # , \ @ {]+ W.) } x : = | , , , ,, , ,  + , , @ , >x@ (}< M ; \)[> , , , , , ,#M ,  + #, ,, , /( <= M {] : / =#;: \) ; @ (+. M|{ , , , ,  + | , , , ,] Xn\) ; } ] W ) / ;,n0{+ *. , ], , / <  + [ ( , , , @/CY<= M; +XW\) : }<=#M| +\m[ + +<=# : , : { XW  + ,#M {, , , , #M|{]wCW\,[ @uYwJ=#M ]+xCzvu> + }L * ::}< , :> :}  + , }< ] \) M +XW\) ;@Cv}< # ;{ +0*.)[>xLC( *=cM :]mOW +@/( ] W\) :: : # |:  +@/( <:, } )#( \+ )<v|[=/:>#(]x\}+@)uX|[=/{>#(]x\}+@)#(: \}+: [= {>#( } +; + W ]x\}+@ : [=.* *x\} +) X|:=/{>#(]x\}x@.U(]x + < + : x\}+@) | + + / } ,(]x\, @ {># : }+@)#(]x\} )#(]x }+@)#(]x+ + :{> , ,  )[>x  +=. { + , , +@ X|[= ; ;}u@)#(..\}+@)#(]x\}X@)# x\}n@)#Y]x\}c@)< * .x.xx. x\Xc@.#($x\}a@)#+ x : )< |[=/{>#( x\}+ +#(Xn\} @.nx.x.*...*]x\X*v)# ]x\}+kwqZJUz/{@#(]xd}+@ |[=/{>#(]; }+@+#+]x\ + ) :{]LXW +x /pqqOLmO).(]x*}U@).X|[=/{># ]x\}+@)Q(mx\ +@) ..= u>#(]x\}+ )#(]x.}+ : x@/  +M| 0wCzuUb+@)< [Q/{>...**.. * =/xx#(]x\.n..O(] ++ )#(]U\ @)UX| ; {>#(]x\; .{  +L{>vnuvvnYa}+@ .( x\} @)#(.+\ +@)#U]x ;+@)<+ /{># .* )mn  +vCUYXYzcXU]8h}+@0<vununnnn.xx...x)0Y|UUu..*cv..*+@)#(++ }b@) [=/{># }*n#  +cQCCJJCwbkw(BB\p+@cvcvvvvuvvunn\}Q@)LC|c=/{>#.]*nn.@)00]x\w+pd<a|[=/{>#(]n.v+@ + x\w+@)+X.[=/c ]CbW\  +O#OQmpkpQJ{>#@]x\}+@)#(]xqQ0@)pmmxwk+b)#( xxx+@)zX [=/{ (]x\.+@).X|[=>QO/ }  +OkpoaqOQQL=/b$M(]wO0ZO0OX|[=/Q>#(]x\}cYLO0LLJczu.(]x\}v@)#.]xQ}+@J<Q|Qo| +  +L*M*pmwwwdhkp/#hkw0x\}+@o#M#akbq>#(JLLX+@)#(]x\}Lz)<h) @/ +0WModpqboapXw[=@{>Z(]#M##*b#(]x\v+u)x....*{>#ucxvn+@)0LO[=/{Q#(px\}...*....*. .(]x\}+Z)<z|[d/{*#(px\}+@U+ |  +m#dpdbo*bp@qqX|@=/{b*ohb\}+@QQLL[o/UUYYXzzccvuvunuxxx>#(]xx}+Z)Ok|[=/{pw(]x..*....x....*#(Mx\w+@)CXp[=.{>k(]x\}L [> +LdoMboodddbd@)8X@%oaa>#wwwwZZO00Xk[LLCCUUYYXzzvcccvvvvuuuvuxQw+dq<uvu=/CYuuuvuuuuunnnnn.n>#$]xZ}+@kwd|.=/*>#(]8M/ .* # +C#BaMhddb&Mko%@)<B*#h/{ppppqqwww)ad|O0QLCCCCJJYYXX<zzcccvcc(]d\bk@cvvv[=Xvvvuvvvvvvvuuuuuu{>#Zbx\}+hdp(od]**.  +0%MW$hk#B$MaxM}+a$#w]x\}*@)<B|[=da>.Zkc... +|Qa%@Mo@Bh>#M]x\8+@)<&88=/bbbddd\o&@qqqqwwqZmOQQ0QQQQQCCLLLC{h#*oxCJCJJJJJJUUUUUUUUUYUYUUU|[@/{pb(]x#}+L)xk%%$@8&%&W*a%Bkhha8&WBahkkkbbdo@hpdppppqppqwwwZmOOOO000QQQho**QQQLQLLCCCCCCCCCCCLCCCLCLYb@@8#*8W#hm0YXYQQcL&#JnC%O@ + 1Maa#W&%%8WWWM8$#oaoWWM8Mahaaahh8@%kdddddddpppppppqqppqqmmwmh*MWwOZOO00QLCJCQQQLLQLQQLLC0k$@@@@MahdphbQUJUYULaMCXO&Bp +,;)bM&B#*####*#8$M*######8oaaahooB@@$Makbbbdddddpdddpppdddppwk#W#pqwwqwmZQUvYLQ00mmqqmwba%@$$$@@@8*kw00CCLLCCUL8hUZ*#B +, =%M@$&#MMMMM&@B###M##MB#***MW$@@@@@$8M*oaaaooaaaaahkbdppdbW*W%ohhbpqqwmOOOwdbhhoaaha&WM&&88B@@BhMWk0000QQQQCOMpwokq + WmM8@@&WMWWWW@@WM####M@M#*%@d+Q8@@BWMWM#MB&MMM####M&88WWM88aa*M&8*o*ooaha*###aboWohddbdoM&88$@@*d#*wZZOOOZOOLZbwqQJ + (k%W$@@$B%88&%8WWWMMMM$8M%*f+ W\M@*#*#*W8&W%8WMMWMMMW88&&WMMW%8*aa#WM#*#MM*oohda$8W#bpddkka&BW&@kqdqqqwqmwwwmZmZQQL + :+aB8$@@@@$%%&8&&&&&WM%$w] @, }<%##M#&@$$BW#####*##*oo*#W8%$@$#aahhaahaahhhhhha&&W8#kbdddddkbLqWqqqpppqqqqqqqqwwZ0 + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + , , , , , , , ,  + , , , + W , @ : , : + : , , , , ,  + , ,, , < # + : , : , , , , , , , +, , , , # ; ; : , , , :, M , , , , , ,  +, { , , , ); /: : , : , : ] ,, , , , , ,  + , , , , ,@ }< |*] + x , , , , {]+ W\,  + : , , , , |{]+X ;+ , , + :|{] , , } , ,, [  + : ,,/ [>.@ ; ;) : {; \;[>x@, = \, : | W  + : , x #Mv{] ; >x ; : W\ : /Y* + ] (, : > (  + : , =# : W\)0Cx@; =#M|{] : >x@/(}< : {n+ ; x@ { , , : , ], +[> /(, , , ) +XW : /(* x0Q|{ *.YQwC@/(,<=zJCXcxX; [zU ; [ , , { X x  + M + , , = \)[>x@+ #M| ** \uv> / =uUuv]:XzQc* / =Zc| + \)[ #; , ,> M  + \ [ / , , ,}+ X|[= ; }+@.. *.. >..]x\}+@)# x\}+@) X|[: >#( x\}:@ X )[ + < # ], , , \}+@) + =/{>#(]x.. + X|[=. >#(]x\}+@)#(]x\}+@*#(]x\}+@)#(]x\}+@)#(]x\c+@)#*..\}; X|[.cu>#(]x )c(]x\}+@)<v.[=/{>#(]n\ :)#(] }+@ : [= :># ;x\ +.  + :]xmW ) \: #(]x }+@n.X..nc{>#(]xxxuJ)X(]x\; )+...nvuun.*|[Xzux#(]xuunu. .|UY/{>#(]x\}+@)# ; }+@ X|: /{ ;(vx\}+@ +X|[=+ ># ;\cv>  + |LL+XW# }+uYYu|[ *...*.\} *.#.x.u}+@)#.]x +@ #(]x\}...#(]x\}+@OOX|[=/{> .*..n+@).(] ; +@Y#(]Lz}+..*....*....]xnvux.#(]xv}+ .cX| /{x#( \}+@)CU]nnnxx...**...*x(Cc\zcvnucn[=/{> + +@Q<u|[=/{>#(dx\p+@.x.| */{>#(]Y\}+@u< +[=n{># x\}+ *. |C]  +OXXXXYXzXU<kMo=/C>#uuuuuuunxx..xuULYXJYcx+@.nxxuu..* ( *}+CXzX|[=/{>kdb#\UXx < ucnu{>#(Y*\}c@) |[Z/{ + x\}+ )CQx@  +JQOCJJLOwdqw<8B[=/zzvvvvuuuvvuuuzLC{CX(nx\}+@).*]xz}+  . x\x n0#M|  +h#bOZqdpZL}+@)8X|[JJUY#(]x\}+@)#zXJYvxx. X|[= +;#(]* }+@m<Zwq=pbd#(vvx.*@)<* [ x.#(]Y.} )<u|n=/{.*(cxvmx [  +WaboobmOOQxOwo$)<wmOZZOmm(]xmZOL)OOUXYYUCJYcu.. ; X|[= {>#+ x\}+OO<OqbhMhJu.]x ) ...X/{>#(]x *+.)<xz[=/Xzc(wU( =  +dd*WoqmwwpkkddaMaqZX|[=boMM#hdpwm@)XYXc=/{>#(]x\; @) |[ +>.cUU\}+Qwwwdk=/{>*....* )#(]xZq+@)<un...*. ; } X|;=/.c#LCx\}+L)pX|[..*...**...*)<p|[U0{>c(]Z\}+@0bX|[=/c *(  +MobkbbaMab/dp#(B@\}h*okb|[=/QLC(]qQUYcvuuux... #( x\}+@) +|[uC{LL(]x\}mm)<x.x.x..*....*+@)kX|m=/uJ#q]x\}Ld)OpZxJUzccvun..** +x\ + .vC=0Q>xxnx\UXvuuuuuuuuuunx.\}+@#<OO[=/pd#(nx\b+@)<%hv.*.x@ + ##&#MokaM8##&${>@%M*\}dpppqqwwZwdp(CCJUXzvuuun....* **..)zL|wm/uuuv]xzc+uuvuvuuvuuuuuu\}h@)dX|[=kp>#(]d\}+dpkwc..M| +W )qBMo#%@BMXW&=/BM##&#\}dddppqwqhkZQQQCJJYzcvvuunx....x..x+XOmkw[=ccc#czXzzzXzzzzzzczcczzxph+mp*(]xdh+cQmY..[ +(}<=@BM%@&+@8BM|88/{>&$&*kdddddd|o*pwmZ0QLCCUYYzccvuuuuuvuv\}wdhqXYXYYUUUUJUJJUJUUUUJUUUUU(]%\}+d)0dko\OcJwQux + + W%B@@@%%$$B8%@W**#&%%%#kkkkbddM%hppqwmmOQQLCCJUYYYXXXXXzYQdhopCCCCCCLLCLJCCLCLLLLCLLLLJL*@@8M#W#*ad0JUJ0ZC0#MOcLoqc ++@ (#*M&%%88&88$@&###&%&8Moaahhko%@8adppppqwwmO00QLLLLQLLLLCObaMk0Q00QQQ000OO0000000000QLOhB@@@@&#*akhkZCCCCCQhMqUQ#%k + |{]O8%W*ooo*##8@8M#M#M#WW#**oo#W$@@$MhbddpppqqqqmmmZZZOZZZZwa*Mkmmmmmmwwwmwwmmmmmwqwwqbo8@@@@@@@%#hdpwm0QQLLCO*#OZoW8 + > @&B$MpQwaMM8@@&#M#MMW%W##M&%$@@@@@$&oahkhhhhhhkkbbdppqpda##W*hbdpppppppppbkkhaoooa#&8%B$B@@@@@W#MawmZmZZO00wokqhab + # |LB@%hwbo##W$@BWWWWM8@B#M8$8Wo&@@%MM###WM#oooooo*#MM##*#Moho*MM*aaaaaha**#M#aoM#oaaoaoM8B$@@@@&o##dqwwwmmmmZwddpwL + ;)[>0B@@@B%8%%$@B%B%%8%@@%@@*z#M|bZbWMMW%%88%WMMMMMMMW&&&WWMW8%WooMWWWWWW&WMMM*#8@%Wohhao*#8@@$@@WhabddpppppppqqqwZO + : M|h##MM*o**ooooooao##aaqcW\ [>x@kbk*#**akbbbbbdddppbbkao***kpqppddddddpqpppdh*ookpqqwwqqkkqpohUn0ZmmZmmmZZZZZ0O0 + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + : , , , , [ , , , , , +,, , , , , , X , , ,  +, : M , , , ,,  + : , [ : : , , , ,  + : , , ) , #M|{] ; ; , : : , W , , , ,  + : , , = ,, , [> ; : : , , : @ , , , ,  + : , , \ , , :; + : ; , , , ,  + :, , , , < , , ; ; ;: , + ;W\ , ,, , , + : : ,, , , , , ; ; , :, : ; + }<= , , , W\)  +: : , , ,, , , (} : ]+xW + (} ; : >: ; . + W\ , , ,  +: : , , ,, XW :[>xcJX} ; {]+XW ; :(}<=#M ; ..++ : , ,  +x@ : ,{ , x@/(} *cYcX; .uYCJv<= |{vvvvx : u.+ { | , @/( + {: , , , [ +@)#XUz\}+@)Jv|[=/{;#(]U\ +@ +X|[=/{># =/ , ;  + x : , , X /{>#(]x\} ;X * +x\}+v)#(] +}Xz).(] + |[=/ ,#(] =/ ;  +<= | , ,, , @)#(]x\nx@)#(+.vx+@)#( + + : }+@) (] *xu@)+X|[ ; #(].Xv+@)#.nx\}+@)#+ + : , (], )#(]x\.. +X|[=+ (]xuzc.)Ycx.. + .*xnnnx...nvcvn) X .vvv..(]JLOw@)<.xucc{>#(ZXvvz@) X =/{>#;] ::@)Um0x , |[=Jzzc. x .*....=...#(.ucXXu.<xvun/{>#(Y0p#+@)z(Zx8#bpwOO|8=/{>00]x\ + + .xn./{ ;(]. }+@ X|[= + #(+* ; .. +\)cZOC/(} x\,,@)nvcu=/*....*... *...vvvn.#(]uvvvu.. * }+@) ..*.. * \+ )+ [=UU> ;  +.UYvvvuuX0>#(]x\YXvuunuunnnxxxxxncJCCJCUzuunvcvvvccun..*.x=Q0U#(]x\}+@)bkbmJcn.* .nx* @ *un.=*. # +x..+@) X|[x..* Xxu +XXzXXXXJLmh{>#(OCz}+vuuvuvvvvvuvvXCLCJYzX|[=/{>#uzUJUzu)<.n[LOCC#(]x\}ahaowY[=/ .vvcv.+@.u.|*n.{+ (uXn}+ #LOOC}+@zYJCCUXzcuucXUYc.).nx. * < *. nYu  +bdwmqqwOQLX|k*a{ZZO0QQQ0Zm<wmwm0LQQQCUYUCCQLCYXcv.>#(]ccux@)xX|[=mqqqpdbkhZUun.. /{>#(] .ux@)YYXc\}+@)#(nYJ}+.*<.|[xn{>uccxXYvzCUv*  +aa#*bpwpddbp)<h*a=/Zphooahdm@)#vvvuuuu.*...*..xunnnxnU000J|XJO0mq(]x\...*. . * >xJZxYUzunxXYXx/nUZZCc\czv*  +ho#addbkkbppq@*88|[pkakd(]x\}LLC<O0CXXXcvvvuunx....*.=/{*#(.vCQ00J#bmc...  +xm###*akkooo*MWM+&&#ohb=pqqmmZOQ0wm0LJUXXcvvux...** .*....*vUQOOC}vvv<vzcuvuvvvvvvuvuuvuu[Qpd>w0]xLpmU)<mmJ=/{obQv.x* +M|z*M#oa#88MMM#####o*##obddppwmOxddw@LJJXzvvu... + }+ + .**cCOwZCxvvvcczccccccczcczccccccX|hh/{m#(]wdQUQpZX|wpOO0Ccu. +, >08&#M%BW/MMM####}+#MW#abddppqqkhb}LLCYzzcu.. +(]x\}+ .*|zLmpOJ(XzzYYYUUUUUUYYUYYUYUYYU)#qbO\L0QQwkkwLCQLJ. + =xa%B%B$B8&88&&%&#ha#MWMMhddddpp*WoqQ0QJUzcv.. ;) / *..XQqdOJXYUJJCCJJJCLCCCLCLLLLCCCQkB@$&#***akwQCJJQ0OphpCCZqX + W\Zh#W8$$B%8&W%$8#oo#####*kbdddhW@%oq0QQLUzvn.* <= |{ *.uY0pdZLJCCCLLLLQLQQQQLQLQLQLL0Zh8@@@@$M#ohbbmQLJCCCmhkOCpWO + (}<Y*#MMMMMM##WBBMM#######ohhho#%@@$&hqZ0LJXcu..XW\)[> *.uXLZbbZLLLQQQQQ0000OOOZZZmmmqdaW$@@@@@@$MabdwOQQQLLLOdhdZd&m + XWdW&%M##MM#WB@%M#MM###M#o##MW%@@@$WabpwwZQJUXvnxnuvccXJ0mbkbdqqmZZZmZmwwqpddkkkhkhoMW8BBB@@@@@8##apZO00QQ0Qwkbdd*O + (}h%@B&####M8$B&######MM#WM#d0p88*bbbbkkkdwOQLCCQOZqqqdbdpdbhahkkhkkkhho**ohk***akhhao#W8B@@@@BM#*kqmZZmmZZZqdddbC + +Xq%@@$B888%BB8&WWWW&8WMdCx@/(mWhbho#M#*hkpmZO00OZwpbkha**#*kkko****o***oahaM&8W#akbko*M&B$$@BqCOdpppqpppqqpddqpJ + @/(nk#MM*oahahahhkbbkakC=#M ]+mqqdkhhbqwZ0O0QLQLLQ0Zmpbbkkpwmwmmwwmmwmmwmwpbkahkbqwmwwqpddpk0x@/LZZmZZZmZZZOOOZY + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + , , : : ,, , , ,  + , : } , : , , ,, : ,  + :: : , , , , : : , : \:: , , ,  + : : ,, , , , , : : , : ; : ;: , , ,  + : : , , ,, , , : : : : ; : , , : +, , , ,  + : : , , , , ,, : , : : ,/ : # : : , , , , + , : , , : :, , , #; : ; ;+ , , , , , +, : : , : , , ,, W [ x: : : : ; x , ,, , >  +, :: , X , : , , , @ =#M| ; )[ : , , : @. ; ; \) ,  + : , ,, , , : , , ,# XW\v[> : <=#M , ,[>x@/( M ; : # >  + , : , ,, , , , , X x@/(+nY# : * )[>:@ }<=x.* ]+ , ). ; , [  + , , : , , ,, , W ,[ <=#M| + x\) x + + |{ +nn + : }<u# ; W\ W  + , , , , , #(]  + +@) X| =/{>+ x\}+..#.]x +@; |[=/{ , \  + , , , , >#, , , [=/ (]x\}+@) |+* + } )<;|[=/{>#(]x @)#( + ; :, # , + , ,, , , : :< [=/{>+ ; @)<+ [ /{> ;x +@)#( \}+@)# ; ; := :  +, , , ,, , : \}+@)# \}+c). ]x ;)<. ;= { #( x\}+ )#(]xnX+@)#(]xJzL@)#( x\ + .*X|[ :{>#(; : : {> ,  + , , , , , /{>#(]Xcx+@ *.xuuuun..]xXc+@)..|[ >#cJU\}8@)#(+ \}+@ X|[=/{>#(] : : : :  + , , , , , [=/QUQYxx...*x..x*=.x*.(]cXUUY) .xx\ +X|[c/{>#( : : :  + , : , : #nJY\XX@ XQ]x\}+@)#* \ *@)<vuuY/{> ;; : :  + : :: , =/ , : @)#( +\}+Z)#L]x\}zn)#(]xvv+@)<w|Z=/{>#(]X\QL@)<vX[= ; ; ; ; +: : + [ ; x\}LYcccvvcvuun(]xLC+@)#(]x\O0Y)Xc| + + ; ;  +: , ,\ X : #(]q\}+c)0OLZpwZ@)#aabqdhpkoX|Y=/{>#(]x\CXY)qZCxYYYUUYX|[=m0>LQ]x0ppw0zX|[=/OC#qhkbb+@)#(]x\Q+@)< + + +  + , , ( , |[=/{>ZZOQL0Q0)<kd[=/LmwQ]Z\}UXvun|[=0wdqqdbk}+@JLU|[=/wqw(phh#*@)#(]xq}+@)++ + +  + ,, #(]x\, @) |[=dm>#(]mqpoWh<qpwQ/LwpwZ0C}+@unn|[=q{>bahhkwY@)LZO0=QZqbdpx\}v@)LJ|[=ucc#(]a\}+* * ++  + , , , ,,\ )<0pw=/wdbdpxk#oaakpmQ=/{>#(CLUc+@ucX|[phb>#(]xzcYOmmwL[=O{>#(]xczYQOpaqCuvc>#(kx\}...*. *  + , , , :( \}+u)<wddq/{>#(]&*}+@)OqwZ=/{>#(cv\}+@)<kk[=/{c#ccxUmm@dOX|O=/{>#(]x\}+@)#(]x\}a*o#(]nn}+@czc|JLL{*#(].*....*...*. +, , , |[ /{>0(]xak+@*MMoh=o%&#MWW*kw@)<mwqm/{>#88*ak+@JJJCCJUJU#Opdab+0)<CQ0OZOL#(]xv}+@)YLOL=/M>#(]x..*....*. +: : , )##]x#&&oh<dbaWW*>#**h\}+@)#(]x\QQQQLQLLLLLOkkob\p+@)#c]xx...*.. + : :, }+@)<bbbaWW>WBBW\}bbbbX#WWWM#MWWM*ohaoah|[=/{>OO00O000000Q0QZba#a]p*h+@) @q%8WMMMM#M##MW&M**ooooaho8%ZU#@@@BWM#oo##**oo**o*##*oao#W*h*MMMah##kwZZmpdwZZZphahdmCUOOYzUXzccXULLLC +,, , , ,|U&WWMMMWWWMMMM###*#MMW&BWm[>x@M@#hkhh*MWWMMM***###WWWWWWM**#WMhbko##**okkhakqmOOZqdkkmJzzccczcczccccc +, , ,, , [>qqoW&WWWWWWWWWMM#MW&8av}< |{o#kaa*W88WM#**ooooooooaa#WWWWWMkbkbbdk#&&WW#*ohkpm0QQwdwOOUcuvuuvvcccz + , : , #M|{]JaWWWWWWWWWMMMWbn{ , >xh*a*M%$B8M******ooooooao#WWWW#hkkkkkbbka*W8Woaohkbpdhad0Jzn..x.xuvzzz + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + : : , , , ,, : : : = , , , ,  + : : , , : , ,, : W , , , \) >  + : : , , , : , , , }<=# : { , ,,  + : ,, , , : , , , , ; :: : , [ ,  + : , : , x@/(}, , , , /(}< ; , :: , @ ,# + , <, , +, : : , ,, # W , , =# W ,> : { ( , ,  +, : : , , \ }: , X (} ;; x@/ , , ,  + : : , , #, { X ,, { : , ; + ]+X } , ,  + , : , , , , + \ > ( , [>x@ : M| , :+. ; /( X , ,  + , ,, , , , , / < M ] , [ <=#c|{ :: )[>x@/ : |{]+XW x ; ; XW ,,  + , , , ,, , , X ) ,(} {]+X nX>x : xn.{]+ \)[x..* :Mn ; : : =# ,  + , , , ,, , (; =#M| ) : + =.M| + ; (}nx ++ + ,\)v>; < ; :)[>, : , + , , , , , , ++ *[=/{>#( x\}+@)+ [ /{>#(] }+@ X|../{>#(]x\}.@); |[; ; +@ |[=/ ; ),  + , , , , |[= ,# x\}+@)* :/{ #( \};@)< |[=/{>#( x\} @) [=/{>#(]x\}: + *>#(]x +@)#(]x;}+@) |[=/{>#(]x\}+ X|[=/{># :\}+ + +/{>#:]x\}* X| ++  + , ,,X| = , , X =/{xz(]x..+@)#+ x\}+ ..xn[=/{> ]x\..@)#(nv.} * :;  + : , [ ,: : } @) X|[=/z>#(.x\}+@O<c|[=/* #(]x .+.vzzC[=/{.**un\}+@mzJ]vzCCYLJX|[=/{>*....*+cz#(]x\}+@)x(] :  + : : : (]x\0JYUCJCJzvXQJXXJJX+Jm0zu[=.*... x\}z@)<8obpZLL#8]x\}+Q)#.*x\}+; X|[ /{v*( : : + : : : { #(cx\}+@)# x\XQ@)#(]YCJ+@)#(zUCJJYu.X.*./{>#(JQ\}+@)vvvx / #(]xL0+@)zJCXc/{>LJ]U\} <.|[=/{ +x.}+@)OmCcvcc@)#(]O0Uz@)Z(]x...*zuX|[=/{+ .zz\}+ +X|Y=; ;;  + , | ,, X|Y=C{>#QOLJYXXzcv|[=/pdO(nnzzccXXcvn.*.x#(Q0LU+@)#(0Ux.* )<C| ;  + , |[ > , \ +@)#(]x\}+ULLCY[=/xnv(]0d}aobdhkboa{>#v]x\}+.x.X| {>#(]x*.+@Cn +  + , ,[= , :}+O)#(]x\}+@)&h|[=UJ00JUYXc+XYCL|[=/.u#(]bhddkb#(]x\wZddZQLLLCLLCCCJ\}#@)CCQZZOOQJUXc\}+@)Uz|[=uv>#(Zqq}+booMkLJ/{Xz(] }+0)ccczUCQQ00Uv[YOZ0#(Oqdd+kk*o]x\}+@)#JQ0wk+@)<UU[=J0>#(.x\vu@cXY|00z{>X( *. ** +: , , }+ X|[Q/{MM(h*#*ob)<wq[=*okwQLLCJJUUYYXXzXXzzc]x\zc@)0q|dp/{>#CwqL}v@cCU|[CLv...]vc}+uJZdZ[=/{>v....*. +: : , ] @)qX|m=h&&#ahahka#WW8@#=dd>00QLLLCJJJCCJCJUUYYXYXX+0pqkp[=z{>#JJzcc+YQ x\}+Q)bhd[*W#o#ooo*o+#88X|kkm{0QQQLJ}CLLLLLLLCCCCCUJ\0pdhk0|zzz{>zzccc}Lm)#(]x\}+*a>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + : : , , ,, , , : , :  + , : : , , , ,, : , + , , + , : ; , , , , : ,, ( < : + ,  +,, : ; , , , , , , + ; [ : : ,  +, , :: , , , , , , , + @ ; # : , \ ,  + , , , ,, , , , , , > |x] X \ > : ,  + , , , , ,, , : ,} W\):> ; , : ,W\ ,  + , , , , , x, ,, , (}x= ; X : : W : >x:/ <=# ,  +\), ,W [> , , , | +cn\) + (} : : >x , =xx; +\) , ,  + #M , , M , , , | +X , x@XZx<: {]+XW\) :(}<=#M| Wu; : } + ,, , , ++X > ,| +X [, , , , [> :<=# * zZcW ) *+. (z<=# ,{XCUnn. >: (J*= +{] , , ,, +@ (}< | , )[ @;( = , , x@/ } + ]+X. + @*.} =# x..\)[>cu/ } =# {QuX ; x@/ ];  + {] +W\ >+ < {>#( \ ,, |[=/{.* } )#(..x}+@) ] , @)#(]x\}+* [=/{>#.] \}+@).(*x\}+@ #(] >  + #M ]+.W\ X|[=/ > (]x\}+@x. |+ ;(]x\}+@)xnXx\}+@) : M| + :[ @/ }# #(]xncu@)< [=/{ #v]x\}+; X|[=..>xL]c\}+@)#(]x\}+@ :[=/{>#(]x\}  @)QX|[=/{>zzzu\}+@) .* /{>#..x+ + )0(]x\}+@)<cx[=/{>#(]x\}+ : |[=/ > : +@ |[= : + + xJ=/{ ]x }+O0#(]x\}+.x<un /{w#(@x\}+@)w(]x : )#(vx\.+xu#(]pkpZOo%X|[=O{># :\}+@z. |[= >#(]U\};@).) :( + [<JZ[=/cccn]x\}+@dph|[...*.(]** )<..[=/{>#zvc.}+@) X*[=Z{>#(]x\}+@)#(] ++..uX| =/z>#.]x +@*= :  + >x } @)wXJ[=/{>.x]x\}k@k#xvx.. )<.|[w/{vULLY\}+@q#( \}uW ;  + ,, + W}+@)n(]xx*...xXdmO/{>#(]x\km@k# +xCQ}+  + , (Y\}+@hZX|0ZmwOQ(]%\}+vvuvvvnn..nY0x\LLcv#(boa}MM)c*.[=xXccX]x\u.@ cX|[O/{ +({U +  + : M ](]xMh+@bdwO[=/{>#o#x\zcccvuuunn{L0(0C\}+@) .+.v  + ; ;[ >8(]xk*hm)JO]x\}vU)#o]a\XUn.* |[=xczc.]x\0+@)mZwpd}+kbbmO00LQQOQ0ZQLLY)zvvvXX{CLJ]xu}+J)<qbqpaoa*&]x\}+*...*[=.xuz(]a\}+@.*x|[Cx c0L +: : ) =/b>#(]qdkkdqqw|[W/{>b*WW#hqwmdq|[JJ{>#(]x\}+@vvvYULmOOZYvX\bd@)<wdq=/o>#(].*....*...=/{q#mbxCZ+@c#(dx\k+@)<Zqkh/{uunnnxnnxxx.x.=/d>#(]Z\}+@0pz..xOp + : , < |[*ho>#(]ab}+B8B@8[=/{>mZOO0}pd)QQQQQLLLLLCJJJJUJYXYYXY{0hq]a\}+@Cmp|[=vcvvvvvvuvuuvun[=hok#m]x\}pwJ..Xbm + , , ) X|%=/h>B8*oW$+@@&#|ddppppqwxdh+O000Q0=QQLLLLLLLLLLCCLLCOk>ko]UYY+@)QJ|cc/vccvvvvvvvuvX|&=d{qq(]xwb0nnmaU + , , ; )<@|[BBW>#*&*\}$@oMa|dbbdddph*\qwwmmmZZZOO0#0000QQQQQQL[k/o##LCCCCJJJYUYYXXXzzzcccccv)<W|b=/{Z#(]aquYMwv + , ]x\}+@8B$@[=/W%W(#&#}+#BLLQLLCLCCJJJUJUUYYXXXzX+@$#hwcYQXJ + ]x\d+@8BB$BB8W8@M]hoMBB&<kbbd/{%o(bdbddddddddddppppqqqqwm)o*M#=/0>QQQLQLQQQQLLLCCCCCCJC\}$@)<MW#WW*aqLUzXC + >MdaWMao#M#W&&B@Moo*88&B*hhkhk#@8bbbdddbbbdbdddbdddddpppqqo#WMpqwwwmZZOO00QQQQQLQQQQQQLCd@@@%kaWhdppbqQJJU + #oaaW$#o*####M$BM##MMMM&#aaaoo8@@&akkkhbkbkkbbdddddddbddddo#&&bpppqqpqqqwwwmZZZ0Z0Q0L0ma$@@@@BhW8*aqOQLLLL + )[aW@B##MMMMW$@W#MM###8M*#*#W$@@@$&*oaahhhhhhhhhkbdbbbddb*M&#dpddddpddpppqqqqppddwph*%@@@@@@@@8WaMWb0Q0QQ + : #*$@%WM#MMW@@&MMMMMM$W#M8%@@@@@@@B8M##MM#######**oohka#8#&B#*ohbddbbbbbkhoah**oo*&WW8%$@@@@@#Mak*kmZZOO + : )h@@@$%&W&B8&WMMM#&@W#&$&kZQ$@$MMMMM8$&WWMMWWW&%@$B%%%Wo*WW&&M#M###*#MMWMohM&*hbhhk*W&B$@@@BMMdbpwqqww + [ , ( =m@@@@%&&&&&&&&WMB@&W%Mu]+XCzXW##MB$$B$%&&WWWWWW&&8%%%BB$%###W&WMM#MM**ooaM$B%#hbbbha*8$&8$MowcZpqppp + , , \n%@@@B8%BB%%B8W$@Wo0[> (}<pWM$@@@%WMM##########W@@@$@%#MM###***ooooaoa#B%$%#akkkkkhabwk0]+ Wqpppd + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== + , : : , ,, , , , @ , ,  + , , , , , , , , {: > : # , [ , ,  +, , , , , , # , , , ) ;@ , , ,  + , , , , , \ , , { }< ; ; W\) \ < ,, ,  + ,, , , , , } , , , (}<= ]+ ;; ,@ + M , , < , , ,,  + , , ,, , , + \ , : , , ,>x@.( M , , :W\ , ,  + , : , , ,, , , , , , =#n {Q+ W\)[ ; M| ,  + : : , , , , ,, , , , + \)[,x /( X > M; X \ [ , (, + ; ; : , M| ]+ W, , , ,, , <C#M ] W\ + ( = W : @ ( ;#M| , { , +: ; : , \ } , , , , ]+XQCc[: ;< #M ; >x@/ : #M*{ : [ }, W )[ ,  +: :: : , + , , , ] XW\:[>x.*(dC=# : x)[ , }<=xMn{] X \Q[ ;( W , ,, ,  + : : , @ , , )[> @ }<=..+ +Qw\) >v }OY#M| ]m0Oxz.cx }Oc# + +XW < |{ ,  + , , =/ X , (]x }+ ) X; /{x.. *. )<z|[=/{ +]x\}+@)#(]x\}+@)#( x\ @ :  + + x\}+@ ,[=/{>#(]: +@)#(]x\}+@c#(]x + <+ { ( ) X  + { , @)#( +;@)#(]xu}c@)#(]x ++ ; { ( > @  + , x\}+@).uu[=/{ #(]x\}+Y)#(]n\}+@)Yn]x\Z+@hm(]x\}+@)a(]Uc}+@ .vuxxu*.nv*x\}Lcu#(]x\}+@)# ]x: : : : +  + , , , , [=h{>Q(]x @)#.]x\}n@0<nc[c/{># ]x\}+@)#(]x\}+ ; |[=/{>#(; ; : : :  + , , , , X|[=Z{>#...**. * /{xn(]x\}+CXUX|[=/ >.(ax\}+@dqO|h=/{>#(]x\ +@ .*[..c># ; ;X ; ; < + : , , , @)#aOx\}+@L#(]x\ @)#(]xUCL@)#( x\.+@)xu/ + : ,, ,[ , x\}p@vcvvuvuuuuux..}+Cc<.|[= {>#(cxY00LzzX|uz/{hp(]x\}+@)$k|W=/zx (]cYnY@)#(]x\}zX)#(nx\0+Jv#(]xUL0O)b(]Z\}8@)oW|[=/{.#(vucJ+@)<* + + +WpUx+ +}<=#M; , , /{>#d]xOLQ00CC|[=/{>#(]am}+@)<QLQOQCQLc]x\}Lp)obohk}k*)#(]xUX+@)< * + + (#Cuz +QpQJJ}> @, : [=/{>dkqQ0O+@)<*#*hhqq#(]UCLzzXYzXz=/{>nXUx\QL@c<c|[=/{kb(do*hW@)uX|**.. #(]nvc+@) * * *{qMvJO +Lbpko@q1u{] ,@) XQ[=Wd>#(]xaa#M#kX|[=/a>#(]x\}+@)#(],\ @)mX&[=wwq#M#*b}+@)#(]x\}+@p<h|[=/O>da]x\unnxnnxxxx.xxx]*\}...x*...*..O0YwOc +0okWWbdkJrJ>#( x\}pdb#(vuvuuuuuuuuuuuv#(]x\nunnnx.*.noYCXZx +0*M8hhak*8=/{>#(]x\bbbbbbddkdddddpqqwwZ)q*|ZOOO0QQLLLLLLCLLLLLCCCLC]a\}&@)UU|[=ZJzzccc\vvcvvvuuuu{>@(]unuuuuuuun#hddU. +O8B*o#*o8h|[=/{@%Moaa}+@)#vvvvvuuuuxw8d&#Q +Z@&###*8&*a*|%B/B@%W&&%W##)<hkbkhkbddddp}8@pppppqqwwqwwwmmwmwmmmZZZ{##WMx000LQLLLCLLCLCLCCCJJCUJJ|[@/{>XXzzccczvL8kp*a +qB%%##MBM##M<W@%=/$W#(&@$%BM)hhhhkhkhbb]x@}+ddddpddpdpdddddppppdppq=W{8*(mmmZZO0O0QQQLQLQLLLCLCLL?d@$$$$BWh*MW&8$@@8&&&&&&&$$MM@$oq\)@W**##W8%&%8&W&&&&&8BB%&WMMW8WM*#8%8&WMW8WMMokMBM*hdkba*M8BB@@@%bmXM\Umwqppq + :|c%&8%8W&8888%%%@B8%&888&&$%&b@/( <&&#MM%@$$%&MMM#MM######8BBB$@8*####M#####*aaahW$%B8abkkkah#BW*M$XW tpqppdp + [ {#8$@$B%%%%B$B%BBB%%%88&%@bM , Xvb*W%@@$$&WWWWWWWM##M#M#B@$B%M######*#########W$8%BW**ahkkbhkqk#/ } =bdpdpdd + >>> I JUST HIT THE JACKPOT <<< +  JACKPOT MODE: HAKARI DANCE + ============================================================================== +, : , ,, , , , , : , , + W : , , , , , ,  + , : , , ,, , , : , , / } :\ , = , + ) ,  + : : , | ) , ,, , , , }<=# ]; ( < ;M ]: X , x  + : : , = , , , ,, W\ [>, / + :@ , > ,  + : : , , , ,M| /(} + ; [ x : , : < , , ( ,  + : :: ,{ , , +X + x, < : , : |, +X , , , ,, , + , , [ , , > @/(}< #*| ), +; ,x@ (, , , , , # , +, , >x, , M|{]xX \)[ : M ++X , , , , ,  +, } , , ,, , [cx (} # ;W\ x | +X:\ ; : , , >x ,  + ] , , , , W }<=LM| ;. )[ / } # | XW ; @0( :M|{] : , = |  + , , x , , , : <} M|{]+*+0m[> @ }<=#M| ] : )[>x@/(: = MO{ W }< , ,  + , ,, , , , , > ; XW\)[>. + }ZZcM {*+ W.mwux@, }vvOX.X]+ )L> ; }< W\ : ,,  + , , , , , , \ @): x\. *. [=/J>#(] \}+@)#(]x\}+ #(*x +@) ( \}+@)#(]x\}+@)< + {; x: @ /; =#, + : , , , , [=/{>#(]x\ ;; ;[=/{>#(]x\ + ;X|[=/{>#(]x\}+@)<c|u=/{: ]xC}+@)+ + ; x\}+ ] Wn) +: : , , , )#( }+@).X|[=/{>#(]x\}+@*#(]x\ +@).X| = {>#( , }C +: : , , ,}+@)#( +\}z.)#(]x\}vv)#( : }+@)#(Xx\vu@)#0]0\}+@)@X|[=/{> : x\}+ ) : : : : ;;@  + , , , ,,#(]x\cc@)< [=/{>#(]x\}*@)#(]x\}+@)<*|[ ; #(]x\}+@: : : : #c|  + , , , : > (Xx\}+ + * ]x.v+@)#(]x }+@)#( * * ** .#(Xxncuxx#(]x0}+@)<+ =/{> (]x\ ; ; ; /(} # + , , , , X| =J{.*....*....*.../{Qc(Lcz.uuZ#d]w\}+x < [=/{>#(] ;; ; ; #|{ Wb +,, , ]x\}+ ).u]x&}0@)#*]x*}+@)Yn.[=/{>#(+ ; ;; /{Lc +u + \ { }+@)YXnn=/{>#(]x\}+@.<0LUL/{>#(]C\}+@)<UQC0/{>v(]d0O+@)#(]x\ +@u.cY[=/ + + + [=qv *+  +)]~@~( = xw}+m)JYYCCJJC#(]YU}+@)#.. \}+@)zcv[=/ + + X|Ov.J>  +=QpOqw1X = (]x\Qm0)#* \}+..xuv[= + + )<d 0z Mv +UYCm8MBk( ,[ >#(Wm\}J@)baoak/{>#(]x\}+@)Z(x.\}xxuuuvvvvvcvccvvvvuvzcvvvcczzzXXXXXzzzzzzzzX@qmX#[=cvv#(JU\uunnnuxnnunnx..x\}+@..x....*>W(p0z cbp +a%hhhkb&hkbdx\}%@ahkbb=/{qwwmZZZZO0QLQ[o/CJUYYUUJJJCJCCJJJJCCJJJJ}bb)MX|Xzzcc#cvcvvvvuvvvvvvuuvc]x\}uununnnu/{MmMhUwd0 +%WoaoaMMhhh#*%xW$8***8M**k{ddpqqqwmZZZXW[=QLQLQLLLLLLLLLLLLLLLLLQxa}o*)CJUUYYYXXXzccc+ccvccccvvv#(]x\vvvvvvv[=#wOkdqCn +&&%ooo8oaao{#B%]xBM+@o&&M8*/dbbddppppp)$X|mOOZOOOOOO}QQ0QQ|QQ/{L#(Mx&}+QQLLLLLLJCJJJJJUYYYYXXXz/{>@(]x\ccvccX|$bqc0wOc +M@#o*M8###$W8#BWhM%kaho&W#&Mhdkbbdbddp#@$kppppppqqmwwmwwmmmZmmZZOwokBdQO00QLQLQQLLQLLLLLLCCJCUYUh@@@@kcXXzXXvoqd*qvCYc +@W*&8MWMMW@%&MBB*8@Wooo#***o&okhhbbbk*8@@@Whddddppppddpqqpppwqqpmko##qmmmmZZZOOOO00QLLLLLLLLQ0k8@@@@@@aJUUYYJ%JaoqUUUU +MMWBB&@M#8@&#B%88%&@&###o#***%#haah*8*#@@@@8MohhoaaaaaahhhkbdddbhWh&Mkbdpwmmmwmmmwmwqqppdwma*&%8W&&$@@BqOJCJmWCwbCLLCC +>uJwB&B@%8@$$$B8&MWBB%MM#MMM#MB#aa#@w[>#@%hhaaoM&oM#oooo**M&WM#*Wadho#Wohahkkbbhhhaakpohdpdkbqa#W&W&@@Bq0OZQpqJQCLLLCL + M|{nWB%$BBB%8&&&&W&8%@WMMMMMMM$W&*)<=#M@aooo#8WWWM**oooooaaoo##*MW88abbo#**ooo*#aahkdW&#oqppwdhho8&B@@8c[(xhmQ0000O0Q +, x@MWM&8$88888888&&$%WWWWMWMM$f]+X :)B##*W$8%&*****aoooaaaao&88&8WhhhkkkbbbbbdddddpWWW&#ddbppbpa&bdY0 YdQmmmmmmZ + , {aW&8B@$$B%%%%B%%888%%&WWMa) :<Z%#W$B&BWMM######*######&&8Moooaaaaahhhhhhkkhh8W#W&okbbddbpqq{>CX, )[hQqqqwppp + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== + , ,, X , , , , M : , }< , , ,,  + , M , , \:[ | ,; , W , , , ,  + , { ,, , < ) x@ < : , , , , , ,  + , \, , =,M ]+ \ =: + W , , , , )  + , X , , } + ; : {] : { > , ,, , ,  +,, , , , x / , , =:M ;X ,> : , : ( = , , , ,  +: , ,, , , , , , / +? ;.[> @.( { = :+XW: , , ,  + : : , , , ,> @ ( ,| /*}<c# |{] ; @/(; # , , {  + ; : , , , ,= {]+ W;)[ x , M +X <;# | + ; , , ,  + ; : , , , X )[>xn/(: |{] \ [ x@ ( M: Wz) :: (}< , , ,  + : , , , , @ ]+XW\)[> /(}<+ QY]+ W ,[>x@/( < |{]+XW\) x /J}< ;M > /( =, ,  + :: , , , , M W\)[>x. : |{ + [qJu/ } #cYpO+XW [xu0c.u<= ,{Y+ : [>x |+ ;: ( , + : , ,, , , @ [=/ +]x\}+@)*(]x\JJ@)#(]x\} *) x }+@) X [=/{>#(]x\}+@ #(nuc}+@)+ \} # \ >x  +: : : , , (]x\}+@); ]Y\}+@)#(]x\}+@)u(nx\}+  + : X < : { + , : , , {>Y(]x.u+@)#(]J\}+@) [=/{.#(]x\}+@)#(]x\}+@) + , , ]x\, , [=q{>#.ux\ *.xuuxnu..#(Yc**+@)#(]L\}+@)#(]x\}+@): [=/{ #(, ,, :< # + , , / \} , #( *. . * |[.* >#(UxY}+@)nXxz=/{>#(]x\}+@)<m|[=/{@#(]x\}: X|[ /{: , | :+zW\ + \} ) X|Y=/ ]x\}+@) X|[./{>#(]Q\}X@.uX|[=/{>#(]x\}+@)#(] ; +@)#(cXuY+@)< +[=/{>#@WM#dp0)@@|[=m{> (]x\ * .<u|[ : : X|=,M|{ , + | = +@)* ..**...*....*@0#(]x\}+@) x\}+ ):  + , ( x\}* ...*....*...x\Oz@U0Xz[u/Zzxznx\}x . X|*=/{>CZ0Q\}+@d<p|[=. >.(]x\}+J)#( *....*....*...#(]x\Q+@cnX|[=/{>UQQzv}+.u#(]x\B+@M<cu[=/{Y.n]x\}u@) [; ;(]x\} X :  +hm0n{M| , ) =){.#(]x\}+@)kOCU\}+Y)<O|zzv{vYCLQ\}+X)<qZ0=/{>#(*x\a+@)#(]x :  +OZpaoJ1>x ,+ X|[=YULzUCJCQ+@)mZm0U/{L#zUJLZOL0LUUJu/{>#(Zx\}+@L#(. ;  +CCCL0Wbju|( x #(]dk*hkQOLQw=/XYY(]x\}+@)# }+@WQLnx\wwm)#(+ + #(]YXXXXJmXccvvvccccccccccvvv[=/{>v(]m\q+@)# * ...*...**./{># + @): +dphWddpqd#m=/{>#L]x\QQQL<b|[=LQCJJUUY}CZ)cvcvvccccczccccccccccccc>bO]o\}u@)<0|[...*....*....*..[=/{> *+ }Z@)<v+ ...;  +dk&bbkkdWbXq[=/{>#q]x\}+@)O00QQQQCJUUxLm+cvuvvcczzXXXXXzcczXzzccc/d>#*]cvuu@)Yu...x...x....*...X|8=/.*. x\}X@)+]uuW  +b8okkkb#*bkkXM&=B%*oaoodp+mwwmZOLLLCU(Lx\}+.nczXXYYUUJJUYUUUYYXYX[h/*>#ccccccvvvvuvuunnnnnnnnxx)<$|[x....(]aC0+>.vv; . +W#&Wkha&khkk)M@|[=B{ka&W#Ma+pqwwO0QLC>#(]x\}+cXJJJCCCLLLCCQLCJJCWW*&#bddpwmZOQ/{@#(]vXUJLQLLQQLQQQQQQLQQQ@dhXM[LLCJJUYYXXXXzzzzzcccccccc\}@@)o(].cc.  +M$oo&M#ooo&$&#*$MhB&hhhaW#a##kbbddqqwqW@%wJCLQ000QOZZOO0OZO0OOOO0ab&aL0QQQQLLLLLCCCJJUUYYYXcccYp@@@@@ZWxxn.bQCZc *  +&ohaB#%Wo#@$#M%8W&%B8ooahhhka&bkkbkbo#8@@@8hpqqwwqdbbbdppqwmwwmmd#o&wO0000QQQQQQLLLLQQQ0LJCOmaB@@B$@@@wzuu.*uQZJ*. + +Xqo*BW%@&WB@&BB88&#%B&##*a*ak#&dkbh%o#%@@8**ohh#*hahhhhaa**ahkh*Wba#*#adqmmZZOOOZmwqqddqdmb*oM*#**#$@@qCXvuozvO*x...*  + W\)bZ8$BBBB%8&WMW&8B%MMM###a8WkkBL{C+$dbdbda*#o#*aoaoao*#MMM**aho*oaaa##*ooho#*o*kqkMbqmZqOmho#&o8@@8JXzXm.unn....x  + =#M8MW8&W&&WW&&&&@8MWW###*$Wor[>x@a(kkk#%W&ahkkhkhkkkbkkkMMM&8Baddkhhkhhhhhkkbkd*&#WoqmmZmpqh8##B@wzXCqzzvuunxxx. + \ }W&B$B%&&&&&W&%8WWWWWM#M*~<= :|L]n#WBW8&oaoooaoooooaaaa&&&Mokkbbbbbbbbbbbbbbd*&*#&kdppqwwZqm0\d[>x@n(}YXzcvuu. + } ~-*W&@@B8%8%88&8&8&&&MB{(+X ; >t@%$8&%&#####M#***##**ooo#oaaaaaaahhhkkhkkkkh8&M#8W*ddppqqOZ(-U=: |u]+CXXYXzX. + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +M*dCu + + : : : : : : :: : \: : : : : : : : :: :  +%#Z. + ;}<= , : , : : [ : : :x <=# : : : : : : : : : : +WMoqU.+ {] : : : : : : # : : : :M [ , :M| X :>x (}< : : : : +oohpCXW\ : : ; ;; : ; ; : } M| : : : :  +dq0Y@/ ]+ : ; ; : ;; ; ; ] x : , < : : :  +ZJuM| :=# |{ : : ; : :\)[> : W ,=#M|: W\)[ : }< : :  +vW +; | : : : , ( : ( +: : : : :W } :: :  + : { W\ : # : , x, : <: ::+ : ; ; : : X : :  + ; , ; : \ : , , : /(} :: : : : : ]+ } :  + ; : {] : @/( , , : : : /( ,, : W\ X >x ; + ; , : : : , :\ , @ : = : x@/ : +: : #M : : : : : <=# +X : : <=#M + \ ,  +: :: : ; : : : : { ;\ : / ,: W [> ,  + ; ; ;; : : : , x ,( : | ]+X \)[ / }< +M|{ ,X x ]  + (}<=#M, ; :@/ # : : ]+ ; >x n= W\ x, ( , , , # , + /  + [ ; = > :: = =#+ +X \ /(}<=# | : ,, : : : M|  + # ; : = M + *... + (}<=#M|*]+ ,) : : : :: , )  + # ; :}< : ] , : X > +.n..* n * [> @ : : , : : :: (} : + \ : ; : : : # + .xnx ..* }< M : : = : :[>x : , :: :  +:} M|{] : ;; ; : W : @ ; \ + +u ; ] X: : , : : : : , : :  + : : ; ; :: : : { , :(}<+ | + .. + >x@; = ,: : , : : : : :  + : : ; ; : ; ;; : : X; ) * +..# | : : :: : : : : : :  + : : : : : ; ; :M : .. +.. *...)[ :( : : ; : :: : : : :  + ; : : : : : : : : ::]u *zn .* . *x#M|, : ; : : : : ( M|{ :  + ; :: : : :M ): : : , : @/*.n=*MxuvJUQOOz>x@ : : : : : : x ;; ; + ; ; : :: : : : : whaM#Who%o*#ok**L|{] ; : : : : x M ; ; +;( ; : : : ,, : ; : >cJ@&#MW#M##MWW*o*#bc@ ;; ; : >x / }<= | ) : ;  + X ; ; ; : : x : : }<=#Md%MMWMWMMM#M8&M####d{] ; :: = , @/(} : :  + @ ; ; ; : : : { :: :| +*/mb8&8&&&&&&W#WBMM#**oobu@ ; : X (} : : :  + ; ; ; : : : x@/(} = : : >xU~m&WM8&%%&*q0Qdo%%W#o**oabu{: ; / ; :: : :  + ; ;; : ; : ; : : : ;<={###W#W8WhOux@/ }<=#nw#M*##*aaXx : , : : ::  + <= ; : :: : ; ; : : ;~XwWMWMMowc}<=; : :[>Z#ooooahx : [ =: : , :  + \ ; : , ; ;; ; ; >xma#awLmv|{ : : : M|md*ahhz[ : : # : x@ : : ; +@ ( : ; x ; ; ; ;; ,(}[?0dpdQ?XW\): : : |{ W |OMaoabY#: :: }<=# { , : :  +|{] : ; | ; ; ; M ,]{UZQOn>x #M , , , #Mq$W8Wu\ >x, { : :  +c>x@/ : ] ; ; : \ >x..*.<= : ] : #M|{] : \ >Jdbkn< : , :  +dmCcx]+XW\) >x@/(}<=# ; : : ( M ]u ; x@/ <=#M ::+XW\)[>x@/(}<v\vUux.XW\)[>x@ }<=#M|{]+XW\) @: ;;  +WM*oohbwmZQCJJUYYXXXzunnx@/(}<=#M|{]+XW\)[> @/n}<=#M|{]+XW\)xnuvYLOZZZmqqppbbbdbbpL(tCzXYXzvvvnWnvcvvvu(+. + x+ + .x +$%%8&WW###**ooahhkkkkkkbbdpqwqwwmO0OmwwZZOQOZmmmmmmmmmmmZZwwqpdbkhhhaaooo*##M##*oaaahdqqqqwmmmmZZOO00QZ]+< _< /} > +@@@$BBB88%88&WMMM##M####**oaaaaaaahhbkhkhhhkhhaaaaaaaaaaaooo*###MMWWW&&&&8%%%88888&WMM**oahkkkkbdddddddmJJO0Jz?)CqhQ0J + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +#bC...* ;| : : ; ; ; ; : :: +: : , : : : +8kz ++ XW\ [ @ : ; ; ; ; : : > (} :: ] , : :: :  +M#bQ.+x@/( : ; ; : ; ; : = W :@ , [ , <= |{ + < : :  +ohdC=#M \ : <= M|{ : ; : +X : { :: : : : / : :  +mJ+X; [ } : + :: # : [ x ] : x : : :: : , : :  +>x : :M {]: : @ # : W ),>x > : :|{]: , x : : : , +X :  + ; : : ; +XW , / /( <= : : : ] : :/ |  + ; ::} M ; ,>x : |{ : :: : #M X : :| : [: + : : ) :: : : W M {]+XW\) ; : : > @ ,+ \) , , +; : /(} ; ; :: : : ; ; : :  +; ; ; ; : : : }<: ; ; x : , { ,( (  + +X ) , : =#M| ]+: : } : ) + .*....| :\ <=# : [ @ , , |{  + > , ( , : X (} =;M| ]; W\;[> / } # , : : : : , ,,| ):  + W : < ) : (} X \ [>: / }<. M| ;\ , : : : : };;  + @/ ; :: , : , @/ < , ]+.Y..[ : < M ]: : : : : /: < #: ;  + } , ; : , ,: : , |:] XW;)[nx. x= , W )[> , | X : : = M| : : ; : + :X , : ; : , : :, : x /(.. XLXn. XW\)[> * : : : : : : : :  +; , |: ; : : : : , | ] .*YJnv* vnxvx x]+ , = : :: : : : :  +: : : ; : : : : x +*<cnv..n.* ..[> , M: : \)[> : : : :: ; :  + : :: : : @ ( : : W = M| + XW\). *+ }<; : : : : : : : : ; ::  + : : : :: , : : : [+ } ; + W :: : : : : : : : ; ;  + : : : , : : : :[ } # ] *.xx <=: : :: : , : [ # ;  + ; : : : : :: : \). +. ..*.#M : : : :: : , ; ; + ; ; ; : : : , =#u. * )[ x : : : ; M| )[>x@/( : : +;; ; ; ; : , : x@ \) *...}nx[~|{ : x: : ; +XW } : :: : :  +# ; ;; ; ; : )[ :> @/J)LZwkmboaa*hqc>x : # { : : +: : : ::  + [ : ; ; ;; : : M , : |{m0@%M8#M&o*##*owz|{; \ ; : | : : : :  +}< : ; : : : :; ; : , : )[n-0&oo*M#W8&&88W&MaQx =#:; : [ / , : : : :  + ; : : ; ; ; ; ;: : : } =dbW#M###*##*o&&W#MW#hu{: X : : ) : : :  + ; : : ; ; ; ; ; : :: ]C*vhha*aMMMM&&W&@B&&Woo*MO{@ : : @/(:: : : :  + :: : ; ; ; ; ; ] W :[]mkppqqbka#ahp0Yn//zQ0hMWW*M#c{ ; : : } : \ , :: : ; + > ; , XW ; ; ; : > (}<CwZZmwbkpmX[>x@/ {]OpMM*&b[ : : , x /( = : :: + : } :: ; ; : } M|{]LwZZmmmqn}(} =, +XW x@/|mWoWw|{ + ), : : :  + ) : : + : ; :: : \ccvqZOwYn=#M : : }<= {.+*Ma#Ynx : # , :  + } ; ;X x ; ; : : ,(}_p#kopv+ ( ; ; : @xM%BMzM , :: / , :  + ; ; ( # ; ; : }<= | ]x.Zhbz>:: ; ; : ;]1ZwL[ :/(} ; {]+X ( <= :  +x@/(}<=#M|{]+X \); ; \ >x (z< ; +XW\)[>x@/; #M.{]+XW\)[>x@ ];<=#M|{v+XW\nvcux/(}<=#M|{]+XW )[+ /( +apqpbbbqZQJXzcnuvuzccvn+XW\)[>x@/(}+>uM|{..XvXzvnxnvzzXXvxnuu. cLOZZZZZmqqqpbdpqbZCqZwmO0OmmwmmwmmZOOOCzZLLmY{Ox1.c0w +8%8WMWMM#**ooahhhhhhhkbpqwwmmZOQQ0LOwZOOOZqpppddddppm0zJZmmZ0X cOwbhhaao**#MMMWWWMWWMMMMMM#*ooaaaaahkk*c ?><[- \| ~+ +@@$B$$BB888&WWMMWWWMMMM#***oahhahkhhhhhhaaooo******oakqpkaahaaoaoo#WWW&&&8%%%%%%%B$$$B%%%%8888&&WWWWMMWhmZkbmL1fpW$pdZ + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +WaZu.+ >x,/ ; | : : = , : : W : : :( , : : :  +Mwu ; =# ] :W : : X +:: : } # : , : M| , , ,, : )[>:  +*kmv+ W > : ( M : : / ; : :: : : \ + M  +mJx> ( =# ; +XW : : #M: : x  +}<; : ; ; ; :: W : : ;  + ; : ; ; ; : }< : ; ; , = M , + : + ; : |{ ; ; x@/ } : : W ;; ; ; :} +: [>x /, <= , : M x : +:; :\ x : XW\) : } + ; ; ;; : \ [>x: : : : : : M <= :  +; :} : [> @ = : X @ ; ; ; : :: : : : } : : / , # : : ::  + |, \) ; ;: XW: : | : : x@ : : : :: : , : M| : : : :  + ) } ; ; : :: ; { [: /(; =# { : ; : } : : : : : :  + < ] : ; : : : : x : ; ; , + :: : : ; : :  + : , : : : : : # W )[>x@/ : ; : : [>x : : :: ; : :  + ;: : : : : : : W }n=+ .{],X )[>x # ]+ , : : : : : ; :: : : + ; : :: : ,{ + , x X* .: /(}<Yzxc{] [> }, : : : : : ; ; ; :: +; : , , , \)[>x ( xM {Lx ..uJnx@ =#M|{] X : : : : \ , ; ; ;  +; : : :: : : :]u *x[>LYx. *u. { Wu) x : :: : : ( : ; ; ;  + : : : |{ : : :: : @ * .vnv0Xun+Wu >x@/*}< , : : : ::{ : : : ; ;  + : : ; , , : > , : |x* . *..c.@/(} + . ] : x@ : : )[ @: :: : ; ;  + :: ; ; : : \ , @ : >. .x* ;;{ ; u> : =# : : : : :: ;  + : ; ;; ; : < : M *Xxn.* x@+ ..=: : X : : ] : : : : ; + : ]+: ; ; :: : [ } , : > Cc.xn * cXW : / : : # : ; : : : + : : : : : :: , : ; #X.Xux...*...YY : ] ): :: , ): : , : :  + M: : : ; ; ; : } = : ; Uv JY...*. nz] : x : , : , : :  + : : : ; ; ; ; )[ ;; <L#.x..*....nzx@/ = M : : < ,: , : ;  + :: : W\) : ; ; ; : : X#*oaoaZabhakZbm{ ( : : W\ , : M , :: :  + : : / =: ; ; ; #, X : /a*Woo#b*bkbkpwOxx@/, < ] : : : , \ x , :  + : :=# \ :; : : W : : M|ZpobpddkkhkoohhdqQ|{] \ @ : , , :  + : : W : : :: <= : : \YnOppqpqwwqqpd*adqqqqOu@/ , : # : : + : : ( {] : : : : :: : (0LQQ0mmqbddqm0Q*bpdpqmZwZX]+XW < | :: { , : +( : + , : : , , : |{JCJCQOwZLc/(}<=#M|{]uQmqqZOOY/(}<= W\ : ( [ :  + X :; @ : M W\)zCYJLCUu=#M| :: : > @/(}nCZ0mZJxXW : : ,X < :,  + : :{ : , /(xccYLu{]+X : : ,: XWqmZOZZO(}: : : , , # : :  + : : : :: |ccXcu\)[ x@ : : , (}<Zakkod+ : : , : ; : #  + x@ : M|{] : : / )zXLO0(},= M : : : : XWOwha#@ :: : : ; ; : :)  +< : : : : | <=#zx{] x : ; :W [ (}<=#1({ : [>x@/(}<=#M|{]+XW\)x>x@/(}<=#M +XW\)[>x@/ <=# *]+XW\)[>x@/(}<=#M| + \ >x@/(}<=#M|{]+XW\)n>x@/(}<=#M|{] , x; (}<zC0mwwwwwwwwqppdbqdpwwwQOqwwZZ +XnuzvnMnvczUCCLLLLJJUYXcuxx{].*...*>x@/(}.xxxxxuxuXYUJJCQQOmmwmZmmZZOOQLJXu@/(}<=#M|nXQwddbhao**#MMM##WpC*pp#Z)ac)rYwk +*ohhkbdppddddppppppqqmZQQQLCJUJUYXXzu.uzUQQ00OZZmmwwqpdkkkkhaahhhhkkkkkbbdpdwmmmmqdkha***#MMM*aMW&8888@J<[++{? : _x]+_ +&WMMM##*********oooaahbddpqwwwmmmmZOZOZmwpddbbbkhhaao**####MMM###MMM#####*oo*ooooo*#MW&8%%%%%W#8BB$$$$$%#*B%*brUM@@MWa + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +0dU.+ ; ; ; : : : : : , , :  +J0W+ @/( ; ]+ : : <= :; ; ; :[ # ,+ / , ,: : XW  +uY*+ +: [ (: ; ; \) ; ; ;; : XW : ,=# : : : , ) x@  + .+ @/ +X ; : \: : : : [ : : : , : : : : @/: : : + + \)[ (: : }: : : : : , :: : ( M : : : : : : : + ; ] W :[> : # { : ;; @/ ]: : x # : : (} , : : : : : :  +; [ : ; : : ; M| [>; : + [ : : | , = :: : : : :  + : ; : : : ) }< ; ;: x , = : : @ : = X : : :: : :  + ;: [ : ; : , : (} ,] : ; # :, W: ; , : \, : : : : : :: :  + ; : :; : , : , : : , : } ;; : : : : : : : ; : :  + ; : : : :: : > : , : , X )[>x@ :: : : : : ; ; :  + ; : : , \)[: :< {]+: > : ,{ : : :: : X : ; ; : : + ; : : , # : )[ ; : M {;+XW @/( =, :X )[ : : : [ : : ; : : +; ; : : , ; : [>x Mx{]+ W : }< # : : : < : :: : ; :  +: ;; ; ) # : : >x@ M|{]+X \)*. X/ ]+XW ):>x /: : ] /: : : ;; ;  + ; ; ;: , , ,= [>n@ c}u. .{ ) >;@/ }: : ; : ; ;  + : ; ; : ,(}< , < #*.xnXOCvu* x@/(} .M ] : : M , > ; : : ;  + |{ : : ; : ; :,/ : W ) .uzLCzu x + XW\ [ : ( : :, (} M ; : : ;  + : : : : ; ; ] X ):: ;} =.* uxn. +x : {] : : = ) : , : ;  + :=# : : : : ; ; : ( = : \xx. + ..+ | : : \) < : : ; ; + : ;: : : XW\ ; ; : + : / }<cunx. *+ [ #M: : : : M| : <= :: ;  +: ; ; :) @ : : ; / : ] XYv*... * .<=# +X : : : : , ( <= :  + ; ; : +:: : ; , : :@/(cn.. * + W ) : : :: + ,@ : :  + ; ; : : : :: ; : :M< ]* + x@ ( : + : , : [ :  + ; ; : , : : ; :: :\Orf0LYYLJQ0Xn+ : , |{ : : ::#M :  + \: ; , : : ,M|{]+XW : +.n&#bopbdppbO0cx@/: , : : , , | ,  + ;: : ( : : : + >ppwpppdqdbqppmmQx]+ : : : : ,) , , : :: : + X ; , : : } , *+YqbppqqqwZwhapmOmZQJn/;: : : : : , , , : :  +: ; : ) ; :: : X =#ZwwppkkkhdqhWdwZZ0CJUc]+X , :: : : : , , : : ,  + ]+: : x@/(} ; :W\ [, | XqwmZqpqCXzcuuvJQqdwmZ0CXzcvn}<= : X ,: : , : : : :  + ; ; : @ x@nmmqq0c|{:+X :[>x@/(c0OOZ0CJJCz\) : :: : ; : :  + : : ; ; | , nqOZXW\) >: : : XW\uXJUUUYJv=#M \ : ; : ;: : :  + : :: ; : : >x@/ W~_wQwz/ + W\:: : <=#Mc00LLU\)[ : : ]+X : <= { ::  + ; ; : : : : [1QdmJ~ W\ < ; :: [>Ykkkh<= : : > ,  + + ; x , , , :: : ]+hwc); : < + ; : ;_|1Y}: : \ [> : : :]+ \ [>.* < = :: \ , {]+XW\)[>x@/ +#M| ; )[ ;}<=#M|{]+XW\)[>x /(-<<~> :; ; ; ;|{]+XW\)[>vYUULOZmm0UL+_W\)[>x@/(}<=#M| XW )[>x@/ }<uvczc +ZhOUzucYvuvccXYYYYYXXzzczzzzXYYYUJUC00JUXxxxnvvcvvvczzzzzzzYL0mqqqppdkkkhhhhkhkbpqwZZQCUUUYUUYzcccvvu/x} XvzCL?zv?[xXm +d@$B8&WMM#**ooakbbddppqqwqqwwqqpdpqqwmwqpdpqqqqpddbbbbbkkhhhhaaao*##MMMMMWWWWW##******aaaaahkbbbbddddpdmX] +>}x (/~ ~ +d@$@$$BB8&WMMMMM*oaahkkkkkkkbkkhhbpwdbkhaaahhhao******#####MMW&&8888%%%%BBB%8&WWWW&&&&&WWWWMM###***#***odpa#ddrjb#B*ak + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +ZJx@ : ; : ;; } : ; ; :/ : : :: : :[ @: , :  +v#M| )[: : M| X ; / X ; ; : ] : : :{] W : :, | :\ [ : :  + \) (}<; ; : x: ; { : :: ; : < : { : , : : : :: : : : + : { ; ; : : : [> | ; [ x@/ ,, , : ) x , : : : : : :: :  +; W\ ; +; : ) : <= ) ; : :: ,X : : : : : = :  + : : ; : } # (}: ; }: : X ,, |: : : : : @  + ; : : : M| : ; + : , { +X :: : : : ; } :  + ; : : : : , ) :: ; , , x: : : : : : : :: : ; ; ;  + : : : (}<= : @/( : : :: : , : \)[ : : : : : : :: ; ;  + ; :: : M ; \ >x: ,# | :,[>x, ( : : : :#M| : : ; ;; : + ; : : :> :| XW\ ; } {] X < \ : : : W : : ; ; : +; ; : : ] ,, : ; : XW\)[ .@/ , :: : > , | : : : : :  +; ; ; : : : :W\ , @ *.=# , +XW , , W : := : : : ; ;  + ; ; ; : : / : {]+XW :[ xvu(}< + \ =: : W #: ; : ; ;  + : : ; : : : | , }: #M**..vW @/(}*=# { , : , X ) ; :: ; ;  + : : : : : ; :M { >XWZJu. ( =#M| .* ):> : x@ ( < ; : ; ;;  + : : : :: : ; :=#M ] : [ x xnXZQzX* <X.* .@ }:: { : X ; : : ;  + : : : : x ; ;; ; [ x : # | .uX00Yc c.+ M|{] : :: : XW\ : : : ; + : : : < { ; ; ::# |; :) >.* vncu .* \ : : : :: , : : ,( : :  +; : : : : ; \ : :: = Mxn..* ux+ } M: : : @/(, :{] : x :< + : ,  +; ; ; [ : : : ; : : W )[ccvvu. * {] : , : ,[ , / #  + ; ;; M|{ : : : ; : } =vX*.u. *...>x : =#M : @ , | W ::  + : ; ; ; : : ; : : X \Yv...* <=; + : , : : : , , )[ :  + ; ; ; :: / < # |{ X: :@/(}n. * + , , =# : :: : : : : : :  + , ; ; , > ; : #MhpdwwCwZOm00/( : : : : : :, , , : : :  + , ; ; : ; : , / W\w*Moo*h*kkadqJ] : : : : : : , :, : :  + / : : ; ( : ] > (zhhppdbhdhohbkp0c/( ] )[:x@ : : : : ;: : >  + ;; ; ; }cakdpwqdpmmhMhdwppOX+XW : : : : : : ::  + [ ; ; ;; , , [XLqqkbkbhohbd&oddpwZO0J(}<= ,|{]+X x@ , : , : : : :  + : ; : : : |{ X : <mappppddp0)[?_@/(YUCZww0LcXW\)[ : :: : : : ], , :  + ; ; : : : : +zdqpdddwv( |{]+ W\)[cUUcUQJ={<: : : :: #M| :  + ; ; : : : ; ) x[dpdpqqX|{ ) ; #M|{]nCQLz[> : : : W ,, >  + ;; ; : : : , : #MUdwqwu\) :@/(:: ] : ; /v00OY} ; : : , \ { + ) > ; ;; : : : +X \cdoaom( ; ; [ : +wdda[> : : ]  +, # : ; : :: : : (Y0*W&0{ ; ; ; M : ;;>_XQC#M : \)[ {  ++XW : ; : : W :: ; ]*UCaz[ ; ; ; [>x , =#M|{] , : |{]+XW\ +@/(}<=#M|{]+XW\)[>x@/(} M|{ \)[?unx };=#M|{]+XW\)[ x@/(}<=#M|{]+ncCO0OOCc(}<=#M {]+XW\)[>x@/( M|{]+XW\)[ux.*(  +%Moaaaa**oahkqmmZ0JYzn+XW\xx>xxucXQwddwZJvU000ZwqddqwZ0LQOOmqppwmZ0Owdddbdbdpppm0CYXu>xxxnvcvunnn]+XW\n[+c.xJ}~Y] <  +@@@@@@@@$BB%%%8&&W#*ahkwQZbbkkhhaaooo#M#MMMMMMMMMMMWM#######**###M##MMMMMWWMM#*oaooaakbddppdddpppppqpqkc>_++?- \?x><< +&&&&&&&&&&&&&WWMM##*oahaaaaahhhhaaooo********#*********o************######M#*oahhaaahhkkkbbbkkbkkbbbbbkbpdaabZfYka*dbw + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +pZX : ; : : \ : : : : : , :, : : : x : , +u@ : : : x@/( # ] )[ : : = : : , :: : : : | + : :  ++ ; : , > < : :: , [>x , : :@ = :: : : :  +; ; , : :# ] : /(} , x , + , , , \ : : :: : ,  + ; :: : : [ : : : :: , : , , < : , : ::  + ; : : , , : , [> : , , , : , : : M :  + ; : :@ , : , | : W > :: ,] ( : : :  + ; ; , : { , : ::| \ : (}<=#M ), :} : , +X : , : : + ; ; ; : : : : , ] : x : X , : } : , : : +;; ; ; : : , : : <= :: W : { : , ,, , :  +: ; :: : : : ,+ @ , M {: @: : , < =: : ::  + ; : : , : ; , : # : : :, :<= , : )[ | ] : :  + , ; : , ; ;; : {] \)[>x@/( ] ; : : :: : , \ : @ : :  + : : : : ; : :: }. |{ \ [>x@/ , # |{] W : : |{ : : : :  + ; : : < , ; : :X ++>x /( +x.{ : \)+ / } : / :: ) :  + ;; : : , ; : ; .+ .M { + ++ >: = M| ] : , |: + X : : + ; : ::> : : ; ; +. * v.* .M +X \ : , :W : (} / : :: +: : : | ] :: : : : ; @nn + ..vn. * +/( {: , : : : , < #M| : :  +: : : : : : :: : ; ; {c *. ; * +| X : :: : : : : : :  + : ; : ; : : :# |::+XW\ x* ..* x )[ : } : : : ,, , , : : :  + : ; : ; : : , :|. .U.xnx* *< : , : : : , , :: : : :  + :, : ; ; , W : : : >C.zu..x* ..*+ : : : : , : : : : :: :  + : @ , ;; ; , = : ]+ : #v* Yu.* * :: X \) : : : : : : : + : : ; : :: |{ : : \+ >. * *.c{ : , : : ,| ], )[ : : + : : ; , : : / :: , (}bkhpk0dpqpwYQLx = :]+XW: :: : # + { :  +; ; : , , ; : : , |{]nb#haokobkhbpwmQ|{ , : : : : \ , x :  + XW ; : : : : ; | \)[>xO#bkhkkkbo*hakqppJx@/ ; ; : : (}  + : ; : : , : [ /( <.nQ*khkbhhbdp##bqqwmmw0U]+; ; : , {  + | + : ;; ; , , : : : uxwbpkkaopOCUYd*ddpqmOZwZOQx(} : :+XW  + : : ; : / #M ; ; >mqwqdkZu{]+;W\)[>cUJOqqwm0QQCUXW\ ]+ : )[  + : M|{] : ,/( XW;; ; + MpqmpwJ\) ; ; ]+XCJQLCCCCC}< x : ,  + : \ @ : :| ; ; +]\dmqb@/( < ; ; ; }<CQJUJUUUW\ [ |: :  +: | : , {: : QUdpqUM| ] : ; ; : WnJwq00ZJ} , { [ : ,M  +: :: : : = :<=#M|La#hQ\) : ;; : : <=Zmpdd+X : , : x |:  + : : ;; W\ >x@ [|vLd( : ; : :: ]+ <[>x. + :|{]+XW /: ,|{]+XW\) :  +n#M|{]+XW\)nXzu/(}<=#M|{]+XW\)[>x@/( M * +XW: : ; |{]+XW\)[>xzJUJzn#M<:]u.W\)[>x@/(}<=#M|{; ;)[>x@/(.<=#M| +%%WWM###**###*ohhkbbdpqmO0LUYYYUYvYvucuzYYUQUv(}<=#M|{]+XWzJJczJJJ0ZZmqpqqqqppqmQCJCQ0LCCJUYXzzuunx>.xxvnvcccXYJQQ00Qc +@@@@$$$$$$BBB%888&WMM#***ooahhkhkbddkbbdppppppqqwmZZOOZwqpbkkkkkhaaaaaoooooaooahkbbbbdppqwwmZ00QQLLLLL0*xXvc0|[0-~\tOv +@@@@@@@@@@@@@@@@@@@$$$$$$BB%%8&&WWWMMM#####*##*****#######M#MWW&WW&&&&8%88&&&WMMMMMWWM#**oooakkkkbbddqa{_>?;1= |\n+]< +&&&&&&&&&&&&&&&&&&&&&&&&&&&&WW&WWMMM#*********oo*********#####MM##MMMMMMMM###*****###***ooahhkkhkkkbbbkpqpakbJt0a##hoJ + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +op0u ; : ; ( ,= : [ : : , , X ,, : : : : , : ,  +dQu); , : { :: +: > , @ : :: + : : : : :  +OX ; : ; > : x,: = : | ] , : : / : : : :}  +cn + ; ; M| : = : ]+X, : : < : , :: / : :  + ++ ; ; : > ,+X : +X \,, <=, \ : :M : :: :  + ; ; ;; ; M : := x : ) , : ,) : , : : : + ; ; ; :: , : :X M , : {] , )[, : : : + : ; ; ; : : :: :@ |:]+XW, : ,= X : @ ,, , : :  +: ; ; : : : {],XW ): : : , @ : : { , / , : :  + ; : : : : ; : : : :: : : , : : , <, : :: : :  + :; : : : {] : : : : , : : :: (: : : :x@/( +X: x }< :  + ; : :] W ; : : , , , x : : # (}<= W :  + ; : > , X ; : :{ X; , : |{]+XW\ [ , :: : , x@/( }:  + ; : :# : :; : : x@/( :M {]; W\) + < : : : : =# ] + : + ; ; :\ , : : :: | + ; ) >; }< ; + )[ : : : X : :@/ < / : +; ; ; <= : , : : : [ x@** <=; + W : @ (}< : , , : : : ,: /( M| :  +; :: : : : : : : : := |+ + ;;/ }< # { : : : : : : : :: ;  + : ;; ; : : : M|{]+ > *.. :|. * )[ x : : : , , , : : :  + : : ; ; :: , , ,#M + +. + } , : :: : : , : : : :  + : : ; ; , : :, ,W ).*.. +.. ; ] X : : , :: : : : : : :  + , , ; ; > : : x: } =.v..* + > @: , M|{] , : :: : : : :  + , ; ; : = : _nc.*. * #M: : : : )[ : ( <=# :: : : : + : :: : ; : W ; , ] ) / }<Xc...** W ; @ <=#M| : : : } M )[ /: :: :  +; ; : , : : : : : ( : XW. * .}: :: : ; : : , :  + ; ; : :: : ; : \ :>uXxwOwCwmqw0muu\ : : ;; : : x , ,  + > @ ; : : : , ;; ; /( : #nJ@#oMk#hhkdwwCX<= ; ; : ,=# [  + : ; : : \): ; :: : >dabkhaaoa#*ahbkbQ\); ; : ]+  + : ; ; : , ; ; @ ?OkohahbbkbphMhbdbppp0u# : ,) #M ,+X  + : #, : \ ]+X ; : ;U/]abhhh*oo*hkoBabdqwwwqwQu[> \ : , = , + : : ; ; ; :)whbpdhkwJcx|{czJOpkkkdqwmwqOJM| , W [ |{, \ { : +; : < : : : [; /(}dpdbpOc+X ; /(}<=uCqbdwmwmmX>: : M x : |{ [ :  +; : : @ , ::(} #M {Udwpu)[> ; ; : \)[>xZmwOOmvM ; :, { : : , ,  + : : |{ ,W , ztZhwQ|} : ; : : M|{XkhpaZ[ : : x :  + ; ; ; >x , ,[> }}q&0Q{]: ) ; : { : @Xmadz+ , )[ :: x@/(}  + ; ;; ; : +XW >, >cx0c[> : ;: /(}<=# |,_...? > ; (}<=#M|{]+XW\)[ : <=# *+  +c@/(}<=#M| ; :[> @/(}<=#M|{]+XW\> x@ ( =# ): /+}<=#M|{]nUCQ00wZOJv}<=uM {ucXzzzzcun/(}<=#M|{]+X. >x .n +B8M##*ohpLXXcxxnuYYYXJ0wwwqmmwmZOCJLJQUULCYUYu)[>x@/(}<=#M|YQOL0ZZmqdbbkhhhhhkkkdwZQUcYQOOZZZZZO000LCCUCCUUYcv. = M|.v +@@@@@@@@@$@@$%%%%%8888&WMWWWMMM#**oaahhhkkkdddqqqwZOOO0Zwpbkkaaaaoo**##MMMMMMM#*oaahkhhhhhkbkkkkbbddpqpLcmJYQx<.W )[nY +@@@@@@@@@@@@@@@@@@@@@@$$$$$$$BB%%88&WWWWWMM###*********###MMMWW&888%%%%%BBB%88&WWWWMMMWWWWMMMMM##****oMzW-< +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$$$$$$BB%%%%%888%%88%%BBBB$$@@@@@@@@@@@@B%%%%%%B$B%BB%%%%%8888&&&&&#kkM*bm/ck#&bkq + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +O. : : ;; ; ; : : , :: : : : , > ,  +mv + ; ; ; ;; : : , : , : : :: : : : , M { +mc + ; ; ; ; : :: : | , : : : : : :: : : =  +U.+ ; ; ; : : : : : : ; : : : : : ( # : \)[> :}<  +z* ; ; ; : : : : :, : ; ; : : : , \ :: : : : +.+ ;; ; ; : : : : : | : : <=#M : : , : : :> } : : :: :  ++ ; : :: : : : : : : M >:; ; : ; ; : ] : : : :  + : :M : : :: , : : (}<= , : : /( #M ; ;; ; ; : [: : : : :  + : X \ >: : : ; :: : ; : : : : + ) x: : ; :: >x@ : {] : : :  + ; M : : ; ; ; ;; : : : : @ | : : : ] W )[ @ : : :  + ; )[ : : : ; : ; | : ::[ */(} : : , : \ ]+ : :  + ; : , , , (: : ; > *..#M| ;: [ : : : : |{]+ : ;; : + ; : X ,, , : ; = M {*+XW >x@ } W : : : : ; , : ; ; +; : : : : , x : + x =zn+{] }: :: ; ; ; { [ : ; ;  +; : ; ; : > : :+ , : } =# ]+X..X*Xx@ M {] W : @/( =#M : )[ : : :  + : : : : : x , ,, \)[>cqv..* z~ {]+XW\)[ *@/ : M >x, \ : :  + : : , : ): : , / }<un*z0Yzn \)[>. ;}. + : | < ,  + , , : : , , : + *vvQZv. x+ n.+ ..W\)[ , :  + : x , <=#: : : , X , x /* .#JcJu n.. cn@/( = , [ , , [  + ; ; ; ; : :: , , , : M {* + .Cx.. =#M| : ,, : , : # ] ,  + ; ; ; ; : : , ,, | : x.uux...zn ..XW , , : : , / , : : : ,  +; x@/( ; ; : : , :: = M|QuncX.x.nYc/(} : : : : : : ,: : : : :  +; # : ; : : ; ;\ _>U.uuvuuuuv{ : : : : : : = : :: : ;  + W x:: ; { \) : < : ; = MCQu*...**>x : : : : : : + \ : : , ::  + # : ; ;: ( : : : < ; ;\ [cv..xxnvzJ(-]+ :; : , : : , : ,] X : :  + : : ; ; :: : : ; ;}qUhao#dWWMM&#oLc/; :| :: , : :| : < :  + : : ; ; , : : :: > / ; ; um&@%W8#&W*####*Zu]+ , , |{: : [ , , , + , : ; ; : : : : :: ; xYxWMooo*o*M*#MM##odX/(} > : M x@ : : +:: : : ; : x, : : , , =#ZoWM**oohkbbpp#*abbhbZ]+X , ; : =# : :  +; : ,, : : ; ; ; : +X0zdkkahkhkddqZOwMabkdmmwdJ-(, W ; : ] : : ::  + ; : : ,: ; ; : : : xzkbppqpbpppmOY\)[>x@/xQwppmOZ]+ ,[ x : : : , , : ;  + ; ; : ) x ; ;; : : : uYLCOwwmmzx@/ +~xU0OCC@/ ;: : : : (} M :  + ; ; : | : : : :: ; .x +xvU0Cv}>= (}<=0UUJ], : :: : { :  + ; ; : X , : , + *x.#M|{ x@ ( ;z0CCU@ : : : [ :  + +; ; ; :(}< : : , #M|{]+XW\ x :: : : \ : ;}YZZpn : : :} |{ XW\)[> ; : +.+ : ;; ; : : , : , ; : :: : : XW\)[>x: : ) : : ; :: +Cx} : : ; :: ; ; [ @ (}<=#: ],XW + ; : : :: /( { ; [>x@/ } ; ; : ;  +bmUXW\)[>x@ ; {]+X *...*+ <=#M|{]+XW\) x@/..xuvun*.+XW\ ; : M|{]+XW\)[> */(}x=#M|{]+XW\)[ x* . >xM ]uX +&W#hkbZZOO0LJXvuuucYLQQQQQLCUYUUYXzXYcnunxxuvvczzXUJJJJJUUYYYXcvnuvunx+XW\)XCCCJCCLLCCCQQ00QQQQQCYYCQLO#M< -~, )~/x<> +B%8&WMM#oooahhkbdpddddpppqqqwwwZmmZ0QQLQQQQQ00000ZmmZZ0Lc.zL0ZZmmwwmmwwwwwqwqqqwwqqqppqpqqqqqppqqqqqpppwOOdpmL|udoWdbw + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +O. ; :: ; ; ; : : : , : : : : : :+  +mv+ ; ; ;; ; : : : , , : :: : : : : : / } +mc ; ; ; ; ;: : : ( : : : : :: : : : , x  +Ux ; ; ; ; : : :: , : : ; : : : : :: ) @ : |{]+ : [>  +z. ; ; ; : : : : : ,, : : ; ; : : , , : | : : : :  +* ; ; ; : : : : : ( : :: >x@/ : : , : : : + [ : :: : :  + ; :; : : : : : : / + ; ; ; ; : < : : : ::  + ; : / : :: : , : ;)[>x : : \) @/ ;; ; ; ; : ] : : : :  + ; # | + : : :: ; : ; : : : : = { X : ;; ; +XW : }< : : :  + ; / : : ; ; :: ; : : : : W ( , : : < M {] W : : : : + ; : {] : , : ; : ; (; : ] +.\)[; , : , : | <= : : : +;; : , ,) : ; + +...@/( , ] : : : : :(}<= :: ; :  +; : #, , : ;x / } =#M +XW [:, M: : : : : : : ; ;;  + : : : :: , X , : , + X xzn }< [ : ; ; : :} ]: : ;  + : : ; : + :: : = , [ x@ <=#.*X XXW / }< M : W\) x@/ : {] : : :  + : : : : : :X , |{]+cqv.* z~ }<=#M|{]+ W\ : / +X | : :  + : : , : ,{ : , ,\ [>un.z0Yzn |{]+. + [. + : ( >  + ,: : : : , , = +.vvQZv. +x nx ..M|{] , , : : + : , X:, >x@ : : , , # : X \. .@JcJu*n..+*cnW\) x ] , ]  +; ; ; ; :: : , : : / }. + .C... *x@/( : , , : @ < ,  +; ; ; ; : : ,, ( : X.uux..*zn .*XM , : :: : \, : : : ,  + XW\) : ; : : , , ;x /(QuncX*..nYc\)[ : : : : :: : : : :  + @ ; : , : ;; | _+U.uuvuuuuv} : : : : : : x :: : , :  + M X ; } |{ : > ; x /CQu...*..+X, : : , : : := |: : :, :  + , @, ;; ; ) : : : > ; : | ]cv..xxnvzJ(-<=: : , : : : , < #: : : + : : ; ; , : : : ; ; [qUhao#dWWMM&#oLc\ :: ( , , : : ( , , > : , + , : ; ; : , :: : + \ ; ; um&@%W8#&W*####*Zu<= : , (} : ] , , ,  + : : ; ; : : :: : ; XYxWMooo*o*M*#MM##odX\)[ , + ;: :/ XW : :  + : : ; : ,X : : , :,x@ZoWM**oohkbbpp#*abbhbZ<=# ; : , x@ : :  + ;: , : : ; ; ; : =#0zdkkahkhkddqZOwMabkdmmwdJ-) M : : , < : :: :  + ; : :: , ; ; : : : XzkbppqpbpppmOY|{]+XW\xQwppmOZ<= , ] X: : : , : : :  + ; ; : { X ;; ; ; : : +uYLCOwwmmzXW\ =~xU0OCCW\, : : : )[ / :  + ; ; : (: : :: : : .x* xvU0Cv[>x )[>x0UUJ< :: : : } : ; + ; ; : :# : , , ;* *...@/(} ,XW ) + z0CCUW : : :: ] : : ++ ; ; : )[>, : , , ,@/(}< #M| X: : : |: : [YZZpn : : : [ (} #M|{]+ : :  +* ;: ; ; : : : , , ; :: : : : #M|{]+X : : { : : :: :  +Cx[ : : ;: : ; ; :] W,)[>x@ < #M + ; : :: : \) } : ]+XW\ [ ; ; ; +  +bmU#M|{]+XW ; ;}<=#*...* *>x@/(}<=#M|{ XW\.xxuvun..=#M| ; : /(}<=#M|{]+* \)[xx@/(}<=#M|{] +x .+>x/ ;<uX +&W#hkbZZOO0LJXvuuucYLQQQQQLCUYUUYXzXYcnunxxuvvczzXUJJJJJUUYYYXcvnuvunx=#M|{XCCCJCCLLCCCQQ00QQQQQCYYCQLO@/< -~ {~/X<> +B%8&WMM#oooahhkbdpddddpppqqqwwwZmmZ0QQLQQQQQ00000ZmmZZ0Lc.zL0ZZmmwwmmwwwwwqwqqqwwqqqppqpqqqqqppqqqqqpppwOOdpmL|udoWdbw + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +whc ; ; ; ; : : : , , : : : : : :  +mpn + ;; ; ; ; : : : :: : : : : = {] ) :(}<= M|{ ,XW  +ZkU + ; : :: ; : : : X \ x : : : :; : }: : : : :  +UQx + + : : : :: : : @, : : W [> : : : :(}< ]: : : : :  +.. ; ; ] : : : : , :: + : , | : : : : : : : : :  + ; )[> @: : : : : ,X : : {]+ >x ; ; ; : : : +: : : :  + ;; / : : : , : : : #M : :: : (} |: ; ; : |{]+ \ > ( : :: :  + ; { [ : : ; ; : ; ; : : : :X >x@/, M|{ X +X : : : + ; x , :: ; ( : : ; ; : \) : < : : : + + : X : #,|{ : , : : : = : > :< :: : : /(} + : : :  +; : @ : x, , ,] : [ : : x : : : : :: :+ @: : ;  + : : : : : : ,,{] ; \ (: | , ; : : : ; / | : ;  + :: : , :# , , X + x@ #M , / ; ; : : : { [> :: :  + : , :: : \ , ) , ( < M +XWnv[>x ::=# + : : (}< #M|: : [ : :  + : )[>x / #M|{: , , ,XW )[ x@X..X.Xz| + )[>x ( , | x : (}  + : [ : : , , /( *=#zwx.. *cx[ }< |{ , , X : + ; X : : : ,, , { * vc.cJ x*.z=#M|{ + )[> ( , , ] ,  +; W >x (}<= : : : , , + _* .cz0C.v .x *un>x+ (}< / , : ,: ,  +; ::} =; ; ; : : ,X } ;|.. *..LXQ..x* .xz|{ \ > , : : : : ,  + : ; ;; : : : ] ; [>.c.. .*nU.x* uz)[ : : : : : : , M| + ) @ : ; ] , : :| :< #MuJXvn..c.*.xz.} , :: : : : : [ : : :  + ; x : :: > : W )xQncYz..*uXcU] , : : :: : : < ] : :  + ; :|{ : : | ) ; } =vLxvvvnuvn.Xx : : , : : :: (}: :  + :/( , ; ; / ,# : : } ; ;; W )CQu.*....x~ : : : < {]: : , X : : + : :: ; ; ; : : | ] : ; _,=XznnuvvzU0v1x@/ , X : { , ( :: :  +, : : ;: ; } : : : : : Qko*#&*oBWWW8#kq{]+X [ : : @ : :  + : : : : :: ; : , : x oB@$88%W%&W&&&W#wY@/( , + ) : : [ : :  + : : : { ; ; ;; ] ): : #Mn8W$&W&&8&88&8%%8WMhX]+X : :: : : , : : :  + ; : : [ : ; : : :: : Wwd&W%888&&WMMW#W@8W####dt/ : : : :: : : : :  + ; : : < : : : : ; : @/0W#MW&&MW&8%8Mbda*kW&#oao*C~ ; : : : XW\ [> (: :  + ; ;; : : ,#M : : : =#uqM%###*MWWW#bX}<=#M|{]rZaMokaw}; : : : @ : :: ; + : ; ; / , [ : : +XQoM#**##&&obQx|{] : :: /1Xdbbbd{ : : }<=# : : +, : ; ]+ : @ { : >xLCvLqkaoMMLcXW\: , : ;Xbpqmmx : : ] x@ : :  +, : ; ; : : : =qhmv Jdap)[>x : : : : cLdwwZOx; :: # : : : :  + : ; : : : : ,M :X*MW#MWqn(} : : : : : ]u#o*#O> : M , : : ,  + ; ; ; : : ; : :@wW#8%ov|, X:: ; : : \)[ +/uYZZ# ; , : :, @  + . + ;; : : : ; +}..# +{]v*0\ +>x@/(}ucccvvn+XW\)[>xxunvULCCz?] )[> /(}<=#M|{] : : , =#;; + +YOX@/ ; : :: ; + ..xuccC[ )[?xYLYLO000mwwqppppppqwZQC0ZmwqppdpppppdpOv(-<=uvzXzcvux)[>x@/(}<= : : .X +mWhdQu+XWxnx>x@/(}<=#MnvzXXYvcXUJCJLL0Owqmmqppdbkkkhaaaaaaaaoooooooo******ooahbpqZYXWxJLQOOOOOO000QLCUYu\ [>x@/ }<1> ; +qBWM*akbbbdpqwmZOOO0QLLLLCJUXXUJCCLLQOZmwpdbkkaoo***#####M#MMMMMMWWW&&&&&&&WWM#*abqmmwqdddbbbddddddppppp0QmqQO\|Zp*dqw + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +B&kLn* + ; : : : , : : : : + : : : : : : :: : : :  +8*Ox+; ; @/( , : : : :W , :: : ) /(}< : : : : : : : :: ,  +WM*pC. :#M : : : : : ; : : : : , <= { : \ @/ : : :  +oakqU{] : ;: ; : : ; : : @ <= : : :  +dqLX[> : | : : ; :: : ; : :M ) , / : :  +OUn<= ( =# : : : :: : +XW\ :] @ (}<= :]+XW: :@/ : :  +n] , =: : # : : x : x : : : : ]+ @ : : : + ; :: # {]+ : }: , [ , , / : | , ; ; : : : {, :: :  +: : , :: : , , , : :>x : : : : : M @ , = :  + : < #M : : [>:: , : : : ,,[>x : ]+ )  + : , : : : + [: /( :: )[ =  + : x }<: : : : , :/(} |{: : /(}< ]+  + : : ; : : : : # ; + , > , : ] W\ :  + ; :: ; : : : : ) x , = M|{*+XW : > @/( <=# { ), ], + ;x@/ <= ; :: [> } : | ,\) * x( : ]+ +\) x : , , | > : +; W : :( \, :( ,(} + { + [> @/( =:: : : : , : , <= :  +; } : ] :: , ( < M|; ..* x@/(}<= M| : : :: : : X :  + } ; @/ , : ( { : \ ; .ux. n+ +W\ [ : : , : :,< x@ :  + + ; ; : : : [ : }+; *.nn *. @ <: , : : : W\ :, , ;  + @ }<=#M ; ; : : : [ : ++ + u*+ M { : , : # : : : : : ::  + : : : ;; ; : : :#M : x / = .* \)[ :,( , , , : : : : : :  + ; : : ; : ;; ; : : { X . * ..}<= : , :: : : : : : : : : + ; : : : : ; ; ;; <= {, : .* ..* ..*.XW\: x : ; :: : : : : : :  +; : : : : , } : : :: Mn zn*. * .x}<= : : : : : :: x =# : ;  +; ; : : : < X : : ; )[>..u(xnuzXQLZmmCn)[ ; : : : : ): ;  + ; :: : : : : ; : qo#&W8o*B*o#ok*oOu#M ; : : : : :) <: ;;  + x@; : ; :: : , : : ; : \)Y@M*#M##M#MW&#*##hJ[ ; : ;W\ >x@/ = X ;  + ; ; : : :: , , : : [ @/(}>h%MWWMWMM##M%&M#M*#kvM ;; : :/( :[>x@ :  + [ ; ; : : : # , : # | /do8&&&&8&&8WM&$MM#*ooakc[: ; ::{ >x@ : : : : + : ; ; ; : : :)[>x: , :: \)L-qWMM8&%8#hOUUwkW8&#o**oakz# ; : > ,: : : : : +:: ; : : : : ; ; : : /(\MMWWMW&#pC\)[> /(}<0*W*#**aaJ) : : : , : :  +,/( ; :: : ; : ; ; : : -ub&MW##k0x@/ :: : W\L*ooooahx : : ( : , : ::  + : : , ;; ; ; ; : + ;<)pa*b0XO<=# ; : : :<=Zp*ahhYW : } : ) : : :  +[>x, ; : ) ; ;; ; : x@1{mpqqU_{]+X : : = ]: {QMooakU}< : , , ( #M ] :  +=#M: ; :x = ; ; ; :< M]U0C0W\) < : <O%W%&v+ ) ,, : # :  +X\)[> : :M : ; ; + \)x ./; :M : (}<=#M + \Xqqbc/ M : :  +kq0YvM|{]+XW\)[>x@/(}; : : x < ?n : ;)[> /(}< |{]+xW\)[>xxvXnXCvx.{]+XW\)[ x@/(}<=#M|{]+XW [ x; ; +&W#**ahppwO0QQLCCJJJUXccv[>x@/(}<=#x|{]>+W\ [xvu/(}<=xM|{]+nvczXC0ZmmwqpddbbkbbbkbOfxQUUJUYzzzvuczzzcccx . +. n| +*x +$B%8&&WM###**ooaakhhhhhkkbdppppqwmZZwpqwmZ0Zmwwwwwwwwwwwwwqqpdbbhhhaaooo*##MMMM#*aaoadppppwwmmmmZOOO00mM|>: +< :[>|@>  +@@@$$$B%%%88&&WWMMMM#####*ooaaaaaahhkhahhaahaaoaooaoooaao****#MMMW&&&&8&88%B%%%888&WWM##*ahhkkkkbbdddbbqO0qwOJ)jZdhmqO + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +&bY.*. . + = , : ; ; ; ; ;; : | : , : : :  +Wqu+ {]+ [ : ; ; ; ; ; ; x@ : M M , , : :  +M#bC. )[>x : ; : ; ; ; / , ] :: [ , , : : = | : ::  +abmv(} + ,, :/ < : ; ; : | x : # , : : : :> : :  +0c|{ :W x : | ) : } : W\) M: : ) @ , :: : : : : : : + + : }< # ; : } : X \) \ : : =# )[ : :: : |{ :W\ :  +; : , ; : |{ , > >x / : : ; : M : : [> <:  +; ; @ < : , \ : , <=;: : : (}< : { , : <= | W  + ; + : : : :] }< #M|{]+ ; : :: , \)[ |{ + @ (  + : :>x ; ;; : : : ; ; : :  + ; : ; ; : :: : @/ ; ; ;) , = ) >x@ >x  + :|{ +X : /(}< M| : , @ X *....*<= : + /(} : W ,, , , = : + \ : : { @ ( <= {] W\, @/ , : : : : : , X : +, {] : , @/ , :x + ]+ W > @..*< : + [ : : : : : x@ :  + [ :; : , , : | [> @/ } = M|.X+cW :: / < M : : : : :X > /(} : :;  + @ M: ; : , : : ) {] XWc). + x( +]+XW\ : , { : : ( < : : :  + { ; : , :: : ) > ..*XQcu..{]+XW\ + x /; # , : : : : : :  + : = : : : : : ; # *..JYnu..zxnv}+ xM : : ( M :: : : : : :  + : , : : : : : :W )+ /z.c..*.. .XW\ : : +XW : : :: : : ;  + :: : : : : [ x: : ,] [ , ( <+ {]+X.+ @ : , : : : : : : ;; ; : + : : :: : , : : : , W x@ + M {] : : : ; : : : : +X: ; ;; +: : : : | : : : @ } + M * ..u) /( ,: : : : : : W } ; ;  +; ; : : :: : : +X* .*....}< , ; :: : : : / + ; ;  + ; ; ; <= | , : :: , , (nn * *X \) : : : :: < XW\)[>x : :  + : ; ; ; : , : )[ ::= |{ +X*....xucu{<=# : : ) : : |{ @ : : :  +} , ; ; ; : :XW : [>0xqpbow***o#hwz\): : #: : | : :: :  + , ; ;; ; : : < : ,=cYd@*WM*#M#*omY=# : ; ) : : : : +@/ ; : : :: : ; : , : ,XWn[*Mo**M#&8W&88&WMaJ);;x ( ; X > : : : : + ; ; : : ; ; ;; ; : : @{nh*M*M###*#*o*%WM#WM#k=#M {: ;; , + : : : :  +: ; : : ; ; ; ; ;: : #MO OhkoooMMWW8&&8@%8&Moo*ML}[: : ,{ [> : : : ;  + ; : : ; ; ; ; : M : W\bddqwqbho*kp0X]+]{nXJkM&W*M*n# : ; x@ : :+ : : :  + \ :: : < {] ; ; ; ; : >x@nOwZmmpkbZLXW\)[> #MQqM#*&w+ : : , ) >x ( : :  + : ; @ : : ; @ <=#xmwZmmOmQ1>x : |{] :[ |kMa&X=# | X , :  + : ; @ , :: : : ]+JcQqOmZn/(}< : :@ : # X#Mo#cx) , : :  + : ; { \) ; : :: , x {*ohoOM : x : ; : [c*%$ku< :: , :> ] : , + ; ; > } ; : ,@/( := MxuZkOW\ : : ; : : MtLOn> : >x@ ;=#M|{] x:/( , : +)[>x@/(}<=#M|{]+XW ; : : \); x@ ; ;M|{]+XW\)[> ;}<x#M|{]+XWx)[ ?@/(}<=nc|{]uczXcvnx@/(}<=#M|{ X . >x +akbkhhbpwOLJUXzXXXUYXXv|{]+XW\)[>x@~(zx=#..uXUYzcvcXYYUYcvccv.+]U0ZwwmwwqpdddkkkkammpwqwmZmwwwwwwwmmZZmcY0JJwx1Z{?.nwX +%%8WWWWM##**oaaahaaaahkdpppqwwmOOO0wqZZZmwpddddbbddpmQcLmwwZOz>Jmphaaooo*#MWWWWWWMWWWWWWMM#***ooaaaahkM{_;+ 1M, ]{t,?< +@@@$$$BB%888&WWWWWWMMWM##**ooaaaahhhaaaaoo***#####**ohdkaooaoo*o*#W&&&&88%%%%%%%B$$@$BBBBB%%88&&&&&WWWWabbMhkC\0#$%h#C + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +ok0v. ;) ; := , : : , : ] : : x , , : :  +Wqu (} M ] [ : : { | : : @ }< : :<= , : XW  +*kZv :] x <: : > ;: : , , } : :+ < ; +qLv\ :x (} ;|{]+: : < ; : ) ( < X x :: +@/ : {; ; ;; : ] : : ; , :  +; : ; ; ; ; ::@/ : ; ; : ( , ,  + : : ; )[> @: : ] : ; ; : @ |{ : W\)[> /( , , : ) :  + ; + ) : } {]+X: :@ |; ;; ; ; W\) : : : , : < : /(} :  + :: @ : W\ [ ( : { [ ; ; ;; : : : : , @/ : > } M: :  + := M X:: ; := ] : = ; :)[ : : :: : , , : @ = : : : : + ;X @ : ; :: : ; # W > (} #: ; : : @ : : : : : : : + ;/ M : ; ; : :: \ = ) : ; : | : : : : : : :  +; : : : : : : } XW\)[ : ; ; , ) : :: : : ; : ;  + : : : : : : ] @n( *#M { XW ) , } #M : , : : : : :; ; : :  + :: : : , | : ) { + >x@/cu<=#M :\ x : : : : : : ; ;: ;  + : : :: , : +X \) >x + x< #Un xxvCu)[ (}<=# { : : : : + ; ; ;  + ; : : : , : : Mu+ .X<\Qzx* .v.; # ]u +) :: : : : x ; ; ;  + : : : =# , :: : : [ .cxcOXvn uX \)[>.@/: : : :: : # : : ; ; : + ; : ; : ) : \ :=.. * ..xX.[>x@ * M : :)[ : : : W [ : : ; ; : +: ; ; ; : + [ : \.*x. + # *u\ : (} : ; : : :: : ; ;  +, ;; ; ; : :/ : <* .zxx. +)[ *.( : { \: ; : M : ; : :: ;  + M| ; ;; ; : @ , , :W\ Lv.nn * v.] :: > , ; : } ; : : ;  + : ; : :: , , : : ; }cxYn..x....*YX : :M X : : X : , : :  + :< : : ; ; : :: : @/(: ; Cu.CY.*...* uXM: : : :: : , :  + : : ; ; ; ; : +XW ; /C}.n*....*..c)[>x ( < , : / , : :  + : : +X; ; ; ; : [ ; ,{ohkdkb0kdkkbZbZ# x : :]+ : < : : ; + :: : > ( ; ; ; : ]: >oM8#*Mb#bkkkqqO\)[> / M : : : + ) : :: :  + : (} + : : : :] : ;=ZpobqddkkahoohkdwC=#M : + [ : : , , :  + : ] : :: : : ( : +zxOddpdqqwqppd*abqqpq0)[> \ } :  + : x #M : : : :: : : xLL00OwmqddbdqZO#kddpwmZwOcM|{] , = # :  + : :| : : : : : :: =#JLUCLOwmOUux@/(}<=uvYZqpqZOOc>x@/( : ]+ :x W :  + { : [ : : < # ]+XcLYJLCCX(}<=# : W\)[>x@cQZOwZY|{] : , : { /  + :: # : : >x@ccYLc#M|{ :: :{]pmOZmZQx : : : }: :  + , : \ : : =vvXvu+XW )[ / : , :: x@vwhbdod| : : : , : : :}  + )[: :< #M: : > XczLOOx@ ( < : : : , {]pdo*#[ : : : : ; ; : X  +/ : W : : /(}Yc#M ), : : ] W : x@/(_t=#, :;W\)[>x@/(}<=#M|{]+XW\)[>x@/(}< +{]+XW\)[ ; /(}* |{]+XW\)[>x@/(}<= | + : )[>x@/(}<=#M|{]+XW\)[>x@/(}<=# ) x@/vJQZmmZZZZZZmwwppwqwZZmJLZZO00 +cx@ux}<=nuvXUJCCCCUUYXzux<=#M|..*.W\)[>x@.(}<=#M|{czXXYUCL0mZmZOZZOO00LCUv)[>x@/(}<=#vCmpdbkhao*######MbOMhhMqtoCfcQda +oakkbdpqqpppppppppqqqmOQQQLCJUUUXzXzu.ncULLQQ0ZZZZmwqpdbbkkkhhhhhkkbbbbbdpppmOO00mpbkao**###M*oMW&888&@U>{++)] > =/ +- +&W####****ooo*oooaaahhbdpqwwmmmmZZZ0O0OZmqpdddbkkhhaao**###MM###########*ooooooooo*#MW&8%%%%%M*8BBB$BB$WbdM*dZ(xkB@haq + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +pOz ; ; ; : : : : : , : , +qC] : [>x: ; M|: : :/( \ ; ; : W } , M > , :, : {]: +Jc : :W\ : ; +X } ;; ; : / { : , /(} : : :: )[ :  +x. :: [ : |{: : : + : : ;: { W : , : : : : : )[> :: :  + : ,: ]+XW x : : x : : : x@ :: : >x < : X : : : :  + ; M ] XW\: : # ; ;[ M : ) :(} , : x :, = : ( : : : :  + W ; : W ; ;< W : , W : : , : : : : , :  + : ; ; : : +X @/; ; : ): ( ; : { : :: : : :  + ; W ; ; : : x@ #M : ; :: }: ; : : : +X , : : : :; : : : + ; ;: : ; : , # : : , , x : ; , : : : : : ; : ,W :  +; : : :: : W\ : : : , : XW\) , : : : : : ; : :  + ; : , +XW :: / #M| : \ : =# : :: : : : : ; ; : :  + ; : : } : XW:: : =# |{] [>x ,( XW : : : :: W , : ; ; ;  + ; : , , , : : :W\ <=#M| ;@/ , : : : / : : : ; ;  + ; ; : (} , : \)[ : } =#M { + ..*c> @ M {] X \) : #M : :: ; ;  + : ;; ; , : ( , W\u[>x x +.# ;\ [> @ : ; : : ;; ; + : ; ; ;: : x@/ : /(}.nxcJOXux. )[>x@ ;.< #M : : < + ; ; : ; ; +: = ; : ; : :: : , ;]+X *xvU0Yz. v +]+ W: x : : > @ } ; : : ; ;  +: : : : : ; ; :M { X : @/(. *cxv.+ ) , #M , : ( X : : ; ;  + (}: : : : ; ; : x ( ;: | ]+x.* n = x: : :+ / : : : ;  + ; ; : :|{]+: ; ; , ] : > @.znu..+ +W } : : : :< { : ,, : ;  + ; ;; : XW, [ ; ; : > : :# {J. .x* */(} |{] : : : : , >x /( + W ::  + ; ; : | : : : : : ) >xz..* | ] X \ :: : | [ :  + ; ; ; , :: : : ; : <= M. + ) > : , : : W : : + : ; ; : : ;; ; : +O?tJUuXYYCUX=- : , := : : } , :  +: ; : : , =#M|{]: :: .Q8#k*wkppbd0L\)[ / : : , :: = , :  + / : : x ; @ : ?bqwpqdpqdbwpqZOU#M : : : : : + , , :: : :  + { : :: , : :X.}YpbppqqqmZpakpmOmOLY[> : : : : , , , : : ::  + : : X:: : : ; [}dmqppkkkbpw*#qmZOQCJYnM|:: : : : : , : : :  + M ; >x@ : : ]+ : = ; {pOZZqppLCUUXXJZmdpwZOQUXvnxx@/ : ::{ : : , : : : M + : : ; : [ , :)[zwwqq0c=#M|{]+XW\)[>xLZO0OLJJJU]+X } :: : : ; : : : + : : ; : : / ;<JqOmzx+XW\ : : |{]vYCCJJUUU/(} : ; :: : : : : +:: , ; : : \)[ , < XmQq[> M ]+ : @/(}xYOLCCu+XW : : :M| : , /( =# :  +; : :: , : : x(mpmc= :{] / :: : XW\Zkdhw/( : : :\ x ::  + ; , : : #M|*QcX : @/ | : : :: -rZZC]: : : :  + ; : : : , ,: |{ \).>C@ : : +XW\ : + +X>\. x : , ) : #M|{] XW\)[> +}<=: :XW : / }< #M|{]+XW +>x@/(} ; ; ; ; #M|{]+XW\uzXXL0ZZZUXX_{]+;W\)[>x@/(}<= : { XW\)[> @/xnuun +hZUux[uv@/xxncccccccvuuuvvvvczzXXYYJQLXzu\)[>xnxxxxnuuuvvuuzJQZmmwmwdbdbkkkbbbbdqwZQQJYXzzcXzcuxnnxx[>x@ XzU0z[0x1.zOw +@$B8WM##***oaahbddppqqwwwwwwwqqqpqwwwmwqppqwqqqpppddddbbkkkhhaaao**#####MWWMWM#**oo**ohhhhhkbddddppppwbu{- ;]_ x( ~+ +@@@@$BB%8&WMMMM#*aahkkbbbbkbbkkhkbppbbkhhhhhkhhaoooo****####MWW&&8888%8%BB%%8WMMWWWW&&WWWMMM###*oo***o*bZObdZL1fq#%qdZ + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +mCn[ ; # ; ; @ ; ; : > : :: : : : W [ : : :  +c}<= XW ; , <= { ; :> { ; ; : M : : #M| ] :: : = : + W : :  + +X x@/ ; : ,) ; ;# : : : ) / # : @: : ,,X : : : :  + #M + ; ; : ; \ = ; :W\)[> , # : X ) , : : : :: : :  + ]+ W:; + ; : X : :( X ; :( : =, { : : : : (  + ; : ; ;: : @ } ,{ x@ ; : @ : :{ = : : : : , [  + ; : : : : ,[ <=# : : | : :> , # |{ : : : : ; : @/: : + ; : : : : , X: ; : ) : : : : : :: : : ; : ; ;  +: ; : : x : [>x : ;; : : : XW , : : : : :: : ; ; ;  +; ; : < : + \) : } = , \) x : : : : }<=# : : ;; ; ;  + ; :: : \ , = ]+: : @ #M { , / +: : : : ] : : ; ; ;:  + ; : : M : : {]+XW+.[> , :: : : \, =: : : : ;  + ; ; ; , , : : ]+ [+ ..(} |{] , ] X: :: ( W : : ; ;  + ; ; ; : : : > #M|{] W )vnx@/ | + ( : ] ,> } : : ; ; : + : , ; : : : = W (}< ..*c] [>x@ (} # : , { :; : : ;  +: : : : ; : : }< ; {]0Ux.*+ x (}<=+. +X , : ): /; ; :: ; ,  +: : :: : : ; ; (}< M: W ) xuYZCcz.M|{.. +; ;@ # : : { : : ; ;:  + : : : :: ; ; : W ): ;} =* .vYZQYu z. + <=#M : : :|{] : : : ;  + : : : /( # ; ;; ; } = : X \.. *XuXn... ; + : : :: : : ( < : , x: :  + : : : : ; + : ( <xn* v. ; @ < : : [>x : #M, : ) : / | :  + ; ; W : : : : : :] XWvccvx*.. +#M , : : : W , > :  + ;; ; ; <=# : : : : ; : @ (cz .vx ..*.\) , }< M: [, = : ] : , + : ; ;; : : ; : : ; : {:+Uu.*.. *( :: : : : W : :: +: : ; : ,: ; > /(} =# { : [>x@n.* +{ : }, : : : , : , : :  +: : ; : \: : , > : }<dOmOOUOQL0CL) : : : : :: : , : , : : ,  + : ; : : : : : ]+w#W***h#kkadqUM ; : : : : : :, : : : ,  + > : : : : x , :M \ ; xvkhppdbhdhohbkqCn>x M +XW )[ , : : ,, : : : \  + , : ; ; : + , ( : {zahdpwqdpwwh#hdqppQu|{] : , : : :: :  + : W : ;; ; : , , WuJpqbbkbkahdb8oddpwZOQXx_/( = M| )[, : : : : : : + : : ; : :: :=#M|{ /ZapqpddddwzW()[unCL0wwm0Lc{]+XW:; : : : : , M , , : + ; ; : : : :: , |upqpdpdpYx@ =#M|{]+XWYCUvYCz(] : :: : }<= [ :  ++ ; : , : : : X )]ppdpqdC=#M X : : }<=#McLQCu} : : : ] , \ :  + ; ; : , : , : })Xdwqwc+X: [>x@ : #M: X, >z00Ov- : : , ,, =  + XW\; ; : : > , ; |{ +Xdahawx : ; :: W +M|qddkW\ : : :M ,  + } ; ;; : ; xzC*W&w# : ; ; < : -{CwL}< : +XW #  +|{] ; : : ] : :MxL0*CW : ; ; : W ), (}<=#M x =#M|{]  +[>x@/(}<=#M|{]+XW\) >x@ = :; +XW+)..*@ (}<=#M|{]+XW; >x@/(}<=#M|{uJ0000Y>{~/(}< M ]+XW\)[> =#M|{]+XWx..>x; +&okbbkbhahkbdZ00QCXcuM|{]+XW\)[>nvCOwpm0X|cCLC0ZmpqmZQLJJLQOwwwmOQCLZpppdddpqqqmQUcvW\)[>xxnxx<=#M|{]+XW zuvLu-J}< : +@@@@@@$$B%88&8&WMM*ahbdOJ0qpddkkkhhaao*****##########*o****ooo**********#M###*ohhhakkbppqqqqqqwwqqwmwwbn}~; -+ :+>\\)[ +@@@@@@@@@@@@@$$B%888&M##MMM######MWWW&&&&&&&888&&&8888&&&&&&&&88&8888888%%%88WM##MMM##*oooaaooooooaaoaohpp*adZ/ck#&dbw + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +Qb0u+ : ; :: : : : : : , : : : : / : :  +xv>+ : : : [>x@ ,: | W: : : > : , :: : : : : = : :  + ; : : , ) /:: : : , : \)[ , : > (, : : : :  + ; : : : | : : x@/ , [ | , , , X :: : : :  + ;; ; ; :x : \ : : # , : , : : :: : : + ; ; :; : | : : \ :, : : : , ]: : < : :: ++ ; : : [> @ : : = : : W,) , : x: : : :  +; ; : : :M : :: : @/(}<=# : @ :: ) { : , , :  + + ; ; : : : : :, ( M : : : {] : @ , : :  + + ; ; : : : : (} , : ] : :x #M { , :  + ;; ; : : ; : | , = M :: [> : : M ] , ( , :  + , ; :: , : ; : : / < :: : [> (}< : W = : : : + , : : : :: ; ; :#M| ,+XW\)[>x@ , : :: : : , +X :[ , : : + : : : :W > : :; : , @x(+ =# :{ + ;\)[> } =# , : : :: #M : : , : :  +; : : :/ , : : :: {* ) x .n# XW + > ; , , W , : W /, :  + : : , ; : x. **=# ;{ * ) , <= : , , =# |{ ] :  + :: : ) , , : ; : ; |u + xu. +;}<=, { + : : : ] : x@ > :  + : : ::=#M, : : : : ; >z. *.xc.* . + x # : : : : , = ;  + : : : : :: : : : ; Mx .* + + #, ] ):: : : : : : : :  + : : ; : ; : :: : |{]+ :)[ *.. ; ..+ W @ : : :: : , , : : : : + : : ; : : : , /: =.* zv.xn. .+ /(, : , : : : ,, , : : : : +, ] : : : , : x : \XvnY*.x. *...{: : : : : : : : :: : : :  + , : : ; (, :| :<U uU...*+ > , , ]+XW , : : : : :: :  + : : ;; : =# : > <, : \*. * xxM : : : : #M| +XW : :  + : : ; , :: >x : ,@0wdqqZ0qwwqJXm)[ : /( , M|{] : : < |, # :  + ; ; : , : ; :; : / #MxUW*a*kaakkhpqmOn#M : : : :: , ):  + ; ] : : : : : : : XW\ [ohdkkkhbh*ahadqdO)[>: ; : : @ ,  + :[ / ; ; : : , ; W x@/(.xdohhbkhkdpkWhpqqwZwOUx| ; ; : M >x  + : { ; ; , : ; : {vuhdbkkoopZ0C0MhddqwZOmwZOzx@ : {]+  +: : ; ;; : ,>x <= ; ; :/dmwqbb0#M|{]+XW\nLLOqpwmOQQCYu]+ [ |{ XW  + :=#M : : >x@/ ]+ ; ; <vdwqdmzXW: : ;#M|{U000CLLCLv/ : #  + X : = > ;; ; >Xpmpq]x@ (: ; ; : @/u0CUUJUJ]+ ,\ = : ,  + , : # : ; >LUkqZY=#M ] : ; ; ]+U0q0QQm@: # \:: , <  + : : : ( : (}<=#po*wYXW : ; : : /(LppdbC{ : , ,, #  + : :: : ]+X )[ , _YJkL@: ; ;; : : | +~]\)ux : #M|{] : =#M|{]+XW : +(}<=#M|{]+XWnvn>x@/(}<=#M|{]+XW\)[>x =. ; ]+ : : + # |; +XW\)[zYYz(}<< |x]+XW\)[>x@/(}<=# ; W\)[>x@/(}<= +qBW##*oaaaaoooohbddpqqwZ0LCXcvccznnc\j]+uXzUUvx@/(}<=#M|{]+cUcxzYXUL0OZwqwwwppwmLYYUCQLCJUYXzccuxxW\.[*.n.nuuvXXJLQLCU +d@@@$$$$$$BB%%88&&WM##**ooaahhkkkbdpbkbdpqpppqwwmZ00QLQOmwpbkkkkkhaaaaaaoaaaaoahkbddddpqqwmmO0QQQLLLCLLJ.CYYLL]YX[{nXm +d@@@@@@@@@@@@@@@@@$BBB%B%%88&&WWM###****ooooooooaooo***oo****##MM#MWWWW&&&WWWM########*ooaaahkddddppqqqO[? +>}: #/+ ~ +d@@@@@@@@@@@@@@@@@@@@@@@@@@@@$$$$B%B%8&888&8&&&W&&&&&&&&&8888%%B%8%BBBBBBB%%88&&&888888&&WWM#*****ooaaoaqwk*pdjfd*B*hb + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +apQn : :: x , W : , { : , : , : , : :  +pLn ; ; , | : \ : [ :: : | : : : :  +0z* ; ; \ , : \) : ( : = M : , :: > : : : : @  +vn ; ; : <= : (: M| , : : (: : : : : >, : , +* + ; ; \ , , | : , |{, /( : + : < : :: : :  +; ;; ; ; :< , : : ( ) : :, , : X < : :: :  + ; ; ;; ; : : : |{ : , , :M : W : : :  + ; : ; , :: : : [ = M|{] : : { : [ , : :  + ; ; : , : ; :: #M {] X : : : [ : # ,> , : :  + : ; : : : ; : : :: : : : : : : ,/ : : : : , :  + : : : : #M| : W : : : : :: : , x : : : )[> |{ :: ) @/ : : + ; :: : M ] , : : : , : : :) : : : } @/( : :  +; : ; \ , { +, ; : #, : [ =#M|{]+ W : : : )[ x @ :  + : ; } ,, ; ; : ) >x : < #M ]+ ; ; : :: : ( :M :  + ; ; + , : :: : : = M| X \ *@/ : ,{ XW : : : : >x@/ >:  + ; ; /( , , : : : ;; \)[ /( + | ]: [ x@/ : : : : :: , : x <= :  + ; : : : : : : : : ( =# *+ + >+@/ }; # : : : : : , :: : :  + : ,: ; ; : : : , }<=#M| \ + ...+ *+ +XW ): : : : : : : ;; : + ; : ; ;; : : : }< + x + x@ :: : : : : ; : ; : +: : : ; : :: : | ] X...* .* M : : :: , , : : : : : :  + : : : \ : \) @ (.c*.. + \ [ , < M , , :: : : : : : :  + : ; ; / : , (: : _+v. ..* }< , : : XW\ /(} : : :  + : : ; : ]+ , : , ,+X > @/Xc.*. ] :[ /( <=: : : @ XW > : :  + : ;; : ; : ; : :x < |{]. * **@ : : : : : , , ::  + ; ; : ,, ; : ; : + \zCYdwbQdqdpZmzv+ :: ; ; : ) #  + : \ [: : : : :: (: ; >x }tY$oa#k*hhkbwqLJ/( ; ; ;; : /( W  + : : ; ; , : +X ;; ; : ++kabhhaaoa#*aakkkZnX ; : M|  +: : ; < : ; ; ;; [ _qaoaahbkkdqhMhbdbppdOz}; , X } : |{  +: : } : M|{ ; ; ; L#Mhdhhh*ooohhoBokdqwwwqw0zW\) +: : (  + : : : : ; ; ; +whkpbhdOzn<=#xncCmdbhbpwmwqZQx= ] W # ,+X #  + : /: : ( : :W ;xvbpddqLM|{ ; :x@/(}XZddwwmmmU\ : , ) : : =#  + ; : ; [ : x@ }<+#Qpwq+XW\: ; ; , XW\)0ZwZOmX<+: : # : ,  + : : ; =# ] : # +vrphwC{ : ; ; : , =#vkabomW : ) : , + : + : ; ; \) : W @1pWQC#M :+X : ; # , ;[j0kpY : +XW , , \)[>x@ : +;: ; ; : |{] \ : |ntCuW\ , ; W >x@/(}<=#_.*._ +\ x@/(}<=#M|{]+XW: ::/(}* +  +U[>x@/(}<=; ; XW\)[>x@/(}<=#M|{]+XW\)[ x +(}< X [>x@/(}<=#ncCQOZZpwmQY@/(c< #uzYXYYYXcvnx@/(}<=#M|{..* \)**n +@B8&WMM*kZCLUcczYLLLL0mppddpqppwm0Q00mQQ0LJCJzXW\)[>x@/(}<uJOmOZwwqpbbkhahahhhhhbpm0CYJOZZmZmmmZOO0QLLJLQCCUzv@ ( <=.c +@@@@@@@@@@@@@B$BB%8888&WWW&WWMMM#*ooahhahhkbddpppqwmmwmwpbkkhaaao***##MMWWWWMM#**aoahhhhhhhkkkhkkbbbdqdJ(OzcJM|.] XW\z +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$$$BB%%88888&WWWMM#####M#MMMWWW&&&8BBBB$B$$$$$B%%8&&&&W&&&&&&&WWWWWMM###*&Y~]-_]_[ x[u(+~ +&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&WWWWWWWMMMM#####M####MMMWWWW&&&&&&&&&&&&W#####MWWWMMMM######*******akk*obmjYko#bkp + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +J.+ :: ; ; ; : : : , , : : , : : : : : +0x ; ; ;; ; ; : : : : :: : : : : : <  +Qx ; ; ; ; ;: : : \ : : : : :: : : : (  +z. ; ; ; ; : : :: : , : ; : : : : :: x } : +XW : @/  +u. ; ; ; ; : : : : , : : ; ; : : , , : + : : : :  +. ; ; ; : : : : : =: :: / }< : : : : : : \ : :: : :  + ; :: : : : , , : : < W\ ; ; : ; : # : : : ::  + ; : < : :: : , : : ;>x@/( : : :>x } :; ; ; ; : W : : : :  + ; :{ \ : : :: ; : ; : : : : | X ,) : ;: ; \)[ , =#M : : : : + ; , } : : ; ; :: ; ; , : : [ = , , : ( ] X [: : : :  +; : X : , : ; : ; ;= : X + .> @ = , , : ]+ M| : : :  +; ; , x : ; X \ + ..(}<= M : : : : : : =#M| :: ; ;  + : |{ , : : (}<;# |{ W\+[ ,: ] , ; : : : : : ;;  + : : : :: : ) : , : ] X ) /uzx #M @ : ; : : := W : ;  + : : : : ,: : | , @ (} #M|{*.v J) x } #M ]: :[> (}< : +XW : : :  + : : : : : : , : ]+XW\Qmn*. c< #M|{ +XW [> ) , : , : + : : , , : X : : ,:> @*ux.Y0zX. +XW\.+ @.+ : , , : +,, : : : : , , |+ .vzO0u>; / .x. Mu{]+XW, : , : ,  +: : \): /(} : : , : { : )[>. *}UuLM.ux*+.un[> W , ,W ,  + ; ; ; :: : , : < #. * uJ.. +.(}<= + : , , : } ,  + ; ; ; : : ,, = : X \).cunxx.z..*uu , : :: : > , : : : ,  + \)[>x: ; : : , ; ( <=0x.cc.x.cXc>x, : : : : :: , : : : :  + (} ; : : ;; +: \Ynvuvnuunu# ; : : : : : (:: : : :  + :] ) ; :# + : :/ M ; ;( <LCx..*...\) : : : : : | : :: : : + : } ;; ; , / : : : @/ ; ; + WzuxnuuvYUL|{M| : : : : : [ , M|{ : :: +: : ; ; :, : : : = { ; ; Upq##WWkB&WW&#aL[> :: < , , W\ : : : : ,  + : ; ; : x :: : :\ [>: ; MCL$BWM&*WM*M###*0cM|: + : = : W ,  + : : ; ; : : :: : ; )XL8*o*o*o##*#MM#*odv>x@ , \ ;; : < \)[: :  + : , : : : : : : ::/(fh*W***oakbddqdMohdbbdZM|{ , } ; : : ( : :  + ;: : : : ; ; ; : , M|XOCbbkakbkbddmQ0pMbbkdmmwpX+x , M ] : : : : :: :  + ; ; :: : ; ; ; : : \)QkppqwpdppqOJx+XW\)[>xLwppZZ0M| : W\: : : , : >x@, : : + ; ; : + ):; ; ; : : + vYCCZwmZC\)[> |{]XQ0CJ[> : : : x : : + ; ; : @ = : :: : : |.x .ucCQzx@/ , x@/n0UJYM :: : : : ;  ++ ; ; :|{ : , , :; * ...}<= , )[ x | ]U0JQc[ : : :: W # : :  + ; ; : x , : , , ,(}<=# {]+ \) : : : , @JOmw=+ : : x@ < #M|{]+XW : :  +. ;: ; ; : : : , ; :: : : : {]+XW\) : : X : : :: :  +Jx@; : ;: : ; ; :XW )[ x@/(} #M|{ + + : :: : :>x =#; XW\)[>x@ ; ; ; +  +bmY{]+XW\)[>x@ ;=#M|{]+.*.. *./(}<=#M|{]+X *)[>xxnvvun..|{]+ ; : <=#M|{]+XW\.[>xnunxnn#M|{]+XW+ . * ~x<: MX. +8&MoohqqwwmOQUXXzXUL0OO000QLCJCJUUYUUcvcvuuczzXXYUCCCCCJUUYUJUYXzzXzcuxxn+uCQ0QCLLQQLQ00OZOO0O00QCCQOQq}+ _ {{ X|j)?< +M##*aaahbbbdpdpqwwwwqwwmmmmZOOO0O0QCCCJCCCCCLLQLLQ00QQCU. zJL00OOZOOOZZZZZZZmZZOZZZmmmmmmmZmmmmZZmmZmmmZOmdwwX/LboodkU + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +Mwn ; ; ; ; ; : : : : : : : : ,  +#Q. + ;; ; : ; , : , , : :: : : : : | XW > : =#M|{]+ , )  +oqc + + ; :: ; : : : ) ( : : ; :: : : : : : :  +ZU.+ + ; : : :: : : } : : )[ @/ : : : : =# W : : : :  +n + ; W: : : : , :: : : ]+ : ; : : : , : : : :  + ; :x@ } : : , : ,\) , : XW\ / ; ; ; : : , :\ : : :  + ;; < + : : : ] : : : |{ , :: : =# ]+ ; ; : +XW\ > @/ <= : :: : : + ; : : ; ; : ; ; : : : ::) /(}< ,] X \ \) : : :: +; ,( : :: ; : : ; ; : >x : : M = : : :  ++ : ) : , { + , : : : : |: / : M :: : : <= : : :  + : } : ( : ,,W : , ; : ( , ; : : :: : \ : : :  + : : : |: : , :,+XW; > = ;+ , ; : : : : + : ;  + :: : : : , : , \) ; .(} {] , < : : : : : + @ :: :  + : , :: : > : x,/ :#M {] \)[vu@/( :: | \: : =#M {]: : @ , : : + : ,x@/ < {]+: , | ) >x@ +}z.xc*Un+ ,\ >x@/( = : ]+ ( : / =# : + : @ , ; :, , <=+M|{ZQ.. +.Xx@ =#. ]+X , , ):  +; M ) / : : : , + .cu*Uc x..c|{]+XW x@ , , > ,  + ,[ @/ =#M| : : : : , \ ++. xzXOXxn u.+.u@/( <=# < , : ,: ( ,  + :: #M| ; ; : : , # ; +..+ .uQXL.x* .xz+X > @/ = , : : : : ,  + : ; ;; : , : , XW : @ uv.. * zz.x. .vvx@ < : : : : : W : , {]  + x }: ; W : : + : M {.zUzux..v*..vv=# , :: : : : : @ : : :  + # ; : :: / ; )[ xzJnzUn.* zzzYW , : : :: : : { W : : ; + , ; ; + \ : : ] ; =# |UYxvvvnuv.nv( : : , : : :: > =# : ; +: < , ; ; :<= , { : : # ; ;; _>xLCxx....*.] ; : : M X: : } , ) : :  +: :: ; ; ; ) : : ] XW ; ; <M|YvnnvvvXUOt1(} { , ( : :X , :: :  + : : :; ; , # : : : : : \bho##&hM%WW&&#dOXW\) @ < : : (} : :  + : : : : :: : ; , : : }@%@B&%&&%WW&&&WoOz}<= , W x : : , x@ : :  + : : : X ; ; ;; W >, : {]OW8BWW&&8&8&&8%8&WMdxW\) : :: : : , : : :  + ; : : @ : ; : : :: : [bk&&%&8&&WMMMM#8$&M####Z)< : : : :: : : : :  + ; ; : M : : : : ; : (}<bW#MW&&M&&8%&*bd*aa&W*aaoonW; : : : )[> @/ = : ; + ; ;; : : , { : : ; :|{Yd%&##**WWWW*qu#M|{]+X)zw*#akaC_ : : : (} W :: ;  +: ; ; < |, x : : \)m#M#o*#M&WhbY]+X : :: <\Cbbdbm} : : #M|{ : :  + : ; :W : ,} X : /(0Yc0dko*&oUu)[> : : ;~XbqwmQ(: : W /(} { : :  + : ; ; : : , : M|kkOXWOka0x@/( : : : : .vZpwmZQ+ :: , { : : : :  + : ; : : : : , ] : )WMW*W#O<=# : : : : : WLMo#*X/ : : , : :  + + : ; : : ; : ; }oMM88d]+ :: ; : : :>x@ (>?cUmL{ ; : : ::  +. * ;; : : : ; + .+{ XWC*U +@/(}<=#vcccvvx\)[>x@/(nnncJLCLx+W x@. <=#M|{]+XW: : , |:; ; +OLc}< ; ; :: : + ...nvczC[>x@[(LCUQO00OmwwqppppppqwOLLOmwqpppdpppppdqQx1~M vvXzzcvu>x@/(}<=#M : > /nc +#*hqCW\)[xn@/(}<=#M|{nuczYYXuzYJCJJLQOOwqmwpppdbkkkhaaaaaoaaoooooooo******ooahbpq0c)[cCL0OOOOOO00QQLJYU[> @/(} ,#M({;  +8&W#*hkbdbdpwwmZOOOQQLLLCCJYXYUJCCLL0Ommqddbkhaoo**#######MMMMMMMWW&&&&&&&&WWM#ohbqmmwpdddbbbdddddpppppwQ0wm0J(rmk*qpZ + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +B&kLn ; + : : : , : , : : \ : : : : : : :: : :  +8*Ox+ ; }<= : : : : : [ :: : x <=#M : : : : : : : :: :  +WM*pC. ; {] : : : : : : : : : : , : M| X: > }< : : :  +oakqUXW, : ;; ; : : ; : : } M| : : : :  +dqLX@/: + : ; ;: : ; ; : ] x : :< : : : +OUnM| = |{, : : :: : \)[> : W } =#M| : W\)[ ::}< : : : +nW : | : :{ : , ( : ( : : : : W\ }: : :  +; :: { XW\: : # , @: , < : + : ; ; : : X :: :  + : , :: : , , , , ::/( : : : : : :] } : | :  + ; :M {]: : @/: , : : :, @/( : :W\ x  + : : : : \ @ <= :: x@ |  + : ( #M : : : : , <=#: +X : <=#M W\  + : : ; : : : : {; \ :/ , : W +[> ,  + ; :: ; : : : : , x (; | ]+X*\)[, / }<= M|{ X x W  +; (}< M| ; ;: @/ # : : + : >x + x= W\+ >x :( : + /:  + [: : = > : = =# + X \ @/ }<= |: : : : : : : M|:  + # : W :: , =:M ]+ .*. +(}<=#M| ]+ : : :: : : ):  + # ; }< : : = X: >; .u.. n * [> @ : , , : :: M , (} :  + \ ; ; : : , @ : #+ + .nn+.. +} M , : : : [> :: , ;  + } #M|{] : ; : : : :@ : \ + u* +] X : , : { : : : : :: : + : : : ;; ; : : : {] , ( < | *. >x@ :: = : , : : : : : : : +; : : ; ; ;; ; ; : X ;) .+ .*#M| ; :: , : , : : : : :  +; : : : : : ; ;; M| X , *. .*. .*..)[> ( : ; :: : : : : : :  + : : : : , ,# : : :: ]n zn . * .x#M| : : : : : :: ,( |{ : :  + ; : : : M ) : : ; , :x@/.*u=xnuzXQLZmmCnx@ : : : : : x ;  + ; ;: : : , : : ; : qo#&W8o*B*o#ok*oOu{]: : : : : : x M ;;  + (} ; ; :: : : : ; : >xY@M*#M##M#MW&#*##hJ@ ; : : [> /(}< | ) ;  + ; ; : : :: : : @ }<=#>h%MWWMWMM##M%&M#M*#kv];; ; : <= : @/(} : : + ,@ ; ; ; : : { : { + /do8&&&&8&&8WM&$MM#*ooakc@ ; :: X /(} : : : :  +: ; ; ; : : : x@/( , :: :>xL-qWMM8&%8#hOUUwkW8&#o**oakz{ ; : / , : : : :  +: ; : : : : ; : : : <=\MMWWMW&#pC>x@/ <=#M0*W*#**aaJx: : : :, , :  + <= ; ;: : ; : ; ; : : -ub&MW##k0(}< ;: : [>L*ooooahx; : = : , : ::  + : : :; ; ; ; ; \; <xpa*b0XOM|{; : : ::M|Zp*ahhY[ : # : x , : :  +@/( ; : ,x ; ;; ; ; (}1{mpqqU_XW\) : : | W {QMooakU#M: : , = {] W :  +|{] : ; ( | ; ; ; ::M ]]U0C0[>x : M : MO%W%&v\ x , , { : : +X>x@/ ; ; ] : ; ; :\ >x. *< : ] , :=#M|{] :\ >Xqqbc< ] : : : +kq0Yv]+XW\)[>x@/(}<=# ; : :( M ?n; ; x@/ <=#M +XW\x[>x@/(xvXnXCvx*XW\)[>x@ (}<=#M|{]+XW\)[ @ ( ;  +&W#**ahppwO0QQLCCJJJUXccv@/(}<=#M|{x+XW>+[>*@xvu<=#M|x]+XW\nvczXC0ZmmwqpddbbkbbbkbOfxQUUJUYzzzvuczzzccc( .* . n+ \*x +$B%8&&WM###**ooaakhhhhhkkbdppppqwmZZwpqwmZ0Zmwwwwwwwwwwwwwqqpdbbhhhaaooo*##MMMM#*aaoadppppwwmmmmZOOO00m]+> +<, @/|}>  +@@@$$$B%%%88&&WWMMMM#####*ooaaaaaahhkhahhaahaaoaooaoooaao****#MMMW&&&&8&88%B%%%888&WWM##*ahhkkkkbbdddbbqO0qwOJ)jZdhmqO + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +8aL*....* | : ; ; ; ; ;; : +X : : , : :  +&bX +XW\ @ : ; ; ; ; ; : :> (}< : ] : \ : :  +M#hOx x@/( : ; ( ; ; ; ; = W:: @ , : : |{ + < : :: : +akqY=#M \) , : < M : : ; : +X : :{ : : : : / , : : +OY+X : } : :+ , ,# : [ x ] : x } :: : : : : :  +>x : M {] ; : @ # : :W ) >x >: : |{] x@/ : :: : +X : [>:  + ; : ; : +X : / /( < , : : : ], : / |  + ; } M: : >x , M|; : : : #M|: X : | , [  + : : ) : : : W #M ]+XW\ ; ; :: : > @ +X ) ,  + : : /( ; ;; ; : : : : ; : :  + : : ; ; : :: : }< ; ; ; x : : { (} (  + : +X \) : <=#M ]+ : : } ) +....*..| ; \ , <=# : ,[> @, , | :  +:> , #: X (} = M| ] ;W [> / } # : : : : : ,, | ) :  +: W: , }< : (} X \ > :/ }<x M| : \ @: : : : : : @ (} :  + @/:: ; : : + @/ < # | ]+.X .[>, :< M| ]+ : : : : : / < # : ;;  + } : ; :: , , : | ] XW )[zx.* .= M ; W\)[>x : , | XW : : = M| : : ;  + X : : : :, : x /(.* cQYnn.XW\)[>+ x < : ,, : : : : : :  + : | : ; : : : : , | ]; ..XCnv. znxvn x]+ , = ]:: : : : : : : + : , : : : : : , x <uxu.*x.. *)[> : : \)[> : : :: : : ; : +:: : : : : @ ( : : W\ , = M| ;XW\)* +}< : : : : : : : : ;; ; :  +: : :: : , : : : : [> ;/ } * +]+ W: : : ; : : : : \) ; ;;  + : , : : , : } #+ ] + .nx <= ,, : : : : : [ # ; ;  + ; : : ,: : : : \)[ * ...*#M : :: : : , \: ;  + ; ; ; ,| +, : :: , , > #v* * )[,x : : : ;: M )[ x@/( : :  + ; : ; ; : , , : x@ ,: \). ..*(nvc|?|{ : : x@: : +XW } : : :  +# ; ; ; : : )[, , > @/ZrZpdoqh#oo#adX>x : # { : : + : :: : : + [ ; ;; ; : : :M , : |{LC@8#&#MW*#MM#odJu{ : \ ; :| : : : :: +}< ; ; : :: : ; : : : : )[u]w&o**M#W8W&88&WW*Ox@ = ; : [ : : : :  +: ; : : ; ; ;; ; : : :} )kaM*M###**#oo8&W#MMMoX~] X ;; : : : : :  + ; : : ; ; ; ; ;; ;]0XXkka*aMMMW&8&&@B88W*ooMq|@ : : X @/ : : : ;  + : : , ; ; ; ; : ] W [1wbppqqdka*hdZUn\[[jXYp#WW*#MJ{ : : } , ::\ : , :  + >:: ; W: ; ; ; : > /(}<QwZmmqkkw0n[>x@/ {]CZ*Mo&a{ : : : x@/( # :  + , ; } : : ; } M|{]0qZmmZZm@~( : +XW , @/)OWaMd|{ , ) , , : : + ) ; < + :: : : \zXYqZOwz<=#M : : }< : {*+aWoMLnx , , # : : + : ; X >x ; : :: : ++d#h*qx+ : (: ; : :@/h8BWYM : , : / W, : :  +] ; :( # ; : : }<=, | ]x.Qkqx> : , ; ; : -C0Y?: /(} ;; {]+XW ( <= , :  +x@/(}<=#M|{]+XW\)[ ; ; \) >x (u< ;; +XW\)[>x@/ + #Mn{]+XW\)[>n@.[<<=#M|{z+XWnvzXzvn(}<=#M|{]+XW*) .*/( +*kbkhhkdwZQJUYzzXzUYYXc+XW\)[>x@/(}]]zu|{.*nzUYXcvczYYUUzvcccx WzQOmwmwwqpdddkkkkapOpwqqmZmwwwwwwwwmmZmJuOJJZX[O=?|nLZ +%%8&WWWM##**oahahaaaahkbpppqwwmOOZ0ZqZZZZwpdpddbbbddw0zJmwwmOU/XZqkaaaoo*##MWWWWWMW&WWWWMMM#**ooaaaahk*z=-<<]- W+j[~~ +@@@$$$BB%888&WWWWWWMMWM##***oaaaahhhaaaaooo***#####*oadbhaoaoo****M&&&&&88%B%%%%B$$@$$BBBB%%888&&&&WWWW*bd**bmtzo8@aob + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +wMwz. + x , : | : : , } : : : : ( , : : : +whz : # ] W @ : , + : : } #M , : : M| : , )[> : +Z*qU ; W x ( M : , / @ ;: : , : : : \ + , M:  +J0u> ; =# ; +XW\ : M ; : x #M @ ,  + < ; ; ; ;; : :W : : : :  + ; ; ; ; : :: < : ; ; ; = M , X  + : |{ ; ;x@/ } : W\ } ; ; ; +X: [>x / <= ,, : | x@  + ; \ @: W\) : }< + ;; ; ; ,X \ [>x : : : , : M <=#:  + ;: } , : >:@ : X @ ; ; ;; : : : : , } : , / # :] : : + ; | ): ; : { W ; , | : : x@ : : :: : : , : : < | : : : :: +: ) }: ; ;; : : , [ ;/( ; # {] , ; :: : : : : : : :  +; | ]: ; ; : :: : : , ; : , +: : : : : : :  + : : : : : : :# ;)[>x@/ : ; ; :[ x : :: : : ; : :  + : : : : : : :W }<= +*{] X )[>x # ]+ : , : : : : :: ; : :  + :: : : : ]+ : x X. + .x :(}<cYMc{]+ >x } : : : : : : ; ;; ;  + ; : :: , (: , )[>x (* .M {Qv.*..Cvx@/ =xM|{] X: : : : :\ ; ; ; ; + ; : : , : : ]+. .u[>LUu.. u* { Wv + x :: : : : ( = : ; ; ; + ; : : |{ @ :: : : :@ *nunQCuu Wu) >x@/ }< : : :: : { : : ; ; ;  +; : ; ; : :>x , : {.*. .*c.@/(} +. ]: : x@/: : : [ : : : ; ;  + : ; ; : :\ ,@/ : >**.n.+ : + n> ; =# : : ( : :: : ; ;  + :; ; ; : : = , M|..zux. ++x@ +..=#: , > : : , ; : :: ;  + ,]+ : ;; ; : \ } , : > XU..u* .*uxW:: : ( : : M : : : :  + :> : ; ; :: : : : : ; xuccx*....*.u0(: : ] ) : : M : , : :  + , M : : ; ; : ;; : = ; )C XC*...* .Y] : @ , :: : , : : + : : : ; ; ; : + )[; :<U#.n....*...Xx@/ = M : < , , : ; + : : \) ; ; ; : # :+ 0Waah*Zhkkhampk{ ( : : \) :M : : ;  + :: : /( = : : ; : , XW : /ha&*aMb*kbkkdwmzx@/( <= + : : : , \ x@ ,, :  + : # \: : : : W : :M|UpahpdpkbakaoahbpOv{]: \ @/, : , :  + : W }: :: : : = : \J[QqpqpqwwwqqpoobqwqqmX@/ ,# :  + : ;( {]: : : :: : : (CLQ00mmwdddpwOChhpddqwZmmJ]+XW ,, { :W { :  + }: : + : : : : : :: |{XLUCLOmmQX/(}<=#M|{]xCZqqm0ZJ/(}<= : W\ ::( ,  + X ; : : M { W\)nCUULCJc=#M|{ , > @/(}<YZOZmLvXW , : : <=  + :: { : /(}ccXCU{]+X :: , : XWmmZOZZZz} : : : # : :,  +, : :x } : : |vcXzv\)[:x@ , : : :: }<Lahkao+ : : : , : ; : #M  + @ : |{] : ,/ )nzCOZx}<=:M : : , ,XWQZkaMU; : : : ; ; : )[  +<= : : : | <=#xX{] : ; W\ >: }<=#[\{ :: [>x@/(}<=#M|{]+XW\)x>x@/(}<=#M +XW\)[>x@/ <=# *+XW\)[>x@/(}<=#M| +X \+;>x@/(}<=#M|{]+XW\)x>x@/(}<=#M|{] , x (}<vJQZwwwwwwwwqpppkqpdwmw00wqmmZ +ncnzcuxxvczYCCCLCLCJUYXcvxx{]+.*...>x@/(}*xxxxxunnzYUUJCLQ0mmwmZmmZZOO0LCYv@/(}<=#M|xcLmpdbkha**#MMM##MoY*ddah)ZO)\YQh +Z#hhkbdpppdddppppppqqwZ0QQLCCUJJUXXXv.nzYLQQ00ZZZmmwqpdbkkkhaahhhhkkkkkkbdpdqmmmmwpkhao**#MMM#a#W&8888Box(>?_(= :|t_ - +q%MMM##**********oooahkddpqwwwmmmmZOZZOmwpddbbbkhhaaoo**###MMM###MMM#####*oo*ooooo*#MW&8%%%%%8#&BBB$$$$B#*&B**unoB@8W* + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +kmX ; ; ; ; : :\ , : ; , : ,  +wUW : @/( ; {]+ : : <= > ; ; : [ =#: ]+ / , :: : X,  +Uv ; # : [ ( : ; \) # ;; ; ; < X : : <= : : :: ) x@:  +. ;: @ : +X : : \ : : :; , [: : : : , : : x@/ :: :  + ; , W\ [ ( : : ( : , : : :: : : /( M : ) : : : :  + ; ] W [> : # { ; ; @ {] : :x = : : (:: | : := : : : :  + : ; ; : ; ;;M )[ : : , [ ; : : : : : , , : + : ; ; : : :\) }< ; : x ; : ,= X : :: : : , : +; :[ : ; : : :(} { : : :: , W ; ; , : \ , : : : :: : : :  +; ;: : ; : { : : : , , ( : ; , : : : : : ; : :,[ :  + ; : :: : , [> : , : : )[>x , : : : : : ; : : :  + ; : : \)[ :: {]+ : , |{ , :: : : : X : ; ; : :  + ; : : #, ):: : M { +XW @/( = : X \)[: : : :: [ : : ; ;  + ; : : : : : :,[>x #Mn{]+ , : }<: : : : < : : ; ;  + : ; : ) # : >x@ : # |{]+X \ .*.c/ : ] XW ) >x : :{ : :: ; ; : + : ;; ; , , = , [>v@/v.u.* .{ ) > @/ } : , ; : : ;; ;  +: ; ; ;; : (} , , < #.x.uUZYvu. x@/(}+ .M { : : : M \ ; ; : ; ;  + | : : ; : :: : / , W\)* .uX0Uz.+n +XW\ [ ( : /(} #: ; : : ;  + : : : : : ; ::] X ) : }<=. *.u.u* x ( , {] : ,= ) : : : ;  + =: : : : ; ; ; ( =;; + W\nx. +x :| + ( : : \) < : : : ;  + ; ; : : +XW\ ; ; : : :/ }<Xnux* + [ # : : : : M| X : ,, <, :  + : ;; ; )[ ; ; : /, : ] XU. .x **< # +X : : : , , /(:< \ [:: : + ; ; ; : : : : : x+/(z.*. ++ W ) :: : ,+ x , : : +: ; ; , :: : : ; : M| ].+ +x / : : + : : : [ :  +: ; ; : : :; ; : \m(vQLzJCJQLY|{; : | , x : #M :  + ; ; : , M|{]+XW :: /L&obowkppdd0Qxx@ < : : : , :: |, :  + <: : ( ; , } : }hwwppdpqbbqdqmZC{]: : : : : \ , , :: : :  + +X: :: , ; , } : ) ?QddppqqqmOqakqZOmOQU@/ : : : : : , , : , ::  + : ; ): ; : :X : 1#dZqpdkkhkdq*#pmZOQCJUu]+: : : : : : : : :  + ] ; @/( : : XW\ [ : |: }dwZZppwUXccnuzLOppmmZ0JXzvv(}<= :: X : : , : : :  + , : : ; : @ , , @UmwpwLx|{ +X )[>x@/(U0OOZQJJCJn\) #:: : : : : : :  +: : ; : , MQwOZnW\) > : : :+XW\vYJJJUUJ<=# ] : : :: : : : :  +: : ; : : >x@/ _ )mQq@/ + W\ : : =#MXO0LLX\)[, : : ]+X: , }< { :  + ; :: : : : , (}qpZv| ; XW <:: : :[>0kbhq<=: : : ( @,,  + ; : : , : , : {]xoLc) : :< ]+ , : :; ||L0CW\ : : : <  + ; ; : : , , :+XW >[(/U} : : )[> : : ]+ \)[~. +( < : x : |{]+XW\)[>x@/ +#M| ;\)[; }<=#M|{]+XW\)[>x /(}<+~ : ; ; ; # |{]+XW\)[>zYUU0OZmmLJJ{XW\)[>x@/(}<=#M|: +X )[>x@/ }nuvzzz +*pQYcuzXuvvczYYYYYYXzzzczzzzXYYUUJULOQUYz>xnuvcvvvvczzzXzzzUQOwqqqqpbkbkhhhkhkkbpqmOOLJUUUYUUXzcccvvn/n} XvX0c?QX? xLZ +@@$%&&MM##**oahkbdddpqqqwqqwwqqppqqqwmqqddpqqqqpddbdbbkkhhhhhaao**##MMMMWWWWWM#*******aaaaahkbbbbddddqkuX_<>?_ :/~f<~~ +@@@@$BB%8&WMMMMM*oaahkkkkkkbkkhhhbqwbbkhaahhhhao***o*######MMW&&888%%%%%BB%%8&WWWW&&&&&WWWWMM###**#****hdd*adZtcaWBhob + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +ZUx@; ; ; , } ; ; : / : :: : : : [ : : :  +u#M|, )[ ; : M X ; ;: + ; ; ; ,] ) : : {] W:: : : [ : :  + \) (} ; : , x : ; { ; : : :x < |{ : ) } : ,,\ : : : :  + { ; ; : : ; [> | : ::[>x@ , {: x : < : : : :: : :  + XW [: ; ; : ) : :<= ) ; :< : , : : : : := ] : + ; : ; ;; : } ,+ (} ; ; X } : :, | : : : : : : +; : : : : , M| : : + : : / < ,{ +X, : : : ; : }: :  +; : : : : , \, ; : x : : , : : :: : : ; ; ; ;  + ; : : (:< @/( : ;; : : , : \) : : : : :: : ; ; ;  + ; : \ M : \ [> : = | , >x ( , : : : #M|{ , : :; ; ;  + ; :: : , XW\ : } {] X < , : : : , : : ; :;  + ; : : # , : : XW\)[ .@/ , ,: : : > , : : ; ;  + ; ; ; : : , : W\ x@ ..=# ]+X , , W ) :: [ : : : ; : + : : ; : : : / |{]+XW xcx(}< \ : W # : : : ; :  +: ; : : : , :[ x, ( =#M n*xXW @/(}<=# : : :X \:; ; : ; ,  +: : : : ; : : # XxZc.** .( =#M| . +\ > , : >x < ; :: ; :  + : :: : : ; ; =#M : )[ x *xvJmUcc.]<X..++ . ; | : : X : : ; ;;  + : : : :: ; ; : [ x : # | .ncJZCX.+Y + M|{] , ) : : : +XW : : ; :  + : : : < |{ ; ;; ; = M : )[>.. *}XnY. ..+ \ : : :: : : <= M : : ( ;  + : ; + , : ; :\ ; ; #Mnx. *c. ; ( M : : @/( : {] : x: }< + : : + ; ; [ : : : : : ::W )[zvcux .. + {] : : : @ : : +;; ; ; #M|{ : : : : ; : } =Un.xv. .*..>x, ,#M ] ) M : W : ,  +; ; ;; : : ; : : : : + \Yxx.. *<= ;: + : : , : , ] )[ : ::  + : ; : : ; ,/ <=# |{ + : @ (}n* ++ : # : : : , : , : :  + , ; ; > : : : #Mb0mOQJOQL0JJ[ : : : : :: : , , , : : ,  + : ; ; : : : @ : WcdWM*#aa*khaqqx ; : : : : : :: , : : ,  + / : : : ; (, : ] : xYobppdbhdaobbbmY@/( ,] \)[ x , : : ,, : : : >  + M {: ; ; : \ =: [Zakdqmpdqmqo*kpqdqC]+XW : : : : :: : : + : [ , ;; ; ; , )xxZqpkkkbhakdh8hddqmOOLc(>< {]+ x, : : : : : : :: +: , ; : ;: :M|{ +X +kkqqdddddOu[)x@nvLLZwwmQCnXW\)[: : : : : , , ] , : :  +; ; : { : :: , +Cpppdpdwu( |{]+XW])nUCXvJCv=- ; :: : :#M| :  + ; ; , : : : ) x@bpdpqdv|{ ) , @ : #M|{xXQQJ)_, : : :W , >:  + ; ; : : : , ; ( #MOpwqZn\) x@/( : {] \ /J000#? : : : ,, |  + )[> ; ; : ; + \YaahoU(: ; :: [ + ]cdpkw[ : : :{] /  + ; ;; : | ; :(CQWM&Y{: ; ; ,M : +t0wU#M : \)[ {  ++XW : : : :W : : ]cQm#x[ : ; ; : )[ x :=#M|> W ( |{]+XW  +@/(}<=#M|{]+XW\)[>x /( M| :: ?[>x.* } =#M|{]+XW\)[ /(}<=#M|{]+XvC00OQz/]}<=#M W\)[>x@/ |{]+XW\)[x../(  +WabbkkkaahkbdO00QJzcx]+XW\)[>x@xnzQZqpmQv+YLCCOmwpqmOQCJCLQZwqwZ0QCQmppdddppqqqZLYcu[>x@/(xnxxM|{]+XW\) .cucQ}}C? ;  +@@@@@@$$B%88&&&WM#oakbpQJZppddkkhhhaao**#**#########**o****ooo**********#M###*ahhhhkbdpqqqqqqqmwqqwwwmh[+:~ }+, \?(><@ +@@@@@@@@@@@@$$$B%888WM##MM######MMWWW&&&&&&&888&&&888&&&&&&8&&8&88888888%%%8&M###MMM##*ooaaoooooooaaoaobpd#kbU|LhW#phU + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== + , , : : , , ,  + , : + ,: : , , , : , ,  + : : , / , , , :, , , : : ,  + : : , , , , , : : ,, : ; : : , , , +:: : , , , , , : : , : ;+ : , , , , / , , ,  +: : ,, , , , , : : : : ,{] : , : : , , , ,,  + : , , ( , : , , , : : , ; ; , , , , ,  + : , } ,, : , , , (}<= M: : : : ; M , , M  + : , , / , : ,, , , { \ [ : = : : ,|. ;; ; }< , +  + : , , , : , , ,,) (}n=# : W\)[ , , #M|{] )[ ; : \  + ,, : , , , , , , /( |{]+Xzn): + <=#: +XW\..*x@ , <=.; , = , + , : :: , , , , , # W\)[> + vx<: M ++ + [> @/v. + , Xc\; ; (} ( ,, +, , , , , , }+@ /{>#(]x + X|[=/{ ;(] + #(]x\}+@)#(] , ) ,  +, , , , , ,, #(] +@)* + < =; >#(;x\}+@ |[=/{>#(] \} + ; : \  + , , , ] , :=/ #(]x\+ ; |[=+ (]x\ @ X|[=/{>#(]x\}  ]x\ ;+ + : ;  + , , , , : );X|[=/{> + + .X|[=/{>#(].\} )#(]x\.+@) |[=/ ;# ]x\} )#(]x\}+ xzX|[ /{>.(]x +@)XY|[=/{* .c.\} ); .*/{> : x\}+ : , x\} ,  + , , ,, , : (]x\}+@Xu.|[ *.xnnnx.}+.zzX|[=. > x\}JC)<&|[=/{>#(]x\}+ )#(]x\}+ : : , : : + , , , , ,, >#(ZJCJv@ .*nxxxx..nx*}+cXzYY[=/ ..*xu\}Y@)$MhdmQC>#$]x\..@)< +/{>#(]x\}: : : : : + , : , : =/{>#UQx\}..*.X|[=/ >#(]x\}YCvcY|[=/{..(]xcC+@)#(cx\** )<+.[=zvvXU]x\ : : : :  +, : #( , : [=/XCz(]...*...**.=/{>#Xzcu}+cCn..[Xn{>#(]JqZ+@v<LCY=/{>0Q]x\} )#U]x\}+@)XX|[=q{O#(]x\} uCOQ|[=uX># ;; ; ; ;  + :: ,= > ; @)<LJcccvvvuuunx+@UCX|[=/YQOOZL\}+QC#(]x\}+@)#(]x .+@)OQ|[zX{ + + ;; ;  + , { : \}+@L#OmL\Q+@0qdw0X/{>#(ZC\mkabdw|[=/{>J0dhhdpdd<dk[=/JJv(]x\}+@)UZ|[= + + +  + , , ] |, {>#(Jx0ZOQLQ0QO=/bm#(CZmQ+@O<CUvun{>#LZpppdbk#(mqq}+bhoM|X=/XXz(]x\}+@)#qqO\}+@mqkM*d/wmQ(]wpqm0C#qqx\hhaadL|[Y0Q0QQZwbkbb)#(nv.}+@)wbhx\}+UXczLwmw0>#QZx\}+@czXQZwhd0Xvcx\}k@)<...*.. * +  +, ,, , :}+ cJ]x\h+@)..*...**...*.. + , , :] }+@xpkpx#8+@)XXXXXz+Qq<bp[=wdmOCUx\}+nn ]x\C+@)aX|[*M*abh&%#MWW*kq|[=Zwqm(]x\}%MooXO[JJJJJUUU\QqpkhX|0=L0OZZ0C\}+@uvXczXJQ0#(]x\}+@..*....*... + : , [=/{>#qmx\Mh@aM&Mak/bkWW]x\*#a)<w|[=/b*#*MM\p+@)QQLLLLLLLLCxdkaa)mw|[=/{>QOwb\}+YLJX|mq0{>#(]x\}+@)<..*.... + : , X|[=kbbk#W#\&B8*#(]x\}00000Q00QQQQ(pk*o+waaX|[=/{>#ZqmOLC0OZdap=/{>W#]Z0LLLLLUXcvu + ; , @vkbbbhM8&8@B8WakkkbkhaWM#**o*MW8$$&*kpwwwwwwqwwwmmZmmmZZZOZpa#MbZdkbkdmLJJYXXUQLUXzJQZbdQzUmdwLUYXXJp##*ap + ; ,, :|{JhbaWB@@$8MM*aaaao#MW&88M#*#&%$@@Wkddbbddppppppqppqqqqqwwwdh#WkphkwmqbhbmLUJJUQmwLXzXCphZzUmbbddwCcvJmdp0 +: , , x@a&@@$B&MM***#M&&&WMWM#o*##M%@@@@BWokkbbbbbbkbkbbddppppppkoM&opdhhbmOwbkZ0QQQLObaqQUXYmhwJQwOUQqpqZCCL0J + , , # |U%%&WMMM####MW8W#*oaaahhh#B#Oh@@@@8M#oa***ooaoooa**oahaoMMooM##oko*kwZZZqpwZZZwhoadmCYOwCXJYcczXJQ0QQJX + , , , >MWM#MMWWMMMMM##***#MMW8B#J<M|a@8ohhho#WWMMM****##WWWWWWM#o*MM*kko#M*aakbkakqZZOmqbhkwCXzccczzcczzccczc + , , , #qk*&&WWWWWWWWWMM##MW8&q+XW [>kWkhaa#&8WWM#*oooooooooa#WWWWWWabkbbbk*&&MM#*ohkpm0Q0mdw0QCzvvvuvvcccccz + , : , \)[>xCaMWWWWWWWWMMMMMm>x #Mp#ao#&$$8W*oo**oooooooaa#MWWWMokkkkbbbho#&8W*aoahbqwdhkmQUvx.xxxuvcczzz + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== + : , ,, , , , , , : : , ,  + : , , , ,, , : , : :/ , ,  + : , , , , :: , , , ]+XW , [, ,  +: , , : : , ,, , : ; : , <,, ,  + , , , , #M|{ , , , ,|{]+; : : : M \ , + , ,  + :, : , : W @ , , W / ;; ; ) | > ,, ,  + : : , , { , , { : : : #M| , , ,  + : : , ,, { W x : , [ ; [>x , , ,  + : : , , ,,= | , <=# : :\ : >*+ ; |{ , , , + , , , , , ,M : > ,, < +XWu)[ :}<=#M| )[>x@ , #* : : x@ , , +, , , , , , [ @ } # ,] [>x@ (cv= ; ..\)[> (}<=.. { \. ; : | , X , ,  +, ,, , , , , | ;XW\) } ; +x.\ :; + M {]ux + (nn= : +: : }<= , ,, ,  + , , ,, , , } )< + =.{>#(]x\ +@)# ; ,  + , , , , /{> x +@)#(]x +@) X| * {>#(]x\} @) ; + ]x }+@:#( XW  + , , , , , > x\}+ .*|[=/{>#(]x\} @)#(]x\}+@)<+ [=/{>#(]x }+@) + #(] }+@) + [=/{> + }<  + : > , , , = >#(nx\} .*#(]x ;+@)<*.../{>#(];\}+@. X|[=/{># }+@)<+| =/+>#(]x\vu@) .[=/ ;  + : { : @) X =/{>#X]x\*+@)# +x\}+* <.vcz/{>#(...ux@); .x*+@ *X|[ ; : + : ,W / : \} @)# ]..*...<Xc[*/{>#(]x\}+@)#(*.\} +)< :: :  +: / ,: : \}+@QUXUCJLJcvJ0UzYCY)<CmLv/{>..*..}+@)zX|[&adwQJ]xB}+@)#(u + +@ : :  + ,{ , #( x\c+@)#(ncJUc@0C(]x\}UL)....*}+@)+ |[=/{>#* }: :  + ), :{ (]x\}zXXXcx*=.{>#(]xcCL@)#(]x }z0C#(]C\}z@)+ [**{>#( }+@. X|[=/{>c(]x; ;  + , +, ,[ {>QZmmmwZLYuX|[=/{.#(]OOYnnuuX|x=/.*.(]x\LOJzmO]O\}+.. xz[=/{>#( *nzu@)< [=/c>#; ;  + , \ ,X =/{J#(]xQQJUzccvu=/{>#dpCuncYzvccvnnx..*.v\O0J).x]z\UZ@)<kpbhkk*b(]xu}+@) x.[=/+ (]x\}+ )<cJ[+ ++ + + , , {> ,, @)<C|[=/{>#(]x\}+@)#(QCXXzcczYJLJv{.#xnx\}aadbhd[=h{>#(mx\}+@).uu[=/ #( x\x.@XUX| + + +, , : ,]x\}+@O<pqOLJCJJCJJUY+@)MX|[J0ZZZOQCJXv@)#(]vvvzUJQQQLzn{UQ0Qx0Zpbbdh|[YLz>vU]x\.+@)Cz.nu/{>#zzcCU+@ + +  + , , [ >#(ph#*d@)#(]#b}+@)oodZLCCJUUYYXXXzczzzx\}+@)cXYZw/dZ#(]Y0pwJc#(]x\....*... + : ,, } X|w=/{>*&W#aoohbh#MM%$o>dw]0QQLCCJUUUJJJJJYYYXXXzzUmqqkm{cc(]ULUccv<CL[=/{>unnxXL+@)M(]x..**... + : , # +@)mXZbkpkWWo]xaao#**WBW=/kd#0QQQLLUUCLLLLLLLCCJJJUU@ZpXhpC/zzc(]zccc@)0Z|[=CJzXX]w\}+@)mb|[JdhdwQYu*.... + : , W ]x\k+@)<ok[=/oMWM#o\}+M&&o|dhbwmZO0QL}+QQQQQQQQQQQLLLL}ZkhobQUYYXXXXzczz+Lk*X|mw/{UQwkx\}+@kC0QUu.x + : >#(kh\}+@*bpd[=/oMM####*+*a<b*o=pppwZZZZmZZZZO00000Q0QQxwko#b<CCJCCJJJUUYY}+@**kbb=/{0dh]x\}kbL<dhad/UcLbhmU +: , +0pp*#dp#WadbkkbkaM&8#hkbhM#kkM&adddpddpqppqqqqwwmZmZZOO0wkoMhZQ0QQLLLLCCCCCJCmoWhbkbZCCwahmJZwLQwmQp#bJzO*8# +, , [ x0kdkMW*MB8#kkkkh*WW#abbh#M&Maa%@8abbbbbbbbbddppppqppqwwwwph#W*qOO000000QQ0QQQLCQb*akhhpOQwaaZCCJCLJUCwhkmLZha + , MzhhhWWM%@8W#ao*M8&#ohaoMWW8M#MB@@$WakkkkbbbbbbdddddddpdppdhMW*dqwqwwwwwwZOOZOZmmwbo*hhooao*#hbq0QLLLCJ0pkdmqw + | , ,[>Z*W88@@&MMo*MWW#oaoooMMW&&&W@@@@@$W#*aaaaaaaaaaahhhkkkk*#MWW*ahbdpdpddppdbbkhaakk#W&&&&&M*hkdOQ0QQQQLL0mmZQ + , MJ&B@@$8WWM#MM##*oooo#M&%a\)v*@@%M##MMMWWM#####MMM&&MMMWWoo#MWM****oaao*##*hk*#ohkho*M88&*oadwZO00000QQ0QQQ + , [L$@@B&MMWWWWMWM*#MM&Wdu( #Z$oaoa*W&&WWWWM#MMMMMWWWWWMW&8W#ao#####*##*aakk*&&W*bppbaW%&MMMapqwmmwmZZOOO0 + , #OBB8WWWMMWWMMMM&&MmM| )k#ao#&B$%&MM##M#M##****MW&8%B8#oaaaahhhkkkbkkkoWWWW*hkbbba#M#*okpqppqqqqqwmm + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== + : ,, , , , , : , < : , ,, ,  +: : ,, , , , : , : , [  + ; , , , ,, , , , # : ,  + ; , , , , , ,, , , [; / : ; ,  + : , , , , , , , ,,[ <= ] , : @ ,  + , , , , , , , , (} Xn\ [> @ , | ,  + , ,, , , , , , , >x@:( < : + ,>x@ , ,  + , , , ,, , , , M*{] : ;= : x }< |{] < , ,  +, , > /( , , , W )[zx@: ;M| : }< :, ]Y ; @/ , , , ,  +, , = , , ,, W [>: }<=0U|{ \ [>x@ #M|{]+XW >x+ :: M ) , , , )  +(} ,X ):> / , , , /(} :: {]+ \OC>x /* . uu{]+ W\UCvx..( #Jv{ + \ #, , ,  + W / #M ] , , <= |; :)[ .+ +=xM :] ;). u@ (nv= M|{] WxL[ : <=# ) , +  +x@ } > ( \ , |[=/{.* +}+ #(].x.+@) ]x\ +@) (]x\  + |{] /{># , @)#(]x\}+@. +[=/{>#( x\}+@) (*x\}+@ #(]x }+@) M|  +)*ux X|[=/{ # ]x\}+@.xX|[ + .x\}+@).xvx\}+@)# : }+X \)[>x + =# | X|[= {>#(]xunc@)< [=/{>#nux\}+@ X|[=/.*#zJxC}+@)#(]x\}x@) :[=/{>#(]x\} : X [=/{ : (}<.#  + \.[> )zccc\}+@)< * /{>#x.x+ + ;#( + + ;  + <LuM ]x +m0#(]x\}+@x.xv.=.{>J(]x\}+@)p(]x\: )#>.@ +  + xLQ[> #(]x\J+vcQZd[=/{>.*...}+.)#(ux\.+@u#(]qbbw0)WX|[=/O>#( :\}+@)v .[=/ >#(]c\} )#ucvu}+@) X .=O0>#(]x\}+@)#( x + @..X| /{>#(xx\ +@.#..x\}+b)#(un...*)zCLJ\}+@)QX0[=/{ ]x\}+@cv(] }+@)< =#  + xwCcnYLYv/{>XJ0moW+d)<xxnx.x...**\JJ@vzvxnvJz>x(]x\x....X|dOL{>#(]x\}d@)# ;x\p+@ ; + + < #YuvQboqX|L0OmZQ(]x@}+uvuuuuuxx.xvCC\YQXcxX|[vvvULQYc\}+nn#(]k*dk8)zn.[=*czvX]x\}n*)u.|[=U{+ ]xu} @ + =* +:X )LkM*d@pdqZL=/{>#(8x\ccccvuunuxn>O(C0\}+@)#QQx\}+Y)#hhh\}Yc.* |[=/uzcx.x\}+@)zncx. + ] Wmqhokdm+@Owddpm/ahmZZqd}+kbbpO00QLLQQLO0CLU)zcvucX{>CC]v\u+@)<Odd=koohW]x\}+@ ..*[=/.nuX]p\}+@)<..[=/{>#CLO0vn.Q + @ }kwZ(]xqbkbp<w|[=&{>#a#WModwmwd|[UUU>#(]x\}+@uuuzYU0ZQmLvx\ddp)#(]**...*....=/{>Z(bx\O+@nvX|[= {>wwn* xJ + ,{] XZk*bdhk\}+qq#(]p\d+@)<QZdh/{nunnx.xxx..x*.=/w>q#]0Q}+Y)mO|[=/pL.*#mL + , x (8/ob#(]hh}+@B&@$[=/{>mZOO0}+bZ<QLQLLCCCCCJUJUUUYXXYzXY>pk]kq}z@)Qpw[=uvvuvvvuuuunuun[=o{##(wx\}wwZWB#o*B+@BBMh[ddppqqmm\hq@000QQQLQLLLLLLCLLLCCCCC/qd#*qxUYY@)QLX[cv{vvvvuuvuuuuu|*okZZpm]x\dq@)<hmxumpda + , : xuXW[=$8##(MW\}%&)Mo|[dddpdp]*bwwmmZmmOOO00#(0QQQLLQLLL[pk{Mb(CJCCJ@JYUYYXzXzzccvcvvvvLLLLLCCCCJUUUJUUYYXzXzzz@)$Xbaddb>#dkx\L+zZdk*Ov + W\Zb+@M%B$B%%WW$B]hh*8B%obbbdd{WW(ddddddddddddpppppwwwwwmZd#*Wb/QQ#QQLLLLQQLLCLCJJJJJJJJ}+@)<a&##W#obO]x\YOLYpWw + (wab*&oao###W&8@8oooMBM%&ahkkkh8@odbdddddddddddddddddpqpqwd##&kwwmmmZOO00QQQLQLLLLLLLLLCQW@@@*dM*bpqddOJUUYYUqMq + Y#hoB8oo*###*8@&#*##W#WWoaaao#$@B*hbbkbbbbkbddddddddddddpb*#8apqppwqqqwwmmmZZZ00OQ0LQ0pW@@@@@Mh%#obZQLLLLCLCCoo + @/0#8@W*##M##8@%#M####W8****M8@@@@%#oahhhhkkkkkhkbddddddph#M&kppdddppppppqwwqqppdqwdaW@@$@@@@@B&ooWamL0QLLLLCm* + , ]U%$$&M##M#8@BM#####8%##W%B@@@@@@$%M#*MM##*####**oohbho&M#B&o*abdddbdddbkaoho*ooaMWM&%B@@@@@8*#baoqOZOO0QQ0Lm + , @u$@@$%&MW8%&WM#MM#$B#M%$apJa@@&#MM#M$%WWMMMMMW8$$B%%%8#o#WW&M###*#**#MMM*ho&#akbhbh#W8$$@@@WWapdwwwwmmmwZO0 + , :{]&@@@$&&&&W&&WWM&@$M8%w\)[>m@kM##&$$BBB8WWWWWWWW&&8%%%%$$M*#M&WM###M#*ooao%B%WabddkaaM$8&%8ohYUqqqpppqqqqw + , x@k@@@$88%%%%%%W8@%*dv(} #M|{@@@$&MM###########%@$$@@W#####****oooaaao&%%BWokkkbbkhhpwh\) cpqpdddddpp + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +, : , , , , , , ; , ,,  + , ,, , , , , , ) ;= { + , / <, , , ,  + , , , ,, , W [ , :} M [:x , , , , ,  + , , , , , ] ; ;/(} , , ,  + , , , , , , ,, , {]+X > : M; ; : , + , , , , , + , , , , , x ( , , , ,, =#x {] W\ x , @ ( ,, , +,, : , , , , , : , , XW\ [Jx /.} : + :\ ,  +: : ,, , , , , , , , (X< # |{ : x =: \ ; x /+}< , ,,  + ; : ,\ > , , , , , +UW >+ / # |{ X;: : #M { W\ [ ,  + ; : ,( , ,, , , ,>x@mYu< * ]+XW ; <=#M ;Wu)[ ;}< ] / } ,  + : : , , > @/( <=#. YdcXW\ [> ;/v}< {]+XW\)[ ; (Y<; |{ / , , ,  + : : , , }<= M {]+X. * xpL( <=u+ ]wXW\ [>OZUuc.X#;|{LCX >x@ ]+: [, ,  + ,, , = , x\}+ )# x\}.Y)#(]x\}+@)#(]x\,+@ > , , + , +@)#(]x\} ;#(]x\}+@)vXc[=/{>:(]x\}+ + [ + :x | /{ x@ ,, + { ( , ,,#(]x ; X|[=/{>#(; +@)nz|[=/{>#(]x\}+.)#(]x\}++ + #( x\ [=#M { :  + , ,+@)#(]x\.c@);( x\}+@)#x..x}+@)Cz..=/{>#(]X.}+@w#(]J\}+@)z(]x\}+@)#X|[= ;#(]x\}+ : :: : :@ : [> + ,, , , ,{>#(Q0\}+* #(]x*}+@u<O|[z/{z#(]x.}#@)#(]x\}+@)< =/{>#(]x\ ; ; : :: ; <x# + , , ,, ,[=Y{>Z(]x*....* * #*n.\}+@)<JXU=/{>#(].\a+@)#(]x\}+ )ux....*....* /{z#...*.+@)<uc.x. #(]x\}+@)#(]x\}+ + X|[=/{X#( ; ; ; ( >x./ } + , , , , )#* .xCU@v#(]x.++ .# + + + >=#. ]O +, , , , }+@QmXcvvvvuuuuuu.x.)<L|[=/{>#(]x\v+L0OJz[=.vv#(qb\}+@)#c]x\}YcuJX|[=/{ + + + /ZQ +@ + , , ,]x\}+@)zX|[=/{>#(]x\n+JL<J|[=/{>#(]x\}+JQQZ|[=zv>m(pd\}+@)%X|#=/{>#. x\vuzC#(]x\}a@)#(#kkahd)*Xk[=Jcx.(]x\}XYz#(]bbmQO)#(uuYY+@QCXvuc/{>#(hp\kooa%X|n=/..*..x\}ncz*q]x\}+aoMM*[=/0>#a]x\}+@)#(kb\}h@)wwpoM#od)#Zwba}+unnnxnxxnx..x.\}M@)x....*....]d\LmQ. mq +qMddkrXn)[ +@dpdd[dppphMkx\}mmmmO0O=bp>LCCJCCJJCJJCCCUJJJUUUYU+@##h]x\uuvuuuuuuuuuuuvx\}+nnuxnnx..>#h]JCQ.xpm +Oohhb&h~<=]x\b+dbbbbbbddk#ddddpqwwmZ|hh/ZOOO0QQLLLLLLCLLLLLCCCLC}a@a#XJUY/{>O(Xzccvvvvvvvvuuuu(]B\}unuuuuuu/{8#bwc.Qhb +OM#o#Wh*qc#($%#oa@)#B]xvvvvuuuuu=/Mb%bQbhJ +ZW##%Moa*M$8#$@&WW&%M#*|[hkbhkkbdddd@*WXpppppqqwwqwwwmmmwwZmmZZ#pMx%h+00QQQLLLLLCLCLLCCCJCCUJU/{@#(]Xzzzcccz|[&pb*hpUu +Z&*&%####*%@&>&$]x\%@B%%*aahhhkhkkbb}#$)dddddpdppdddpdddpdqppqp{kW(Bx\ZmZZOO0O0QQLQQLQLLLCCCLL[=@@>#(UYYYYYX>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== + : , , , , , , : , ,\ @ , , , , , ,  + ,: : , , , , , : , , { :X : : , W , @ = ,  + : : ,, [ <= , , , , , XW\ : ] X \) x: / , x ,  + : : , , , , *} =#M ,W\ @ ( :, , # ,  + : : , } , ,, > {]uX + x: = M : : <:#M| W , ] , ,  +: , >x +, , ) @u ; =# | +X; :x : ,@/ ,, , , , ,  + , = @ , #~- ].X \)[> @; , | ], , ,, , , ,  + , =#M, , [> @/( < # @ ; X: ) + / , , , ,,  + + , , , =CM + W\ ;(} M [ /: ; ; , , # ,  + ,, , , , +XWL)c>: <=#M { +X \ [ /( ; |d] :)[>x , , W  + , , M , , , =: < )[>x@.*}av#M| ] Xx\)[>x <=#M|{]+ W Y> :} +X ,  + , , , , , , X : :;/ }<= .+ zqUx[> * (}XdLM|{ +YXwJnc.@ <w# | ; XW } ;# , , +, , , , , , ) |[=/{> x\ @)* =* >#(Jx\}+@ #(]U\}+@)#(]x }+@) +@: ,  +, ,, , , , ,} )#J]x\}+ )#U]x\}+@)#;]x\}+x)< ; >#J]x\}+@) ;/{>#(]x\}+@)#( x\}+@)YY]x\}; X|[=.{C#(]x\}+ )#(]x\}+@) X|[=/{>#(]x\ , ,(| +XU\ + : , , ,#(] +*.vnnvx./{>Ux.x\} @)<zx[=/q>#(]x\}+@)#(]C\}+:: X|[= { : , , ,> +@ (} + : , , , @) ( *.. .)<..*=/{U*.]x\}cx)vc [=0{>#(]x\}+@wZ(]x : )#0]xv}u@)#(]x\}+@) ; \}+@)x@ + , ,, , : x }+@)<+ + * +@)nv|[=/{>JvYx\}+@ a&obZ}&@)# *. .)#u*.. +@)#(]x\}+@q<w|[=+ (]x\}z@) ; ; ; )].X \C[ + , , , / >#(]x**...*....*...x]0z}JUvuXu[w/vv#(]x*..@)#(]x\C+@ ; ; ; }+.@ (mn= + , + 0(]0\}c@)#(]x\o+@.< |[cc.X#(]xc}+ ; ; ]x\ ]+  + X|cQ/{>u(]x\}+@)#(dh\}+@) X|u.nU>#(]++ + + #(]. .*  +{_1> ] )ncJ0LL0LXCY.[=/{Uw(].\}+@)hpwkad{qb(]x\n. )#(] + ++ /{h#.Yc  +ppqkL/(, ( +@)Lm0U=/{>#kk#akZwLmX|.x/{>#(]x\}+@)# + + [=/{YQ\ c x +JCWMW@n+ ,# \}&d)<C|[=*oak(]x\}+@b#(.xnxxnuczXLLJZY#(]bm}+@)qq|m=/{># * .* |[=/{>* * X#[=Cc <Juw +Zk#ZZwWQ/ ,/ #(]d\}+Q)wkk[=/{>#(UXc}0@)p(]a\}+@L0wq[=...*....*....*|[M/{. * .@)#o]vu}+@q#ccv\}+Cvuuuununnuuuunxxn)<8|..xx...xx\}m@C.|dbJ  +akhhbMobkbb)<$8#ahkhb(]xqqwmZmZZOQQQ>k(]CCUUUJJCJCCCCCJJCCCCJCC#0LQQQQLLLLLLLLLLLLLLLLQ@phX8[CCJJUUUYXXXzzccccccccccvc\}@@)<vuvvvvv#(hxwbqOvuX +$#oo8Maaoox8$+@MBX|[M8M&&a]bbbddpddd[=${mZZZZZOZOZ0QQO0QQQ0QQxL}haoWXQQLLLQLLCCJJCJJJUUUUXYXXX]x@@+@)ccccc/{%h(UUmmYuv +W*##8M##%B&WMBoa$ohahM8#WW*bkbbbbdddh$@WdppppdqqwwwwwwmmwmmmmZmZok8*0OO00QQLLQQLLQLLLLLLLCCJUJp@@@@BCzYXzYvqdwh#XXYzzz +#MBM&MMM$$8M8$MW@B#oo****aM&hhhkbkk*&$@@$#kdddpddddbdppdppqqppqp#oWdwwmmmZmZOOZO00QQQQQLCQ0Ok8@@@@@@BZJUUJXMpOWdCJUJUY +M&@M@%MW@$#%B8%%W$BM##**#*oW8aaaho8*Z@@@@8&#aa*oaaaaahhaahkbbkhWa*&ahkdqwwmwwmmwqwpqdpbdwh#M88WWW8@@@bmCJCL#ZLbLLLCCCC +nYo$&@$%$@$@B8&WM%B$&MMMMM##88oa*$a=#O@Bakhao#W##M*ooo**#W&WM*##bha*M#hoaahhkhoaoohdh#dppdkmb*M&&MB@@#OZZOOhJQLLLLLLLL +[>x0@&%B%%%8&&&&WW&8@%#MMMMM#8BW*\X_ )$#a*o#%&&MM**oaaaaahaaoM#MW&B#bdh*ooaooo*ohhkdo8WMkqdqpbkkM8&B@@z=]chkao##*ooooo*ooaoaooakkkdvM : W#bk**hoakkbbbbbbbbbbbbbkhohppppppppqqqqqqwwqwkabbhbqmmmmmmOOYxz/(, =OCOOOOZZZZ0 + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== + , , } , , ):> W\ ,, , , ,  + , , , , = M : x M , <, , ,, , , + , , , ,X , \ [ , #:| ] \ , , , , ,, ,  +, = , , < ) ;/( = { ) / , , , #  + , }< W ,, , , >, ; + / } ,: @ | , , , , X  + , , , { ,, , ) > ; } , | : , , ,:X ) , , , ,  + : , , , , , , + (} #M| ].X ) : (}< ,, , /  + ; : , , , , | W , x +.W\n[ x@/ < ; ]+. [  + ; :: , , , , ) /(}: #M+{] > (}; + \)[ x + , ,, , + ; : , ,, , , } >x #M|{c+X ; @/( =;M { :X [> <z#+ XW\ , , , +: : , , , ,,] /_><= M| +XW\ CL/( < M|{]+X ; x@/(}<=# { +CW\ >x {:+XW\) , ,  +: : , , , ,> }<=#M| + : x@ + MZ0c+,W *vzwqn}< MXYZcnu\) + nX(} ;|{ x ; , X  + : , , , | = (]x } ). + @)#(]x\}.@)#(]x\}+@)# @ < =/ >x (  + : , , , X /{>#.+x\} ; X|[=/{>#(]x\}+@)<m|[= {>#(]x\}+@nuc|[=/{> (]x\} +X| : ># \} = ;{]  + : :: , , @)# \} )<v|[=/{> ; \}+@)#(]x\}u@nU(]x\}; ; > \;: @ + : : , ,, x\}U@)<.u[=/{>#(* }+@)JX|[=/ ;#(]x\.+@)#(]x..+@) ]x\.+@)#vx..}+@)CX|[=/.>#(cx\}+@)#(]zJ}+ + [*/ #( x }+@J.Y|[=/.>nX]x\}+@)#( x\ : , x: (Y<= + | ,/ >#(]x * )#+]x\}+@)#(]x\}+@) [=/{>#(]x :: : {> ]M| ]+X  + X| /{># * * * {>xxnx\}+@nznJ.=/{ (]x\}+$M*WkpZ/B>#(]O\} @)#) >x@  + , ] [=/ .*....*...*..=0{>zzcxYcU@)<...* {>#(kx\}+@)UQ]x\} +; : : =/{ #*|  + , @ c(.x\XnYc#*]x\vLZOQX|[=p{>#(n.\}.@) ; : X|+= W0)  +~= ], ,> \}+@*...*=...x....*.@Z#(]x\}XQOYz|[.u{>W(Ox\}+@)x@ , (]x\x+xxnuuv=/{>#(]x\}hmJ* ]xx*uz)}(]ULQzUCUJ|[=dpqqOCxCUXYCJC00CQCXYUnx\}+@0Zp0pbb+@a<d| + (]x.xxx mOJx\}+@)bhok=/QCCp]xzzX@)nncJYL0CQwq]xdpmp)#JJxo**dq#(cvuvcvvvvuvvvvvv(]XC}JJnmm]x\}+@)< * *]x\}+@) + {>#(x.+ xu/ +wwma#ZZ0JJx\}+ )<JZ[=LQLOhqx\}+@UYXYXXCm>cvvvvcccccccccccccv]x\}v@)ZXp[=/{>QmOx\}+ .*....*...x\}+ + =/{.c* ..n|  +dpaMpbdpk#(]x\}+Q)#8]x... *W&]%B#oo*#kd[=wwwZO]LLCU@La(8x\UYXXXczczccccccvvvcvvvvc[=@{>#(.*..+@q<YLYn ; +k88haoW#aa*B[&/B>#8*xk}MW)&MkdbpqwmO]x\@+@)zYJJLQLLQQQQQQQQQQQQQ=bhoM(LLLCCJUUYYYYXXXXzzzccccc#x..\}o@) vc. +; +WBao8MMooo8$&##$Mh$8aahhM#a*#hbbbdqqqp&@$bLLLQ0O00ZZmZZOOZZOOZOO0ob&hL0QQQQQQQQLLLCCCJUYUYXcczCa@@@@@pnxxn*bULOY +  +&oaaB*%&o#@$#W%8&88B%o*ohkhkh&kbkbkk*M8@@@Bodpqqpdbkkkbbdqwmwwwwk**&qZOO00QQLQQLLLLQ000O0CQqp#$$B8B@@@pYvux#uLmY.. *  +tCbo%&%@8&B@8$B88W#%B8###o*oh#8bkbhBp*W@@Whaaha#*hahhhaoo##*aaa#Wdh*#M*kdqqmmZmmwqqppbkqbwb*h*o#***$@@qJXvvhcvL....*.  + =#OYo@%%%%8&&WWW&8%BWMM###a&8ka$n@z(B0bdbb*##o#*aoaoaao*###*ooa*MohhaM#*ooa*#*o*kqhWhpmZwOZka*&*&@@BLYXYwxunnxxx.x  + [>#WM8&W&&WWWWW&@8MWW###oB8p{ |{]kXdkkW%W&ahkkhkkkkkbbbk#WW&&8hdbkkkkkkkkkbbdbp*&#&#qmmmmqwb8oh&$ZnvUmccvvunnxx. + =<+o%B@@$%%%8%88B%&8&&&&Wok< : xU/f&8$&B8#*#***###*#***o&&8MohhhhhkkkkkkkkkkkbM8MM8akddpqwmwZQ=qM|{]nXWUYXzzvv* + W [qkhM#*aaaaaahaaahhhk*+[( : |t]o#ahohbkbbkkbdbdbbdddppdpqppppppqqqwwqwwwwqahbbhhdmmZmOOQQX?u) xx/(Uvczcvc* + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== + , , , , , , ,, , x , : : {] , ,  +, : , , , , # @ :} ] X ;> } , @ ,, , \ }  +: ; : , , , < | \ } (} =# {: \ : | , , , ]  + ; :: , , , , { +: \)[> /,,<= : [;x , , , >,  + : : : ,, , , /(}<+ {: ; x : , : : x } , , , < ,  + : : : , , ,, = {]0X [+x@/(}< :{ , , } : , , , , ,  + : : : , , , )[>L@/U}<=#x| , ]+ +:> , , , # + , : : , , , / (} #u| ]xX \.[ ] @ ; #M| :, , , ,  +,, : : , , |{ : \)O>x ;(}<= ;XW > #M ]+ ; / < , ,, ,  +, , ,, , , , , X_\ , /(}<QXz|: +\)[> (} = M +XW; xo/ : M| \ , ,  + , } + ,, ,( ], W [>x@/x} #M| .; WhY[> /,}v=#M|{ : \)[>x@/( #cu x++W\ = : ,  + x ( < , >x@ }< :] W\ * .x*LzM|{u .YUaq>x@ (JUq0ccx] W\Lxux: }<=# + \) x@ (  + ( , { , \}+@)#(]x\}+@). [; {>#(]x\}+@) X|[=/O>#(]U\}+@)#(]x *+@)#(]x\}+ )#Cnx\}+@)#(Uu\Xv@) +|[=/{>#vzx\}+@; [=/{>#(]x\}+@)#nUx\}+@* ..* /{>#Yx.\}+ #(]x\}O@) :|[=/{>#(]x\ ) x /( + ,># #( x.uvnuu*.nx.{>#c].\}+@)un|x=/p>#p]x\}+@)#(]m\}+: X|[ { : : , [= =# ;  + ,= )u Xx\}.@.XX [=/{>#(]x\}+@pq(]x; @)#(x..} @)< |[=/{>#(]x\}+@) ]x\}+J. X|[ : : @)< (} :  + ,( x\}Q@)*....*. + }+@n< +; /{># .c\}+@)kM*bq}+@)# \}..c< ;; : \}+@{v+:  +)(} , ] ># ]C\}.*...*....* ] \z+@ +X|[=+ >#(] ..+ )#(]x\}+@)<p|[=. .#(]x\}Y@) ; ; (]x\}>J@  +{[]XW : x /{>#X]x*xx..*....*. #(cx\.+@) |[= u..]x* ..)<#|[=XOm0(]Y\}+@).(]x\J+@; ; {>c( xJX| ; +kLX(}-<~ x\} =/{>uuuvu}+@...|[=.{>c(nx\}+@)#(]h\&+@c#(\) + +aMmLCLZO- +]x\ Xw[O/XXzYUUYX+@)#(] \}+@ ..x.=/{zYQ]x.u+@00O|[=/{>p(*k\}+@..X|xx.Yc#(]x + X|q=/{ ; ;  +oLCLJJJQBJ>C(]x @)C(]x\v+@)qwmkkw{abkkzCv..* X|[nnn.*(] + )<C|[./; )*  +0OOOO0O*qZ/{0#(] \}+@)OJ|[=/{pbahx\}+Y)QX|.=/.>#(]x\} @..*vcYLJQ#(]x\m+@)pm|bhp{##(]x.*....*|[=.{>#(++ +@Q#(]X\a+@CQC|kahd>#(]x\}+@b<nx...*....*...**# *....*.. *=/{>+ \}+@ X .nOW  +bbddpMbwqwO|[=/{>#(Ox\000)bb|[=/CCJUYYX}m@vvuuunnnnnnunuuuuuvuvu=v{>b(]o\}+@)pd|[=...*....*...*..[#/{ ]x\}+@ >nXx  +*8kd8hdbbd*ap|[=/@>#(]x\Z+qw<OQQQQQLLCJxb}+ccvcccvcvccccccvcvcvccc=/q>h(]cvv+@Q<....*..xxx....*..X|[= +#z]x\}+ #XU  +$8hWWakbbhM@bbd|%=%$>oakk\}+mmZO00Q0QQL(oxCUUYYYXzXzXzz#zXzXzXXzzX|wd/M>#cccv}+u.#(zx\WuOC xC +$Mo*&8kkh&hkb@)<@&[=B*ka&&**b+dqwZOOOZ0>#(]QQLLLLLCJJJJJCJCCJJJCCL<bda#/UUYXzccn+@)xucvvvvccvvvuu+@)#b]vLQu Ja +$#bW8koaMM]h\%+&)BX|WW/{>WW#%a}dppqqmwm/$>#0QQQQQQQLQQQQQQQLQQQQQQ@*<W|[CCCCCJXzzcccccXccc/vccccc\}@@)<x.[=a{>ZwOUu.x. +bZW@*o8**##(&@8M+$M<&8[a/{&M*&*\bdddpq|[@/{>OOZO0OZOO0000000O00OO\}o@8#(]x@@+@)vv|[M/{cLOJuvv +]+?(zm@&$8*M@$MW%%&M%$Wooa**aa#*dkbbdbk*@@BowZmmmwwwwmmwwwwqqwwwwZaoWMwZZO0O0QQQQQQLLLLLLLQLCJCm*@@@@@$OucnomqkZucvvcc + @/(}<]jk@%WB@&$B8%8WBBM#*ooaaa8abbboa##B@@$#akbkakbhhhhbkhkddppbaMhBobddqwmwmmZOO00ZZmmmw0OkaM%%W8W@@@&ZCv#QZapzXzzzz + XW))*@%%BB8&WMMW8%$&MM##*oM%kkh&*hZkUYJQpbh##a#aaaaao*WWMM##Wkba*MWaahkkkbbkkhahkd*bbdbhdba*MW*8@@80QzabckLYUUUUY + / ;<=MWW8&W&W&&&W&B@WW&W##*%&h#**m[mX.0wp*MM*##aahahhhhao#MM*MW%Wkkh##*o*o*##o*hbb8MobqwmZdkhM&M$@@oCLk0UJLLCLCLL +<=#M| ,+ W\*@%$B8&&8888%B&WWWWWWM$#Man< vr|adM%M8ohaaaaaaaoaaah*%%88%*aaahahhahkkbbdbbk8MW&apppwpdw#&ddo8U)?>xZLQQQQQQ + , ,, / }<0B$@$%%%B%%%888&&WWWM%%z]+ :\v[#W$M&8###*#######*#M#M&8&#aooaaoaaaaaaahhhk#%MM8MabbbdpqmwZC#O} ,# QQQOOOZZ +: : ]+]W)o%$@@@@$%%%%%888WW#%X> :}C[d$&&%BMWMMMMWMWW&&WWWMMMMMMMMMM#**oooaoaaao%8&W8%&hbkbbddwm&X] , [m0mwwqq + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +, : : , , , ,, / =: : :, < , , , , ,  + : : , , , , { , M| (} # + ) @ , , , , , )  + , : : , , , \ );>x /( ) , ,, , , }  + ,, , : , , ,/ + \ =#M +;+ W: @/ {, , , ,,  + , , ,, , , ( { \).> } :: X | X )[, , , ,  + , )[>x, , ,, ( < =.M {] XW : ; < , , , , ,M  + , ( ) { ]_j \C[ x@ ( ; + + , : , ,  +, { ] / ,[ /v}< #M ] > } X [ x@n; : , , ,  + / = , #M|{0+X; ) x@ M x <O# ; W\ >:, , , \  + ) M , M XW\)[>QQc( < : {]+X \ }<=#; +cY .; @/ M| , ,, ,  + } | [ ]+XW\) >x@/(}* MdC]+ W+ [YvmY(}< |{]nXu\) > @p( + M| x; : ,  + , ) : )[>x@ ( = M| + ..[C0v/:}z .*|mY XW )OUU x*v. Mv0Q+; [>x@ +X \) :  + / # {>#(]x\}+@ ;X|[=/{. (]x\}+@)<U|[=/{># ]x\}+@)<Y|[=/{>#(]x\}+ )< + =/{># x: = , + [ <= , |[=/{>#(; ;; #(]x\}+@)#(]x\}z@u#(]x\ +< [+ #(]x ) + +<=#M| , [ @) ]x\ +@L#(]xv}z@)#(]x\ *@ :[=/:, +@ (} :M +*W\)[> , < \}+@vcc|[=/{>#*.x\}+@0#(]c\}J@)#(].\}+@)q(]x\}+@)#(]x x./  +UvuY0kU[, [ /{&#(CZ\}..*..|[=.{>#*].\}+CcZX|[c/nC#(]x\}+@)#(]x\}+@)<; =/{>#(]x }+ : |[= {>#( |{  +WdZMWLav# (] [=/{0#(]..**@)#c]x\}+@Z<zY[x/{ +(]x\}+@8#XQZJ/{@#(]x\}+;;x  +#Jodhh0uz)> (] ) X|[0/{>...*....*...*=/J>zv]x\}+ccYC|[=/+>#(kx\}+@)mQ|k=/{>#(mx\}+ +|[.nz> ; @z#(],\}+@)#m]x\}+Q0CX|[=/{>m(]x. .@)#( \}+@w<uuuvvuunnxnxx.@v00|[OUcu#(]0zcQXv#(YxcXYU)cX|h=a{>XX]x\}+.) ]x\}+@vvvvvvvvvvuvvu}YZ)Cm|[z/{>#(]x\U0OXUX|[c/{bZZ]x\}+@)8X|&=/.>#(]xYuY@)#(]p\}YXYYY|[=/{>#(]x\h0J)ZwOm\}B@)oX|[=.nx#(.n\JX@)#0OwOCZOQ0Xq[dqwp0C]xJUYCJL0LULUcYc.]x\}+Q)qpdx\}okaaYCv** .#(]nvuu.)< +[=Z{>#(].\ #c+ ]w +kZOZp0JQdp\}CC)m(hhd}M@)#v]W0J+ q +wZpBa0qaOUYxcUqO)#c]xvuunxn.xxx.x>#(cz\Uzx)<mOb=/{qZ(]h\}+.x....*....*.x\}+..#vk< Q +mpB&ph#qLU#(]Z\}L@)@X|[OZ{pa(]x\}CCCCUY[00{ccvuunxxn.x.x.nxxx#nux\u+b)<a|[=/{qb(]xunnnnxx....*...]#\}.@)#(]Q0}+8@W(.x\}+@C#k]*\}UXXzcc[=zcczccccccvcvvvc=/@>#n]x\mw@)<q0.uoU. + |~(vqa$bMhX|[@MM>&#]x%}d@#W#8[qqwO0OLL\q+@zvn.*. + ..*xxuvzzzz/{h#8]xLJJUYYXzzzccc#ccccvvvcvz|[@/{>#(]d\kdmQcx.*.Q + x@?uMk$@)<@8[=MBM#%&xa}a&)*&bppwwZ0Q]x@}+c..*|[=/{> *..nvczzYU[Zh{W#CLLLCLCJXuuczUUUUUYzcXzz)#h]x\}LQc*xxX + |{]w#8@WM@&M%88W&8$oaaa**h*#ddqpwZZmW@WCu.* )[ x@ *..vcXXYJLJqdoMLLLLLQLLLY. zJLCCLLCJJJYzCo@@@@@ZW ZhUJx.uxxnnn + W\ x@8*&%%BBB8&&&M&BWooohhkd#oddqppb*W@@@oU. }< | +..nvcXUCCCJhdWp00000QQLLCJJJCCCLQ0QCQmd*$B%8%@@@L ux#MC..*xnvv + , ,|##M#&&WMMMMMM&8%&*#*oahh8dbqh#MuC@@%kmCu+XW\)[>.uXJ0ZOQ0OwoawMohkbwmmmmOOOOmwqddhpbwpohaa*o*h%@@J+XW )..*.nucc + : , >8WM8$8WW&&WWMW%@WMM#ooh8#ph8p(;+@%QYYzuXUvxUvcXJQOwbaaoahapqkho*ko*ooohh**o#adpWabqZwZ0dha#ho@@8@/+}< .*ncczc +; : #z*W&8@@8&&&&&W8%WWWM##a*Bap)[ ;@haLOQLddwOQUYUCLQQ00Omqh*a#M%8bpdhahhahhaahkkbd&WMMpZmOQmZmWaph&|{]n .xucczXY +; ; )[Ja8$$@$BB%888&WWMMMM#a%J}< : {%QZOk#p*OJLQ00OOZmwqpddoWMMModkbbbbbbbddddddbdW##W*qqwmOQQ0mU.b[ @nvcXYUJCL + ; ::=#QXq%B@@@$$%88&&&WWWMo&n+ , >wqZh%ok#qwwwwwqpqpdbbbkbo*Mohahaahhhhhhkhkkhha8MMW8#bdqwZZQQCLk=# <0cJCLLQQQ + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== + , , , , ,, , # | X \ : , > , , , , ,  + , , , , , , x < , } @ M , , , , ,  + , < |{ , , # X , { X : , { \ [ , \, , , ,  + , + @ , = @ , x@ : ; : [ : : [ (, , ,, ,  + , X , , {:+X ,;[ ; , @: : {, , , , ,  + | , , [ @/( < # { ; [>: , , , ,  + M >x, } =#M|.] X \ , : <=* {] , , ,  + / \ > | , :{ \)[ : / }< + ) , = {] + + , : , ,  + / ,# > , ,, )[ /(}Y=# | ; W\) x , {]: [Jx : #M| ; : , ,  + W , : ( M|{] JJ\) >; /(}<=# , W\)[>x@ ,=n ; @/ :, , ,  + [ / : , { +XW\)* (Zn= M * .x)[> /(.. + XUn): /( +X : ,,  + [ < M :]+ ; x /( + * +.W\ [> @ (}:; |; + W;)[> @/Ln<: ]+XW /( ; ]+  + }<=#M x } @)x(] \}+@ #(>x /(  + ]+ +)[ x x /{ \}+@)#(]x\}+@)#(]x }+@) ; +@)< > M| + X +> * <M> X|,=/{>#(]z\} X| =/X>#(]x\ : +(]x\} X| =/{>#(]x.}+@) @ X|[=/{nc(]x\}+@ X|[=/c>#(]x::+@)* |[=/{n#(]x }+@) |[=/{>#.]x: )# , +@) X|[} #M|{ + [ZXu/O}Y[=,{> \ @)+..uuzunvn. [=Y{ #(]x\n.@ X|[U/{>#(]x\} @)#(] :@)< | : x\} )<Y+ ,,)[> + =0hQk&OUX|[= {>#( }+@)XL|[=* ...*x.}+* X|[UnuJ#(] \x+@)#(]x\}+@)# x\}+@)#(]x\ +@)@ : =# + , \)bqbbQZ#(] +}+@uu(]x\};@ #(].\}n@) : =/{>#Y]: }+z{  +@/ _hwwmQOw#(]x\}+@z  +U{] W\hqO\}+b).(]U\}zXxvvJ[=/{> *. }+@k#(]Y\}; <n|[=J{> ]=YM ,  +cJLn[_>Lvu]c\}d@)...nnnxnx....*.vLL(]Ocv+@)<UnuCuu>#( *.}+a)LX|[=/{>#b]xk}.u)#(Xx\ @X< |q=/ #W#) :  +kLQhdn+YYUUX]x\%+@) X|[=/cuuvuvuvvuuxx.[=O{Ym(]v\}+@)#d*x\}+@)#. \}X@ qkw0q}+ )#(]x\}+@)#(]xm}YXXvX|[YzQ># xv}+@kZwmZ=/w>#(]n.* @) *.cu/{># ]xz}+@)< +=]+ Wc)  +aWZLLmmLCQpbm>#(]h\}+@)LOZJ0O0Q#m]mZmw0)<wC[XLL0m0LLYvzn.#(xx\}+QQnn]x\ @)<..xx.{>#(mx\}+@ #($x\}wqOLX|[=/aoMahwdOq@)<UJU=/{>#(]x\}..zXULCLQ{>#(ZXY}+C0qwZ[k/{># ** )w(]x\}n@)<O + JXJ +CLOW%bpahO<0O[mkp>#(]&d}+L)<###ah{>#(]x\a+@)Q(qx\}0C)Op|[=*....* . * X|[=/{>#0]x\X+OC+ v0m +00*%bZb*#dmm<bh[=ZZ>@(]xZOqobk(]x\}Zw)nnxx\JJ@xxxx..x...*....*@)#(qxQ )wwx +<Z#Zk#qOdkx*b+d)bX|@=/@M*h]x\wqwZmZZZ=0{qk(0QLLLLLLCJUY/XXzzzzXzzzc<b|qa/ccvv]xXvnuuunnunnxxnxxxx}+8)<b|[=Z{>#q0..mox. + W\qdUcQWwh]x\}%*oo&#[=${a#Whx\dpqqqqwm=ph>Q00QQQLLLLLLCCCUYYYYXzXz@k<ak[zczcccvcvcvuvuvccuvvvvvvx\@+@)#@]x*&8@)$X|k=#W>%a]bbddpq#@@x\}+M)qqqmOJnvvUX + :: <=jm8B8$$M%%8&W&$8hhk*Wo*Wkbbbbddd&@%pwqwmmZZOO0OOOOOOOO0000QOhp&pLQQLLLLCLLLCCLCCJUYUUXXzXZ%@@@@axm&q0UJOJczzvv + : ;W )*boM&8&W#W##%%*oohhhk*Mdkbbdaa&@@@MdwwwwwZZOOOZO0000OOOZ0Zak#Z000000Q00QQLLLCLCLQCCQZqW@$$B@@@o0%wkkLvzzzzzz +: : ( ~okW8####M##W8B8###oahh8bbbb*MM&@@@@&*kbpdbbpddpdqqqmmZZZm#kh8kdqwO00OOO000OZwwqppqmho*#**#*%@@WQWQw*pzzzzzzz +: , +{zW*%B&MWWWWW&8@WM##*oa8*ddM8t<qW@Bbpddpb#hdkddppbko##aoa*#wqbh#Mbkkbbdpwmbkadwd*qwmwdOpaoWMo$@@pwWXwOYUXXUJU + , /)q#W$@8WWWWWW&%MWM*#oa*%h#O< W\$mqppwaohhoakbbbbdppkkhohbao&*dpd**oooahhakkpqk8M*bmmZOwqw#&#&@#X#LJCCJJUJCJ + , ]C%MWB@@BB88&WWWWMM#*aa@J[>: / }dwwqqh8oWdmZmmmwwmmwwmwd*##*M*pdddddpddddpqqqqd&*#MkmwZ0OO0bZL{z+nLcJJCLCLCC + @O&&&B@@@$B8&WWWWWMo*CX] ; +XUJqb&akMqwmmZmmmwwqqpppb#MMabbbkkbkbkbbbbbbbbk&**M#kqmOZ00LQ[>O@/(}CJCCLQQQ + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== + \ , , , , , , < + W : ];X , , , , , ,  + , , ,, , , , , W\ [ x ( : #M| , > @ , |: > , , , , , , +] @, , , , ,, , , , < #; +: ; @ , : ) ; @/ = , , , , , ,  + { : , M , , , ,, , : x@/ = : , + {] X , ,, , , , ,  + x , ,| ), , , , , @ } = M.{ X ;x / , , : ,, , ,  + , ,) = , : , , M|{] XW )[> = + / : | : , : : , ,,  + , \ , : , [>x@ :< M +\) x M| +XW ) ; : , : , ,  + } , | , , : #Q|n]+ +[>x@ ( < # | +XW\;: @zx ; ]+ \ , : : , W  + , ) , , : W\0q>x / }<x#x|{] X \ [>x@/(} |{ X:; [>x <= , , ,  + ,( @, , |{]+X :, x@/. <CdY| ]*n vxQkx@/ <ULQnxnxX \)n.x@ + <= \): , ,  + ,{ XW\)ux*.. :=#M.* +\)Y>:@/ }+=X .u] XWx)[>x@/ <n#M ; W\)[ =# ;: , @  + M {]+ \:, [>x@/z. * :XW. + . +. =#M :X.\ [> @/+. = : +UW\ ; * <=#M| , \)[> /(; ,,  + _[>x /( #(]x\}+@)<.| */{>#(]xz}*@)#(]*\.+@)#( +@ < + /{ @) ;[  + M| ]+ )< |[ { @)#(.x\}+@)#( * + ;< |[=/ (]x\}+@ (,< # + W\ [> @ @) , { x\}+@Y#(]xU}+@)< ;/{>.(.xZ}z@)#(]x\}+@) , /{># : +XWk + <+#vvn\z+@ ,[ #(]cvY+@)#(]xX*x@)<;|[=c*>#v]d\}+@)#(]x\}+@)<: /{> ]: :: X|;=/{>#(][ * } + Xx~C*o]x\}+ ,< /m>#ccx\*.nvczYunzcx (]Ln.+@)<n.[x.{>*(Wx\}+@)#(]x\}+@ |[=/{># : @)#(.* .+@)..|[=/.>#(Y.J}+@.<*|[=/{>#(]x\}+bQCzq[=/{>C(]x : ) ]x\}+@) X|[=/ :)[Lx: + M , XpZm>#(];\ )#(]xYxu@)#(]x\}+@)#(]x\}+* < .z=/ #(]x\}+ x@/ww=XX>#(]x )QX|..x*...*... *.#(+ ..+@.#( \}+@)#(]C\ ;)#(]x +J)xnuunnx.*...**n@OcXXvc*cu0(*x\}++ |;=/ * (]x\}+@O<U|[=/.>#(]x\}+@)LX| =X{>#0] ; +@)< : = +QawhmLXzzXXXz[=a{>#(]x\}vvuvuuuuunux.*x\Z+@LCnn[=/{x .vn*} @):X|[=/{ (]x\Y0w)hhun {>#X.u\}+@c< |U=+{p#( \}o@ ; X  +cdobLYJCCCJ)<wkp=/{>#(Yxzzccccvuuvvunn(0x\0+@)#** +@) =/ >CC]CZ}+w).*vU\}+@ <L| =/{> x\} [; /( +OWmCQwdOLQOpbm#(CJJUU@)#hLx\}+CCCLUccu >#( x;}+ |[=/{>#U]xw}d@nz * =/{>#cvu\}+@LYYJCYUUczu.| = { #(] \}+@).*nu\}*@)#( uX)uL* +YOZ&8hbo#p(wqw}dbd<#|kbZ{>#(]d**WakZmLw=/cczv]x\}+@) + + x\}+@* X|[vY{>#w]x\+* * /{>#(ax\}+@w+(0Qw#. +XZ8Wdmk#Mhpdpkoaq+@)$X|mm/{MM#ak\}+@)#( x\}+@0#( * * .**..>#(]x\}q@)<U|h=/* UqL+  + ~#kp*W*ddd{oobpddd+B$#(]xQQLL)wm|Yzzvuuunnx*....* + (]J\}Z@+ X|[0/{.*....*....*....{>#b]x0}+@)<w|[ .Qb(  + <+?*#qwak[Ma{>#d]x$}BB#bXobdqwmmZO000+mp<CUUXcccvvuunx.**.. * #J]xm}...h(ww\}+kmQ(px\}k@).b#x.Lw + |{>+X#o#&<k|BB##>%(]8&}aW&w(]xa}+cMCuQwh + @:(z$&@)@B|[=&%>#%]a\*8&8hXbdbdddp(%xmZO000QLQQLJU#X]zcvvuvvv|q=bk>vuuuvvvvvcccccczzXzcczXY@)<@|MMakM#whx\cvxJpQw + {|~W@&W@)<&88M/B%#oao8}&8)hkkbdd{>@(]pqmZmZ0O0QQQLLJJUUYYXXX<w|hk/XXXYXXXYYYUYYJUUJUJUUCCL}+@@@&|Wh/hkpw]XXzYYnz + + qa#&B%B%&8&&8B##**WW#&#hahhkkdW@@opddqwwwwZZZ00QQQQLLLLLLJppoaJLCCLLCCCLLLLQLQLLCLQLLL0b$@@@@8d&*dZ0wmCUYYYUU + {*oW#MMMM##M8%MM#MMM#*8aoooa##W$@@8obddddpqqqwwmZZO000O00Lkd#pLLQ00QQQQQQ0000000ZO0Zbh8@BBB$@@B&Wh#hQCQQLLCCJ + )< a*$8MMMMMMMW%B#MMMMM#8###*&M88@@@@B&#ahkaahhhhhkdbdpwwwqh&pW#hbdwZZZZmZmwqdbbbhdhkhM**#WW&&@@$k#w*Wp00000Q0L + + +B#@B#MMM&&W8@WMMMM##%&##M&WbpQ@@#kaooo#8a*ahhaaao#MM##*MaqdhaMokoahahho***okp##hbpbbdo*M8W8@@%8#ZaqZOZZOZOO + #M XW\ \%BB%8&&W&&&8&&&WMMMW$*#&MU[# 8vm*aoo&WMM8##***ooaaaoo#a**W8#ddk*oaaoooohkkbdM%W&addddkkh88M&$*&wwqqqqqwwmm + , , }v|\m$@@@$B888&8&&WWMM#BWh0)X +U>#o*8B&BM***oooaooaaha*W&MM&#khkbbbkbbbdbbbkko8MW8obkbbbddhdwdoQ-Mdqpqppppq + , , X+.1(o$@$BB%888&&&WMW#8h\ Q r&MB8&BMMMMMM########*#888W*oooooaahkdhhaaaa*%WM88#hhhkkkdanCnW\ )bpdddddd + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== + ,x , , := ]+ : [ x@ , ( , , , , , ,, + , | , , = M +;W , , , , , , ,  + , , / , , \ > @ }: #M|{ : x+/ ,, x , , , , ,  + x /, ,, , , = ; +: + / , : [+ / < , , , ,  + X , , ,, Xv+ >x*/( =# | : , , <+ : W , ,, : ,  + / [, , , , / }c=#M|x] X+ * /( = , , : ,, ,  + # ,] } , , , , |.] X.\ [.x X /( =; |n]+ , , , , , @  + +X , } M|{ , { >c@/ :< #M ; ) @ (, |{ Xn >;@ ( : , , , ,  + x, , , XW , ,(} #Mzu]: +[>x@ } = M { XW\ ; /o} ; ]+ \), }<= , ,  + , , , , ,{ , | ,\)#zx@ (},=XMc{] W [>x@/(}< # |Y] X ; [>x ) x@/  + , , , , ) # : W , /(}.=oqz{]+z..YXhq@/( <JUqUvuxX )[Zx@ ; =# @  + , , , , (} x / }, M|{. \uu>x:/( < #U 0] XWx) >x@/( <uUM { W\)[> } :)  +|{ , ,, , #.* ...x.#(nx\}+@)#(]x\} ;)#( / # |{  + >x@ ( , { , ,+ >#(] +; X|[=/c * \}+@)#(]x\}+@ #(]x\ +X =+ (]x\ = \,~ x  +=#+ {]+ W , , \ [=/{>* ]x+ @ #(] \}+@z#(]x\}c@) (]x\}+.) ; =/{, )#(]x\}+@) ]x\}+@)< | : (]x\}; ; W )  +(}<uxuwnY+< , ,x\}+c)cX|[=/{>#..x\}+@U#(Xx\c+@)0(]x\}+@) (]x\}+@x. := +,+zCm#Mc)u@)< , ,#(]x\}vv)< .uzzYXcccn.}+LuxX|[=/Xv#z]c\}+@)#(]x\}+b)#(]x\ : X|[=/{>#(]x ::|.]:XW + /|kpkkn<\ )< ,/{>#Q0w\}*. ..|.=x{>.. x\}JuL#(xx\}+@)qaopO/M>#(]OO}+@; [=/C..(]x ; @)L(]: >.@/  + ,|*pqdCx\}+ )< ,[=/{mZ(]*...@)#(]x\}+@0cJ|[=/{ # ]h\}+@)m(]x\}+@) + [=.*X#( ; }+@)# Mp{] + x10hqQcU]x\}c@)un...x*...*. =/z.#(]x\}+zuC. =/{>x(#x\}zQQCX|c=/{>#q]x . *+# xC}+@)<; =Q{> ; uMU +<=#xhZLUXU>#(]x\*+@)#dLC\}+@)# x\}.@..X|[=X{ #(Xx\}+@ |k=/ ; #u +LrfJQJCLLLJ{>#%]x\}+@qCXzzzvvvvvvvvuu.u<O|[Zzv>#(]JvzCzv<x|*.u{>UU0x\}+@)ZXo[h#{>#(]x\YuuJz(]x*} #(]x\M+@UUU|[=/{vvvuvun+m)Jm|[c/{>#(]x\XLUzYX|[u/v>#(kxW}+@#* ]xx.+Jc#(]x @)#(kxb}O0000LC=/{>#(Xx\awC)<ucLUZQYzYvx\}ccL#d]xZp+@h<k|nJ*. (]x\}vvu.X|[=/{>#(] \}.@)Uz|{.*X +wmwW8dpooq)mm|qbbW8#(ddpOQO)0w0xwdd@#n(]x\}+\Oxzm.J +qq8%haM*dqdpphap[=/{>k(]x\}bko**akm/ZLb(]zzz+@)#mZx\}+@)*...**...*..\}+h)aX|m=/c>#(]x* Qmdn.  +d88bpaMWhd\b#adddp[@${>qw]#**k@)#(]x\}+ )zJ|C=/{>#Jmm\}*....*....*...x\}+a)<m|[=0{p#(. JdL) > +}M#b#Wopbba#\}ddd<B|$B*b>ao]x\}0QLLLCC=d{>cvvunx..**. + + +@L<Cm[./{c#(]x....*.xxxxxxxnxnx\B+@mwX|[bm{>.xwh} =a + X_m&bq**d#hkxaa+#$#qqwZOQCCCL|qQ/Xcvvux..*. + ++ +\}J@LmX..x/{>Ynxnnunuuuuuuuuuvv(]&\}mm)#@]x\}w@)<a|[=8p.XmpZ +, W)kM$=/{@&M]x$}+8#<k|WM&{>dpwmmZ0@w#J]b\nuvcvvvcczzYYYYUUYUCJCCJ[=@@@@(]oohdm)<ccCLuU# + : +X#W%%$$B$%88&&$&ooa*Mo*MbbbdpqwZk@oJJJYzcu...+ < {: nLUhzuvvczzXYYYUCCCCCCCCCLCCJm%@@@@@WkqOOpwCJJYXYLM + : -0M*WW&&WWMM#&%8MM#*ooh#*bbddddd#$@MZCUYcvu.** :W\)[: *.CLkXvzcXUUJCCLCCJCCLLQ0CLwp#@$$B$@@@*oaqCLLLLCCLUZ + : +]&#%$WMWWWMWW8B8MW##*a#8hkbbhhoMB@@@WdOCXcux.. / }<=#M *.zwJ*0JCJJJJJCCQLL0mwpbbbdd#M##W&&8@@@hpWWZQQLCCLCLC + : ;{t$#%@%&&&WWWWB$MMWWM##BaahaW#M*%8@B*kpqmLZmYzvnx...vXUXYCLk0c0wdapOqqqqqpkha*hdpMakpdbqh*M888@@@bq#wZZO0O000Q + : : <|W$$$%888&&&%&&WMMMM#B&h*8#pC@/8@bZO000ppOQpLUYYYXXJL0OZZQZmdokO0qahkkhaaahkkdpW%M&hpddbhkMBWM%*qpwqmmmmmmZZ + : : r/zW@@@$$%88&&8&&WWMM8Bo*U(-M| ]acdwpma#bomOCJUYYXXXzYUJObhhh**Zwqwwqppppppdddda8MW&hbbdddpkbpb8)mppqppqqpqq +: : #n/>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== + , , W ) : , ,X , , , ,, ,  + + , } X , , }:= [ ,; = , # , , , , ,  + , ,X x ,, , , #M < M| X : , , , ] ,  + , , , , , , W+) x@ } M W: x@ , [  + , , , , x / , , }.= ; : ;x / , : [> / X  + = , , , , \ , = , XW\; ;/ <=# ; , , ; ] W x  + \ ,, , , ,W , , ) , / }<=# |.] > W ; ( # ,  + , , ,, , , , , ]+Xz\ [>x ( + |{]+XW\ ,  + , , , , , , , [>x@/ ;<= M : ) @/ { W\ [ ; ; \  +[ @, , , , , ,, , , }< Mz{]: . [>x } = M {] \); /CL< #; +X : , < # + W  + , , , , , , , ::] \)qQx@ ( =#M|{] [>x@/(}< M|{q+.W: >x@ , , , , ,  + , , , , , , , )[ /(}<=Owz{ +. XYbqn/( <=zYZznvXW ,cc@/; =# )[; :: =  + , ,, , , , , , = ; #_] }+@)<..[=/{>#(]x }+@)<*|[=/z>#(]x\} @)#(]x\}+@  (]x\}..)<*.[=/{>#(]x\}+@)#(]x }+@) X|[=/+ #(]x\ @ X|[ #( <  ++n/( , , , , x\}+@)#(]x\}+@) ]x\}+@ +=/ >; \}+@ ># ; nx@  +* .Y+X , : , = (]x\} ;; +=/{ # x\}+@)#(]x\}+@ X|[=/{>#(]x\}+@ ++ ; >#(] , X|[=/{ ; #Y|  +.. O/ : : , X(] + # ; +@)Xz|[0/{>#(]x\}x@)# ] }+@)  +cucLwd] : : ,+@)#(]x\}+@)+ ]x\}u@)<b|[=/{>#Q]w\}+@)# :}+@ < : (]x +@) |[ , M +b0*8Lhq@/ : : \}+@)<uc[= ..nvXccc+.)<L|[=/{>#(YX\.xu)#(]x\}+@)<q|[=/ ]x\ +@) : /{>#(]x\}+@ ,X{ +: \  +8opaa0ZoJ]X|[ ::(]x\}JZ)< .x...x].u..@)<Jc[=/{Y#uLx\}+@)#(Yx\}+ : |[;/b>#:]x\}: x@/(  +{*#kbdmQdq)#(]xx}+@)#(]xL}q@);X|[= >#*xx\}; )xOdhmUzXZh@)#L]x*....*...**..#(ccz}+@)<JYJz/{>#(].\h+@)vC0QL/{>#CJx0}+@) *[=/{>#(]x\ +@)#(] :[kz@  +# xwUXUUYc\}+@)< |[ /0>#vuuuuxnnn.*..n{>C(XJXvXcz0(px\}u )#(] \}+@)wYUxzcwXcYz|[n.*.x(]QQ0+@)*(cX\++@)XxcY=/{>. ]X\ +@)< +=/{># )  +k0ZLLQCCwhw(]x&} @)<L|[z/{>c(]xvuvvu<Jw[Cq{>U(]x\}+@LOZUY=/{c#(cx\hZ@&#(]x }+@x.XUu=/{>#C]x\}+@ +|[=/{ .};=# +wZqdm0whb0{>#(]x\}+@p<0LCQCCJ#(]x\}+@)hm0[=/{C#w]YJX+@UC0O[=/z>X(]xda+pmoX|o=/{.# x\}+@)xnnn./{k#(]x\}++)< |[m| ]z cv +mhBhwhopOmm/wbm(]x\}qpmLQQ[=/{aahkdq0QmQ<YL0OwmZmQJQY}+@)<Q|[=/nC#(]0mp+@wbh|&=x*># * . @)<.|d=k{>#(].\}+@)+X|zxCJnC} +o$*k*#bppqqhh/{>#(]x\}+@)<ha*#*kkmZZ0b}+UYUX|[=/{>#(]vvJJJ0OO0z=/{q#O]xOdd@)#(]o\U+@Xzccccvcvvvvv\}XX)Uzu[0w{p#(]xCLpp)<....*....*....*)#(]k\.+@Ob) cm +8dk&MdqdbMb)pXd[%%{$8ohxak+@)v(]UQ}+@xnnx...xxx...*..@)Zp].\}hz =ZWd +#b#hdk&kak}+@W<*WB=/$>h*Ma\}mZZO0QQLC{d0(CJJCJCUzXccccccvvvvvvvv)<p|pk/vvv(]xUuuvvuuuuuuuuuuuuv}+@)#(]WQ.XmmpL +xdokd%#*Wbk\$%#)<8|[8a{>*&##\}mwmmZOQ=dw>CCCCCJUUYXXXzzzccccvcccz@d<po[ccccvu]vvvvvvvvvvvvvvcvvx\@+@Z#(.XObdu  + +Xm#8h%Bh($$\}#8W<M%[bd{W##WxpqwwZZ0|p=/LCCCJJUUUUYXYYXXYXzzzzcX}+d)MXzzzYzczccczXXzzXXXzzz{cX(]x@}+ko<mk[=/{>cqZZ*pW + (}q8&@%M@8M%8&MM8$obkb#MhMopdqwZmZOmB0LQLLCCJJUUUUYUYXXXXXUYYXzQhmWQUUYUCJJUUUUJJJUJCJJJUYUYzp@@@BapdpqqwUvcvXunb8U + : X0*#&88B%8&MMoMBMahkkhkb#bdpqqwZZk$MLCLLCCJJJJUUUYUYXYYYYJUJJJbqMpJCCCCCCCCCLCCCCJJJJJJJCO*@@@@@$#dmLQOUYXXcccm%c + :: /zoo*&M###***#W8%oaohkbd#opdqqwdq*$@8dLJJCJJJUXXXzXYYXXXYJUCCYpq#pJJJLCCCLCQCCCCL0mmwm0boW%&&&8@@#d#*QYCCCJJYYz8Z + : ]%*M8$W##M####W$&o*aaak#MpdpdkkMo8@@@BhmOQJYUJJJCCCJJCCCJJJCO#ZhhpdbmQO0OZZZmqbkdpokdqdbwd*M&&8@8OkWpCLCLCCCLJOO +: :xQ%*#%@%#######B&#*oaohaBdbp*&h(Xa@@%qmOZ0C0bJJCUJCC0OpbkdbbbdOZdkkbmh*aakkaooahdwa8*odmmwqbkM8%@MQbmCLCCCLLCCLc +: : |w%#M8$$8&WWM####*o*ooh%ob*m|x ;(Q@ZUCYYzZ0LCZCXzYYYYJLQ00Zpdho#WbZwqqqdpdpppwqqpqWMWWhwpwwqqhhwMmOmmZO00000LOX + : >C8MM8@@$$8MM#M####ook&#c< #M;, +0oCJXcCbUmz*....nvczUJCLLOda*oodwqwqqqpppdpdddbp#&#M8*kddppwpmwkmwwwwmmmmmZwU + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== + , , , , ,  + , ,, , , , # , , , , ,  + , , , ,, , , ) , : = , , } , , , <  + , , , , , , , # | ] X \ ,, +, , , , W (, + , , , , , , , ,, , ;) @/ , { , : : x,, , , , , ,  +, , , , , , , , , :: M X ; ( , : > ( # , , ,, , , , ,  +, , , , , , , , , : <,[ x@+(} # ; , =+ ;+X \, , , , ,, ,( ,  + , ,, , , , , , , : ( <z#M|{]+ W + /(}< , , , , { \  + , , : ,, , M|{, , , , {]+ W ) > @ W , } # {v* W\), , , ,>  + , , : , W , , , [>x@/( := |{ [ @/ } |{] Wz) + .* , , , ,  + : : : , , ,, , < |zv+ +>x@/( < # | W\)+ (*< ; ]+X , , , , x  + : : : , | , , :]+ W\)[#v@/ }< #X|X]+ : >x@/(}<= M {m+ ; ;: : , , , +;: ; : : + = , ]x\}+@).(]x\}+@X.Xz[k/{>#(]x\p+cnuX| =/{>#( }+@)# + +#(]x\Y+@)#(]x\}+@ #(Yx\}+@)#(]x\}+ #(]x\}+@)c.]x\}+ )#(]x\Y*. .|[=.{>#(]x\}+@)#(]x }+@)#(]x\}+@)#(]x\}+ ) (]x #M|{ +X +> {/ , , ,[ /{>#(]X\} +#(]x ++ k(]x\}+@)OX|[=/{>#(]x\} X|[= {> : @)< |[= + ] : @0 +pd|u]+ , , X|w=/{nX(]x\}+@).*|[=/L>#(]x +@)UX|[=/{>#(]x\}u@)#.]x :) : M|{ +**0vX(/ #, , @)aX|[X.{> (]*nczvuYz.[=0Uv#(]x\CU@c.z|[=/{>#(]x\}+@)# }+@)# , }+@)<C|[= *(]x\}+@.<*|[=JUZ#(]c\L+@)nX|[=/{woapO\&+@)<0|o=/ (]xvc.*Y#(]x; +@)< =+/( *  +, ] \ +C)<*...** (] +@zCc]u\} @v<*|[=/{>#(]x\}+O)C(; }C@ ;|Ov xW  + |bXvcucZb|[=/{ ( x\}+x....*....*...\}zzX#(]x\}+@) XY[ /L> x\}+ ; >*c*  +v YYJJJXck (zxuuununx.xnn.x.v]mU}CJUXCQJ=/{>vvx.\}+@bZ0|[=/{>#(kx\}+@)XX|[=J{x#(]x\v+@)JX [k/ (]x\ ; MU..  +QQCCCJUmhw@)#vuvvuvvvvvvuvvuYQ(]OZYJ@)<mUY0CU>Xuxvz}+JLpX|[=/{>##]b%}+.)#(]x\} ; . +CQ00LOkbLY}+@)w(]x\}+@)#o]x\}*x.#(]x x+=XM| +h#wZkow0O0x\}p@)#(Zmwbm000Y|[CZm>#(Xx0}+@k#(]U uC L +$oq*owwqwwhhx\}+@)aqZ[=/{>#aoM##khppO|[ZOm0ZmOOO0+J)#(XX\}+@pkXqhhpb>#(] **.. *|[=/{>mq]xZ}+X)mQnU kw +Mpa##bpppoh#wwx\@@@)<Zm[*MMook]w\}+@a#(]xY}XXzLLOqmqwY#(]bmq+@mbX|[h/{> . *....*...*=/{8#(wx\}Q@k#(O0O}+o)LCCJCCCCCCJCJJU@)pw]a\}+@)Zd|X=...*xx..x....*.[=@{>OZ]x\mm@)QM/  +a8Mpd*p#hp[ka{o$#]x8}oo##(hx\}B@)cmwQvoY +<xLd$h$#ba$BX#[%#{WW(hxoW+%)<ddpdppp##bxqqwwwmmmmmmZZZOO0QLLL)CX|o=o*>UJJJJJYYYXXXzXzzzcczcccz@)@X|db/{mh(]U\}+dqWZ=nq + W\)mWB$*M@M*&8&#M$8khko&##&kbbdddddqo&qddpdppqqwwwwwwmmmmmZZZZOQkok&0CCJJJJJJCCCJJJUUUUUUUUYYcd@@Bod*akp0JvvvLCu08pxx + : <x#qB%%$%B8W&&MW$#ooo***oMbkbbbbdp*@hqdddppppppqqqqqwmmmwmmmwZw#k8pOO0QQCLCJJJCJJCCCJJJJUUJd$@@@B*pmQOpOYYXzzcOWpuc +: W )&*MMWMMM#MM8%&##**ooa&aahhkkkh8@$adppdddddppddpppppqpwqwwqmhaWhZZZZmmmZOO0O0QQQQ0OQQqkM$8%%B@$hokQJJJCJJJJc#*cz +: ;} #MB%###MMM#M&$W###*#o8*aoo*o##8$@@%#hbpdddppdbddddddpppqqpq#hW*ddppwmZmmmmmqdbdpaddqhobh#W&WB$mhWaJCCCJCCJJL8qX + , X~B*$@&#MMMMMW@MMMMMMM8&o*oWW88W@@@@%W#oaha#ahhhhahhao**oao*Wdbo*##ba*aahko*ooobw*WakwmwwbaoW8$8ZaaQCLCCLCCCUQhC + , @ }8W$$%888WW&W#MMMMMMWB**M8WX[Ou@@Mdbkako#MaM*aaoaaao*#****a#*&8*pbhahkbkkkdddppd&M&Mdwqqqpd#aWpOwmZZO0OOO0QL00 + , {]jCW&$@@$$8W&&&WWMMMMM$#a#L{?+(}<Mzkkkka%#WM*hhhkkkbbddbbkaW&WM8#bhbbbdddpdddddbd*W#W&hdddpppwbamwmmmmmmmmZZZOZ + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== + , , , , , , ,X \)[ , { ), , , ,, , , |  + ,, , : , , , , , , | : : = , , , , ,,  + : : :: , , , , < , | ):> } , ;: > , , \ , , , , ,  +: : : , , : , > ( [ @/ <: : , , , , ,  +: : : : , , , M { +X ) , #, +;W , ] , , , , , ,  + : : : { > , , ,, , [> ; : : {+ W > , ,, , , , ,  + ; : : , , , , =#+; ]+;W\ [+ } , , , , , ,  + ;; : : , , , , W )n>x / } =# +XW : , X , , ,  + ; : ,: ,W , , , /(}<=.M { + = W\ >+ /(}: , , , , + : , , ,( {, , , |{]YXW : > @/ : | X /( =vM +X : , , , , , + , ) / , [ , ,, , ,\) >x@Yn}: {]+XW > @ =#M|+ W8u .;+ .}< { , , , , \) +, } , , < , , , /; : |oJ+X \),>x@/(}< {]+XW\)[ x /XC . ; {] @/: , , ,  + ] } , , , , @)#(]x\}+@) (]x\}++ .X|[=/{> }+ )#(]x +@)#(..\}+@)#(Lx\}+X)#(]x\}+@)#(] \ ,=/ :# [  + #(,, : [=/{>#(]x\*x ;|[=*..#.n.\}+@)#(]x\Xn@)#.+ \ + += > ( X [=/.}  + { , : )#(]x\.+@)# + +X =, : )< |[=vX > +} + , : \}+@)+ x*}+@ #(]x\}+@)#v]x\}+@)<J| =/{>#(*x\ +@) (]Z\}*@)< + {>#XXx\p+@)#(]x\}+L) X| /{>#( x\ :: =/ >#( +@ < {] (W\ +@x(}< # , ,{>##]x\C+@)#(]m\}+@)+ |[=/c>#(]x\}+@)<C|m=/{>#(]x\}.@) =/{> ( : #(]x\ @: x@0(  +x [.XW : , =/#>#JXx\}+ucYXJYXUUn#(0L\}+@)#(px\}+ X|[=/{># ; }+@) :]x\}: M.{  +aL)_ < #} )< |[=/0Z#(....+@)<n|[x.n>#(0JZ}+@J<YO[=u{>#(]xb*Mbp<8%[=/{>M(]+ @)<Yc[X/{ ;]x\++@) ;|[=/; ( x \ +  +bhdXut-X[nx\} )u(]q\JJ@Y#(]x\}+@)#+]x * @)<*|U=/+ #(]x\0+ ; XQ[= >#(( *  +pCzXXJZd+ ],\ )#(LC0L+@)< |X=M{>#YZZO}+Y)#..*\}+@)*+*  +YJCCCUzb%f>#( x\ +Q)n*|[=.xnuuunuuz@w0XC0LULLQ(]x\ccv.#(]x\}+M)mXa[=/U.#(JxnX+@)<Y|[=L{ #a]x +@)< +=/xO*.}  +QQ0QLmadJZ/{>#(]xO}vunxXxuuuuvvvcxYwZ@)pLL[z/qQJ0Qx\YcuczU|L0p{>#(]xo}*a)8XCX=/{>#UzzQ}+@) X|J= {># \}+@)< [ | .n W +mZOZhaZQQ0[=/{>#dwx\YXz)0qdO0}+@U<Y|[=Wk>Bk]a#}*o)*(]Jzu+@)<C|[=/{ ]x\}+@)<c)[Xc /Z +dmb*dZwmZqX|[=/{>qmq00ZOQ0#(bx\}+0pmh|O0O{>L0wq\}+U)CY|[k*{kba]xM}M@LCx...*{>#.xnvc+@w#(]x\}+@J*nw UwO +doMdqpdqhoq#OOqpwdpwpwQZQU{>#(Zx\}+@QhohxM}+@)..*....>#(]x\#+@)wX|Y=/{>#*]Z\}+v0 dk>x +a#Mappqooqpdd<%@[=/mwqoMW**odd#(]x\}+@)#b]x*....xx..xx..xx]x@}+p)#QLC\qb@b#(]{QWX.  +8bq#ko*dbk#xo8B@)$XaoW*{>ppdpppppp<odwwwwmmmZZZZOOO00QQLLLLCC]mo}b*)UX|[=QUx#(.xnnnnnuunuunv>#*]qq}+@)bX|[=M{>#do$O(.  +Ub8Wa*kak%B##x%}+%*#88x#%+ah<8#&8/kbkbbdd}o#)dpppdppppdppppqqwwwmmmZZ>h*]&\}LJJCJYYYYXXYUUYYYUUUJUU[=@{>bk]x\*+@)>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== + : , , , , , ] : , , , , +: : , , , ,XW @: | :X \ [ /: = , ,  +: :: ,{ , ) |, , , }<=# ;] @ ( < M : , , , , ,  + , , ,, , , +X )[ : =# : : = \ , , , # ,  + , , , / < , , @/( ; |,] ; > : : ;: > ,/( , , ,  + , {] / , ,, , , {] X \) >x (} = , / ; | ] ,, , , , ,  + , [ ,]+X \) , , , [> @Y( <=# {+ \,[. , , ,, , , ,  + ,} , , , , , =zM { + ;\ | >+ (:<=XM; , , , ,, ,  + , , , , \v[> / < {;;X ) x <=; {Q+ + : , , , , =  + ,, , , M }Yu#M ;\)[ ; |{]+ : [LU@ +=#M| X , , , , \  + X , , , , | ]+Xm\)[ , #M W\)[>n@/ } =k;u{ + }< , , , ,} =#  + @ , , , x {] \)[>x. (dc=#M|+]+XW+ > /CYU.. c{ +XJ0L[ * (} W; , , ] +)  + < M , , , + =/{> (]x\}+@*#(]x @)< |[=/{>#(]x\}+@) }+@)#(] \}+@) + /* x + ,< #:]~ ;+@| ]  + /~ < ,, , , { # ]x\}+ < |[=/{>n( +\}+@)< |[=/{> \}+@) X.[=/{> (]c\}+@) + + x\,+ {> (]x\} : + *]+X : +@) ,|[=/{>#(]+ ; |[=/{>#(]x\: @)<+.[=/{>#(]x\}+@*Q(]x\}+@).X|[= {># : +@)#( x\}+@) x\}+ )<x|[=/{>#(]x\X+@)#(: ).>On +wWoJM]+ , ]x +@)#(]*..+@)<Uc[=/{>; ]xn}+ #(]x\}+@) (]x\}+@) X|[ >: #0| +pdhOQO@/ , ]x\}+UXx.|+ vvvccuxvcx@)<Jxn=/{>v(]n.}.@)n(]x\}+@)pX|[ ; #(]. +@ [= >#(]x: +@ .(]x\.+@)UnQ[=..>v(]x\*+k)m(]x\}+q)< ;=/{*#(] *}+@)0(] }+@)#(Ox\..*....* /{ *(]uu}+@)# +x.}+@)#(]Y\L+@) ]x\}+@)# \}+@)#z]cv}.@)#(]x\h+@)nczv=x{>0L]O\}+@ |[=/{>#(]xZ}+@)< =Q{> ; x\}+@)) : @Cn +XXUYYYzvOBbz(Yx\}+@ |[=/ + (]x\} = MZZ* +JCCUULmbpZ+@)<QZ[zuuvvuuuuuuuuuX|w=/m0zX]x\}XnUQCY[u/{xu(]X\Z+@)C( xo}+ +.(]x\X \8v>b +wLLQqbmCYY\}+*d#(]x\}+@YCLLL=/{c#X]x\d#op<#|[o/{>#u.x\}+.)<Yv[=/L> (]x\++ )#(0/(w0=#v +qmkaqLQQCJ]x\}+0J0YLQLCC>#(]xJJ+@*OX|[Cmwmqm0LQX+@)zXm[=/{uU(]xm}pq)<do[&/Xv#* *+@.xun[O/*>#(]x }+.)<m|[=C{>#{%uX+ . +k#owwwZOwkp(]a\mZ@zXX|[=h##*kkqp}+@Q0ZJLLCJUX(cxn}zc)JL|[x/{>#(]Op}qhk#x]x\}+@)0X|[u/{Wv ++ v +*M#ppwpakm{O#(]x\}+@)ooooap{>#(]h\}+@)B(]x\}kpp#(]xmdm@)nnx..x*...*...+@)b(].\}h@)h(OQQLLCCJJUUUUYUYXYYzzzcz<bq[a/{v#(]xQz+uuuunnuunnnxxnn}+B)0Z|[=k{>#.]x\}+@)%k<* * +k%aoadbpW&<oM&=/B>ookx\wqqwqwwqq/#>mmZZO00Q0QLLLLCJUJUUJJUU@)bX*[=zcz#(cXnuuuuuuuuunuunuux\*+qwpX|[b/{>#&]x\}+@*0W...* +q&h$oka8$#*)&*|[%/{>%Maxpdpppppp[M/qqwwqwwmZmmZOOQQQLCLLCCCC+a)#X|UXXXXcvvvvuuvvuuvvuuuuvv]x\}+w)#(]b\}xpw}.x. +U*#@Wa8@ao*&8)<%|[b/MMW%]xddddddXM*=dppddpqqqqwwwwmmmOOOO00Q\*+M)<LJJUUUzv(]uvcXzXXYXzzXYU#($xbdk@)kk|[J/{dp(#xX.0knxu +@8*&B8$BW%8&WM&@*hhkWWo8#bhkkkbbpM$ppddppdpdppddppppqqqqwwmmOaa*#0OQQLLCUXuuzYUUUJJJJJUCCUY*@@WohMohpZCczXCXuq%dcxp&vx +|&bo*MM&8&WMWMMBWo*o*M*#&aahhhhka%@Wddddddpddddddddddddpppppwbo*&qmmZO0QLLCLCCCCCJJCCLLCLq&@@@@%apmOZpOJUYzYXQ8bcYb8&U +[w#*MBW***####W88####**o&*aaaaa##$@@BMhkbkdbdbbdddddddddddddqd##WpqwwwmmmZOOO00Ommqqpwwo*B%&8&B@@ook0UJJJCCCCXp@0Uha&% + #8*#W$8##M####&$W*####*&&***WMM@#$@@@$&#*oooooooooaoahakdbbhW#a&*o*adpppdppddkhhbaabkbohb*M&&W$@kbW#ZO0LLLLLLJdMCakpQ + \XoMM%@8MMMMWMW@&M####*&8##*%$8u{M@@8#MM#MM%W#W###*#WW&8W&&WMaho##MaoM**oaoM#o#adb8#obqdqdho#&%@$pb#qZOO0O0OOOLwwmOJC + ,<Q*a8B@$%%&WW&&WWWWWM#M$#MBkf-- >8$o###*M8&W&8MMMM#MM#####WMW&8B&khooooaahhkbdddpM&W&apppqddaMd*MZpwwwwwmmmmmZ0OQQQL +, WzQO8B@@@$8&W&&WW&&WMM$Wb]/( ,M8M#M#M$B%B####*#**###***#&88&8Waaahhhhkhhhhkhhko8M&&obddpdqpqwoOqqqqwqqqqqqwwmmZOO + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +: , : , : ,, , : , , ,, , ,  + , , x , : , , { { \ : , , , ,, ,  + W\, , , , : , > , = : ( , , , ,  + , , , , # ; : @/ , , @ {, , , , ,  + < M| , , , )[ ;} = : : , :, : XW )[, , , , , , M  + , @ } , , + [ #M| ].X @ ) ;;( = , , , , , ,  + , , , [ \x[ x@/ < + +XW\ ,, , , , , }<  + } , , , >x /( <;#M , > (} , +X +[ x * <=# , , ,  +, = , , , M {n+X: ;;@ M ] X, >: n0# + .x , M , :, > /  + W x,, , , , [>CY/( < , |{]+X ; @/(}<=; +mW ; /(} : , : # {]  + }< # , , ,, , }<=#MwC]+ W [uYwJ(}< M|xCzvu\ :@L ; @/ : \ @  + , , @/ M +X < |{]+X [Cv@/,} # |0.*XW\)LCx .(c< MmO]:; [>x M ]+X , :} =  +[>x / : ( \}+@)#(]x\u+@)#(]x\}+*)#(]x ;)<. + >#( \ +@ #(xx.}+@)< |[U/{> +} + , >#(]x\}+@)..*[ = | +;+ > @ /{># ,x |[= : (]x\}+@ < |[=/{>#(+ \}+@) (]x\}+@) + ; |[ , ,}+@)<U|[ XW\)  +(. # | ,, , ]x +@)< ; (ux\}+@) ; /{> .x\u+@)n( \}+@) =/{ (] \}+@) , :{> ( x\}x@) X|[=/{>#(Xx\}+@ ; |[= >#(nx\}+@) .|J=/{>#$]x\X+ )< =/{>#(]x : )#(cx\} **x.xx. >#Xcx.}+@)<.* >#.]x\}+@)#(ax\}+ ;|[= ;> :\} @)#(] }+ *z/( + |OpwOCq0[+@,#X.v\}+ *< |[= {>#(]kwqZJUzX|@=/{>d(]x @)# ]*\ #ML{] +) >pqqOLmO\}+@)< |C=/{ x\}+@).(Ux\*+@)#(]x\}+@)# ]x\; ..<*u[=/{>#(];\}+@) |[=/{>*(] :)[>  +<= 0wCzuUb]x\} )QX|[*....*. * #.n*.}+@)#( xnv+@)<O|[O/{ +\}+@)<.|[=/{U# x\U+@ ;|[=/{># ; .#  +L{\vnuvvnYa(]x }+@).*....*....*..+@C#(*x\}+@) ]x\} + X|[= . ; Xmn  +vCUYXYzcXU{8h(]x0}vununnnn.x.x..x\0Y@UUu...cv...]x\}+;) X|nnu{>#(]x\Oq0)aX.n=/{ z(*x\}+@zvX|[=/ +(bx\ )#w]pd}a@)#w]x\ +*)#(]x\}+@)qQ0x\}+@)wk]b\}+@un..[=/ >x.]x\z++)#.]x\.+@)<\QO>:@  +OkpoaqOQQL#(cYLO0LLJczu./{>#(vx\}+n)#kbM\}u@) * =/ * (]x\}+@)< [=*{>Q(]xJ}Q@Qo=+ |  +L*M*pmwwwdhkpX#hkw0>#(]xo#M#akbq[=/JLLX]x\}+@)#h]x\}*@.#(Lz\}hX+ [> +0WModpqboap+w)<@|[Z/{#M##*b}+@)<p|[=/{>#v]u\xx....|[=uc>vn]x\0LO)#(....*....* ./{>#(]Z\}z@)dX|.=/p>#(]xU * =  +m#dpdbo*bpxqq+@@.(]Z\Ok@)...x....*....=/M>#w]x\C+p)<*|[k/{>#(L* W\ +LdoMboodddbdx\8+@%oaa[=wwwwZZO00+k)LLCCUUYYXzzvcccvvvvuuuvu>Qw]dq}uvuZ(]xkwd@* . *} +C#BaMhddb&Mko%x\}B*#hX|ppppqqwww\ad@O0QLCCCCJJYYXX}zzcccvcc/{d#bkxcvvv)<Xvvvuvvvvvvvuuuuuu|[=Zb>#(]hd}+@)M(]a$}+#BoX|dddddpp]oh}wZZO00QQLCLCCCCJJJUUYYYY=k{*h(YzXzXXzzzzczzcccc]cccv@c#(*x\}B@)<da[.Zkc*.. +=Qa%@Mo@Bh[=M{>#8]x\}&88CJCJJJJJJUUUUUUUUUYUYUUU@)@X|pb/{>#(]L\}+kp*XLxYhC.n + \)k%%$@8&%&W*a%Bkhha8&WBahkkkbbdo@hpdppppqppqwwwZmOOOO000QQQho**QQQLQLLCCCCCCCCCCCLCCCLCLYb@@8#*8W#hm0YXYQQcL&#JnC%O[ + 1<aa#W&%%8WWWM8$#oaoWWM8Mahaaahh8@%kdddddddpppppppqqppqqmmwmh*MWwOZOO00QLCJCQQQLLQLQQLLC0k$@@@@MahdphbQUJUYULaMCXO&Bp + XbM&B#*####*#8$M*######8oaaahooB@@$Makbbbdddddpdddpppdddppwk#W#pqwwqwmZQUvYLQ00mmqqmwba%@$$$@@@8*kw00CCLLCCUL8hUZ*#B + : (%M@$&#MMMMM&@B###M##MB#***MW$@@@@@$8M*oaaaooaaaaahkbdppdbW*W%ohhbpqqwmOOOwdbhhoaaha&WM&&88B@@BhMWk0000QQQQCOMpwokq +: ]mM8@@&WMWWWW@@WM####M@M#*%@d+Q8@@BWMWM#MB&MMM####M&88WWM88aa*M&8*o*ooaha*###aboWohddbdoM&88$@@*d#*wZZOOOZOOLZbwqQJ +: xk%W$@@$B%88&%8WWWMMMM$8M%*f| ]+M@*#*#*W8&W%8WMMWMMMW88&&WMMW%8*aa#WM#*#MM*oohda$8W#bpddkka&BW&@kqdqqqwqmwwwmZmZQQL + |aB8$@@@@$%%&8&&&&&WM%$w] [ @/%##M#&@$$BW#####*##*oo*#W8%$@$#aahhaahaahhhhhha&&W8#kbdddddkbLqWqqqpppqqqqqqqqwwZ0 + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== + , ,, , : , , , ,  + , , , | ] [ , , | , ,, , , ,  + , , , / } | : : , , , ,, , , ,  + , , , , , } ; ;+ , : , < , , , , ,, , , + , # ,, , , X ; > : ; , : , : M , , , , , ,, +, , , , ,, [ @/+ = M ; ) , , , , #M| ]+ ,  +, : , , , , =#M|{+ : , + =#M , , @ , , W  + : > W\.[: ; , X, ; # ; + W\)[ , ( + , : = ]  + : , ) }<v#M + \) ; : ]+ ; >Y.+ +M x ,, : \ x  + :: , (} , ]+X0C)[ ; (}<=#M: :\)[>x@/ ; #n + ; )[ # , , M  +W\ >x , ,, , X |{]: : >x *x0Q=# xYQwC[>x /(zJCXcx{ ; WzU* : W , , # { ), + < | , , ( +XW\)[ + }<= * +uv\ >* (uUuvM {zQc * >;: (Zc= + +XW } ; , \ <, + + W > , , (] +@)<++ ; (]x.. .*. [*.{>#(]x\}+@)#(]x\}+@) |[= >#(]x\,+@) : [=/ >#( x + XW + / } M , , , #(]x\ ;** ++@)<* [=/{>#(]x\}+@)<xn[=/{>#(]x.}+ * = + ;: @)#(]x > @/  + ]+X ): , =/{>#(]x\}+ +|[=/{>#(]x\}+@)..n[=/{>#(]x\}+@..X|[=/{>#c]x\}+@ . + ; , ,, /{.#(, #Mn{] +) x*/( < ] , ); \}+ ..*.[c/{>#(]x\}v*)# x  + Mxm] X # :, }+@)<xxx./{>#(]x }+@)uYc[=/{> (]xn.+*.nc|[=/{>xxuJ\}+@)# ; \}+@)#( ; @):X ;{ x M + ,)[wc@/( >: ]x\0c@nn*|[ *..nvuun..@)Xzux=/{>uunu* .@UYX|[=/{>#(]x\}+@)<q|[= ; (]x+ +@ ;X| /v>#(]x +@)< +[= +cv\  + =LL|{]=: (]uYYu@) .*...*#( .*}+@vzzU[=*x.u(]x\}+U)#v*x\};@)< ;[=.{> ]x+}+ * | :@/(}  + ] WOOQ>x =/{>#(Qz*}. *X|[=/{>#(*..}+@)<Uzcn/{># ] *}JQ)#(]xOO+@)x@~(Uzuuvnvux*}+@)<xux*+ (]x\O+@)<uYUc/{>#Z]0\}+ * |[=/{>v(] .c+@ X|x=/;;#(]x\}+@; [>x@  +vCCXcnuuvn@)<h|[CU{nnnx.x....*...x/Cc#zcvnucn)#p]x.x*@ .X|[=/{Y#(]xu} )<n|[= >#(] *+ =CM  +OXXXXYXzXU}kMo#(]* XCQ)[  +JQOCJJLOwdqw}8B)#(]x\}+...*. =/+ #(]x0Z+kpwkdph*{>#(] *xx..X|[..{>z(]+ }+@X< [ . >#x n0}<=  +h#bOZqdpZL(]x\8+@)JJUY=/{>#(]x\}+wmLX|[=zXJYvxx. +@)< =/{ *(]xm}Zwq<pbd=/vvx. x\} *) xx=/{Y*( \}u@nvmx W  +WaboobmOOQ>Owo$\}wmOZZOmm/{>mZOL\OOUXYYUCJYcu*. ;+@)<;|[= *>#(]OO}OqbhMhJu.{>* \*...XX|[=/{> ].\}.z)# ;x\ @) [.cUU#(]Qwwwdk#Xnx\X0@mCc|XC# ]  +k*#*kdpdhokpq{>MM]xqk#M#*od[=/{>Zq]x\}un....* ;( +@ #(]L\p+@)...*....*...\}p@)U0|[c/{Z#(]x0b+@)#(]x\ @)uC|LL/{>#(mm\}x.xxx...*....]x\k+@m#(Ld\}+@)C.. .M  +nko##a*hbbhJUzccvun....* ># + .vC<0Q[xxn>#UXvuuuuuuuuuunx*#(]x#}OO)#b]x\}%hv..*)[ + }#&#MokaM8##&$|[@%M*#(dpppqqwwZwdp/CCJUXzvuuunx... * .*.\zL@wmXuuuv{>zc]uuvuvuuvuuuuuu#(hx\d+@)<kp[=/{d#(]dpkwc*.<= +] XqBMo#%@BM+W&ph]mp}+@doX|[*/{>dh]cQmY..W +x@/(@BM%@&]x8BM@88X|[&$&*kdddddd@o*pwmZ0QLCCUYYzccvuuuuuvuv#(wdhq+YXYYUUUUJUJJUJUUUUJUUUUU/{%#(]d\}+oq<QZ[0dko#OcJwQux + | ]%B@@@%%$$B8%@W**#&%%%#kkkkbddM%hppqwmmOQQLCCJUYYYXXXXXzYQdhopCCCCCCLLCLJCCLCLLLLCLLLLJL*@@8M#W#*ad0JUJ0ZC0#MOcLoqc + [ x#*M&%%88&88$@&###&%&8Moaahhko%@8adppppqwwmO00QLLLLQLLLLCObaMk0Q00QQQ000OO0000000000QLOhB@@@@&#*akhkZCCCCCQhMqUQ#%k +;=#MO8%W*ooo*##8@8M#M#M#WW#**oo#W$@@$MhbddpppqqqqmmmZZZOZZZZwa*Mkmmmmmmwwwmwwmmmmmwqwwqbo8@@@@@@@%#hdpwm0QQLLCO*#OZoW8 +; \ [&B$MpQwaMM8@@&#M#MMW%W##M&%$@@@@@$&oahkhhhhhhkkbbdppqpda##W*hbdpppppppppbkkhaoooa#&8%B$B@@@@@W#MawmZmZZO00wokqhab + } =LB@%hwbo##W$@BWWWWM8@B#M8$8Wo&@@%MM###WM#oooooo*#MM##*#Moho*MM*aaaaaha**#M#aoM#oaaoaoM8B$@@@@&o##dqwwwmmmmZwddpwL + XW\0B@@@B%8%%$@B%B%%8%@@%@@*z}<=bZbWMMW%%88%WMMMMMMMW&&&WWMW8%WooMWWWWWW&WMMM*#8@%Wohhao*#8@@$@@WhabddpppppppqqqwZO + : <=h##MM*o**ooooooao##aaqc]+ W\)[kbk*#**akbbbbbdddppbbkao***kpqppddddddpqpppdh*ookpqqwwqqkkqpohUn0ZmmZmmmZZZZZ0O0 + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== + , , ,, , W , , , ,  + : , , : , , { , , , , + , , ,, < , , , , +, : , , W :: , , , , ,, , ,  +: :: , ,X , ,}<=#M ; ;; : : , ] , , ,, ,  + : , ,, ( , , W\ + : : , : : ,[ , , , ,  + , , , + , , + : , : ; , , , ,  + , , , ,/ , , , ; : , ; ]+ , , , ,  + : : , , , , ,, : ; : : : + ;@/( , , ,]+X  + : : , , , x@ :M|x]+ ; x@, : , \ : ; . ; ]+ ,, ,  + : :: , , {] W\)cJX@ ; #M|{] ; x@/(}< +.. ; , , ,,  +)[ : # ,, )[>x@+ .cYc{ ; .uYCJv/( =#vvvvx ; u. + # = , , [>x + # : , , ) ]x\}+@ #(; + * >#(]v\}+@)#nxx\}+@)#(]x\} +#(]x\}+@. X|[= + ; : ,/{ ,, \}+@ ,  + @/(}:, , [=/{>#*. +@)< + /{>uzcx\}+ + |.*.nXUU]x\}+ #(]x\. ) | ; {>#(]x : )++ ..*...<*..=/*ucXXu.}xvunX|[=/Y0p#]x\}+@)#( + ) + *. +}<COU|{ }+@czXn.= * (]x\ +@)<..*=/{.vXXzvx+@)8#bpwOO@8# ] +.xn*X| /{. (]x +@)< +=/ + +.. ++XcZOC>x@ ># x\nvcu#(QL0m+@)<LmU=/{ + \} *. + ..>#( *} < ..=/ ;.. +@uLCXvvn|{/{>:(]vcv+...*...*....*.vYUXzzzvvccvu#x..** #YXvuunuunnnxxx.xncJCCJCUzuunvcvvvccun...*x<Q0U=/{>#(]x\bkbmJcn. *.n..*x .un.< * = >..]x\ +@)x.. ++{xu +XXzXXXXJLmh|[=/OCz(]vuuvuvvvvvuvvXCLCJYz+@)#(ahaowY)#(]x\} * |[=/nYJ(]..}*@)xn|[ucc>XYvzCUv +  +aa#*bpwpddbp\}h*a#*...* . * [xJZ>YUzunx+YXxXnUZZCc#czv *  +ho#addbkkbppqx*88@)pkakd/{>#(LLC}O0CXXXcvvvuun.x....*#*W$B8#ohLpmU\}mmJddwxLJJXzvvux.. +(] * ...cCOwZC>vvvcczccccccczcczcccccc+@hhX|m=/{wdQUQpZ+@wpOO0Ccu* + ,\08&#M%BWXMMM####(]#MW#abddppqqkhb(LLCYzzcu*. /{>#(] ..@zLmpOJ/XzzYYYUUUUUUYYUYYUYUYYU\}+8)<dq[=qbO#L0QQwkkwLCQLJ* +,(xa%B%B$B8&88&&%&#ha#MWMMhddddpp*WoqQ0QJUzcv.. X > .*.XQqdOJXYUJJCCJJJCLCCCLCLLLLCCCQkB@$&#***akwQCJJQ0OphpCCZqX +,]+Zh#W8$$B%8&W%$8#oo#####*kbdddhW@%oq0QQLUzvn. +/( =# .*uY0pdZLJCCCLLLLQLQQQQLQLQLQLL0Zh8@@@@$M#ohbbmQLJCCCmhkOCpWO + x@/Y*#MMMMMM##WBBMM#######ohhho#%@@$&hqZ0LJXcu*.{]+XW\ .*uXLZbbZLLLQQQQQ0000OOOZZZmmmqdaW$@@@@@@$MabdwOQQQLLLOdhdZd&m + {]dW&%M##MM#WB@%M#MM###M#o##MW%@@@$WabpwwZQJUXvnxnuvccXJ0mbkbdqqmZZZmZmwwqpddkkkhkhoMW8BBB@@@@@8##apZO00QQ0Qwkbdd*O + x@h%@B&####M8$B&######MM#WM#d0p88*bbbbkkkdwOQLCCQOZqqqdbdpdbhahkkhkkkhho**ohk***akhhao#W8B@@@@BM#*kqmZZmmZZZqdddbC + |{q%@@$B888%BB8&WWWW&8WMdCx[>xmWhbho#M#*hkpmZO00OZwpbkha**#*kkko****o***oahaM&8W#akbko*M&B$$@BqCOdpppqpppqqpddqpJ + [>xnk#MM*oahahahhkbbkakC(}< M|mqqdkhhbqwZ0O0QLQLLQ0Zmpbbkkpwmwmmwwmmwmmwmwpbkahkbqwmwwqpddpk0)[>LZZmZZZmZZZOOOZY + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== + : , , : , , ,  + : : @ , : , , , , : ,  +, : : , , , ,, , , , , + : , ,  + : : , , , , : :: , : ; : : , , ,  + ; : , , , , : : : :: + ; , , : , | , , ,  + ; :: , , , , : , : : > ,} , : : , , ,,  + : : , , , : , , , } ; ; : , , , ,  + , : : , , : , , , ] W ) : , ; ; ) , , \  + , : : {, : :: , , ,[ (}<=: : XW : :[. ; : +X ,  +, : : , , : , ,, } {]+vW\ : /(}< , W\)[>x < : :, }, \  +, , : , , , , , , { )[>x nY} ; *XW\ [ @/(x..*M| ,X. ; W ,  + , :: , , , , : ] W /(}<= *x+X::) + +=# |nn + @/u}; ;]+ ]  + , , , , , , , =/{ }+@)#(]..}+@); ]x + @)#(]x\; @ + + (: \} @)+ x\}+@): ]x\}+@) \}. < | =/ >#(] \}+ , : +,, , , , , :=/{>#(]cu.+@)nX]x\}+@.JzLx\}+@.*un[=/ >#;] . +@) |[=/ : : :, |[ ,  +, , ,, , , ,X|[=/{Xc.]x .*xuuuun..{>Xc]x\..@)+ [=cJU#(8x\}+@)....x....<.x.*/{cXUUY\}+ .x.=zX>#%abdmQL)8%|[*.x>#+ +@)cX|[=/: : : :  + , : , :}+@z<LCu=....*]x\}* )#(]x\}+@)#(zn\}+@)cU|[=/{>vv]x\}w@Z#(LYcccvvcvuun/{>LC]x\}+Y0OOZU=/{0U(]x\}ZY)#(]qdpp#)#O0Y\Xc@ + +; ; ; + : , # + : =/{q#(]c\}+cccc|[0OLZpwZx\}+@)JYJZL/Q>#kkb0}+*.#CXY\}++ + + ++ +: , { } ,: X|[qZC>YYYUUY+@)<m0[LQ{>0ppw0z+@)#Q]x\} + + +  +, , / , @)q(]x\ + + +  + , =/{># ,x\ @)<dm[=/{mqpoWh}qpwQXLwpwZ0C(]xunn@)<q|[bahhkwYx\LZO0<QZqbdp>#(vx\LJ@)<ucc=/{a#(] * + +  + , , # \}0pwk#oaakpmQzcYOmmwL)<O|[=/{>czYQOpaqCuvc[=/k>#(... * *  + ,, , , / #(]u\}wddqX|[=/{&*(]x\OqwZUmmxdO+@O#(]x\}+@)XC|Lkh{>#..**...*.... + , , ,: X| /{>#(]hk}+@)hhpk&&{>#(]x\OwqwOL|[=/{>#(a*o}+@XXXXYXX{Zqqkm\LqdmOLU[=/{nn(]xczc@JLL|*#/{..*....*...* + : , , @) X|[0/{>ak]x*MMoh<o%&#MWW*kwx\}mwqmX|[=88*ak]xJJJCCJUJU=Opdab]0\}CQ0OZOL=/{>v(]x\YLOL...*....* + : : , \}+@)<qw[##{>#&&oh}dbaWW*[=**h#(]x\}+aWM*#[=/{>#QQQQLQLLLLLOkkob#p]x\}+@)L0dk=/{C0C]xpq+@)<#|[=c{>x....*. +: : , (]x\}bbbaWW[WBBW#(bbbb+#WWWM#MWWM*ohaoah@)Qhk#%@@@BWM#ooaao#MWW8%&M##W8$@@$#kbbbbdddddppppppqqqqqqwqbaW#ddabmmqkhbmCJCJJ0qqLXzXLbkQzCqkbdbwCzcJZq + : , MY#B@$B8WM#**#M&88&WMM*oao**M$@@@@B&ohkkbbbbkkkkkbdddppdpda#WWhdbhhbmOwdpO0Q000mhaq0JXUqhZJ0mCXQwqqOQLQ + , , \ [q%8WMMMM#M##MW&M**ooooaho8%ZU#@@@BWM#oo##**oo**o*##*oao#W*h*MMMah##kwZZmpdwZZZphahdmCUOOYzUXzccXULLLC + , , , =U&WWMMMWWWMMMM###*#MMW&BWmW\)[M@#hkhh*MWWMMM***###WWWWWWM**#WMhbko##**okkhakqmOOZqdkkmJzzccczcczccccc + , , , ,W\qqoW&WWWWWWWWWMM#MW&8av@/ =#o#kaa*W88WM#**ooooooooaa#WWWWWMkbkbbdk#&&WW#*ohkpm0QQwdwOOUcuvuuvvcccz +, , : , }<=#MJaWWWWWWWWWMMMWbn# \)h*a*M%$B8M******ooooooao#WWWW#hkkkkkbbka*W8Woaohkbpdhad0Jzn..xxxuvzzz + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +: : ,, , , , , : : : :( , , ,  + : , , ,, , , : , , : ] , , , +X \  + : , , , ,: : , , , @/(} : #, ,  + : , , : : ,, , , : ; : : , W, ,  + : , : , )[>x@ , , ,, ,>x@/; ; , : [ } | , / ,  + ,: : : , , } ] , , (} ] \ , :# x , , + , : :: , , + @ : , { x@ , , : )[> , , ,, +, : : , , } # {: , # , ; ;M|{ @, , ,  +, , : , , ,| +: \ x , W\)[: :<= :: |. ; >x { , ,  + , , , , , , > / < M , W /(}c=# :XW\)[> =#M|{]: )* :: : {] ,  + , , , , , , { X x@ #M|{ nX\) ; .n.#M| +XWx.. + <n ; : ,, (} ,  + ,, , , , , , x ;(}<= X : +(.<=: ; ; x@nx +| +Xv\ : /: : XW\ ,, ,  + , , ,, , , , ] + )#(]x\ + ) X|[=/{; (]x +@x.X|[=/{>#(.x\ ;@) + : ]x @)#(]x\ + X| =/ #( x\} @)#( x\+* )#( ; + [=/{>: ]x\}+@) ,x : + , , , , , , < =/{> .*\} @) (]x\+ @)#(]* +@)#( + += | +  +, : +@ <, : , + **]x\}+@)#(]*...n)#..x\}+@)#(]+\}+@ #(]xO}c@)*.].vzzC)#(]x\}+ )<: =*.># * :  + :: ,} @ : { #(]x\u+@cYX|[zJ{vzCCYLJ+@)#(]x\}+@)< =/{> ]x\ @)#0JYUCJCJzvXQJXXJJX]Jm0zu)<..*.. >#(zx\}8obpZLL=8{>#(]Q\}+; X|[=. >#(] + +@);X|v./ :  + : , , ::| =/c>#(]x\}+@)#XQx\}+@)#(+ }+@)L0]x\zJCXcX|[LJ{U#(+ }x@).(]x\}+@)<X| ; ; + , , , <0OmZOZZLUcx\}+@).X|[OmCcvccx\}+@.*. [=/{O0Uzx\}+@)....zu+@)#(]ULLCY)#(]*x.+@+ |[=/{> *]xCn+ +  + , )< , (]O\}+@)#(]x\&h@)<UJ00JUYXc]XYCL@)#(]nc}+@) X /*u#(Cx +  + , , : ,[=/{>#wZddZQLLLCLLCCCJ#(#x\CCQZZOOQJUXc#(]x\Uz@)<uv[=/Zqq(]booMkLJX|Xz/{ (]0\}+ ) ..*=uvCO( +  + , , , )< =/hpbadOQQ0QQQQQ00m{##(]CJ}+@) +  + , , , }+ X|wb##b#(]x\}+@)#(]x\}+zccccccc{>XYXYXz+LmmqZ[=JQ0wk]x\}UU)<J0[=/*>#vuxcXY@00z|[X/ .*  + : , , (] +@)QX|MM/h*#*ob\}wq)<*okwQLLCJJUUYYXXzXXzzc{>#zcx\0q@dpX|[=CwqL(vxcCU@)CLv*..{vc(]uJZdZ)#(]xwp+@)<&hCu..*. +: : , [ >#(]Q\bhd)*W#o=ooo*o]#88+@kkm|0QQQLJ(CLLLLLLLCCCCCUJ#0pdhk0@zzz|[zzccc(Lm\}+CLYXUUOd{>#(]k\}+mkdwOLXu. + : < [=/{>#(]*a}+@h#WW#o/{>#&&*\}hhpwmmO0Q{>00000QQQQ0QQLQLL>bh*aOJUUUYYXXzzX>#(*x\mq@)<Lmbb/{>#bpx\ZbqJXULOQ + : , ##kdddd@)#WMMM#*>**kxa#kpppqwmwmwmmmmZO0O00000QQ/ka#o]LLCCCCJJJUUU{>#hMobbp@)<mkh=/{>aO]qhahbQzYw + : , /CdqaMhb#&*bbkkbka#W&#hkkhMWab#%#dddddddppppqpqqwwmwwmZOOmkoM*qQ00QQLQLLLCLLCC0dM*bkhp0J0kobQQmQCmmCZooZXC + , , |vadb#W##BBMakkha*WWMakkh#W&W*a&@$#hbbbbbbbbbbdpdpppppqqqwpk*WMbmOOOOOO00000QQQLLwaohhhbw0Zk*pQLCCCCUJ0dadO + , ,, [>wah#&M8@%WMoo*M8&MoaaoMWW8WMM%@@@%#ahkkkbbbbbbbbdddbdddpdh#WMkpqqqqqqqqwmZmZmwqqdh#oao**###*kbZQQLQLCLmbk + > , : MvhM&8$@%WM*oMWW#ooooo*MM&8&*%@@@@@&M#*o**oooooooaoaahhh*MMMWM*ohbdddddddbkhhhaohkoW&888&W*akdm000000QLQO + | , [>oB@@$BWWMMMMM##*o*o*M8%*<=#0%@%M*##MWWWWM###MMMW&8&WWWW*o#MWM#####*o*####akoM#okkka*&%8M**hpwZZO00O0Q0 + , #M#@@$8MMWWWWMWM##MM&Wpx+X [8#aoa*W&&&WWWW#MMMMMMMMWWWW&%8Moo*##*****oahhkoW&WMhdpdk*&8WMW#bqqwwqwmmZ + : )[*B&WWWWWWWMMMM&&Ww[> =UMoo#WB$B&WM##MM#####**#W&88%8MooaaahhhkkkkkkkhWWWWMohkbdk*MM*ohdqpppqppq + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== + :: : , , , , , , : , , ,  + , : :, , , , , : , : | ,  + , : ; ,, , , , : , x / , |, ,  + , : ; , ,, , , , | ; W ; : , ,  + , , : , , , , ,, , | [ : } , ,+  +, , : , , , , , , \ =.M { + \ : ,  +, ,, , , , , , , , @ ]+X \; : , : ]+ , ,  + , ,, , , , ) , , x@x(: :{ : ] ,\) >+ /(} , ,  ++X , ] W\, , , , = |cn+X ; x@ ; , \) :(xx + +X , ,  + }< , < , , , , = |{ : )[XZx/ : #M|{]+X: x@/(}<= ::]u + :@ |, , ,  +|{ \, = |{ W , , , , W\; /(} +zZc],X . * xz/(} #XCUnn. \ : xJ.( #M , ,  +[+x@/ = XW [ x (: , , )[>+@ ; M|{. * [.*@ (}+ x*.+XW\cu>+@ (}, #Qu{ ;)[> M ;  + #M ]+ \] } |[=/ # , @)*(]x\}+@)# x\}+@ : | =/{>#  +W [>+ /( #(] * )#(]x:}+x) + : )#(]xx. @ + /{>#(]x\}+@ X|[xnX>#(]x\}+@)#(]xz}+@);@= }+d) X|[=/{>ncux\}+ )#(] ; +@)<..[xL{c#(]x\}+@)cX|[=/{>#(]x; )#( }+ ) ;] \}+u.<.n[0/{>#(]x\}cx)#(] :@) (]O0}+@*#(]*x}un* X|w=/@>#(]x\}+@) :\}+@)#(]x\}+@< : {. + =@O#UzcUOqb)CX|...*.#(]x\}+@+#*]xu}+@ #(]xdph@)....*/{. * \}..)#(]x\}+L); ]x.( ; +, \) @ x\w+J)#(kxk}+.x.*....*.. ]xn..@* X|[=xv.*. \}.@)wX|vULLY#(]xq}+@)#(]v\} @)nX|[=/ #(u] ;  +, , | ](]x\}+CzcX|zUQZdW*]x\xnnnxxxx...n#LzxzzuxvXCx[n/{>x.*..x+dmOX|[=/{>#kmxk}+xu*X|.=/{>#(zx\} u)CQ@ ;  + , xY#(]xhZ+@0ZmwOQ/{%#(]vvuvvvnn..nY0>#LLcv}+@)cvXLQCXz#(.v\}OC0#u.x*c+@)OX| /#U +  + : < M/{>Mh]xbdwO)#zcccvuuunn|L0/0C#(]x\}+@)#.vx\}+@a*W*daa{a*(]x\}. )*nnzY/{>#(]v\}+*) +[ . *v  + ; W [8/{>k*hm\}+Q0Om|%*/LC#(]x\}+@)<whZ=/{YQOZwZQQQXvX|[JO{>#(vU\}+d)dbd[=o{a#XUn..*@)<.czc.{>#0]x\}+@)u(]J\}qbqpaoa*&{>#(].*...)<.xuz/{a#(]x..x@)C.* c0L + : : X #(]xvvvYULmOOZYvX#bdx\}wdqCZ]xc}+qu .x0p + : , + )#(]xk}+C)JJJYYUXYXzzzz}+@)#k]x\}ZqkhX|uunnnxnnxxx..x#(pwJ..Xbm +, , , \ +@%dh]O000Q0<QQLLLLLLLLLLCCLLCOk[ko{UYY]x\QJ@ccXvccvvvvvvvuv+@&<d|qq/{>wb0nnmaU + , ,, :\}@@)BBW[=*&*#($xoMa@dbbdddph*#qwwmmmZZZOO0=0000QQQQQQL)kXo#=LCCCCJJJYUYYXXXzzzcccccv\}W@b#(]x8B$@)#d]x8BB$BB8W8@M{hoMBB&}kbbdX|%o/bdbddddddddddppppqqqqwm\o*M#x;; { \: < ; { + W , x  + : ; : ,,<= M| ] , , , , /C}< M+ ]+ ;x (; ] : [ x }<= #  + ; ; : ,+ @, , , , M|{QCcW + / }< : , \)[> }< # : W @ ] XW , + : : : , | , ,, M {]+ W\). xdC(}, + xXW ;@/(x<n#M { +QW; x ] , , ,  +, : : [ , , XW\+[ @/(.. * |Qw+X \v+ @OY}<=,Mm0Oxz.c); @Oc} ;|{] /: =#, ,  +, , , (]:\ + ; X|.*. ** \}z@)#(]x\}+@)#(]x\}+ )# [ :  + | , >#(]x )#(]xx}+@)#(]xc}+@) + } + |: / \ {  + | , , x\}+@)u(cx\}+@)+ + : | / \;[  + , ,>#(]x\.uu)#(]Y\}+@) + =/{..(Lx\}+@)#(]x\}+@ : , , #M + , , , , ,=/{b#u]Y\}+@)#(]Ux.+@)#Z]xh}+@)#(]x\}+@) ::=/{> ( : : : : ; + , , , , ,X|[a/{Uc(]x .vuxxu.*nv.>#(Lcu}+@)cv|cz*{>#(]x\}+@)<v|[=/{>#(]x\}+ ;X|[=+{> :: : : : ; +,, , , , ,)<h|[Q/{> x\}+@)#(nx0}nc)cX|[= {>#(]x\}+CL#(] ;@)#(]CXU+@)#(]xdqO@h# ]x+ ..)..c[= ; + ; ;:/ + , , , ,,x\}+O)<ux....*....* +@)UX..x...#(]xz.*. X|[=aO>#(]xL}+@)#+ x\}+@)XX| ; ; ; :|u + : , , , (]x\L+uuunxxx.x..*...}J@) X| xz0#uux\}u.*.X|[#/{>UCLx\}+@p#.]x\}+@L + , , ) , >#(pxvcvvuvuuuuuxx.(]Cc}.@)< |[=/cxY00Lzz+@uzX|hp/{>#(]x\$k@W#(zX\}+@)#0]Jv}+@)UL0O\}+nXOLQ00CC@)#(Lp\}+@XXX|[obohk(k*\}+YXn.|[=/{>UX]x\} * ++ +x#Cuz +QpQJJ}\ [ :: , )#QLxc}c@)aa#M#k+@)#(]x\}+@uuuuzULOmQpQx\}kb)*(]x...*....*=/{>#(].*....*.. .*n#cY0X +QhdpMMhhc\=/{ # x\m+&)<wwq=M#*b(]x\}+L)<a|JUYXYXzXzzczzzXz|[=/{>#(]xp}h@)#unnxnnxxxx.x.x{*#(x....*...*.O0YwOc +0okWWbdkJrJ[=/ >#(pdb}+dppbMa=/{>wmmZ0O+@a<LCCJCCCJCCUCCCJUJJJUUYUU#*dx#}+z)#nunnnx..*noYCXZx +0*M8hhak*8#bbbbbbddkdddddpqqwwZ\q*@ZOOO0QQLLLLLLCLLLLLCCCLC{a#(&x\UU@)<ZJzzccc#vvcvvvuuuu|[@/{unuuuuuuun#hddU. +O8B*o#*o8h@)000LQLLLCLLCLCLCCCJJCUJJ@)@X|[XXzzccczvL8kp*a +qB%%##MBM##M}W@%@(]ddddpddpdpdddddppppdppq<W|8*/mmmZZO0O0QQQLQLQLLLCLCLL}+@@x /&&#MM%@$$%&MMM#MM######8BBB$@8*####M#####*aaahW$%B8abkkkah#BW*M${] tpqppdp + ,W {#8$@$B%%%%B$B%BBB%%%88&%@b< ,{vb*W%@@$$&WWWWWWWM##M#M#B@$B%M######*#########W$8%BW**ahkkbhkqk#> @ (bdpdpdd + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== + , : , , , , , : : ,, | ] : , , , +,, : , , , , , , : , > @ ; + , ( | X ,  +: : :: , = X, , , , , ,@/(} M , x / < M , { ,) ,,  + : : ( , , , , , ]+ W\ ;> | [ , , \ ,  + : : ,, , <= >x@ ; ; W,) , / , , x ,  + : , # , , |{ ; ) , /; , , = ,|{ , , , ,  + , , W , , \ [>x@/ }.= X | : )[ x , ,, , , }  + ,, , \) , , <=#Mx{ +XW ; ,< |{ , , ,, , , + , @ , , , Wc) x@; } ]+ ) =; |{ + ; , , , \) ,, +, M, , , , , ] @/(L<= * XW >+@ };= {] : [0x <=#M , , , ( =  +, , , ) , ,, , <@ <=#M|. 0mW\,[ @/(}<= M ;XW\)[>x ( <O# ] @/;  + , , , , , >: ;{]+XW\. *@ZZc< # |;].mwu)[ @vvOX.XM|: XL\ ;@/ ]+ ,  + , , , , , ,# x\}+@):X [ ; >#** * )u(]x\}+@)#(] ,}+@) /{ ,  + ,, , , , , =/ #(]x ; ) ]x\}+@)<O|[:/ #(]x\}+@)<Y|[=/{>#(]x\} ; | + > : x }+ [> ; (}  + : , ,, , , )# ; )#;] +@)#(]x\}c@uC(]x\ + + :>#(] M; ]nX + ; , , , ,\}+@)#(]x.}+@)# ]x\.+@;< |[=/ , , @C + : , , , (]x\}+ )#(vv\}+@)#(]x\}+@) ..x...#*n..}+@Y<c|[=/X>#vux\}+@)#(];\ : : : : [  + , , , =/{>#ccx\} )#( x\}+@)OX|c=/z>#(]x\}+@)#(]x\}*@) ;=/{>#(]x : :: : : }c=  + ,, , , , [ /X>#( + * * {>xv]x\}+@YYcX[=/{> (]x\}+@&MMbdO/$@#(]d\} @)< |../{v#(; : := :: ]+XW  + , , ,, :)< |[=/ * * * .=/X>ncuxx}+@)nc.* /{>#(]x\}+@)0(]x\} + # ; ; : >x@ } + , , , ,+@ <J|..*....*....*..X|Qc/Lcz.uuZ}+c)#*]x\cJmOQX|[=d{w#(]x*} )#(] \}+@)<..xxx.xx...*..@)QX|0=uv>#(]nu}QLLzX|[.u{>&(0x\}+@).(]x\Yn.)#(]x.}0LULX|[=/{C#(]x\}UQC0X|[v/{d0O]x\}+@)# ]xu.cY)w(]m\JYYCCJJC=/{YU(]x\}+@)ncQ0L0QCULzx\}z@Z#aZxk*+@k<m|[=.. #(]x\zcv)#Qm0\}+@)<bh*hdwqL(]xnx+@ <n|v=/{>#.]cv}+L)mq]xmdkp&<u*[= * #(]*.xuv)< + + \}d 0z;<v +UYCm8MBkx, ) [=/Wm#(Jx\baoakX|[=/{>#(]x\}+@)mpqw\p+@)< .* . *]x\}o@ * * (]xMYC.+xY +OmOaomwo*|x\ + .(]x\.*.nuuuuuvu>#(]x\}v@)qX|o=/{Q#(wx\}....*....*....x\}+.* * .>#(Y0Q* Cw +dqo*wpwQ*B(]x +@QZX|Z00{hd(]xLLLLCJUX[Z/x.#(.xuuuvvvvvcvccvvvvuv}+d)YXZ.|wL +da&pbbdh*w>#(]x\Z+@qqwwwww{Z0O00QLLLLCXd[zcvvvcczzzXXXXXzzzzzzzzXxqm+#)<cvv=/JU#uunnnuxnnunnxxxx#(]x...x....[W/p0z cbp +a%hhhkb&hkbd>#(%xahkbb#(uununnnuX|MmMhUwd0 +%WoaoaMMhhh=*%>W$8***8M**k|ddpqqqwmZZZ+W)<QLQLQLLLLLLLLLLLLLLLLLQ>a(o*\CJUUYYYXXXzccc]ccvccccvvv=/{>#vvvvvvv)<#wOkdqCn +&&%ooo8oaao|#B%{>BM]xo&&M8*Xdbbddppppp\$+@mOOZOOOOOO(QQ0QQ@QQX|L=/M>&(]QQLLLLLLJCJJJJJUYYYYXXXzX|[@/{>#ccvcc+@$bqc0wOc +M@#o*M8###$W8#BWhM%kaho&W#&Mhdkbbdbddp#@$kppppppqqmwwmwwmmmZmmZZOwokBdQO00QLQLQQLLQLLLLLLCCJCUYUh@@@@kcXXzXXvoqd*qvCYc +@W*&8MWMMW@%&MBB*8@Wooo#***o&okhhbbbk*8@@@Whddddppppddpqqpppwqqpmko##qmmmmZZZOOOO00QLLLLLLLLQ0k8@@@@@@aJUUYYJ%JaoqUUUU +MMWBB&@M#8@&#B%88%&@&###o#***%#haah*8*#@@@@8MohhoaaaaaahhhkbdddbhWh&Mkbdpwmmmwmmmwmwqqppdwma*&%8W&&$@@BqOJCJmWCwbCLLCC +\uJwB&B@%8@$$$B8&MWBB%MM#MMM#MB#aa#@wW\#@%hhaaoM&oM#oooo**M&WM#*Wadho#Wohahkkbbhhhaakpohdpdkbqa#W&W&@@Bq0OZQpqJQCLLLCL + <=#nWB%$BBB%8&&&&W&8%@WMMMMMMM$W&*)/(}<@aooo#8WWWM**oooooaaoo##*MW88abbo#**ooo*#aahkdW&#oqppwdhho8&B@@8cW()hmQ0000O0Q + , )[MWM&8$88888888&&$%WWWWMWMM$fM|{ XB##*W$8%&*****aoooaaaao&88&8WhhhkkkbbbbbdddddpWWW&#ddbppbpa&bdY0 YdQmmmmmmZ +, ,#aW&8B@$$B%%%%B%%888%%&WWMa); /Z%#W$B&BWMM######*######&&8Moooaaaaahhhhhhkkhh8W#W&okbbddbpqq#>C{ ,XWhQqqqwppp + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +, , , {, , , , , < , , @/, , , ,  + ,< , , , + W := ] , ,, ,  + # , /: X )[ /: , , , , ,  + , + , , ( < M|, + ( |:] , , , , , X  + , { ,, , , @ + ; ; #M : , , #: \ , , ,  + : , , , ) >,, , , ( <+ { \ , , ;: x ( , , ,  + : , , , , , , ,> |? *W\ [*x #, (; |{] ,, , ,  +: : , , , \ [ x = > @/c} =#M , :[>x ; } , ,, , #  +; ;: : , , , ( #M| ] XW ) :< |{ : / } = ; : , ,, ,  + : : ,, , , { XW\)n>x ; =#M ,+ W )[ x < : ]zX ; x@/ : , ,  + : , , , ,, [ M|{]+XW\ >x@/ * QYM| ] W\)[>x / ;=#M|{]+X, ) >J@/ < \ >x ( , ,  + : , , , , < ]+XW\). ; =# + WqJu> @* }cYpO|{], Wxu0c.u/( #Y| ; W\) = + : x  + : , , , , x )#(]x\}+@ + /{>#Y]x\}+@)#JJx\}+v) X|[=/{>#( \}+@ /{>#( x\ <= |  + : , , , , # }+@. X|[ >+(]x\++ )#(]x }+@)#(]x\}+@ ; [ ;{Y#(]x\}+: [=/{>#(]x\}+@)#(] }+Q).u]x\}+@)#(]x\}+@)#(]x\}+ )#(]x W\ + , ,{># , ,)<q|[=.u># .xxuu.nu..=/Yc..]x\}+@uu.|[=/{L#(]x\}+@)uu|[=/{>#(]x\ : ) #( ,}+@)Y(]x\n+.z#(]x\}m@)#( :: +@) X| : , = |z]+ + , #( \ +@Y#(]x\ +@)*X|[=/{Q#(Xx.u+@)#(]x\}+@)@X|[=/{ :]x\}+@)x  + # \}+@* * * }+.nnX|[=/cXuY]x\} )# *.}u@) : :: +@( <=#  + , @ < ]x\ *....*...*....x0}+vzvxznv/{>x*. }+@)aX|[=/{>#(]x\}+LL#(] \}+ : : x\ :Xx\ : + , / >#( *....*....*..>#OzxU0+z)uXZzxzn>#(x*. +@*#(]J\}+; : #( x @C( : +]+ [ , + [=/ .**...x....x..=/{>#Q]xcn+@)#B]xM}cu)#(ux\; ) : /{>#(: { :  +hm0n{<= , \ <)|.=/{x#(]x\}+@)#a]x\}+ # + ; |[=/{>; :  +OZpaoJ1\), ] +@)<YULzUCJCQ]x\mZm0UX|L=zUJLZOL0LUUJuX|[=/Z>#(]xL}+mqLXda=/a>q(* @)# +  }+0ZLX|[=/{dk*hkQOLQw#(]x\}+nxvYzULC{>#.]x\}Lqq#(]x+  + +@)kX|XX ; >  +Q0OQd#qqUQ[= (]xW}+@U#(]x\}+@)vX|vcuuuuuvvvvuvvcUQ[QLn>#wwm\}+mw * * )#Z]xLQLOkpX|[=/{YXXXXJm+ccvvvccccccccccvvv)#QQQL}b@)<LQCJJUUY(CZ\cvcvvccccczccccccccccccc[bO{o#(ux\}0@)*...*....*....*.)#(]x\O00QQQQCJUU>Lm]cvuvvcczzXXXXXzcczXzzcccXd[=*{cvuux\Yu....x...xx...*..+@8#(Xx\ Muu];  +b8okkkb#*bkk+M&<B%*oaoodp]mwwmZOLLLCU/L>#(]xnczXXYYUUJJUYUUUYYXYX)hX*[=ccccccvvvvuvuunnnnnnnnxx\}$@).*.../{aC0]\.vv +. +W#&Wkha&khkk\M@@)<B|ka&W#Ma]pqwwO0QLC[=/{>#(]cXJJJCCCLLLCCQLCJJC}+a)8X|YXXzzczcccccvcvvvvvuvvuv]x@}+@x...*=/w>CQYx +  +k&%aaaW#ha*8]W\B+@%: M|, : ; ; : ; ; : M ) : ,/ : : : +ZJu<=: (} =#: : : ; ; +XW\ : ] (}<= : ]+XW : @/ : : :  +v] : = : : :: : , x : x | : : :: : ] @: : :  + : # ]+: : } , ) : ,, / : | : ; ; : :: { : :  + : : : : + : , , : >x@, : : : : :M| @: :  + ; :: #M : [>x , , : : : >x : : ]+ { \)  + : :: : : + [ :( : )[>  + : , }< : : :: : , /(}, |{ : : /(}< | , + : + : : : ; : : : , # + :> , : ]+ W\ ,  +: : ; : : : : , ) x := M|{ +XW, > @/ <=# { ) M  +; x@/(}< : ; [> } : : M| ;: \)+ n( ]++ ) :x , } ,| >  + W: ; ( \ : ( : (} + { + >x@/(} = : , : : : <=:  + } : : ( < | *.. +x@/(}<= M| X : : : : , X:  + } ; @/ : M : , {: \: *n.. +n * W\ [ : ,, , : : , x@:  + + ; ; : : , : } +.xnx+...+ @/ < , , (,: : W\) : , ; : + @ <=#M : ; ; : ] ,[ ,: + + u +M { : , , : :: : : : : +:: : , ; ; : : : # , x@/ :,= +.. +\)[ : ( : , : , : : :: : :  +; : :: ; ; ; ; ; : { ;X .+ **} =: : , : : : : : ::  + : : : ;: : ; ; < , *.. *. .*..XW; x : : : : : : : : :  + ; : : : : :, : : : Mu .zn ..* . .x}<= : : ;: : : : :x <=#: :  + ; : : : < X : :: ; : [>.*n(.<xuvJUQOOz\)[ : : : :: : : ) ;  + ; ; : : , , : ; :: whaM#Who%o*#ok**L=#M ; : : : :: ) < ;  + x: ; : : : : : ; : \cJ@&#MW#M##MWW*o*#bc[ ; ; : \) > @/( = X : : + { ; ;; ; : : ) : , @/(}<d%MMWMWMMM#M8&M####d#M; ; : ( : [>x@ : :: + [ ; ; ; :: : :# : = |./mb8&8&&&&&&W#WBMM#**oobu[ ; : { x@: : : :  +: ; ; ; : : :: )[>x@ ( : :\)U~m&WM8&%%&*q0Qdo%%W#o**oabu# ;; : > : : : :  + ; : : : : ; : :: : /({###W#W8WhOu)[> @/(}nw#M*##*aaX): : : : , :  + /(: ; : ; : ; ; : : ~{wWMWMMowc@/( ; : W\Z#ooooahx : W ( :: : , :  + + ; : : ; ; ; ; \)ma#awLmv=#; : : : <=md*ahhzW : :} : )[, :: :  +[ x ; :: ) ; ; ; ; x@[?0dpdQ?{]+X : : :=# ] |OMaoabY} : : @/(} # : : +=#M : ; =:; ; ; : < M{UZQOn\); }< , }<q$W8Wu+ \) , , # : : +c\)[>: ; M : ; ;; : + \).. */( : M : }<=#M :+ \Jdbkn/ : : :  +dmCcxM|{]+X \)[>x@/(} ; : :x < ]u : )[> /(}< |{]+XW\)[>x@/v\vUuxx{]+XW\)[;;@/(}<=#M|{]+X [ ; ;  +WM*oohbwmZQCJJUYYXXXzunnx[>x@/(}<=#M|{]+XW\*[>n@/(}<=#M|{]+XxnuvYLOZZZmqqppbbbdbbpL(tCzXYXzvvvn]nvcvvvux * ;x| +.x +$%%8&WW###**ooahhkkkkkkbbdpqwqwwmO0OmwwZZOQOZmmmmmmmmmmmZZwwqpdbkhhhaaooo*##M##*oaaahdqqqqwmmmmZZOO00QZM|< _<, >} > +@@@$BBB88%88&WMMM##M####**oaaaaaaahhbkhkhhhkhhaaaaaaaaaaaooo*###MMWWW&&&&8%%%88888&WMM**oahkkkkbdddddddmJJO0Jz?)CqhQ0J + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +#bC... * = : ; ;; ; ; ; : | : : , : :  +8kz +{]+ W [: ; ; ; ;; ; : :\ x@ : M : : : : +M#bQ. )[>x : ; ; ; ; ;; :( ]: [ , W : /( =# | /: : : +ohdC(}< + : /( <=# , : ; : |{ : # : : : : > , : :  +mJ|{ : W @: : | , ,} : W ) M :: ) : : : : : ::  +\) : < #M ; :: [ }: :] X \) \ : =#M , ,) : : : |{: :  + ; : ; : |{]:: :> >x /( : : : M: : > =  + ; @ < : \) , =# : : : }<: { : = , W  + : : X : : : ] < #M|{]+X : : : \ [ | +X ,  + :: : >x@ ; ; : : , : ; ;; : :  + ; : ;; ; , : : @/ ; ; ; ) : :: # x x  +: |{: X : :(}<=,M| : : @ ,X + ..*...= + /(} : W [ , , =#:  +:\ x ,: :{ x@ ( <= M ;]+ W\ >:@ } : : :: : : , = X :  + ]: : / X : x@ { + W\ :> @/* <= : + , : : : :: : @ :  + [>: ; : : [> / , M|*Y..W: :/ < M , , : : : > :/ } : ;  + @ : ; : , , : = M {] XWn)*+ .( : ] XW\ : , = { : : ( <= : :: ;  + { :: ; : , : :) >x*. XLXn. {]+XW\+ .* , , : : : : : : : + : , = : ; :: : : : , = M ..YJnv.*vnxvx xM| ( : : : : : : : + : : : : : : :: : ) /cnv*.n..*..W\, < : :+XW\: : : : : ; :  +: : : : : [ x : : ] ( <= ;{]+X* +@/ : : : : : :: : : ; ; :  + : : : , : , : : W + @; ; | ]: : : : : : : :: : ; ;  + :: : : , : : W @ }+ M++ *x) /( , : ; : , : W }:; ;  + ; : :: , , : : : , +X. * ...*}< : : : : : : ;  + ; ; ; , : : , , (}u. * XW,) :: : : ; <= XW\)[>x: :  + ; ; ; ; : , : )[ , +X *..@nx[~=#: : ) : :: :|{] @ : : : : +} ; ; ; ; : XW \ [>J)LZwkmboaa*hqc\) : } # : : | : : : : + W ; ; ; : : : < , :: =#m0@%M8#M&o*##*owz=# : + ; : = :: ; : :  +@/ ;; ; ; : : ; : : , : XWn-0&oo*M#W8&&88W&MaQ) (} ; : W > : : :: :  + ; ; :: ; ; ; ; : : ; @ (dbW#M###*##*o&&W#MW#hu# { ; : X: : : :  + ; : : ; ;; ; ; ; , ;MC.vhha*aMMMM&&W&@B&&Woo*MO{[ : : [>x : : : :  + : : ; ; ; ;; ; M ] W]mkppqqbka#ahp0Yn//zQ0hMWW*M#c# : :: :@ : + : : :  + \: ; {] ; ; ; : \ x@/CwZZmwbkpmXW\)[> #MOpMM*&b[+ : : , ),>x ( :  + : @ : : ; :@ <=#MLwZZmmmqn}x@ ( , |{] ,)[>|mWoWw=# |, X , , : : + X :; | : : : : +ccvqZOwYn(}< :: : @/( #*|*Ma#Yn) , : } :: :  +,@ ; { ) ; : : : x@_p#kopv|; x: ; :: : [xM%BMz< , : > : :  + ; ; x } ; ;: : @/( = Mx.Zhbz\ : ; ; : M1ZwL[ >x@ ; #M|{ x /(, :  +)[>x@/(}<=#M|{ +X ; ; + \) xz/ ; |{]+XW\)[> + }<*#M|{]+XW\)[ ] /(}<=#v|{]+nvcux>x@/(}<=#M|{]+XW * >x +apqpbbbqZQJXzcnuvuzccvn|{]+XW\)[>x@+>u<=#**{vXzvnxnvzzXXvxnuux cLOZZZZZmqqqpbdpqbZCqZwmO0OmmwmmwmmZOOOCzZLLmY{Ox1*c0w +8%8WMWMM#**ooahhhhhhhkbpqwwmmZOQQ0LOwZOOOZqpppddddppm0zJZmmZ0X cOwbhhaao**#MMMWWWMWWMMMMMM#*ooaaaaahkk*c;?><[- +| ~+ +@@$B$$BB888&WWMMWWWMMMM#***oahhahkhhhhhhaaooo******oakqpkaahaaoaoo#WWW&&&8%%%%%%%B$$$B%%%%8888&&WWWWMMWhmZkbmL1fpW$pdZ + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +WaZu. + \) > : = : : ( , : : ] : : x : : : +Mwu ; (} M ] : ,, { | : : @ } , : :: <= , : :XW\ :  +*kmv ; ] \ :x < : > , : : , : : : + |, <:  +mJx\; x (} ; |{]: : , }< ; : )  +@/ ;; : ; ; : ,] , : ; ::  + : ; ;; ; ; : @/ , ; ; ; ( < , |  + ; :=# ; ;)[> @ : :] , ; ; ; @ | : W\) > ,/( , : , < )  + ; + ): , {]+X :: @ | ; ; ; : + W\) : : : :, : :< /(: : + ; @ : : W\ [ ( : { [ ; ; ; : : : : : @ : : > } : : : +; = +X ; : {] ; : = : :: )[: : : : : , : : <= :: : : :  +; X @ ; ; : : ;# W ; >x ;(} # , , ; : @: : : : : :: :  + / M: ;; ; : : : : ) : , ;; ; , |: : : : : : :  + : : : : :: : : } ];XW\)[> : ; ; : W\): : : : ; : :  + : : : : : : ,:] @n( +.#M { XW\) } M|: , : :: : : : ; : :  + : : : : # | : ) { ; . :>x@/Yzxc#M ,W\ @ , : : : :: : ; ; ;  + ; : : , , +XW\) x+ x< #Lx*..uJn)[ (}<=#M {: : : : ,+ :; ; ; ; + ; :: : , , : : Mu .xW\LYx. .u* # ]uX ) : : : : :x : ; ;; ;  +; : : :=# : : : : [ +.vnv0Xun ]u \)[>.@/ : : : : # : : ; ; ;  + : ; ; , : : \ , : =x.*. *.c.[>x@ + . M: : )[,: : ; XW [ : : : ; ;  + : ; ; : :+ ,[ : \* .x + # ; u\: :(} : :: : : : ; ;  + ; ; ; : : / ,, :< .Xxn. + )[ +..( : :{ : : M : : : : ;  + : M| : ; ; : , W @, , ; \*Cc.xn .* c{]: :> : : } : :: : :  + : ,: ; ; : : : : : ; }X.Xu.x...**.YY: : M X : : X : , : :: : + , < : : :; ; ; ; : @ ( ; :Uv JY....* nzM :: ) : , , , : : + : : : ; ;; ; : XW; :/L}*x...*...nz)[> ( < : ,/ , , : ;  + : : ]+X ; ; ; :: , : {#*oaoaZabhakZbm# x : :: ]+ :< : : ;  + : : > ( : : ; : } , {, : >a*Woo#b*bkbkpwOx)[> ,/ M : : : ,, ,+ ) , :  + : (} +: : : : ] : :<=ZpobpddkkhkoohhdqQ=#M: + [, : , :  + : :] : : : : /( : :+YnOppqpqwwqqpd*adqqqqOu[> : } ::  + : ;x #M: : : : : : :x0LQQ0mmqbddqm0Q*bpdpqmZwZXM|{] , / = : # :  +x: ; | : : :, , : : =#JCJCQOwZLc>x@/(}<=#MuQmqqZOOY>x@/( , ]+ : x W : + { ; [ : < ]+XzCYJLCUu(}<= , ,\ [>x@nCZ0mZJx{] , :: : { /  + : # : , >xxccYLu#M|{ : , : {]qmZOZZOx@ : : : ,} : :  +, : : : : =ccXcu+XW:)[ , : : : x@/Zakkod|: : : , : ;; : }  + )[ :: <=#M : ,> XzXLO0x@ ( < : :: , : {]Owha#[: : : : ; ; : X  +/ : : :: ,= /(}zx#M ) : ; ] W,: x@/(}1(# : W\)[>x@/(}<=#M|{]+Xx\)[>x@/(}< +{]+XW\)[> /(} M|{]+XW\)[>x@/(}<= | ++ \)[>x@/(}<=#M|{]+Xn\)[>x@/(}<=#M ,, ) :x@/zC0mwwwwwwwwqppdbqdpwwwQOqwwZZ +Xnuzvn<nvczUCCLLLLJJUYXcuxx#M..*...\)[>x@.xxxxxuxuXYUJJCQQOmmwmZmmZZOOQLJXu[>x@/(}<=nXQwddbhao**#MMM##WpC*pp#Z)ac)rYwk +*ohhkbdppddddppppppqqmZQQQLCJUJUYXXzu.uzUQQ00OZZmmwwqpdkkkkhaahhhhkkkkkbbdpdwmmmmqdkha***#MMM*aMW&8888@J<[++{? ,_xM+_ +&WMMM##*********oooaahbddpqwwwmmmmZOZOZmwpddbbbkhhaao**####MMM###MMM#####*oo*ooooo*#MW&8%%%%%W#8BB$$$$$%#*B%*brUM@@MWa + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +0dU. ; ; ;; ; : : : : : : ,  +J0] : [>x ; M| :: : /( ; ; : W }: | >, : : , {]  +uY. ; | : W x : ; ;+X ; ; ; : {]: : (} ,: : : X )[  + . ; [>: |{ ; : + : : : : W: : : : , : , : , [> : :  + + +XW x : : @ : :: : , : : : : x < : , : :: : :  + ; M ] W\ : } # : ; [> M : :) } : : x@ , : : : : : :: : + ; W ; ;; : : ; <= W\ ; : | W ; :: = , (: : : : : , : +: : ; : :: : X @/ ; : ) ( ; : [ ::( {: : : : , :  +: :W : ; : , :x@ M : ; } ] : ; : + , :: : : : : : :  + ; : ; : : : :: : , , @: ; : : : : : :: ; : : :  + ; : : : , : \ , , , : { XW\)[ : : : : : ; ;: : :  + ; :: : +XW : / #M| : \ : # : : : : : { , : ; : ::  + ; : : } : XW : < # |{] [>x ( : { XW: : : : W : : ; ;  + ; : : :: : ; ; W\) <x#M| ]: , @/:} : :: : / : : ; ; : + : ; ; X } : :\)[ , <=#M|{ +X * X> , M {] X \) > : : M > : : ; ; :  +: ; ; , , : ( , W\n[ c@u* .# X \ [> @ : : : :; ; : ; ;  +: ; ; ; : x@/ , / }.*xnXOCvu.+)[>x@ .< M : , : < : \: ; :: : ;  + =#: :: ; : : : > : ] X .uzLCzu+x *+{]+ W :x : x@ < ; : : ;;  + : : :: : ; : M { X : @ (. * u.n. ) , :#M : :( X : : : ;  + (} ; : : ; ;; ; :x (; : +xx. + .. ; = , :: : +X / : : : ;  + ; ; : : {]+ ; ; :: | : > @/cunxx . + W }< : : : :: <= : , /( : ; + ; ; ; X [ : : : >, :: M {Yv *.. *./(} |{ : : : : , x:/( : : +:; ; ; | : : : : : [>xcn*. + | ];X : : :| [ : :  +: ; ;; , : : : ; ; << M.* +)[ x: : |: : : W ::  + ; ; , : : : ; : +Orf0LYYLJQ0Xn++ , : =# , : }< :  + + : ; : :, <=#M|{] : *n&#bopbdppbO0c)[> : : :: : , = :  + : : x ; : : +>ppwpppdqdbqppmmQxM| : : : : X : : : :  + { ; , ; : @ : .+YqbppqqqwZwhapmOmZQJn> : : : : : , ,, , : :  + :: ; X ; : : { , (}ZwwppkkkhdqhWdwZZ0CJUcM|{ : : : : : : :: :  + M| : :)[>x@ : ]+ W : = {qwmZqpqCXzcuuvJQqdwmZ0CXzcvn@/( : { : : , : : : :, +, : ; :: [ , )[nmmqq0c=# |{ W\)[>xc0OOZ0CJJCz+X, : : : : : : :  +: , : ; : = nqOZX]+X \ : : : {]+uXJUUUYJv(}< + : : : : : :  + : ; : : :\)[> ]~_wQwz>: | ]+ : : /(}<c00LLU+XW, : :: M|{ ,/( # :  + ; : : : : , [1QdmJ~:; ]+ /: : :W\Ykkkh/( : : \ , ,  + ;; ; ) : , : , : M|hwcX : :/ |, ; :  +}<= ; XW; @/(}<=#M|{]+XW\) >x-/<~>: ; ; ; =#M|{]+XW\vYUULOZmm0UL|_]+XW\)[>x@/(}<=: {] XW\)[> @/uvczc +ZhOUzucYvuvccXYYYYYXXzzczzzzXYYYUJUC00JUXx)xnvvcvvvczzzzzzzYL0mqqqppdkkkhhhhkhkbpqwZZQCUUUYUUYzcccvvu>x@ XvzCL?zv?[xXm +d@$B8&WMM#**ooakbbddppqqwqqwwqqpdpqqwmwqpdpqqqqpddbbbbbkkhhhhaaao*##MMMMMWWWWW##******aaaaahkbbbbddddpdm{];+>}), x/~:~ +d@$@$$BB8&WMMMMM*oaahkkkkkkkbkkhhbpwdbkhaaahhhao******#####MMW&&8888%%%%BBB%8&WWWW&&&&&WWWWMM###***#***odpa#ddrjb#B*ak + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +ZJ)[; ; : ; : @ ; ; : > : : : : : W [ : : ::  +v}<= XW : :: <= {: ; > {: ; : :M ,: : #M ], : =: + W : :  + +X x@/ ; : : ) :: ; # ; : ; : / , # : : , : : : :  + # ; ; : : ; W\ =: : W )[> , , :X ): :: : : : : : : + ; ]+ , ; ; : X, : /( X;; ; : : { : : :: : : ( : +;; : ; ; : @ } x@ ; ; @ : : { = : : : : :: [:  +; : :: : : , <= : : |:: : :# |{, : : : : : @: ::  + ; : : :: , , X ; : , : ) : : : : : : : : ; ; ;  + ; , : x@/( [>x: : : : : : :+XW : :: : : : : ; ; ;  + ; : , < :: + \) : } = , W\) ,x : : : }<= : : ; ;  + ; : : \ = {]+ ; @ #M { / + : : : ] :: : ; :  + ;; ; : M , : : :{]+XW .[> , , : :\ = : : :; : : + ; ; ;; : : : ]+ [ *(} |{] , , ] : ( ; : : ; :: +: ; ; : :: : > , #M|{] W )vux@/ | + ( : :] } : : : ; :  +: : : : : :, = : , @ ;}< .*.v] [>x@ (} # : :: , { X ; : ; :  + , : : : ; : ,: < # >{]ZJu* x (}<= . + X \ : )[ x / ; : ; :  + : : : : : ; (}< M ;W )**xnXZQzX.+<{..+ .[; @ #: : { ;; : : ;  + :: : : :) ; ; ; W ) : } = .uX00Yc+c. * <=#M , : : : {]+ : , :: :  + : : :: / #: ; ; } = ; X \..* vncu ..+ + , : : : : , : x ; : + ; : , : : :+ ; :( <xn.. + ux + @, < : :: ,[>x : #M : ): / | : : + ; ; :W : : :: ; : : ] XWccvvu. .+ #M : , W : >: }  +; ; ; <=# , : : : ;; : @ (vX *u. .*..\), ,(}< : [ =:: ] : ,  + : ; : , ; : : : : :{ +Yv... * /( ; | : , : : , XW: :  + , ; ; ; ,> / } =# { : [>x@n* ++| : (} : : : : , , :: :  + , ; ;; \ ; : : }<hpdwwCwZOm00>x: :: : : : : , , , : : ,  + : ; ; : ;: : ,> : ]+w*Moo*h*kkadqJM : : :: : : : , , : :  + >: : : ; x, :: M \ xzhhppdbhdhohbkp0c>x: M XW )[ : : , : : : \  + , ; ; ; ,: }cakdpwqdpmmhMhdwppOX|{] : :: : : : : : +: W ; ; ; , WXLqqkbkbhohbd&oddpwZO0Jx@/( =#M|{ )[ : : : :: : : :  +: :, ; : ; : =# { , /mappppddp0XW?_[>xYUCZww0Lc{]+XW : : : : , , M , :: :  + ; : , : : , |zdqpdddwvx =#M| ]+XWcUUcUQJ({< ; : : :}<= :  + ; ; : , :: : : X )[dpdpqqX=# X, ; }<=#MnCQLzW\ : : :] , \  + ; ; : : : , ;; }<Udwqwu+X [>x : M , +>v00OY} : :: : + # + X \ ; ; : ; |{ +cdoaomx ; ; W : |wddaW\ : : M  + } ; ; : : : xY0*W&0#: ;; ; : < : >_XQC}< : +XW #  +|{] :: : : :] : ; M.UCazW: ; ; :: W\) : (}<=#M , =#M|{]+ +[>x@/(}<=#M|{]+XW\)[>x@ <=#: +XW?unx @ (}<=#M|{]+XW )[>x@/(}<=#M|ncCO0OOCcx@<(}< #M|{]+XW\)[>x <=#M|{]+XWux. x  +%Moaaaa**oahkqmmZ0JYzn|{]+xx\)xucXQwddwZJvU000ZwqddqwZ0LQOOmqppwmZ0Owdddbdbdpppm0CYXu\)xxnvcvunnnM|{]+nW c.xJ@~Y] <;  +@@@@@@@@$BB%%%8&&W#*ahkwQZbbkkhhaaooo#M#MMMMMMMMMMMWM#######**###M##MMMMMWWMM#*oaooaakbddppdddpppppqpqkc>_++?-: +?x\<< +&&&&&&&&&&&&&WWMM##*oahaaaaahhhhaaooo********#*********o************######M#*oahhaaahhkkkbbbkkbkkbbbbbkbpdaabZfYka*dbw + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +pZX* : : : :+ : : : : , , : : : ) :: :  +u[* : :: : )[>x } M XW : : (:: : : , : : : ,= |: : : + ; ; : , \ / : : , W\) , : [ ( : : : : , + ; ; : , : } M, : >x@ , ) , |, , ,, + : : : :  +; ; ; : W : :: , : : , /: : : : :  + ; : : , : , W\ : : : : : : :: <: :  + ;; : : [ , , : = , : ] \ : M x : : :  + ; ; ,: : # : , : = + , x@/(}<, X :: @ : |{: : , :  + ; ; ; : :: : : M : ) : :{ : @ : , :  + ; ; ; : : , :: :/( , : ] : # , , : : + ; ; : : : : : | [, ,< # : [ : : , / ( : : : +: ; : : : ; ; , } , : , /( : ,XW =:M , : :  +: :: ; : : ; ; : #M +XW\)[>x M: ; , : : : : + : [ , :: :  + : : :: : : : : @* =# + W\)[> } =#M ]: : : =# : , : :  + ; : , / ,, , : : { \) >x x.# : +X + > @ :, > : X :  + : : , ;; : ; . +.< #+| + \ : ( <= M : , = :| { :  + : : \ , : ; : ;; |* + v..+ .<: |{*+ : : ] : x@ > :  + : : : = M : : : : ; [nn ++..vn. .+ >x # : , : , : , ,, / }<= : : + : :: : : : : : : ; :#c * + ++ = { , : : : : : : :: :  +: : ; :: ; : : } = |{]+: ).* .. ; x+ XW ::@ : : : , , : : : :  + : ; : : :: , , =x .U*xnx * / : , :: : : , , : : : :  + : : ; , ] : , :\C.zu....*...| : : : : ,: : : : : : :  + ,[ : : ; ( :M| : }v *Yu..* .; : , { +X , : :: : : : :  + : : ; : :=# : , : + ;\. * *c# : , : : = M , XW, :  + : ;: : : :> : , , x@bkhpk0dpqpwYQL): ( M|{] : : :} | , #:: : + ; ; : ,, : ; : : =#Mnb#haokobkhbpwmQ=# :: : ; : :+ , ) : +; {]: ; : : :: : : = +XW\)O#bkhkkkbo*hakqppJ)[> ; ;; : :x@ ,  +: : ; : : , ;; W >x:/.nQ*khkbhhbdp##bqqwmmw0UM| ; ; : ,#  + = | ; ; : : : : ;:uxwbpkkaopOCUYd*ddpqmOZwZOQxx@ : |{]  + : : ; : , > }<: ; :>mqwqdkZu#M| ]+XW\cUJOqqwm0QQCU{]+ M| :XW  + :<=#M: : >x {] ; ; ;<pqmpwJ+X: ; :; M|{CJQLCCCCC@/ ) : ,  + :+ [ : = ; ; ]+dmqb[>x / ; ; : @/CQJUJUUU]+ W = : :  + : = : # : ; QUdpqU<= M : ; ; :]nJwq00ZJ@ , # W: : <  + : : : :( , /(}<=La#hQ+X : ; : : /(Zmpdd|{ : : ) = :  +: : : ;]+ \)[ W|vLdx: : ; : : M|; <[\). + =#M|{] > : =#M|{]+X :  +n}<=#M|{]+XnXzu>x@/(}<=#M|{]+XW\)[>x < .;|{] : :, ; =#M|{]+XW\)zJUJzn}<< Mu.]+XW\)[>x@/(}<=# ; XW\)[>x./(}<= +%%WWM###**###*ohhkbbdpqmO0LUYYYUYvYvucuzYYUQUvx@/(}<=#M|{]zJJczJJJ0ZZmqpqqqqppqmQCJCQ0LCCJUYXzzuunx\xxxvnvcccXYJQQ00Qc +@@@@$$$$$$BBB%888&WMM#***ooahhkhkbddkbbdppppppqqwmZZOOZwqpbkkkkkhaaaaaoooooaooahkbbbbdppqwwmZ00QQLLLLL0.xXvc0|[0-~\tOv +@@@@@@@@@@@@@@@@@@@$$$$$$BB%%8&&WWWMMM#####*##*****#######M#MWW&WW&&&&8%88&&&WMMMMMWWM#**oooakkkkbbddqa{_>? 1( =\n|]< +&&&&&&&&&&&&&&&&&&&&&&&&&&&&WW&WWMMM#*********oo*********#####MM##MMMMMMMM###*****###***ooahhkkhkkkbbbkpqpakbJt0a##hoJ + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +op0u ; : :x ( :W : : ,{ : : : : :: : : , +dQuX ;; : ,# : | : \ , ,[ : : | : : : ::  +OX ; : ::\ : ) : ( , := M : , : >: : : : @  +cn + ; ; <= : ( :M|{ : : /: , : , : > : :  + + ; ; :\ , , |{ : |{ + , /( : + : < : : :  + ; : ; ; < : ( ): : X : X : : :  + ; , ; ; : , : { <: :#M , XW : :, , :  + ; :: ; : : , : [ = M|{] : : ( { : [ :: : + : ; : :: : : : #M {] X : : : [ :: :# , > , : : +: ; : : : ;; ; , : : : : , : : ,, / : : , : : :  +, ; : : :#M : : :: : : , : : x : : : )[>x |{ : ) @/: :  + ; : M ] , : : , : , ) , : : } x@/( ] :  + ; : \ , { ; : # { : :: =#M|{]+ W , : : )[>x @ :  + ; :: } : ; : : )[>x < #M ;]+X:: ; / : : : (}: M |::  + ; ; + : : : : ; = | :X \ : @/, : +XW : : , { : [> / >  + ; ; : /( : : : : ; W )[ +/( + | ] , [ x@/ : ,, , : : : : >x <= ; + ; : : : : , : :: : ( = + * > @/:} # : : : :: : : : : : ;  +; : ; : : : : <=#M| \ *. =. * XW ) : : : , : : ; :  +; , : ; : : : , }< ++ x ; @ : : : : : , : :: ; :  + : :: : ; : : , ] X..*. *. ;+M {: : : , : : : : : : ::  + : : ; ;; \ : : ) : @ (*v...+ *\ [ , ,<=#M : : : : : : :  + , : ; ; , : ( : _nc. * * }< : :: : :XW , x /(} : : :  + : : ; ; : ] : , M X >+@/Xc*.. *] : [ /(}<= : : :@ < XW > : : : + ; ; : ; : ; : : x , {]* * .@ ; : : ; : , : : +;; ; : ; : ; ; , + \uXxwOwCwmqw0muu+ : ; ; : :) , :  +; \ [ ;: : : : : ; : >x :}nJ@#oMk#hhkdwwCX/( ; ; : (} W  + ; ; :: : +X ; ; : ; >dabkhaaoa#*ahbkbQ+X ;; ; : M|  + : : ; : : ; ; [*?OkohahbbkbphMhbdbppp0u} : X }< |{  + : } , : + M|{; ;; ; U/Mabhhh*oo*hkoBabdqwwwqwQuW\ + : ,(  + : : ; ; ; XwhbpdhkwJcx=#czJOpkkkdqwmwqOJ<= , ] W =# ,, + #  + :: / : : : W ; >x@dpdbpOc|{;; ; >x@/(uCqbdwmwmmX\ : : < ), : =# W : + ; : :; [ : x@ }< #UdwpuXW\ ; ; ,, +XW\)ZmwOOmv< ; , # : : :: +; : ; =# ] , , ztZhwQ|@: : ; : , <=#XkhpaZW : , ): : :  +: ; : ;\) , ,: W\ @}q&0Q#M : X , ; : # ; [Xmadz :: : XW : )[>x@  + ; ; ; : |{] \ : >cx0cW\ ; : >x@/(} = _...?; \ ;x@/(}<=#M|{]+XW : /(} +  +c[>x@/(}<= ; W\ [>x@/(}<=#M|{]+> )[ x* (} X : > @/(}<=#MnUCQ00wZOJv@/(u<+#ucXzzzzcun>x@/(}<=#M|{* \) .n +B8M##*ohpLXXcxxnuYYYXJ0wwwqmmwmZOCJLJQUULCYUYuXW\)[>x@/(}<=YQOL0ZZmqdbbkhhhhhkkkdwZQUcYQOOZZZZZO000LCCUCCUUYcv. ( <=.v +@@@@@@@@@$@@$%%%%%8888&WMWWWMMM#**oaahhhkkkdddqqqwZOOO0Zwpbkkaaaaoo**##MMMMMMM#*oaahkhhhhhkbkkkkbbddpqpLcmJYQx<.] XWnY +@@@@@@@@@@@@@@@@@@@@@@$$$$$$$BB%%88&WWWWWMM###*********###MMMWW&888%%%%%BBB%88&WWWWMMMWWWWMMMMM##****oMz]-< +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$$$$$$BB%%%%%888%%88%%BBBB$$@@@@@@@@@@@@B%%%%%%B$B%BB%%%%%8888&&&&&#kkM*bm/ck#&bkq + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +O. , ; ; ; ; : : , : : : , : , \ , :  +mv ; ; ; ; ; : : :, : , : : : : : : < # +mc ; ;; ; ; ; : : : =: : :: : : : : : : , (  +U. ; ; ; ;; : : : : : : : :: : : : , x }, : +XW\ @/  +z.+ ; ; ; : :: : : , , : ; ; : : : +: : : :  +. ; ; ; ; : : : :: = : , ,/(}< : : , : :: \ @ : : : : + + : : : : : : : : : < \ ; ; : ; : : M: : : : : +:; : < : : : , : : x@/( : :: : >x }<; ; ; ; ; , W : : :: : :  +; : { + \ : : : ; : ; ; : : ,| X ) : ; ; :\)[, : #M: : : ::  + : <: :: : ; : ; ; : : : :[ =, , : : M ],XW [ : : :  + ; XW , : ;; : ; ; = : W .>x@ : , :: : + M|: ; :  + ; , , , x : :: ; \+ .*.}<=: : W , : : : :: =#M| : ;  + ; { , , : ; ( < # |{] \)[ @ : ] : : : : ; : ;  + ;: : : : , , ) : ), (zn #M @ : : : : ; # W :: ; ; + : : ;; : :\ : | : ,@ (} M|{..X X)[ < #M ] : [>x (}<: : XW : : :: +: : : ; :, : ) , +XW\cqv.. *z~ #M|{]+XW [> : < \) : +: , :  +: : , , : X : :: , > @/un.z0Yzn +XW\. @. ; : = / :  + : : : : , | .vvQZvx x *n. +..]+XW , , , ,  + : ) /(} : : , : {, ,) >.+ .}JcJu nx. cn[>x ( , W , ,, W  + ;; ; ; ; : , , : :< #.* ++.C.*. (}<= : , , , : } M,, ,  + ; ; ;; ; : : , , = : ).uux*..zn*..X] , : : : > : : : , , , + ; )[>x ; : :: : , ; ( <=QuncX..*nYc>x@ : :: : : : : : : : : : + ; } ; ; , : :: ; + _\Uxuuvuuuuv# : : : :: : : ( : : : ;  +; ] ) ; ; # +X: : / : ; ( <CQu.*....\) : : : : : :: | + : : : :  + } : ; : x , : : /: ;; + Wcvx.xxnvzJ(-M| ; : : : : :, M { : :  + :, : ; : : : : ; @qUhao#dWWMM&#oLc> : = : , : = , / :  + : : ;; ; , : : : \ > ; :um&@%W8#&W*####*ZuM| , =# : :W , ,  + : : ; ; :: , : : : : +)YxWMooo*o*M*#MM##odX>x@ , \: : < , )[ :  + : : : ; : ) : :: : , , (}ZoWM**oohkbbpp#*abbhbZM|{ , ; : (}: : : + ; : : : : ; ; : ,, , |{0zdkkahkhkddqZOwMabkdmmwdJ-x : ]: :: : M : : : +; ; : : ; ; ; : : : )zkbppqpbpppmOY+XW\)[>xQwppmOZM| W ) : : : ,, , : ;  +; ;; : : X ) ; ; : : ; uYLCOwwmmz)[> |~xU0OCC[> : : : : x@ < :: ;  + ; : :: = : : : : +.x xvU0Cv@>( x@/(0UUJM ; : : : # , :  + ; ; : { :: , , * ..x}<=# )[ x z0CCU[ : : :W , :  + ; ; ; x@/ : : }<=#M {]+ ) : : : + , @YZZpn :: : @ =# {]+XW\: ;  +. ; : ; ; : : , , : ; : : : : {]+XW\) : : X : : ;  +Cx@ : ; : : ; : W [ x@/(} : M {] + : : : : >x, # ; W\)[> @: ;; ; ; ; +bmU{]+XW\)[ ; #M|{ .*.. * /(}<=#M|{]+X )[>..xuvun.*|{]+; ; :<=#M|{]+XW\ >x@x(}<=#M|{]+XW x +. >x< MuX +&W#hkbZZOO0LJXvuuucYLQQQQQLCUYUUYXzXYcnunxxuvvczzXUJJJJJUUYYYXcvnuvunx|{]+XXCCCJCCLLCCCQQ00QQQQQCYYCQLO}<<; -~ :X~/)<> +B%8&WMM#oooahhkbdpddddpppqqqwwwZmmZ0QQLQQQQQ00000ZmmZZ0Lc*zL0ZZmmwwmmwwwwwqwqqqwwqqqppqpqqqqqppqqqqqpppwOOdpmL|udoWdbw + $$$ 7 7 7 - PRIVATE PURE LOVE TRAIN $$$ +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +O. : : ; ; ; : : , , : : : : :, | ,  +mv + ; ; ; ; : : , : , : : : : : : , > @ +mc*+ ; ; ; ; : : : x ,, : : : : : : : : )  +U.+ ; ;; ; : : : : : : ;; : : : : : X [ : =#M| :W\  +z* ; ; ; :: : : : : : ; ; : :: : , = : : : : +.+ ; ; ; : : :: : : x : : \)[> : : , :: : :| W : : : :  ++ ; : : : : : :: : : > |: ; : ; ; :: / : : : :  + : :> : : : , : : XW\) , : : +X [> ; ; ; ; : M: :: : : :  + ;: } = |: : : ; : : ; : : :: : ( # {: : ; : |{] : @/ : :: :  + ; > : : ; ; ; ; : : : : ] x : : : / < #M ] : : :  + ; #M : ,: : ; : ; x : : M *+XW : :: , : = /( : :  + ; : , , , X: : ; | *..[>x ; M : : :: : x@/( : ; : + ; : } , , : ;; ) > @*(}< |{] W < : : : : :; , : ; ; +; : : : : { : + { )zn+@/ W: : ; ; ; @ M : ; ;  +; :: ; ; : | : :( , : W )[ /(}..X*X{] > @/ < : ]+X )[> : #M : :: :  + : : :: : : { , , =#M|cqv..* z~ @/(}<=#M *]+ : > |{, = : :  + : : , : #: : , + W\un.z0Yzn =#M|. ;W. + :: x \ ,  + , , : : ,, , : ( *vvQZv. x n.+ ..<=#M , :  + : { , \)[ : : , } , { +* .[JcJu n.. cn]+X ) , M ,, , M  + ; ; ; ; : : , , , : > @* + .Cx.. )[>x : , : , : :[ / ,  + ; ;; ; ; : : , , x : {.uux...zn ..X< , , : : , + , : : : ,,  +; {]+X ; ;; : : , : ) >xQuncX.x.nYc+XW ,: : : : : : , : : : :  + [ : ; :: : ; ;= _|U.uuvuuuuv@ : : :: : : : ) : : : ;  + < {: ; @ =# : \ : ; ) >CQu*...*.|{ : : : : :: : ( = : : , :  + [ : ; ; X : : : \ ; ;= Mcv..xxnvzJ(-/( : : , : : :, : ,/ } : :  + : : ; ; : : : ; ;;WqUhao#dWWMM&#oLc+; :x : , : :x : , \ :  + : :: ; ; , : : : | + ; ; um&@%W8#&W*####*Zu/( , , x@ : M , ,, , + , : ; ;; : : : : : ; {YxWMooo*o*M*#MM##odX+XW | : > {] : : +: : : ; : {, : : , , )[ZoWM**oohkbbpp#*abbhbZ/(} , ; : )[ : :  +; : , : : ; ; ;; : (}0zdkkahkhkddqZOwMabkdmmwdJ-X, < ; : / : : :  + ; : : , ; ; : : :: {zkbppqpbpppmOY=#M|{]+xQwppmOZ/( ,M { : : :: , , : ;  + ; ; : # { ; ; : : : uYLCOwwmmz{]+ (~xU0OCC]+ ; : : : XW > :  + ; ;; : x : : : : ; .x +xvU0CvW>) XW\)0UUJ/, : : : @ ::  + ; ; : } , : , + *..[>x@ {] X ;z0CCU] : : : M :  + + ; ; :XW\ : :: , [>x@/+}<= { : : : = : ;WYZZpn : : :W x@ }<=#M| ; : +.+ : ; ; : : , , : , ; : : : : }<=#M|{: :: # : : ; :  +CxW : : ; : ; ; M ] XW\)[: /,}< + ; : : : +X @ ; M|{]+ W ; ; : ;  +bmU}<=#M|{] ; @/(} *...* \)[>x@/(}<=# {]+..xuvun*.(}<= ; : >x@/(}<=#M| *+XWx)[>x@/(}<=#M x* . >x> /uX +&W#hkbZZOO0LJXvuuucYLQQQQQLCUYUUYXzXYcnunxxuvvczzXUJJJJJUUYYYXcvnuvunx(}<=#XCCCJCCLLCCCQQ00QQQQQCYYCQLO[>< -~, #~/{<> +B%8&WMM#oooahhkbdpddddpppqqqwwwZmmZ0QQLQQQQQ00000ZmmZZ0Lc.zL0ZZmmwwmmwwwwwqwqqqwwqqqppqpqqqqqppqqqqqpppwOOdpmL|udoWdbw + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +whc* ; ; ; ; : :: : , : : : : : :: : ,  +mpn ; ; ; ; : : : : : : ; : : ( #M X: x@/( <=# {]  +ZkU + ; : : : : : : { + ) : : : ; : @ : :: : : , +UQx ;; + : : : : : : [ : : ,,] W\ : : : : x@/ M : : : :: :  +*. ; ;M :: : : : : : | : =:: ; : : : : : : : :  + ; XW\ [ : : :, : : { : : #M| \) ; ;; ; : , : | : : : :  + :> : , : : ,: : ; :}< : : : x@ = : ; ; :: =#M| +: \ x : : :  + ; # W: : ; ; : : ;; ; , : : { \)[> : <=# {: |{: : :  + ; ) , : ; x : : ; : : +X : , / ; :  + ; , { : } =# : , : : : ( : \, / : : : >x@ | : :: : + ; : [: :: ) : M, ;W , : ) : : : : : | [ : : ; +: : : : : ; #M :+ x : = : ;; : : : :> =: : ;  +: : : , } : ,, { + x[ }< , >, ; ; :: : : # W\ : :  + , , : :+ , X x / < |{]nvW\): (} | : : x@/,}<= : ::W : :  + : , XW\) >: }<=# : , : {] XW )[X*.X.Xz= | XW\) x: ,= ) : x@  + : W : : :>x .(}zwx*. cxW @/+ =# , {  + : { : : , , , # *vc.cJ x.*z(}<=# |*+ XW\ x, , , M  + ; ] \); x@/( : :: : ,| , _.+ .cz0C.v*.x .un\) +x@/ > , , : ,  + ; @ ( ; ; : : : { @ =.. *.LXQ*.x * .xz=# + \ ,: : : : , ,  +; : ; ; : : : M: :W\.c*. . nU.x.+ uzXW : : : : :: : : , <= +; X [ : ; M : : = : / }<uJXvn*.c. *xz.@: , : : : : : W , ,, , :  + : ; ) : :\ : ] XxQncYz.. uXcUM: : : : : : : / , M , :;  + , ; =# : : = X ; @,(vLxvvvnuvn.X); :: : : : : : x@ : :  + >x : ; ; > }: : @ ; ;] XCQu..*....~ : : ,:/ #M : : { :  + : : ; ; : : , = M : : _ (XznnuvvzU0v1)[> , { :: : # x : : + : : : : ; @ : : : :: : Qko*#&*oBWWW8#kq#M|{ W: , : ::[ , : : +:: : : : : : ; : , : ) oB@$88%W%&W&&&W#wY[>x , ,| X : : W : :  +: : :: : # ; ; : M X : : }<n8W$&W&&8&88&8%%8WMhXM|{ : : : : , : : ::  + : : :W : ; : : : : ]wd&W%888&&WMMW#W@8W####dt> : : : : : : : ;  + ; : :/ , : :; : : : [>0W#MW&&MW&8%8Mbda*kW&#oao*C~ :: : : : {]+ W\ x : ;  + ; ; : , }< : :: : (}uqM%###*MWWW#bX@/(}<=#MrZaMokaw} ; : :: : [ : :  + ; ; ; > : W , : : |{QoM#**##&&obQx=#M : :>1Xdbbbd# : : @/(} :  + :: ; ; M| : [ # ,\)LCvLqkaoMMLc{]+ : : : {bpqmm) : : M )[ ,, : : + : : ;; : : : :(qhmv JdapXW\): : :: : +cLdwwZOx : : } : : : :: +: : ; : :: : : < {*MW#MWqnx@ : : : : :: Mu#o*#O\ : < : , ,  +; ; ; : : : :: ; [wW#8%ov= , { ; ; : : +XW >uYZZ} : : [,  + . ; ; : : : ; @..};+#Mv*0+ \)[>x@ucccvvn|{]+XW\)xunvULCCz?M XW\* >x@/(}<=#M : : :(} ; | +YOX[> ; : : ; *..xuccC[ XW?)YLYLO000mwwqppppppqwZQC0ZmwqppdpppppdpOv(-/(uvzXzcvuxXW\)[>x@/(: : : .X +mWhdQu|{]xnx\)[>x@/(}<nvzXXYvcXUJCJLL0Owqmmqppdbkkkhaaaaaaaaoooooooo******ooahbpqZY{]xJLQOOOOOO000QLCUYu+ W\)[> @/1>  +qBWM*akbbbdpqwmZOOO0QLLLLCJUXXUJCCLLQOZmwpdbkkaoo***#####M#MMMMMMWWW&&&&&&&WWM#*abqmmwqdddbbbddddddppppp0QmqQO\|Zp*dqw + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +B&kLn + + : : :: : : : : : : | : :: : : : : : : : : +8*Ox ; ; [>x: : : , , : ] : : : X >x@/ : : :: : : : : : :  +WM*pC* }< : : : : ;; : : : : , /( # : + [>, : : :  +oakqU#M : ; ; : : ; : :[ /( : : : :  +dqLXW\ , = : : ; : ; ; ; < X:: > : ::  +OUn/( :: x (} : : ; : : |{]+ : M [ x@/( M|{] : [> : :  +nM+ ( : ,, : }: : :) :) , :: : : : M| [ : :  + ; ,} #M| : @ : , W , , > : = , ; ; :: : # : : : + ; , : : : , , : \) : : : : : < [ ,( : +;; : / }< : W\ : , : ; : W\) : M| X:  +; : : : : : :: | , W : >x :XW (  + : ) @/ : :: : : , >x@ , =# : : >x@/ M|  + : : ; : : :: : } ; | : \ , ;M ]+ ,  + ; : ; : , : : X; ) : ( <=# |{] :\ [>x /(}, # X , M  + )[> /( ; : W\ @, : : =: +X *xx M| +X ) , , , , = \  + : ] ; x + : x x@ + # |, W\ [>x ( : , : : : /( : + : @:; :M : : x / <= ; ...* )[>x@/( <= , : : : : , { :: +;@ : ; [>:: : x # : + + .u.* n * ]+ W:: : : : : / , )[ :  +:| ; ; : : W ; @ ; xnn .* [, / : , :, : : ]+ , , , :  + [ @/(}<: ; ; : , : W : | + + u ; < # : , : } :: : : : : :  + : : ; ; ; : : }< , :: ) > (+ ..+ +XW x , , , : : :: : : :  + ;: : : ; : ; ; : , # {:+. * ..@/( : : : : : : : :: :  + ; : :: : : ; ; : /( # , : ..+ ...*...*{]+ : ) , : ; : : : : : : : + ; : : : :: : @: : : : <n+ zn * *.x@/( ,, : : : : : ) (} : ; + ; ; : : : / { : : : , XW\..uxxnuzXQLZmmCnXW, ; :: : : : X : ;  +; ; : : : : :: ; qo#&W8o*B*o#ok*oOu}< ; : : :: : X / : ;  + )[ ; : ; : : : ; : : +XY@M*#M##M#MW&#*##hJW; ; : ]+ \)[> ,( {: :  + :; ; ; : : , , : : :W [>x@>h%MWWMWMM##M%&M#M*#kv< ; : >x W\)[:: :  + W: ; ;; : : : } : } = /do8&&&&8&&8WM&$MM#*ooakcW ; : # \)[ : : :  + : ; ; : :: : XW\) : , : +XL-qWMM8&%8#hOUUwkW8&#o**oakz} ; :\ , : : : :  + : ; : ; : ; ;: : : : >x\MMWWMW&#pC+XW\; >x@/0*W*#**aaJX :: : : : : : + >x ; : : ; ; ; ; :: ; -ub&MW##k0)[>; : : ]+L*ooooahx : : x : , : : + : : ; ; ; ; : | <Xpa*b0XO/(} : : : /(Zp*ahhY]; : @ , :X : : ;  +W\) :: ; , X: ; ; ; : )[1{mpqqU_#M|{ :: : ( M {QMooakU@/ : x }<, M ,: :  +(}< , ; ) ( ; ; ; / <]U0C0]+X / : : /O%W%&v| X :} , :  +X+XW\ : < ;: ; : | +X.* .> : < : x@/(}<: |:;+Xqqbc> <: : :  +kq0Yv<=#M|{]+XW\)[>x@ ; : :: ) /:?n ; XW\ >x@/; =#M|x]+XW\)xvXnXCvx.#M|{]+XW )[>x@/(}<=#M|{] W ) ;  +&W#**ahppwO0QQLCCJJJUXccvW\)[>x@/(}x=#M>+]+ Wxvu>x@/(x<=#M|nvczXC0ZmmwqpddbbkbbbkbOfxQUUJUYzzzvuczzzccc) . * n=: |.x +$B%8&&WM###**ooaakhhhhhkkbdppppqwmZZwpqwmZ0Zmwwwwwwwwwwwwwqqpdbbhhhaaooo*##MMMM#*aaoadppppwwmmmmZOOO00m<=> ;+< W\|[>; +@@@$$$B%%%88&&WWMMMM#####*ooaaaaaahhkhahhaahaaoaooaoooaao****#MMMW&&&&8&88%B%%%888&WWM##*ahhkkkkbbdddbbqO0qwOJ)jZdhmqO + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +&bY..* . ; ( : :: ; ; ; ; : : = : : : :  +Wqu + #M| W : ; ;; ; ; ; ; )[: :< < : : :  +M#bC* XW\) , : ; : ;; ; ; > M : W : , : :( = : :  +abmvx@ | : > / : ; : ::= ) : } : : : : \ : :  +0c=# ] ) : = X : @: , ]+X < : :X [ : : : : : :: :  + ; :@/ }: ; @ : { +X + : :: (}: XW: : : , =# ]+ : + ; : : ; , =# , \ \),> : : : , < : :W\ / : + ; : [ / : , + : /( : : : x@/ :# :: :/( = ]  +: ; | : : : M @/,}<=#M| ; : : +XW =# | [ x  + ; \) ; ; : : : ;; ; ; ,  + ;; : ; ; : : [> ; ; X , ( X,\)[ , \)  + =# |{ :: >x@/ <= : ,[ {+ .*..../( : | >x@: , ] , , (  + + : , : # [ x /(+ #M: ]+ , [>: , :: : : : , {  + #M : ,[> :: ) M| ]: \ [.. / : | W : : :: : : , )[ : + W ; : , : := W\ [> @ ( <=.X c] : > / < : : : :: { \ >x@ ; : +:[ < : ; , , : :X , #M {]cX. +xx M|{]+ , #: : :x /:: : : :  +: # ; : , : : , X \ ...XQcux*#M|{]+ *x > ; } : : : : :: :  + : ( ;; : : : : } *.JYnu..z.nv@ *x< : :x < ; : : : : :  + : : : : :: : : ] X + >z*c...*. .{]+ : , : |{] : : : : ; :  + : : : : :W ) : ,, M W x / + #M|{. * [: : , : :: : : : : ; ;  + : : : : , : , : :: , ] )[ + < #M : : : ; : :: : : |{ ; ;  + : : : , = : : : [ @ +< +..uX >x : : : : : ,] @ ; ; + ; :: : : : : : |{.+ ..**..@/ : ; : : : ,> | ;; ;  +; ; ; ;: /( = , : : xnn * { +X : : : ; ,/ {]+XW\) : :  + : ; ; : ,, , :XW ( =# |{ *...)ucu{/(} : :X : : =# [: : : :  +@ ; ; ; ; : {] , : W\0xqpbow***o#hwz+X : } : :: = : : :  + : ; ; ; : : / , , : (cYd@*WM*#M#*omY(} : : : X : : :  +[>: ; : : : : ; : , : {]n[*Mo**M#&8W&88&WMaJX ) x: ; { \, :: : :  + ; ;: : : ; ; ; ; : : [{nh*M*M###*#*o*%WM#WM#k(}< # : ; | : : :: : + ; ; : :: ; ; ; ; : : }<O OhkoooMMWW8&&8@%8&Moo*ML}W : : # W\, : : : : +, : , : ; ;; ; ; :< : ]+bddqwqbho*kp0XM|]{nXJkM&W*M*n}+ : ; )[ : | : : ;  + + : :/ #M ; ; ; ;: : \)[nOwZmmpkbZL{]+XW\ }<QqM#*&w+ : :: , X \) x : :  + : , [: ; ; : [ /(}xmwZmmOmQ1\) ,=#M W |kMa&X(} = { , , :  + : ;[ : ; : : M|JcQqOmZn>x@/ , : [ :} X#Mo#cxX : :  + ; ;; # +X: ; : : , ) {*ohoO< , ) :: ; : Wc*%$ku/ : : \ M ::  + ; ; \ @:: ; : [>x ( <xuZkO]+ : ; :: ; <tLOn> : \)[; (}<=#M ) >x :  +XW\)[>x@/(}<=#M|{] + ,, +X ;)[ + <=#M|{]+XW\ @/x}<=#M|{]xXW*?[>x@/(nc=#MuczXcvn)[>x@/(}<=# {* . \) +akbkhhbpwOLJUXzXXXUYXXv=#M|{]+XW\)[~(zx(}..uXUYzcvcXYYUYcvccv. MU0ZwwmwwqpdddkkkkammpwqwmZmwwwwwwwmmZZmcY0JJw)1Z{?.nwX +%%8WWWWM##**oaaahaaaahkdpppqwwmOOO0wqZZZmwpddddbbddpmQcLmwwZOz\Jmphaaooo*#MWWWWWWMWWWWWWMM#***ooaaaahkM{_ + 1< :M{t ?< +@@@$$$BB%888&WWWWWWMMWM##**ooaaaahhhaaaaoo***#####**ohdkaooaoo*o*#W&&&&88%%%%%%%B$$@$BBBBB%%88&&&&&WWWWabbMhkC\0#$%h#C + >>> I JUST HIT THE JACKPOT <<< +  I JUST HIT THE JACKPOT - IMMORTAL ROUND + ============================================================================== +ok0v* X ;; ( : : : : M , : : ) , , : : :  +Wqu+ x@ <; M W:: : :# = : :[ @/ : /( , , , {]:  +*kZv M : ) / : : ,,\ : : : : @ : | /  +qLv+ ) x@; =#M| : : , / : :X x / { )  +[> : # ; ; ; : M , : :; ; , : + ; :: ; ; ; : [> : ; ; ,, x , :  +; : : ;; XW\ [ : : M : ; ; : [ =# :]+XW\ >x , : X :  + : | X ; @ #M|{ : [ = ; ; ; : ]+X : :: : , : / , >x@ :  + : [ : ]+ W x: ::# W; ; ; : : : : : ,[> , : \: @, < : :  + ( < { : ; ( M : (; ; XW : : : : : , : [ (: : : :  + { [ ; ; : : ; } ] \; x@ } : ; : [ : : : :: : :  + > < : ; : : : + ( X : ; , = : : : : : :: ; + ; : : :: : : : @ {]+XW : ;; : : X : : : : : : ; +; : : : : :: : M [nx .}< # {] X ;@ }< : :: : : : : ; ; : :  +; : : : =, :X # * \)[>cu/(}< + ): : : :: : : ; ; ; :  + : , : , : |{ +X,\) +x/ }Un x.vCuXW x@/(} # : : : : | ; ; ;  + : : : : : : : <u +.{<+Qzx.*.v. :} Mu X : : : : ) ;; ; ;  + : :: : (} : : : : W+ .cxcOXvn u{:+XW\.[> : : : : : } , : : ; ;;  + : : ; :X , : +, : (.. .+..xX*W\)[; *< :: XW : : : ] W : : ; ;  + : ; ; : : | W , ,+. xx + } u+ : x@ :: : : : : ; ; + : ; ; ; : > : / *.zx.* XW .xx : # + : : :< : ; : ; ;  +, <= ; ; : : [ , :: ]+ Lv*nn * v*M : \ : : : , @,: ; : : ;  +: ; ; : : : , : : :@cxYn...*....YX : < { : : { : ,: : :  + / :: : ; ; : : :[>x : ; Cu*CY..*.. *uX< : : : : : : ::  + : : : ;; ; ; ; : |{] ; >C@.n.*....*.cXW\) x,/ : : > : :  + , : : |{ ; ; ;; ; : W ; #ohkdkb0kdkkbZbZ} ):: : M| : / : :  + : : :\ x ; ; ; :: M : \oM8#*Mb#bkkkqqO+XW\ > <: : :: : | X : : : + : x@ | : : : M , :: (ZpobqddkkahoohkdwC(}< :| W : : , , : +:: : M : : : : x, : |zxOddpdqqwqppd*abqqpq0XW\: + , @ :  +: : ) }< : : : : : : )LL00OwmqddbdqZO#kddpwmZwOc<=#M (: } ::  + ; = :; : : : : :(}JLUCLOwmOUu)[>x@/(uvYZqpqZOOc\)[>x :M| : ) ], :  + #: :W : , / } M|{cLYJLCCXx@/(} : ]+XW\)[cQZOwZY=#M,, : , : # >, ,  + : } : : \)[ccYLc}<=# , : #MpmOZmZQ): : :: : @ : :  + , : + : : (vvXvu|{] XW >: : :)[vwhbdod= : : : :: : : @  + XW : / }< : : \ {czLOO)[ x / :: : : : #Mpdo*#W : : : : ; ;: : {  +> ,[2;32m ::] : : >x@Yc}< X : : :: M ] )[>x_t(} : ]+XW\)[>x@/(}<=#M|{]+XW\)[>x@/ +#M|{]+XW ;>x@ + =#M|{]+XW\)[>x@/( = | XW\)[>x@/(}<=#M|{]+XW\)[>x@/(} X )[>vJQZmmZZZZZZmwwppwqwZZmJLZZO00 +c)[ux@/(nuvXUJCCCCUUYXzux/(}<=...*]+XW\)[.x@/(}<=#czXXYUCL0mZmZOZZOO00LCUvXW\)[>x@/(}vCmpdbkhao*######MbOMhhMqtoCfcQda +oakkbdpqqpppppppppqqqmOQQQLCJUUUXzXzu*ncULLQQ0ZZZZmwqpdbbkkkhhhhhkkbbbbbdpppmOO00mpbkao**###M*oMW&888&@U>{++)]:> (/:+- +&W####****ooo*oooaaahhbdpqwwmmmmZZZ0O0OZmqpdddbkkhhaao**###MM###########*ooooooooo*#MW&8%%%%%M*8BBB$BB$WbdM*dZ(xkB@haq + >>> I JUST HIT THE JACKPOT <<< diff --git a/assets/audio/b05e1ac8be34248.wav b/assets/audio/b05e1ac8be34248.wav new file mode 100644 index 0000000..0d59f50 Binary files /dev/null and b/assets/audio/b05e1ac8be34248.wav differ diff --git a/assets/audio/hKhoJArfEGAxxMewx0UQiddakTdBjFc.wav b/assets/audio/hKhoJArfEGAxxMewx0UQiddakTdBjFc.wav new file mode 100644 index 0000000..ddffd3a Binary files /dev/null and b/assets/audio/hKhoJArfEGAxxMewx0UQiddakTdBjFc.wav differ diff --git a/assets/audio/hakari_dance.wav b/assets/audio/hakari_dance.wav new file mode 100644 index 0000000..1142cee Binary files /dev/null and b/assets/audio/hakari_dance.wav differ diff --git a/assets/audio/moving-stone.wav b/assets/audio/moving-stone.wav new file mode 100644 index 0000000..fd2d9a6 Binary files /dev/null and b/assets/audio/moving-stone.wav differ diff --git a/assets/audio/playing_cards_deck_flick_through_001_20485.wav b/assets/audio/playing_cards_deck_flick_through_001_20485.wav new file mode 100644 index 0000000..7353788 Binary files /dev/null and b/assets/audio/playing_cards_deck_flick_through_001_20485.wav differ diff --git a/assets/audio/revolverdryfirec.wav b/assets/audio/revolverdryfirec.wav new file mode 100644 index 0000000..20032ab Binary files /dev/null and b/assets/audio/revolverdryfirec.wav differ diff --git a/assets/audio/roulette-wheel-throw-2.wav b/assets/audio/roulette-wheel-throw-2.wav new file mode 100644 index 0000000..d4266b4 Binary files /dev/null and b/assets/audio/roulette-wheel-throw-2.wav differ diff --git a/assets/audio/toy-gun-revolver-close-chamber-spin_f1ruc5nd.wav b/assets/audio/toy-gun-revolver-close-chamber-spin_f1ruc5nd.wav new file mode 100644 index 0000000..9454731 Binary files /dev/null and b/assets/audio/toy-gun-revolver-close-chamber-spin_f1ruc5nd.wav differ diff --git a/assets/audio/victory-tf2.wav b/assets/audio/victory-tf2.wav new file mode 100644 index 0000000..049bdd2 Binary files /dev/null and b/assets/audio/victory-tf2.wav differ diff --git a/assets/audio/Джэк пот.wav b/assets/audio/Джэк пот.wav new file mode 100644 index 0000000..2d3d289 Binary files /dev/null and b/assets/audio/Джэк пот.wav differ diff --git a/assets/audio/Звук монеты брошенной в воздух и упавшей на поверхность.wav b/assets/audio/Звук монеты брошенной в воздух и упавшей на поверхность.wav new file mode 100644 index 0000000..62471fc Binary files /dev/null and b/assets/audio/Звук монеты брошенной в воздух и упавшей на поверхность.wav differ diff --git a/assets/audio/Звук монеты в игре Ultrakill.wav b/assets/audio/Звук монеты в игре Ultrakill.wav new file mode 100644 index 0000000..cbea66d Binary files /dev/null and b/assets/audio/Звук монеты в игре Ultrakill.wav differ diff --git a/assets/audio/Летс гоу гэмблинг.wav b/assets/audio/Летс гоу гэмблинг.wav new file mode 100644 index 0000000..30bfdf1 Binary files /dev/null and b/assets/audio/Летс гоу гэмблинг.wav differ diff --git a/assets/audio/Проигрыш.wav b/assets/audio/Проигрыш.wav new file mode 100644 index 0000000..5b4e433 Binary files /dev/null and b/assets/audio/Проигрыш.wav differ diff --git a/assets/data/dealer_phrases.txt b/assets/data/dealer_phrases.txt new file mode 100644 index 0000000..90037a9 --- /dev/null +++ b/assets/data/dealer_phrases.txt @@ -0,0 +1,17 @@ +W|Êðàñèâî. Ôèøêè èäóò ê âàì. +W|Ñòîë ñåãîäíÿ ÿâíî íà âàøåé ñòîðîíå. +W|Õîðîøèé óäàð ïî áàíêó êàçèíî. +W|Ïîõîæå, óäà÷à ñåëà ðÿäîì ñ âàìè. +W|Êàçèíî äåëàåò âèä, ÷òî âñå ïîä êîíòðîëåì. +W|Âîò ýòî çàõîä. Êàññà âçäðîãíóëà. +L|Êàçèíî çàáèðàåò ñòàâêó. +L|Íå ëó÷øèé ðàñêëàä, íî âå÷åð åùå æèâîé. +L|Ôèøêè óõîäÿò ñî ñòîëà. +L|Ñòîë õîëîäíûé. Áûâàåò. +L|Êðóïüå ìîë÷à ñãðåáàåò ôèøêè. +L|Ðèñê áûë êðàñèâûé, ðåçóëüòàò íå î÷åíü. +D|Ñòàâêà îñòàåòñÿ ïðè âàñ. +D|Íèêòî íå ñäâèíóë áàíê. Èãðàåì äàëüøå. +D|Ðîâíî. Áåç ïîáåäèòåëÿ. +D|Êàðòû ïîæàëè äðóã äðóãó ðóêè. +D|Ñòîë ðåøèë íå âûáèðàòü ñòîðîíó. \ No newline at end of file diff --git a/assets/icons/casino.ico b/assets/icons/casino.ico new file mode 100644 index 0000000..e77882b Binary files /dev/null and b/assets/icons/casino.ico differ diff --git a/assets/icons/casino_preview.png b/assets/icons/casino_preview.png new file mode 100644 index 0000000..571f85c Binary files /dev/null and b/assets/icons/casino_preview.png differ diff --git a/assets/music/tower/KEYGEN_CHURCH_-_Hareklavit_75543927.mp3 b/assets/music/tower/KEYGEN_CHURCH_-_Hareklavit_75543927.mp3 new file mode 100644 index 0000000..3910520 Binary files /dev/null and b/assets/music/tower/KEYGEN_CHURCH_-_Hareklavit_75543927.mp3 differ diff --git a/assets/music/tower/KEYGEN_CHURCH_-_Ladikerfos_75543991.mp3 b/assets/music/tower/KEYGEN_CHURCH_-_Ladikerfos_75543991.mp3 new file mode 100644 index 0000000..f2a8741 Binary files /dev/null and b/assets/music/tower/KEYGEN_CHURCH_-_Ladikerfos_75543991.mp3 differ diff --git a/assets/music/tower/KEYGEN_CHURCH_-_Tilaskarot_75546826.mp3 b/assets/music/tower/KEYGEN_CHURCH_-_Tilaskarot_75546826.mp3 new file mode 100644 index 0000000..58aec02 Binary files /dev/null and b/assets/music/tower/KEYGEN_CHURCH_-_Tilaskarot_75546826.mp3 differ diff --git a/assets/music/tower/Keygen_Church_-_Tenebre_Rosso_Sangue_ULTRAKILL_Original_Game_Soundtrack_79610890.mp3 b/assets/music/tower/Keygen_Church_-_Tenebre_Rosso_Sangue_ULTRAKILL_Original_Game_Soundtrack_79610890.mp3 new file mode 100644 index 0000000..97a2e30 Binary files /dev/null and b/assets/music/tower/Keygen_Church_-_Tenebre_Rosso_Sangue_ULTRAKILL_Original_Game_Soundtrack_79610890.mp3 differ diff --git a/assets/music/tower/Mick_Gordon_-_BFG_Division_48126042.mp3 b/assets/music/tower/Mick_Gordon_-_BFG_Division_48126042.mp3 new file mode 100644 index 0000000..571ac71 Binary files /dev/null and b/assets/music/tower/Mick_Gordon_-_BFG_Division_48126042.mp3 differ diff --git a/assets/music/tower/Mick_Gordon_-_Rip_Tear_48126019.mp3 b/assets/music/tower/Mick_Gordon_-_Rip_Tear_48126019.mp3 new file mode 100644 index 0000000..07c0103 Binary files /dev/null and b/assets/music/tower/Mick_Gordon_-_Rip_Tear_48126019.mp3 differ diff --git a/assets/music/tower/Mick_Gordon_-_The_Only_Thing_They_Fear_Is_You_OST_DOOM_Eternal_72020713.mp3 b/assets/music/tower/Mick_Gordon_-_The_Only_Thing_They_Fear_Is_You_OST_DOOM_Eternal_72020713.mp3 new file mode 100644 index 0000000..efc27b9 Binary files /dev/null and b/assets/music/tower/Mick_Gordon_-_The_Only_Thing_They_Fear_Is_You_OST_DOOM_Eternal_72020713.mp3 differ diff --git a/assets/sprites/cabaret-loop-v1.png b/assets/sprites/cabaret-loop-v1.png new file mode 100644 index 0000000..be829b8 Binary files /dev/null and b/assets/sprites/cabaret-loop-v1.png differ diff --git a/assets/sprites/casino-atlas-v1.png b/assets/sprites/casino-atlas-v1.png new file mode 100644 index 0000000..208ad18 Binary files /dev/null and b/assets/sprites/casino-atlas-v1.png differ diff --git a/assets/textures/casino3d-hd.bin b/assets/textures/casino3d-hd.bin new file mode 100644 index 0000000..b61b998 Binary files /dev/null and b/assets/textures/casino3d-hd.bin differ diff --git a/assets/textures/casino3d.bin b/assets/textures/casino3d.bin new file mode 100644 index 0000000..d4b6fd3 Binary files /dev/null and b/assets/textures/casino3d.bin differ diff --git a/assets/textures/sprite_bartender_shop.png b/assets/textures/sprite_bartender_shop.png new file mode 100644 index 0000000..cac5288 Binary files /dev/null and b/assets/textures/sprite_bartender_shop.png differ diff --git a/assets/textures/sprite_blackjack_table.png b/assets/textures/sprite_blackjack_table.png new file mode 100644 index 0000000..06d2e1a Binary files /dev/null and b/assets/textures/sprite_blackjack_table.png differ diff --git a/assets/textures/sprite_dancer_frame_0.png b/assets/textures/sprite_dancer_frame_0.png new file mode 100644 index 0000000..c7f490e Binary files /dev/null and b/assets/textures/sprite_dancer_frame_0.png differ diff --git a/assets/textures/sprite_dancer_frame_1.png b/assets/textures/sprite_dancer_frame_1.png new file mode 100644 index 0000000..1004979 Binary files /dev/null and b/assets/textures/sprite_dancer_frame_1.png differ diff --git a/assets/textures/sprite_dancer_frame_2.png b/assets/textures/sprite_dancer_frame_2.png new file mode 100644 index 0000000..6db09aa Binary files /dev/null and b/assets/textures/sprite_dancer_frame_2.png differ diff --git a/assets/textures/sprite_dancer_frame_3.png b/assets/textures/sprite_dancer_frame_3.png new file mode 100644 index 0000000..d0f5cbc Binary files /dev/null and b/assets/textures/sprite_dancer_frame_3.png differ diff --git a/assets/textures/sprite_roulette_table.png b/assets/textures/sprite_roulette_table.png new file mode 100644 index 0000000..048496f Binary files /dev/null and b/assets/textures/sprite_roulette_table.png differ diff --git a/assets/textures/sprite_slot_frame_0.png b/assets/textures/sprite_slot_frame_0.png new file mode 100644 index 0000000..2216c0b Binary files /dev/null and b/assets/textures/sprite_slot_frame_0.png differ diff --git a/assets/textures/sprite_slot_frame_1.png b/assets/textures/sprite_slot_frame_1.png new file mode 100644 index 0000000..513674d Binary files /dev/null and b/assets/textures/sprite_slot_frame_1.png differ diff --git a/assets/textures/sprite_slot_frame_2.png b/assets/textures/sprite_slot_frame_2.png new file mode 100644 index 0000000..e5a56ec Binary files /dev/null and b/assets/textures/sprite_slot_frame_2.png differ diff --git a/assets/textures/tex_floor_carpet.png b/assets/textures/tex_floor_carpet.png new file mode 100644 index 0000000..de0523d Binary files /dev/null and b/assets/textures/tex_floor_carpet.png differ diff --git a/assets/textures/tex_wall_hell.png b/assets/textures/tex_wall_hell.png new file mode 100644 index 0000000..0ffd8ee Binary files /dev/null and b/assets/textures/tex_wall_hell.png differ diff --git a/assets/textures/tex_wall_stripclub.png b/assets/textures/tex_wall_stripclub.png new file mode 100644 index 0000000..0506e48 Binary files /dev/null and b/assets/textures/tex_wall_stripclub.png differ diff --git a/assets/textures/tex_wall_velvet.png b/assets/textures/tex_wall_velvet.png new file mode 100644 index 0000000..650c95b Binary files /dev/null and b/assets/textures/tex_wall_velvet.png differ diff --git a/bin/poker.dll b/bin/poker.dll new file mode 100644 index 0000000..229173d Binary files /dev/null and b/bin/poker.dll differ diff --git a/bin/poker.exe b/bin/poker.exe new file mode 100644 index 0000000..cef22cb Binary files /dev/null and b/bin/poker.exe differ diff --git a/build.bat b/build.bat new file mode 100644 index 0000000..7e1c3b7 --- /dev/null +++ b/build.bat @@ -0,0 +1,14 @@ +@echo off +set MASM_PATH=D:\MASM32\masm32 +echo Assembling poker.asm... +"%MASM_PATH%\bin\ml.exe" /c /coff /Cp /nologo /I. /I"%MASM_PATH%\include" poker.asm +if errorlevel 1 goto err +echo Linking poker.obj... +"%MASM_PATH%\bin\link.exe" /SUBSYSTEM:CONSOLE /RELEASE /VERSION:4.0 /LIBPATH:"%MASM_PATH%\lib" /OUT:poker.exe poker.obj kernel32.lib winmm.lib user32.lib ws2_32.lib gdi32.lib +if errorlevel 1 goto err +echo [SUCCESS] poker.exe built successfully! +goto end +:err +echo [ERROR] Build failed! +pause +:end diff --git a/build/AssemblerCasinoLauncher.cs b/build/AssemblerCasinoLauncher.cs new file mode 100644 index 0000000..f31b80b --- /dev/null +++ b/build/AssemblerCasinoLauncher.cs @@ -0,0 +1,57 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Security.Cryptography; +using System.Windows.Forms; + +namespace AssemblerCasinoLauncher +{ + static class Program + { + const string ExpectedPokerSha256 = "76C4886161218322A5286B48F5542EBF8FBBB78A172EDCA40267148AC0D5EF99"; + + [STAThread] + static void Main() + { + var root = AppDomain.CurrentDomain.BaseDirectory; + var game = Path.Combine(root, "bin", "poker.exe"); + if (!File.Exists(game)) + { + MessageBox.Show("bin\\poker.exe не найден рядом с лаунчером.", "Assembler Casino", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + if (!VerifyGame(game)) + { + MessageBox.Show("bin\\poker.exe был изменен или поврежден. Запуск остановлен.", "Assembler Casino", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + Process.Start(new ProcessStartInfo + { + FileName = game, + WorkingDirectory = root, + UseShellExecute = false + }); + } + + static bool VerifyGame(string gamePath) + { + try + { + using (var sha = SHA256.Create()) + using (var stream = File.OpenRead(gamePath)) + { + var actual = BitConverter.ToString(sha.ComputeHash(stream)).Replace("-", ""); + return actual.Equals(ExpectedPokerSha256, StringComparison.OrdinalIgnoreCase); + } + } + catch + { + return false; + } + } + } +} + + diff --git a/build/PokerGameSetupGui.cs b/build/PokerGameSetupGui.cs new file mode 100644 index 0000000..7680ce7 --- /dev/null +++ b/build/PokerGameSetupGui.cs @@ -0,0 +1,581 @@ +using System; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.IO; +using System.IO.Compression; +using System.Linq; +using Microsoft.Win32; +using System.Reflection; +using System.Security.Cryptography; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace PokerGameSetup +{ + static class Program + { + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new InstallerForm()); + } + } + + sealed class InstallerForm : Form + { + const string Marker = "<>"; + const string ExpectedPayloadSha256 = "718663039D0CCB6EE83C62D23C8F8F7A6D4C596135E75F757C101C568E8473E9"; + readonly Color bg = Color.FromArgb(15, 12, 10); + readonly Color panel = Color.FromArgb(28, 22, 18); + readonly Color gold = Color.FromArgb(236, 186, 75); + readonly Color red = Color.FromArgb(164, 26, 32); + readonly Color green = Color.FromArgb(29, 135, 64); + readonly Color text = Color.FromArgb(245, 236, 205); + + CasinoArtPanel art; + Panel page; + Button backButton; + Button nextButton; + Button cancelButton; + int step; + TextBox folderBox; + CasinoProgress progress; + Label progressText; + CheckBox launchCheck; + string installedPath; + bool installing; + + public InstallerForm() + { + Text = "Assembler Casino Setup"; + try { Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath); } catch { } + StartPosition = FormStartPosition.CenterScreen; + FormBorderStyle = FormBorderStyle.FixedDialog; + MaximizeBox = false; + MinimizeBox = false; + ClientSize = new Size(820, 500); + BackColor = bg; + Font = new Font("Segoe UI", 10f); + + art = new CasinoArtPanel { Dock = DockStyle.Left, Width = 260 }; + Controls.Add(art); + + page = new Panel { Left = 280, Top = 28, Width = 500, Height = 365, BackColor = panel }; + page.Paint += (s, e) => + { + using (var pen = new Pen(Color.FromArgb(88, gold), 2)) + e.Graphics.DrawRectangle(pen, 0, 0, page.Width - 1, page.Height - 1); + }; + Controls.Add(page); + + backButton = MakeButton("Назад"); + backButton.Left = 406; backButton.Top = 428; backButton.Click += (s, e) => ShowStep(step - 1); + Controls.Add(backButton); + + nextButton = MakeButton("Далее"); + nextButton.Left = 532; nextButton.Top = 428; nextButton.Click += NextClicked; + Controls.Add(nextButton); + + cancelButton = MakeButton("Отмена"); + cancelButton.Left = 658; cancelButton.Top = 428; cancelButton.Click += (s, e) => { if (!installing) Close(); }; + Controls.Add(cancelButton); + + ShowStep(0); + } + + Button MakeButton(string caption) + { + var b = new Button + { + Text = caption, + Width = 108, + Height = 38, + FlatStyle = FlatStyle.Flat, + BackColor = Color.FromArgb(62, 43, 20), + ForeColor = text, + Font = new Font("Segoe UI", 10f, FontStyle.Bold), + Cursor = Cursors.Hand + }; + b.FlatAppearance.BorderColor = gold; + b.FlatAppearance.MouseOverBackColor = Color.FromArgb(94, 61, 24); + b.FlatAppearance.MouseDownBackColor = Color.FromArgb(120, 71, 22); + return b; + } + + Label MakeLabel(string caption, int x, int y, int w, int h, float size, FontStyle style) + { + var l = new Label + { + Text = caption, + Left = x, + Top = y, + Width = w, + Height = h, + ForeColor = text, + BackColor = Color.Transparent, + Font = new Font("Segoe UI", size, style) + }; + page.Controls.Add(l); + return l; + } + + void ShowStep(int value) + { + step = Math.Max(0, Math.Min(3, value)); + page.Controls.Clear(); + art.Stage = step; + art.Invalidate(); + + backButton.Enabled = step > 0 && !installing; + nextButton.Enabled = !installing; + cancelButton.Enabled = !installing; + nextButton.Text = step == 3 ? "Готово" : "Далее"; + + if (step == 0) WelcomePage(); + if (step == 1) FolderPage(); + if (step == 2) InstallPage(); + if (step == 3) FinishPage(); + } + + void WelcomePage() + { + MakeLabel("Добро пожаловать", 32, 32, 430, 42, 22f, FontStyle.Bold); + MakeLabel("Установщик Assembler Casino", 34, 82, 420, 28, 13f, FontStyle.Regular); + MakeLabel("Внутри уже лежит вся игра: exe, арты, звуки, анимации, музыка башни и служебные файлы.", 34, 136, 420, 72, 10.5f, FontStyle.Regular); + MakeLabel("Сейчас выберем папку, красиво распакуем казино и положим рядом нормальный exe для запуска.", 34, 220, 420, 60, 10.5f, FontStyle.Regular); + MakeLabel("Нажми «Далее», если готов открыть двери.", 34, 315, 420, 26, 10.5f, FontStyle.Bold); + } + + void FolderPage() + { + MakeLabel("Куда установить игру?", 32, 32, 430, 42, 22f, FontStyle.Bold); + MakeLabel("Можно выбрать любую папку. По умолчанию игра ставится на рабочий стол.", 34, 86, 420, 50, 10.5f, FontStyle.Regular); + + folderBox = new TextBox + { + Left = 34, + Top = 160, + Width = 330, + Height = 28, + Text = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "покер"), + BackColor = Color.FromArgb(9, 9, 9), + ForeColor = text, + BorderStyle = BorderStyle.FixedSingle + }; + page.Controls.Add(folderBox); + + var browse = MakeButton("Обзор"); + browse.Left = 374; browse.Top = 154; browse.Width = 86; + browse.Parent = page; + browse.Click += (s, e) => + { + using (var dialog = new FolderBrowserDialog()) + { + dialog.Description = "Выбери папку для Assembler Casino"; + dialog.SelectedPath = Directory.Exists(folderBox.Text) ? folderBox.Text : Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); + if (dialog.ShowDialog(this) == DialogResult.OK) + folderBox.Text = Path.Combine(dialog.SelectedPath, "покер"); + } + }; + + MakeLabel("Сохранения игроков будут храниться отдельно в AppData, поэтому переустановка игру не обнулит.", 34, 230, 420, 70, 10.5f, FontStyle.Regular); + } + + void InstallPage() + { + MakeLabel("Установка", 32, 32, 430, 42, 22f, FontStyle.Bold); + MakeLabel("Казино распаковывается. Фишки на стол, карты в колоду, барабаны на место.", 34, 86, 420, 52, 10.5f, FontStyle.Regular); + + progressText = MakeLabel("Ожидание старта...", 34, 166, 420, 28, 10.5f, FontStyle.Bold); + progress = new CasinoProgress { Left = 34, Top = 208, Width = 420, Height = 34 }; + page.Controls.Add(progress); + BeginInstall(); + } + + void FinishPage() + { + MakeLabel("Готово", 32, 32, 430, 42, 22f, FontStyle.Bold); + MakeLabel("Assembler Casino установлено. Можно запускать и проверять, как оно выглядит уже на другом компьютере.", 34, 86, 420, 70, 10.5f, FontStyle.Regular); + MakeLabel("Удачи за столами. И да, казино все еще подозрительно смотрит на чит-коды.", 34, 176, 420, 48, 10.5f, FontStyle.Regular); + + launchCheck = new CheckBox + { + Text = "Запустить игру после закрытия установщика", + Left = 34, + Top = 275, + Width = 390, + Height = 28, + Checked = true, + BackColor = Color.Transparent, + ForeColor = text + }; + page.Controls.Add(launchCheck); + cancelButton.Text = "Закрыть"; + } + + async void BeginInstall() + { + installing = true; + backButton.Enabled = nextButton.Enabled = cancelButton.Enabled = false; + try + { + var target = folderBox != null && !string.IsNullOrWhiteSpace(folderBox.Text) + ? folderBox.Text.Trim() + : Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "покер"); + + await Task.Run(() => ExtractPayload(target)); + installedPath = target; + + installing = false; + ShowStep(3); + } + catch (Exception ex) + { + installing = false; + backButton.Enabled = nextButton.Enabled = cancelButton.Enabled = true; + MessageBox.Show(this, ex.Message, "Ошибка установки", MessageBoxButtons.OK, MessageBoxIcon.Error); + ShowStep(1); + } + } + + void ExtractPayload(string target) + { + Directory.CreateDirectory(target); + Directory.CreateDirectory(Path.Combine(target, "runtime")); + + var exe = Assembly.GetExecutingAssembly().Location; + var bytes = File.ReadAllBytes(exe); + var marker = System.Text.Encoding.UTF8.GetBytes(Marker); + var index = FindMarker(bytes, marker); + if (index < 0) throw new InvalidOperationException("В установщике не найден архив игры."); + + var payloadBytes = bytes.Skip(index + marker.Length).ToArray(); + VerifyPayloadIntegrity(payloadBytes); + + var tempZip = Path.Combine(Path.GetTempPath(), "assembler_casino_payload_" + Guid.NewGuid().ToString("N") + ".zip"); + File.WriteAllBytes(tempZip, payloadBytes); + + try + { + using (var zip = ZipFile.OpenRead(tempZip)) + { + var files = zip.Entries.Where(e => !string.IsNullOrEmpty(e.Name)).ToList(); + for (int i = 0; i < files.Count; i++) + { + var entry = files[i]; + var full = Path.GetFullPath(Path.Combine(target, entry.FullName)); + if (!full.StartsWith(Path.GetFullPath(target), StringComparison.OrdinalIgnoreCase)) + throw new InvalidOperationException("Архив содержит некорректный путь."); + + Directory.CreateDirectory(Path.GetDirectoryName(full)); + entry.ExtractToFile(full, true); + int percent = (int)((i + 1) * 100.0 / Math.Max(1, files.Count)); + SetProgress(percent, "Устанавливаем: " + entry.FullName.Replace('/', '\\')); + } + } + + var oldBat = Path.Combine(target, "Assembler Casino.bat"); + try { if (File.Exists(oldBat)) File.Delete(oldBat); } catch { } + CreateDesktopShortcut(target); + RegisterUninstaller(target); + SetProgress(100, "Казино установлено."); + } + finally + { + try { File.Delete(tempZip); } catch { } + } + } + + void VerifyPayloadIntegrity(byte[] payloadBytes) + { + if (string.IsNullOrWhiteSpace(ExpectedPayloadSha256) || ExpectedPayloadSha256 == "TO_BE_FILLED_BY_RELEASE_BUILD") + return; + + using (var sha = SHA256.Create()) + { + var hash = sha.ComputeHash(payloadBytes); + var actual = BitConverter.ToString(hash).Replace("-", ""); + if (!actual.Equals(ExpectedPayloadSha256, StringComparison.OrdinalIgnoreCase)) + throw new InvalidOperationException("Архив игры внутри установщика был изменен. Установка остановлена."); + } + } + + void CreateDesktopShortcut(string target) + { + try + { + var shellType = Type.GetTypeFromProgID("WScript.Shell"); + if (shellType == null) return; + dynamic shell = Activator.CreateInstance(shellType); + var desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); + var linkPath = Path.Combine(desktop, "Assembler Casino.lnk"); + dynamic shortcut = shell.CreateShortcut(linkPath); + var launcher = Path.Combine(target, "Assembler Casino.exe"); + var icon = Path.Combine(target, "assets", "icons", "casino.ico"); + shortcut.TargetPath = launcher; + shortcut.WorkingDirectory = target; + shortcut.IconLocation = File.Exists(icon) ? icon : launcher + ",0"; + shortcut.Description = "Assembler Casino"; + shortcut.Save(); + } + catch { } + } + + void RegisterUninstaller(string target) + { + try + { + using (var key = Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Uninstall\AssemblerCasino")) + { + if (key == null) return; + var launcher = Path.Combine(target, "Assembler Casino.exe"); + var uninstaller = Path.Combine(target, "Uninstall Assembler Casino.exe"); + var icon = Path.Combine(target, "assets", "icons", "casino.ico"); + key.SetValue("DisplayName", "Assembler Casino"); + key.SetValue("DisplayVersion", "1.0"); + key.SetValue("Publisher", "Assembler Casino"); + key.SetValue("InstallLocation", target); + key.SetValue("DisplayIcon", File.Exists(icon) ? icon : launcher); + key.SetValue("UninstallString", "\"" + uninstaller + "\""); + key.SetValue("NoModify", 1, RegistryValueKind.DWord); + key.SetValue("NoRepair", 1, RegistryValueKind.DWord); + } + } + catch { } + } + + int FindMarker(byte[] bytes, byte[] marker) + { + for (int i = 0; i <= bytes.Length - marker.Length; i++) + { + bool ok = true; + for (int j = 0; j < marker.Length; j++) + { + if (bytes[i + j] != marker[j]) { ok = false; break; } + } + if (ok) return i; + } + return -1; + } + + void SetProgress(int value, string caption) + { + if (InvokeRequired) + { + BeginInvoke(new Action(SetProgress), value, caption); + return; + } + if (progress != null) progress.Value = value; + if (progressText != null) progressText.Text = caption; + } + + void NextClicked(object sender, EventArgs e) + { + if (step == 1) + { + if (folderBox == null || string.IsNullOrWhiteSpace(folderBox.Text)) + { + MessageBox.Show(this, "Выбери папку установки.", "Assembler Casino", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + } + + if (step == 2) return; + if (step == 3) + { + if (launchCheck != null && launchCheck.Checked) + { + var root = !string.IsNullOrWhiteSpace(installedPath) ? installedPath : folderBox.Text.Trim(); + var path = Path.Combine(root, "Assembler Casino.exe"); + if (File.Exists(path)) Process.Start(path); + } + Close(); + return; + } + ShowStep(step + 1); + } + } + + sealed class CasinoProgress : Control + { + int value; + public int Value + { + get { return value; } + set { this.value = Math.Max(0, Math.Min(100, value)); Invalidate(); } + } + + public CasinoProgress() + { + DoubleBuffered = true; + } + + protected override void OnPaint(PaintEventArgs e) + { + e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; + var r = ClientRectangle; + r.Width -= 1; r.Height -= 1; + using (var b = new SolidBrush(Color.FromArgb(8, 8, 8))) e.Graphics.FillRectangle(b, r); + using (var p = new Pen(Color.FromArgb(236, 186, 75), 2)) e.Graphics.DrawRectangle(p, r); + + var fill = new Rectangle(4, 4, (int)((Width - 9) * value / 100.0), Height - 9); + if (fill.Width > 0 && fill.Height > 0) + { + using (var brush = new LinearGradientBrush(fill, Color.FromArgb(30, 130, 60), Color.FromArgb(236, 186, 75), 0f)) + e.Graphics.FillRectangle(brush, fill); + } + + var caption = value + "%"; + using (var font = new Font("Consolas", 10f, FontStyle.Bold)) + using (var brush = new SolidBrush(Color.White)) + { + var sz = e.Graphics.MeasureString(caption, font); + e.Graphics.DrawString(caption, font, brush, (Width - sz.Width) / 2, (Height - sz.Height) / 2); + } + } + } + + sealed class CasinoArtPanel : Control + { + public int Stage { get; set; } + readonly Color gold = Color.FromArgb(236, 186, 75); + readonly Color red = Color.FromArgb(166, 24, 31); + readonly Color green = Color.FromArgb(20, 112, 54); + + public CasinoArtPanel() + { + DoubleBuffered = true; + } + + protected override void OnPaint(PaintEventArgs e) + { + var g = e.Graphics; + g.SmoothingMode = SmoothingMode.AntiAlias; + using (var br = new LinearGradientBrush(ClientRectangle, Color.FromArgb(34, 12, 14), Color.FromArgb(7, 55, 30), 90f)) + g.FillRectangle(br, ClientRectangle); + + DrawTitle(g); + DrawCards(g, 28, 96); + DrawRoulette(g, 132, 235); + DrawChips(g, 48, 345); + DrawStageDots(g); + + using (var pen = new Pen(Color.FromArgb(120, gold), 2)) + g.DrawLine(pen, Width - 1, 0, Width - 1, Height); + } + + void DrawTitle(Graphics g) + { + using (var f1 = new Font("Georgia", 20f, FontStyle.Bold)) + using (var f2 = new Font("Segoe UI", 9f, FontStyle.Bold)) + using (var b1 = new SolidBrush(gold)) + using (var b2 = new SolidBrush(Color.FromArgb(235, 235, 220))) + { + g.DrawString("ASSEMBLER", f1, b1, 24, 24); + g.DrawString("CASINO SETUP", f2, b2, 62, 58); + } + } + + void DrawCards(Graphics g, int x, int y) + { + DrawCard(g, x + 28, y + 8, -10, red, "A", "♥"); + DrawCard(g, x + 76, y, 8, Color.Black, "K", "♠"); + DrawCard(g, x + 124, y + 14, 14, red, "7", "♦"); + } + + void DrawCard(Graphics g, int x, int y, float angle, Color suitColor, string rank, string suit) + { + var state = g.Save(); + g.TranslateTransform(x + 30, y + 42); + g.RotateTransform(angle); + var r = new Rectangle(-30, -42, 60, 84); + using (var path = RoundRect(r, 6)) + using (var br = new SolidBrush(Color.FromArgb(245, 241, 225))) + using (var pen = new Pen(gold, 2)) + { + g.FillPath(br, path); + g.DrawPath(pen, path); + } + using (var f = new Font("Georgia", 17f, FontStyle.Bold)) + using (var b = new SolidBrush(suitColor)) + { + g.DrawString(rank, f, b, -20, -32); + g.DrawString(suit, f, b, -10, 4); + } + g.Restore(state); + } + + void DrawRoulette(Graphics g, int x, int y) + { + var outer = new Rectangle(x - 68, y - 68, 136, 136); + using (var br = new SolidBrush(Color.FromArgb(96, 48, 22))) g.FillEllipse(br, outer); + using (var p = new Pen(gold, 5)) g.DrawEllipse(p, outer); + for (int i = 0; i < 12; i++) + { + var a = i * 30.0 * Math.PI / 180.0; + var c = (i % 3 == 0) ? green : (i % 2 == 0 ? red : Color.FromArgb(12, 12, 12)); + using (var p = new Pen(c, 8)) + g.DrawLine(p, x, y, x + (float)Math.Cos(a) * 58, y + (float)Math.Sin(a) * 58); + } + using (var br = new SolidBrush(Color.FromArgb(30, 120, 50))) g.FillEllipse(br, x - 36, y - 36, 72, 72); + using (var p = new Pen(Color.FromArgb(255, 230, 150), 3)) g.DrawEllipse(p, x - 36, y - 36, 72, 72); + using (var br = new SolidBrush(Color.White)) g.FillEllipse(br, x + 18, y - 55, 12, 12); + using (var p = new Pen(Color.FromArgb(255, 230, 150), 4)) + { + g.DrawLine(p, x, y, x + 44, y - 18); + g.DrawLine(p, x, y, x - 36, y + 26); + g.DrawLine(p, x, y, x + 8, y + 48); + } + } + + void DrawChips(Graphics g, int x, int y) + { + DrawChip(g, x, y, red, "$"); + DrawChip(g, x + 48, y + 28, green, "21"); + DrawChip(g, x + 106, y + 2, Color.FromArgb(25, 70, 160), "VIP"); + } + + void DrawChip(Graphics g, int x, int y, Color c, string label) + { + using (var br = new SolidBrush(c)) g.FillEllipse(br, x, y, 54, 54); + using (var p = new Pen(Color.White, 4)) g.DrawEllipse(p, x + 5, y + 5, 44, 44); + using (var p = new Pen(gold, 2)) g.DrawEllipse(p, x + 1, y + 1, 52, 52); + using (var f = new Font("Segoe UI", 9f, FontStyle.Bold)) + using (var b = new SolidBrush(Color.White)) + { + var sz = g.MeasureString(label, f); + g.DrawString(label, f, b, x + 27 - sz.Width / 2, y + 27 - sz.Height / 2); + } + } + + void DrawStageDots(Graphics g) + { + int y = Height - 44; + for (int i = 0; i < 4; i++) + { + var c = i <= Stage ? gold : Color.FromArgb(90, 80, 62); + using (var br = new SolidBrush(c)) g.FillEllipse(br, 78 + i * 28, y, 12, 12); + } + } + + GraphicsPath RoundRect(Rectangle r, int radius) + { + int d = radius * 2; + var path = new GraphicsPath(); + path.AddArc(r.X, r.Y, d, d, 180, 90); + path.AddArc(r.Right - d, r.Y, d, d, 270, 90); + path.AddArc(r.Right - d, r.Bottom - d, d, d, 0, 90); + path.AddArc(r.X, r.Bottom - d, d, d, 90, 90); + path.CloseFigure(); + return path; + } + } +} + + + + + diff --git a/build/UninstallAssemblerCasino.cs b/build/UninstallAssemblerCasino.cs new file mode 100644 index 0000000..d7c4676 --- /dev/null +++ b/build/UninstallAssemblerCasino.cs @@ -0,0 +1,235 @@ +using Microsoft.Win32; +using System; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.IO; +using System.Windows.Forms; + +namespace AssemblerCasinoUninstaller +{ + static class Program + { + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new UninstallForm()); + } + } + + sealed class UninstallForm : Form + { + readonly Color bg = Color.FromArgb(15, 12, 10); + readonly Color panel = Color.FromArgb(28, 22, 18); + readonly Color gold = Color.FromArgb(236, 186, 75); + readonly Color red = Color.FromArgb(164, 26, 32); + readonly Color text = Color.FromArgb(245, 236, 205); + readonly string installDir = AppDomain.CurrentDomain.BaseDirectory.TrimEnd('\\'); + CheckBox removeSaves; + Button uninstallButton; + + public UninstallForm() + { + Text = "Uninstall Assembler Casino"; + try { Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath); } catch { } + StartPosition = FormStartPosition.CenterScreen; + FormBorderStyle = FormBorderStyle.FixedDialog; + MaximizeBox = false; + MinimizeBox = false; + ClientSize = new Size(680, 390); + BackColor = bg; + Font = new Font("Segoe UI", 10f); + + var art = new UninstallArt { Dock = DockStyle.Left, Width = 220 }; + Controls.Add(art); + + var content = new Panel { Left = 242, Top = 28, Width = 400, Height = 250, BackColor = panel }; + content.Paint += (s, e) => + { + using (var pen = new Pen(Color.FromArgb(88, gold), 2)) + e.Graphics.DrawRectangle(pen, 0, 0, content.Width - 1, content.Height - 1); + }; + Controls.Add(content); + + AddLabel(content, "Удаление казино", 28, 26, 340, 38, 21f, FontStyle.Bold); + AddLabel(content, "Игра будет удалена из этой папки:", 30, 82, 340, 26, 10.5f, FontStyle.Regular); + AddLabel(content, installDir, 30, 112, 340, 46, 9.5f, FontStyle.Regular); + AddLabel(content, "Ярлык на рабочем столе и запись в списке программ тоже будут убраны.", 30, 160, 340, 42, 10f, FontStyle.Regular); + + removeSaves = new CheckBox + { + Text = "Также удалить сохранения аккаунтов из AppData", + Left = 30, + Top = 208, + Width = 345, + Height = 26, + BackColor = Color.Transparent, + ForeColor = text + }; + content.Controls.Add(removeSaves); + + uninstallButton = MakeButton("Удалить"); + uninstallButton.Left = 386; uninstallButton.Top = 312; + uninstallButton.Click += (s, e) => Uninstall(); + Controls.Add(uninstallButton); + + var cancel = MakeButton("Отмена"); + cancel.Left = 514; cancel.Top = 312; + cancel.Click += (s, e) => Close(); + Controls.Add(cancel); + } + + void AddLabel(Control parent, string caption, int x, int y, int w, int h, float size, FontStyle style) + { + parent.Controls.Add(new Label + { + Text = caption, + Left = x, + Top = y, + Width = w, + Height = h, + ForeColor = text, + BackColor = Color.Transparent, + Font = new Font("Segoe UI", size, style) + }); + } + + Button MakeButton(string caption) + { + var b = new Button + { + Text = caption, + Width = 108, + Height = 38, + FlatStyle = FlatStyle.Flat, + BackColor = Color.FromArgb(62, 43, 20), + ForeColor = text, + Font = new Font("Segoe UI", 10f, FontStyle.Bold), + Cursor = Cursors.Hand + }; + b.FlatAppearance.BorderColor = gold; + b.FlatAppearance.MouseOverBackColor = Color.FromArgb(94, 61, 24); + b.FlatAppearance.MouseDownBackColor = Color.FromArgb(120, 71, 22); + return b; + } + + void Uninstall() + { + if (MessageBox.Show(this, "Удалить Assembler Casino?", "Assembler Casino", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes) + return; + + uninstallButton.Enabled = false; + try + { + TryDeleteShortcut(); + TryDeleteRegistry(); + if (removeSaves.Checked) + TryDeleteSaves(); + + var parent = Directory.GetParent(installDir); + var cmd = "/c timeout /t 1 /nobreak >nul & rmdir /s /q \"" + installDir + "\""; + Process.Start(new ProcessStartInfo + { + FileName = "cmd.exe", + Arguments = cmd, + WorkingDirectory = parent == null ? Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) : parent.FullName, + CreateNoWindow = true, + WindowStyle = ProcessWindowStyle.Hidden + }); + Close(); + } + catch (Exception ex) + { + uninstallButton.Enabled = true; + MessageBox.Show(this, ex.Message, "Ошибка удаления", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + void TryDeleteShortcut() + { + try + { + var desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); + var link = Path.Combine(desktop, "Assembler Casino.lnk"); + if (File.Exists(link)) File.Delete(link); + } + catch { } + } + + void TryDeleteRegistry() + { + try + { + Registry.CurrentUser.DeleteSubKeyTree(@"Software\Microsoft\Windows\CurrentVersion\Uninstall\AssemblerCasino", false); + } + catch { } + } + + void TryDeleteSaves() + { + try + { + var saves = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "AssemblerCasino"); + if (Directory.Exists(saves)) Directory.Delete(saves, true); + } + catch { } + } + } + + sealed class UninstallArt : Control + { + readonly Color gold = Color.FromArgb(236, 186, 75); + readonly Color red = Color.FromArgb(164, 26, 32); + + public UninstallArt() + { + DoubleBuffered = true; + } + + protected override void OnPaint(PaintEventArgs e) + { + var g = e.Graphics; + g.SmoothingMode = SmoothingMode.AntiAlias; + using (var br = new LinearGradientBrush(ClientRectangle, Color.FromArgb(48, 9, 12), Color.FromArgb(12, 12, 12), 90f)) + g.FillRectangle(br, ClientRectangle); + + using (var f = new Font("Georgia", 19f, FontStyle.Bold)) + using (var b = new SolidBrush(gold)) + g.DrawString("CASINO", f, b, 48, 36); + + DrawChip(g, 78, 112, red, "X"); + DrawCardBack(g, 62, 190); + + using (var p = new Pen(Color.FromArgb(120, gold), 2)) + g.DrawLine(p, Width - 1, 0, Width - 1, Height); + } + + void DrawChip(Graphics g, int x, int y, Color c, string label) + { + using (var br = new SolidBrush(c)) g.FillEllipse(br, x, y, 62, 62); + using (var p = new Pen(Color.White, 4)) g.DrawEllipse(p, x + 6, y + 6, 50, 50); + using (var p = new Pen(gold, 2)) g.DrawEllipse(p, x + 1, y + 1, 60, 60); + using (var f = new Font("Segoe UI", 17f, FontStyle.Bold)) + using (var b = new SolidBrush(Color.White)) + { + var sz = g.MeasureString(label, f); + g.DrawString(label, f, b, x + 31 - sz.Width / 2, y + 31 - sz.Height / 2); + } + } + + void DrawCardBack(Graphics g, int x, int y) + { + var r = new Rectangle(x, y, 88, 122); + using (var br = new SolidBrush(Color.FromArgb(18, 18, 18))) g.FillRectangle(br, r); + using (var p = new Pen(gold, 3)) g.DrawRectangle(p, r); + using (var p = new Pen(red, 2)) + { + g.DrawRectangle(p, x + 10, y + 10, 68, 102); + g.DrawLine(p, x + 18, y + 20, x + 70, y + 102); + g.DrawLine(p, x + 70, y + 20, x + 18, y + 102); + } + } + } +} diff --git a/build/casino_icon.rc b/build/casino_icon.rc new file mode 100644 index 0000000..5f2b699 --- /dev/null +++ b/build/casino_icon.rc @@ -0,0 +1 @@ +1 ICON "assets\\icons\\casino.ico" diff --git a/build/graphics/cabaret-loop-preview.gif b/build/graphics/cabaret-loop-preview.gif new file mode 100644 index 0000000..801bac3 Binary files /dev/null and b/build/graphics/cabaret-loop-preview.gif differ diff --git a/build/graphics/casino3d.inc b/build/graphics/casino3d.inc new file mode 100644 index 0000000..b890a56 --- /dev/null +++ b/build/graphics/casino3d.inc @@ -0,0 +1,2975 @@ + +; ============================================================================== +; CASINO 2.5D - MASM32 SOFTWARE RAYCASTER (CP1251) +; Graphical migration; this is not id Software's Doom engine. +; ============================================================================== + +includelib gdi32.lib +includelib winmm.lib + +CreateWindowExA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +RegisterClassExA PROTO :DWORD +DefWindowProcA PROTO :DWORD,:DWORD,:DWORD,:DWORD +ShowWindow PROTO :DWORD,:DWORD +UpdateWindow PROTO :DWORD +GetDC PROTO :DWORD +ReleaseDC PROTO :DWORD,:DWORD +StretchDIBits PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +PeekMessageA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD +TranslateMessage PROTO :DWORD +DispatchMessageA PROTO :DWORD +PostQuitMessage PROTO :DWORD +DestroyWindow PROTO :DWORD +SetWindowTextA PROTO :DWORD,:DWORD +SetForegroundWindow PROTO :DWORD +GetConsoleWindow PROTO +GetSystemMetrics PROTO :DWORD +CreateFileA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +ReadFile PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD +CloseHandle PROTO :DWORD +GetAsyncKeyState PROTO :DWORD +PlaySoundA PROTO :DWORD,:DWORD,:DWORD +GetModuleFileNameA PROTO :DWORD,:DWORD,:DWORD +Sleep PROTO :DWORD + +C3D_POINT STRUCT + x dd ? + y dd ? +C3D_POINT ENDS + +C3D_MSG STRUCT + hwnd dd ? + message dd ? + wParam dd ? + lParam dd ? + time dd ? + pt C3D_POINT <> +C3D_MSG ENDS + +C3D_WNDCLASSEX STRUCT + cbSize dd ? + style dd ? + lpfnWndProc dd ? + cbClsExtra dd ? + cbWndExtra dd ? + hInstance dd ? + hIcon dd ? + hCursor dd ? + hbrBackground dd ? + lpszMenuName dd ? + lpszClassName dd ? + hIconSm dd ? +C3D_WNDCLASSEX ENDS + +C3D_BITMAPINFOHEADER STRUCT + biSize dd ? + biWidth dd ? + biHeight dd ? + biPlanes dw ? + biBitCount dw ? + biCompression dd ? + biSizeImage dd ? + biXPelsPerMeter dd ? + biYPelsPerMeter dd ? + biClrUsed dd ? + biClrImportant dd ? +C3D_BITMAPINFOHEADER ENDS + +C3D_BITMAPINFO STRUCT + bmiHeader C3D_BITMAPINFOHEADER <> + bmiColors dd ? +C3D_BITMAPINFO ENDS + +SpriteObject STRUCT + posX dd ? + posY dd ? + baseTexId dd ? + frameCount dd ? + curFrame dd ? + animTimer dd ? + animSpeed dd ? + interactId dd ? + promptPtr dd ? + distSq dd ? +SpriteObject ENDS + +SCREEN_W equ 640 +SCREEN_H equ 480 +HALF_W equ 320 +HALF_H equ 240 +SCREEN_SIZE equ (SCREEN_W * SCREEN_H) +WIN_SCALE equ 1 +WINDOW_W equ (SCREEN_W * WIN_SCALE) +WINDOW_H equ (SCREEN_H * WIN_SCALE) + +FP_1 equ 65536 +FP_HALF equ 32768 +CHROMA_KEY equ 00FF00FFh + +MODE_WALK equ 0 +MODE_SLOTS equ 1 +MODE_BLACKJACK equ 2 +MODE_ROULETTE equ 3 +MODE_SHOP equ 4 +MODE_ATM equ 5 + +WS_OVERLAPPEDWINDOW equ 00CF0000h +SW_SHOW equ 5 +SW_HIDE equ 0 +PM_REMOVE equ 1 +WM_DESTROY equ 0002h +WM_CLOSE equ 0010h +WM_QUIT equ 0012h +CS_HREDRAW equ 2 +CS_VREDRAW equ 1 +DIB_RGB_COLORS equ 0 +SRCCOPY equ 00CC0020h +INVALID_FILE_HANDLE equ -1 + +include casino3d_data.inc +include font8x8.inc +include src_graphics\platform_data.inc + +.data +ALIGN 4 +h3DInst dd 0 +h3DWnd dd 0 +h3DDC dd 0 +hCasinoConsole dd 0 + +bmi3D C3D_BITMAPINFO <> +msg3D C3D_MSG <> +wc3D C3D_WNDCLASSEX <> + +sz3DClassName db "Casino3DRetroClass",0 +sz3DWindowTitle db "Assembler Casino - 2.5D",0 +szTexturesRelPath db "assets\textures\casino3d-hd.bin",0 +szTexturesFullPath db 260 dup(0) + +soundCoin db "assets\audio\Звон падающей монеты.wav",0 +soundCards db "assets\audio\playing_cards_deck_flick_through_001_20485.wav",0 +soundRoulette db "assets\audio\roulette-wheel-throw-2.wav",0 +soundJackpot db "assets\audio\Джекпот.wav",0 +soundClick db "assets\audio\b05e1ac8be34248.wav",0 + +playerX dd (16 * FP_1 + FP_HALF) +playerY dd (16 * FP_1 + FP_HALF) +playerAngle dd 384 +playerDirX dd 0 +playerDirY dd -FP_1 +playerPlaneX dd (FP_1 * 66 / 100) +playerPlaneY dd 0 + +engineMode dd 0 +interactTargetId dd 0 +interactPromptPtr dd 0 +dancerLuckBuff dd 0 +flashTimer dd 0 +flashMessage db 128 dup(0) + +promptDancer db "[E] CABARET - TIP $100",0 +promptSlot1 db "[E] SLOTS 777",0 +promptSlot2 db "[E] SLOTS 777",0 +promptBlackjack db "[E] BLACKJACK / 21",0 +promptPoker db "POKER - UNDER CONSTRUCTION",0 +promptRoulette db "[E] ROULETTE",0 +promptShop db "[E] BOUTIQUE",0 +promptATM db "[E] CASHIER",0 +promptBackroom db "BACKROOM - UNDER CONSTRUCTION",0 +promptDurak db "DURAK - UNDER CONSTRUCTION",0 +promptHell db "TOWER - UNDER CONSTRUCTION",0 + +msgDancerTipped db "Вы бросили $100 танцовщице! УДАЧА АКТИВИРОВАНА!",0 +msgNeedMoney db "Недостаточно денег в кошельке!",0 +statusHUDFormat db "БАНКРОЛЛ: $",0 +targetHUDFormat db " ЦЕЛЬ: $",0 +luckHUDFormat db " УДАЧА: +",0 +controlsHUD db "WASD/Стрелки: Ходьба | E: Действие | ESC: Меню",0 + +NUM_SPRITES equ 13 +ALIGN 4 +casinoSprites SpriteObject NUM_SPRITES dup(<>) +sortedSprites dd NUM_SPRITES dup(0) + +rowDistTable dd 120 dup(0) +rngSeed3D dd 12345678h + +slotBet dd 50 +slotReel1 dd 0 +slotReel2 dd 1 +slotReel3 dd 2 +slotSpinState dd 0 +slotSpinTimer dd 0 +slotWinAmount dd 0 +slotWinMsg db 64 dup(0) + +bjState dd 0 +bjBet dd 100 +bjPlayerCards dd 10 dup(0) +bjPlayerCardCount dd 0 +bjPlayerScore dd 0 +bjDealerCards dd 10 dup(0) +bjDealerCardCount dd 0 +bjDealerScore dd 0 +bjDealerHideHole dd 1 +bjOutcomeMsg db 64 dup(0) + +roulState dd 0 +roulBetType dd 1 +roulBetAmount dd 100 +roulWheelAngle dd 0 +roulBallAngle dd 0 +roulSpinTimer dd 0 +roulWinningNum dd 0 +roulPayout dd 0 +roulOutcomeMsg db 64 dup(0) + +shopMsg db 128 dup(0) +atmMsg db 128 dup(0) + +strWin db "ПОБЕДА! +$",0 +strLose db "ПРОИГРЫШ",0 +strJackpot db "ДЖЕКПОТ! +$",0 +strPush db "НИЧЬЯ (PUSH)",0 +strDealerBust db "ДИЛЕР ПЕРЕБРАЛ! ПОБЕДА! +$",0 +strPlayerBust db "ПЕРЕБОР (>21)! ПРОИГРЫШ",0 + +sym7 db " 777 ",0 +symBar db " BAR ",0 +symBell db " BELL",0 +symCherry db "CHERRY",0 +symClover db "CLOVER",0 +symGem db " GEM ",0 +symCrown db "CROWN",0 + +cardRankStr db "A ",0,"2 ",0,"3 ",0,"4 ",0,"5 ",0,"6 ",0,"7 ",0,"8 ",0,"9 ",0,"10",0,"J ",0,"Q ",0,"K ",0 + +.data? +ALIGN 4 +screenBuffer dd SCREEN_SIZE dup(?) +ALIGN 4 +zBuffer dd SCREEN_W dup(?) +ALIGN 4 +texturesBuffer dd (48 * 128 * 128) dup(?) + +hudNumBuffer db 32 dup(?) + +.code + +; --- 3D Window Procedure --- +Casino3DWndProc PROC hwnd:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD + invoke WindowEvents3D, hwnd, uMsg, wParam, lParam + ret +Casino3DWndProc ENDP + +; --- Random Generator --- +RandomRange3D PROC maxVal:DWORD + mov eax, rngSeed3D + imul eax, 1103515245 + add eax, 12345 + mov rngSeed3D, eax + shr eax, 16 + and eax, 7FFFh + xor edx, edx + div maxVal + mov eax, edx + ret +RandomRange3D ENDP + +; --- Copy String --- +CopyString3D PROC src:DWORD, dst:DWORD + push esi + push edi + mov esi, src + mov edi, dst +@@: + mov al, [esi] + mov [edi], al + test al, al + jz @F + inc esi + inc edi + jmp @B +@@: + pop edi + pop esi + ret +CopyString3D ENDP + +; --- Format Number to Decimal String --- +FormatNumber PROC num:DWORD, buf:DWORD + push ebx + push esi + push edi + mov eax, num + mov edi, buf + test eax, eax + jns fn_pos + mov BYTE PTR [edi], '-' + inc edi + neg eax +fn_pos: + mov ebx, 10 + push 0 +fn_div: + xor edx, edx + div ebx + add dl, '0' + push edx + test eax, eax + jnz fn_div +fn_pop: + pop eax + test al, al + jz fn_done + mov [edi], al + inc edi + jmp fn_pop +fn_done: + mov BYTE PTR [edi], 0 + pop edi + pop esi + pop ebx + ret +FormatNumber ENDP + +; --- Fast 2D Drawing Primitives --- +DrawBox PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD + +DrawPixel PROC x:DWORD, y:DWORD, color:DWORD + invoke DrawBox, x, y, 1, 1, color + ret +DrawPixel ENDP + +DrawBox PROC x:DWORD, y:DWORD, w:DWORD, h:DWORD, color:DWORD + shl x, 1 + shl y, 1 + shl w, 1 + shl h, 1 + push ebx + push esi + push edi + mov edi, y +box_row_loop: + mov eax, y + add eax, h + cmp edi, eax + jge box_done + cmp edi, 0 + jl next_box_row + cmp edi, SCREEN_H + jge box_done + + mov esi, x +box_col_loop: + mov eax, x + add eax, w + cmp esi, eax + jge next_box_row + cmp esi, 0 + jl next_box_col + cmp esi, SCREEN_W + jge next_box_row + + mov ecx, edi + imul ecx, SCREEN_W + add ecx, esi + mov edx, color + mov [screenBuffer + ecx*4], edx + +next_box_col: + inc esi + jmp box_col_loop + +next_box_row: + inc edi + jmp box_row_loop + +box_done: + pop edi + pop esi + pop ebx + ret +DrawBox ENDP + +DrawBoxBorder PROC uses ebx x:DWORD, y:DWORD, w:DWORD, h:DWORD, fillColor:DWORD, borderColor:DWORD, bWidth:DWORD + invoke DrawBox, x, y, w, h, borderColor + mov eax, x + add eax, bWidth + mov edx, y + add edx, bWidth + mov ecx, w + sub ecx, bWidth + sub ecx, bWidth + mov ebx, h + sub ebx, bWidth + sub ebx, bWidth + invoke DrawBox, eax, edx, ecx, ebx, fillColor + ret +DrawBoxBorder ENDP + +DrawCircle PROC cxVal:DWORD, cyVal:DWORD, radius:DWORD, color:DWORD + push ebx + push esi + push edi + mov eax, radius + neg eax + mov edi, eax +circ_y: + cmp edi, radius + jg circ_done + mov eax, radius + neg eax + mov esi, eax +circ_x: + cmp esi, radius + jg next_circ_y + + mov eax, esi + imul eax, eax + mov ebx, edi + imul ebx, ebx + add eax, ebx + mov edx, radius + imul edx, edx + cmp eax, edx + jg next_circ_x + + mov eax, cxVal + add eax, esi + mov ecx, cyVal + add ecx, edi + invoke DrawPixel, eax, ecx, color + +next_circ_x: + inc esi + jmp circ_x +next_circ_y: + inc edi + jmp circ_y +circ_done: + pop edi + pop esi + pop ebx + ret +DrawCircle ENDP + +DrawChar8x8 PROC uses ebx esi edi x:DWORD, y:DWORD, chVal:DWORD, color:DWORD + local column:DWORD + mov eax, chVal + and eax, 255 + lea esi, [font8x8 + eax*8] + xor edi, edi +glyph_row: + movzx ebx, BYTE PTR [esi+edi] + mov column, 0 +glyph_col: + test ebx, 80h + jz glyph_next + mov eax, x + add eax, column + mov edx, y + add edx, edi + invoke DrawPixel, eax, edx, color +glyph_next: + shl ebx, 1 + inc column + cmp column, 8 + jl glyph_col + inc edi + cmp edi, 8 + jl glyph_row + ret +DrawChar8x8 ENDP + +DrawString8x8 PROC x:DWORD, y:DWORD, strPtr:DWORD, color:DWORD + push ebx + push esi + mov esi, strPtr + mov ebx, x +str_loop: + movzx eax, BYTE PTR [esi] + test al, al + jz str_done + invoke DrawChar8x8, ebx, y, eax, color + add ebx, 8 + inc esi + jmp str_loop +str_done: + pop esi + pop ebx + ret +DrawString8x8 ENDP + +; --- True 3D Perspective Floor & Ceiling Rendering --- +RenderCeilingAndFloor PROC uses ebx esi edi + local floorRow:DWORD + local pDist:DWORD + local fStepX:DWORD + local fStepY:DWORD + local fX:DWORD + local fY:DWORD + local shade:DWORD + local cShade:DWORD + + ; Horizon line: row 120 + mov edi, HALF_H +floor_scanlines: + cmp edi, SCREEN_H + jge floor_done + mov floorRow, edi + + ; Distance = (HALF_H * FP_1) / (y - HALF_H) + mov eax, edi + sub eax, HALF_H + inc eax + mov ecx, eax + mov eax, HALF_H * FP_1 + cdq + idiv ecx + mov pDist, eax + + ; Distance shading (closer is brighter, far horizon is dark) + mov edx, pDist + shr edx, 13 + mov eax, 255 + sub eax, edx + cmp eax, 35 + jge @F + mov eax, 35 +@@: + mov shade, eax + mov edx, eax + sub edx, 25 + cmp edx, 20 + jge @F + mov edx, 20 +@@: + mov cShade, edx + + ; Step along scanline: (2 * playerPlane) * pDist / SCREEN_W + mov eax, playerPlaneX + shl eax, 1 + imul pDist + shrd eax, edx, 16 + cdq + mov ecx, SCREEN_W + idiv ecx + mov fStepX, eax + + mov eax, playerPlaneY + shl eax, 1 + imul pDist + shrd eax, edx, 16 + cdq + mov ecx, SCREEN_W + idiv ecx + mov fStepY, eax + + ; Starting floor coordinates at x=0: + ; player + pDist * (playerDir - playerPlane) + mov eax, playerDirX + sub eax, playerPlaneX + imul pDist + shrd eax, edx, 16 + add eax, playerX + mov fX, eax + + mov eax, playerDirY + sub eax, playerPlaneY + imul pDist + shrd eax, edx, 16 + add eax, playerY + mov fY, eax + + ; Fill scanline for floor (y) and ceiling (SCREEN_H - 1 - y) + xor esi, esi +col_floor_loop: + cmp esi, SCREEN_W + jge next_floor_row + + ; Carpet Texture (Slot 3: 3 * 4096 * 4 = 49152 bytes) + mov eax, fX + shr eax, 9 + and eax, 127 + mov edx, fY + shr edx, 9 + and edx, 127 + shl edx, 7 + add edx, eax + + mov eax, [texturesBuffer + (3 * 128 * 128 * 4) + edx*4] + + ; Shade Floor RGB + mov ebx, shade + movzx ecx, al + imul ecx, ebx + shr ecx, 8 + push ecx + + movzx ecx, ah + imul ecx, ebx + shr ecx, 8 + shl ecx, 8 + + shr eax, 16 + movzx eax, al + imul eax, ebx + shr eax, 8 + shl eax, 16 + or eax, ecx + pop ecx + or eax, ecx + + ; Store to Floor pixel + mov ecx, floorRow + imul ecx, SCREEN_W + add ecx, esi + mov [screenBuffer + ecx*4], eax + + ; Ceiling Spotlight Texture (Slot 5: 5 * 4096 * 4 = 81920 bytes) + mov eax, [texturesBuffer + (5 * 128 * 128 * 4) + edx*4] + mov ebx, cShade + movzx ecx, al + imul ecx, ebx + shr ecx, 8 + push ecx + + movzx ecx, ah + imul ecx, ebx + shr ecx, 8 + shl ecx, 8 + + shr eax, 16 + movzx eax, al + imul eax, ebx + shr eax, 8 + shl eax, 16 + or eax, ecx + pop ecx + or eax, ecx + + ; Store to Ceiling pixel: (SCREEN_H - 1 - floorRow) + mov ecx, SCREEN_H - 1 + sub ecx, floorRow + imul ecx, SCREEN_W + add ecx, esi + mov [screenBuffer + ecx*4], eax + + mov eax, fStepX + add fX, eax + mov eax, fStepY + add fY, eax + inc esi + jmp col_floor_loop + +next_floor_row: + inc edi + jmp floor_scanlines + +floor_done: + ret +RenderCeilingAndFloor ENDP + +; --- DDA Raycasting Walls --- +RenderWalls PROC + local col:DWORD + local camX:DWORD + local rayDirX:DWORD + local rayDirY:DWORD + local mapX:DWORD + local mapY:DWORD + local deltaDistX:DWORD + local deltaDistY:DWORD + local stepX:DWORD + local stepY:DWORD + local sideDistX:DWORD + local sideDistY:DWORD + local side:DWORD + local perpWallDist:DWORD + local lineH:DWORD + local drawStart:DWORD + local drawEnd:DWORD + local wallHit:DWORD + local texX:DWORD + local texId:DWORD + local shade:DWORD + + push ebx + push esi + push edi + + mov eax, playerAngle + and eax, 511 + mov ebx, [tableCos + eax*4] + mov playerDirX, ebx + mov ebx, [tableSin + eax*4] + mov playerDirY, ebx + + mov eax, ebx + imul eax, -66 + cdq + mov ecx, 100 + idiv ecx + mov playerPlaneX, eax + + mov eax, playerDirX + imul eax, 66 + cdq + idiv ecx + mov playerPlaneY, eax + + mov col, 0 +col_loop: + cmp col, SCREEN_W + jge walls_done + + mov eax, col + shl eax, 1 + sub eax, SCREEN_W + imul eax, FP_1 + cdq + mov ecx, SCREEN_W + idiv ecx + mov camX, eax + + mov eax, playerPlaneX + imul camX + shrd eax, edx, 16 + add eax, playerDirX + mov rayDirX, eax + + mov eax, playerPlaneY + imul camX + shrd eax, edx, 16 + add eax, playerDirY + mov rayDirY, eax + + mov eax, playerX + sar eax, 16 + mov mapX, eax + mov eax, playerY + sar eax, 16 + mov mapY, eax + + mov eax, rayDirX + test eax, eax + jnz calc_delta_x + mov deltaDistX, 7FFFFFFFh + jmp calc_delta_y +calc_delta_x: + test eax, eax + jns @F + neg eax +@@: + mov ebx, eax + ; 2^32 needs the full EDX:EAX dividend, not a truncated multiply. + xor eax, eax + mov edx, 1 + idiv ebx + mov deltaDistX, eax + +calc_delta_y: + mov eax, rayDirY + test eax, eax + jnz calc_delta_y_ok + mov deltaDistY, 7FFFFFFFh + jmp check_step +calc_delta_y_ok: + test eax, eax + jns @F + neg eax +@@: + mov ebx, eax + ; 2^32 needs the full EDX:EAX dividend, not a truncated multiply. + xor eax, eax + mov edx, 1 + idiv ebx + mov deltaDistY, eax + +check_step: + cmp rayDirX, 0 + jge step_x_pos + mov stepX, -1 + mov eax, playerX + mov edx, mapX + shl edx, 16 + sub eax, edx + imul deltaDistX + shrd eax, edx, 16 + mov sideDistX, eax + jmp check_step_y +step_x_pos: + mov stepX, 1 + mov eax, mapX + inc eax + shl eax, 16 + sub eax, playerX + imul deltaDistX + shrd eax, edx, 16 + mov sideDistX, eax + +check_step_y: + cmp rayDirY, 0 + jge step_y_pos + mov stepY, -1 + mov eax, playerY + mov edx, mapY + shl edx, 16 + sub eax, edx + imul deltaDistY + shrd eax, edx, 16 + mov sideDistY, eax + jmp dda_start +step_y_pos: + mov stepY, 1 + mov eax, mapY + inc eax + shl eax, 16 + sub eax, playerY + imul deltaDistY + shrd eax, edx, 16 + mov sideDistY, eax + +dda_start: + xor ecx, ecx +dda_step_loop: + inc ecx + cmp ecx, 64 + jge hit_wall + + mov eax, sideDistX + cmp eax, sideDistY + jge step_in_y + + mov eax, deltaDistX + add sideDistX, eax + mov eax, stepX + add mapX, eax + mov side, 0 + jmp check_tile + +step_in_y: + mov eax, deltaDistY + add sideDistY, eax + mov eax, stepY + add mapY, eax + mov side, 1 + +check_tile: + cmp mapX, 0 + jl hit_wall + cmp mapX, MAP_WIDTH + jge hit_wall + cmp mapY, 0 + jl hit_wall + cmp mapY, MAP_HEIGHT + jge hit_wall + + mov eax, mapY + shl eax, 5 + add eax, mapX + movzx eax, BYTE PTR [casinoMap + eax] + test eax, eax + jnz hit_wall + jmp dda_step_loop + +hit_wall: + cmp side, 0 + jne perp_y + mov eax, sideDistX + sub eax, deltaDistX + mov perpWallDist, eax + jmp perp_done +perp_y: + mov eax, sideDistY + sub eax, deltaDistY + mov perpWallDist, eax + +perp_done: + cmp perpWallDist, 2048 + jge @F + mov perpWallDist, 2048 +@@: + mov eax, col + mov edx, perpWallDist + mov [zBuffer + eax*4], edx + + ; High casino ceiling: lineH = (SCREEN_H * FP_1 * 180 / 240) / perpWallDist + mov eax, SCREEN_H + imul eax, FP_1 + cdq + idiv perpWallDist + mov lineH, eax + + mov eax, lineH + shr eax, 1 + mov ecx, HALF_H + sub ecx, eax + mov drawStart, ecx + + mov eax, lineH + shr eax, 1 + mov ecx, HALF_H + add ecx, eax + mov drawEnd, ecx + + cmp side, 0 + jne hit_side_y + mov eax, perpWallDist + imul rayDirY + shrd eax, edx, 16 + add eax, playerY + mov wallHit, eax + jmp calc_tex_x +hit_side_y: + mov eax, perpWallDist + imul rayDirX + shrd eax, edx, 16 + add eax, playerX + mov wallHit, eax + +calc_tex_x: + ; MASK WITH 0FFFFh to prevent texture scrambling! + mov eax, wallHit + and eax, 0FFFFh + shr eax, 9 + and eax, 127 + mov texX, eax + + cmp side, 0 + jne @F + cmp rayDirX, 0 + jle @F + mov eax, 127 + sub eax, texX + mov texX, eax +@@: + cmp side, 1 + jne select_tex + cmp rayDirY, 0 + jge select_tex + mov eax, 127 + sub eax, texX + mov texX, eax + +select_tex: + mov eax, mapY + shl eax, 5 + add eax, mapX + movzx eax, BYTE PTR [casinoMap + eax] + mov texId, eax + cmp texId, 0 + jne @F + mov texId, 1 +@@: + + mov eax, perpWallDist + shr eax, 13 + mov edx, 256 + sub edx, eax + cmp edx, 75 + jge @F + mov edx, 75 +@@: + cmp side, 1 + jne @F + imul edx, 3 + shr edx, 2 +@@: + mov shade, edx + + cmp drawStart, 0 + jge @F + mov drawStart, 0 +@@: + cmp drawEnd, SCREEN_H + jl @F + mov drawEnd, SCREEN_H - 1 +@@: + + mov eax, 128 * FP_1 + cdq + idiv lineH + mov esi, eax ; stepY + + mov eax, lineH + shr eax, 1 + add eax, drawStart + sub eax, HALF_H + imul eax, esi + mov edi, eax ; texPos + + mov ecx, drawStart +draw_stripe_loop: + cmp ecx, drawEnd + jg next_col + + mov eax, edi + shr eax, 16 + and eax, 127 + shl eax, 7 + add eax, texX + + mov edx, texId + shl edx, 14 + add eax, edx + mov eax, [texturesBuffer + eax*4] + + ; Shade wall pixel + mov ebx, shade + movzx edx, al + imul edx, ebx + shr edx, 8 + push edx + + movzx edx, ah + imul edx, ebx + shr edx, 8 + shl edx, 8 + + shr eax, 16 + movzx eax, al + imul eax, ebx + shr eax, 8 + shl eax, 16 + or eax, edx + pop edx + or eax, edx + + mov edx, ecx + imul edx, SCREEN_W + add edx, col + mov [screenBuffer + edx*4], eax + + add edi, esi + inc ecx + jmp draw_stripe_loop + +next_col: + inc col + jmp col_loop + +walls_done: + pop edi + pop esi + pop ebx + ret +RenderWalls ENDP + +; --- Render 3D Billboard Sprites --- +RenderSprites PROC + local sprIdx:DWORD + local relX:DWORD + local relY:DWORD + local invDet:DWORD + local transX:DWORD + local transY:DWORD + local sprScreenX:DWORD + local sprH:DWORD + local sprW:DWORD + local drawStartY:DWORD + local drawEndY:DWORD + local drawStartX:DWORD + local drawEndX:DWORD + local stripe:DWORD + local texX:DWORD + local texY:DWORD + local shade:DWORD + local texSlot:DWORD + + push ebx + push esi + push edi + + xor esi, esi +calc_dist_loop: + cmp esi, NUM_SPRITES + jge sort_sprites + mov eax, esi + imul eax, SIZEOF SpriteObject + + mov edx, [casinoSprites + eax].posX + sub edx, playerX + sar edx, 8 + imul edx, edx + mov ebx, edx + + mov edx, [casinoSprites + eax].posY + sub edx, playerY + sar edx, 8 + imul edx, edx + add ebx, edx + + mov [casinoSprites + eax].distSq, ebx + mov [sortedSprites + esi*4], esi + inc esi + jmp calc_dist_loop + +sort_sprites: + xor esi, esi +sort_outer: + cmp esi, NUM_SPRITES - 1 + jge render_sorted_sprites + mov edi, esi + inc edi +sort_inner: + cmp edi, NUM_SPRITES + jge next_sort_outer + + mov eax, [sortedSprites + esi*4] + imul eax, SIZEOF SpriteObject + mov eax, [casinoSprites + eax].distSq + + mov ebx, [sortedSprites + edi*4] + imul ebx, SIZEOF SpriteObject + mov ebx, [casinoSprites + ebx].distSq + + cmp eax, ebx + jge @F + mov ecx, [sortedSprites + esi*4] + mov edx, [sortedSprites + edi*4] + mov [sortedSprites + esi*4], edx + mov [sortedSprites + edi*4], ecx +@@: + inc edi + jmp sort_inner +next_sort_outer: + inc esi + jmp sort_outer + +render_sorted_sprites: + xor esi, esi +draw_spr_loop: + cmp esi, NUM_SPRITES + jge sprites_rendered + + mov eax, [sortedSprites + esi*4] + mov sprIdx, eax + imul eax, SIZEOF SpriteObject + + ; Sample animation by elapsed time. Pausing freezes the clock. + push eax + mov ecx, [casinoSprites + eax].animSpeed + imul ecx, 40 + mov eax, animationClock3D + xor edx, edx + div ecx + pop ebx + xor edx, edx + div [casinoSprites + ebx].frameCount + mov [casinoSprites + ebx].curFrame, edx + mov eax, ebx + + cmp [casinoSprites + eax].distSq, 16 + jle next_spr + + mov edx, [casinoSprites + eax].posX + sub edx, playerX + mov relX, edx + + mov edx, [casinoSprites + eax].posY + sub edx, playerY + mov relY, edx + + mov eax, playerPlaneX + imul playerDirY + shrd eax, edx, 16 + mov ebx, eax + + mov eax, playerDirX + imul playerPlaneY + shrd eax, edx, 16 + sub ebx, eax + test ebx, ebx + jz next_spr + + ; 2^32 needs the full EDX:EAX dividend, not a truncated multiply. + xor eax, eax + mov edx, 1 + idiv ebx + mov invDet, eax + + mov eax, playerDirY + imul relX + shrd eax, edx, 16 + mov ebx, eax + + mov eax, playerDirX + imul relY + shrd eax, edx, 16 + sub ebx, eax + + mov eax, ebx + imul invDet + shrd eax, edx, 16 + mov transX, eax + + mov eax, playerPlaneY + neg eax + imul relX + shrd eax, edx, 16 + mov ebx, eax + + mov eax, playerPlaneX + imul relY + shrd eax, edx, 16 + add ebx, eax + + mov eax, ebx + imul invDet + shrd eax, edx, 16 + mov transY, eax + + cmp transY, 4096 + jle next_spr + + mov eax, transX + imul eax, HALF_W + cdq + idiv transY + add eax, HALF_W + mov sprScreenX, eax + + mov eax, SCREEN_H + imul eax, FP_1 + cdq + idiv transY + test eax, eax + jns @F + neg eax +@@: + cmp eax, SCREEN_H * 2 + jle @F + mov eax, SCREEN_H * 2 +@@: + mov sprH, eax + mov sprW, eax + + mov eax, HALF_H + mov ebx, sprH + shr ebx, 1 + sub eax, ebx + mov drawStartY, eax + add eax, sprH + mov drawEndY, eax + + mov eax, sprScreenX + mov ebx, sprW + shr ebx, 1 + sub eax, ebx + mov drawStartX, eax + add eax, sprW + mov drawEndX, eax + + cmp drawStartY, 0 + jge @F + mov drawStartY, 0 +@@: + cmp drawEndY, SCREEN_H + jl @F + mov drawEndY, SCREEN_H - 1 +@@: + + mov eax, transY + shr eax, 13 + mov edx, 256 + sub edx, eax + cmp edx, 110 + jge @F + mov edx, 110 +@@: + mov shade, edx + + mov eax, sprIdx + imul eax, SIZEOF SpriteObject + mov edx, [casinoSprites + eax].baseTexId + add edx, [casinoSprites + eax].curFrame + mov texSlot, edx + + mov eax, drawStartX + mov stripe, eax + +spr_stripe_loop: + mov eax, stripe + cmp eax, drawEndX + jge next_spr + + cmp eax, 0 + jl next_spr_stripe + cmp eax, SCREEN_W + jge next_spr + + mov edx, transY + cmp edx, [zBuffer + eax*4] + jge next_spr_stripe + + mov eax, stripe + sub eax, sprScreenX + mov ebx, sprW + shr ebx, 1 + add eax, ebx + shl eax, 7 + cdq + idiv sprW + cmp eax, 0 + jl next_spr_stripe + cmp eax, 128 + jge next_spr_stripe + mov texX, eax + + mov edi, drawStartY +spr_pix_y_loop: + cmp edi, drawEndY + jg next_spr_stripe + + mov eax, edi + sub eax, HALF_H + mov ebx, sprH + shr ebx, 1 + add eax, ebx + shl eax, 7 + cdq + idiv sprH + cmp eax, 0 + jl next_spr_y + cmp eax, 128 + jge next_spr_y + mov texY, eax + + shl eax, 7 + add eax, texX + mov edx, texSlot + shl edx, 14 + add eax, edx + mov eax, [texturesBuffer + eax*4] + + ; Chromakey magenta filter + cmp eax, CHROMA_KEY + je next_spr_y +do_draw_sprite_pix: + mov ebx, shade + movzx edx, al + imul edx, ebx + shr edx, 8 + push edx + + movzx edx, ah + imul edx, ebx + shr edx, 8 + shl edx, 8 + + shr eax, 16 + movzx eax, al + imul eax, ebx + shr eax, 8 + shl eax, 16 + or eax, edx + pop edx + or eax, edx + + mov ecx, edi + imul ecx, SCREEN_W + add ecx, stripe + mov [screenBuffer + ecx*4], eax + +next_spr_y: + inc edi + jmp spr_pix_y_loop + +next_spr_stripe: + inc stripe + jmp spr_stripe_loop + +next_spr: + inc esi + jmp draw_spr_loop + +sprites_rendered: + pop edi + pop esi + pop ebx + ret +RenderSprites ENDP + +; --- HUD & Minimap Radar --- +RenderHUD PROC uses ebx esi edi + invoke DrawBox, 0, 0, 320, 16, 0014191Dh + invoke DrawString8x8, 8, 4, OFFSET textBank3D, 00D8BC6Ah + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 64, 4, OFFSET hudNumBuffer, 00FFFFFFh + invoke DrawString8x8, 176, 4, OFFSET textWindowKeys3D, 00A8B6BBh + invoke DrawBox, 0, 226, 320, 14, 0014191Dh + invoke DrawString8x8, 12, 230, OFFSET textWalkKeys3D, 00A8B6BBh + invoke DrawBox, 159, 118, 2, 5, 00E7DFC8h + invoke DrawBox, 157, 120, 6, 1, 00E7DFC8h + cmp interactPromptPtr, 0 + je @F + invoke DrawBoxBorder, 4, 199, 312, 18, 0014191Dh, 00D8BC6Ah, 1 + invoke DrawString8x8, 10, 204, interactPromptPtr, 00F5E2B0h +@@: + cmp flashTimer, 0 + je hud_finished + dec flashTimer + invoke DrawBox, 4, 22, 312, 16, 0014191Dh + invoke DrawString8x8, 10, 26, OFFSET flashMessage, 00FFFFFFh +hud_finished: + ret +RenderHUD ENDP + +RenderMinimap PROC uses ebx esi edi + local radarX:DWORD + local radarY:DWORD + local radarSize:DWORD + + mov radarX, 320 - 48 + mov radarY, 20 + mov radarSize, 44 + + invoke DrawBoxBorder, radarX, radarY, radarSize, radarSize, 00101510h, 0000D7FFh, 1 + + ; Draw Sprites on radar + xor esi, esi +radar_spr_loop: + cmp esi, NUM_SPRITES + jge draw_player_radar + mov eax, esi + imul eax, SIZEOF SpriteObject + mov eax, [casinoSprites + eax].posX + sar eax, 16 + imul eax, radarSize + shr eax, 5 + add eax, radarX + mov ebx, eax + + mov eax, esi + imul eax, SIZEOF SpriteObject + mov eax, [casinoSprites + eax].posY + sar eax, 16 + imul eax, radarSize + shr eax, 5 + add eax, radarY + + invoke DrawPixel, ebx, eax, 00FFAA00h + inc esi + jmp radar_spr_loop + +draw_player_radar: + mov eax, playerX + sar eax, 16 + imul eax, radarSize + shr eax, 5 + add eax, radarX + mov ebx, eax + + mov eax, playerY + sar eax, 16 + imul eax, radarSize + shr eax, 5 + add eax, radarY + + invoke DrawCircle, ebx, eax, 2, 000000FFh + ret +RenderMinimap ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: SLOTS 777 +; ============================================================================== +HandleSlotsInput PROC + cmp slotSpinState, 1 + je slots_input_done + + invoke Pressed3D, 20h ; SPACE -> Spin + test ah, 80h + jz check_bet_adjust + mov eax, bankroll + cmp eax, slotBet + jl @F + sub eax, slotBet + mov bankroll, eax + mov slotSpinState, 1 + mov slotSpinTimer, 0 + mov slotWinAmount, 0 + invoke PlaySoundA, OFFSET soundClick, 0, 1 + jmp slots_input_done +@@: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + +check_bet_adjust: + invoke Pressed3D, 26h ; UP / W + test ah, 80h + jnz inc_bet + invoke Pressed3D, 57h + test ah, 80h + jz check_bet_down +inc_bet: + cmp slotBet, 500 + jge slots_input_done + cmp slotBet, 100 + jge @F + cmp slotBet, 50 + jge set_100 + mov slotBet, 50 + jmp slots_input_done +set_100: + mov slotBet, 100 + jmp slots_input_done +@@: + mov slotBet, 500 + jmp slots_input_done + +check_bet_down: + invoke Pressed3D, 28h ; DOWN / S + test ah, 80h + jnz dec_bet + invoke Pressed3D, 53h + test ah, 80h + jz slots_input_done +dec_bet: + cmp slotBet, 50 + jle set_10 + cmp slotBet, 100 + jle set_50 + mov slotBet, 100 + jmp slots_input_done +set_50: + mov slotBet, 50 + jmp slots_input_done +set_10: + mov slotBet, 10 + +slots_input_done: + ret +HandleSlotsInput ENDP + +RenderSlotsGame PROC uses ebx esi edi + ; Cabinet Background (Dark Cherry Wood & Gold) + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 00150A10h + invoke DrawBoxBorder, 10, 10, 300, 220, 00251015h, 0000D7FFh, 3 + + ; Illuminated Top Marquee + invoke DrawBoxBorder, 25, 20, 270, 32, 000A0505h, 0000FFFFh, 2 + invoke DrawString8x8, 55, 32, OFFSET textSlots3D, 0000D7FFh + + ; Spinning Animation Logic + cmp slotSpinState, 1 + jne draw_reels + inc slotSpinTimer + + cmp slotSpinTimer, 22 + jge @F + invoke RandomRange3D, 7 + mov slotReel1, eax +@@: + cmp slotSpinTimer, 36 + jge @F + invoke RandomRange3D, 7 + mov slotReel2, eax +@@: + cmp slotSpinTimer, 50 + jge @F + invoke RandomRange3D, 7 + mov slotReel3, eax +@@: + cmp slotSpinTimer, 50 + jl draw_reels + + ; Spin finished! Check outcome! + mov slotSpinState, 0 + mov eax, slotReel1 + cmp eax, slotReel2 + jne check_pairs + cmp eax, slotReel3 + jne check_pairs + + ; 3 Matching! + cmp eax, 0 ; 777! + jne @F + mov eax, slotBet + imul eax, 25 + mov slotWinAmount, eax + add bankroll, eax + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + jmp draw_reels +@@: + cmp eax, 6 ; CROWN! + jne @F + mov eax, slotBet + imul eax, 50 + mov slotWinAmount, eax + add bankroll, eax + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + jmp draw_reels +@@: + mov eax, slotBet + imul eax, 10 + mov slotWinAmount, eax + add bankroll, eax + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp draw_reels + +check_pairs: + mov eax, slotReel1 + cmp eax, slotReel2 + je pair_win + mov eax, slotReel2 + cmp eax, slotReel3 + je pair_win + mov eax, slotReel1 + cmp eax, slotReel3 + je pair_win + jmp draw_reels +pair_win: + mov eax, slotBet + imul eax, 2 + mov slotWinAmount, eax + add bankroll, eax + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + +draw_reels: + ; Reels Window + invoke DrawBoxBorder, 30, 62, 260, 95, 000F0F12h, 0000A5FFh, 2 + + ; Reel 1 (45..105) + invoke DrawBoxBorder, 45, 68, 65, 82, 00F0F0F5h, 00505050h, 2 + mov eax, slotReel1 + call DrawReelSymbolAt1 + + ; Reel 2 (128..188) + invoke DrawBoxBorder, 128, 68, 65, 82, 00F0F0F5h, 00505050h, 2 + mov eax, slotReel2 + call DrawReelSymbolAt2 + + ; Reel 3 (210..270) + invoke DrawBoxBorder, 210, 68, 65, 82, 00F0F0F5h, 00505050h, 2 + mov eax, slotReel3 + call DrawReelSymbolAt3 + + ; Bottom Control Panel + invoke DrawBoxBorder, 20, 165, 280, 58, 00151515h, 0000D7FFh, 1 + + invoke DrawString8x8, 28, 172, OFFSET textBank3D, 0000D7FFh + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 110, 172, OFFSET hudNumBuffer, 0000FFFFh + + invoke DrawString8x8, 175, 172, OFFSET textBet3D, 0000D7FFh + invoke FormatNumber, slotBet, OFFSET hudNumBuffer + invoke DrawString8x8, 240, 172, OFFSET hudNumBuffer, 0050FF50h + + cmp slotWinAmount, 0 + jle draw_slot_ctrls + invoke DrawString8x8, 28, 187, OFFSET strWin, 0000FFFFh + invoke FormatNumber, slotWinAmount, OFFSET hudNumBuffer + invoke DrawString8x8, 110, 187, OFFSET hudNumBuffer, 0000FFFFh + +draw_slot_ctrls: + invoke DrawString8x8, 28, 204, OFFSET textSlotsKeys3D, 00A0A0A0h + ret +RenderSlotsGame ENDP + +DrawReelSymbolAt1 PROC + cmp eax, 0 + jne @F + invoke DrawString8x8, 52, 105, OFFSET sym7, 000000FFh + ret +@@: + cmp eax, 1 + jne @F + invoke DrawString8x8, 52, 105, OFFSET symBar, 00FFAA00h + ret +@@: + cmp eax, 2 + jne @F + invoke DrawString8x8, 52, 105, OFFSET symBell, 0000D7FFh + ret +@@: + cmp eax, 3 + jne @F + invoke DrawString8x8, 48, 105, OFFSET symCherry, 000000D0h + ret +@@: + cmp eax, 4 + jne @F + invoke DrawString8x8, 48, 105, OFFSET symClover, 0000A000h + ret +@@: + cmp eax, 5 + jne @F + invoke DrawString8x8, 52, 105, OFFSET symGem, 00FFFF00h + ret +@@: + invoke DrawString8x8, 52, 105, OFFSET symCrown, 0000D7FFh + ret +DrawReelSymbolAt1 ENDP + +DrawReelSymbolAt2 PROC + cmp eax, 0 + jne @F + invoke DrawString8x8, 135, 105, OFFSET sym7, 000000FFh + ret +@@: + cmp eax, 1 + jne @F + invoke DrawString8x8, 135, 105, OFFSET symBar, 00FFAA00h + ret +@@: + cmp eax, 2 + jne @F + invoke DrawString8x8, 135, 105, OFFSET symBell, 0000D7FFh + ret +@@: + cmp eax, 3 + jne @F + invoke DrawString8x8, 131, 105, OFFSET symCherry, 000000D0h + ret +@@: + cmp eax, 4 + jne @F + invoke DrawString8x8, 131, 105, OFFSET symClover, 0000A000h + ret +@@: + cmp eax, 5 + jne @F + invoke DrawString8x8, 135, 105, OFFSET symGem, 00FFFF00h + ret +@@: + invoke DrawString8x8, 135, 105, OFFSET symCrown, 0000D7FFh + ret +DrawReelSymbolAt2 ENDP + +DrawReelSymbolAt3 PROC + cmp eax, 0 + jne @F + invoke DrawString8x8, 218, 105, OFFSET sym7, 000000FFh + ret +@@: + cmp eax, 1 + jne @F + invoke DrawString8x8, 218, 105, OFFSET symBar, 00FFAA00h + ret +@@: + cmp eax, 2 + jne @F + invoke DrawString8x8, 218, 105, OFFSET symBell, 0000D7FFh + ret +@@: + cmp eax, 3 + jne @F + invoke DrawString8x8, 214, 105, OFFSET symCherry, 000000D0h + ret +@@: + cmp eax, 4 + jne @F + invoke DrawString8x8, 214, 105, OFFSET symClover, 0000A000h + ret +@@: + cmp eax, 5 + jne @F + invoke DrawString8x8, 218, 105, OFFSET symGem, 00FFFF00h + ret +@@: + invoke DrawString8x8, 218, 105, OFFSET symCrown, 0000D7FFh + ret +DrawReelSymbolAt3 ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: BLACKJACK (21) +; ============================================================================== +HandleBlackjackInput PROC uses ebx + cmp bjState, 0 ; Need Deal + jne check_bj_player_turn + invoke Pressed3D, 20h ; SPACE -> Deal + test ah, 80h + jz check_bj_bet_change + mov eax, bankroll + cmp eax, bjBet + jl bj_need_cash + sub eax, bjBet + mov bankroll, eax + + ; Deal 2 cards to player, 2 cards to dealer + mov bjPlayerCardCount, 0 + mov bjDealerCardCount, 0 + mov bjDealerHideHole, 1 + + ; Player Card 1 + invoke RandomRange3D, 13 + inc eax + mov ebx, bjPlayerCardCount + mov [bjPlayerCards + ebx*4], eax + inc bjPlayerCardCount + + ; Dealer Card 1 + invoke RandomRange3D, 13 + inc eax + mov ebx, bjDealerCardCount + mov [bjDealerCards + ebx*4], eax + inc bjDealerCardCount + + ; Player Card 2 + invoke RandomRange3D, 13 + inc eax + mov ebx, bjPlayerCardCount + mov [bjPlayerCards + ebx*4], eax + inc bjPlayerCardCount + + ; Dealer Card 2 (Hole card) + invoke RandomRange3D, 13 + inc eax + mov ebx, bjDealerCardCount + mov [bjDealerCards + ebx*4], eax + inc bjDealerCardCount + + invoke PlaySoundA, OFFSET soundCards, 0, 1 + + ; Calc Player Score + call CalcPlayerBJScore + cmp bjPlayerScore, 21 + jne set_bj_turn + ; Instant Blackjack! + mov bjDealerHideHole, 0 + mov eax, bjBet + imul eax, 5 + shr eax, 1 + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET bjOutcomeMsg + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + mov bjState, 2 + ret +set_bj_turn: + mov bjState, 1 + mov BYTE PTR [bjOutcomeMsg], 0 + ret + +bj_need_cash: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + ret + +check_bj_player_turn: + cmp bjState, 1 + jne check_bj_round_over + + invoke Pressed3D, 48h ; 'H' -> Hit + test ah, 80h + jz check_bj_stand + invoke RandomRange3D, 13 + inc eax + mov ebx, bjPlayerCardCount + cmp ebx, 8 + jge @F + mov [bjPlayerCards + ebx*4], eax + inc bjPlayerCardCount +@@: + invoke PlaySoundA, OFFSET soundCards, 0, 1 + call CalcPlayerBJScore + cmp bjPlayerScore, 21 + jle bj_input_done + ; Bust! + invoke CopyString3D, OFFSET strPlayerBust, OFFSET bjOutcomeMsg + mov bjDealerHideHole, 0 + mov bjState, 2 + ret + +check_bj_stand: + invoke Pressed3D, 53h ; 'S' -> Stand + test ah, 80h + jz bj_input_done + + ; Dealer Turn + mov bjDealerHideHole, 0 +dealer_loop: + call CalcDealerBJScore + cmp bjDealerScore, 17 + jge dealer_finished + invoke RandomRange3D, 13 + inc eax + mov ebx, bjDealerCardCount + cmp ebx, 8 + jge dealer_finished + mov [bjDealerCards + ebx*4], eax + inc bjDealerCardCount + jmp dealer_loop + +dealer_finished: + cmp bjDealerScore, 21 + jle compare_scores + ; Dealer Bust! + mov eax, bjBet + shl eax, 1 + add bankroll, eax + invoke CopyString3D, OFFSET strDealerBust, OFFSET bjOutcomeMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + mov bjState, 2 + ret + +compare_scores: + mov eax, bjPlayerScore + cmp eax, bjDealerScore + jle check_dealer_won + ; Player Won! + mov eax, bjBet + shl eax, 1 + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET bjOutcomeMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + mov bjState, 2 + ret +check_dealer_won: + cmp eax, bjDealerScore + jl dealer_wins + ; Push (Tie) + mov eax, bjBet + add bankroll, eax + invoke CopyString3D, OFFSET strPush, OFFSET bjOutcomeMsg + mov bjState, 2 + ret +dealer_wins: + invoke CopyString3D, OFFSET strLose, OFFSET bjOutcomeMsg + mov bjState, 2 + ret + +check_bj_round_over: + invoke Pressed3D, 20h ; SPACE -> Next Hand + test ah, 80h + jz bj_input_done + mov bjState, 0 + ret + +check_bj_bet_change: + invoke Pressed3D, 26h ; UP + test ah, 80h + jz @F + cmp bjBet, 500 + jge bj_input_done + add bjBet, 50 + ret +@@: + invoke Pressed3D, 28h ; DOWN + test ah, 80h + jz bj_input_done + cmp bjBet, 50 + jle bj_input_done + sub bjBet, 50 + +bj_input_done: + ret +HandleBlackjackInput ENDP + +CalcPlayerBJScore PROC uses ebx esi + xor eax, eax + xor ebx, ebx + xor esi, esi +calc_p_loop: + cmp esi, bjPlayerCardCount + jge calc_p_done + mov edx, [bjPlayerCards + esi*4] + cmp edx, 10 + jle @F + mov edx, 10 +@@: + cmp edx, 1 + jne add_p_val + inc ebx ; count Aces + add eax, 11 + jmp next_p_card +add_p_val: + add eax, edx +next_p_card: + inc esi + jmp calc_p_loop +calc_p_done: + ; Soft Ace reduction +reduce_p_ace: + cmp eax, 21 + jle store_p_score + test ebx, ebx + jz store_p_score + sub eax, 10 + dec ebx + jmp reduce_p_ace +store_p_score: + mov bjPlayerScore, eax + ret +CalcPlayerBJScore ENDP + +CalcDealerBJScore PROC uses ebx esi + xor eax, eax + xor ebx, ebx + xor esi, esi +calc_d_loop: + cmp esi, bjDealerCardCount + jge calc_d_done + mov edx, [bjDealerCards + esi*4] + cmp edx, 10 + jle @F + mov edx, 10 +@@: + cmp edx, 1 + jne add_d_val + inc ebx + add eax, 11 + jmp next_d_card +add_d_val: + add eax, edx +next_d_card: + inc esi + jmp calc_d_loop +calc_d_done: +reduce_d_ace: + cmp eax, 21 + jle store_d_score + test ebx, ebx + jz store_d_score + sub eax, 10 + dec ebx + jmp reduce_d_ace +store_d_score: + mov bjDealerScore, eax + ret +CalcDealerBJScore ENDP + +RenderBlackjackGame PROC uses ebx esi edi + ; Emerald Felt Table Background + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 000A3015h + invoke DrawBoxBorder, 10, 10, 300, 220, 000D4018h, 0000D7FFh, 3 + + ; Dealer Area Top + invoke DrawString8x8, 25, 20, OFFSET textBJ3D, 0000D7FFh + invoke DrawString8x8, 25, 35, OFFSET textDealer3D, 00FFFFFFh + invoke FormatNumber, bjDealerScore, OFFSET hudNumBuffer + invoke DrawString8x8, 120, 35, OFFSET hudNumBuffer, 0000FFFFh + + ; Dealer Cards + xor esi, esi +draw_dealer_cards: + cmp esi, bjDealerCardCount + jge draw_player_bj_area + mov eax, esi + imul eax, 45 + add eax, 25 + mov ebx, eax + + cmp esi, 1 + jne draw_dealer_face + cmp bjDealerHideHole, 1 + jne draw_dealer_face + ; Face Down Card + mov eax, selectedBack3D + mov eax, cardBackColors3D[eax*4] + invoke DrawBoxBorder, ebx, 48, 38, 52, eax, 00FFFFFFh, 2 + jmp next_dealer_card_draw + +draw_dealer_face: + invoke DrawBoxBorder, ebx, 48, 38, 52, 00F0F0F5h, 00000000h, 2 + mov eax, [bjDealerCards + esi*4] + dec eax + imul eax, 3 + lea edx, [cardRankStr + eax] + mov eax, ebx + add eax, 8 + invoke DrawString8x8, eax, 68, edx, 00000000h + +next_dealer_card_draw: + inc esi + jmp draw_dealer_cards + +draw_player_bj_area: + ; Player Area Bottom + invoke DrawString8x8, 25, 110, OFFSET textPlayer3D, 00FFFFFFh + invoke FormatNumber, bjPlayerScore, OFFSET hudNumBuffer + invoke DrawString8x8, 120, 110, OFFSET hudNumBuffer, 0050FF50h + + ; Player Cards + xor esi, esi +draw_player_cards: + cmp esi, bjPlayerCardCount + jge draw_bj_footer + mov eax, esi + imul eax, 45 + add eax, 25 + mov ebx, eax + + invoke DrawBoxBorder, ebx, 124, 38, 52, 00F0F0F5h, 00000000h, 2 + mov eax, [bjPlayerCards + esi*4] + dec eax + imul eax, 3 + lea edx, [cardRankStr + eax] + mov eax, ebx + add eax, 8 + invoke DrawString8x8, eax, 144, edx, 00000000h + + inc esi + jmp draw_player_cards + +draw_bj_footer: + ; Footer Status & Controls + invoke DrawBoxBorder, 20, 182, 280, 42, 00102010h, 0000D7FFh, 1 + cmp BYTE PTR [bjOutcomeMsg], 0 + je draw_bj_controls + invoke DrawString8x8, 28, 188, OFFSET bjOutcomeMsg, 0000FFFFh + invoke DrawString8x8, 28, 204, OFFSET textNext3D, 00A0A0A0h + ret + +draw_bj_controls: + invoke DrawString8x8, 28, 188, OFFSET textBJKeys3D, 00FFFFFFh + invoke DrawString8x8, 28, 204, OFFSET textDeal3D, 00A0A0A0h + ret +RenderBlackjackGame ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: ROULETTE +; ============================================================================== +HandleRouletteInput PROC uses ebx + cmp roulState, 1 + je roul_input_done + + invoke Pressed3D, 31h ; '1' -> RED + test ah, 80h + jz @F + mov roulBetType, 1 +@@: + invoke Pressed3D, 32h ; '2' -> BLACK + test ah, 80h + jz @F + mov roulBetType, 2 +@@: + invoke Pressed3D, 33h ; '3' -> ZERO (0) + test ah, 80h + jz @F + mov roulBetType, 3 +@@: + invoke Pressed3D, 34h ; '4' -> EVEN + test ah, 80h + jz @F + mov roulBetType, 4 +@@: + invoke Pressed3D, 35h ; '5' -> ODD + test ah, 80h + jz check_roul_spin + mov roulBetType, 5 + +check_roul_spin: + invoke Pressed3D, 20h ; SPACE -> Spin + test ah, 80h + jz roul_input_done + mov eax, bankroll + cmp eax, roulBetAmount + jl roul_no_cash + sub eax, roulBetAmount + mov bankroll, eax + mov roulState, 1 + mov roulSpinTimer, 50 + mov roulPayout, 0 + invoke PlaySoundA, OFFSET soundRoulette, 0, 1 + ret + +roul_no_cash: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + +roul_input_done: + ret +HandleRouletteInput ENDP + +RenderRouletteGame PROC uses ebx esi edi + ; Table felt background + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 00151525h + invoke DrawBoxBorder, 10, 10, 300, 220, 00201525h, 0000D7FFh, 3 + + ; 2.5D Rotating Wheel on Left + invoke DrawCircle, 85, 110, 65, 00102550h + invoke DrawCircle, 85, 110, 60, 0000D7FFh + invoke DrawCircle, 85, 110, 52, 00101010h + invoke DrawCircle, 85, 110, 22, 0000D7FFh ; Center brass turret + + ; Spinning Wheel / Ball Logic + cmp roulState, 1 + jne draw_roul_ball + dec roulSpinTimer + add roulWheelAngle, 8 + sub roulBallAngle, 14 + cmp roulSpinTimer, 0 + jg draw_roul_ball + + ; Wheel stopped! Determine result! + mov roulState, 2 + invoke RandomRange3D, 37 + mov roulWinningNum, eax + + ; Check bet + cmp roulBetType, 1 ; RED + jne check_ro_black + call IsNumberRed + test eax, eax + jz ro_lost + mov eax, roulBetAmount + shl eax, 1 + mov roulPayout, eax + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET roulOutcomeMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp draw_roul_ball + +check_ro_black: + cmp roulBetType, 2 ; BLACK + jne check_ro_zero + cmp roulWinningNum, 0 + je ro_lost + call IsNumberRed + test eax, eax + jnz ro_lost + mov eax, roulBetAmount + shl eax, 1 + mov roulPayout, eax + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET roulOutcomeMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp draw_roul_ball + +check_ro_zero: + cmp roulBetType, 3 ; ZERO + jne check_ro_even + cmp roulWinningNum, 0 + jne ro_lost + mov eax, roulBetAmount + imul eax, 36 + mov roulPayout, eax + add bankroll, eax + invoke CopyString3D, OFFSET strJackpot, OFFSET roulOutcomeMsg + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + jmp draw_roul_ball + +check_ro_even: + cmp roulBetType, 4 ; EVEN + jne check_ro_odd + mov eax, roulWinningNum + test eax, eax + jz ro_lost + test al, 1 + jnz ro_lost + mov eax, roulBetAmount + shl eax, 1 + mov roulPayout, eax + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET roulOutcomeMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp draw_roul_ball + +check_ro_odd: + mov eax, roulWinningNum + test eax, eax + jz ro_lost + test al, 1 + jz ro_lost + mov eax, roulBetAmount + shl eax, 1 + mov roulPayout, eax + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET roulOutcomeMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp draw_roul_ball + +ro_lost: + invoke CopyString3D, OFFSET strLose, OFFSET roulOutcomeMsg + +draw_roul_ball: + ; Draw White Ball on Rim + mov eax, roulBallAngle + and eax, 511 + mov ebx, [tableCos + eax*4] + imul ebx, 42 + sar ebx, 16 + add ebx, 85 + + mov eax, roulBallAngle + and eax, 511 + mov edx, [tableSin + eax*4] + imul edx, 42 + sar edx, 16 + add edx, 110 + invoke DrawCircle, ebx, edx, 3, 00FFFFFFh + + ; Right Betting Board + invoke DrawBoxBorder, 175, 25, 125, 28, 001010C0h, 00FFFFFFh, 2 ; [1] RED + invoke DrawString8x8, 190, 35, OFFSET textRed3D, 00FFFFFFh + + invoke DrawBoxBorder, 175, 60, 125, 28, 00151515h, 00FFFFFFh, 2 ; [2] BLACK + invoke DrawString8x8, 190, 70, OFFSET textBlack3D, 00FFFFFFh + + invoke DrawBoxBorder, 175, 95, 125, 28, 00106010h, 00FFFFFFh, 2 ; [3] ZERO + invoke DrawString8x8, 190, 105, OFFSET textZero3D, 00FFFFFFh + + invoke DrawBoxBorder, 175, 130, 60, 26, 00302020h, 00FFFFFFh, 1 ; [4] EVEN + invoke DrawString8x8, 185, 139, OFFSET textEven3D, 00FFFFFFh + + invoke DrawBoxBorder, 240, 130, 60, 26, 00302020h, 00FFFFFFh, 1 ; [5] ODD + invoke DrawString8x8, 250, 139, OFFSET textOdd3D, 00FFFFFFh + + ; Highlight Active Bet + cmp roulBetType, 1 + jne @F + invoke DrawBoxBorder, 173, 23, 129, 32, 0, 0000FFFFh, 2 +@@: + cmp roulBetType, 2 + jne @F + invoke DrawBoxBorder, 173, 58, 129, 32, 0, 0000FFFFh, 2 +@@: + cmp roulBetType, 3 + jne @F + invoke DrawBoxBorder, 173, 93, 129, 32, 0, 0000FFFFh, 2 +@@: + cmp roulBetType, 4 + jne @F + invoke DrawBoxBorder, 173, 128, 64, 30, 0, 0000FFFFh, 2 +@@: + cmp roulBetType, 5 + jne draw_ro_footer + invoke DrawBoxBorder, 238, 128, 64, 30, 0, 0000FFFFh, 2 + +draw_ro_footer: + invoke DrawBoxBorder, 20, 180, 280, 42, 00101015h, 0000D7FFh, 1 + + cmp roulState, 2 + jne @F + invoke DrawString8x8, 28, 186, OFFSET textResult3D, 0000D7FFh + invoke FormatNumber, roulWinningNum, OFFSET hudNumBuffer + invoke DrawString8x8, 85, 186, OFFSET hudNumBuffer, 0000FFFFh + invoke DrawString8x8, 130, 186, OFFSET roulOutcomeMsg, 0050FF50h +@@: + invoke DrawString8x8, 28, 202, OFFSET textSpin3D, 00A0A0A0h + ret +RenderRouletteGame ENDP + +IsNumberRed PROC + mov eax, roulWinningNum + cmp eax, 1 + je red_yes + cmp eax, 3 + je red_yes + cmp eax, 5 + je red_yes + cmp eax, 7 + je red_yes + cmp eax, 9 + je red_yes + cmp eax, 12 + je red_yes + cmp eax, 14 + je red_yes + cmp eax, 16 + je red_yes + cmp eax, 18 + je red_yes + cmp eax, 19 + je red_yes + cmp eax, 21 + je red_yes + cmp eax, 23 + je red_yes + cmp eax, 25 + je red_yes + cmp eax, 27 + je red_yes + cmp eax, 30 + je red_yes + cmp eax, 32 + je red_yes + cmp eax, 34 + je red_yes + cmp eax, 36 + je red_yes + xor eax, eax + ret +red_yes: + mov eax, 1 + ret +IsNumberRed ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: BAR & SHOP +; ============================================================================== +HandleShopInput PROC uses ebx esi + xor esi, esi +shop_choice: + inc esi + lea eax, [esi+30h] + invoke Pressed3D, eax + test eax, eax + jnz shop_chosen + cmp esi, 3 + jb shop_choice + ret +shop_chosen: + bt ownedBacks3D, esi + jc shop_equip + mov ebx, 1500 + cmp esi, 1 + jne @F + mov ebx, 1000 +@@: + cmp bankroll, ebx + jb shop_no_money + sub bankroll, ebx + bts ownedBacks3D, esi +shop_equip: + mov selectedBack3D, esi + invoke CopyString3D, OFFSET textBought3D, OFFSET shopMsg + call SaveProgress3D + ret +shop_no_money: + invoke CopyString3D, OFFSET textNoCash3D, OFFSET shopMsg + ret +HandleShopInput ENDP + +RenderShopGame PROC + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 00150A0Ah + invoke DrawBoxBorder, 10, 10, 300, 220, 00251515h, 0000D7FFh, 3 + invoke DrawString8x8, 25, 20, OFFSET textShop3D, 0000D7FFh + + invoke DrawBoxBorder, 20, 40, 280, 32, 001A1010h, 00FFFFFFh, 1 + invoke DrawString8x8, 28, 46, OFFSET textItem1_3D, 0000FFFFh + invoke DrawString8x8, 28, 58, OFFSET textShopHint3D, 00A0A0A0h + + invoke DrawBoxBorder, 20, 80, 280, 32, 001A1010h, 00FFFFFFh, 1 + invoke DrawString8x8, 28, 86, OFFSET textItem2_3D, 0000FFFFh + invoke DrawString8x8, 28, 98, OFFSET textShopHint3D, 00A0A0A0h + + invoke DrawBoxBorder, 20, 120, 280, 32, 001A1010h, 00FFFFFFh, 1 + invoke DrawString8x8, 28, 126, OFFSET textItem3_3D, 0000FFFFh + invoke DrawString8x8, 28, 138, OFFSET textShopHint3D, 00A0A0A0h + + invoke DrawBoxBorder, 20, 165, 280, 55, 00100A0Ah, 0000D7FFh, 1 + invoke DrawString8x8, 28, 172, OFFSET textBank3D, 0000D7FFh + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 110, 172, OFFSET hudNumBuffer, 0000FFFFh + + cmp BYTE PTR [shopMsg], 0 + je @F + invoke DrawString8x8, 28, 188, OFFSET shopMsg, 0050FF50h +@@: + invoke DrawString8x8, 28, 204, OFFSET textBack3D, 00A0A0A0h + ret +RenderShopGame ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: ATM TERMINAL +; ============================================================================== +HandleATMInput PROC + ret +HandleATMInput ENDP + +RenderATMGame PROC + invoke DrawBox, 0, 0, 320, 240, 00172120h + invoke DrawString8x8, 24, 30, OFFSET textATM3D, 00D8BC6Ah + invoke DrawString8x8, 24, 70, OFFSET textBank3D, 00FFFFFFh + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 96, 70, OFFSET hudNumBuffer, 0089DAB2h + invoke DrawString8x8, 24, 115, OFFSET textATMNote3D, 00B7C8C1h + invoke DrawString8x8, 24, 140, OFFSET textATMNote2_3D, 00B7C8C1h + invoke DrawString8x8, 24, 208, OFFSET textBack3D, 00D8BC6Ah + ret +RenderATMGame ENDP + +; --- Player Input & Movement Physics --- +HandlePlayerInput PROC uses ebx esi edi + local speed:DWORD + local nextX:DWORD + local nextY:DWORD + mov eax, deltaTime3D + imul eax, 200 + mov speed, eax + cmp keys3D[10h], 0 + je @F + shl speed, 1 +@@: + mov eax, deltaTime3D + shr eax, 2 + inc eax + cmp keys3D[41h], 0 + jne input_turn_left + cmp keys3D[25h], 0 + je input_right +input_turn_left: + sub playerAngle, eax +input_right: + cmp keys3D[44h], 0 + jne input_turn_right + cmp keys3D[27h], 0 + je input_forward +input_turn_right: + add playerAngle, eax +input_forward: + and playerAngle, 511 + call UpdateCamera3D + xor edi, edi + cmp keys3D[57h], 0 + jne input_go_forward + cmp keys3D[26h], 0 + je input_back +input_go_forward: + inc edi +input_back: + cmp keys3D[53h], 0 + jne input_go_back + cmp keys3D[28h], 0 + je input_move +input_go_back: + dec edi +input_move: + test edi, edi + jz input_action + imul edi, speed + mov eax, playerDirX + imul edi + shrd eax, edx, 16 + add eax, playerX + mov nextX, eax + mov eax, playerDirY + imul edi + shrd eax, edx, 16 + add eax, playerY + mov nextY, eax + invoke CanWalk3D, nextX, playerY + test eax, eax + jz @F + mov eax, nextX + mov playerX, eax +@@: + invoke CanWalk3D, playerX, nextY + test eax, eax + jz input_action + mov eax, nextY + mov playerY, eax +input_action: + invoke Pressed3D, 45h + test eax, eax + jz @F + call Trigger3DInteraction +@@: + ret +HandlePlayerInput ENDP + +CheckInteractions PROC uses ebx esi edi + local nearest:DWORD + mov nearest, 262144 + mov interactTargetId, 0 + mov interactPromptPtr, 0 + xor esi, esi +interaction_scan: + cmp esi, NUM_SPRITES + jge interaction_done + imul edi, esi, SIZEOF SpriteObject + cmp [casinoSprites+edi].interactId, 0 + je interaction_next + mov eax, [casinoSprites+edi].posX + sub eax, playerX + sar eax, 8 + mov ebx, eax + imul eax, eax + mov ecx, eax + mov eax, [casinoSprites+edi].posY + sub eax, playerY + sar eax, 8 + mov edx, eax + imul eax, eax + add ecx, eax + cmp ecx, nearest + jae interaction_next + ; Only target objects in front of the camera. + mov eax, playerDirX + sar eax, 8 + imul eax, ebx + mov ebx, playerDirY + sar ebx, 8 + imul ebx, edx + add eax, ebx + cmp eax, 18000 + jl interaction_next + mov nearest, ecx + mov eax, [casinoSprites+edi].interactId + mov interactTargetId, eax + mov eax, [casinoSprites+edi].promptPtr + mov interactPromptPtr, eax +interaction_next: + inc esi + jmp interaction_scan +interaction_done: + ret +CheckInteractions ENDP + +Trigger3DInteraction PROC + mov eax, interactTargetId + test eax, eax + jz @F + + cmp eax, 8 ; DANCER + jne check_target_slots + cmp bankroll, 100 + jl dancer_no_cash + sub bankroll, 100 + inc dancerLuckBuff + ; Tips are cosmetic and must not silently change game odds. + invoke CopyString3D, OFFSET textTips3D, OFFSET flashMessage + mov flashTimer, 100 + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + ret +dancer_no_cash: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + ret + +check_target_slots: + cmp eax, 3 ; SLOTS + jne check_target_bj + mov engineMode, MODE_SLOTS + invoke PlaySoundA, OFFSET soundClick, 0, 1 + ret + +check_target_bj: + cmp eax, 1 ; BLACKJACK + jne check_target_roulette + mov engineMode, MODE_BLACKJACK + mov bjState, 0 + ret + +check_target_roulette: + cmp eax, 4 ; ROULETTE + jne check_target_shop + mov engineMode, MODE_ROULETTE + mov roulState, 0 + ret + +check_target_shop: + cmp eax, 6 ; SHOP + jne check_target_atm + mov engineMode, MODE_SHOP + ret + +check_target_atm: + cmp eax, 7 ; ATM + jne target_unported + mov engineMode, MODE_ATM + ret +target_unported: + invoke CopyString3D, OFFSET textUnavailable3D, OFFSET flashMessage + mov flashTimer, 150 +@@: + ret +Trigger3DInteraction ENDP + +; --- Engine Initialization --- +Init3DEngine PROC + local screenCX:DWORD + local screenCY:DWORD + local posX:DWORD + local posY:DWORD + local bytesRead:DWORD + + push ebx + push esi + push edi + + call Create3DWindow + test eax, eax + jz init_failed + call LoadTextures3D + test eax, eax + jz init_failed + +init_sprites_table: + ; Sprite 0: VIP Dancer 1 (Stage Left) + mov casinoSprites[0*SIZEOF SpriteObject].posX, (13 * FP_1 + FP_HALF) + mov casinoSprites[0*SIZEOF SpriteObject].posY, (4 * FP_1) + mov casinoSprites[0*SIZEOF SpriteObject].baseTexId, 10 + mov casinoSprites[0*SIZEOF SpriteObject].frameCount, 12 + mov casinoSprites[0*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[0*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[0*SIZEOF SpriteObject].animSpeed, 5 + mov casinoSprites[0*SIZEOF SpriteObject].interactId, 8 + mov casinoSprites[0*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer + + ; Sprite 1: VIP Dancer 2 (Center Stage Star) + mov casinoSprites[1*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) + mov casinoSprites[1*SIZEOF SpriteObject].posY, (3 * FP_1 + FP_HALF) + mov casinoSprites[1*SIZEOF SpriteObject].baseTexId, 10 + mov casinoSprites[1*SIZEOF SpriteObject].frameCount, 12 + mov casinoSprites[1*SIZEOF SpriteObject].curFrame, 2 + mov casinoSprites[1*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[1*SIZEOF SpriteObject].animSpeed, 5 + mov casinoSprites[1*SIZEOF SpriteObject].interactId, 8 + mov casinoSprites[1*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer + + ; Sprite 2: VIP Dancer 3 (Stage Right) + mov casinoSprites[2*SIZEOF SpriteObject].posX, (19 * FP_1 + FP_HALF) + mov casinoSprites[2*SIZEOF SpriteObject].posY, (4 * FP_1) + mov casinoSprites[2*SIZEOF SpriteObject].baseTexId, 10 + mov casinoSprites[2*SIZEOF SpriteObject].frameCount, 12 + mov casinoSprites[2*SIZEOF SpriteObject].curFrame, 1 + mov casinoSprites[2*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[2*SIZEOF SpriteObject].animSpeed, 5 + mov casinoSprites[2*SIZEOF SpriteObject].interactId, 8 + mov casinoSprites[2*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer + + ; Sprite 3: Blackjack Table with Dealer (Front Center Left) + mov casinoSprites[3*SIZEOF SpriteObject].posX, (12 * FP_1 + FP_HALF) + mov casinoSprites[3*SIZEOF SpriteObject].posY, (10 * FP_1) + mov casinoSprites[3*SIZEOF SpriteObject].baseTexId, 30 + mov casinoSprites[3*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[3*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[3*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[3*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[3*SIZEOF SpriteObject].interactId, 1 + mov casinoSprites[3*SIZEOF SpriteObject].promptPtr, OFFSET promptBlackjack + + ; Sprite 4: Roulette Table (Front Center) + mov casinoSprites[4*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) + mov casinoSprites[4*SIZEOF SpriteObject].posY, (10 * FP_1) + mov casinoSprites[4*SIZEOF SpriteObject].baseTexId, 31 + mov casinoSprites[4*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[4*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[4*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[4*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[4*SIZEOF SpriteObject].interactId, 4 + mov casinoSprites[4*SIZEOF SpriteObject].promptPtr, OFFSET promptRoulette + + ; Sprite 5: Poker Table (Front Center Right) + mov casinoSprites[5*SIZEOF SpriteObject].posX, (21 * FP_1) + mov casinoSprites[5*SIZEOF SpriteObject].posY, (10 * FP_1) + mov casinoSprites[5*SIZEOF SpriteObject].baseTexId, 30 + mov casinoSprites[5*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[5*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[5*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[5*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[5*SIZEOF SpriteObject].interactId, 1 + mov casinoSprites[5*SIZEOF SpriteObject].promptPtr, OFFSET promptPoker + + ; Sprite 6: Slot Machine 1 (West Arcade) + mov casinoSprites[6*SIZEOF SpriteObject].posX, (6 * FP_1) + mov casinoSprites[6*SIZEOF SpriteObject].posY, (8 * FP_1) + mov casinoSprites[6*SIZEOF SpriteObject].baseTexId, 24 + mov casinoSprites[6*SIZEOF SpriteObject].frameCount, 3 + mov casinoSprites[6*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[6*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[6*SIZEOF SpriteObject].animSpeed, 8 + mov casinoSprites[6*SIZEOF SpriteObject].interactId, 3 + mov casinoSprites[6*SIZEOF SpriteObject].promptPtr, OFFSET promptSlot1 + + ; Sprite 7: Slot Machine 2 (CloverPit) + mov casinoSprites[7*SIZEOF SpriteObject].posX, (6 * FP_1) + mov casinoSprites[7*SIZEOF SpriteObject].posY, (11 * FP_1) + mov casinoSprites[7*SIZEOF SpriteObject].baseTexId, 24 + mov casinoSprites[7*SIZEOF SpriteObject].frameCount, 3 + mov casinoSprites[7*SIZEOF SpriteObject].curFrame, 1 + mov casinoSprites[7*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[7*SIZEOF SpriteObject].animSpeed, 8 + mov casinoSprites[7*SIZEOF SpriteObject].interactId, 3 + mov casinoSprites[7*SIZEOF SpriteObject].promptPtr, OFFSET promptSlot2 + + ; Sprite 8: Slot Machine 3 + mov casinoSprites[8*SIZEOF SpriteObject].posX, (6 * FP_1) + mov casinoSprites[8*SIZEOF SpriteObject].posY, (14 * FP_1) + mov casinoSprites[8*SIZEOF SpriteObject].baseTexId, 24 + mov casinoSprites[8*SIZEOF SpriteObject].frameCount, 3 + mov casinoSprites[8*SIZEOF SpriteObject].curFrame, 2 + mov casinoSprites[8*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[8*SIZEOF SpriteObject].animSpeed, 8 + mov casinoSprites[8*SIZEOF SpriteObject].interactId, 3 + mov casinoSprites[8*SIZEOF SpriteObject].promptPtr, OFFSET promptSlot1 + + ; Sprite 9: Bartender / Bar Counter (East Wing) + mov casinoSprites[9*SIZEOF SpriteObject].posX, (26 * FP_1) + mov casinoSprites[9*SIZEOF SpriteObject].posY, (12 * FP_1) + mov casinoSprites[9*SIZEOF SpriteObject].baseTexId, 32 + mov casinoSprites[9*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[9*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[9*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[9*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[9*SIZEOF SpriteObject].interactId, 6 + mov casinoSprites[9*SIZEOF SpriteObject].promptPtr, OFFSET promptShop + + ; Sprite 10: ATM Bank Terminal (East Wing) + mov casinoSprites[10*SIZEOF SpriteObject].posX, (26 * FP_1) + mov casinoSprites[10*SIZEOF SpriteObject].posY, (16 * FP_1) + mov casinoSprites[10*SIZEOF SpriteObject].baseTexId, 33 + mov casinoSprites[10*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[10*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[10*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[10*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[10*SIZEOF SpriteObject].interactId, 7 + mov casinoSprites[10*SIZEOF SpriteObject].promptPtr, OFFSET promptATM + + ; Sprite 11: Underground Table (South Wing) + mov casinoSprites[11*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) + mov casinoSprites[11*SIZEOF SpriteObject].posY, (24 * FP_1) + mov casinoSprites[11*SIZEOF SpriteObject].baseTexId, 34 + mov casinoSprites[11*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[11*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[11*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[11*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[11*SIZEOF SpriteObject].interactId, 5 + mov casinoSprites[11*SIZEOF SpriteObject].promptPtr, OFFSET promptBackroom + + ; Sprite 12: Secret Demon Portal (South Wing) + mov casinoSprites[12*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) + mov casinoSprites[12*SIZEOF SpriteObject].posY, (29 * FP_1) + mov casinoSprites[12*SIZEOF SpriteObject].baseTexId, 4 + mov casinoSprites[12*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[12*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[12*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[12*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[12*SIZEOF SpriteObject].interactId, 9 + mov casinoSprites[12*SIZEOF SpriteObject].promptPtr, OFFSET promptHell + + mov eax, 1 + jmp init_return +init_failed: + xor eax, eax +init_return: + pop edi + pop esi + pop ebx + ret +Init3DEngine ENDP + +; --- Main Loop of the 3D Casino Engine --- +StartCasino3D PROC uses ebx esi edi + call Init3DEngine + test eax, eax + jz engine_shutdown + invoke GetTickCount + mov rngSeed3D, eax + mov previousTick3D, eax +engine_loop: + invoke PeekMessageA, OFFSET msg3D, 0, 0, 0, PM_REMOVE + test eax, eax + jz dispatch_frame + cmp msg3D.message, WM_QUIT + je engine_shutdown + invoke TranslateMessage, OFFSET msg3D + invoke DispatchMessageA, OFFSET msg3D + jmp engine_loop + +dispatch_frame: + invoke GetTickCount + mov frameStart3D, eax + sub eax, previousTick3D + cmp eax, 50 + jbe @F + mov eax, 50 +@@: + mov deltaTime3D, eax + mov eax, frameStart3D + mov previousTick3D, eax + invoke GetForegroundWindow + cmp eax, h3DWnd + jne engine_idle + invoke IsIconic, h3DWnd + test eax, eax + jnz engine_idle + invoke Pressed3D, 7Ah + test eax, eax + jz @F + call ToggleFullscreen3D +@@: + invoke Pressed3D, 1Bh + test eax, eax + jz engine_tick + cmp engineMode, MODE_WALK + jne leave_table + xor paused3D, 1 + jmp engine_tick +leave_table: + ; An already paid round cannot be skipped or settled twice. + cmp slotSpinState, 1 + je engine_tick + cmp roulState, 1 + je engine_tick + mov engineMode, MODE_WALK +engine_tick: + cmp paused3D, 0 + jne draw_pause + mov eax, deltaTime3D + add animationClock3D, eax + cmp engineMode, MODE_WALK + jne check_slots_mode + call UpdateCamera3D + call CheckInteractions + call HandlePlayerInput + call UpdateCamera3D + call RenderCeilingAndFloor + call RenderWalls + call RenderSprites + call RenderHUD + call RenderMinimap + jmp present_frame +check_slots_mode: + cmp engineMode, MODE_SLOTS + jne check_bj_mode + call HandleSlotsInput + call RenderSlotsGame + jmp present_frame +check_bj_mode: + cmp engineMode, MODE_BLACKJACK + jne check_roul_mode + call HandleBlackjackInput + call RenderBlackjackGame + jmp present_frame +check_roul_mode: + cmp engineMode, MODE_ROULETTE + jne check_shop_mode + call HandleRouletteInput + call RenderRouletteGame + jmp present_frame +check_shop_mode: + cmp engineMode, MODE_SHOP + jne check_atm_mode + call HandleShopInput + call RenderShopGame + jmp present_frame +check_atm_mode: + call HandleATMInput + call RenderATMGame + jmp present_frame +draw_pause: + invoke DrawBoxBorder, 65, 75, 190, 85, 00151C21h, 00D8BC6Ah, 2 + invoke DrawString8x8, 86, 88, OFFSET textPause3D, 00FFFFFFh + invoke DrawString8x8, 78, 111, OFFSET textResume3D, 00D8BC6Ah + invoke DrawString8x8, 78, 131, OFFSET textQuit3D, 00BBBBBBh + invoke Pressed3D, 51h + test eax, eax + jnz engine_shutdown +present_frame: + call Present3D + lea edi, pressedKeys3D + xor eax, eax + mov ecx, 64 + rep stosd + invoke GetTickCount + sub eax, frameStart3D + cmp eax, 16 + jae engine_loop + mov ecx, 16 + sub ecx, eax + invoke Sleep, ecx + jmp engine_loop +engine_idle: + invoke Sleep, 50 + jmp engine_loop +engine_shutdown: + call SaveProgress3D + cmp h3DDC, 0 + je @F + invoke ReleaseDC, h3DWnd, h3DDC + mov h3DDC, 0 +@@: + cmp h3DWnd, 0 + je @F + invoke DestroyWindow, h3DWnd + mov h3DWnd, 0 +@@: + ret +StartCasino3D ENDP + +include src_graphics\platform_code.inc diff --git a/build/graphics/poker.asm b/build/graphics/poker.asm new file mode 100644 index 0000000..0af2d31 --- /dev/null +++ b/build/graphics/poker.asm @@ -0,0 +1,15144 @@ +.386 +.model flat, stdcall +option casemap:none + +includelib kernel32.lib +includelib winmm.lib +includelib user32.lib +includelib ws2_32.lib +includelib gdi32.lib + + +STD_INPUT_HANDLE equ -10 +STD_OUTPUT_HANDLE equ -11 +VK_RETURN equ 0Dh +VK_SPACE equ 20h +VK_M equ 4Dh +FLIP_DELAY equ 650 +FLIP_FINAL_DELAY equ 850 +GENERIC_READ equ 80000000h +GENERIC_WRITE equ 40000000h +OPEN_EXISTING equ 3 +CREATE_ALWAYS equ 2 +FILE_ATTRIBUTE_NORMAL equ 80h +INVALID_HANDLE_VALUE equ -1 +SAVE_MAGIC equ 31435653h +SAVE_SIGN_SIZE equ 276 +SAVE_FILE_SIZE equ 280 +SAVE_SALT equ 0A57C0DEh +ENABLE_VIRTUAL_TERMINAL_PROCESSING equ 0004h +COLOR_DEFAULT equ 07h +COLOR_TITLE equ 0Bh +COLOR_MONEY equ 0Ah +COLOR_WARN equ 0Eh +COLOR_BAD equ 0Ch +COLOR_CARD equ 0Fh +COLOR_RED_CARD equ 0Ch +COLOR_BACK_CARD equ 08h +COLOR_TABLE equ 02h +COLOR_WOOD equ 06h +AF_INET equ 2 +SOCK_STREAM equ 1 +IPPROTO_TCP equ 6 +INADDR_ANY equ 0 +SOCKET_ERROR equ -1 +ONLINE_PORT_NET equ 8769h +ONLINE_MAGIC equ 4E4C4E31h +ONLINE_GAME_DICE equ 1 +ONLINE_GAME_RR equ 2 + +ExitProcess PROTO :DWORD +GetStdHandle PROTO :DWORD +WriteFile PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD +WriteConsoleA PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD +WriteConsoleW PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD +ReadFile PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD +SetConsoleOutputCP PROTO :DWORD +SetConsoleCP PROTO :DWORD +MultiByteToWideChar PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD +WideCharToMultiByte PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD +GetTickCount PROTO +GetLocalTime PROTO :DWORD +GetAsyncKeyState PROTO :DWORD +GetEnvironmentVariableA PROTO :DWORD, :DWORD, :DWORD +CreateDirectoryA PROTO :DWORD, :DWORD +Sleep PROTO :DWORD +WinExec PROTO :DWORD, :DWORD +SetConsoleCursorPosition PROTO :DWORD, :DWORD +SetConsoleScreenBufferSize PROTO :DWORD, :DWORD +SetConsoleWindowInfo PROTO :DWORD, :DWORD, :DWORD +SetConsoleTextAttribute PROTO :DWORD, :DWORD +GetConsoleScreenBufferInfo PROTO :DWORD, :DWORD +GetConsoleMode PROTO :DWORD, :DWORD +SetConsoleMode PROTO :DWORD, :DWORD +FillConsoleOutputCharacterA PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD +mciSendStringA PROTO :DWORD, :DWORD, :DWORD, :DWORD +waveOutSetVolume PROTO :DWORD, :DWORD +AnimFrameDelay PROTO :DWORD +CreateFileA PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD +CloseHandle PROTO :DWORD +FindFirstFileA PROTO :DWORD, :DWORD +FindNextFileA PROTO :DWORD, :DWORD +FindClose PROTO :DWORD +WSAStartup PROTO :DWORD, :DWORD +WSACleanup PROTO +socket PROTO :DWORD, :DWORD, :DWORD +bind PROTO :DWORD, :DWORD, :DWORD +listen PROTO :DWORD, :DWORD +accept PROTO :DWORD, :DWORD, :DWORD +connect PROTO :DWORD, :DWORD, :DWORD +send PROTO :DWORD, :DWORD, :DWORD, :DWORD +recv PROTO :DWORD, :DWORD, :DWORD, :DWORD +closesocket PROTO :DWORD +inet_addr PROTO :DWORD +WSAGetLastError PROTO +MoveCursor PROTO :DWORD, :DWORD +PrintSlotSymbol PROTO :DWORD +RandomRange PROTO :DWORD +PrintUInt PROTO :DWORD +UnlockAchievement PROTO :DWORD, :DWORD +ShowBestiaryPage PROTO :DWORD, :DWORD, :DWORD + +.data +; === Глобальные дескрипторы, буферы консоли, RNG и временная память === +hOut dd 0 +hIn dd 0 +charsWritten dd 0 +charsRead dd 0 +consoleMode dd 0 +printLen dd 0 +wideLen dd 0 +seed dd 0 +inputBuffer db 32 dup(0) +cheatBuffer db 32 dup(0) +wideBuffer dw 4096 dup(0) +utf8Buffer db 8192 dup(0) +frameBuffer db 32768 dup(0) +deckUsed db 52 dup(0) +onlineWsaData db 400 dup(0) +onlineAddr db 16 dup(0) +onlineIp db 32 dup(0) +onlineListenSock dd -1 +onlinePeerSock dd -1 +onlineWsaReady dd 0 +onlinePacket dd 0, 0 +onlineLocalRoll dd 0 +onlineRemoteRoll dd 0 +onlineGameMode dd 0 +onlineHostIp dd 0 +onlineAction dd 1 +consoleRectTiny dw 0, 0, 119, 34 +consoleRect160 dw 0, 0, 159, 44 +consoleRect140 dw 0, 0, 139, 39 +consoleRect120 dw 0, 0, 119, 34 + +; === Общие счетчики очков и состояние старых карточных режимов === +playerTotal dd 0 +dealerTotal dd 0 +playerAces dd 0 +dealerAces dd 0 +playerCards dd 0 +; === Состояние CloverPit / слот-машин: сетка, выплаты, комбинации === +slotA dd 0 +slotB dd 0 +slotC dd 0 +slotD dd 0 +slotE dd 0 +slotMatch dd 0 +slotWinMask dd 0 +slotCurrentCell dd 0 +slotBestMultiplier dd 0 +slotComboNamePtr dd 0 +slotBlockMask dd 0 +slotComboCount dd 0 +slotJackpotHit dd 0 +slotComboNames dd 32 dup(0) +slotComboMults dd 32 dup(0) +slotGrid dd 15 dup(0) +slotVisible dd 0 +; === Общая карточная модель: руки игрока, AI и карты на столе === +playerHand21 dd 10 dup(0) +aiHand21 dd 10 dup(0) +communityHand dd 5 dup(0) +pokerPlayerEvalHand dd 7 dup(0) +pokerAIEvalHand dd 7 dup(0) +playerCnt21 dd 0 +aiCnt21 dd 0 +communityCnt dd 0 +revealAI21 dd 0 +dangerLvl21 dd 0 +cardsLeft21 dd 0 +rowIndex dd 0 +pokerPlayerScore dd 0 +pokerAIScore dd 0 +pokerEvalCount dd 0 +; === Экономика аккаунта: банк, цель, ставка и чит-флаги === +bankroll dd 10000 +targetBank dd 50000 +currentBet dd 0 +cheatLuckyWin dd 0 +cheatGodMode dd 0 +cheatSlotJackpot dd 0 +settingsVolume dd 10 +settingsLowSpec dd 0 +settingsIntroEnabled dd 1 +settingsDbdWindowEnabled dd 0 +animFrameCounter dd 0 +animWidth dd 0 +animHeight dd 0 +secretEndingSeen dd 0 +vipTaxAmount dd 0 +; === Крупье-комментатор: чтение фраз из dealer_phrases.txt === +dealerFileHandle dd 0 +dealerLineLen dd 0 +dealerPhraseCount dd 0 +dealerPhrasePick dd 0 +dealerScanMode dd 0 +dealerWantedTag db 0 +; === Магазин: купленные рубашки, выбранная рубашка и талисманы === +shopBackOwned dd 1 +shopBackStyle dd 0 +shopCharmLevel dd 0 +shopCharmUses dd 0 +achievements dd 0 +pokerRaiseAmount dd 0 +pokerAIRaiseAmount dd 0 +; === Файлы, аккаунты, сохранения, достижения и таблицы лидеров === +saveHandle dd 0 +achievementHandle dd 0 +findHandle dd 0 +danceHandle dd 0 +danceBytes dd 0 +frameBytes dd 0 +introLoopSeen dd 0 +introSkipLoop dd 0 +accountCount dd 0 +selectedAccount dd 0 +accountNameLen dd 0 +saveBuffer dd 80 dup(0) +gamesPlayed dd 0 +gamesWon dd 0 +gamesLost dd 0 +gamesDrawn dd 0 +bestWin dd 0 +bestLoss dd 0 +currentGameId dd 0 +gameStatsPlayed dd 11 dup(0) +gameStatsWon dd 11 dup(0) +gameStatsLost dd 11 dup(0) +gameStatsDraw dd 11 dup(0) +leaderBestBank dd 0 +leaderBestWins dd 0 +leaderBestLosses dd 0 +leaderValidCount dd 0 +leaderScanIndex dd 0 +leaderAccountPtr dd 0 +leaderBestGameWins dd 11 dup(0) +leaderBestGameLosses dd 11 dup(0) +leaderBestBankName db 64 dup(0) +leaderBestWinsName db 64 dup(0) +leaderBestLossName db 64 dup(0) +leaderBestGameWinNames db 11 dup(64 dup(0)) +leaderBestGameLossNames db 11 dup(64 dup(0)) +; === Настройки сложности, временные переменные покера и мини-игр === +aiDifficulty dd 2 +bankRecovered dd 0 +saveTampered dd 0 +pokerReplaceIndex dd 0 +pokerReplaced dd 0 +pokerStraight dd 0 +pokerFlush dd 0 +pokerHigh dd 0 +pokerFour dd 0 +pokerTrip dd 0 +pokerPairHigh dd 0 +pokerPairLow dd 0 +; === Черепа и шарик: позиция шарика, выбор и число перемешиваний === +skullBallPos dd 0 +skullGuess dd 0 +skullStep dd 0 +skullMax dd 0 +; === Русская рулетка: барабан, патроны, ход и множитель === +rrBulletMask dd 0 +rrBullets dd 0 +rrChamber dd 0 +rrTurn dd 0 +rrPayout dd 0 +; === Buckshot Roulette: патроны, здоровье, предметы и состояние хода === +bsShells dd 8 dup(0) +bsShellIndex dd 0 +bsShellCount dd 0 +bsLiveCount dd 0 +bsBlankCount dd 0 +bsPlayerHP dd 0 +bsAIHP dd 0 +bsTurn dd 0 +bsDamage dd 1 +bsKnownShell dd 0FFFFFFFFh +bsSkipPlayer dd 0 +bsSkipAI dd 0 +bsPlayerGlass dd 0 +bsPlayerSaw dd 0 +bsPlayerBeer dd 0 +bsPlayerCuffs dd 0 +bsAIGlass dd 0 +bsAISaw dd 0 +bsAIBeer dd 0 +bsAICuffs dd 0 +bsTarget dd 0 +bsShell dd 0 +bsAction dd 0 +; === Мини-игры орел/решка, кости и казино-рулетка === +coinPick dd 0 +coinResult dd 0 +diceA dd 0 +diceB dd 0 +diceSum dd 0 +diceChoice dd 0 +casinoRouletteBetType dd 0 +casinoRouletteBetNumber dd 0 +casinoRouletteResult dd 0 +casinoRouletteResultIndex dd 0 +casinoRouletteSpinIndex dd 0 +casinoRouletteSpinSteps dd 0 +casinoRouletteSpinCounter dd 0 +casinoRouletteVisibleCount dd 0 +; === Дурак: руки, колода, козырь, стол атаки и защиты === +durakPlayerHand dd 40 dup(0) +durakAIHand dd 40 dup(0) +durakPlayerCnt dd 0 +durakAICnt dd 0 +durakDeckLeft dd 0 +durakTrumpCard dd 0 +durakTrumpSuit dd 0 +durakAttackCard dd 0FFFFFFFFh +durakDefenseCard dd 0FFFFFFFFh +durakPlayerTurn dd 1 +durakChoice dd 0 +durakTableCnt dd 0 +durakAttackCards dd 6 dup(0) +durakDefenseCards dd 6 dup(0FFFFFFFFh) +durakTempHand dd 6 dup(0) +durakSafeTurns dd 0 +durakLoopGuard dd 0 +; === Skill Check, стресс, подозрение казино и турнир-башня === +skillNeedle dd 0 +skillDir dd 1 +skillSuccessStart dd 0 +skillSuccessEnd dd 0 +skillPerfectPos dd 0 +skillGaugeIndex dd 0 +skillFrameCount dd 0 +skillHits dd 0 +skillMisses dd 0 +skillResult dd 0 +skillPerfects dd 0 +skillDelay dd 45 +casinoSuspicion dd 0 +stressLevel dd 0 +lastGameResult dd 0 +tournamentStage dd 0 +tournamentMode dd 0 +dailyDateKey dd 0 +dailyRewardMask dd 0 +dailyProgressPacked dd 0 +dailyTaskPacked dd 0 +systemTime dw 8 dup(0) +pulseCycles dd 0 +; === Временные счетчики рангов и мастей для оценки покера === +rankCounts db 13 dup(0) +suitCounts db 4 dup(0) + +; === Текст интерфейса: меню, системные сообщения, банк и ставки === +nl db 13,10,0 +dotSpaceText db ". ",0 +clearLines db 13,10,13,10,13,10,13,10,13,10,13,10,0 + +titleText db "==============================",13,10 + db " ASSEMBLER CASINO",13,10 + db "==============================",13,10,0 +menuText db "1. Магазин",13,10 + db "2. 21 / Очко",13,10 + db "3. Poker",13,10 + db "4. CloverPit",13,10 + db "5. Черепа и шарик",13,10 + db "6. Русская рулетка",13,10 + db "7. Орел и решка",13,10 + db "8. Кости",13,10 + db "9. Казино-рулетка",13,10 + db "10. Slot machine",13,10 + db "11. Дурак",13,10 + db "12. Крюк: Skill Check",13,10 + db "13. Buckshot Roulette",13,10 + db "14. Наблюдатель AI vs AI",13,10 + db "15. Обучение",13,10 + db "16. Достижения",13,10 + db "17. Статистика по играм",13,10 + db "18. Ежедневные задания",13,10 + db "19. Настройки",13,10 + db "20. Online Casino (Radmin)",13,10 + db "21. Umamusume Скачки",13,10 + + db "25. 3D-КАЗИНО (DOOM / Wolf3D Raycaster 2.5D) [NEW]",13,10 + + db "0. Exit",13,10,0 +choiceText db "Выбор: ",0 +badChoiceText db "Нет такого пункта.",13,10,0 +accountMenuText db "1. Войти в аккаунт",13,10 + db "2. Создать аккаунт",13,10,0 +accountPromptText db "Введите имя аккаунта латиницей: ",0 +accountBadText db "Имя должно содержать хотя бы одну букву или цифру.",13,10,0 +accountLoginText db "Аккаунт загружен: ",0 +accountCreateText db "Аккаунт создан: ",0 +accountListTitle db "Выберите аккаунт:",13,10,0 +accountNoFilesText db "Сохраненных аккаунтов пока нет.",13,10,0 +accountSelectText db "Номер аккаунта: ",0 +pauseText db 13,10,"Нажмите любую клавишу...",0 +bankText db "Ваш банк: $",0 +betText db "Введите ставку: $",0 +betChosenText db "Вы поставили $",0 +badBetText db "Ставка должна быть числом больше 0.",13,10,0 +tooBigBetText db "У вас нет столько денег.",13,10,0 +suspicionText db "Подозрение казино: ",0 +suspicionCalmText db "тихо",13,10,0 +suspicionWatchText db "за тобой смотрят",13,10,0 +suspicionHuntText db "охрана рядом",13,10,0 +suspicionUpText db "Подозрение выросло.",13,10,0 +suspicionFineText db "Охрана заметила мутную игру. Штраф: $",0 +stressText db "Стресс ставки: ",0 +stressLowText db "спокойно",13,10,0 +stressMidText db "пульс растет",13,10,0 +stressHighText db "руки дрожат",13,10,0 +stressMaxText db "паника",13,10,0 +cheatMoveText db "Шулерство: 3 - подсмотреть, 4 - подменить карту.",13,10,0 +cheatPeekText db "Ты незаметно подсмотрел карту:",13,10,0 +cheatSwapText db "Ты подменил карту под рукавом.",13,10,0 +cheatNoTargetText db "Сейчас нечего подменять.",13,10,0 +tournamentTitle db 13,10,"--- Секретный режим: Адская башня ---",13,10,0 +tournamentIntro db "Адская башня казино: 10 этапов подряд. Проиграл - начинаешь заново.",13,10 + db "Вход скрыт. Код 666 принят. Музыку можно менять клавишей M перед этапом.",13,10,0 +tournamentStageText db 13,10,"Этап башни: ",0 +tournamentMusicHint db "M - случайно сменить музыку башни, любая другая клавиша - начать этап",13,10,0 +secretHellText db 13,10,"Секретный код принят. Казино опускает тебя в Адскую башню...",13,10,0 +hellStageCurseText db "Проклятие этапа: ",0 +hellCurse1 db "крупье больше не моргает.",13,10,0 +hellCurse2 db "музыка играет, даже если ты проигрываешь.",13,10,0 +hellCurse3 db "каждая ставка пахнет серой.",13,10,0 +hellCurse4 db "охранник уже знает твое имя.",13,10,0 +tournamentFailText db 13,10,"Адская башня закрыла двери. Турнир начинается заново.",13,10,0 +tournamentWinText db 13,10,"ТЫ ВЫЖИЛ В АДСКОЙ БАШНЕ! Секретный бонус: $66600",13,10,0 +tournamentFire1 db 13,10," . * .",13,10," ASSEMBLER CASINO",13,10," . | .",13,10," ___ /---\ ___",13,10," /___\ | T | /___\",13,10,0 +tournamentFire2 db 13,10," * \ | / \ | / *",13,10," -- TOWER CLEARED --",13,10," * / | \ / | \ *",13,10," ___ /---\ ___",13,10," /___\ | 10| /___\",13,10,0 +tournamentFire3 db 13,10," * . * . * . * . * . * . *",13,10," $$$ FIREWORKS $$$",13,10," . * . * . * . * . * . * .",13,10," \ \ | / /",13,10," \__\_|_/__/",13,10,0 +tournamentFire4 db 13,10," ============ JACKPOT SKY ============",13,10," * * * * *",13,10," * CASINO CHAMPION *",13,10," * * * * *",13,10," =====================================",13,10,0 +dailyTitle db 13,10,"--- Ежедневные задания ---",13,10,0 +dailyIntro db "Каждый календарный день казино выбирает 3 задания из 40.",13,10,0 +dailyDateText db "Дата задания: ",0 +dailyPoolText db "Пул заданий: 40. Сегодня выбрано: 3",13,10,0 +dailySlashText db " / ",0 +dailyRewardText db " Награда: $",0 +dailyClaimText db "Ежедневная награда получена: +$",0 +dailyDoneText db " [получено]",13,10,0 +dailyOpenText db " [в процессе]",13,10,0 +settingsTitle db 13,10,"--- Настройки казино ---",13,10,0 +settingsMenuText db "1. Тише",13,10 + db "2. Громче",13,10 + db "3. Профиль анимаций",13,10 + db "4. Переключить интро",13,10 + db "5. Переключить DBD-окно",13,10 + db "0. Назад",13,10 + db "Выбор: ",0 +settingsVolumeText db "Громкость: ",0 +settingsVolumeHint db "0 - без звука, 10 - максимум",13,10,0 +settingsModeText db "Профиль анимаций: ",0 +settingsNormalText db "обычный",13,10,0 +settingsLowText db "слабый ПК",13,10,0 +settingsIntroText db "Интро: ",0 +settingsDbdText db "DBD-окно: ",0 +settingsOnText db "вкл",13,10,0 +settingsOffText db "выкл",13,10,0 +settingsCinematicText db "Cinematic - максимум",13,10,0 +settingsAdaptiveText db "Adaptive - мягче",13,10,0 +settingsStableText db "Stable - меньше ряби",13,10,0 +settingsAnimHintText db "Cinematic: все кадры; Adaptive: меньше ряби; Stable: для слабых ПК.",13,10,0 +vipStatusText db "VIP-статус: ",0 +vipBronzeText db "Bronze",13,10,0 +vipSilverText db "Silver",13,10,0 +vipGoldText db "Gold",13,10,0 +vipDiamondText db "Diamond",13,10,0 +vipTaxText db "Комиссия казино: $",0 +secretEndingTitle db 13,10,"========================================",13,10," КАЗИНО ПРИЗНАЛО ТЕБЯ СВОИМ",13,10,"========================================",13,10,0 +secretEndingBody db "Ты собрал все достижения, скупил рубашки и вынес банк так, что крупье больше не спорит.",13,10,"Двери служебного лифта открываются. На табличке одна фраза: HOUSE PLAYER.",13,10,"Секретная концовка открыта.",13,10,0 +secretEndingArt1 db " .---. .---. .---.",13,10," / $ / / VIP / / $ /",13,10," \\____/ \\____/ \\____/",13,10,0 +secretEndingArt2 db " ======= ASSEMBLER CASINO PRIVATE FLOOR =======",13,10," cards slots roulette secrets",13,10," =================================================",13,10,0 +dailyReadyText db " [готово к получению]",13,10,0 +dailyTaskName01 db "Сыграть 3 игры",0 +dailyTaskName02 db "Сыграть 5 игр",0 +dailyTaskName03 db "Сыграть 7 игр",0 +dailyTaskName04 db "Победить 1 раз",0 +dailyTaskName05 db "Победить 2 раза",0 +dailyTaskName06 db "Победить 3 раза",0 +dailyTaskName07 db "Проиграть 1 раз",0 +dailyTaskName08 db "Проиграть 2 раза",0 +dailyTaskName09 db "Сделать ничью 1 раз",0 +dailyTaskName10 db "Поставить от $5000",0 +dailyTaskName11 db "Поставить от $5000 три раза",0 +dailyTaskName12 db "Поставить от $10000",0 +dailyTaskName13 db "Сыграть в 21",0 +dailyTaskName14 db "Победить в 21",0 +dailyTaskName15 db "Сыграть в Poker",0 +dailyTaskName16 db "Победить в Poker",0 +dailyTaskName17 db "Сыграть в CloverPit",0 +dailyTaskName18 db "Победить в CloverPit",0 +dailyTaskName19 db "Сыграть в русскую рулетку",0 +dailyTaskName20 db "Победить в русскую рулетку",0 +dailyTaskName21 db "Сыграть в черепа",0 +dailyTaskName22 db "Победить в черепа",0 +dailyTaskName23 db "Сыграть в орла и решку",0 +dailyTaskName24 db "Победить в орла и решку",0 +dailyTaskName25 db "Сыграть в кости",0 +dailyTaskName26 db "Победить в кости",0 +dailyTaskName27 db "Сыграть в казино-рулетку",0 +dailyTaskName28 db "Победить в казино-рулетку",0 +dailyTaskName29 db "Сыграть в Slot machine",0 +dailyTaskName30 db "Победить в Slot machine",0 +dailyTaskName31 db "Сыграть в дурака",0 +dailyTaskName32 db "Победить в дурака",0 +dailyTaskName33 db "Сыграть в Skill Check",0 +dailyTaskName34 db "Победить в Skill Check",0 +dailyTaskName35 db "Сыграть 2 карточные игры",0 +dailyTaskName36 db "Победить в карточной игре",0 +dailyTaskName37 db "Сыграть 3 игры удачи",0 +dailyTaskName38 db "Победить 2 раза в играх удачи",0 +dailyTaskName39 db "Сыграть 2 опасные игры",0 +dailyTaskName40 db "Победить в опасной игре",0 +dailyTaskNameTable dd OFFSET dailyTaskName01, OFFSET dailyTaskName02, OFFSET dailyTaskName03, OFFSET dailyTaskName04 + dd OFFSET dailyTaskName05, OFFSET dailyTaskName06, OFFSET dailyTaskName07, OFFSET dailyTaskName08 + dd OFFSET dailyTaskName09, OFFSET dailyTaskName10, OFFSET dailyTaskName11, OFFSET dailyTaskName12 + dd OFFSET dailyTaskName13, OFFSET dailyTaskName14, OFFSET dailyTaskName15, OFFSET dailyTaskName16 + dd OFFSET dailyTaskName17, OFFSET dailyTaskName18, OFFSET dailyTaskName19, OFFSET dailyTaskName20 + dd OFFSET dailyTaskName21, OFFSET dailyTaskName22, OFFSET dailyTaskName23, OFFSET dailyTaskName24 + dd OFFSET dailyTaskName25, OFFSET dailyTaskName26, OFFSET dailyTaskName27, OFFSET dailyTaskName28 + dd OFFSET dailyTaskName29, OFFSET dailyTaskName30, OFFSET dailyTaskName31, OFFSET dailyTaskName32 + dd OFFSET dailyTaskName33, OFFSET dailyTaskName34, OFFSET dailyTaskName35, OFFSET dailyTaskName36 + dd OFFSET dailyTaskName37, OFFSET dailyTaskName38, OFFSET dailyTaskName39, OFFSET dailyTaskName40 +cheatAppliedText db "CHEAT ACTIVATED: ",0 +cheatBadText db "Unknown cheat code.",13,10,0 +cheatMoneyText db "+$50000",13,10,0 +cheatSevenText db "+$7777",13,10,0 +cheatWinText db "next loss becomes win",13,10,0 +cheatGodText db "losses become wins",13,10,0 +cheatFairText db "fair play restored",13,10,0 +cheatGoalText db "bank moved to current goal",13,10,0 +cheatResetText db "bank reset to $10000",13,10,0 +cheatEasyText db "AI difficulty EASY",13,10,0 +cheatNormalText db "AI difficulty NORMAL",13,10,0 +cheatHardText db "AI difficulty HARD",13,10,0 +cheatJackpotText db "next slot spin is forced jackpot",13,10,0 +cheatRichText db "+$250000",13,10,0 +cheatDoubleText db "bank doubled",13,10,0 +cheatPoorText db "bank set to $1",13,10,0 +cheatShopText db "+$30000 for shop",13,10,0 +cheatBacksText db "all card backs unlocked",13,10,0 +cheatCharmText db "luck talisman maxed",13,10,0 +cheatNoCharmText db "luck talisman removed",13,10,0 +cheatAchText db "all achievements unlocked",13,10,0 +cheatSavedText db "CHEAT: loss changed into win.",13,10,0 +cheatCodeMoney db "MONEYRAIN",0 +cheatCodeSeven db "SEVENS",0 +cheatCodeWin db "WINNEXT",0 +cheatCodeGod db "GODMODE",0 +cheatCodeFair db "FAIRPLAY",0 +cheatCodeGoal db "GOAL",0 +cheatCodeReset db "RESETBANK",0 +cheatCodeEasy db "EASYAI",0 +cheatCodeNormal db "NORMALAI",0 +cheatCodeHard db "HARDAI",0 +cheatCodeJackpot db "JACKPOT",0 +cheatCodeRich db "HIGHROLLER",0 +cheatCodeDouble db "DOUBLECASH",0 +cheatCodePoor db "ONEBUCK",0 +cheatCodeShop db "SHOPPING",0 +cheatCodeBacks db "ALLBACKS",0 +cheatCodeCharm db "MAXCHARM",0 +cheatCodeNoCharm db "NOCHARM",0 +cheatCodeAch db "ACHIEVER",0 +moneyWinText db "Выигрыш: +$",0 +moneyLoseText db "Проигрыш: -$",0 +moneyDrawText db "Ставка возвращается.",13,10,0 +casinoKickText db 13,10,"У вас не осталось денег. Вас выводят из казино.",13,10,0 +casinoExitText db "Нажмите любую клавишу, чтобы выйти...",0 +welcomeText db 13,10,"Добро пожаловать в ASSEMBLER CASINO!",13,10,"Удача любит смелых, но казино любит математику.",13,10,0 +difficultyText db 13,10,"Сложность AI: 1 - Easy, 2 - Normal, 3 - Hard: ",0 +difficultyNowText db "Сложность AI: ",0 +easyName db "Easy",13,10,0 +normalName db "Normal",13,10,0 +hardName db "Hard",13,10,0 +statsGamesText db "Игр сыграно: ",0 +statsWinsText db "Побед: ",0 +statsLossText db "Поражений: ",0 +statsDrawText db "Ничьих: ",0 +statsBestWinText db "Макс. выигрыш: $",0 +statsBestLossText db "Макс. проигрыш: $",0 +statsByGameTitle db 13,10,"--- Статистика и лидеры казино ---",13,10,0 +statsLinePlayed db " игр: ",0 +statsLineWins db " побед: ",0 +statsLineLoss db " поражений: ",0 +statsLineDraw db " ничьих: ",0 +leaderCurrentTitle db "Текущий аккаунт:",13,10,0 +leaderTitle db 13,10,"Лидеры среди всех аккаунтов:",13,10,0 +leaderNoDataText db "Нет сохранений аккаунтов.",13,10,0 +leaderBankText db "Самый большой банк: ",0 +leaderWinsText db "Больше всего побед: ",0 +leaderLossText db "Больше всего поражений: ",0 +leaderGameTitle db 13,10,"Лидеры по играм:",13,10,0 +leaderGameWinText db " победы: ",0 +leaderGameLossText db " поражения: ",0 +leaderDashText db "-",0 +leaderOpenText db " (",0 +leaderCloseText db ")",0 +leaderMoneyPrefix db "$",0 +statsGame21 db "21 / Очко",0 +statsGamePoker db "Poker",0 +statsGameClover db "CloverPit",0 +statsGameRR db "Русская рулетка",0 +statsGameSkulls db "Черепа",0 +statsGameCoin db "Орел/решка",0 +statsGameDice db "Кости",0 +statsGameCasinoRoulette db "Казино-рулетка",0 +statsGameClassicSlot db "Slot machine",0 +statsGameDurak db "Дурак",0 +statsGameSkillCheck db "Крюк: Skill Check",0 +statsGameNames dd OFFSET statsGame21, OFFSET statsGamePoker, OFFSET statsGameClover, OFFSET statsGameRR, OFFSET statsGameSkulls + dd OFFSET statsGameCoin, OFFSET statsGameDice, OFFSET statsGameCasinoRoulette, OFFSET statsGameClassicSlot, OFFSET statsGameDurak + dd OFFSET statsGameSkillCheck +bankRecoveredText db "После прошлого визита казино выдало новый стартовый банк: $10000",13,10,0 +saveTamperedText db "Сохранение повреждено или изменено. Казино выдало чистый стартовый банк.",13,10,0 +goalText db "Цель игры: довести банк до $",0 +victoryText db 13,10,"+====================================+",13,10 + db "| ДЖЕКПОТ ЖИЗНИ |",13,10 + db "+====================================+",13,10,13,10,0 +victoryReachedText db "Ты поднял банк до $",0 +victoryTailText db "Охрана уже нервничает.",13,10 + db "Казино признает поражение.",13,10,13,10 + db "Забирай выигрыш и уходи красиво.",13,10,0 +victoryExitText db "Нажмите любую клавишу, чтобы продолжить игру...",0 +nextGoalText db "Следующая цель: $",0 +croupierPrefix db 13,10,"Крупье: ",0 +croupierWin1 db "Красиво. Фишки идут к вам.",13,10,0 +croupierWin2 db "Стол сегодня явно на вашей стороне.",13,10,0 +croupierWin3 db "Хороший удар по банку казино.",13,10,0 +croupierLose1 db "Казино забирает ставку.",13,10,0 +croupierLose2 db "Не лучший расклад, но вечер еще живой.",13,10,0 +croupierLose3 db "Фишки уходят со стола.",13,10,0 +croupierDraw1 db "Ставка остается при вас.",13,10,0 +croupierDraw2 db "Никто не сдвинул банк. Играем дальше.",13,10,0 +croupierDraw3 db "Ровно. Без победителя.",13,10,0 +croupierWinList dd OFFSET croupierWin1, OFFSET croupierWin2, OFFSET croupierWin3 +croupierLoseList dd OFFSET croupierLose1, OFFSET croupierLose2, OFFSET croupierLose3 +croupierDrawList dd OFFSET croupierDraw1, OFFSET croupierDraw2, OFFSET croupierDraw3 +dealerFileName db "assets\data\dealer_phrases.txt",0 +pulseTitleText db 13,10,"Пульс ставки:",13,10,0 +pulseFrame1 db " _/\_ спокойно",13,10,0 +pulseFrame2 db " _/\/\_ напряжение",13,10,0 +pulseFrame3 db " _/\/\/\_ риск",13,10,0 +pulseFrame4 db " _/\/\/\/\_ сердце колотится",13,10,0 +pulseFrame5 db " _/\/\_/\_ вдох...",13,10,0 +observerTitle db 13,10,"--- Наблюдатель AI vs AI ---",13,10,0 +observerIntro db "AI-1 и AI-2 играют 5 быстрых раундов в 21 без ставок.",13,10,0 +observerRoundText db 13,10,"Раунд ",0 +observerAI1Text db "AI-1 очки: ",0 +observerAI2Text db "AI-2 очки: ",0 +observerWin1Text db "AI-1 забирает раунд.",13,10,0 +observerWin2Text db "AI-2 забирает раунд.",13,10,0 +observerDrawText db "Ничья между железками.",13,10,0 +observerDoneText db 13,10,"Наблюдение окончено.",13,10,0 +observerMenuText db "1. Русская рулетка",13,10 + db "2. 21 / Очко",13,10 + db "3. Poker",13,10 + db "4. Дурак",13,10 + db "0. Назад",13,10 + db "Выбор: ",0 +observer21Title db 13,10,"--- AI vs AI: 21 / Очко ---",13,10,0 +observerPokerTitle db 13,10,"--- AI vs AI: Poker ---",13,10,0 +observerDurakTitle db 13,10,"--- AI vs AI: Дурак ---",13,10,0 +observerRRTitle db 13,10,"--- AI vs AI: Русская рулетка ---",13,10,0 +observerAI1CardsText db 13,10,"Карты AI-1:",13,10,0 +observerAI2CardsText db 13,10,"Карты AI-2:",13,10,0 +observerAI1RaiseText db "AI-1 повышает ставку.",13,10,0 +observerAI2RaiseText db "AI-2 повышает ставку.",13,10,0 +observerCallText db "Соперник отвечает.",13,10,0 +observerFold1Text db "AI-1 делает фолд.",13,10,0 +observerFold2Text db "AI-2 делает фолд.",13,10,0 +observerShotAI1Text db "Выстрел достался AI-1. Победил AI-2.",13,10,0 +observerShotAI2Text db "Выстрел достался AI-2. Победил AI-1.",13,10,0 +shopMainMenuText db "1. Рубашки карт",13,10 + db "2. Талисманы",13,10 + db "3. Бестиарий талисманов",13,10 + db "0. Назад",13,10 + db "Выбор: ",0 +shopBackTitle db 13,10,"--- Магазин: рубашки карт ---",13,10,0 +shopCharmTitle db 13,10,"--- Магазин: талисманы ---",13,10,0 +shopBackMenuText db "1. Синяя рубашка карт - $3000",13,10 + db "2. Красная рубашка карт - $3000",13,10 + db "3. Золотая рубашка карт - $10000",13,10 + db "4. Рубашка Череп - $12000",13,10 + db "5. Rubashka CloverPit - $15000",13,10 + db "6. Rubashka Arcane kart - $17000",13,10 + db "7. Rubashka Noir kart - $18000",13,10 + db "8. Rubashka Diamond kart - $20000",13,10 + db "9. Rubashka Rider kart - $22000",13,10 + db "10. Rubashka Bee kart - $22000",13,10 + db "11. Rubashka Fan kart - $23000",13,10 + db "12. Rubashka Web kart - $24000",13,10 + db "0. Назад",13,10 + db "Выбор: ",0 +shopCharmMenuText db "1. Талисман Клевер: 7%, 3 заряда - $12000",13,10 + db "2. Талисман Колокол: 14%, 3 заряда, +4 подозрения - $18000",13,10 + db "3. Талисман Алмаз: 21%, 3 заряда, +8 подозрения - $25000",13,10 + db "4. Талисман Череп: 28%, 2 заряда, штраф половина ставки - $32000",13,10 + db "5. Талисман Паутина: 35%, 1 заряд, +20 подозрения - $40000",13,10 + db "6. Талисман Пчела: 12%, 5 зарядов - $30000",13,10 + db "7. Талисман Луна: 18%, 4 заряда, +8 подозрения - $36000",13,10 + db "8. Талисман Корона: 24%, 2 заряда, +12 подозрения - $52000",13,10 + db "9. Талисман Зеркало: 16%, 4 заряда, +6 подозрения - $42000",13,10 + db "10. Талисман Кость: 10%, 6 зарядов - $35000",13,10 + db "11. Кровавая монета: 40%, 1 заряд, штраф 25% ставки и +25 подозрения - $65000",13,10 + db "12. Песочные часы: 22%, 2 заряда, +15 подозрения - $48000",13,10 + db "13. Подкова: 9%, 8 зарядов - $39000",13,10 + db "14. Маска джокера: 33%, 1 заряд, +30 подозрения - $70000",13,10 + db "15. Перо феникса: 26%, 2 заряда, +10 подозрения - $56000",13,10 + db "16. Сломанный компас: 19%, 3 заряда, +12 подозрения - $44000",13,10 + db "17. Золотой зуб: 15%, 5 зарядов, штраф 20% ставки - $47000",13,10 + db "18. Хрустальный глаз: 31%, 1 заряд, +18 подозрения - $60000",13,10 + db "19. Ржавый ключ: 13%, 6 зарядов - $41000",13,10 + db "20. Черная свеча: 38%, 1 заряд, штраф 33% ставки и +35 подозрения - $76000",13,10 + db "21. Счастливая фишка: 20%, 4 заряда - $50000",13,10 + db "22. Змеиное кольцо: 29%, 2 заряда, +16 подозрения - $62000",13,10 + db "23. Осколок туза: 17%, 5 зарядов, +7 подозрения - $53000",13,10 + db "24. Договор с дьяволом: 50%, 1 заряд, штраф 50% ставки и +45 подозрения - $100000",13,10 + db "0. Назад",13,10 + db "Выбор: ",0 +shopTitle db 13,10,"--- Магазин казино ---",13,10,0 +shopMenuText db "1. Синяя рубашка карт - $3000",13,10 + db "2. Красная рубашка карт - $3000",13,10 + db "3. Золотая рубашка карт - $10000",13,10 + db "4. Рубашка Череп - $12000",13,10 + db "5. Рубашка CloverPit - $15000",13,10 + db "6. Талисман Клевер: 7%, 3 заряда - $12000",13,10 + db "7. Талисман Колокол: 14%, 3 заряда - $18000",13,10 + db "8. Талисман Алмаз: 21%, 3 заряда - $25000",13,10 + db "9. Rubashka Arcane kart - $17000",13,10 + db "10. Rubashka Noir kart - $18000",13,10 + db "11. Rubashka Diamond kart - $20000",13,10 + db "12. Rubashka Rider kart - $22000",13,10 + db "13. Rubashka Bee kart - $22000",13,10 + db "14. Rubashka Fan kart - $23000",13,10 + db "15. Rubashka Web kart - $24000",13,10 + db "0. Назад",13,10 + db "Выбор: ",0 +shopBackText db "Текущая рубашка: ",0 +shopBackGray db "Серая",13,10,0 +shopBackBlue db "Синяя волна",13,10,0 +shopBackRed db "Красный крест",13,10,0 +shopBackGold db "Золотой блеск",13,10,0 +shopBackSkull db "Череп",13,10,0 +shopBackClover db "CloverPit",13,10,0 +shopBackArcane db "Arcane",13,10,0 +shopBackNoir db "Noir",13,10,0 +shopBackDiamond db "Diamond",13,10,0 +shopBackRider db "Rider",13,10,0 +shopBackBee db "Bee",13,10,0 +shopBackFan db "Fan",13,10,0 +shopBackWeb db "Web",13,10,0 +shopCharmText db "Талисман: ",0 +shopCharmNone db "нет",13,10,0 +shopCharmClover db "Клевер",0 +shopCharmBell db "Колокол",0 +shopCharmDiamond db "Алмаз",0 +shopCharmSkull db "Череп",0 +shopCharmWeb db "Паутина",0 +shopCharmBee db "Пчела",0 +shopCharmMoon db "Луна",0 +shopCharmCrown db "Корона",0 +shopCharmMirror db "Зеркало",0 +shopCharmDice db "Кость",0 +shopCharmBlood db "Кровавая монета",0 +shopCharmHourglass db "Песочные часы",0 +shopCharmHorseshoe db "Подкова",0 +shopCharmJoker db "Маска джокера",0 +shopCharmPhoenix db "Перо феникса",0 +shopCharmCompass db "Сломанный компас",0 +shopCharmTooth db "Золотой зуб",0 +shopCharmEye db "Хрустальный глаз",0 +shopCharmKey db "Ржавый ключ",0 +shopCharmCandle db "Черная свеча",0 +shopCharmChip db "Счастливая фишка",0 +shopCharmSnake db "Змеиное кольцо",0 +shopCharmAce db "Осколок туза",0 +shopCharmDevil db "Договор с дьяволом",0 +bestiaryTitle db 13,10,"--- Бестиарий талисманов ---",13,10,0 +bestiaryMenuText db "--- Обычные ---",13,10 + db "1. Клевер",13,10 + db "2. Колокол",13,10 + db "6. Пчела",13,10 + db "10. Кость",13,10 + db "13. Подкова",13,10 + db "19. Ржавый ключ",13,10 + db "--- Редкие ---",13,10 + db "3. Алмаз",13,10 + db "7. Луна",13,10 + db "9. Зеркало",13,10 + db "12. Песочные часы",13,10 + db "15. Перо феникса",13,10 + db "16. Сломанный компас",13,10 + db "17. Золотой зуб",13,10 + db "21. Счастливая фишка",13,10 + db "23. Осколок туза",13,10 + db "--- Проклятые ---",13,10 + db "4. Череп",13,10 + db "5. Паутина",13,10 + db "11. Кровавая монета",13,10 + db "14. Маска джокера",13,10 + db "20. Черная свеча",13,10 + db "22. Змеиное кольцо",13,10 + db "--- Легендарные ---",13,10 + db "8. Корона",13,10 + db "18. Хрустальный глаз",13,10 + db "24. Договор с дьяволом",13,10 + db "0. Назад",13,10 + db "Выбор: ",0 +bestiaryGoodText db "Плюс: ",0 +bestiaryBadText db "Минус: ",0 +bestiaryBackText db 13,10,"0 - назад к списку бестиария: ",0 +bestiaryCloverArt db 13,10," .-. .-.",13,10," .' V '. CLOVER",13,10," \ \|/ /",13,10," `-+-'",13,10,0 +bestiaryBellArt db 13,10," .---.",13,10," / ___ \ BELL",13,10," / / \ ",13,10," \_\___/_/",13,10," (_) ",13,10,0 +bestiaryDiamondArt db 13,10," /",13,10," /##\ DIAMOND",13,10," /####",13,10," \####/",13,10," \##/",13,10," \/",13,10,0 +bestiarySkullArt db 13,10," .-''''-.",13,10," / O O \ SKULL",13,10," | __ |",13,10," | .____. |",13,10," \__||||__/",13,10,0 +bestiaryWebArt db 13,10," \ | /",13,10," ---\ | /--- WEB",13,10," ---- @ ----",13,10," ---/ | \---",13,10," / | ",13,10,0 +bestiaryBeeArt db 13,10," __",13,10," __/o \__ BEE",13,10," / \__/ ",13,10," \__/==\__/",13,10," \__/",13,10,0 +bestiaryMoonArt db 13,10," .--.",13,10," .' _/ MOON",13,10," / .'",13,10," \ '.",13,10," '.__",13,10,0 +bestiaryCloverInfo db "Клевер: 7%, 3 заряда.",13,10,"Плюс: может полностью спасти проигранную ставку.",13,10,"Минус: слабый шанс, без дополнительных бонусов.",13,10,0 +bestiaryBellInfo db "Колокол: 14%, 3 заряда.",13,10,"Плюс: чаще спасает проигрыш.",13,10,"Минус: звон привлекает казино: +4 подозрения при срабатывании.",13,10,0 +bestiaryDiamondInfo db "Алмаз: 21%, 3 заряда.",13,10,"Плюс: сильный шанс спасения.",13,10,"Минус: блеск палится охране: +8 подозрения.",13,10,0 +bestiarySkullInfo db "Череп: 28%, 2 заряда.",13,10,"Плюс: высокий шанс не потерять всю ставку.",13,10,"Минус: забирает половину ставки даже при спасении.",13,10,0 +bestiaryWebInfo db "Паутина: 35%, 1 заряд.",13,10,"Плюс: почти аварийная кнопка против проигрыша.",13,10,"Минус: +20 подозрения, заряд один.",13,10,0 +bestiaryBeeInfo db "Пчела: 12%, 5 зарядов.",13,10,"Плюс: много попыток, хороший талисман на длинную игру.",13,10,"Минус: шанс ниже, чем у дорогих талисманов.",13,10,0 +bestiaryMoonInfo db "Луна: 18%, 4 заряда.",13,10,"Плюс: баланс шанса и зарядов.",13,10,"Минус: лунный свет выдает шулера: +8 подозрения.",13,10,0 +bestiaryCrownArt db 13,10," _^_",13,10," .'___'. CROWN",13,10," /_/|_|\_",13,10," /___",13,10,0 +bestiaryMirrorArt db 13,10," .----.",13,10," / .--. \ MIRROR",13,10," | | <> | |",13,10," \ '--' /",13,10," '----'",13,10,0 +bestiaryDiceArt db 13,10," +-----+",13,10," | o o | DICE",13,10," | o |",13,10," | o o |",13,10," +-----+",13,10,0 +bestiaryBloodArt db 13,10," .---.",13,10," / $ $ \ BLOOD COIN",13,10," | *** |",13,10," \_===_/",13,10," drip",13,10,0 +bestiaryHourglassArt db 13,10," \-----/",13,10," \.../ HOURGLASS",13,10," \./",13,10," /\",13,10," /___",13,10,0 +bestiaryCrownInfo db "Корона: 24%, 2 заряда.",13,10,"Плюс: солидный шанс спасения.",13,10,"Минус: корона слишком заметна: +12 подозрения.",13,10,0 +bestiaryMirrorInfo db "Зеркало: 16%, 4 заряда.",13,10,"Плюс: несколько стабильных попыток обмануть проигрыш.",13,10,"Минус: отражение палит руки: +6 подозрения.",13,10,0 +bestiaryDiceInfo db "Кость: 10%, 6 зарядов.",13,10,"Плюс: много зарядов, можно жить долго.",13,10,"Минус: шанс маленький, это талисман терпения.",13,10,0 +bestiaryBloodInfo db "Кровавая монета: 40%, 1 заряд.",13,10,"Плюс: самый резкий шанс спасения.",13,10,"Минус: забирает 25% ставки и дает +25 подозрения.",13,10,0 +bestiaryHourglassInfo db "Песочные часы: 22%, 2 заряда.",13,10,"Плюс: надежнее среднего.",13,10,"Минус: время не любит свидетелей: +15 подозрения.",13,10,0 +bestiaryHorseshoeArt db 13,10," __ __",13,10," / \_/ \ HORSESHOE",13,10," | o o |",13,10," \__ __/",13,10," |_|",13,10,0 +bestiaryJokerArt db 13,10," .-^^-.",13,10," / o o \ JOKER",13,10," | .--. |",13,10," \_\__/ _/",13,10," /==\",13,10,0 +bestiaryPhoenixArt db 13,10," /\",13,10," ___/ \___ PHOENIX",13,10," / / /\ \ ",13,10," /_||_\",13,10," \/",13,10,0 +bestiaryCompassArt db 13,10," .---.",13,10," / N \ COMPASS",13,10," | W-+-E |",13,10," \ S /",13,10," '--?'",13,10,0 +bestiaryToothArt db 13,10," .--.",13,10," /$ $\ GOLD TOOTH",13,10," | __ |",13,10," \____/",13,10," drip",13,10,0 +bestiaryEyeArt db 13,10," .-------.",13,10," / .---. \ EYE",13,10," | ( 0 ) |",13,10," \ '---' /",13,10," '-------'",13,10,0 +bestiaryKeyArt db 13,10," __",13,10," ___/ \___ KEY",13,10," (___ ___)",13,10," |__|==",13,10," ==",13,10,0 +bestiaryCandleArt db 13,10," )",13,10," ( ) CANDLE",13,10," .-#-.",13,10," |###|",13,10," |___|",13,10,0 +bestiaryChipArt db 13,10," .-----.",13,10," / $ $ $ \ CHIP",13,10," | $ 777 $ |",13,10," \ $ $ $ /",13,10," '-----'",13,10,0 +bestiarySnakeArt db 13,10," __",13,10," __/ \__ SNAKE RING",13,10," / _ _ ",13,10," \_/ \/ \_/",13,10," hiss",13,10,0 +bestiaryAceArt db 13,10," .---.",13,10," / A \ ACE SHARD",13,10," | ^ |",13,10," \ /_\ /",13,10," '---'",13,10,0 +bestiaryDevilArt db 13,10," /\ /\",13,10," / \_/ \ DEVIL",13,10," | $ $ |",13,10," | ___ |",13,10," \_/###\_/",13,10,0 +bestiaryHorseshoeInfo db "Подкова: 9%, 8 зарядов.",13,10,"Плюс: много попыток, хорошо для длинных сессий.",13,10,"Минус: шанс маленький, спасает редко.",13,10,0 +bestiaryJokerInfo db "Маска джокера: 33%, 1 заряд.",13,10,"Плюс: сильный шанс резко отменить проигрыш.",13,10,"Минус: слишком театрально: +30 подозрения.",13,10,0 +bestiaryPhoenixInfo db "Перо феникса: 26%, 2 заряда.",13,10,"Плюс: хороший шанс, будто ставка воскресает из пепла.",13,10,"Минус: +10 подозрения при срабатывании.",13,10,0 +bestiaryCompassInfo db "Сломанный компас: 19%, 3 заряда.",13,10,"Плюс: средний талисман без денежного штрафа.",13,10,"Минус: ведет криво: +12 подозрения.",13,10,0 +bestiaryToothInfo db "Золотой зуб: 15%, 5 зарядов.",13,10,"Плюс: много зарядов при нормальном шансе.",13,10,"Минус: берет плату 20% ставки при спасении.",13,10,0 +bestiaryEyeInfo db "Хрустальный глаз: 31%, 1 заряд.",13,10,"Плюс: почти видит проигрыш заранее.",13,10,"Минус: +18 подозрения, заряд один.",13,10,0 +bestiaryKeyInfo db "Ржавый ключ: 13%, 6 зарядов.",13,10,"Плюс: дешевле мощных талисманов и долго живет.",13,10,"Минус: шанс слабый, ключ часто не подходит.",13,10,0 +bestiaryCandleInfo db "Черная свеча: 38%, 1 заряд.",13,10,"Плюс: очень сильный шанс спасения.",13,10,"Минус: штраф 33% ставки и +35 подозрения.",13,10,0 +bestiaryChipInfo db "Счастливая фишка: 20%, 4 заряда.",13,10,"Плюс: ровный универсальный талисман.",13,10,"Минус: без яркого бонуса, просто надежность.",13,10,0 +bestiarySnakeInfo db "Змеиное кольцо: 29%, 2 заряда.",13,10,"Плюс: высокий шанс на два спасения.",13,10,"Минус: шипит на охрану: +16 подозрения.",13,10,0 +bestiaryAceInfo db "Осколок туза: 17%, 5 зарядов.",13,10,"Плюс: много зарядов и чуть больше удачи, чем у ключа.",13,10,"Минус: +7 подозрения.",13,10,0 +bestiaryDevilInfo db "Договор с дьяволом: 50%, 1 заряд.",13,10,"Плюс: самый мощный шанс спасти проигрыш.",13,10,"Минус: штраф 50% ставки и +45 подозрения.",13,10,0 +charmPenaltyText db "Цена талисмана: $",0 +shopCharmUsesText db ", зарядов: ",0 +shopBoughtText db "Покупка выполнена.",13,10,0 +shopSelectedText db "Рубашка выбрана.",13,10,0 +shopCharmBurnText db "Талисман сгорел.",13,10,0 +shopCharmSaveText db 13,10,"Талисман вспыхнул и спас ставку!",13,10,0 +achMenuTitle db 13,10,"--- Достижения ---",13,10,0 +achPopupTop db 13,10,"+--------------------------------------+",13,10,0 +achPopupTitle db "| ДОСТИЖЕНИЕ ОТКРЫТО |",13,10,0 +achPopupLeft db "| ",0 +achPopupBottom db "+--------------------------------------+",13,10,0 +achDoneText db "[x] ",0 +achTodoText db "[ ] ",0 +achFirstWinName db "Первый выигрыш",13,10,0 +achFirstLossName db "Первый проигрыш",13,10,0 +achJackpotName db "Джекпот пойман",13,10,0 +achHighRollerName db "Большая ставка",13,10,0 +achShopperName db "Покупатель казино",13,10,0 +achCharmName db "Талисман сработал",13,10,0 +achGoalName db "Цель достигнута",13,10,0 +achCloverPitName db "CloverPit разогрелся",13,10,0 +achClassicSlotName db "Старый автомат платит",13,10,0 +achPokerRaiseName db "Ставка повышена",13,10,0 +achPokerBluffName db "Блеф сработал",13,10,0 +achRouletteWinName db "Колесо судьбы",13,10,0 +achRussianWinName db "Сухой щелчок",13,10,0 +achDurakWinName db "Не дурак",13,10,0 +achBackCollectorName db "Коллекционер рубашек",13,10,0 +achCharmBuyerName db "Талисман в кармане",13,10,0 +achObserverName db "Ложа наблюдателя",13,10,0 +achSkillCheckName db "С крюка сорвался",13,10,0 +achievementFileName db "runtime\achievement.txt",0 +achievementCmd db "cmd /c start ""Achievement"" tools\achievement_popup.bat",0 +skillTitle db 13,10,"--- Крюк: Skill Check ---",13,10,0 +skillIntro db "Попадай по зеленой зоне. PERFECT дает двойной прогресс.",13,10 + db "3 промаха - тьма забирает ставку. 5 прогресса - ты срываешься с крюка.",13,10 + db "Нажимай SPACE или ENTER.",13,10,0 +skillHookArt db 13,10 + db " || .:!!!!!!!!!!:.",13,10 + db " || .:!##############!:.",13,10 + db " _____||_____ !#### ENTITY #####!",13,10 + db " /____ ____/ ':!#############!:'",13,10 + db " | | ''!!####!!''",13,10 + db " | | _J",13,10 + db " | | __/ |",13,10 + db " _____| |_____ .-' .-^-. .---- RED LOCKER ----.",13,10 + db " | WOODEN WALL | / /.-.\\\\ | [] [] [] [] [] |",13,10 + db " | || || || || || | |( )| | | [] [] [] [] [] |",13,10 + db " | || || || || || | /|\\___/|\\| | [] [] [] [] [] |",13,10 + db " | || || || || || |__/ | / \\ | \\__ |__________________|",13,10 + db " | || || || || || /_/ \\_\\ J J J",13,10 + db " |________________| _/ \\_ chains and hooks",13,10 + db " >>> SPACE / ENTER - ловить skill check <<<",13,10,0 +skillStateText db "Состояние: ",0 +skillStateGood db "держишься",13,10,0 +skillStateWarn db "цепь скрипит",13,10,0 +skillStateBad db "тьма рядом",13,10,0 +skillProgressText db "Прогресс побега: ",0 +skillMissText db "Промахи: ",0 +skillGaugeHint db 13,10,"Большой skill check:",13,10,0 +skillGaugeLeft db "[",0 +skillGaugeRight db "]",13,10,0 +skillGaugeEmpty db "-",0 +skillGaugeSuccess db "#",0 +skillGaugePerfect db "@",0 +skillGaugeNeedle db "|",0 +skillSuccessText db 13,10,"Успех. Ты удержался на крюке.",13,10,0 +skillPerfectText db 13,10,"PERFECT! Рывок почти сорвал крюк.",13,10,0 +skillFailText db 13,10,"Промах. Крюк дернул сильнее.",13,10,0 +skillEscapeText db 13,10,"Ты сорвался с крюка и вырвался из тумана!",13,10,0 +skillDarkText db 13,10,"Тьма забрала тебя. Ставка сгорела.",13,10,0 +coinTitle db 13,10,"--- Орел и решка ---",13,10,0 +coinIntroText db "Угадай сторону монеты. Победа дает выигрыш размером со ставку.",13,10,0 +coinChoiceText db "1 - Орел, 2 - Решка: ",0 +coinSpinText db "Монета летит...",13,10,0 +; === ASCII-кадры анимации монеты === +coinFrame1 db 13,10 + db " ( O )",13,10 + db 13,10 + db " ___________________",13,10,0 +coinFrame2 db 13,10 + db " ( / )",13,10 + db 13,10 + db " ___________________",13,10,0 +coinFrame3 db 13,10 + db " ( | )",13,10 + db 13,10 + db " ___________________",13,10,0 +coinFrame4 db 13,10 + db " ( \ )",13,10 + db 13,10 + db " ___________________",13,10,0 +coinFrame5 db 13,10 + db " ( - )",13,10 + db 13,10 + db " ___________________",13,10,0 +coinFrame6 db 13,10 + db " ( / )",13,10 + db 13,10 + db " ___________________",13,10,0 +coinFrame7 db 13,10 + db " ( | )",13,10 + db 13,10 + db " ___________________",13,10,0 +coinFrame8 db 13,10 + db " ( \ )",13,10 + db 13,10 + db " ___________________",13,10,0 +coinFrame9 db 13,10 + db " ( O )",13,10 + db 13,10 + db " ___________________",13,10,0 +coinFrame10 db 13,10 + db " ( / )",13,10 + db " ",13,10 + db " ___________________",13,10,0 +coinFrame11 db 13,10 + db " ( | )",13,10 + db " ",13,10 + db " ___________________",13,10,0 +coinFrame12 db 13,10 + db " ( \ )",13,10 + db " ",13,10 + db " ___________________",13,10,0 +coinFrame13 db 13,10 + db " ( - )",13,10 + db " ",13,10 + db " ___________________",13,10,0 +coinFrame14 db 13,10 + db " ( O )",13,10 + db " ",13,10 + db " ___________________",13,10,0 +coinPickText db "Ты выбрал: ",0 +coinResultText db "Выпало: ",0 +coinHeadsText db "Орел",13,10,0 +coinTailsText db "Решка",13,10,0 +diceTitle db 13,10,"--- Кости ---",13,10,0 +diceIntroText db "Угадай четность суммы двух костей. Победа дает выигрыш размером со ставку.",13,10,0 +diceChoiceText db "1 - чет, 2 - нечет: ",0 +diceRollText db "Кости летят по столу...",13,10,0 +diceFirstText db "Первая кость: ",0 +diceSecondText db "Вторая кость: ",0 +diceSumText db "Сумма: ",0 +diceEvenText db "Чет",13,10,0 +diceOddText db "Нечет",13,10,0 +; === Казино-рулетка: тексты, колесо, цвета и карманы === +casinoRouletteTitle db 13,10,"--- Казино-рулетка ---",13,10,0 +casinoRouletteIntro db "Европейское колесо: 0 зеленый, половина чисел красные, половина черные.",13,10 + db "Ставка на число платит x35, остальные ставки платят x1.",13,10,0 +casinoRouletteBetMenu db "1 - число 0-36",13,10 + db "2 - красное",13,10 + db "3 - черное",13,10 + db "4 - чет",13,10 + db "5 - нечет",13,10 + db "Выбор ставки: ",0 +casinoRouletteNumberAsk db "Введите число 0-36: ",0 +casinoRouletteBadNumber db "В рулетке есть только числа от 0 до 36.",13,10,0 +casinoRouletteSpinText db "Шарик скачет по карманам колеса... Итоговый карман прямо под стрелкой сверху.",13,10,0 +casinoRouletteResultText db 13,10,"Шарик остановился на: ",0 +casinoRouletteWinText db "Ставка сыграла.",13,10,0 +casinoRouletteLoseText db "Ставка не сыграла.",13,10,0 +casinoRouletteWheelTop db " =============================================================",13,10 + db " o",13,10 + db " v",13,10,0 +casinoRouletteWheelBottom db " =============================================================",13,10,0 +casinoRoulettePad db " ",0 +rouletteBigSidePad db " ",0 +rouletteBigSideGap1 db " .-------------------------------------------------. ",0 +rouletteBigSideGap2 db " / .-------------------------------------. \ ",0 +rouletteBigSideGap3 db " | / . . . . . . . . . . . . . . \ | ",0 +rouletteBigSideGap4 db " | | \\ | // ( O ) \\ | | ",0 +rouletteBigSideGap5 db " | | // | \\ --+-- // | | ",0 +rouletteBigSideGap6 db " | \ . . . . . . . . . . . . \ | | ",0 +roulettePocketLeft db "[",0 +roulettePocketRight db "] ",0 +rouletteNumSpace db " ",0 +rouletteRedName db "красное",13,10,0 +rouletteBlackName db "черное",13,10,0 +rouletteGreenName db "зеленый ноль",13,10,0 +rouletteWheel dd 0,32,15,19,4,21,2,25,17,34,6,27,13,36,11,30,8,23,10 + dd 5,24,16,33,1,20,14,31,9,22,18,29,7,28,12,35,3,26 +rouletteColors db 0,1,2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,2,1 + db 1,2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,2,1 +bankLevelText db "Уровень банка: ",0 +bankLevelNewbie db "Новичок",13,10,0 +bankLevelPlayer db "Игрок",13,10,0 +bankLevelHigh db "Хайроллер",13,10,0 +bankLevelLegend db "Легенда казино",13,10,0 + + +; === Тексты карточных игр: 21, покер, дурак и подсказки === +hitText db "Взять карту? (y/n): ",0 +againText db "Сыграть еще? (y/n): ",0 +yourCardText db 13,10,"Твоя карта:",13,10,0 +dealerCardText db 13,10,"Карта дилера:",13,10,0 +aiThinkText db 13,10,"AI думает...",13,10,0 +aiMoveText db 13,10,"AI берет карту!",13,10,0 +aiCardsText db 13,10,"Карты AI:",13,10,0 +playerCardsText db 13,10,"Твои карты:",13,10,0 +yourScoreText db "Твои очки: ",0 +dealerScoreText db "Очки дилера: ",0 +aiScoreText db "Очки AI: ",0 +bustText db "Перебор. Ты проиграл.",13,10,0 +dealerBustText db "У дилера перебор. Ты выиграл!",13,10,0 +winText db "Ты выиграл!",13,10,0 +loseText db "Ты проиграл.",13,10,0 +drawText db "Ничья.",13,10,0 +blackjackText db "Blackjack!",13,10,0 + +twentyOneTitle db 13,10,"--- 21 / Очко ---",13,10,0 +blackjackTitle db 13,10,"--- Blackjack ---",13,10,0 +pokerTitle db 13,10,"--- Poker ---",13,10,0 +slotTitle db 13,10,"--- CloverPit ---",13,10,0 +classicSlotTitle db 13,10,"--- Slot machine ---",13,10,0 +durakTitle db 13,10,"--- Дурак ---",13,10,0 +durakInfoText db "Козырь: ",0 +durakDeckText db "Карт в колоде: ",0 +durakAICardsText db "Карт у AI: ",0 +durakYourHandText db 13,10,"Твои карты:",13,10,0 +durakTableText db 13,10,"На столе: ",0 +durakAttackAsk db "Выбери карту для атаки: ",0 +durakDefendAsk db "Чем бить? 0 - взять: ",0 +durakBadMoveText db "Так нельзя. Выбери другую карту.",13,10,0 +durakAITakeText db "AI не смог отбиться и взял карту.",13,10,0 +durakAIDefendText db "AI отбился картой: ",0 +durakAIAttackText db "AI атакует: ",0 +durakPlayerTakeText db "Ты взял карту.",13,10,0 +durakPlayerDefendText db "Ты отбился.",13,10,0 +durakWinText db "Ты вышел из игры без карт. Победа!",13,10,0 +durakLoseText db "AI избавился от карт раньше тебя. Ты проиграл.",13,10,0 +trainingTitle db 13,10,"--- Обучение ---",13,10,0 +trainingText db "Главное: сначала выбери ставку. Если банк упадет до 0, казино выведет тебя.",13,10 + db "Магазин: рубашки меняют вид закрытых карт, талисманы могут спасти проигранную ставку.",13,10 + db "21 / Очко: бери карты до 21. Перебор - поражение. AI добирает после вскрытия.",13,10 + db "Poker: у тебя 2 карты, на столе 3+1+1. Можно играть, фолдить и повышать ставку.",13,10 + db "CloverPit: поле 5x3. Платят разные линии и фигуры из одинаковых символов.",13,10 + db "Черепа: запомни, где шарик, потом следи за перемешиванием черепов.",13,10 + db "Русская рулетка: Easy/Normal/Hard задают 1/2/3 опасные камеры барабана.",13,10 + db "Орел и решка: выбери сторону монеты и дождись падения.",13,10 + db "Кости: угадай четность суммы двух кубиков.",13,10 + db "Казино-рулетка: можно ставить на число, цвет, чет/нечет, дюжины, половины и колонки.",13,10 + db "Slot machine: старая 3x3 слот-машина с выпадением барабанов и средней линией.",13,10 + db "Дурак: атакуй, подкидывай совпадающие ранги, отбивайся или переводи ход.",13,10 + db "Крюк: Skill Check: SPACE/ENTER по зеленой зоне. PERFECT дает двойной прогресс.",13,10 + db "Buckshot Roulette: считай живые/холостые, используй предметы и выбирай цель выстрела.",13,10 + db "Наблюдатель: AI vs AI играет без твоих ставок, просто для просмотра.",13,10 + db "Достижения и статистика сохраняются в аккаунт.",13,10,0 +durakDeckVisualText db "Колода: [рубашка], из-под нее торчит козырь ",0 +durakAIFaceText db 13,10,"Карты AI:",13,10,0 +durakThrowAsk db "Подкинуть карту? 0 - бито: ",0 +durakTransferText db "Перевод! Ход переходит обратно.",13,10,0 +durakTablePairsText db 13,10,"Карты на столе:",13,10,0 +durakSlashText db " / ",0 +durakUnbeatenText db " _ ",0 +durakStuckText db "Партия зашла в тупик. Считаем ничью.",13,10,0 +skullsTitle db 13,10,"--- Черепа и шарик ---",13,10,0 +skullsIntroText db "Следи за шариком. Выплата за победу: x2.",13,10,0 +skullsShowText db "Смотри внимательно: шарик сейчас здесь.",13,10,0 +skullsHideText db "Черепа закрывают шарик...",13,10,0 +skullsShuffleText db "Черепа скользят по столу...",13,10,0 +skullsGuessText db "Где шарик? 1 / 2 / 3: ",0 +skullsWinText db "Верно! Шарик найден.",13,10,0 +skullsLoseText db "Мимо. Шарик был под другим черепом.",13,10,0 +skullsBallText db "Шарик был под черепом ",0 +skullsSwap12Text db " \\______/",13,10," / \",13,10,0 +skullsSwap23Text db " \\______/",13,10," / \",13,10,0 +skullsSwap13Text db " \\____________________/",13,10," / \",13,10,0 +rouletteTitle db 13,10,"--- Русская рулетка ---",13,10,0 +rrIntroText db "Барабан на 6 камер. Easy: 1 опасная, Normal: 2, Hard: 3.",13,10,"AI играет с тобой по очереди. Кто попал на опасную камеру - проиграл.",13,10,0 +rrDangerText db "Опасных камер в барабане: ",0 +rrSpinText db "Барабан вращается... ",0 +rrSpin1 db "|",13,10,0 +rrSpin2 db "/",13,10,0 +rrSpin3 db "-",13,10,0 +rrSpin4 db "\\",13,10,0 +rrStartsPlayerText db "Револьвер остановился на тебе. Ты стреляешь первым.",13,10,0 +rrStartsAIText db "Револьвер остановился на AI. Он стреляет первым.",13,10,0 +rrPlayerTurnText db "Твой ход. Нажми любую клавишу, чтобы нажать на спуск...",0 +rrAITurnText db "Ход AI. Он поднимает револьвер...",13,10,0 +rrClickText db "Щелчок. Пусто.",13,10,0 +rrBangText db "БАХ!",13,10,0 +rrPlayerLoseText db "Тебе не повезло. Ставка уходит казино.",13,10,0 +rrAIShotText db "AI выбыл. Ты пережил эту партию.",13,10,0 +rrPayoutText db "Выплата рулетки зависит от сложности.",13,10,0 +buckshotTitle db 13,10,"--- Buckshot Roulette ---",13,10,0 +buckshotIntro db "Дробовик заряжен живыми и холостыми патронами в неизвестном порядке.",13,10 + db "Стреляй в себя или AI. Холостой в себя оставляет ход тебе.",13,10 + db "Лупа раскрывает текущий патрон, пила дает 2 урона, пиво выбрасывает патрон, наручники пропускают ход AI.",13,10,0 +bsShotgunArt db 13,10 + db " ,_______________________________________________",13,10 + db " |_________________,----------._ [____] ""-,__",13,10 + db " (_(||||||||||||)___________/ ""--.__",13,10 + db " `----------' [ ))""-, \",13,10 + db " "" `--.__ |",13,10 + db " `----'",13,10 + db " DOUBLE BARREL CASINO",13,10,0 +bsShotgunLoad1 db 13,10 + db " ,_______________________________________________",13,10 + db " |_________________,----------._ [____] ""-,__",13,10 + db " (_(||||||||||||)___________/ ""--.__",13,10 + db " `----------' [ ))""-, \",13,10 + db " "" `--.__ |",13,10 + db " `----'",13,10 + db " Крупье берет дробовик со стола...",13,10,0 +bsShotgunLoad2 db 13,10 + db " ,_______________________________________________",13,10 + db " |_________________,----------._ [____] ""-,__",13,10 + db " (_(||||||||||||)______/__/ ""--.__",13,10 + db " `----------' / LIVE] ",13,10 + db " __/ BLANK] .__ |",13,10 + db " `----'",13,10 + db " Ствол приоткрыт. Патроны у казенной части.",13,10,0 +bsShotgunLoad3 db 13,10 + db " ,_______________________________________________",13,10 + db " |_________________,----------._ [____] ""-,__",13,10 + db " (_(||||||||||||)___________/ ""--.__",13,10 + db " `----------' [ ))""-, \",13,10 + db " "" `--.__ |",13,10 + db " `----'",13,10 + db " ЩЕЛК. Дробовик закрыт.",13,10,0 +bsShotgunFire db 13,10 + db " *** BOOM ***",13,10 + db " ,_______________________________________________ ***",13,10 + db " |_________________,----------._ [____] ""-,__ *****",13,10 + db " (_(||||||||||||)___________/ ""--.__ ***",13,10 + db " `----------' [ ))""-, \ *",13,10 + db " "" `--.__ |",13,10 + db " `----'",13,10,0 +bsShotgunDry db 13,10 + db " ,_______________________________________________",13,10 + db " |_________________,----------._ [____] ""-,__ click",13,10 + db " (_(||||||||||||)___________/ ""--.__",13,10 + db " `----------' [ ))""-, \",13,10 + db " "" `--.__ |",13,10 + db " `----'",13,10,0 +bsHPText db "HP: ты ",0 +bsAIHPText db " / AI ",0 +bsShellInfoText db "Патроны в раунде: ",0 +bsLiveText db " живых, ",0 +bsBlankText db " холостых",13,10,0 +bsLeftText db "Осталось в дробовике: ",0 +bsKnownUnknownText db "Текущий патрон: неизвестно",13,10,0 +bsKnownLiveText db "Текущий патрон: ЖИВОЙ",13,10,0 +bsKnownBlankText db "Текущий патрон: холостой",13,10,0 +bsItemsText db "Предметы: лупа ",0 +bsSawText db ", пила ",0 +bsBeerText db ", пиво ",0 +bsCuffsText db ", наручники ",0 +bsMenuText db 13,10,"1. Стрелять в себя",13,10 + db "2. Стрелять в AI",13,10 + db "3. Лупа",13,10 + db "4. Пила",13,10 + db "5. Пиво",13,10 + db "6. Наручники",13,10 + db "Выбор: ",0 +bsLoadText db 13,10,"Крупье заряжает дробовик...",13,10,0 +bsLiveLoadedText db "Живой патрон",13,10,0 +bsBlankLoadedText db "Холостой патрон",13,10,0 +bsPlayerTurnText db 13,10,"Твой ход.",13,10,0 +bsAITurnText db 13,10,"Ход AI...",13,10,0 +bsShootPlayerText db "Выстрел в тебя.",13,10,0 +bsShootAIText db "Выстрел в AI.",13,10,0 +bsDryText db "Щелчок. Холостой.",13,10,0 +bsHitText db "БАХ! Урон: ",0 +bsGlassUseText db "Лупа показывает патрон.",13,10,0 +bsSawUseText db "Пила надрезает ствол. Следующий живой выстрел сильнее.",13,10,0 +bsBeerUseText db "Пиво. Патрон вылетает из дробовика: ",0 +bsCuffsUseText db "Наручники защелкнулись. AI пропустит ход.",13,10,0 +bsNoItemText db "Этого предмета нет.",13,10,0 +bsAISawText db "AI использует пилу.",13,10,0 +bsAIGlassText db "AI смотрит патрон через лупу.",13,10,0 +bsAIBeerText db "AI выбрасывает патрон пивом.",13,10,0 +bsAICuffsText db "AI надевает на тебя наручники.",13,10,0 +bsSkipPlayerText db "Ты в наручниках и пропускаешь ход.",13,10,0 +bsSkipAIText db "AI в наручниках и пропускает ход.",13,10,0 +bsWinText db "AI падает. Ты забираешь банк стола.",13,10,0 +bsLoseText db "Ты падаешь. Крупье забирает ставку.",13,10,0 +rrGunUp db 117,117,36,96,36,36,36,117,117,36,36,36,13,10 + + db 80,42,36,96,36,36,36,36,36,36,36,36,13,10 + + db 63,42,36,32,36,36,36,36,36,36,36,36,13,10 + + db 36,58,36,32,36,36,36,36,36,36,36,36,13,10 + + db 34,58,36,32,36,36,36,36,36,36,36,36,13,10 + + db 32,78,36,32,36,36,36,36,36,36,36,36,13,10 + + db 32,32,36,32,36,36,36,36,36,36,36,36,13,10 + + db 32,32,36,32,36,36,36,36,36,36,36,36,13,10 + + db 32,32,36,32,36,36,36,36,36,36,36,36,13,10 + + db 32,32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,36,36,82,82,36,36,36,36,36,36,13,10 + + db 32,32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,36,32,36,36,36,36,36,64,36,36,13,10 + + db 32,32,36,32,36,36,36,36,36,36,36,36,13,10 + + db 32,32,36,32,36,36,36,36,36,36,36,36,36,117,117,76,13,10 + + db 32,32,36,32,36,36,36,36,36,36,36,36,36,117,117,42,42,42,117,46,46,13,10 + + db 32,32,36,32,36,36,36,36,36,36,36,36,36,32,96,42,42,42,117,36,42,116,13,10 + + db 32,32,36,120,120,117,117,36,117,36,36,36,36,117,117,117,107,46,36,36,36,63,13,10 + + db 32,32,36,120,36,117,117,56,117,96,96,96,36,117,117,117,54,46,34,36,63,63,13,10 + + db 32,32,36,36,36,63,36,36,36,96,96,96,36,36,36,36,36,96,34,34,63,63,13,10 + + db 32,32,36,36,36,63,36,36,36,32,32,32,36,36,36,36,75,32,32,32,36,36,32,46,46,13,10 + + db 32,32,36,36,36,72,36,36,36,32,32,32,36,36,36,36,75,46,32,32,36,36,36,36,36,78,115,46,13,10 + + db 32,32,36,36,36,36,36,36,36,32,32,32,36,36,36,36,88,46,32,32,82,34,36,36,36,37,37,46,78,13,10 + + db 32,32,36,36,36,37,117,117,36,32,32,32,117,117,117,36,58,58,32,32,82,117,117,117,32,32,34,63,63,58,13,10 + + db 32,32,36,36,36,37,117,117,33,32,32,32,36,117,36,36,36,58,32,32,124,124,117,117,117,117,42,63,36,36,13,10 + + db 32,32,36,63,63,78,32,32,32,32,32,32,36,39,36,36,36,32,32,32,36,36,42,117,117,117,33,39,58,36,13,10 + + db 32,32,36,63,63,46,46,46,46,46,46,46,46,36,36,36,36,32,32,32,36,42,42,96,32,32,100,100,34,34,13,10 + + db 36,46,36,82,100,46,46,46,46,36,46,46,34,63,55,36,117,111,32,32,53,117,117,46,46,43,42,42,42,13,10 + + db 39,42,64,82,46,96,96,34,34,42,42,64,34,34,96,117,117,111,117,120,120,117,96,96,85,43,33,96,13,10 + + db 42,42,64,42,42,120,117,117,42,42,42,34,32,32,32,42,82,82,117,120,36,34,96,96,37,37,13,10 + + db 32,32,32,42,42,120,78,42,42,37,37,32,32,32,32,46,46,117,46,100,36,46,46,117,37,36,36,111,46,13,10 + + db 32,32,32,32,32,34,78,78,96,37,46,46,32,32,36,46,46,34,46,100,117,36,36,36,36,36,36,36,36,36,117,117 + + db 46,46,13,10 + + db 32,32,32,32,32,56,56,64,46,109,34,58,58,58,82,42,34,34,120,36,36,36,36,36,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,36,99,13,10 + + db 32,32,32,32,32,36,36,101,34,34,34,58,78,64,32,32,32,32,36,36,78,96,34,36,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 + + db 32,32,32,32,32,36,64,32,32,32,34,78,37,117,117,46,32,32,63,63,117,117,117,36,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,96,96,96,34,42,117,36,36,36,36,36,36,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,34,36,36,36,36,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,94,94,36,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,42,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,42,42,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,96 + + db 34,43,36,36,36,42,36,36,36,36,36,36,62,13,10 + + db 0 + +rrGunUpLeft db 32,32,32,32,32,32,32,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,13,10 + + db 32,32,32,32,32,32,36,36,36,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,62,13,10 + + db 32,32,32,32,32,117,32,36,36,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,62,13,10 + + db 32,32,32,32,36,36,36,36,36,36,36,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,62,62,13,10 + + db 32,32,32,36,32,36,36,36,32,36,36,32,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,46,32,78,58,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,32,36,62,13,10 + + db 32,32,36,32,36,36,32,36,36,36,32,36,36,32,32,32,32,32,32,32,32,32,32,32,32,46,116,32,32,32,32,32 + + db 32,32,115,46,63,32,36,32,32,32,32,32,32,32,32,32,32,36,32,36,36,36,32,36,36,32,36,62,13,10 + + db 32,36,96,36,36,36,36,36,36,36,36,36,36,36,36,32,32,32,32,32,32,32,32,32,46,36,36,63,63,32,32,46 + + db 36,78,37,34,63,36,36,34,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 + + db 117,32,36,32,32,36,36,36,32,36,36,32,36,36,36,32,32,32,32,32,32,32,32,42,117,32,36,63,32,63,32,36 + + db 32,36,32,32,42,39,34,32,32,32,32,32,32,32,46,36,36,32,36,36,32,36,36,36,32,36,36,32,36,13,10 + + db 80,42,36,36,32,36,36,36,36,36,36,36,36,36,36,36,36,32,32,32,117,76,42,42,46,36,36,34,63,36,36,36 + + db 36,117,117,117,33,100,42,42,32,32,32,32,117,46,36,36,36,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,63,58,32,36,32,32,36,36,36,32,36,36,32,36,36,32,36,32,117,32,117,42,32,107,46,34,32,32,36,32,34 + + db 117,32,117,117,32,32,42,96,32,32,32,117,32,36,36,32,36,36,32,36,36,36,32,36,36,32,36,13,10 + + db 32,32,36,58,32,36,32,36,32,36,36,32,36,36,36,32,36,36,32,36,117,32,96,117,54,32,96,32,32,32,82,117 + + db 32,117,117,32,32,43,33,32,32,46,32,36,36,32,36,36,36,32,36,36,32,36,36,36,32,36,13,10 + + db 32,32,34,32,78,36,36,32,36,36,36,36,36,36,36,64,36,36,36,36,36,32,117,117,36,36,75,46,32,32,32,124 + + db 124,36,42,96,46,85,37,32,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,42,36,13,10 + + db 32,32,32,32,32,32,32,36,36,36,32,82,36,32,36,36,32,36,36,36,32,36,117,32,36,36,75,32,46,32,32,32 + + db 36,32,42,117,96,32,37,36,32,36,36,36,32,36,36,32,36,36,32,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,36,36,36,82,36,36,36,36,36,36,36,36,36,36,96,36,36,36,36,36,88,58,58,32,32 + + db 32,36,117,117,96,96,37,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,32,36,36,32,36,96,32,96,36,36,32,36,36,32,36,32,32 + + db 32,32,120,32,34,46,36,32,36,36,32,36,36,32,36,36,36,32,36,36,32,43,13,10 + + db 32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,36,36,36,117,96,96,96,32,32,36,36,117,36,36,36,36,111 + + db 32,117,120,36,46,36,36,36,36,36,36,36,36,36,36,36,36,36,36,96,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,36,32,32,36,36,32,117,56,36,32,32,32,32,32,117,117,32,36,36,32,117 + + db 111,32,117,100,117,32,36,34,32,36,36,36,32,36,36,32,36,36,32,96,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,36,32,36,32,117,117,32,36,36,32,32,32,32,32,36,39,32,36,36,117 + + db 32,82,46,32,100,36,96,32,117,36,32,36,36,32,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,36,36,120,120,36,63,36,36,36,36,36,32,32,32,36,46,36,55,96,42 + + db 82,46,34,46,36,36,117,117,36,36,36,36,36,36,36,42,42,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,120,32,36,63,36,32,36,36,32,32,32,46,32,34,34,32,32 + + db 46,32,46,34,36,32,63,36,32,36,36,36,32,42,96,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,117,117,33,32,46,46,46,64,34,32,32 + + db 36,46,34,32,32,63,36,36,36,36,94,94,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,37,32,117,32,46,32,36,42,32,34,32,32 + + db 32,82,32,32,32,117,36,32,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,37,32,32,46,46,42,32,42,32,32,32 + + db 58,32,32,46,42,32,32,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,63,46,46,46,34,42,42,37,46,46,58 + + db 78,64,117,96,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,63,32,63,46,96,32,117,42,32,37,34,58 + + db 32,37,96,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,63,100,46,120,117,42,78,96,109,34,34 + + db 78,32,96,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,82,32,42,120,78,32,64,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,32,64,42,42,32,34,56,32,101,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,39,42,64,32,42,32,56,36,36,64,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,42,32,32,32,32,32,32,36,13,10 + + db 0 + +rrGunLeft db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,99,62,62,62,62,62,62,62,62,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,42,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 46,36,36,36,36,36,36,36,36,36,43,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 46,36,36,36,36,36,36,36,36,36,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 117,36,36,36,36,36,36,36,36,36,96,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 117,36,36,36,36,36,36,36,36,36,96,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,58,36,36,34,32,32,32,32 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,78,63,36,58,34,42,32,32,46 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,46,63,63,39,100,42,96,32,111 + + db 36,36,36,36,36,36,36,36,36,42,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,115,37,34,42,33,100,42,33,32,36 + + db 36,36,36,36,36,36,36,36,36,42,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,78,37,32,117,117,32,43,43,37,36 + + db 36,36,36,36,36,36,36,36,36,96,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,36,36,32,117,117,32,46,85,37,37 + + db 36,36,36,36,36,36,36,36,42,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,36,36,117,117,117,96,46,96,96,117 + + db 36,36,36,36,36,36,36,36,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,117,117,42,42,117,96,96,46 + + db 36,36,34,117,36,36,36,94,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,63,63,63,36,36,34,117,124,36,42,117,117,34,46 + + db 36,36,96,117,36,36,36,94,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,42,36,63,63,36,36,82,82,124,36,36,53,120,36,36 + + db 117,36,78,117,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,36,36,36,34,32,32,32,32,32,32,32,32,120,120,100 + + db 100,36,36,63,36,36,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,117,117,36,34,34,32,32,32,32,32,32,32,32,117,117,46 + + db 46,120,36,63,36,36,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,42,42,46,46,96,32,46,46,58,58,32,32,111,111,82,117 + + db 34,34,32,32,117,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,42,42,107,54,36,75,75,88,58,36,36,36,117,117,82,46 + + db 46,34,32,32,42,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,76,42,42,117,117,36,36,36,36,36,36,36,36,36,117,42,46 + + db 46,42,32,46,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,117,117,96,117,117,36,36,36,36,117,36,36,36,55,96,32,32 + + db 36,82,32,117,96,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,117,117,32,117,117,36,36,36,36,117,117,39,36,63,34,32,32 + + db 32,58,64,117,96,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,117,36,36,46,34,34,32,32 + + db 32,58,78,37,96,13,10 + + db 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,96,96,32,32,32,32,32,32,46,46,64,34,32 + + db 46,58,58,78,13,10 + + db 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,96,96,32,32,32,32,32,32,46,46,42,42,37 + + db 46,34,34,34,13,10 + + db 36,36,36,36,36,36,36,36,36,36,36,36,36,64,36,36,36,36,36,96,96,32,32,32,32,32,32,46,36,42,42,37 + + db 37,109,34,13,10 + + db 117,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,117,117,36,36,36,36,36,33,32,46,46,34,42,42 + + db 96,46,34,13,10 + + db 117,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,56,36,36,36,36,117,117,32,46,46,34,117,42 + + db 78,64,101,13,10 + + db 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,117,117,36,36,36,36,117,117,32,46,46,96,117,78 + + db 78,56,36,64,13,10 + + db 36,36,36,36,36,36,36,36,36,36,36,82,36,36,36,36,36,36,117,117,63,63,72,36,37,37,78,46,46,96,120,120 + + db 34,56,36,36,13,10 + + db 36,36,36,36,36,36,36,36,36,36,36,82,36,36,36,36,36,36,120,36,36,36,36,36,36,36,63,63,100,46,42,42 + + db 13,10 + + db 96,96,32,32,32,32,32,32,32,36,36,36,36,32,32,32,32,32,120,120,36,36,36,36,36,36,63,63,82,82,42,42 + + db 13,10 + + db 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,64,64,13 + + db 10 + + db 117,42,42,58,58,78,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,42,42,13 + + db 10 + + db 117,80,63,36,34,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,39,42,13 + + db 10 + + db 0 + +rrGunDownLeft db 32,32,32,32,32,32,62,36,13,10 + + db 32,32,32,32,32,62,36,32,36,13,10 + + db 32,32,32,62,62,36,36,36,36,36,13,10 + + db 32,32,32,62,36,32,36,36,36,32,36,13,10 + + db 32,32,62,36,32,36,36,32,36,36,32,36,13,10 + + db 32,62,36,36,36,36,36,36,36,36,36,42,36,13,10 + + db 99,36,32,36,36,32,36,36,36,32,36,36,32,36,13,10 + + db 32,36,36,36,36,36,36,36,36,36,36,36,36,36,43,13,10 + + db 32,32,36,36,32,36,36,32,36,36,32,36,36,36,32,34,13,10 + + db 32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,96,96,13,10 + + db 32,32,32,32,36,32,36,36,36,32,36,36,32,36,36,36,13,10 + + db 32,32,32,32,32,36,36,32,36,36,32,36,36,36,32,36,36,13,10 + + db 32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,42,13,10 + + db 32,32,32,32,32,32,32,36,36,32,36,36,32,36,36,36,32,36,42,13,10 + + db 32,32,32,32,32,32,32,46,36,36,36,36,36,36,36,36,36,36,36,96,13,10 + + db 32,32,32,32,32,32,32,32,46,36,32,36,36,36,32,36,36,32,36,42,13,10 + + db 32,32,32,32,32,32,32,32,117,32,36,36,32,36,36,36,32,36,36,32,34,13,10 + + db 32,32,32,32,32,32,32,32,32,117,36,36,36,36,36,36,36,36,36,36,94,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,36,36,32,36,36,94,13,10 + + db 32,32,32,32,32,32,32,32,32,32,46,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,36,32,36,36,36,32,117,36,32,36,34,13,10 + + db 32,32,32,32,32,32,34,32,42,96,32,32,36,36,32,36,34,32,117,36,36,32,34,13,10 + + db 32,32,32,32,32,36,36,34,42,42,33,37,37,37,36,36,36,96,117,63,36,36,13,10 + + db 32,32,32,32,58,32,36,39,100,32,43,85,32,96,46,36,32,36,36,32,63,117,13,10 + + db 32,32,32,32,78,63,63,42,33,32,32,46,96,96,34,46,117,100,36,36,32,32,42,34,13,10 + + db 32,32,32,32,32,46,34,32,117,117,32,96,117,117,32,36,100,32,46,34,32,32,46,96,13,10 + + db 32,32,32,32,46,115,37,32,117,117,117,42,42,117,120,120,117,46,34,46,34,32,32,117,96,96,13,10 + + db 32,32,32,32,32,32,78,36,117,32,117,36,32,36,32,117,32,82,46,32,46,82,32,64,37,13,10 + + db 32,32,32,32,32,32,36,32,36,117,32,124,36,32,32,32,111,32,82,46,36,32,58,78,32,78,13,10 + + db 32,32,32,32,32,32,46,36,36,34,117,124,32,32,32,111,117,117,42,32,32,32,32,58,58,34,13,10 + + db 32,32,32,32,32,32,32,32,36,32,82,32,32,32,32,36,32,36,96,32,32,32,32,46,34,34,13,10 + + db 32,32,32,32,32,32,32,63,36,36,32,32,32,58,36,36,36,36,55,34,34,34,32,46,37,109,34,101,64,13,10 + + db 32,32,32,32,32,32,63,32,63,32,32,32,46,58,32,36,36,32,36,34,64,32,42,37,32,96,64,32,36,36,13,10 + + db 32,32,32,32,32,32,63,63,34,32,32,46,32,88,36,36,32,39,46,32,46,42,32,42,42,78,32,56,36,13,10 + + db 32,32,32,32,32,116,36,36,36,34,96,75,75,36,36,117,117,36,36,46,46,36,42,42,117,42,78,34,56,13,10 + + db 32,32,32,32,32,46,36,32,36,46,32,36,36,36,32,36,117,32,32,32,46,32,46,34,32,117,120,13,10 + + db 32,32,32,32,32,32,46,117,46,107,54,36,36,36,36,36,32,32,32,32,32,46,46,46,96,120,42,42,42,13,10 + + db 32,32,32,32,32,32,32,42,42,32,117,117,32,36,36,32,32,32,32,32,33,32,32,46,46,46,32,42,13,10 + + db 32,32,32,32,32,32,32,32,42,42,96,117,117,36,96,32,32,32,36,36,117,117,32,46,63,100,82,64,64,13,10 + + db 32,32,32,32,32,32,32,32,76,117,32,32,36,96,32,96,32,32,36,36,117,32,37,63,32,63,36,32,42,42,13,10 + + db 32,32,32,32,32,32,32,32,117,32,117,36,32,36,96,96,32,36,36,32,36,37,32,36,63,36,32,46,39,13,10 + + db 32,32,32,32,32,32,32,32,32,117,36,36,36,36,36,96,36,36,36,36,36,36,36,36,36,36,32,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,117,56,32,36,63,36,32,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,117,117,63,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,36,32,36,36,32,36,36,36,32,117,36,32,36,36,13,10 + + db 32,32,32,32,32,32,32,32,36,36,32,64,36,36,32,36,36,32,120,120,36,13,10 + + db 32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,120,36,36,13,10 + + db 32,32,32,32,32,32,36,36,36,32,36,36,32,36,36,36,32,32,36,13,10 + + db 32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,32,36,36,13,10 + + db 32,32,32,36,32,36,36,32,36,36,32,36,82,36,32,32,36,13,10 + + db 32,32,32,36,36,32,36,36,36,32,36,36,32,82,36,36,13,10 + + db 32,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,36,36,36,32,36,36,32,36,36,32,36,36,36,13,10 + + db 36,36,36,36,36,36,36,36,36,36,36,32,36,36,13,10 + + db 32,36,32,36,36,32,36,36,36,32,32,36,13,10 + + db 32,32,117,36,36,36,36,36,36,32,36,36,13,10 + + db 32,32,32,36,32,36,36,32,32,36,32,78,13,10 + + db 32,32,32,32,36,32,36,32,36,32,58,13,10 + + db 32,32,32,32,32,36,96,36,36,58,36,34,13,10 + + db 32,32,32,32,32,32,36,32,42,63,13,10 + + db 32,32,32,32,32,32,32,117,80,13,10 + + db 0 + +rrGunDown db 62,36,36,36,36,36,36,42,36,36,36,43,34,96,96,13,10 + + db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,42,42,96,13,10 + + db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,42,34,13,10 + + db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,94,94,13,10 + + db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,34,34,13,10 + + db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,117,42,34,96,96 + + db 96,13,10 + + db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,117,117,117,63,63,32,32,46,117,117 + + db 37,78,34,32,32,32,64,36,13,10 + + db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,34,96,78,36,36,32,32,32,32,64 + + db 78,58,34,34,34,101,36,36,13,10 + + db 99,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,120,34,34,42,82,58 + + db 58,58,34,109,46,64,56,56,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,46,46,117,117,36,36,36,36,36,36,36,36,36,117,100,46,34,46,46,36,32 + + db 32,46,46,37,96,78,78,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,111,36,36,37,117,46,46,36,100,46,117,46,46,32,32 + + db 32,32,37,37,42,42,78,120,42,42,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,37,37,96,96,34,36,120,117,82,82,42,32,32 + + db 32,34,42,42,42,117,117,120,42,42,64,42,42,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,33,43,85,96,96,117,120,120,117,111,117,117,96,34 + + db 34,64,42,42,34,34,96,96,46,82,64,42,39,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,42,42,42,43,46,46,117,117,53,32,32,111,117,36,55,63 + + db 34,46,46,36,46,46,46,46,100,82,36,46,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,34,100,100,32,32,96,42,42,36,32,32,32,36,36,36,36 + + db 46,46,46,46,46,46,46,46,63,63,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,58,39,33,117,117,117,42,36,36,32,32,32,36,36,36,39 + + db 36,32,32,32,32,32,32,78,63,63,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,63,42,117,117,117,117,124,124,32,32,58,36,36,36,117 + + db 36,32,32,32,33,117,117,37,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,58,63,63,34,32,32,117,117,117,82,32,32,58,58,36,117,117 + + db 117,32,32,32,36,117,117,37,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,78,46,37,37,36,36,36,34,82,32,32,46,88,36,36,36 + + db 36,32,32,32,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,115,78,36,36,36,36,36,32,32,46,75,36,36,36 + + db 36,32,32,32,36,36,36,72,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,46,32,36,36,32,32,32,75,36,36,36 + + db 36,32,32,32,36,36,36,63,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,63,63,34,34,96,36,36,36,36 + + db 36,96,96,96,36,36,36,63,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,63,63,36,34,46,54,117,117,117 + + db 36,96,96,96,117,56,117,117,36,120,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,63,36,36,36,46,107,117,117,117 + + db 36,36,36,36,117,36,117,117,120,120,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,42,36,117,42,42,42,96,32 + + db 36,36,36,36,36,36,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,46,117,42,42,42,117,117 + + db 36,36,36,36,36,36,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,76,117,117 + + db 36,36,36,36,36,36,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,64,36,36,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,82,82,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,32,36,78,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,32,36,58,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,32,36,58,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,32,36,42,63,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,96,36,42,80,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,117,117,36,36,36,96,36,117,117,13,10 + + db 0 + +rrGunDownRight db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 36,32,32,32,32,32,32,42,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,64 + + db 36,36,56,32,42,32,64,42,39,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101 + + db 32,56,34,32,42,42,64,32,46,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34 + + db 64,32,78,120,42,32,82,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,32,78,34,34,109 + + db 96,78,42,117,120,46,100,63,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,37,32,58,34,37 + + db 32,42,117,32,96,46,63,32,63,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,96,117,64,78,58,46,46 + + db 37,42,42,34,46,46,46,63,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,32,32,42,46,32,32,58,32,32,32 + + db 42,32,42,46,46,32,32,37,32,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,32,36,117,32,32,32,82,32,32,32,34 + + db 32,42,36,32,46,32,117,32,37,36,32,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,94,94,36,36,36,36,63,32,32,34,46,36,32,32,34 + + db 64,46,46,46,32,33,117,117,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,42,32,36,36,36,32,36,63,32,36,34,46,32,46,32,32,34 + + db 34,32,46,32,32,32,36,36,32,36,63,36,32,120,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,42,42,36,36,36,36,36,36,36,117,117,36,36,46,34,46,82,42,96,55 + + db 36,46,36,32,32,32,36,36,36,36,36,63,36,120,120,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,36,36,32,36,117,32,96,36,100,32,46,82,32,117,36,36 + + db 32,39,36,32,32,32,32,32,36,36,32,117,117,32,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,96,32,36,36,32,36,36,32,36,36,36,32,34,36,32,117,100,117,32,111,117,32,36 + + db 36,32,117,117,32,32,32,32,32,36,56,117,32,36,36,32,32,36,13,10 + + db 32,32,32,32,32,32,32,32,34,96,36,36,36,36,36,36,36,36,36,36,36,36,36,36,46,36,120,117,32,111,36,36 + + db 36,36,117,36,36,32,32,96,96,96,117,36,36,36,36,36,36,32,36,36,13,10 + + db 32,32,32,32,32,32,32,43,32,36,36,32,36,36,36,32,36,36,32,36,36,32,36,46,34,32,120,32,32,32,32,36 + + db 32,36,36,32,36,36,96,32,96,36,32,36,36,32,36,36,36,32,36,36,13,10 + + db 32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,37,96,96,117,117,36,32,32,32,58 + + db 58,88,36,36,36,36,36,96,36,36,36,36,36,36,36,36,36,36,82,36,36,36,13,10 + + db 32,32,32,32,32,36,32,36,36,36,32,36,36,32,36,36,32,36,36,36,32,36,37,32,96,117,42,32,36,32,32,32 + + db 46,32,75,36,36,32,117,36,32,36,36,36,32,36,36,32,36,82,32,36,36,36,13,10 + + db 32,32,32,32,36,42,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,32,37,85,46,96,42,36,124,124,32,32 + + db 32,46,75,36,36,117,117,32,36,36,36,36,36,64,36,36,36,36,36,36,36,32,36,36,78,32,34,13,10 + + db 32,32,32,36,32,36,36,36,32,36,36,32,36,36,36,32,36,36,32,46,32,32,33,43,32,32,117,117,32,117,82,32 + + db 32,32,96,32,54,117,96,32,117,36,32,36,36,32,36,36,36,32,36,36,32,36,32,36,32,58,36,13,10 + + db 32,32,36,32,36,36,32,36,36,36,32,36,36,32,36,36,32,117,32,32,32,96,42,32,32,117,117,32,117,34,32,36 + + db 32,32,34,46,107,32,42,117,32,117,32,36,32,36,36,32,36,36,32,36,36,36,32,32,36,32,58,63,13,10 + + db 32,36,36,36,36,36,36,36,36,36,36,36,36,36,36,46,117,32,32,32,32,42,42,100,33,117,117,117,36,36,36,36 + + db 63,34,36,36,46,42,42,76,117,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,32,36,36,42,80,13,10 + + db 36,32,36,36,32,36,36,36,32,36,36,32,36,36,46,32,32,32,32,32,32,32,34,39,42,32,32,36,32,36,32,63 + + db 32,63,36,32,117,42,32,32,32,32,32,32,32,32,36,36,36,32,36,36,32,36,36,36,32,32,36,32,117,13,10 + + db 62,36,36,36,36,36,36,36,36,36,36,36,36,32,32,32,32,32,32,32,32,34,36,36,63,34,37,78,36,46,32,32 + + db 63,63,36,36,46,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,96,36,13,10 + + db 32,62,36,32,36,36,32,36,36,36,32,36,32,32,32,32,32,32,32,32,32,32,36,32,63,46,115,32,32,32,32,32 + + db 32,32,116,46,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,32,36,36,32,36,13,10 + + db 32,32,62,36,32,36,36,36,32,36,36,32,32,32,32,32,32,32,32,32,32,32,32,58,78,32,46,32,32,32,32,32 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,36,36,32,36,36,36,32,36,13,10 + + db 32,32,62,62,36,36,36,36,36,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,62,36,32,36,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,117,13,10 + + db 32,32,32,32,32,62,36,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,13,10 + + db 32,32,32,32,32,32,99,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,13,10 + + db 0 + +rrGunRight db 32,32,32,32,32,32,32,32,32,32,32,32,42,39,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,32,32,32,32,34,36,63,80,117,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,42,42,46,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,32,32,32,78,58,58,42,42,117,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,64,64,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,42,42,82,82,63,63,36,36,36,36,36,36,120,120,32,32,32,32,32,36,36 + + db 36,36,32,32,32,32,32,32,32,96,96,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,42,42,46,100,63,63,36,36,36,36,36,36,36,120,36,36,36,36,36,36,82 + + db 36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,36,36,56,34,120,120,96,46,46,78,37,37,36,72,63,63,117,117,36,36,36,36,36,36,82 + + db 36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,64,36,56,78,78,117,96,46,46,32,117,117,36,36,36,36,117,117,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,101,64,78,42,117,34,46,46,32,117,117,36,36,36,36,56,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,117,13,10 + + db 32,32,32,32,32,32,32,32,34,46,96,42,42,34,46,46,32,33,36,36,36,36,36,117,117,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,117,13,10 + + db 32,32,32,32,32,32,32,32,34,109,37,37,42,42,36,46,32,32,32,32,32,32,96,96,36,36,36,36,36,64,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,34,34,34,46,37,42,42,46,46,32,32,32,32,32,32,96,96,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,78,58,58,46,32,34,64,46,46,32,32,32,32,32,32,96,96,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,96,37,78,58,32,32,32,34,34,46,36,36,117,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,96,117,64,58,32,32,32,34,63,36,39,117,117,36,36,36,36,117,117,32,117,117,13,10 + + db 32,32,32,32,32,32,96,117,32,82,36,32,32,96,55,36,36,36,117,36,36,36,36,117,117,96,117,117,13,10 + + db 32,32,32,32,32,32,34,46,32,42,46,46,42,117,36,36,36,36,36,36,36,36,36,117,117,42,42,76,13,10 + + db 32,32,32,32,32,32,42,32,32,34,46,46,82,117,117,36,36,36,58,88,75,75,36,54,107,42,42,13,10 + + db 32,32,32,32,32,32,117,32,32,34,34,117,82,111,111,32,32,58,58,46,46,32,96,46,46,42,42,13,10 + + db 32,32,32,32,34,36,36,63,36,120,46,46,117,117,32,32,32,32,32,32,32,32,34,34,36,117,117,13,10 + + db 32,32,32,32,34,36,36,63,36,36,100,100,120,120,32,32,32,32,32,32,32,32,34,36,36,36,46,13,10 + + db 32,32,32,32,36,36,36,117,78,36,117,36,36,120,53,36,36,124,82,82,36,36,63,63,36,42,46,13,10 + + db 32,32,32,94,36,36,36,117,96,36,36,46,34,117,117,42,36,124,117,34,36,36,63,63,63,116,13,10 + + db 32,32,32,94,36,36,36,117,34,36,36,46,96,96,117,42,42,117,117,36,36,13,10 + + db 32,32,34,36,36,36,36,36,36,36,36,117,96,96,46,96,117,117,117,36,36,46,13,10 + + db 32,32,42,36,36,36,36,36,36,36,36,37,37,85,46,32,117,117,32,36,36,46,13,10 + + db 32,96,36,36,36,36,36,36,36,36,36,36,37,43,43,32,117,117,32,37,78,13,10 + + db 32,42,36,36,36,36,36,36,36,36,36,36,32,33,42,100,33,42,34,37,115,13,10 + + db 32,42,36,36,36,36,36,36,36,36,36,111,32,96,42,100,39,63,63,46,46,13,10 + + db 32,36,36,36,36,36,36,36,36,36,36,46,32,32,42,34,58,36,63,78,13,10 + + db 32,36,36,36,36,36,36,36,36,36,36,32,32,32,32,34,36,36,58,13,10 + + db 96,36,36,36,36,36,36,36,36,36,117,13,10 + + db 96,36,36,36,36,36,36,36,36,36,117,13,10 + + db 34,36,36,36,36,36,36,36,36,36,46,13,10 + + db 43,36,36,36,36,36,36,36,36,36,46,13,10 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 42,36,36,36,36,36,36,36,36,36,13,10 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 62,62,62,62,62,62,62,62,62,99,13,10 + + db 0 + +rrGunUpRight db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,80,117,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,63,42,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,36,58,36,36,96,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,58,32,36,32,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,78,32,36,32,32,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,36,36,36,117,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,32,36,36,36,32,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,36,36,32,36,36,32,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,82,32,36,36,32,36,36,36,32,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,32,36,82,36,32,36,36,32,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,36,32,32,36,36,36,32,36,36,32,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,36,36,120,36,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,36,120,120,32,36,36,32,36,36,64,32,36,36,13,10 + + db 32,32,32,32,32,32,32,32,36,36,32,36,117,32,36,36,36,32,36,36,32,36,13,10 + + db 32,32,32,32,32,32,36,36,36,36,36,63,117,117,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,36,36,32,36,63,36,32,56,117,32,36,36,36,13,10 + + db 32,36,32,32,36,36,36,36,36,36,36,36,36,36,96,36,36,36,36,36,117,13,10 + + db 32,39,46,32,36,63,36,32,37,36,32,36,36,32,96,96,36,32,36,117,32,117,13,10 + + db 42,42,32,36,63,32,63,37,32,117,36,36,32,32,96,32,96,36,32,32,117,76,13,10 + + db 32,64,64,82,100,63,46,32,117,117,36,36,32,32,32,96,36,117,117,96,42,42,13,10 + + db 32,32,42,32,46,46,46,32,32,33,32,32,32,32,32,36,36,32,117,117,32,42,42,13,10 + + db 32,42,42,42,120,96,46,46,46,32,32,32,32,32,36,36,36,36,36,54,107,46,117,46,13,10 + + db 32,32,32,120,117,32,34,46,32,46,32,32,32,117,36,32,36,36,36,32,46,36,32,36,46,13,10 + + db 32,56,34,78,42,117,42,42,36,46,46,36,36,117,117,36,36,75,75,96,34,36,36,36,116,13,10 + + db 32,36,56,32,78,42,42,32,42,46,32,46,39,32,36,36,88,32,46,32,32,34,63,63,13,10 + + db 36,36,32,64,96,32,37,42,32,64,34,36,32,36,36,32,58,46,32,32,32,63,32,63,13,10 + + db 32,64,101,34,109,37,46,32,34,34,34,55,36,36,36,36,58,32,32,32,36,36,63,13,10 + + db 32,32,32,32,34,34,46,32,32,32,32,96,36,32,36,32,32,32,32,82,32,36,13,10 + + db 32,32,32,32,34,58,58,32,32,32,32,42,117,117,111,32,32,32,124,117,34,36,36,46,13,10 + + db 32,32,32,32,78,32,78,58,32,36,46,82,32,111,32,32,32,36,124,32,117,36,32,36,13,10 + + db 32,32,32,32,32,37,64,32,82,46,32,46,82,32,117,32,36,32,36,117,32,117,36,78,13,10 + + db 32,32,32,32,96,96,117,32,32,34,46,34,46,117,120,120,117,42,42,117,117,117,32,37,115,46,13,10 + + db 32,32,32,32,32,32,96,46,32,32,34,46,32,100,36,32,117,117,96,32,117,117,32,34,46,13,10 + + db 32,32,32,32,32,32,34,42,32,32,36,36,100,117,46,34,96,96,46,32,32,33,42,63,63,78,13,10 + + db 32,32,32,32,32,32,32,32,117,63,32,36,36,32,36,46,96,32,85,43,32,100,39,36,32,58,13,10 + + db 32,32,32,32,32,32,32,32,36,36,63,117,96,36,36,36,37,37,37,33,42,42,34,36,36,13,10 + + db 32,32,32,32,32,32,32,34,32,36,36,117,32,34,36,32,36,36,32,32,96,42,32,34,13,10 + + db 32,32,32,32,32,32,32,32,34,36,32,36,117,32,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,46,13,10 + + db 32,32,32,32,32,32,32,32,32,94,36,36,32,36,36,32,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,94,36,36,36,36,36,36,36,36,36,36,117,13,10 + + db 32,32,32,32,32,32,32,32,32,34,32,36,36,32,36,36,36,32,36,36,32,117,13,10 + + db 32,32,32,32,32,32,32,32,32,32,42,36,32,36,36,32,36,36,36,32,36,46,13,10 + + db 32,32,32,32,32,32,32,32,32,32,96,36,36,36,36,36,36,36,36,36,36,36,46,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,42,36,32,36,36,36,32,36,36,32,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,42,36,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,32,36,36,32,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,36,36,32,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,96,96,36,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,32,36,36,36,32,36,36,32,36,36,32,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,43,36,36,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,36,36,32,36,36,36,32,36,36,32,36,99,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,42,36,36,36,36,36,36,36,36,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,36,36,32,36,36,32,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,36,36,36,32,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,62,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,62,13,10 + + db 0 + +pokerReplaceText db "Поменять карту ",0 +pokerReplaceTail db "? (y/n): ",0 +pokerAIExchangeText db 13,10,"AI думает над обменом...",13,10,0 +pokerRevealText db 13,10,"AI вскрывает покерную руку...",13,10,0 +pokerYourComboText db "Твоя комбинация: ",0 +pokerAIComboText db "Комбинация AI: ",0 +pokerTableText db 13,10,"Карты на столе:",13,10,0 +pokerHintText db "Подсказка: сейчас у тебя ",0 +pokerDecisionText db "1 - играть, 2 - повысить ставку, 0 - фолд: ",0 +pokerPotText db "Банк раунда: $",0 +pokerBetText db "Твоя текущая ставка: $",0 +pokerChipTitle db "Фишки:",13,10,0 +pokerChipHigh db " [###]",13,10,0 +pokerChipMid db " [===]",13,10,0 +pokerChipLow db " [___]",13,10,0 +pokerRaiseAskText db "На сколько повысить ставку: $",0 +pokerRaisedText db "Ты повысил ставку. Новая ставка: $",0 +pokerBadRaiseText db "Повышение должно быть больше 0 и не больше твоего банка.",13,10,0 +pokerAICallRaiseText db 13,10,"AI отвечает на ставку.",13,10,0 +pokerAIFoldRaiseText db 13,10,"AI не принимает повышение и делает фолд. Ты выиграл!",13,10,0 +pokerHardIntroText db "Hard Poker: один раз можно заменить одну карманную карту.",13,10,0 +pokerHardExchangeText db "Заменить карту? 1 - первую, 2 - вторую, 0 - не менять: ",0 +pokerHardAIExchangeText db 13,10,"AI пересматривает карманные карты...",13,10,0 +pokerAIRaiseText db 13,10,"AI повышает ставку на $",0 +pokerCallRaiseText db "Ответить? 1 - колл, 0 - фолд: ",0 +pokerPlayerCallText db "Ты ответил на повышение. Новая ставка: $",0 +pokerFoldToRaiseText db 13,10,"Ты сбросил карты после повышения AI.",13,10,"Ты проиграл.",13,10,0 +pokerFoldText db 13,10,"Ты сделал фолд.",13,10,"Ты проиграл.",13,10,0 +pokerAIFoldText db 13,10,"AI сделал фолд. Ты выиграл!",13,10,0 +pokerNextCardText db 13,10,"Открывается следующая карта...",13,10,0 +pokerHighName db "Старшая карта",13,10,0 +pokerPairName db "Пара",13,10,0 +pokerTwoPairName db "Две пары",13,10,0 +pokerTripsName db "Тройка",13,10,0 +pokerStraightName db "Стрит",13,10,0 +pokerFlushName db "Флеш",13,10,0 +pokerFullHouseName db "Фулл хаус",13,10,0 +pokerFourName db "Каре",13,10,0 +pokerStraightFlushName db "Стрит-флеш",13,10,0 + +; === Тексты и символы слот-машин === +slotPullText db "Крутим барабаны...",13,10,0 +slotLeft db "[ ",0 +slotMid db " ] [ ",0 +slotRight db " ]",13,10,0 +slotJackpot db "Джекпот!",13,10,0 +slotPair db "Комбинация сыграла!",13,10,0 +slotPayoutText db "Выплата x",0 +slotPayTableText db "Символы: LEM/CHR x2, CLV/BEL x3, DIA/BOX x5, 777 x7.",13,10 + db "Комбинации: Гор.M/Верт.M/Диаг.M x1, Гор.L x2, Гор.XL x3",13,10 + db "Вверх/Вниз x4, Небо/Земля x7, Глаз x8, Джекпот x10.",13,10,0 +slotEmpty db "Не повезло.",13,10,0 +slotComboText db "Комбинация: ",0 +slotMultiplierText db "Множитель: x",0 +slotTotalMultiplierText db "Итоговый множитель: x",0 +slotComboHorM db "Гор. M",0 +slotComboVertM db "Верт. M",0 +slotComboDiagM db "Диаг. M",0 +slotComboHorL db "Гор. L",0 +slotComboHorXL db "Гор. XL",0 +slotComboUp db "Вверх",0 +slotComboDown db "Вниз",0 +slotComboSky db "Небо",0 +slotComboEarth db "Земля",0 +slotComboEye db "Глаз",0 +slotComboJackpot db "Джекпот",0 + +; === Графика карт: рамки, строки, рубашки и переворот === +cardTop db 0E2h, 094h, 08Ch, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 090h, 13,10,0 +cardBottom db 0E2h, 094h, 094h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 098h, 13,10,0 +cardEmpty db 0E2h, 094h, 082h, " ", 0E2h, 094h, 082h, 13,10,0 +cardSuitLeft db 0E2h, 094h, 082h, " ", 0 +cardSuitRight db " ", 0E2h, 094h, 082h, 13,10,0 +cardRankOneL db 0E2h, 094h, 082h, " ", 0 +cardRankOneR db " ", 0E2h, 094h, 082h, 13,10,0 +cardRankTenL db 0E2h, 094h, 082h, " ", 0 +cardRankTenR db " ", 0E2h, 094h, 082h, 13,10,0 +cardCenterL db 0E2h, 094h, 082h, " ", 0 +cardCenterR db " ", 0E2h, 094h, 082h, 13,10,0 +cardTopSeg db 0E2h, 094h, 08Ch, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 090h, 0 +cardBottomSeg db 0E2h, 094h, 094h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 098h, 0 +cardEmptySeg db 0E2h, 094h, 082h, " ", 0E2h, 094h, 082h, 0 +cardBackSeg db 0E2h, 094h, 082h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 094h, 082h, 0 +cardBackBlueSeg db 0E2h, 094h, 082h, "~~*~~*~~*", 0E2h, 094h, 082h, 0 +cardBackRedSeg db 0E2h, 094h, 082h, "XX+XX+XX+", 0E2h, 094h, 082h, 0 +cardBackGoldSeg db 0E2h, 094h, 082h, "$*$*$*$*$", 0E2h, 094h, 082h, 0 +cardBackSkullSeg db 0E2h, 094h, 082h, "|o",0E2h,098h,0A0h," v ",0E2h,098h,0A0h,"o|", 0E2h, 094h, 082h, 0 +cardBackCloverSeg db 0E2h, 094h, 082h, "$+ ",0E2h,099h,0A3h,"$",0E2h,099h,0A3h," +$", 0E2h, 094h, 082h, 0 +backGray1 db 0E2h,094h,082h,"+-+-+-+-+",0E2h,094h,082h,0 +backGray2 db 0E2h,094h,082h,"|#|#|#|#|",0E2h,094h,082h,0 +backGray3 db 0E2h,094h,082h,"+-+-+-+-+",0E2h,094h,082h,0 +backGray4 db 0E2h,094h,082h,"|#|#|#|#|",0E2h,094h,082h,0 +backGray5 db 0E2h,094h,082h,"+-+-+-+-+",0E2h,094h,082h,0 +backBlue1 db 0E2h,094h,082h,"\\==*==//",0E2h,094h,082h,0 +backBlue2 db 0E2h,094h,082h,"/ ___ /",0E2h,094h,082h,0 +backBlue3 db 0E2h,094h,082h,"| (@@@) |",0E2h,094h,082h,0 +backBlue4 db 0E2h,094h,082h,"/ ~~~ /",0E2h,094h,082h,0 +backBlue5 db 0E2h,094h,082h,"//==*==//",0E2h,094h,082h,0 +backRed1 db 0E2h,094h,082h,"ooooooooo",0E2h,094h,082h,0 +backRed2 db 0E2h,094h,082h,"oXXXxXXXo",0E2h,094h,082h,0 +backRed3 db 0E2h,094h,082h,"oXX---XXo",0E2h,094h,082h,0 +backRed4 db 0E2h,094h,082h,"oXXXxXXXo",0E2h,094h,082h,0 +backRed5 db 0E2h,094h,082h,"ooooooooo",0E2h,094h,082h,0 +backGold1 db 0E2h,094h,082h,"{$*$$$*$}",0E2h,094h,082h,0 +backGold2 db 0E2h,094h,082h,"*/^ $ ^/*",0E2h,094h,082h,0 +backGold3 db 0E2h,094h,082h,"$ <@@@> $",0E2h,094h,082h,0 +backGold4 db 0E2h,094h,082h,"*v/ $ /v*",0E2h,094h,082h,0 +backGold5 db 0E2h,094h,082h,"{$*$$$*$}",0E2h,094h,082h,0 +backSkull1 db 0E2h,094h,082h,"._.---._.",0E2h,094h,082h,0 +backSkull2 db 0E2h,094h,082h,"/,(o o),\",0E2h,094h,082h,0 +backSkull3 db 0E2h,094h,082h,"| ^ |",0E2h,094h,082h,0 +backSkull4 db 0E2h,094h,082h,"\ '-=-' /",0E2h,094h,082h,0 +backSkull5 db 0E2h,094h,082h,"~|==|==|~",0E2h,094h,082h,0 +backClover1 db 0E2h,094h,082h,"+o+$$$+o+",0E2h,094h,082h,0 +backClover2 db 0E2h,094h,082h,"o ",0E2h,098h,098h," + ",0E2h,098h,098h," o",0E2h,094h,082h,0 +backClover3 db 0E2h,094h,082h,"$+ ",0E2h,099h,0A3h,"$",0E2h,099h,0A3h," +$",0E2h,094h,082h,0 +backClover4 db 0E2h,094h,082h,"o ",0E2h,098h,098h," | ",0E2h,098h,098h," o",0E2h,094h,082h,0 +backClover5 db 0E2h,094h,082h,"+o+$$$+o+",0E2h,094h,082h,0 +backArcane1 db 0E2h,094h,082h,".~*~*~*~.",0E2h,094h,082h,0 +backArcane2 db 0E2h,094h,082h,"/__~_~__\",0E2h,094h,082h,0 +backArcane3 db 0E2h,094h,082h,"|_/\/\_ |",0E2h,094h,082h,0 +backArcane4 db 0E2h,094h,082h,"| \_/\_/|",0E2h,094h,082h,0 +backArcane5 db 0E2h,094h,082h,"'--===--'",0E2h,094h,082h,0 +backNoir1 db 0E2h,094h,082h,"((\\_//))",0E2h,094h,082h,0 +backNoir2 db 0E2h,094h,082h,"// | \\",0E2h,094h,082h,0 +backNoir3 db 0E2h,094h,082h,"--(#*#)--",0E2h,094h,082h,0 +backNoir4 db 0E2h,094h,082h,"\\__|__//",0E2h,094h,082h,0 +backNoir5 db 0E2h,094h,082h,"((//~\\))",0E2h,094h,082h,0 +backDiamond1 db 0E2h,094h,082h,"<><###><>",0E2h,094h,082h,0 +backDiamond2 db 0E2h,094h,082h,"/\ /\",0E2h,094h,082h,0 +backDiamond3 db 0E2h,094h,082h,"*$*",0E2h,094h,082h,0 +backDiamond4 db 0E2h,094h,082h,"\/ \/",0E2h,094h,082h,0 +backDiamond5 db 0E2h,094h,082h,"<><###><>",0E2h,094h,082h,0 +backRider1 db 0E2h,094h,082h,".oO===Oo.",0E2h,094h,082h,0 +backRider2 db 0E2h,094h,082h,"(/ .-. /)",0E2h,094h,082h,0 +backRider3 db 0E2h,094h,082h,"o-( @ )-o",0E2h,094h,082h,0 +backRider4 db 0E2h,094h,082h,"(/ '-' /)",0E2h,094h,082h,0 +backRider5 db 0E2h,094h,082h,"'oO===Oo'",0E2h,094h,082h,0 +backBee1 db 0E2h,094h,082h,"<>.<>.<>.",0E2h,094h,082h,0 +backBee2 db 0E2h,094h,082h,".<>.<><>.",0E2h,094h,082h,0 +backBee3 db 0E2h,094h,082h,"<> BEE <>",0E2h,094h,082h,0 +backBee4 db 0E2h,094h,082h,".<>.<><>.",0E2h,094h,082h,0 +backBee5 db 0E2h,094h,082h,"<>.<>.<>.",0E2h,094h,082h,0 +backFan1 db 0E2h,094h,082h,"\\|/\\|//",0E2h,094h,082h,0 +backFan2 db 0E2h,094h,082h," -\\|//- ",0E2h,094h,082h,0 +backFan3 db 0E2h,094h,082h,"<(( o ))>",0E2h,094h,082h,0 +backFan4 db 0E2h,094h,082h," -//|\\- ",0E2h,094h,082h,0 +backFan5 db 0E2h,094h,082h,"//|/|/|\\",0E2h,094h,082h,0 +backWeb1 db 0E2h,094h,082h,"\\..|..//",0E2h,094h,082h,0 +backWeb2 db 0E2h,094h,082h,".\\.|.//.",0E2h,094h,082h,0 +backWeb3 db 0E2h,094h,082h,"--(o-o)--",0E2h,094h,082h,0 +backWeb4 db 0E2h,094h,082h,".//|.|\\.",0E2h,094h,082h,0 +backWeb5 db 0E2h,094h,082h,"//''-''\\",0E2h,094h,082h,0 +cardFlipLeft db 0E2h, 094h, 082h, " \ ", 0E2h, 094h, 082h, 0 +cardFlipMid db 0E2h, 094h, 082h, " | ", 0E2h, 094h, 082h, 0 +cardFlipRight db 0E2h, 094h, 082h, " / ", 0E2h, 094h, 082h, 0 +cardSuitRightSeg db " ", 0E2h, 094h, 082h, 0 +cardRankOneRSeg db " ", 0E2h, 094h, 082h, 0 +cardRankTenRSeg db " ", 0E2h, 094h, 082h, 0 +cardCenterRSeg db " ", 0E2h, 094h, 082h, 0 +cardGap db " ",0 +revealText db 13,10,"AI вскрывает карты...",13,10,0 +rank2 db "2",0 +rank3 db "3",0 +rank4 db "4",0 +rank5 db "5",0 +rank6 db "6",0 +rank7 db "7",0 +rank8 db "8",0 +rank9 db "9",0 +rank10 db "10",0 +rankJ db "J",0 +rankQ db "Q",0 +rankK db "K",0 +rankA db "A",0 + +suitSpades db 0E2h, 099h, 0A0h, 0 +suitHearts db 0E2h, 099h, 0A5h, 0 +suitClubs db 0E2h, 099h, 0A3h, 0 +suitDiamonds db 0E2h, 099h, 0A6h, 0 + +ranks dd OFFSET rank2, OFFSET rank3, OFFSET rank4, OFFSET rank5 + dd OFFSET rank6, OFFSET rank7, OFFSET rank8, OFFSET rank9 + dd OFFSET rank10, OFFSET rankJ, OFFSET rankQ, OFFSET rankK, OFFSET rankA +suits dd OFFSET suitSpades, OFFSET suitHearts, OFFSET suitClubs, OFFSET suitDiamonds +pokerNames dd OFFSET pokerHighName, OFFSET pokerPairName, OFFSET pokerTwoPairName + dd OFFSET pokerTripsName, OFFSET pokerStraightName, OFFSET pokerFlushName + dd OFFSET pokerFullHouseName, OFFSET pokerFourName, OFFSET pokerStraightFlushName + +slot0 db "CLV",0 +slot1 db "LEM",0 +slot2 db "CHR",0 +slot3 db "BEL",0 +slot4 db "DIA",0 +slot5 db "BOX",0 +slot6 db "777",0 +slotSymbols dd OFFSET slot0, OFFSET slot1, OFFSET slot2 + dd OFFSET slot3, OFFSET slot4, OFFSET slot5, OFFSET slot6 +slotSymbolValues dd 3, 2, 2, 3, 5, 5, 7 +classicSlot0 db "7",0 +classicSlot1 db "BAR",0 +classicSlot2 db "$",0 +classicSlot3 db "*",0 +classicSlot4 db "#",0 +classicSlot5 db "A",0 +classicSlotSymbols dd OFFSET classicSlot0, OFFSET classicSlot1, OFFSET classicSlot2 + dd OFFSET classicSlot3, OFFSET classicSlot4, OFFSET classicSlot5 +classicSlotPayTableText db "Классический слот 3x3. Выигрышная линия - средняя.",13,10 + db "777 x10, $$$ x7, BAR x5, AAA x4, *** / ### x3, пара x2.",13,10,0 +classicSlotJackpot db "Джекпот! Три одинаковых.",13,10,0 +classicSlotPair db "Пара на линии!",13,10,0 +classicSlotEmpty db "Не повезло.",13,10,0 +classicSlotBorder db '+-----+-----+-----+',13,10,0 +classicSlotPayline db '----- WIN LINE -----',13,10,0 +; === MCI-команды звуковых файлов === +cardSoundClose db 'close cardsound',0 +cardSoundOpen db 'open "assets\audio\playing_cards_deck_flick_through_001_20485.wav" type waveaudio alias cardsound',0 +cardSoundPlay db 'play cardsound from 0',0 +cardSoundStop db 'stop cardsound',0 +slotSoundClose db 'close slotsound',0 +slotSoundOpen db 'open "assets\audio\hKhoJArfEGAxxMewx0UQiddakTdBjFc.wav" type waveaudio alias slotsound',0 +slotSoundPlay db 'play slotsound from 0',0 +slotSoundStop db 'stop slotsound',0 +slotIntroClose db 'close slotintro',0 +slotIntroOpen db 'open "assets\audio\Летс гоу гэмблинг.wav" type waveaudio alias slotintro',0 +slotIntroPlay db 'play slotintro from 0',0 +slotIntroStop db 'stop slotintro',0 +jackpotClose db 'close jackpotsound',0 +jackpotOpen db 'open "assets\audio\Джэк пот.wav" type waveaudio alias jackpotsound',0 +jackpotPlay db 'play jackpotsound from 0',0 +jackpotStop db 'stop jackpotsound',0 +hakariSoundClose db 'close hakarisound',0 +hakariSoundOpen db 'open "assets\audio\hakari_dance.wav" type waveaudio alias hakarisound',0 +hakariSoundPlay db 'play hakarisound from 0',0 +hakariSoundStop db 'stop hakarisound',0 +coinSoundClose db 'close coinsound',0 +coinSoundOpen db 'open "assets\audio\Звук монеты брошенной в воздух и упавшей на поверхность.wav" type waveaudio alias coinsound',0 +coinSoundPlay db 'play coinsound from 0',0 +coinSoundStop db 'stop coinsound',0 +bankruptClose db 'close bankruptsound',0 +bankruptOpen db 'open "assets\audio\Проигрыш.wav" type waveaudio alias bankruptsound',0 +bankruptPlay db 'play bankruptsound from 0',0 +bankruptStop db 'stop bankruptsound',0 +victoryClose db 'close victorysound',0 +victoryOpen db 'open "assets\audio\victory-tf2.wav" type waveaudio alias victorysound',0 +victoryPlay db 'play victorysound from 0',0 +victoryStop db 'stop victorysound',0 +rrSpinClose db 'close rrspinsound',0 +rrSpinOpen db 'open "assets\audio\toy-gun-revolver-close-chamber-spin_f1ruc5nd.wav" type waveaudio alias rrspinsound',0 +rrSpinPlay db 'play rrspinsound from 0',0 +rrSpinStop db 'stop rrspinsound',0 +rrDryClose db 'close rrdrysound',0 +rrDryOpen db 'open "assets\audio\revolverdryfirec.wav" type waveaudio alias rrdrysound',0 +rrDryPlay db 'play rrdrysound from 0',0 +rrDryStop db 'stop rrdrysound',0 +rrShotClose db 'close rrshotsound',0 +rrShotOpen db 'open "assets\audio\b05e1ac8be34248.wav" type waveaudio alias rrshotsound',0 +rrShotPlay db 'play rrshotsound from 0',0 +rrShotStop db 'stop rrshotsound',0 +casinoRouletteSoundClose db 'close casinoroulettesound',0 +casinoRouletteSoundOpen db 'open "assets\audio\roulette-wheel-throw-2.wav" type waveaudio alias casinoroulettesound',0 +casinoRouletteSoundPlay db 'play casinoroulettesound from 0',0 +casinoRouletteSoundStop db 'stop casinoroulettesound',0 +stoneSoundClose db 'close stonesound',0 +stoneSoundOpen db 'open "assets\audio\moving-stone.wav" type waveaudio alias stonesound',0 +stoneSoundPlay db 'play stonesound from 0',0 +stoneSoundStop db 'stop stonesound',0 +towerMusicClose db 'close towermusic',0 +towerMusicStop db 'stop towermusic',0 +towerMusicPlay db 'play towermusic repeat',0 +towerMusicOpen1 db 'open "assets\music\tower\KEYGEN_CHURCH_-_Hareklavit_75543927.mp3" type mpegvideo alias towermusic',0 +towerMusicOpen2 db 'open "assets\music\tower\KEYGEN_CHURCH_-_Ladikerfos_75543991.mp3" type mpegvideo alias towermusic',0 +towerMusicOpen3 db 'open "assets\music\tower\Keygen_Church_-_Tenebre_Rosso_Sangue_ULTRAKILL_Original_Game_Soundtrack_79610890.mp3" type mpegvideo alias towermusic',0 +towerMusicOpen4 db 'open "assets\music\tower\KEYGEN_CHURCH_-_Tilaskarot_75546826.mp3" type mpegvideo alias towermusic',0 +slotBorder db '+-----+-----+-----+-----+-----+',13,10,0 +slotWall db '|',0 +slotWinLeft db '>',0 +slotWinRight db '<',0 +slotCellBlank db ' ',0 +slotPadTwo db ' ',0 +slotPadOne db ' ',0 +skullSeg1 db 020h, 020h, 020h, 020h, 0E2h, 096h, 084h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 084h, 020h, 020h, 020h, 020h, 020h, 020h, 0 +skullSeg2 db 020h, 020h, 0E2h, 096h, 084h, 0E2h, 096h, 088h, 0E2h, 096h, 080h, 020h, 0E2h, 096h, 084h, 0E2h, 096h, 084h, 020h, 0E2h, 096h, 080h, 0E2h, 096h, 088h, 0E2h, 096h, 084h, 020h, 020h, 020h, 020h, 0 +skullSeg3 db 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 020h, 0 +skullSeg4 db 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 0E2h, 096h, 080h, 020h, 020h, 0E2h, 096h, 080h, 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 020h, 0 +skullSeg5 db 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 0E2h, 096h, 084h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 084h, 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 020h, 0 +skullSeg6 db 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 0E2h, 096h, 080h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 080h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 020h, 020h, 0 +skullSeg7 db 020h, 020h, 020h, 0E2h, 096h, 080h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 080h, 020h, 020h, 020h, 020h, 020h, 0 +skullSeg8 db 020h, 020h, 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 020h, 020h, 020h, 020h, 0 +skullNums db " [1] [2] [3]",13,10,0 +skullBlankBall db 13,10,13,10,13,10,0 +skullBall1 db " .***.",13,10," (* O *)",13,10," `***'",13,10,0 +skullBall2 db " .***.",13,10," (* O *)",13,10," `***'",13,10,0 +skullBall3 db " .***.",13,10," (* O *)",13,10," `***'",13,10,0 +saveFileName db 64 dup(0) +saveFullPath db 260 dup(0) +saveDirPath db 260 dup(0) +accountPatternFull db 260 dup(0) +leaderSavePath db 260 dup(0) +appDataReady dd 0 +saveExt db '.dat',0 +accountPattern db "*.dat",0 +appDataEnvName db "APPDATA",0 +appDataSubDir db "\AssemblerCasino",0 +pathSlashText db "\",0 +runtimeDir db "runtime",0 +danceFileName db "assets\animations\hakari_dance.ans",0 +casinoIntroFile db "assets\animations\casino_intro.ans",0 +dbdHookFileName db "assets\animations\dbd_hook.ans",0 +dbdHookCmd db "cmd /c start ""DBD Hook"" tools\preview_dbd_hook.bat",0 +dbdHookStopFile db "runtime\dbd_hook.stop",0 +animProfileFile db "runtime\anim_profile.txt",0 +animProfileDigits db "012",0 +ansiExitIntro db 1Bh,"[0m",1Bh,"[?25h",1Bh,"[2J",1Bh,"[H",0 +accountList db 20 dup(64 dup(0)) +findData db 320 dup(0) + + +; --- Umamusume Pretty Derby Data --- +umaTitleText db 13,10,"=== UMAMUSUME PRETTY DERBY (СКАЧКИ) ===",13,10,0 +umaMenuText db "Выберите вашу девчонку-лошадку:",13,10 + db "1. Special Week (Специал Уик) - Коэф. x4 (Сбалансированная)",13,10 + db "2. Silence Suzuka (Сайленс Судзука) - Коэф. x3 (Резвый старт)",13,10 + db "3. Tokai Teio (Токай Тэйон) - Коэф. x5 (Финишный спурт)",13,10 + db "4. Gold Ship (Голд Шип) - Коэф. x8 (Непредсказуемая!)",13,10 + db "5. Mejiro McQueen (Мэдзиро Маккуин) - Коэф. x6 (Стайер)",13,10,0 +umaChoiceText db "Ваш выбор (1-5): ",0 +umaTrackHeader db 13,10,"--- ТРАССА ТРИУМФА ---",13,10,0 +umaFinishText db " |FINISH|",13,10,0 +umaHorse1Name db "1. Special Week : ",0 +umaHorse2Name db "2. Silence Suzuka : ",0 +umaHorse3Name db "3. Tokai Teio : ",0 +umaHorse4Name db "4. Gold Ship : ",0 +umaHorse5Name db "5. Mejiro McQueen : ",0 +umaWinAnnouncement db 13,10,"Победитель скачек: ",0 +umaYouWinText db " ПОБЕДА! Ваш выбор пришел первым! Вы выиграли $",0 +umaYouLoseText db " Увы, ваш выбор не занял 1-е место. Удача улыбнется в следующий раз!",13,10,0 +umaStepChar db "=",0 +umaHeadChar db ">",0 +umaHorseNames dd OFFSET umaHorse1Name, OFFSET umaHorse2Name, OFFSET umaHorse3Name, OFFSET umaHorse4Name, OFFSET umaHorse5Name +umaMultipliers dd 4, 3, 5, 8, 6 + +umaPos dd 5 dup(0) +umaChoice dd 0 +umaWinner dd 0 + +.code +; --- PrintStr: вывод текста, цветов, картинок и элементов интерфейса --- +PrintStr PROC uses eax ecx esi, pText:DWORD + mov esi, pText + xor ecx, ecx +count_loop: + cmp byte ptr [esi + ecx], 0 + je count_done + inc ecx + jmp count_loop +count_done: + cmp ecx, 0 + je print_done + mov printLen, ecx + invoke MultiByteToWideChar, 1251, 0, pText, printLen, ADDR wideBuffer, 4096 + cmp eax, 0 + je print_raw_fallback + mov wideLen, eax + invoke WriteConsoleW, hOut, ADDR wideBuffer, wideLen, ADDR charsWritten, 0 + cmp eax, 0 + jne print_done + invoke WideCharToMultiByte, 65001, 0, ADDR wideBuffer, wideLen, ADDR utf8Buffer, 8192, 0, 0 + cmp eax, 0 + je print_raw_fallback + invoke WriteFile, hOut, ADDR utf8Buffer, eax, ADDR charsWritten, 0 + jmp print_done +print_raw_fallback: + invoke WriteFile, hOut, pText, printLen, ADDR charsWritten, 0 +print_done: + ret +PrintStr ENDP + +; --- PrintUtf8: вывод текста, цветов, картинок и элементов интерфейса --- +PrintUtf8 PROC uses eax ecx esi, pText:DWORD + mov esi, pText + xor ecx, ecx +utf8_count_loop: + cmp byte ptr [esi + ecx], 0 + je utf8_count_done + inc ecx + jmp utf8_count_loop +utf8_count_done: + cmp ecx, 0 + je utf8_print_done + mov printLen, ecx + invoke MultiByteToWideChar, 65001, 0, pText, printLen, ADDR wideBuffer, 4096 + cmp eax, 0 + je utf8_raw_fallback + mov wideLen, eax + invoke WriteConsoleW, hOut, ADDR wideBuffer, wideLen, ADDR charsWritten, 0 + cmp eax, 0 + jne utf8_print_done + invoke WriteFile, hOut, pText, printLen, ADDR charsWritten, 0 + jmp utf8_print_done +utf8_raw_fallback: + invoke WriteFile, hOut, pText, printLen, ADDR charsWritten, 0 +utf8_print_done: + ret +PrintUtf8 ENDP + +; --- SetColor: вывод текста, цветов, картинок и элементов интерфейса --- +SetColor PROC attr:DWORD + invoke SetConsoleTextAttribute, hOut, attr + ret +SetColor ENDP + +; --- ResetColor: вывод текста, цветов, картинок и элементов интерфейса --- +ResetColor PROC + invoke SetConsoleTextAttribute, hOut, COLOR_DEFAULT + ret +ResetColor ENDP + +; --- EnableAnsi: вывод текста, цветов, картинок и элементов интерфейса --- +EnableAnsi PROC uses eax + invoke GetConsoleMode, hOut, ADDR consoleMode + cmp eax, 0 + je enable_ansi_done + or consoleMode, ENABLE_VIRTUAL_TERMINAL_PROCESSING + invoke SetConsoleMode, hOut, consoleMode +enable_ansi_done: + ret +EnableAnsi ENDP + +; --- SetSuitColor: карты, руки, очки и базовая карточная логика --- +SetSuitColor PROC suitIndex:DWORD + mov eax, suitIndex + cmp eax, 1 + je set_red_suit + cmp eax, 3 + je set_red_suit + invoke SetColor, COLOR_CARD + ret +set_red_suit: + invoke SetColor, COLOR_RED_CARD + ret +SetSuitColor ENDP + +; --- SetCardBackColor: карты, руки, очки и базовая карточная логика --- +SetCardBackColor PROC + mov eax, shopBackStyle + cmp eax, 1 + je card_back_blue + cmp eax, 2 + je card_back_red + cmp eax, 3 + je card_back_gold + cmp eax, 4 + je card_back_skull + cmp eax, 5 + je card_back_clover + cmp eax, 6 + je card_back_arcane + cmp eax, 7 + je card_back_noir + cmp eax, 8 + je card_back_diamond + cmp eax, 9 + je card_back_rider + cmp eax, 10 + je card_back_bee + cmp eax, 11 + je card_back_fan + cmp eax, 12 + je card_back_web + invoke SetColor, COLOR_BACK_CARD + ret +card_back_blue: + invoke SetColor, COLOR_TITLE + ret +card_back_red: + invoke SetColor, COLOR_BAD + ret +card_back_gold: + invoke SetColor, COLOR_WARN + ret +card_back_skull: + invoke SetColor, COLOR_BAD + ret +card_back_clover: + invoke SetColor, COLOR_MONEY + ret +card_back_arcane: + invoke SetColor, COLOR_TITLE + ret +card_back_noir: + invoke SetColor, COLOR_CARD + ret +card_back_diamond: + invoke SetColor, COLOR_TITLE + ret +card_back_rider: + invoke SetColor, COLOR_WARN + ret +card_back_bee: + invoke SetColor, COLOR_WARN + ret +card_back_fan: + invoke SetColor, COLOR_TITLE + ret +card_back_web: + invoke SetColor, COLOR_CARD + ret +SetCardBackColor ENDP +; --- PrintCardBackSegLine: вывод текста, цветов, картинок и элементов интерфейса --- +PrintCardBackSegLine PROC lineNo:DWORD + mov eax, shopBackStyle + cmp eax, 1 + je back_line_blue + cmp eax, 2 + je back_line_red + cmp eax, 3 + je back_line_gold + cmp eax, 4 + je back_line_skull + cmp eax, 5 + je back_line_clover + cmp eax, 6 + je back_line_arcane + cmp eax, 7 + je back_line_noir + cmp eax, 8 + je back_line_diamond + cmp eax, 9 + je back_line_rider + cmp eax, 10 + je back_line_bee + cmp eax, 11 + je back_line_fan + cmp eax, 12 + je back_line_web +back_line_gray: + mov eax, lineNo + cmp eax, 1 + je back_gray_1 + cmp eax, 2 + je back_gray_2 + cmp eax, 3 + je back_gray_3 + cmp eax, 4 + je back_gray_4 + invoke PrintUtf8, OFFSET backGray5 + ret +back_gray_1: + invoke PrintUtf8, OFFSET backGray1 + ret +back_gray_2: + invoke PrintUtf8, OFFSET backGray2 + ret +back_gray_3: + invoke PrintUtf8, OFFSET backGray3 + ret +back_gray_4: + invoke PrintUtf8, OFFSET backGray4 + ret +back_line_blue: + mov eax, lineNo + cmp eax, 1 + je back_blue_1 + cmp eax, 2 + je back_blue_2 + cmp eax, 3 + je back_blue_3 + cmp eax, 4 + je back_blue_4 + invoke PrintUtf8, OFFSET backBlue5 + ret +back_blue_1: + invoke PrintUtf8, OFFSET backBlue1 + ret +back_blue_2: + invoke PrintUtf8, OFFSET backBlue2 + ret +back_blue_3: + invoke PrintUtf8, OFFSET backBlue3 + ret +back_blue_4: + invoke PrintUtf8, OFFSET backBlue4 + ret +back_line_red: + mov eax, lineNo + cmp eax, 1 + je back_red_1 + cmp eax, 2 + je back_red_2 + cmp eax, 3 + je back_red_3 + cmp eax, 4 + je back_red_4 + invoke PrintUtf8, OFFSET backRed5 + ret +back_red_1: + invoke PrintUtf8, OFFSET backRed1 + ret +back_red_2: + invoke PrintUtf8, OFFSET backRed2 + ret +back_red_3: + invoke PrintUtf8, OFFSET backRed3 + ret +back_red_4: + invoke PrintUtf8, OFFSET backRed4 + ret +back_line_gold: + mov eax, lineNo + cmp eax, 1 + je back_gold_1 + cmp eax, 2 + je back_gold_2 + cmp eax, 3 + je back_gold_3 + cmp eax, 4 + je back_gold_4 + invoke PrintUtf8, OFFSET backGold5 + ret +back_gold_1: + invoke PrintUtf8, OFFSET backGold1 + ret +back_gold_2: + invoke PrintUtf8, OFFSET backGold2 + ret +back_gold_3: + invoke PrintUtf8, OFFSET backGold3 + ret +back_gold_4: + invoke PrintUtf8, OFFSET backGold4 + ret +back_line_skull: + mov eax, lineNo + cmp eax, 1 + je back_skull_1 + cmp eax, 2 + je back_skull_2 + cmp eax, 3 + je back_skull_3 + cmp eax, 4 + je back_skull_4 + invoke PrintUtf8, OFFSET backSkull5 + ret +back_skull_1: + invoke PrintUtf8, OFFSET backSkull1 + ret +back_skull_2: + invoke PrintUtf8, OFFSET backSkull2 + ret +back_skull_3: + invoke PrintUtf8, OFFSET backSkull3 + ret +back_skull_4: + invoke PrintUtf8, OFFSET backSkull4 + ret +back_line_clover: + mov eax, lineNo + cmp eax, 1 + je back_clover_1 + cmp eax, 2 + je back_clover_2 + cmp eax, 3 + je back_clover_3 + cmp eax, 4 + je back_clover_4 + invoke PrintUtf8, OFFSET backClover5 + ret +back_clover_1: + invoke PrintUtf8, OFFSET backClover1 + ret +back_clover_2: + invoke PrintUtf8, OFFSET backClover2 + ret +back_clover_3: + invoke PrintUtf8, OFFSET backClover3 + ret +back_clover_4: + invoke PrintUtf8, OFFSET backClover4 + ret +back_line_arcane: + mov eax, lineNo + cmp eax, 1 + je back_arcane_1 + cmp eax, 2 + je back_arcane_2 + cmp eax, 3 + je back_arcane_3 + cmp eax, 4 + je back_arcane_4 + invoke PrintUtf8, OFFSET backArcane5 + ret +back_arcane_1: + invoke PrintUtf8, OFFSET backArcane1 + ret +back_arcane_2: + invoke PrintUtf8, OFFSET backArcane2 + ret +back_arcane_3: + invoke PrintUtf8, OFFSET backArcane3 + ret +back_arcane_4: + invoke PrintUtf8, OFFSET backArcane4 + ret +back_line_noir: + mov eax, lineNo + cmp eax, 1 + je back_noir_1 + cmp eax, 2 + je back_noir_2 + cmp eax, 3 + je back_noir_3 + cmp eax, 4 + je back_noir_4 + invoke PrintUtf8, OFFSET backNoir5 + ret +back_noir_1: + invoke PrintUtf8, OFFSET backNoir1 + ret +back_noir_2: + invoke PrintUtf8, OFFSET backNoir2 + ret +back_noir_3: + invoke PrintUtf8, OFFSET backNoir3 + ret +back_noir_4: + invoke PrintUtf8, OFFSET backNoir4 + ret +back_line_diamond: + mov eax, lineNo + cmp eax, 1 + je back_diamond_1 + cmp eax, 2 + je back_diamond_2 + cmp eax, 3 + je back_diamond_3 + cmp eax, 4 + je back_diamond_4 + invoke PrintUtf8, OFFSET backDiamond5 + ret +back_diamond_1: + invoke PrintUtf8, OFFSET backDiamond1 + ret +back_diamond_2: + invoke PrintUtf8, OFFSET backDiamond2 + ret +back_diamond_3: + invoke PrintUtf8, OFFSET backDiamond3 + ret +back_diamond_4: + invoke PrintUtf8, OFFSET backDiamond4 + ret +back_line_rider: + mov eax, lineNo + cmp eax, 1 + je back_rider_1 + cmp eax, 2 + je back_rider_2 + cmp eax, 3 + je back_rider_3 + cmp eax, 4 + je back_rider_4 + invoke PrintUtf8, OFFSET backRider5 + ret +back_rider_1: + invoke PrintUtf8, OFFSET backRider1 + ret +back_rider_2: + invoke PrintUtf8, OFFSET backRider2 + ret +back_rider_3: + invoke PrintUtf8, OFFSET backRider3 + ret +back_rider_4: + invoke PrintUtf8, OFFSET backRider4 + ret +back_line_bee: + mov eax, lineNo + cmp eax, 1 + je back_bee_1 + cmp eax, 2 + je back_bee_2 + cmp eax, 3 + je back_bee_3 + cmp eax, 4 + je back_bee_4 + invoke PrintUtf8, OFFSET backBee5 + ret +back_bee_1: + invoke PrintUtf8, OFFSET backBee1 + ret +back_bee_2: + invoke PrintUtf8, OFFSET backBee2 + ret +back_bee_3: + invoke PrintUtf8, OFFSET backBee3 + ret +back_bee_4: + invoke PrintUtf8, OFFSET backBee4 + ret +back_line_fan: + mov eax, lineNo + cmp eax, 1 + je back_fan_1 + cmp eax, 2 + je back_fan_2 + cmp eax, 3 + je back_fan_3 + cmp eax, 4 + je back_fan_4 + invoke PrintUtf8, OFFSET backFan5 + ret +back_fan_1: + invoke PrintUtf8, OFFSET backFan1 + ret +back_fan_2: + invoke PrintUtf8, OFFSET backFan2 + ret +back_fan_3: + invoke PrintUtf8, OFFSET backFan3 + ret +back_fan_4: + invoke PrintUtf8, OFFSET backFan4 + ret +back_line_web: + mov eax, lineNo + cmp eax, 1 + je back_web_1 + cmp eax, 2 + je back_web_2 + cmp eax, 3 + je back_web_3 + cmp eax, 4 + je back_web_4 + invoke PrintUtf8, OFFSET backWeb5 + ret +back_web_1: + invoke PrintUtf8, OFFSET backWeb1 + ret +back_web_2: + invoke PrintUtf8, OFFSET backWeb2 + ret +back_web_3: + invoke PrintUtf8, OFFSET backWeb3 + ret +back_web_4: + invoke PrintUtf8, OFFSET backWeb4 + ret +PrintCardBackSegLine ENDP + +; --- PrintCardBackSeg: вывод текста, цветов, картинок и элементов интерфейса --- +PrintCardBackSeg PROC + invoke PrintCardBackSegLine, 3 + ret +PrintCardBackSeg ENDP + +; --- PrintSuit: вывод текста, цветов, картинок и элементов интерфейса --- +PrintSuit PROC uses eax, suitIndex:DWORD + invoke SetSuitColor, suitIndex + mov eax, suitIndex + invoke PrintUtf8, suits[eax * 4] + call ResetColor + ret +PrintSuit ENDP + +; --- PrintMoney: вывод текста, цветов, картинок и элементов интерфейса --- +PrintMoney PROC value:DWORD + invoke SetColor, COLOR_MONEY + invoke PrintUInt, value + call ResetColor + ret +PrintMoney ENDP + +; --- PrintTitleColor: вывод текста, цветов, картинок и элементов интерфейса --- +PrintTitleColor PROC pText:DWORD + invoke SetColor, COLOR_TITLE + invoke PrintStr, pText + call ResetColor + ret +PrintTitleColor ENDP + +; --- ColorPrint: вывод текста, цветов, картинок и элементов интерфейса --- +ColorPrint PROC pText:DWORD, attr:DWORD + invoke SetColor, attr + invoke PrintStr, pText + call ResetColor + ret +ColorPrint ENDP + +; --- PrintWinEvent: вывод текста, цветов, картинок и элементов интерфейса --- +PrintWinEvent PROC + invoke ColorPrint, OFFSET winText, COLOR_MONEY + ret +PrintWinEvent ENDP + +; --- PrintLoseEvent: вывод текста, цветов, картинок и элементов интерфейса --- +PrintLoseEvent PROC + invoke ColorPrint, OFFSET loseText, COLOR_BAD + ret +PrintLoseEvent ENDP + +; --- PrintDrawEvent: вывод текста, цветов, картинок и элементов интерфейса --- +PrintDrawEvent PROC + invoke ColorPrint, OFFSET drawText, COLOR_WARN + ret +PrintDrawEvent ENDP + +; --- PrintCroupierFromList: вывод текста, цветов, картинок и элементов интерфейса --- +PrintCroupierFromList PROC uses eax ebx, pList:DWORD + invoke RandomRange, 3 + shl eax, 2 + mov ebx, pList + add ebx, eax + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET croupierPrefix + invoke PrintStr, DWORD PTR [ebx] + call ResetColor + ret +PrintCroupierFromList ENDP + +; --- DealerProcessLine: служебный блок игровой логики --- +DealerProcessLine PROC uses eax edx + mov eax, dealerLineLen + cmp eax, 3 + jb dealer_process_done + mov al, byte ptr [frameBuffer] + cmp al, dealerWantedTag + jne dealer_process_done + cmp byte ptr [frameBuffer+1], '|' + jne dealer_process_done + cmp dealerScanMode, 0 + jne dealer_process_select + inc dealerPhraseCount + ret + +dealer_process_select: + mov eax, dealerPhraseCount + cmp eax, dealerPhrasePick + jne dealer_process_next + mov eax, OFFSET frameBuffer + add eax, dealerLineLen + mov byte ptr [eax], 0 + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET croupierPrefix + mov edx, OFFSET frameBuffer + add edx, 2 + invoke PrintStr, edx + invoke PrintStr, OFFSET nl + call ResetColor + mov dealerPhrasePick, 0FFFFFFFFh +dealer_process_next: + inc dealerPhraseCount +dealer_process_done: + ret +DealerProcessLine ENDP + +; --- DealerScanFile: служебный блок игровой логики --- +DealerScanFile PROC uses eax edx, mode:DWORD + mov eax, mode + mov dealerScanMode, eax + mov dealerLineLen, 0 + invoke CreateFileA, OFFSET dealerFileName, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + jne dealer_scan_opened + xor eax, eax + ret + +dealer_scan_opened: + mov dealerFileHandle, eax + +dealer_scan_loop: + invoke ReadFile, dealerFileHandle, ADDR inputBuffer, 1, ADDR charsRead, 0 + cmp charsRead, 0 + je dealer_scan_eof + mov al, byte ptr inputBuffer + cmp al, 13 + je dealer_scan_loop + cmp al, 10 + je dealer_scan_line_end + mov edx, dealerLineLen + cmp edx, 32760 + jae dealer_scan_loop + mov byte ptr [frameBuffer + edx], al + inc dealerLineLen + jmp dealer_scan_loop + +dealer_scan_line_end: + call DealerProcessLine + mov dealerLineLen, 0 + jmp dealer_scan_loop + +dealer_scan_eof: + cmp dealerLineLen, 0 + je dealer_scan_close + call DealerProcessLine + +dealer_scan_close: + invoke CloseHandle, dealerFileHandle + mov eax, 1 + ret +DealerScanFile ENDP + +; --- PrintCroupierFromFile: вывод текста, цветов, картинок и элементов интерфейса --- +PrintCroupierFromFile PROC uses eax, wanted:DWORD, pFallback:DWORD + mov eax, wanted + mov dealerWantedTag, al + mov dealerPhraseCount, 0 + invoke DealerScanFile, 0 + cmp eax, 0 + je croupier_file_fallback + cmp dealerPhraseCount, 0 + je croupier_file_fallback + invoke RandomRange, dealerPhraseCount + mov dealerPhrasePick, eax + mov dealerPhraseCount, 0 + invoke DealerScanFile, 1 + ret +croupier_file_fallback: + invoke PrintCroupierFromList, pFallback + ret +PrintCroupierFromFile ENDP + +; --- PrintCroupierWin: вывод текста, цветов, картинок и элементов интерфейса --- +PrintCroupierWin PROC + invoke PrintCroupierFromFile, 'W', OFFSET croupierWinList + ret +PrintCroupierWin ENDP + +; --- PrintCroupierLose: вывод текста, цветов, картинок и элементов интерфейса --- +PrintCroupierLose PROC + invoke PrintCroupierFromFile, 'L', OFFSET croupierLoseList + ret +PrintCroupierLose ENDP + +; --- PrintCroupierDraw: вывод текста, цветов, картинок и элементов интерфейса --- +PrintCroupierDraw PROC + invoke PrintCroupierFromFile, 'D', OFFSET croupierDrawList + ret +PrintCroupierDraw ENDP + +; --- FlushFrame: звук, интро или покадровая анимация --- +FlushFrame PROC uses eax ebx ecx edx esi edi + LOCAL csbi[22]:BYTE + LOCAL X_start:DWORD + LOCAL Y_start:DWORD + LOCAL nextLinePtr:DWORD + LOCAL currentLineIndex:DWORD + + cmp frameBytes, 0 + je flush_frame_done + + mov eax, OFFSET frameBuffer + add eax, frameBytes + mov byte ptr [eax], 0 + + cmp animWidth, 0 + je print_default + cmp animHeight, 0 + je print_default + + call ClearView + + lea eax, csbi + invoke GetConsoleScreenBufferInfo, hOut, eax + cmp eax, 0 + je print_default + + movzx ecx, word ptr csbi[14] + movzx esi, word ptr csbi[10] + sub ecx, esi + inc ecx + + movzx edx, word ptr csbi[16] + movzx esi, word ptr csbi[12] + sub edx, esi + inc edx + + mov eax, ecx + cmp eax, animWidth + jbe set_x_left + sub eax, animWidth + shr eax, 1 + add ax, word ptr csbi[10] + movzx eax, ax + mov X_start, eax + jmp x_calculated +set_x_left: + movzx eax, word ptr csbi[10] + mov X_start, eax +x_calculated: + + mov eax, edx + cmp eax, animHeight + jbe set_y_top + sub eax, animHeight + shr eax, 1 + add ax, word ptr csbi[12] + movzx eax, ax + mov Y_start, eax + jmp y_calculated +set_y_top: + movzx eax, word ptr csbi[12] + mov Y_start, eax +y_calculated: + + mov esi, OFFSET frameBuffer +skip_lead_loop: + cmp byte ptr [esi], 1Bh + jne check_lead_newline + cmp byte ptr [esi+1], '[' + jne check_lead_newline + + cmp byte ptr [esi+2], '2' + jne check_lead_H + cmp byte ptr [esi+3], 'J' + jne check_lead_newline + add esi, 4 + jmp skip_lead_loop + +check_lead_H: + cmp byte ptr [esi+2], 'H' + jne check_lead_hide + add esi, 3 + jmp skip_lead_loop + +check_lead_hide: + cmp byte ptr [esi+2], '?' + jne check_lead_newline + cmp byte ptr [esi+3], '2' + jne check_lead_newline + cmp byte ptr [esi+4], '5' + jne check_lead_newline + cmp byte ptr [esi+5], 'l' + jne check_lead_show + add esi, 6 + jmp skip_lead_loop + +check_lead_show: + cmp byte ptr [esi+5], 'h' + jne check_lead_newline + add esi, 6 + jmp skip_lead_loop + +check_lead_newline: + mov al, [esi] + cmp al, 0Dh + je skip_lead_nl_char + cmp al, 0Ah + je skip_lead_nl_char + jmp done_lead_skipping +skip_lead_nl_char: + inc esi + jmp skip_lead_loop +done_lead_skipping: + + mov currentLineIndex, 0 +line_parse_loop: + cmp byte ptr [esi], 0 + je print_done + + mov edi, esi +find_line_end: + mov al, [edi] + cmp al, 0 + je line_end_found + cmp al, 0Dh + je line_end_found + cmp al, 0Ah + je line_end_found + inc edi + jmp find_line_end +line_end_found: + mov dl, [edi] + mov byte ptr [edi], 0 + + mov ebx, edi + cmp dl, 0 + je next_line_ptr_done + inc ebx + mov al, [ebx] + cmp al, 0Dh + je skip_nl_chars + cmp al, 0Ah + je skip_nl_chars + jmp next_line_ptr_done +skip_nl_chars: + inc ebx + mov al, [ebx] + cmp al, 0Dh + je skip_nl_chars + cmp al, 0Ah + je skip_nl_chars +next_line_ptr_done: + mov nextLinePtr, ebx + + mov eax, currentLineIndex + add eax, Y_start + + movzx edx, word ptr csbi[16] + cmp eax, edx + jg skip_this_line + + invoke MoveCursor, X_start, eax + invoke PrintUtf8, esi + +skip_this_line: + mov esi, nextLinePtr + inc currentLineIndex + jmp line_parse_loop + +print_default: + invoke PrintUtf8, OFFSET frameBuffer + +print_done: + mov frameBytes, 0 +flush_frame_done: + ret +FlushFrame ENDP + +; --- PlayHakariDance: звук, интро или покадровая анимация --- +PlayHakariDance PROC uses eax ebx ecx edx esi edi + mov animWidth, 118 + mov animHeight, 43 + invoke CreateFileA, OFFSET danceFileName, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + jne hakari_file_ok + invoke mciSendStringA, OFFSET hakariSoundStop, 0, 0, 0 + mov animWidth, 0 + mov animHeight, 0 + ret +hakari_file_ok: + mov danceHandle, eax + mov frameBytes, 0 + mov animFrameCounter, 0 + +hakari_read_loop: + invoke ReadFile, danceHandle, ADDR inputBuffer, 1, ADDR danceBytes, 0 + cmp danceBytes, 0 + je hakari_finish + mov al, byte ptr inputBuffer + cmp al, 0Ch + je hakari_show_frame + mov edx, frameBytes + cmp edx, 32760 + jae hakari_show_frame_keep_char + mov [frameBuffer + edx], al + inc frameBytes + jmp hakari_read_loop + +hakari_show_frame_keep_char: + call ClearView + call FlushFrame + invoke AnimFrameDelay, 12 + invoke Sleep, eax + mov al, byte ptr inputBuffer + mov [frameBuffer], al + mov frameBytes, 1 + jmp hakari_read_loop + +hakari_show_frame: + call AnimShouldDrawFrame + cmp eax, 1 + jne hakari_skip_frame + call ClearView + call FlushFrame + invoke AnimFrameDelay, 12 + invoke Sleep, eax + jmp hakari_read_loop +hakari_skip_frame: + mov frameBytes, 0 + jmp hakari_read_loop + +hakari_finish: + call ClearView + call FlushFrame + invoke CloseHandle, danceHandle + invoke mciSendStringA, OFFSET hakariSoundStop, 0, 0, 0 + invoke Sleep, 40 + call ClearView + mov animWidth, 0 + mov animHeight, 0 + ret +PlayHakariDance ENDP + +; --- WriteAnimProfileFile: shares animation profile with helper windows --- +WriteAnimProfileFile PROC uses eax ebx edx + invoke CreateFileA, OFFSET animProfileFile, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + je write_anim_profile_done + mov ebx, eax + mov edx, settingsLowSpec + cmp edx, 2 + jbe write_anim_profile_value_ok + xor edx, edx +write_anim_profile_value_ok: + mov al, byte ptr [animProfileDigits + edx] + mov byte ptr [inputBuffer], al + invoke WriteFile, ebx, ADDR inputBuffer, 1, ADDR charsWritten, 0 + invoke CloseHandle, ebx +write_anim_profile_done: + ret +WriteAnimProfileFile ENDP +; --- PlayDbDHookScene: покадровая анимация крюка из Dead by Daylight --- +PlayDbDHookScene PROC uses eax + cmp settingsDbdWindowEnabled, 1 + jne play_dbd_done + invoke WinExec, OFFSET dbdHookCmd, 1 +play_dbd_done: + ret +PlayDbDHookScene ENDP + +; --- StopDbDHookScene: закрывает отдельное окно DBD-анимации через файл-сигнал --- +StopDbDHookScene PROC uses eax + invoke CreateFileA, OFFSET dbdHookStopFile, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + je stop_dbd_done + invoke CloseHandle, eax +stop_dbd_done: + ret +StopDbDHookScene ENDP + +; --- IntroMaybeLoopMarker: звук, интро или покадровая анимация --- +IntroMaybeLoopMarker PROC + cmp frameBytes, 10 + jne intro_marker_no + cmp byte ptr [frameBuffer], '@' + jne intro_marker_no + cmp byte ptr [frameBuffer+1], '@' + jne intro_marker_no + cmp byte ptr [frameBuffer+2], 'L' + jne intro_marker_no + cmp byte ptr [frameBuffer+3], 'O' + jne intro_marker_no + cmp byte ptr [frameBuffer+4], 'O' + jne intro_marker_no + cmp byte ptr [frameBuffer+5], 'P' + jne intro_marker_no + cmp byte ptr [frameBuffer+6], '@' + jne intro_marker_no + cmp byte ptr [frameBuffer+7], '@' + jne intro_marker_no + mov introLoopSeen, 1 + mov introSkipLoop, 0 + mov frameBytes, 0 + mov eax, 1 + ret +intro_marker_no: + xor eax, eax + ret +IntroMaybeLoopMarker ENDP + +; --- IntroHandleFrameEnd: звук, интро или покадровая анимация --- +IntroHandleFrameEnd PROC + call IntroMaybeLoopMarker + cmp eax, 1 + je intro_handle_done + cmp introSkipLoop, 1 + je intro_discard_frame + call AnimShouldDrawFrame + cmp eax, 1 + jne intro_discard_frame + call FlushFrame + invoke AnimFrameDelay, 45 + invoke Sleep, eax + ret +intro_discard_frame: + mov frameBytes, 0 +intro_handle_done: + ret +IntroHandleFrameEnd ENDP + +; --- PlayCasinoIntro: звук, интро или покадровая анимация --- +PlayCasinoIntro PROC uses eax ebx ecx edx esi edi + cmp settingsIntroEnabled, 1 + jne intro_disabled + mov introLoopSeen, 0 + mov introSkipLoop, 0 + mov animFrameCounter, 0 + mov animWidth, 64 + mov animHeight, 21 +intro_restart_file: + invoke CreateFileA, OFFSET casinoIntroFile, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + jne intro_file_ok + mov animWidth, 0 + mov animHeight, 0 + ret +intro_file_ok: + mov danceHandle, eax + mov frameBytes, 0 + +intro_read_loop: + invoke GetAsyncKeyState, VK_RETURN + test ax, 8000h + jnz intro_exit + invoke ReadFile, danceHandle, ADDR inputBuffer, 1, ADDR danceBytes, 0 + cmp danceBytes, 0 + je intro_restart_cycle + mov al, byte ptr inputBuffer + cmp al, 0Ch + je intro_show_frame + mov edx, frameBytes + cmp edx, 32760 + jae intro_show_frame_keep_char + mov [frameBuffer + edx], al + inc frameBytes + jmp intro_read_loop + +intro_show_frame_keep_char: + call IntroHandleFrameEnd + mov al, byte ptr inputBuffer + mov [frameBuffer], al + mov frameBytes, 1 + jmp intro_read_loop + +intro_show_frame: + call IntroHandleFrameEnd + jmp intro_read_loop + +intro_restart_cycle: + call FlushFrame + invoke CloseHandle, danceHandle + cmp introLoopSeen, 1 + jne intro_restart_file + mov introSkipLoop, 1 + jmp intro_restart_file + +intro_exit: + invoke CloseHandle, danceHandle + invoke PrintUtf8, OFFSET ansiExitIntro + invoke Sleep, 180 +intro_disabled: + mov animWidth, 0 + mov animHeight, 0 + ret +PlayCasinoIntro ENDP +; --- InitSounds: служебный блок игровой логики --- +InitSounds PROC uses eax ecx edx + invoke mciSendStringA, OFFSET cardSoundClose, 0, 0, 0 + invoke mciSendStringA, OFFSET cardSoundOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET slotSoundClose, 0, 0, 0 + invoke mciSendStringA, OFFSET slotSoundOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET slotIntroClose, 0, 0, 0 + invoke mciSendStringA, OFFSET slotIntroOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET jackpotClose, 0, 0, 0 + invoke mciSendStringA, OFFSET jackpotOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET hakariSoundClose, 0, 0, 0 + invoke mciSendStringA, OFFSET hakariSoundOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET coinSoundClose, 0, 0, 0 + invoke mciSendStringA, OFFSET coinSoundOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET bankruptClose, 0, 0, 0 + invoke mciSendStringA, OFFSET bankruptOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET victoryClose, 0, 0, 0 + invoke mciSendStringA, OFFSET victoryOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET rrSpinClose, 0, 0, 0 + invoke mciSendStringA, OFFSET rrSpinOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET rrDryClose, 0, 0, 0 + invoke mciSendStringA, OFFSET rrDryOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET rrShotClose, 0, 0, 0 + invoke mciSendStringA, OFFSET rrShotOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET casinoRouletteSoundClose, 0, 0, 0 + invoke mciSendStringA, OFFSET casinoRouletteSoundOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET stoneSoundClose, 0, 0, 0 + invoke mciSendStringA, OFFSET stoneSoundOpen, 0, 0, 0 + ret +InitSounds ENDP + +; --- PlayCardSound: звук, интро или покадровая анимация --- +PlayCardSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET cardSoundStop, 0, 0, 0 + invoke mciSendStringA, OFFSET cardSoundPlay, 0, 0, 0 + invoke Sleep, 90 + ret +PlayCardSound ENDP + +; --- PlaySlotSound: звук, интро или покадровая анимация --- +PlaySlotSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET slotSoundStop, 0, 0, 0 + invoke mciSendStringA, OFFSET slotSoundPlay, 0, 0, 0 + ret +PlaySlotSound ENDP + +; --- PlaySlotIntroSound: звук, интро или покадровая анимация --- +PlaySlotIntroSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET slotIntroStop, 0, 0, 0 + invoke mciSendStringA, OFFSET slotIntroPlay, 0, 0, 0 + ret +PlaySlotIntroSound ENDP + +; --- PlayJackpotSound: звук, интро или покадровая анимация --- +PlayJackpotSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET jackpotStop, 0, 0, 0 + invoke mciSendStringA, OFFSET jackpotPlay, 0, 0, 0 + ret +PlayJackpotSound ENDP + +; --- PlayHakariSound: звук, интро или покадровая анимация --- +PlayHakariSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET hakariSoundStop, 0, 0, 0 + invoke mciSendStringA, OFFSET hakariSoundPlay, 0, 0, 0 + ret +PlayHakariSound ENDP + +; --- PlayCoinSound: звук, интро или покадровая анимация --- +PlayCoinSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET coinSoundStop, 0, 0, 0 + invoke mciSendStringA, OFFSET coinSoundPlay, 0, 0, 0 + ret +PlayCoinSound ENDP + +; --- PlayBankruptSound: звук, интро или покадровая анимация --- +PlayBankruptSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET bankruptStop, 0, 0, 0 + invoke mciSendStringA, OFFSET bankruptPlay, 0, 0, 0 + ret +PlayBankruptSound ENDP + +; --- PlayVictorySound: звук, интро или покадровая анимация --- +PlayVictorySound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET victoryStop, 0, 0, 0 + invoke mciSendStringA, OFFSET victoryPlay, 0, 0, 0 + ret +PlayVictorySound ENDP + +; --- PlayCasinoRouletteSound: звук, интро или покадровая анимация --- +PlayCasinoRouletteSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET casinoRouletteSoundStop, 0, 0, 0 + invoke mciSendStringA, OFFSET casinoRouletteSoundPlay, 0, 0, 0 + ret +PlayCasinoRouletteSound ENDP +; --- PlayRouletteSpinSound: звук, интро или покадровая анимация --- +PlayRouletteSpinSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET rrSpinStop, 0, 0, 0 + invoke mciSendStringA, OFFSET rrSpinPlay, 0, 0, 0 + ret +PlayRouletteSpinSound ENDP + +; --- PlayRouletteDrySound: звук, интро или покадровая анимация --- +PlayRouletteDrySound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET rrDryStop, 0, 0, 0 + invoke mciSendStringA, OFFSET rrDryPlay, 0, 0, 0 + ret +PlayRouletteDrySound ENDP + +; --- PlayRouletteShotSound: звук, интро или покадровая анимация --- +PlayRouletteShotSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET rrShotStop, 0, 0, 0 + invoke mciSendStringA, OFFSET rrShotPlay, 0, 0, 0 + ret +PlayRouletteShotSound ENDP + +; --- PlayStoneSound: звук, интро или покадровая анимация --- +PlayStoneSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET stoneSoundStop, 0, 0, 0 + invoke mciSendStringA, OFFSET stoneSoundPlay, 0, 0, 0 + ret +PlayStoneSound ENDP + +; --- StopTowerMusic: музыка турнир-башни --- +StopTowerMusic PROC + invoke mciSendStringA, OFFSET towerMusicStop, 0, 0, 0 + invoke mciSendStringA, OFFSET towerMusicClose, 0, 0, 0 + ret +StopTowerMusic ENDP + +; --- PlayTowerRandomMusic: случайная музыка турнир-башни --- +PlayTowerRandomMusic PROC uses eax + call StopTowerMusic + invoke RandomRange, 4 + cmp eax, 0 + je tower_music_1 + cmp eax, 1 + je tower_music_2 + cmp eax, 2 + je tower_music_3 +tower_music_4: + invoke mciSendStringA, OFFSET towerMusicOpen4, 0, 0, 0 + jmp tower_music_play +tower_music_1: + invoke mciSendStringA, OFFSET towerMusicOpen1, 0, 0, 0 + jmp tower_music_play +tower_music_2: + invoke mciSendStringA, OFFSET towerMusicOpen2, 0, 0, 0 + jmp tower_music_play +tower_music_3: + invoke mciSendStringA, OFFSET towerMusicOpen3, 0, 0, 0 +tower_music_play: + invoke mciSendStringA, OFFSET towerMusicPlay, 0, 0, 0 + ret +PlayTowerRandomMusic ENDP + +; --- PrintSlotCell: вывод текста, цветов, картинок и элементов интерфейса --- +PrintSlotCell PROC uses eax ebx ecx, value:DWORD + invoke PrintStr, OFFSET slotWall + mov eax, slotCurrentCell + mov ebx, 1 + mov ecx, eax + shl ebx, cl + mov eax, slotWinMask + test eax, ebx + je slot_cell_normal + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET slotWinLeft + invoke PrintSlotSymbol, value + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET slotWinRight + call ResetColor + ret +slot_cell_normal: + invoke PrintStr, OFFSET slotPadOne + invoke PrintSlotSymbol, value + invoke PrintStr, OFFSET slotPadOne + ret +PrintSlotCell ENDP +; --- PrintSlotBlankCell: вывод текста, цветов, картинок и элементов интерфейса --- +PrintSlotBlankCell PROC + invoke PrintStr, OFFSET slotWall + invoke PrintStr, OFFSET slotCellBlank + ret +PrintSlotBlankCell ENDP + +; --- PrintSlotPaddingRow: вывод текста, цветов, картинок и элементов интерфейса --- +PrintSlotPaddingRow PROC + call PrintSlotBlankCell + call PrintSlotBlankCell + call PrintSlotBlankCell + call PrintSlotBlankCell + call PrintSlotBlankCell + invoke PrintStr, OFFSET slotWall + invoke PrintStr, OFFSET nl + ret +PrintSlotPaddingRow ENDP +; --- PrintSlotWindow: вывод текста, цветов, картинок и элементов интерфейса --- +PrintSlotWindow PROC uses eax ebx + call ClearView + invoke PrintTitleColor, OFFSET slotTitle + invoke PrintStr, OFFSET slotBorder + + mov rowIndex, 0 +slot_window_row_loop: + cmp rowIndex, 3 + jae slot_window_done + call PrintSlotPaddingRow + mov ebx, rowIndex + imul ebx, 5 + + cmp slotVisible, 1 + jb slot_blank_col1 + mov slotCurrentCell, ebx + invoke PrintSlotCell, slotGrid[ebx * 4] + jmp slot_col2 +slot_blank_col1: + call PrintSlotBlankCell + +slot_col2: + cmp slotVisible, 2 + jb slot_blank_col2 + mov eax, ebx + inc eax + mov slotCurrentCell, eax + invoke PrintSlotCell, slotGrid[eax * 4] + jmp slot_col3 +slot_blank_col2: + call PrintSlotBlankCell + +slot_col3: + cmp slotVisible, 3 + jb slot_blank_col3 + mov eax, ebx + add eax, 2 + mov slotCurrentCell, eax + invoke PrintSlotCell, slotGrid[eax * 4] + jmp slot_col4 +slot_blank_col3: + call PrintSlotBlankCell + +slot_col4: + cmp slotVisible, 4 + jb slot_blank_col4 + mov eax, ebx + add eax, 3 + mov slotCurrentCell, eax + invoke PrintSlotCell, slotGrid[eax * 4] + jmp slot_col5 +slot_blank_col4: + call PrintSlotBlankCell + +slot_col5: + cmp slotVisible, 5 + jb slot_blank_col5 + mov eax, ebx + add eax, 4 + mov slotCurrentCell, eax + invoke PrintSlotCell, slotGrid[eax * 4] + jmp slot_row_end +slot_blank_col5: + call PrintSlotBlankCell + +slot_row_end: + invoke PrintStr, OFFSET slotWall + invoke PrintStr, OFFSET nl + call PrintSlotPaddingRow + invoke PrintStr, OFFSET slotBorder + inc rowIndex + jmp slot_window_row_loop + +slot_window_done: + ret +PrintSlotWindow ENDP + +; --- FillSlotColumn: слот-машины, барабаны, символы, выплаты и джекпоты --- +FillSlotColumn PROC uses eax ebx, column:DWORD + mov ebx, column + invoke RandomRange, 7 + mov slotGrid[ebx * 4], eax + mov ebx, column + add ebx, 5 + invoke RandomRange, 7 + mov slotGrid[ebx * 4], eax + mov ebx, column + add ebx, 10 + invoke RandomRange, 7 + mov slotGrid[ebx * 4], eax + ret +FillSlotColumn ENDP +; --- PrintUInt: вывод текста, цветов, картинок и элементов интерфейса --- +PrintUInt PROC uses eax ebx ecx edx edi, value:DWORD + LOCAL buffer[12]:BYTE + + lea edi, buffer[11] + mov byte ptr [edi], 0 + mov eax, value + cmp eax, 0 + jne convert_loop_start + dec edi + mov byte ptr [edi], '0' + invoke PrintStr, edi + ret + +convert_loop_start: + mov ebx, 10 +convert_loop: + xor edx, edx + div ebx + add dl, '0' + dec edi + mov byte ptr [edi], dl + cmp eax, 0 + jne convert_loop + invoke PrintStr, edi + ret +PrintUInt ENDP + +; --- ReadKey: ввод пользователя и разбор введенных данных --- +ReadKey PROC uses ebx +read_key_again: + invoke ReadFile, hIn, ADDR inputBuffer, 1, ADDR charsRead, 0 + cmp charsRead, 0 + je read_key_empty + movzx eax, byte ptr inputBuffer + cmp al, 13 + je read_key_again + cmp al, 10 + je read_key_again + mov ebx, eax +read_key_drain: + invoke ReadFile, hIn, ADDR inputBuffer, 1, ADDR charsRead, 0 + cmp charsRead, 0 + je read_key_return + movzx eax, byte ptr inputBuffer + cmp al, 10 + jne read_key_drain +read_key_return: + mov eax, ebx + ret +read_key_empty: + xor eax, eax + ret +ReadKey ENDP + +; --- ReadAnyKey: ввод пользователя и разбор введенных данных --- +ReadAnyKey PROC +read_any_again: + invoke ReadFile, hIn, ADDR inputBuffer, 1, ADDR charsRead, 0 + cmp charsRead, 0 + je read_any_empty + movzx eax, byte ptr inputBuffer + ret +read_any_empty: + xor eax, eax + ret +ReadAnyKey ENDP + +; --- ReadUInt: ввод числа одной строкой, без зависания на CR/LF --- +ReadUInt PROC uses ebx ecx edx esi edi + xor ebx, ebx ; parsed number + xor edi, edi ; digit count + invoke ReadFile, hIn, ADDR inputBuffer, 31, ADDR charsRead, 0 + cmp charsRead, 0 + je read_uint_zero + + mov esi, OFFSET inputBuffer + mov ecx, charsRead +read_uint_parse_loop: + cmp ecx, 0 + je read_uint_end + movzx eax, byte ptr [esi] + inc esi + dec ecx + cmp al, 13 + je read_uint_end + cmp al, 10 + je read_uint_end + cmp al, ' ' + je read_uint_parse_loop + cmp al, 9 + je read_uint_parse_loop + cmp al, '0' + jb read_uint_bad + cmp al, '9' + ja read_uint_bad + + sub al, '0' + movzx edx, al + mov eax, ebx + imul eax, eax, 10 + add eax, edx + mov ebx, eax + inc edi + jmp read_uint_parse_loop + +read_uint_end: + cmp edi, 0 + je read_uint_zero + mov eax, ebx + ret + +read_uint_bad: + xor eax, eax + ret + +read_uint_zero: + xor eax, eax + ret +ReadUInt ENDP + +; --- StrEqual: ввод пользователя и разбор введенных данных --- +StrEqual PROC uses esi edi ebx, pLeft:DWORD, pRight:DWORD + mov esi, pLeft + mov edi, pRight +str_equal_loop: + mov al, [esi] + mov bl, [edi] + cmp al, bl + jne str_not_equal + cmp al, 0 + je str_is_equal + inc esi + inc edi + jmp str_equal_loop +str_is_equal: + mov eax, 1 + ret +str_not_equal: + xor eax, eax + ret +StrEqual ENDP + +; --- PrintCheatApplied: вывод текста, цветов, картинок и элементов интерфейса --- +PrintCheatApplied PROC pText:DWORD + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET cheatAppliedText + invoke PrintStr, pText + call ResetColor + ret +PrintCheatApplied ENDP + +; --- ApplyCheatCode: банк, ставки, стресс, подозрение и экономика казино --- +ApplyCheatCode PROC pCode:DWORD + invoke StrEqual, pCode, OFFSET cheatCodeMoney + cmp eax, 1 + je cheat_money + invoke StrEqual, pCode, OFFSET cheatCodeSeven + cmp eax, 1 + je cheat_sevens + invoke StrEqual, pCode, OFFSET cheatCodeWin + cmp eax, 1 + je cheat_win_next + invoke StrEqual, pCode, OFFSET cheatCodeGod + cmp eax, 1 + je cheat_god + invoke StrEqual, pCode, OFFSET cheatCodeFair + cmp eax, 1 + je cheat_fair + invoke StrEqual, pCode, OFFSET cheatCodeGoal + cmp eax, 1 + je cheat_goal + invoke StrEqual, pCode, OFFSET cheatCodeReset + cmp eax, 1 + je cheat_reset + invoke StrEqual, pCode, OFFSET cheatCodeEasy + cmp eax, 1 + je cheat_easy + invoke StrEqual, pCode, OFFSET cheatCodeNormal + cmp eax, 1 + je cheat_normal + invoke StrEqual, pCode, OFFSET cheatCodeHard + cmp eax, 1 + je cheat_hard + invoke StrEqual, pCode, OFFSET cheatCodeJackpot + cmp eax, 1 + je cheat_jackpot + invoke StrEqual, pCode, OFFSET cheatCodeRich + cmp eax, 1 + je cheat_rich + invoke StrEqual, pCode, OFFSET cheatCodeDouble + cmp eax, 1 + je cheat_double + invoke StrEqual, pCode, OFFSET cheatCodePoor + cmp eax, 1 + je cheat_poor + invoke StrEqual, pCode, OFFSET cheatCodeShop + cmp eax, 1 + je cheat_shop + invoke StrEqual, pCode, OFFSET cheatCodeBacks + cmp eax, 1 + je cheat_backs + invoke StrEqual, pCode, OFFSET cheatCodeCharm + cmp eax, 1 + je cheat_max_charm + invoke StrEqual, pCode, OFFSET cheatCodeNoCharm + cmp eax, 1 + je cheat_no_charm + invoke StrEqual, pCode, OFFSET cheatCodeAch + cmp eax, 1 + je cheat_ach + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET cheatBadText + call ResetColor + xor eax, eax + ret + +cheat_money: + add bankroll, 50000 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatMoneyText + call PrintBank + call CheckVictory + mov eax, 1 + ret +cheat_sevens: + add bankroll, 7777 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatSevenText + call PrintBank + call CheckVictory + mov eax, 1 + ret +cheat_win_next: + mov cheatLuckyWin, 1 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatWinText + mov eax, 1 + ret +cheat_god: + mov cheatGodMode, 1 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatGodText + mov eax, 1 + ret +cheat_fair: + mov cheatLuckyWin, 0 + mov cheatGodMode, 0 + mov casinoSuspicion, 0 + call SaveGame + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET cheatAppliedText + invoke PrintStr, OFFSET cheatFairText + call ResetColor + mov eax, 1 + ret +cheat_goal: + mov eax, targetBank + mov bankroll, eax + call SaveGame + invoke PrintCheatApplied, OFFSET cheatGoalText + call PrintBank + call CheckVictory + mov eax, 1 + ret +cheat_reset: + mov bankroll, 10000 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatResetText + call PrintBank + mov eax, 1 + ret +cheat_easy: + mov aiDifficulty, 1 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatEasyText + mov eax, 1 + ret +cheat_normal: + mov aiDifficulty, 2 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatNormalText + mov eax, 1 + ret +cheat_hard: + mov aiDifficulty, 3 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatHardText + mov eax, 1 + ret +cheat_jackpot: + mov cheatSlotJackpot, 1 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatJackpotText + mov eax, 1 + ret +cheat_rich: + add bankroll, 250000 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatRichText + call PrintBank + call CheckVictory + mov eax, 1 + ret +cheat_double: + mov eax, bankroll + add bankroll, eax + call SaveGame + invoke PrintCheatApplied, OFFSET cheatDoubleText + call PrintBank + call CheckVictory + mov eax, 1 + ret +cheat_poor: + mov bankroll, 1 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatPoorText + call PrintBank + mov eax, 1 + ret +cheat_shop: + add bankroll, 30000 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatShopText + call PrintBank + call CheckVictory + mov eax, 1 + ret +cheat_backs: + mov shopBackOwned, 1FFFh + call SaveGame + invoke PrintCheatApplied, OFFSET cheatBacksText + mov eax, 1 + ret +cheat_max_charm: + mov shopCharmLevel, 5 + mov shopCharmUses, 1 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatCharmText + mov eax, 1 + ret +cheat_no_charm: + mov shopCharmLevel, 0 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatNoCharmText + mov eax, 1 + ret +cheat_ach: + mov achievements, 7FFFFh + call SaveGame + invoke PrintCheatApplied, OFFSET cheatAchText + mov eax, 1 + ret +ApplyCheatCode ENDP + +; --- ReadBetInput: ввод пользователя и разбор введенных данных --- +ReadBetInput PROC uses ebx ecx edx esi edi + mov ecx, 32 + mov edi, OFFSET cheatBuffer + xor eax, eax + rep stosb + + xor ebx, ebx ; parsed numeric bet + xor esi, esi ; stored input length + xor edi, edi ; 0 = number, 1 = cheat/code +read_bet_loop: + invoke ReadFile, hIn, ADDR inputBuffer, 1, ADDR charsRead, 0 + cmp charsRead, 0 + je read_bet_finish + movzx eax, byte ptr inputBuffer + cmp al, 13 + je read_bet_drain_lf + cmp al, 10 + je read_bet_finish + cmp al, ' ' + je read_bet_loop + cmp al, 9 + je read_bet_loop + + cmp al, 'a' + jb read_bet_store + cmp al, 'z' + ja read_bet_store + sub al, 20h + +read_bet_store: + cmp esi, 31 + jae read_bet_after_store + mov cheatBuffer[esi], al +read_bet_after_store: + inc esi + + cmp edi, 0 + jne read_bet_loop + cmp al, '0' + jb read_bet_mark_code + cmp al, '9' + ja read_bet_mark_code + movzx edx, al + sub edx, '0' + imul ebx, ebx, 10 + add ebx, edx + jmp read_bet_loop + +read_bet_mark_code: + mov edi, 1 + jmp read_bet_loop + +read_bet_drain_lf: + invoke ReadFile, hIn, ADDR inputBuffer, 1, ADDR charsRead, 0 + cmp charsRead, 0 + je read_bet_finish + movzx eax, byte ptr inputBuffer + cmp al, 10 + jne read_bet_drain_lf + +read_bet_finish: + cmp esi, 0 + je read_bet_empty + cmp edi, 0 + jne read_bet_cheat + mov eax, ebx + ret + +read_bet_cheat: + invoke ApplyCheatCode, OFFSET cheatBuffer + cmp eax, 1 + je read_bet_cheat_ok + mov eax, 0FFFFFFFEh + ret +read_bet_cheat_ok: + mov eax, 0FFFFFFFFh + ret +read_bet_empty: + xor eax, eax + ret +ReadBetInput ENDP + +; --- Pause: ввод пользователя и разбор введенных данных --- +Pause PROC + invoke PrintStr, OFFSET pauseText + call ReadAnyKey + ret +Pause ENDP + +; --- PrintBank: вывод текста, цветов, картинок и элементов интерфейса --- +PrintBank PROC + invoke PrintStr, OFFSET bankText + invoke PrintMoney, bankroll + invoke PrintStr, OFFSET nl + ret +PrintBank ENDP +; --- PrintGoal: вывод текста, цветов, картинок и элементов интерфейса --- +PrintGoal PROC + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET goalText + call ResetColor + invoke PrintMoney, targetBank + invoke PrintStr, OFFSET nl + ret +PrintGoal ENDP + +; --- ResetProfileDefaults: аккаунты, файлы сохранений и загрузка профиля --- +ResetProfileDefaults PROC uses ecx edi + mov bankroll, 10000 + mov targetBank, 50000 + mov gamesPlayed, 0 + mov gamesWon, 0 + mov gamesLost, 0 + mov gamesDrawn, 0 + mov bestWin, 0 + mov bestLoss, 0 + mov aiDifficulty, 2 + mov cheatLuckyWin, 0 + mov cheatGodMode, 0 + mov cheatSlotJackpot, 0 + mov settingsVolume, 10 + mov secretEndingSeen, 0 + mov vipTaxAmount, 0 + mov bankRecovered, 0 + mov shopBackOwned, 1 + mov shopBackStyle, 0 + mov shopCharmLevel, 0 + mov shopCharmUses, 0 + mov achievements, 0 + mov casinoSuspicion, 0 + mov stressLevel, 0 + mov lastGameResult, 0 + mov currentGameId, 0 + mov ecx, 11 + mov edi, OFFSET gameStatsPlayed +reset_game_stats_loop: + mov dword ptr [edi], 0 + add edi, 4 + loop reset_game_stats_loop + mov ecx, 11 + mov edi, OFFSET gameStatsWon +reset_game_won_loop: + mov dword ptr [edi], 0 + add edi, 4 + loop reset_game_won_loop + mov ecx, 11 + mov edi, OFFSET gameStatsLost +reset_game_lost_loop: + mov dword ptr [edi], 0 + add edi, 4 + loop reset_game_lost_loop + mov ecx, 11 + mov edi, OFFSET gameStatsDraw +reset_game_draw_loop: + mov dword ptr [edi], 0 + add edi, 4 + loop reset_game_draw_loop + ret +ResetProfileDefaults ENDP + +; --- ReadAccountName: ввод пользователя и разбор введенных данных --- +; --- CopyCString: копирование ASCIIZ-строки --- +CopyCString PROC uses eax esi edi, pDst:DWORD, pSrc:DWORD + mov edi, pDst + mov esi, pSrc +copy_cstring_loop: + mov al, [esi] + mov [edi], al + inc esi + inc edi + cmp al, 0 + jne copy_cstring_loop + ret +CopyCString ENDP + +; --- AppendCString: дописывает ASCIIZ-строку в конец буфера --- +AppendCString PROC uses eax esi edi, pDst:DWORD, pSrc:DWORD + mov edi, pDst +append_find_end: + cmp byte ptr [edi], 0 + je append_copy_start + inc edi + jmp append_find_end +append_copy_start: + mov esi, pSrc +append_copy_loop: + mov al, [esi] + mov [edi], al + inc esi + inc edi + cmp al, 0 + jne append_copy_loop + ret +AppendCString ENDP + +; --- BuildAppDataDir: путь к %APPDATA%\AssemblerCasino --- +BuildAppDataDir PROC uses eax + mov appDataReady, 0 + invoke GetEnvironmentVariableA, OFFSET appDataEnvName, OFFSET saveDirPath, 220 + cmp eax, 0 + je build_appdata_done + cmp eax, 220 + jae build_appdata_done + invoke AppendCString, OFFSET saveDirPath, OFFSET appDataSubDir + invoke CreateDirectoryA, OFFSET saveDirPath, 0 + mov appDataReady, 1 +build_appdata_done: + ret +BuildAppDataDir ENDP + +; --- BuildSaveFullPath: полный путь текущего аккаунта --- +BuildSaveFullPath PROC + call BuildAppDataDir + cmp appDataReady, 1 + jne build_save_local + invoke CopyCString, OFFSET saveFullPath, OFFSET saveDirPath + invoke AppendCString, OFFSET saveFullPath, OFFSET pathSlashText + invoke AppendCString, OFFSET saveFullPath, OFFSET saveFileName + ret +build_save_local: + invoke CopyCString, OFFSET saveFullPath, OFFSET saveFileName + ret +BuildSaveFullPath ENDP + +; --- BuildAccountPatternFull: маска поиска аккаунтов --- +BuildAccountPatternFull PROC + call BuildAppDataDir + cmp appDataReady, 1 + jne build_pattern_local + invoke CopyCString, OFFSET accountPatternFull, OFFSET saveDirPath + invoke AppendCString, OFFSET accountPatternFull, OFFSET pathSlashText + invoke AppendCString, OFFSET accountPatternFull, OFFSET accountPattern + ret +build_pattern_local: + invoke CopyCString, OFFSET accountPatternFull, OFFSET accountPattern + ret +BuildAccountPatternFull ENDP + +; --- BuildLeaderSavePath: полный путь аккаунта для таблиц лидеров --- +BuildLeaderSavePath PROC + call BuildAppDataDir + cmp appDataReady, 1 + jne build_leader_local + invoke CopyCString, OFFSET leaderSavePath, OFFSET saveDirPath + invoke AppendCString, OFFSET leaderSavePath, OFFSET pathSlashText + invoke AppendCString, OFFSET leaderSavePath, leaderAccountPtr + ret +build_leader_local: + invoke CopyCString, OFFSET leaderSavePath, leaderAccountPtr + ret +BuildLeaderSavePath ENDP +ReadAccountName PROC uses eax ecx edi + mov ecx, 64 + mov edi, OFFSET saveFileName +clear_account_name: + mov byte ptr [edi], 0 + inc edi + loop clear_account_name + + mov accountNameLen, 0 + mov edi, OFFSET saveFileName +read_account_loop: + invoke ReadFile, hIn, ADDR inputBuffer, 1, ADDR charsRead, 0 + cmp charsRead, 0 + je account_name_done + mov al, byte ptr inputBuffer + cmp al, 13 + je account_name_drain_lf + cmp al, 10 + je account_name_done + + cmp accountNameLen, 50 + jae read_account_loop + cmp al, '0' + jb check_account_upper + cmp al, '9' + jbe store_account_char +check_account_upper: + cmp al, 'A' + jb check_account_lower + cmp al, 'Z' + jbe store_account_char +check_account_lower: + cmp al, 'a' + jb check_account_symbols + cmp al, 'z' + jbe store_account_char +check_account_symbols: + cmp al, '_' + je store_account_char + cmp al, '-' + je store_account_char + jmp read_account_loop +store_account_char: + mov [edi], al + inc edi + inc accountNameLen + jmp read_account_loop + +account_name_drain_lf: + invoke ReadFile, hIn, ADDR inputBuffer, 1, ADDR charsRead, 0 + cmp charsRead, 0 + je account_name_done + mov al, byte ptr inputBuffer + cmp al, 10 + jne account_name_drain_lf + +account_name_done: + cmp accountNameLen, 0 + je account_name_return + mov byte ptr [edi], '.' + inc edi + mov byte ptr [edi], 'd' + inc edi + mov byte ptr [edi], 'a' + inc edi + mov byte ptr [edi], 't' + inc edi + mov byte ptr [edi], 0 +account_name_return: + ret +ReadAccountName ENDP + +; --- AskAccountName: аккаунты, файлы сохранений и загрузка профиля --- +AskAccountName PROC +ask_account_name_again: + invoke PrintStr, OFFSET accountPromptText + call ReadAccountName + cmp accountNameLen, 0 + jne account_name_ok + invoke PrintStr, OFFSET accountBadText + jmp ask_account_name_again +account_name_ok: + ret +AskAccountName ENDP + +; --- CopyFindAccountName: аккаунты, файлы сохранений и загрузка профиля --- +CopyFindAccountName PROC uses eax ecx esi edi + mov eax, accountCount + shl eax, 6 + mov edi, OFFSET accountList + add edi, eax + mov esi, OFFSET findData + add esi, 44 + mov ecx, 63 +copy_find_name_loop: + mov al, [esi] + mov [edi], al + cmp al, 0 + je copy_find_name_done + inc esi + inc edi + loop copy_find_name_loop + mov byte ptr [edi], 0 +copy_find_name_done: + ret +CopyFindAccountName ENDP + +; --- CopySelectedAccountName: аккаунты, файлы сохранений и загрузка профиля --- +CopySelectedAccountName PROC uses eax ecx esi edi + mov eax, selectedAccount + dec eax + shl eax, 6 + mov esi, OFFSET accountList + add esi, eax + mov edi, OFFSET saveFileName + mov ecx, 63 +copy_selected_name_loop: + mov al, [esi] + mov [edi], al + cmp al, 0 + je copy_selected_name_done + inc esi + inc edi + loop copy_selected_name_loop + mov byte ptr [edi], 0 +copy_selected_name_done: + ret +CopySelectedAccountName ENDP + +; --- CollectAccounts: аккаунты, файлы сохранений и загрузка профиля --- +CollectAccounts PROC uses eax + mov accountCount, 0 + call BuildAccountPatternFull + invoke FindFirstFileA, OFFSET accountPatternFull, OFFSET findData + cmp eax, INVALID_HANDLE_VALUE + je collect_accounts_done + mov findHandle, eax +collect_accounts_loop: + mov eax, DWORD PTR [findData] + test eax, 10h + jne collect_accounts_next + cmp accountCount, 20 + jae collect_accounts_close + call CopyFindAccountName + inc accountCount +collect_accounts_next: + invoke FindNextFileA, findHandle, OFFSET findData + cmp eax, 0 + jne collect_accounts_loop +collect_accounts_close: + invoke FindClose, findHandle +collect_accounts_done: + ret +CollectAccounts ENDP + +; --- PrintAccountList: вывод текста, цветов, картинок и элементов интерфейса --- +PrintAccountList PROC uses eax ebx + invoke PrintStr, OFFSET accountListTitle + mov ebx, 0 +print_account_loop: + cmp ebx, accountCount + jae print_account_done + mov eax, ebx + inc eax + invoke PrintUInt, eax + invoke PrintStr, OFFSET dotSpaceText + mov eax, ebx + shl eax, 6 + add eax, OFFSET accountList + invoke PrintStr, eax + invoke PrintStr, OFFSET nl + inc ebx + jmp print_account_loop +print_account_done: + ret +PrintAccountList ENDP + +; --- SelectExistingAccount: аккаунты, файлы сохранений и загрузка профиля --- +SelectExistingAccount PROC +select_account_again: + call ClearView + invoke PrintTitleColor, OFFSET titleText + call CollectAccounts + cmp accountCount, 0 + jne accounts_available + invoke PrintStr, OFFSET accountNoFilesText + call Pause + xor eax, eax + ret +accounts_available: + call PrintAccountList + invoke PrintStr, OFFSET accountSelectText + call ReadUInt + cmp eax, 1 + jb select_account_bad + cmp eax, accountCount + ja select_account_bad + mov selectedAccount, eax + call CopySelectedAccountName + mov eax, 1 + ret +select_account_bad: + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp select_account_again +SelectExistingAccount ENDP + +; --- AccountMenu: аккаунты, файлы сохранений и загрузка профиля --- +AccountMenu PROC +account_menu_loop: + call ClearView + invoke PrintTitleColor, OFFSET titleText + invoke PrintStr, OFFSET accountMenuText + invoke PrintStr, OFFSET choiceText + call ReadKey + cmp al, '1' + je account_login + cmp al, '2' + je account_create + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp account_menu_loop + +account_login: + call ResetProfileDefaults + call SelectExistingAccount + cmp eax, 1 + jne account_menu_loop + call LoadSave + invoke PrintStr, OFFSET accountLoginText + invoke PrintStr, OFFSET saveFileName + invoke PrintStr, OFFSET nl + invoke Sleep, 700 + ret + +account_create: + call ClearView + invoke PrintTitleColor, OFFSET titleText + call ResetProfileDefaults + call AskAccountName + call SaveGame + invoke PrintStr, OFFSET accountCreateText + invoke PrintStr, OFFSET saveFileName + invoke PrintStr, OFFSET nl + invoke Sleep, 700 + ret +AccountMenu ENDP +; --- CalcSaveSignature: простая подпись сохранения от ручной правки --- +CalcSaveSignature PROC uses ecx esi edx + mov esi, OFFSET saveBuffer + mov ecx, SAVE_SIGN_SIZE / 4 + mov eax, SAVE_SALT +save_signature_loop: + rol eax, 5 + xor eax, [esi] + mov edx, eax + shr edx, 16 + xor eax, edx + add eax, 9E3779B9h + add esi, 4 + loop save_signature_loop + ret +CalcSaveSignature ENDP +; --- SaveGame: аккаунты, файлы сохранений и загрузка профиля --- +SaveGame PROC uses eax ecx esi edi + mov DWORD PTR [saveBuffer], SAVE_MAGIC + mov eax, bankroll + mov DWORD PTR [saveBuffer+4], eax + mov eax, targetBank + mov DWORD PTR [saveBuffer+36], eax + mov eax, gamesPlayed + mov DWORD PTR [saveBuffer+8], eax + mov eax, gamesWon + mov DWORD PTR [saveBuffer+12], eax + mov eax, gamesLost + mov DWORD PTR [saveBuffer+16], eax + mov eax, gamesDrawn + mov DWORD PTR [saveBuffer+20], eax + mov eax, bestWin + mov DWORD PTR [saveBuffer+24], eax + mov eax, bestLoss + mov DWORD PTR [saveBuffer+28], eax + mov eax, aiDifficulty + mov DWORD PTR [saveBuffer+32], eax + mov eax, shopBackOwned + mov DWORD PTR [saveBuffer+40], eax + mov eax, shopBackStyle + mov DWORD PTR [saveBuffer+44], eax + mov eax, shopCharmLevel + mov DWORD PTR [saveBuffer+48], eax + mov eax, achievements + mov DWORD PTR [saveBuffer+52], eax + mov eax, shopCharmUses + mov DWORD PTR [saveBuffer+56], eax + mov eax, casinoSuspicion + mov DWORD PTR [saveBuffer+236], eax + mov eax, dailyDateKey + mov DWORD PTR [saveBuffer+240], eax + mov eax, dailyRewardMask + mov DWORD PTR [saveBuffer+244], eax + mov eax, dailyProgressPacked + mov DWORD PTR [saveBuffer+248], eax + mov eax, dailyTaskPacked + mov DWORD PTR [saveBuffer+252], eax + mov eax, settingsVolume + mov DWORD PTR [saveBuffer+256], eax + mov eax, secretEndingSeen + mov DWORD PTR [saveBuffer+260], eax + mov eax, settingsLowSpec + mov DWORD PTR [saveBuffer+264], eax + mov eax, settingsIntroEnabled + mov DWORD PTR [saveBuffer+268], eax + mov eax, settingsDbdWindowEnabled + mov DWORD PTR [saveBuffer+272], eax + mov ecx, 44 + mov esi, OFFSET gameStatsPlayed + mov edi, OFFSET saveBuffer+60 +save_stats_played_loop: + mov eax, [esi] + mov [edi], eax + add esi, 4 + add edi, 4 + loop save_stats_played_loop + call CalcSaveSignature + mov DWORD PTR [saveBuffer+SAVE_SIGN_SIZE], eax + call BuildSaveFullPath + invoke CreateFileA, OFFSET saveFullPath, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + je save_done + mov saveHandle, eax + invoke WriteFile, saveHandle, ADDR saveBuffer, SAVE_FILE_SIZE, ADDR charsWritten, 0 + invoke CloseHandle, saveHandle +save_done: + ret +SaveGame ENDP + +; --- LoadSave: аккаунты, файлы сохранений и загрузка профиля --- +LoadSave PROC uses eax ecx esi edi + mov dailyDateKey, 0 + mov dailyRewardMask, 0 + mov dailyProgressPacked, 0 + mov dailyTaskPacked, 0 + mov settingsVolume, 10 ; load default for old saves + mov secretEndingSeen, 0 + mov settingsLowSpec, 0 + mov settingsIntroEnabled, 1 + mov settingsDbdWindowEnabled, 1 + mov saveTampered, 0 + call BuildSaveFullPath + invoke CreateFileA, OFFSET saveFullPath, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + jne load_file_opened + cmp appDataReady, 1 + jne load_done + invoke CreateFileA, OFFSET saveFileName, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + je load_done +load_file_opened: + mov saveHandle, eax + invoke ReadFile, saveHandle, ADDR saveBuffer, SAVE_FILE_SIZE, ADDR charsRead, 0 + invoke CloseHandle, saveHandle + cmp charsRead, 32 + jb load_done + mov eax, DWORD PTR [saveBuffer] + cmp eax, SAVE_MAGIC + jne load_done + cmp charsRead, SAVE_FILE_SIZE + jb load_signature_ok + mov edx, DWORD PTR [saveBuffer+SAVE_SIGN_SIZE] + call CalcSaveSignature + cmp eax, edx + jne load_tampered +load_signature_ok: + mov eax, DWORD PTR [saveBuffer+4] + mov bankroll, eax + cmp eax, 0 + jne load_bank_ok + mov bankroll, 10000 + mov bankRecovered, 1 +load_bank_ok: + mov eax, DWORD PTR [saveBuffer+8] + mov gamesPlayed, eax + mov eax, DWORD PTR [saveBuffer+12] + mov gamesWon, eax + mov eax, DWORD PTR [saveBuffer+16] + mov gamesLost, eax + mov eax, DWORD PTR [saveBuffer+20] + mov gamesDrawn, eax + mov eax, DWORD PTR [saveBuffer+24] + mov bestWin, eax + mov eax, DWORD PTR [saveBuffer+28] + mov bestLoss, eax + cmp charsRead, 36 + jb load_done + mov eax, DWORD PTR [saveBuffer+32] + cmp eax, 1 + jb load_done + cmp eax, 3 + ja load_done + mov aiDifficulty, eax + cmp charsRead, 40 + jb load_done + mov eax, DWORD PTR [saveBuffer+36] + cmp eax, 50000 + jb load_done + mov targetBank, eax + cmp charsRead, 52 + jb load_done + mov eax, DWORD PTR [saveBuffer+40] + cmp eax, 0 + je load_done + mov shopBackOwned, eax + mov eax, DWORD PTR [saveBuffer+44] + cmp eax, 12 + ja load_shop_charm + mov shopBackStyle, eax +load_shop_charm: + mov eax, DWORD PTR [saveBuffer+48] + cmp eax, 24 + ja load_done + mov shopCharmLevel, eax + cmp charsRead, 56 + jb load_done + mov eax, DWORD PTR [saveBuffer+52] + mov achievements, eax + cmp charsRead, 60 + jb load_done + mov eax, DWORD PTR [saveBuffer+56] + cmp eax, 8 + ja load_done + mov shopCharmUses, eax + cmp charsRead, 236 + jb load_done + mov ecx, 44 + mov esi, OFFSET saveBuffer+60 + mov edi, OFFSET gameStatsPlayed +load_stats_played_loop: + mov eax, [esi] + mov [edi], eax + add esi, 4 + add edi, 4 + loop load_stats_played_loop + cmp charsRead, 240 + jb load_done + mov eax, DWORD PTR [saveBuffer+236] + cmp eax, 100 + ja load_done + mov casinoSuspicion, eax + cmp charsRead, 252 + jb load_done + mov eax, DWORD PTR [saveBuffer+240] + mov dailyDateKey, eax + mov eax, DWORD PTR [saveBuffer+244] + mov dailyRewardMask, eax + mov eax, DWORD PTR [saveBuffer+248] + mov dailyProgressPacked, eax + cmp charsRead, 256 + jb load_daily_check + mov eax, DWORD PTR [saveBuffer+252] + mov dailyTaskPacked, eax + cmp charsRead, 260 + jb load_daily_check +load_settings_volume: + mov eax, DWORD PTR [saveBuffer+256] + cmp eax, 10 + ja load_secret_seen + mov settingsVolume, eax +load_secret_seen: + cmp charsRead, 264 + jb load_daily_check + mov eax, DWORD PTR [saveBuffer+260] + cmp eax, 1 + ja load_low_spec_setting + mov secretEndingSeen, eax +load_low_spec_setting: + cmp charsRead, 268 + jb load_daily_check + mov eax, DWORD PTR [saveBuffer+264] + cmp eax, 2 + ja load_intro_setting + mov settingsLowSpec, eax +load_intro_setting: + cmp charsRead, 272 + jb load_daily_check + mov eax, DWORD PTR [saveBuffer+268] + cmp eax, 1 + ja load_dbd_setting + mov settingsIntroEnabled, eax +load_dbd_setting: + cmp charsRead, 276 + jb load_daily_check + mov eax, DWORD PTR [saveBuffer+272] + cmp eax, 1 + ja load_daily_check + mov settingsDbdWindowEnabled, eax +load_daily_check: + call DailyCheckDate + jmp load_done +load_tampered: + mov bankroll, 10000 + mov bankRecovered, 1 + mov saveTampered, 1 + jmp load_done +load_done: + ret +LoadSave ENDP + +; --- RegisterGamePlayed: статистика, достижения и таблицы лидеров --- +RegisterGamePlayed PROC uses eax ebx + mov eax, currentGameId + cmp eax, 1 + jb register_game_played_done + cmp eax, 11 + ja register_game_played_done + dec eax + mov ebx, eax + inc dword ptr gameStatsPlayed[ebx * 4] +register_game_played_done: + ret +RegisterGamePlayed ENDP + +; --- RegisterGameWin: статистика, достижения и таблицы лидеров --- +RegisterGameWin PROC uses eax ebx + call RegisterGamePlayed + mov eax, currentGameId + cmp eax, 1 + jb register_game_win_done + cmp eax, 10 + ja register_game_win_done + dec eax + mov ebx, eax + inc dword ptr gameStatsWon[ebx * 4] +register_game_win_done: + ret +RegisterGameWin ENDP + +; --- RegisterGameLoss: статистика, достижения и таблицы лидеров --- +RegisterGameLoss PROC uses eax ebx + call RegisterGamePlayed + mov eax, currentGameId + cmp eax, 1 + jb register_game_loss_done + cmp eax, 10 + ja register_game_loss_done + dec eax + mov ebx, eax + inc dword ptr gameStatsLost[ebx * 4] +register_game_loss_done: + ret +RegisterGameLoss ENDP + +; --- RegisterGameDraw: статистика, достижения и таблицы лидеров --- +RegisterGameDraw PROC uses eax ebx + call RegisterGamePlayed + mov eax, currentGameId + cmp eax, 1 + jb register_game_draw_done + cmp eax, 10 + ja register_game_draw_done + dec eax + mov ebx, eax + inc dword ptr gameStatsDraw[ebx * 4] +register_game_draw_done: + ret +RegisterGameDraw ENDP +; --- RegisterWin: статистика, достижения и таблицы лидеров --- +RegisterWin PROC uses eax, amount:DWORD + inc gamesPlayed + inc gamesWon + call DailyAddWin + call RegisterGameWin + mov eax, amount + cmp eax, bestWin + jbe register_win_save + mov bestWin, eax +register_win_save: + call SaveGame + ret +RegisterWin ENDP + +; --- RegisterLoss: статистика, достижения и таблицы лидеров --- +RegisterLoss PROC uses eax, amount:DWORD + inc gamesPlayed + inc gamesLost + call DailyAddLoss + call RegisterGameLoss + mov eax, amount + cmp eax, bestLoss + jbe register_loss_save + mov bestLoss, eax +register_loss_save: + invoke UnlockAchievement, 2, OFFSET achFirstLossName +register_loss_ach_done: + call SaveGame + ret +RegisterLoss ENDP + +; --- RegisterDraw: статистика, достижения и таблицы лидеров --- +RegisterDraw PROC + inc gamesPlayed + inc gamesDrawn + call DailyAddDraw + call RegisterGameDraw + call SaveGame + ret +RegisterDraw ENDP + +; --- DailyTaskGoal: цель задания из пула 40 --- +DailyTaskGoal PROC taskId:DWORD + mov eax, taskId + cmp eax, 2 + je daily_goal_5 + cmp eax, 3 + je daily_goal_7 + cmp eax, 5 + je daily_goal_2 + cmp eax, 6 + je daily_goal_3 + cmp eax, 8 + je daily_goal_2 + cmp eax, 11 + je daily_goal_3 + cmp eax, 35 + je daily_goal_2 + cmp eax, 37 + je daily_goal_3 + cmp eax, 38 + je daily_goal_2 + cmp eax, 39 + je daily_goal_2 + mov eax, 1 + ret +daily_goal_2: + mov eax, 2 + ret +daily_goal_3: + mov eax, 3 + ret +daily_goal_5: + mov eax, 5 + ret +daily_goal_7: + mov eax, 7 + ret +DailyTaskGoal ENDP + +; --- DailyTaskReward: денежная награда задания из пула 40 --- +DailyTaskReward PROC taskId:DWORD + mov eax, taskId + cmp eax, 12 + je daily_reward_big + cmp eax, 30 + je daily_reward_big + cmp eax, 34 + je daily_reward_big + cmp eax, 36 + je daily_reward_big + cmp eax, 38 + je daily_reward_mid + cmp eax, 40 + je daily_reward_mid + cmp eax, 10 + jb daily_reward_small + cmp eax, 28 + jbe daily_reward_mid + mov eax, 2000 + ret +daily_reward_small: + mov eax, 1000 + ret +daily_reward_mid: + mov eax, 2500 + ret +daily_reward_big: + mov eax, 4000 + ret +DailyTaskReward ENDP + +; --- DailyGenerateTasks: выбирает 3 задания из 40 по календарной дате --- +DailyGenerateTasks PROC uses eax ebx ecx edx + mov eax, dailyDateKey + xor edx, edx + mov ebx, 40 + div ebx + inc edx + mov byte ptr [dailyTaskPacked], dl + + mov eax, dailyDateKey + xor edx, edx + mov ebx, 3 + div ebx + add eax, 17 + xor edx, edx + mov ebx, 40 + div ebx + inc edx + mov al, dl + cmp al, byte ptr [dailyTaskPacked] + jne daily_gen_store2 + inc al + cmp al, 41 + jb daily_gen_store2 + mov al, 1 +daily_gen_store2: + mov byte ptr [dailyTaskPacked+1], al + + mov eax, dailyDateKey + xor edx, edx + mov ebx, 7 + div ebx + add eax, 29 + xor edx, edx + mov ebx, 40 + div ebx + inc edx + mov al, dl +daily_gen_unique3: + cmp al, byte ptr [dailyTaskPacked] + je daily_gen_inc3 + cmp al, byte ptr [dailyTaskPacked+1] + je daily_gen_inc3 + jmp daily_gen_store3 +daily_gen_inc3: + inc al + cmp al, 41 + jb daily_gen_unique3 + mov al, 1 + jmp daily_gen_unique3 +daily_gen_store3: + mov byte ptr [dailyTaskPacked+2], al + mov byte ptr [dailyTaskPacked+3], 0 + ret +DailyGenerateTasks ENDP + +; --- DailyCheckDate: календарные ежедневные задания --- +DailyCheckDate PROC uses eax ebx + invoke GetLocalTime, OFFSET systemTime + movzx eax, word ptr [systemTime] + imul eax, eax, 10000 + movzx ebx, word ptr [systemTime+2] + imul ebx, ebx, 100 + add eax, ebx + movzx ebx, word ptr [systemTime+6] + add eax, ebx + cmp dailyDateKey, eax + je daily_date_has_date + mov dailyDateKey, eax + mov dailyRewardMask, 0 + mov dailyProgressPacked, 0 + mov dailyTaskPacked, 0 + call DailyGenerateTasks + ret +daily_date_has_date: + cmp byte ptr [dailyTaskPacked], 0 + jne daily_date_done + call DailyGenerateTasks +daily_date_done: + ret +DailyCheckDate ENDP + +; --- DailyTaskMatches: проверяет, реагирует ли задание на событие --- +; eventType: 1 played, 2 win, 3 loss, 4 draw, 5 bet>=5000, 6 bet>=10000 +DailyTaskMatches PROC uses ebx ecx edx, taskId:DWORD, eventType:DWORD + mov eax, taskId + mov ebx, eventType + cmp eax, 1 + je daily_match_play_any + cmp eax, 2 + je daily_match_play_any + cmp eax, 3 + je daily_match_play_any + cmp eax, 4 + je daily_match_win_any + cmp eax, 5 + je daily_match_win_any + cmp eax, 6 + je daily_match_win_any + cmp eax, 7 + je daily_match_loss_any + cmp eax, 8 + je daily_match_loss_any + cmp eax, 9 + je daily_match_draw_any + cmp eax, 10 + je daily_match_bet5 + cmp eax, 11 + je daily_match_bet5 + cmp eax, 12 + je daily_match_bet10 + + cmp eax, 13 + jb daily_match_none + cmp eax, 34 + ja daily_match_groups + mov ecx, eax + sub ecx, 13 + shr ecx, 1 + inc ecx + ; map compact game order 1..11 to actual currentGameId + cmp ecx, 3 + jb daily_match_game_ready + cmp ecx, 3 + je daily_match_game_clover + cmp ecx, 4 + je daily_match_game_rr + cmp ecx, 5 + je daily_match_game_skulls + cmp ecx, 6 + je daily_match_game_coin + cmp ecx, 7 + je daily_match_game_dice + cmp ecx, 8 + je daily_match_game_casino_roulette + cmp ecx, 9 + je daily_match_game_slot + cmp ecx, 10 + je daily_match_game_durak + mov ecx, 11 + jmp daily_match_game_ready +daily_match_game_clover: + mov ecx, 3 + jmp daily_match_game_ready +daily_match_game_rr: + mov ecx, 4 + jmp daily_match_game_ready +daily_match_game_skulls: + mov ecx, 5 + jmp daily_match_game_ready +daily_match_game_coin: + mov ecx, 6 + jmp daily_match_game_ready +daily_match_game_dice: + mov ecx, 7 + jmp daily_match_game_ready +daily_match_game_casino_roulette: + mov ecx, 8 + jmp daily_match_game_ready +daily_match_game_slot: + mov ecx, 9 + jmp daily_match_game_ready +daily_match_game_durak: + mov ecx, 10 +daily_match_game_ready: + cmp currentGameId, ecx + jne daily_match_none + test eax, 1 + jnz daily_match_play_any + jmp daily_match_win_any + +daily_match_groups: + cmp eax, 35 + je daily_match_card_play + cmp eax, 36 + je daily_match_card_win + cmp eax, 37 + je daily_match_luck_play + cmp eax, 38 + je daily_match_luck_win + cmp eax, 39 + je daily_match_risk_play + cmp eax, 40 + je daily_match_risk_win + jmp daily_match_none + +daily_match_play_any: + cmp ebx, 1 + je daily_match_yes + jmp daily_match_none +daily_match_win_any: + cmp ebx, 2 + je daily_match_yes + jmp daily_match_none +daily_match_loss_any: + cmp ebx, 3 + je daily_match_yes + jmp daily_match_none +daily_match_draw_any: + cmp ebx, 4 + je daily_match_yes + jmp daily_match_none +daily_match_bet5: + cmp ebx, 5 + je daily_match_yes + jmp daily_match_none +daily_match_bet10: + cmp ebx, 6 + je daily_match_yes + jmp daily_match_none + +daily_match_card_play: + cmp ebx, 1 + jne daily_match_none + cmp currentGameId, 1 + je daily_match_yes + cmp currentGameId, 2 + je daily_match_yes + cmp currentGameId, 10 + je daily_match_yes + jmp daily_match_none +daily_match_card_win: + cmp ebx, 2 + jne daily_match_none + cmp currentGameId, 1 + je daily_match_yes + cmp currentGameId, 2 + je daily_match_yes + cmp currentGameId, 10 + je daily_match_yes + jmp daily_match_none +daily_match_luck_play: + cmp ebx, 1 + jne daily_match_none + cmp currentGameId, 3 + je daily_match_yes + cmp currentGameId, 6 + je daily_match_yes + cmp currentGameId, 7 + je daily_match_yes + cmp currentGameId, 8 + je daily_match_yes + cmp currentGameId, 9 + je daily_match_yes + jmp daily_match_none +daily_match_luck_win: + cmp ebx, 2 + jne daily_match_none + cmp currentGameId, 3 + je daily_match_yes + cmp currentGameId, 6 + je daily_match_yes + cmp currentGameId, 7 + je daily_match_yes + cmp currentGameId, 8 + je daily_match_yes + cmp currentGameId, 9 + je daily_match_yes + jmp daily_match_none +daily_match_risk_play: + cmp ebx, 1 + jne daily_match_none + cmp currentGameId, 4 + je daily_match_yes + cmp currentGameId, 5 + je daily_match_yes + cmp currentGameId, 11 + je daily_match_yes + jmp daily_match_none +daily_match_risk_win: + cmp ebx, 2 + jne daily_match_none + cmp currentGameId, 4 + je daily_match_yes + cmp currentGameId, 5 + je daily_match_yes + cmp currentGameId, 11 + je daily_match_yes + jmp daily_match_none + +daily_match_yes: + mov eax, 1 + ret +daily_match_none: + xor eax, eax + ret +DailyTaskMatches ENDP + +; --- DailyApplyEvent: применяет игровое событие к трём заданиям дня --- +DailyApplyEvent PROC uses eax ebx ecx edx esi, eventType:DWORD + call DailyCheckDate + mov esi, 0 +daily_apply_loop: + cmp esi, 3 + jae daily_apply_done + movzx eax, byte ptr [dailyTaskPacked + esi] + cmp eax, 0 + je daily_apply_next + mov ebx, eax + invoke DailyTaskMatches, ebx, eventType + cmp eax, 1 + jne daily_apply_next + movzx ecx, byte ptr [dailyProgressPacked + esi] + invoke DailyTaskGoal, ebx + cmp ecx, eax + jae daily_apply_next + inc byte ptr [dailyProgressPacked + esi] +daily_apply_next: + inc esi + jmp daily_apply_loop +daily_apply_done: + ret +DailyApplyEvent ENDP + +DailyAddPlayed PROC + invoke DailyApplyEvent, 1 + ret +DailyAddPlayed ENDP + +DailyAddWin PROC + call DailyAddPlayed + invoke DailyApplyEvent, 2 + ret +DailyAddWin ENDP + +DailyAddLoss PROC + call DailyAddPlayed + invoke DailyApplyEvent, 3 + ret +DailyAddLoss ENDP + +DailyAddDraw PROC + call DailyAddPlayed + invoke DailyApplyEvent, 4 + ret +DailyAddDraw ENDP + +DailyAddHighBet PROC + call DailyCheckDate + cmp currentBet, 5000 + jb daily_bet_done + invoke DailyApplyEvent, 5 + cmp currentBet, 10000 + jb daily_bet_done + invoke DailyApplyEvent, 6 +daily_bet_done: + ret +DailyAddHighBet ENDP + +; --- DailyClaimSlot: выдача награды за один слот ежедневки --- +DailyClaimSlot PROC uses eax ebx ecx edx, slotIndex:DWORD, maskValue:DWORD + mov eax, dailyRewardMask + and eax, maskValue + cmp eax, 0 + jne daily_claim_slot_done + mov ecx, slotIndex + movzx ebx, byte ptr [dailyTaskPacked + ecx] + cmp ebx, 0 + je daily_claim_slot_done + movzx edx, byte ptr [dailyProgressPacked + ecx] + invoke DailyTaskGoal, ebx + cmp edx, eax + jb daily_claim_slot_done + mov eax, maskValue + or dailyRewardMask, eax + invoke DailyTaskReward, ebx + add bankroll, eax + push eax + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET dailyClaimText + pop eax + invoke PrintUInt, eax + invoke PrintStr, OFFSET nl + call ResetColor +daily_claim_slot_done: + ret +DailyClaimSlot ENDP + +DailyClaimRewards PROC + call DailyCheckDate + invoke DailyClaimSlot, 0, 1 + invoke DailyClaimSlot, 1, 2 + invoke DailyClaimSlot, 2, 4 + call SaveGame + ret +DailyClaimRewards ENDP + +; --- PrintDailySlot: строка одного ежедневного задания --- +PrintDailySlot PROC uses eax ebx ecx edx, slotIndex:DWORD, maskValue:DWORD + mov ecx, slotIndex + mov eax, ecx + inc eax + invoke PrintUInt, eax + invoke PrintStr, OFFSET dotSpaceText + movzx ebx, byte ptr [dailyTaskPacked + ecx] + cmp ebx, 1 + jb daily_slot_done + cmp ebx, 40 + ja daily_slot_done + mov eax, ebx + dec eax + mov edx, dword ptr [dailyTaskNameTable + eax * 4] + invoke PrintStr, edx + invoke PrintStr, OFFSET dailySlashText + mov ecx, slotIndex + movzx eax, byte ptr [dailyProgressPacked + ecx] + push eax + invoke PrintUInt, eax + invoke PrintStr, OFFSET dailySlashText + invoke DailyTaskGoal, ebx + mov edx, eax + invoke PrintUInt, edx + invoke PrintStr, OFFSET dailyRewardText + invoke DailyTaskReward, ebx + invoke PrintUInt, eax + mov eax, dailyRewardMask + and eax, maskValue + cmp eax, 0 + jne daily_slot_status_done + pop eax + cmp eax, edx + jae daily_slot_status_ready + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET dailyOpenText + call ResetColor + ret +daily_slot_status_ready: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET dailyReadyText + call ResetColor + ret +daily_slot_status_done: + pop eax + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET dailyDoneText + call ResetColor + ret +daily_slot_done: + ret +PrintDailySlot ENDP + +GameDailyTasks PROC + call ClearView + invoke PrintTitleColor, OFFSET dailyTitle + invoke PrintStr, OFFSET dailyIntro + call DailyClaimRewards + call PrintBank + invoke PrintStr, OFFSET dailyDateText + invoke PrintUInt, dailyDateKey + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET dailyPoolText + invoke PrintDailySlot, 0, 1 + invoke PrintDailySlot, 1, 2 + invoke PrintDailySlot, 2, 4 + call Pause + ret +GameDailyTasks ENDP + +; --- PrintDifficultyName: вывод текста, цветов, картинок и элементов интерфейса --- +PrintDifficultyName PROC + cmp aiDifficulty, 1 + je print_easy_name + cmp aiDifficulty, 3 + je print_hard_name + invoke PrintStr, OFFSET normalName + ret +print_easy_name: + invoke PrintStr, OFFSET easyName + ret +print_hard_name: + invoke PrintStr, OFFSET hardName + ret +PrintDifficultyName ENDP + +; --- PrintBankLevelName: вывод текста, цветов, картинок и элементов интерфейса --- +PrintBankLevelName PROC + mov eax, bankroll + cmp eax, 100000 + jae print_level_legend + cmp eax, 50000 + jae print_level_high + cmp eax, 20000 + jae print_level_player + invoke PrintStr, OFFSET bankLevelNewbie + ret +print_level_player: + invoke PrintStr, OFFSET bankLevelPlayer + ret +print_level_high: + invoke PrintStr, OFFSET bankLevelHigh + ret +print_level_legend: + invoke PrintStr, OFFSET bankLevelLegend + ret +PrintBankLevelName ENDP + +; --- PrintBankLevel: вывод текста, цветов, картинок и элементов интерфейса --- +PrintBankLevel PROC + invoke PrintStr, OFFSET bankLevelText + call PrintBankLevelName + ret +PrintBankLevel ENDP + +; --- ApplySoundVolume: настройки громкости WinMM, 0-10 --- +ApplySoundVolume PROC uses eax edx + mov eax, settingsVolume + cmp eax, 10 + jb volume_scaled + mov eax, 0FFFFh + jmp volume_pack +volume_scaled: + imul eax, eax, 6553 +volume_pack: + mov edx, eax + shl edx, 16 + or eax, edx + invoke waveOutSetVolume, 0FFFFFFFFh, eax + ret +ApplySoundVolume ENDP +; --- AnimShouldDrawFrame: animation profile frame skipper --- +AnimShouldDrawFrame PROC uses ecx edx + inc animFrameCounter + mov eax, settingsLowSpec + cmp eax, 0 + je anim_draw_yes + cmp eax, 1 + je anim_adaptive_check + mov eax, animFrameCounter + xor edx, edx + mov ecx, 3 + div ecx + cmp edx, 1 + je anim_draw_yes + xor eax, eax + ret +anim_adaptive_check: + mov eax, animFrameCounter + and eax, 1 + cmp eax, 1 + je anim_draw_yes + xor eax, eax + ret +anim_draw_yes: + mov eax, 1 + ret +AnimShouldDrawFrame ENDP + +; --- AnimFrameDelay: keeps scene timing while reducing redraws --- +AnimFrameDelay PROC baseDelay:DWORD + mov eax, baseDelay + cmp settingsLowSpec, 1 + je anim_delay_adaptive + cmp settingsLowSpec, 2 + je anim_delay_stable + ret +anim_delay_adaptive: + shl eax, 1 + ret +anim_delay_stable: + imul eax, eax, 3 + ret +AnimFrameDelay ENDP + +; --- PrintVIPStatus: VIP-статус по размеру банка --- +PrintVIPStatus PROC + invoke PrintStr, OFFSET vipStatusText + mov eax, bankroll + cmp eax, 500000 + jae print_vip_diamond + cmp eax, 250000 + jae print_vip_gold + cmp eax, 100000 + jae print_vip_silver + invoke PrintStr, OFFSET vipBronzeText + ret +print_vip_silver: + invoke SetColor, COLOR_CARD + invoke PrintStr, OFFSET vipSilverText + call ResetColor + ret +print_vip_gold: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET vipGoldText + call ResetColor + ret +print_vip_diamond: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET vipDiamondText + call ResetColor + ret +PrintVIPStatus ENDP + +; --- ApplyVIPTax: казино берет комиссию с больших VIP-ставок --- +ApplyVIPTax PROC uses eax ebx edx + mov vipTaxAmount, 0 + mov eax, bankroll + cmp eax, 100000 + jb vip_tax_done + mov eax, currentBet + cmp bankroll, 500000 + jae vip_tax_diamond + cmp bankroll, 250000 + jae vip_tax_gold + mov ebx, 1 + jmp vip_tax_calc +vip_tax_gold: + mov ebx, 2 + jmp vip_tax_calc +vip_tax_diamond: + mov ebx, 3 +vip_tax_calc: + mul ebx + mov ebx, 100 + xor edx, edx + div ebx + cmp eax, 0 + jne vip_tax_have + mov eax, 1 +vip_tax_have: + mov vipTaxAmount, eax + cmp bankroll, eax + jae vip_tax_sub + mov eax, bankroll + mov vipTaxAmount, eax +vip_tax_sub: + sub bankroll, eax + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET vipTaxText + invoke PrintUInt, vipTaxAmount + invoke PrintStr, OFFSET nl + call ResetColor + call SaveGame +vip_tax_done: + ret +ApplyVIPTax ENDP + +; --- CheckSecretEnding: секретная концовка за полное закрытие казино --- +CheckSecretEnding PROC uses eax + cmp secretEndingSeen, 0 + jne secret_ending_done + mov eax, achievements + and eax, 3FFFFh + cmp eax, 3FFFFh + jne secret_ending_done + mov eax, shopBackOwned + and eax, 1FFFh + cmp eax, 1FFFh + jne secret_ending_done + cmp bankroll, 1000000 + jb secret_ending_done + mov secretEndingSeen, 1 + call SaveGame + call ClearView + call PlayVictorySound + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET secretEndingTitle + invoke PrintStr, OFFSET secretEndingArt1 + invoke Sleep, 500 + invoke PrintStr, OFFSET secretEndingArt2 + call ResetColor + invoke PrintStr, OFFSET secretEndingBody + call Pause +secret_ending_done: + ret +CheckSecretEnding ENDP + +; --- GameSettings: настройки звука и игровых опций --- +GameSettings PROC +settings_loop: + call ClearView + invoke PrintTitleColor, OFFSET settingsTitle + invoke PrintStr, OFFSET settingsVolumeText + invoke PrintUInt, settingsVolume + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET settingsVolumeHint + call PrintVIPStatus + + invoke PrintStr, OFFSET settingsModeText + cmp settingsLowSpec, 0 + je settings_print_cinematic + cmp settingsLowSpec, 1 + je settings_print_adaptive + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET settingsStableText + call ResetColor + jmp settings_print_intro +settings_print_cinematic: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET settingsCinematicText + call ResetColor + jmp settings_print_intro +settings_print_adaptive: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET settingsAdaptiveText + call ResetColor +settings_print_intro: + invoke PrintStr, OFFSET settingsIntroText + cmp settingsIntroEnabled, 1 + je settings_intro_on + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET settingsOffText + call ResetColor + jmp settings_print_dbd +settings_intro_on: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET settingsOnText + call ResetColor +settings_print_dbd: + invoke PrintStr, OFFSET settingsDbdText + cmp settingsDbdWindowEnabled, 1 + je settings_dbd_on + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET settingsOffText + call ResetColor + jmp settings_show_menu +settings_dbd_on: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET settingsOnText + call ResetColor +settings_show_menu: + invoke PrintStr, OFFSET settingsAnimHintText + invoke PrintStr, OFFSET settingsMenuText + call ReadUInt + cmp eax, 0 + je settings_exit + cmp eax, 1 + je settings_quieter + cmp eax, 2 + je settings_louder + cmp eax, 3 + je settings_toggle_low + cmp eax, 4 + je settings_toggle_intro + cmp eax, 5 + je settings_toggle_dbd + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp settings_loop +settings_quieter: + cmp settingsVolume, 0 + jbe settings_apply + dec settingsVolume + jmp settings_apply +settings_louder: + cmp settingsVolume, 10 + jae settings_apply + inc settingsVolume + jmp settings_apply +settings_toggle_low: + inc settingsLowSpec + cmp settingsLowSpec, 3 + jb settings_apply + mov settingsLowSpec, 0 + jmp settings_apply +settings_toggle_intro: + mov eax, settingsIntroEnabled + xor eax, 1 + mov settingsIntroEnabled, eax + jmp settings_apply +settings_toggle_dbd: + mov eax, settingsDbdWindowEnabled + xor eax, 1 + mov settingsDbdWindowEnabled, eax +settings_apply: + call ApplySoundVolume + call SaveGame + jmp settings_loop +settings_exit: + ret +GameSettings ENDP +; --- CalcStressLevel: банк, ставки, стресс, подозрение и экономика казино --- +CalcStressLevel PROC uses eax ebx edx + mov stressLevel, 0 + cmp bankroll, 0 + je calc_stress_done + cmp currentBet, 0 + je calc_stress_done + mov eax, currentBet + mov ebx, 100 + mul ebx + mov ebx, bankroll + xor edx, edx + div ebx + cmp eax, 75 + jae calc_stress_max + cmp eax, 50 + jae calc_stress_high + cmp eax, 25 + jae calc_stress_mid + jmp calc_stress_done +calc_stress_mid: + mov stressLevel, 1 + jmp calc_stress_done +calc_stress_high: + mov stressLevel, 2 + jmp calc_stress_done +calc_stress_max: + mov stressLevel, 3 +calc_stress_done: + ret +CalcStressLevel ENDP + +; --- PrintStressLevel: вывод текста, цветов, картинок и элементов интерфейса --- +PrintStressLevel PROC + invoke PrintStr, OFFSET stressText + mov eax, stressLevel + cmp eax, 0 + je print_stress_low + cmp eax, 1 + je print_stress_mid + cmp eax, 2 + je print_stress_high + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET stressMaxText + call ResetColor + ret +print_stress_low: + invoke PrintStr, OFFSET stressLowText + ret +print_stress_mid: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET stressMidText + call ResetColor + ret +print_stress_high: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET stressHighText + call ResetColor + ret +PrintStressLevel ENDP + +; --- PrintSuspicion: вывод текста, цветов, картинок и элементов интерфейса --- +PrintSuspicion PROC + invoke PrintStr, OFFSET suspicionText + mov eax, casinoSuspicion + cmp eax, 44 + jae print_suspicion_hunt + cmp eax, 25 + jae print_suspicion_watch + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET suspicionCalmText + call ResetColor + ret +print_suspicion_watch: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET suspicionWatchText + call ResetColor + ret +print_suspicion_hunt: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET suspicionHuntText + call ResetColor + ret +PrintSuspicion ENDP + +; --- AddSuspicion: банк, ставки, стресс, подозрение и экономика казино --- +AddSuspicion PROC uses eax ebx, amount:DWORD + mov eax, casinoSuspicion + add eax, amount + cmp eax, 100 + jbe add_suspicion_store + mov eax, 100 +add_suspicion_store: + mov casinoSuspicion, eax + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET suspicionUpText + call ResetColor + call SaveGame + ret +AddSuspicion ENDP + +; --- CheckCasinoHeat: служебный блок игровой логики --- +CheckCasinoHeat PROC uses eax ebx + mov eax, casinoSuspicion + cmp eax, 44 + jb casino_heat_done + sub eax, 40 + mov ebx, eax + invoke RandomRange, 100 + cmp eax, ebx + jae casino_heat_done + mov eax, currentBet + shr eax, 1 + cmp eax, 1 + jae casino_heat_have_fine + mov eax, 1 +casino_heat_have_fine: + cmp bankroll, eax + jae casino_heat_sub + mov eax, bankroll +casino_heat_sub: + sub bankroll, eax + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET suspicionFineText + invoke PrintUInt, eax + invoke PrintStr, OFFSET nl + call ResetColor + call PrintBank + call SaveGame +casino_heat_done: + ret +CheckCasinoHeat ENDP +; --- ShowStats: статистика, достижения и таблицы лидеров --- +ShowStats PROC + invoke PrintStr, OFFSET difficultyNowText + call PrintDifficultyName + call PrintBankLevel + invoke PrintStr, OFFSET statsGamesText + invoke PrintUInt, gamesPlayed + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET statsWinsText + invoke PrintUInt, gamesWon + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET statsLossText + invoke PrintUInt, gamesLost + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET statsDrawText + invoke PrintUInt, gamesDrawn + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET statsBestWinText + invoke PrintUInt, bestWin + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET statsBestLossText + invoke PrintUInt, bestLoss + invoke PrintStr, OFFSET nl + call PrintSuspicion + ret +ShowStats ENDP + + +; --- WriteAchievementPopup: статистика, достижения и таблицы лидеров --- +WriteAchievementPopup PROC uses eax ecx esi, pName:DWORD + mov esi, pName + xor ecx, ecx +achievement_len_loop: + mov al, [esi + ecx] + cmp al, 0 + je achievement_len_ready + cmp al, 13 + je achievement_len_ready + cmp ecx, 64 + jae achievement_len_ready + inc ecx + jmp achievement_len_loop +achievement_len_ready: + invoke CreateFileA, OFFSET achievementFileName, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + je achievement_popup_run + mov achievementHandle, eax + invoke WriteFile, achievementHandle, pName, ecx, ADDR charsWritten, 0 + invoke CloseHandle, achievementHandle +achievement_popup_run: + invoke WinExec, OFFSET achievementCmd, 1 + ret +WriteAchievementPopup ENDP + +; --- UnlockAchievement: статистика, достижения и таблицы лидеров --- +UnlockAchievement PROC uses eax ebx, maskValue:DWORD, pName:DWORD + mov eax, achievements + mov ebx, maskValue + test eax, ebx + jz unlock_achievement_new + ret +unlock_achievement_new: + or eax, ebx + mov achievements, eax + call SaveGame + invoke WriteAchievementPopup, pName + ret +UnlockAchievement ENDP + +; --- PrintAchievementLine: вывод текста, цветов, картинок и элементов интерфейса --- +PrintAchievementLine PROC uses eax ebx, maskValue:DWORD, pName:DWORD + mov eax, achievements + mov ebx, maskValue + test eax, ebx + jz print_achievement_locked + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET achDoneText + call ResetColor + jmp print_achievement_name +print_achievement_locked: + invoke SetColor, COLOR_BACK_CARD + invoke PrintStr, OFFSET achTodoText + call ResetColor +print_achievement_name: + invoke PrintStr, pName + ret +PrintAchievementLine ENDP +; --- ShowWelcome: служебный блок игровой логики --- +ShowWelcome PROC + call ClearView + invoke PrintTitleColor, OFFSET titleText + invoke PrintStr, OFFSET welcomeText + call PrintGoal + cmp bankRecovered, 0 + je welcome_check_tampered + invoke PrintStr, OFFSET bankRecoveredText +welcome_check_tampered: + cmp saveTampered, 0 + je welcome_bank_normal + invoke PrintStr, OFFSET saveTamperedText +welcome_bank_normal: + call PrintBank + call ShowStats + call Pause + ret +ShowWelcome ENDP + +; --- SelectDifficulty: служебный блок игровой логики --- +SelectDifficulty PROC +select_difficulty_again: + call ClearView + invoke PrintTitleColor, OFFSET titleText + invoke PrintStr, OFFSET difficultyText + call ReadKey + cmp al, '1' + je set_easy_ai + cmp al, '2' + je set_normal_ai + cmp al, '3' + je set_hard_ai + jmp select_difficulty_again +set_easy_ai: + mov aiDifficulty, 1 + jmp difficulty_selected +set_normal_ai: + mov aiDifficulty, 2 + jmp difficulty_selected +set_hard_ai: + mov aiDifficulty, 3 +difficulty_selected: + call SaveGame + ret +SelectDifficulty ENDP + +; --- ShowPokerChips: покер: оценка комбинаций, ставки, фолды и ИИ --- +ShowPokerChips PROC uses eax ebx edx + invoke PrintStr, OFFSET pokerChipTitle + + mov eax, currentBet + mov ebx, 5000 + xor edx, edx + div ebx + add eax, 5 + cmp eax, 10 + jbe poker_chips_count_ready + mov eax, 10 +poker_chips_count_ready: + mov rowIndex, eax + +poker_chips_loop: + cmp rowIndex, 0 + je poker_chips_done + mov eax, rowIndex + cmp eax, 7 + ja poker_chips_high + cmp eax, 4 + ja poker_chips_mid + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET pokerChipLow + jmp poker_chips_next +poker_chips_mid: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET pokerChipMid + jmp poker_chips_next +poker_chips_high: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET pokerChipHigh +poker_chips_next: + dec rowIndex + jmp poker_chips_loop + +poker_chips_done: + call ResetColor + ret +ShowPokerChips ENDP + +; --- ShowPokerMoney: покер: оценка комбинаций, ставки, фолды и ИИ --- +ShowPokerMoney PROC uses eax ebx + call ShowPokerChips + invoke PrintStr, OFFSET pokerPotText + mov eax, currentBet + mov ebx, 2 + mul ebx + invoke PrintUInt, eax + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET pokerBetText + invoke PrintUInt, currentBet + invoke PrintStr, OFFSET nl + ret +ShowPokerMoney ENDP + +; --- PromptPokerRaise: покер: оценка комбинаций, ставки, фолды и ИИ --- +PromptPokerRaise PROC uses ebx + call PrintBank + invoke PrintStr, OFFSET pokerRaiseAskText + call ReadUInt + cmp eax, 0 + je raise_bad + mov pokerRaiseAmount, eax + mov ebx, currentBet + add ebx, eax + cmp ebx, bankroll + ja raise_bad + mov currentBet, ebx + invoke PrintStr, OFFSET pokerRaisedText + invoke PrintUInt, currentBet + invoke PrintStr, OFFSET nl + mov eax, 1 + ret +raise_bad: + invoke PrintStr, OFFSET pokerBadRaiseText + xor eax, eax + ret +PromptPokerRaise ENDP + +; --- PaySlotMultiplier: банк, ставки, стресс, подозрение и экономика казино --- +PaySlotMultiplier PROC uses eax ebx edx, multiplier:DWORD + mov lastGameResult, 1 + mov eax, currentBet + mov ebx, multiplier + mul ebx + mov pokerRaiseAmount, eax + add bankroll, eax + invoke PrintStr, OFFSET slotPayoutText + invoke PrintUInt, multiplier + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET moneyWinText + invoke PrintUInt, pokerRaiseAmount + invoke PrintStr, OFFSET nl + invoke RegisterWin, pokerRaiseAmount + invoke UnlockAchievement, 1, OFFSET achFirstWinName + call PrintBank + call PrintCroupierWin + cmp multiplier, 10 + jb slot_multiplier_no_ach + invoke UnlockAchievement, 4, OFFSET achJackpotName +slot_multiplier_no_ach: + call CheckVictory + ret +PaySlotMultiplier ENDP +; --- CheckBankrupt: банк, ставки, стресс, подозрение и экономика казино --- +CheckBankrupt PROC + cmp bankroll, 0 + ja bankroll_ok + call PlayBankruptSound + invoke Sleep, 300 + invoke PrintStr, OFFSET casinoKickText + invoke PrintStr, OFFSET casinoExitText + call ReadAnyKey + invoke ExitProcess, 0 +bankroll_ok: + ret +CheckBankrupt ENDP +; --- CheckVictory: банк, ставки, стресс, подозрение и экономика казино --- +CheckVictory PROC + mov eax, bankroll + cmp eax, targetBank + jb victory_not_yet + call PlayVictorySound + call ClearView + invoke PrintTitleColor, OFFSET titleText + invoke PrintStr, OFFSET victoryText + invoke PrintStr, OFFSET victoryReachedText + invoke PrintUInt, targetBank + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET victoryTailText + call PrintBank + +advance_victory_goal: + mov eax, bankroll + cmp eax, targetBank + jb victory_goal_ready + add targetBank, 50000 + jmp advance_victory_goal +victory_goal_ready: + call SaveGame + invoke UnlockAchievement, 40h, OFFSET achGoalName + invoke PrintStr, OFFSET nextGoalText + invoke PrintUInt, targetBank + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET victoryExitText + call CheckSecretEnding +victory_secret_checked: + call ReadAnyKey + ret +victory_not_yet: + call CheckSecretEnding + ret +CheckVictory ENDP + +; --- ShowStressPulse: банк, ставки, стресс, подозрение и экономика казино --- +ShowStressPulse PROC uses eax ebx edx + cmp bankroll, 0 + je stress_pulse_done + mov eax, currentBet + cmp eax, 0 + je stress_pulse_done + mov ebx, 100 + mul ebx + mov ebx, bankroll + xor edx, edx + div ebx + cmp eax, 25 + jb stress_pulse_done + + invoke PrintStr, OFFSET pulseTitleText + cmp eax, 50 + jae stress_pulse_hot + invoke SetColor, COLOR_WARN + jmp stress_pulse_frames +stress_pulse_hot: + invoke SetColor, COLOR_BAD +stress_pulse_frames: + mov eax, stressLevel + inc eax + mov pulseCycles, eax +stress_pulse_cycle: + invoke PrintStr, OFFSET pulseFrame1 + invoke Sleep, 70 + invoke PrintStr, OFFSET pulseFrame2 + invoke Sleep, 70 + invoke PrintStr, OFFSET pulseFrame3 + invoke Sleep, 70 + invoke PrintStr, OFFSET pulseFrame4 + invoke Sleep, 70 + invoke PrintStr, OFFSET pulseFrame5 + invoke Sleep, 90 + dec pulseCycles + cmp pulseCycles, 0 + jne stress_pulse_cycle + call ResetColor +stress_pulse_done: + ret +ShowStressPulse ENDP + +; --- PromptBet: банк, ставки, стресс, подозрение и экономика казино --- +PromptBet PROC +prompt_bet_again: + call CheckBankrupt + call PrintBank + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET betText + call ReadBetInput + push eax + call ResetColor + pop eax + cmp eax, 0FFFFFFFFh + je prompt_bet_again + cmp eax, 0FFFFFFFEh + je prompt_bet_again + cmp eax, 0FFFFFFFDh + je prompt_bet_again + cmp eax, 0 + jne bet_check_money + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET badBetText + call ResetColor + jmp prompt_bet_again + +bet_check_money: + cmp eax, bankroll + jbe bet_store + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET tooBigBetText + call ResetColor + jmp prompt_bet_again +bet_store: + mov currentBet, eax + call ApplyVIPTax + cmp currentBet, 10000 + jb bet_highroller_done + invoke UnlockAchievement, 8, OFFSET achHighRollerName +bet_highroller_done: + call DailyAddHighBet + invoke PrintStr, OFFSET betChosenText + invoke PrintMoney, currentBet + invoke PrintStr, OFFSET nl + call CalcStressLevel + call PrintStressLevel + call ShowStressPulse + invoke Sleep, 500 + ret +PromptBet ENDP + +; --- PayWin: банк, ставки, стресс, подозрение и экономика казино --- +PayWin PROC + mov lastGameResult, 1 + mov eax, currentBet + add bankroll, eax + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET moneyWinText + invoke PrintUInt, currentBet + call ResetColor + invoke PrintStr, OFFSET nl + invoke RegisterWin, currentBet + invoke UnlockAchievement, 1, OFFSET achFirstWinName + call PrintBank + call PrintCroupierWin + call CheckVictory + ret +PayWin ENDP + +; --- TryCharmSave: талисманы спасают ставку, но у сильных есть цена --- +TryCharmSave PROC uses ebx ecx edx + cmp shopCharmLevel, 0 + jne charm_has_level + xor eax, eax + ret +charm_has_level: + cmp shopCharmUses, 0 + jne charm_has_uses + mov shopCharmLevel, 0 + xor eax, eax + ret +charm_has_uses: + mov ebx, shopCharmLevel + cmp ebx, 1 + je charm_chance_clover + cmp ebx, 2 + je charm_chance_bell + cmp ebx, 3 + je charm_chance_diamond + cmp ebx, 4 + je charm_chance_skull + cmp ebx, 5 + je charm_chance_web + cmp ebx, 6 + je charm_chance_bee + cmp ebx, 7 + je charm_chance_moon + cmp ebx, 8 + je charm_chance_crown + cmp ebx, 9 + je charm_chance_mirror + cmp ebx, 10 + je charm_chance_dice + cmp ebx, 11 + je charm_chance_blood + cmp ebx, 12 + je charm_chance_hourglass + cmp ebx, 13 + je charm_chance_horseshoe + cmp ebx, 14 + je charm_chance_joker + cmp ebx, 15 + je charm_chance_phoenix + cmp ebx, 16 + je charm_chance_compass + cmp ebx, 17 + je charm_chance_tooth + cmp ebx, 18 + je charm_chance_eye + cmp ebx, 19 + je charm_chance_key + cmp ebx, 20 + je charm_chance_candle + cmp ebx, 21 + je charm_chance_chip + cmp ebx, 22 + je charm_chance_snake + cmp ebx, 23 + je charm_chance_ace + cmp ebx, 24 + je charm_chance_devil + xor eax, eax + ret +charm_chance_clover: + mov ecx, 7 + jmp charm_roll +charm_chance_bell: + mov ecx, 14 + jmp charm_roll +charm_chance_diamond: + mov ecx, 21 + jmp charm_roll +charm_chance_skull: + mov ecx, 28 + jmp charm_roll +charm_chance_web: + mov ecx, 35 + jmp charm_roll +charm_chance_bee: + mov ecx, 12 + jmp charm_roll +charm_chance_moon: + mov ecx, 18 + jmp charm_roll +charm_chance_crown: + mov ecx, 24 + jmp charm_roll +charm_chance_mirror: + mov ecx, 16 + jmp charm_roll +charm_chance_dice: + mov ecx, 10 + jmp charm_roll +charm_chance_blood: + mov ecx, 40 + jmp charm_roll +charm_chance_hourglass: + mov ecx, 22 + jmp charm_roll +charm_chance_horseshoe: + mov ecx, 9 + jmp charm_roll +charm_chance_joker: + mov ecx, 33 + jmp charm_roll +charm_chance_phoenix: + mov ecx, 26 + jmp charm_roll +charm_chance_compass: + mov ecx, 19 + jmp charm_roll +charm_chance_tooth: + mov ecx, 15 + jmp charm_roll +charm_chance_eye: + mov ecx, 31 + jmp charm_roll +charm_chance_key: + mov ecx, 13 + jmp charm_roll +charm_chance_candle: + mov ecx, 38 + jmp charm_roll +charm_chance_chip: + mov ecx, 20 + jmp charm_roll +charm_chance_snake: + mov ecx, 29 + jmp charm_roll +charm_chance_ace: + mov ecx, 17 + jmp charm_roll +charm_chance_devil: + mov ecx, 50 +charm_roll: + invoke RandomRange, 100 + cmp eax, ecx + jb charm_save_hit + xor eax, eax + ret + +charm_save_hit: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopCharmSaveText + call ResetColor + dec shopCharmUses + + mov ebx, shopCharmLevel + cmp ebx, 2 + je charm_penalty_bell + cmp ebx, 3 + je charm_penalty_diamond + cmp ebx, 4 + je charm_penalty_skull + cmp ebx, 5 + je charm_penalty_web + cmp ebx, 7 + je charm_penalty_moon + cmp ebx, 8 + je charm_penalty_crown + cmp ebx, 9 + je charm_penalty_mirror + cmp ebx, 11 + je charm_penalty_blood + cmp ebx, 12 + je charm_penalty_hourglass + cmp ebx, 14 + je charm_penalty_joker + cmp ebx, 15 + je charm_penalty_phoenix + cmp ebx, 16 + je charm_penalty_compass + cmp ebx, 17 + je charm_penalty_tooth + cmp ebx, 18 + je charm_penalty_eye + cmp ebx, 20 + je charm_penalty_candle + cmp ebx, 22 + je charm_penalty_snake + cmp ebx, 23 + je charm_penalty_ace + cmp ebx, 24 + je charm_penalty_devil + jmp charm_penalty_done + +charm_penalty_bell: + invoke AddSuspicion, 4 + jmp charm_penalty_done +charm_penalty_diamond: + invoke AddSuspicion, 8 + jmp charm_penalty_done +charm_penalty_web: + invoke AddSuspicion, 20 + jmp charm_penalty_done +charm_penalty_moon: + invoke AddSuspicion, 8 + jmp charm_penalty_done +charm_penalty_crown: + invoke AddSuspicion, 12 + jmp charm_penalty_done +charm_penalty_mirror: + invoke AddSuspicion, 6 + jmp charm_penalty_done +charm_penalty_hourglass: + invoke AddSuspicion, 15 + jmp charm_penalty_done +charm_penalty_joker: + invoke AddSuspicion, 30 + jmp charm_penalty_done +charm_penalty_phoenix: + invoke AddSuspicion, 10 + jmp charm_penalty_done +charm_penalty_compass: + invoke AddSuspicion, 12 + jmp charm_penalty_done +charm_penalty_eye: + invoke AddSuspicion, 18 + jmp charm_penalty_done +charm_penalty_snake: + invoke AddSuspicion, 16 + jmp charm_penalty_done +charm_penalty_ace: + invoke AddSuspicion, 7 + jmp charm_penalty_done +charm_penalty_blood: + invoke AddSuspicion, 25 + mov ebx, 4 + jmp charm_take_fraction +charm_penalty_skull: + mov ebx, 2 + jmp charm_take_fraction +charm_penalty_tooth: + mov ebx, 5 + jmp charm_take_fraction +charm_penalty_candle: + invoke AddSuspicion, 35 + mov ebx, 3 + jmp charm_take_fraction +charm_penalty_devil: + invoke AddSuspicion, 45 + mov ebx, 2 +charm_take_fraction: + mov eax, currentBet + xor edx, edx + div ebx + cmp eax, 1 + jae charm_have_price + mov eax, 1 +charm_have_price: + cmp bankroll, eax + jae charm_sub_price + mov eax, bankroll +charm_sub_price: + sub bankroll, eax + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET charmPenaltyText + invoke PrintUInt, eax + invoke PrintStr, OFFSET nl + call ResetColor + +charm_penalty_done: + call RegisterDraw + invoke UnlockAchievement, 20h, OFFSET achCharmName + cmp shopCharmUses, 0 + jne charm_still_alive + mov shopCharmLevel, 0 + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET shopCharmBurnText + call ResetColor +charm_still_alive: + call SaveGame + call PrintBank + call PrintCroupierDraw + mov eax, 1 + ret +TryCharmSave ENDP + +; --- PayLose: банк, ставки, стресс, подозрение и экономика казино --- +PayLose PROC + cmp cheatGodMode, 0 + jne pay_lose_cheat_win + cmp cheatLuckyWin, 0 + jne pay_lose_cheat_once + jmp pay_lose_normal +pay_lose_cheat_once: + mov cheatLuckyWin, 0 +pay_lose_cheat_win: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET cheatSavedText + call ResetColor + call PayWin + ret +pay_lose_normal: + call TryCharmSave + cmp eax, 1 + je pay_lose_charm_saved + mov eax, currentBet + cmp bankroll, eax + jae pay_lose_sub + mov bankroll, 0 + jmp pay_lose_done +pay_lose_sub: + sub bankroll, eax +pay_lose_done: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET moneyLoseText + invoke PrintUInt, currentBet + call ResetColor + invoke PrintStr, OFFSET nl + invoke RegisterLoss, currentBet + call PrintBank + call PrintCroupierLose + call CheckBankrupt +pay_lose_charm_saved: + ret +PayLose ENDP + +; --- PayDraw: банк, ставки, стресс, подозрение и экономика казино --- +PayDraw PROC + mov lastGameResult, 3 + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET moneyDrawText + call ResetColor + call RegisterDraw + call PrintBank + call PrintCroupierDraw + ret +PayDraw ENDP + +; --- PaySlotPair: банк, ставки, стресс, подозрение и экономика казино --- +PaySlotPair PROC + mov lastGameResult, 1 + mov eax, currentBet + add bankroll, eax + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET moneyWinText + invoke PrintUInt, currentBet + call ResetColor + invoke PrintStr, OFFSET nl + call PrintBank + ret +PaySlotPair ENDP + +; --- PaySlotJackpot: банк, ставки, стресс, подозрение и экономика казино --- +PaySlotJackpot PROC uses ebx + mov lastGameResult, 1 + mov eax, currentBet + mov ebx, 5 + mul ebx + add bankroll, eax + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET moneyWinText + invoke PrintUInt, eax + call ResetColor + invoke PrintStr, OFFSET nl + call PrintBank + invoke UnlockAchievement, 4, OFFSET achJackpotName + ret +PaySlotJackpot ENDP + +; --- ConfigureConsoleSize: задает стартовый размер окна консоли без масштабирования ASCII --- +ConfigureConsoleSize PROC + invoke SetConsoleWindowInfo, hOut, 1, OFFSET consoleRectTiny + + invoke SetConsoleScreenBufferSize, hOut, 012C00A0h ; 160 x 300 buffer + cmp eax, 0 + je try_console_140 + invoke SetConsoleWindowInfo, hOut, 1, OFFSET consoleRect160 + cmp eax, 0 + jne console_size_done + +try_console_140: + invoke SetConsoleWindowInfo, hOut, 1, OFFSET consoleRectTiny + invoke SetConsoleScreenBufferSize, hOut, 012C008Ch ; 140 x 300 buffer + cmp eax, 0 + je try_console_120 + invoke SetConsoleWindowInfo, hOut, 1, OFFSET consoleRect140 + cmp eax, 0 + jne console_size_done + +try_console_120: + invoke SetConsoleWindowInfo, hOut, 1, OFFSET consoleRectTiny + invoke SetConsoleScreenBufferSize, hOut, 012C0078h ; 120 x 300 buffer + cmp eax, 0 + je console_size_done + invoke SetConsoleWindowInfo, hOut, 1, OFFSET consoleRect120 + +console_size_done: + ret +ConfigureConsoleSize ENDP +; --- HomeCursor: служебные функции консоли и случайных чисел --- +HomeCursor PROC + invoke SetConsoleCursorPosition, hOut, 0 + ret +HomeCursor ENDP + +; --- ClearView: служебные функции консоли и случайных чисел --- +ClearView PROC uses eax edx + LOCAL csbi[22]:BYTE + LOCAL cells:DWORD + + call ResetColor + invoke GetConsoleScreenBufferInfo, hOut, ADDR csbi + cmp eax, 0 + jne clear_console_buffer + invoke PrintStr, OFFSET clearLines + ret + +clear_console_buffer: + movzx eax, word ptr csbi[0] + movzx edx, word ptr csbi[2] + mul edx + mov cells, eax + invoke FillConsoleOutputCharacterA, hOut, 32, cells, 0, ADDR charsWritten + call HomeCursor + ret +ClearView ENDP + +; --- RandomRange: служебные функции консоли и случайных чисел --- +RandomRange PROC uses ecx edx, range:DWORD + mov eax, seed + imul eax, 214013 + add eax, 2531011 + mov seed, eax + shr eax, 16 + and eax, 7FFFh + xor edx, edx + mov ecx, range + div ecx + mov eax, edx + ret +RandomRange ENDP + +; --- ResetDeck: карты, руки, очки и базовая карточная логика --- +ResetDeck PROC uses ecx edi + mov ecx, 52 + mov edi, OFFSET deckUsed +reset_loop: + mov byte ptr [edi], 0 + inc edi + loop reset_loop + ret +ResetDeck ENDP + +; --- DrawCard: карты, руки, очки и базовая карточная логика --- +DrawCard PROC uses edi +draw_again: + invoke RandomRange, 52 + mov edi, OFFSET deckUsed + add edi, eax + cmp byte ptr [edi], 0 + jne draw_again + mov byte ptr [edi], 1 + ret +DrawCard ENDP +; --- CardValue21: карты, руки, очки и базовая карточная логика --- +CardValue21 PROC uses ecx edx, card:DWORD + mov eax, card + xor edx, edx + mov ecx, 13 + div ecx + mov eax, edx + cmp eax, 8 + jbe numeric_card + cmp eax, 9 + je jack_card + cmp eax, 10 + je queen_card + cmp eax, 11 + je king_card + mov eax, 11 + ret +numeric_card: + add eax, 2 + ret +jack_card: + mov eax, 2 + ret +queen_card: + mov eax, 3 + ret +king_card: + mov eax, 4 + ret +CardValue21 ENDP + +; --- CardValueBJ: карты, руки, очки и базовая карточная логика --- +CardValueBJ PROC uses ecx edx, card:DWORD + mov eax, card + xor edx, edx + mov ecx, 13 + div ecx + mov eax, edx + cmp eax, 8 + jbe bj_numeric + cmp eax, 12 + je bj_ace + mov eax, 10 + ret +bj_numeric: + add eax, 2 + ret +bj_ace: + mov eax, 11 + ret +CardValueBJ ENDP + +; --- AdjustPlayerAces: карты, руки, очки и базовая карточная логика --- +AdjustPlayerAces PROC +adjust_player: + cmp playerTotal, 21 + jbe adjust_player_done + cmp playerAces, 0 + je adjust_player_done + sub playerTotal, 10 + dec playerAces + jmp adjust_player +adjust_player_done: + ret +AdjustPlayerAces ENDP + +; --- AdjustDealerAces: карты, руки, очки и базовая карточная логика --- +AdjustDealerAces PROC +adjust_dealer: + cmp dealerTotal, 21 + jbe adjust_dealer_done + cmp dealerAces, 0 + je adjust_dealer_done + sub dealerTotal, 10 + dec dealerAces + jmp adjust_dealer +adjust_dealer_done: + ret +AdjustDealerAces ENDP + +; --- PrintScore: вывод текста, цветов, картинок и элементов интерфейса --- +PrintScore PROC + invoke PrintStr, OFFSET yourScoreText + invoke PrintUInt, playerTotal + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET dealerScoreText + invoke PrintUInt, dealerTotal + invoke PrintStr, OFFSET nl + ret +PrintScore ENDP + +; --- PrintCard: вывод текста, цветов, картинок и элементов интерфейса --- +PrintCard PROC uses eax ebx ecx edx esi, card:DWORD + mov eax, card + xor edx, edx + mov ecx, 13 + div ecx + mov ebx, eax + mov esi, edx + + invoke PrintUtf8, OFFSET cardTop + invoke PrintUtf8, OFFSET cardSuitLeft + invoke PrintSuit, ebx + invoke PrintUtf8, OFFSET cardSuitRight + + cmp esi, 8 + jne one_rank + invoke PrintUtf8, OFFSET cardRankTenL + invoke PrintStr, ranks[esi * 4] + invoke PrintUtf8, OFFSET cardRankTenR + jmp rank_done +one_rank: + invoke PrintUtf8, OFFSET cardRankOneL + invoke PrintStr, ranks[esi * 4] + invoke PrintUtf8, OFFSET cardRankOneR +rank_done: + invoke PrintUtf8, OFFSET cardEmpty + invoke PrintUtf8, OFFSET cardEmpty + invoke PrintUtf8, OFFSET cardCenterL + invoke PrintSuit, ebx + invoke PrintUtf8, OFFSET cardCenterR + invoke PrintUtf8, OFFSET cardBottom + ret +PrintCard ENDP + +; --- AddPlayer21: карты, руки, очки и базовая карточная логика --- +AddPlayer21 PROC uses eax ebx + call PlayCardSound + call DrawCard + mov ebx, eax + invoke PrintStr, OFFSET yourCardText + invoke PrintCard, ebx + invoke CardValue21, ebx + add playerTotal, eax + ret +AddPlayer21 ENDP + +; --- AddDealer21: карты, руки, очки и базовая карточная логика --- +AddDealer21 PROC uses eax ebx + call PlayCardSound + call DrawCard + mov ebx, eax + invoke PrintStr, OFFSET dealerCardText + invoke PrintCard, ebx + invoke CardValue21, ebx + add dealerTotal, eax + ret +AddDealer21 ENDP + +; --- Reset21Hands: карты, руки, очки и базовая карточная логика --- +Reset21Hands PROC + mov playerTotal, 0 + mov dealerTotal, 0 + mov playerCnt21, 0 + mov aiCnt21, 0 + mov revealAI21, 0 + ret +Reset21Hands ENDP + +; --- DrawPlayer21Hand: карты, руки, очки и базовая карточная логика --- +DrawPlayer21Hand PROC uses ebx ecx + cmp playerCnt21, 10 + jae draw_player21_done + call PlayCardSound + call DrawCard + mov ebx, playerCnt21 + mov playerHand21[ebx * 4], eax + inc playerCnt21 +draw_player21_done: + ret +DrawPlayer21Hand ENDP + +; --- DrawAI21Hand: карты, руки, очки и базовая карточная логика --- +DrawAI21Hand PROC uses ebx ecx + cmp aiCnt21, 10 + jae draw_ai21_done + call PlayCardSound + call DrawCard + mov ebx, aiCnt21 + mov aiHand21[ebx * 4], eax + inc aiCnt21 +draw_ai21_done: + ret +DrawAI21Hand ENDP + +; --- PrintHandTop: вывод текста, цветов, картинок и элементов интерфейса --- +PrintHandTop PROC uses eax, count:DWORD + mov rowIndex, 0 +top_loop: + mov eax, rowIndex + cmp eax, count + jae top_done + invoke PrintUtf8, OFFSET cardTopSeg + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp top_loop +top_done: + invoke PrintStr, OFFSET nl + ret +PrintHandTop ENDP + +; --- PrintHandBottom: вывод текста, цветов, картинок и элементов интерфейса --- +PrintHandBottom PROC uses eax, count:DWORD + mov rowIndex, 0 +bottom_loop: + mov eax, rowIndex + cmp eax, count + jae bottom_done + invoke PrintUtf8, OFFSET cardBottomSeg + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp bottom_loop +bottom_done: + invoke PrintStr, OFFSET nl + ret +PrintHandBottom ENDP + +; --- PrintHandBlankLine: вывод текста, цветов, картинок и элементов интерфейса --- +PrintHandBlankLine PROC uses eax, count:DWORD, reveal:DWORD + mov rowIndex, 0 +blank_loop: + mov eax, rowIndex + cmp eax, count + jae blank_done + cmp reveal, 0 + je blank_hidden + invoke PrintUtf8, OFFSET cardEmptySeg + jmp blank_next +blank_hidden: + call SetCardBackColor + invoke PrintCardBackSegLine, 4 + call ResetColor +blank_next: + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp blank_loop +blank_done: + invoke PrintStr, OFFSET nl + ret +PrintHandBlankLine ENDP + +; --- PrintHandSuitLine: вывод текста, цветов, картинок и элементов интерфейса --- +PrintHandSuitLine PROC uses eax ebx ecx edx, pHand:DWORD, count:DWORD, reveal:DWORD + LOCAL suitIndex:DWORD + + mov rowIndex, 0 +suit_loop: + mov eax, rowIndex + cmp eax, count + jae suit_done + cmp reveal, 0 + je suit_hidden + + mov ebx, pHand + mov eax, [ebx + eax * 4] + xor edx, edx + mov ecx, 13 + div ecx + mov suitIndex, eax + + invoke PrintUtf8, OFFSET cardSuitLeft + mov eax, suitIndex + invoke PrintSuit, eax + invoke PrintUtf8, OFFSET cardSuitRightSeg + jmp suit_next +suit_hidden: + call SetCardBackColor + invoke PrintCardBackSegLine, 1 + call ResetColor +suit_next: + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp suit_loop +suit_done: + invoke PrintStr, OFFSET nl + ret +PrintHandSuitLine ENDP + +; --- PrintHandRankLine: вывод текста, цветов, картинок и элементов интерфейса --- +PrintHandRankLine PROC uses eax ebx ecx edx, pHand:DWORD, count:DWORD, reveal:DWORD + LOCAL rankIndex:DWORD + + mov rowIndex, 0 +rank_loop_row: + mov eax, rowIndex + cmp eax, count + jae rank_done_row + cmp reveal, 0 + je rank_hidden + + mov ebx, pHand + mov eax, [ebx + eax * 4] + xor edx, edx + mov ecx, 13 + div ecx + mov rankIndex, edx + + cmp edx, 8 + jne rank_one_char + invoke PrintUtf8, OFFSET cardRankTenL + mov eax, rankIndex + invoke PrintStr, ranks[eax * 4] + invoke PrintUtf8, OFFSET cardRankTenRSeg + jmp rank_next +rank_one_char: + invoke PrintUtf8, OFFSET cardRankOneL + mov eax, rankIndex + invoke PrintStr, ranks[eax * 4] + invoke PrintUtf8, OFFSET cardRankOneRSeg + jmp rank_next +rank_hidden: + call SetCardBackColor + invoke PrintCardBackSegLine, 2 + call ResetColor +rank_next: + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp rank_loop_row +rank_done_row: + invoke PrintStr, OFFSET nl + ret +PrintHandRankLine ENDP + +; --- PrintHandCenterLine: вывод текста, цветов, картинок и элементов интерфейса --- +PrintHandCenterLine PROC uses eax ebx ecx edx, pHand:DWORD, count:DWORD, reveal:DWORD + LOCAL suitIndex:DWORD + + mov rowIndex, 0 +center_loop: + mov eax, rowIndex + cmp eax, count + jae center_done + cmp reveal, 0 + je center_hidden + + mov ebx, pHand + mov eax, [ebx + eax * 4] + xor edx, edx + mov ecx, 13 + div ecx + mov suitIndex, eax + + invoke PrintUtf8, OFFSET cardCenterL + mov eax, suitIndex + invoke PrintSuit, eax + invoke PrintUtf8, OFFSET cardCenterRSeg + jmp center_next +center_hidden: + call SetCardBackColor + invoke PrintCardBackSegLine, 5 + call ResetColor +center_next: + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp center_loop +center_done: + invoke PrintStr, OFFSET nl + ret +PrintHandCenterLine ENDP + +; --- PrintHandRow21: вывод текста, цветов, картинок и элементов интерфейса --- +PrintHandRow21 PROC pHand:DWORD, count:DWORD, reveal:DWORD + invoke PrintHandTop, count + invoke PrintHandSuitLine, pHand, count, reveal + invoke PrintHandRankLine, pHand, count, reveal + invoke PrintHandBlankLine, count, reveal + invoke PrintHandBlankLine, count, reveal + invoke PrintHandCenterLine, pHand, count, reveal + invoke PrintHandBottom, count + ret +PrintHandRow21 ENDP + +; --- PrintCommunitySuitLine: вывод текста, цветов, картинок и элементов интерфейса --- +PrintCommunitySuitLine PROC uses eax ebx ecx edx + LOCAL suitIndex:DWORD + + mov rowIndex, 0 +community_suit_loop: + mov eax, rowIndex + cmp eax, 5 + jae community_suit_done + cmp eax, communityCnt + jae community_suit_hidden + + mov eax, communityHand[eax * 4] + xor edx, edx + mov ecx, 13 + div ecx + mov suitIndex, eax + invoke PrintUtf8, OFFSET cardSuitLeft + mov eax, suitIndex + invoke PrintSuit, eax + invoke PrintUtf8, OFFSET cardSuitRightSeg + jmp community_suit_next +community_suit_hidden: + call SetCardBackColor + invoke PrintCardBackSegLine, 1 + call ResetColor +community_suit_next: + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp community_suit_loop +community_suit_done: + invoke PrintStr, OFFSET nl + ret +PrintCommunitySuitLine ENDP + +; --- PrintCommunityRankLine: вывод текста, цветов, картинок и элементов интерфейса --- +PrintCommunityRankLine PROC uses eax ecx edx + LOCAL rankIndex:DWORD + + mov rowIndex, 0 +community_rank_loop: + mov eax, rowIndex + cmp eax, 5 + jae community_rank_done + cmp eax, communityCnt + jae community_rank_hidden + + mov eax, communityHand[eax * 4] + xor edx, edx + mov ecx, 13 + div ecx + mov rankIndex, edx + cmp edx, 8 + jne community_rank_one + invoke PrintUtf8, OFFSET cardRankTenL + mov eax, rankIndex + invoke PrintStr, ranks[eax * 4] + invoke PrintUtf8, OFFSET cardRankTenRSeg + jmp community_rank_next +community_rank_one: + invoke PrintUtf8, OFFSET cardRankOneL + mov eax, rankIndex + invoke PrintStr, ranks[eax * 4] + invoke PrintUtf8, OFFSET cardRankOneRSeg + jmp community_rank_next +community_rank_hidden: + call SetCardBackColor + invoke PrintCardBackSegLine, 2 + call ResetColor +community_rank_next: + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp community_rank_loop +community_rank_done: + invoke PrintStr, OFFSET nl + ret +PrintCommunityRankLine ENDP + +; --- PrintCommunityBlankLine: вывод текста, цветов, картинок и элементов интерфейса --- +PrintCommunityBlankLine PROC uses eax + mov rowIndex, 0 +community_blank_loop: + mov eax, rowIndex + cmp eax, 5 + jae community_blank_done + cmp eax, communityCnt + jae community_blank_hidden + invoke PrintUtf8, OFFSET cardEmptySeg + jmp community_blank_next +community_blank_hidden: + call SetCardBackColor + invoke PrintCardBackSegLine, 4 + call ResetColor +community_blank_next: + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp community_blank_loop +community_blank_done: + invoke PrintStr, OFFSET nl + ret +PrintCommunityBlankLine ENDP + +; --- PrintCommunityCenterLine: вывод текста, цветов, картинок и элементов интерфейса --- +PrintCommunityCenterLine PROC uses eax ecx edx + LOCAL suitIndex:DWORD + + mov rowIndex, 0 +community_center_loop: + mov eax, rowIndex + cmp eax, 5 + jae community_center_done + cmp eax, communityCnt + jae community_center_hidden + + mov eax, communityHand[eax * 4] + xor edx, edx + mov ecx, 13 + div ecx + mov suitIndex, eax + invoke PrintUtf8, OFFSET cardCenterL + mov eax, suitIndex + invoke PrintSuit, eax + invoke PrintUtf8, OFFSET cardCenterRSeg + jmp community_center_next +community_center_hidden: + call SetCardBackColor + invoke PrintCardBackSegLine, 5 + call ResetColor +community_center_next: + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp community_center_loop +community_center_done: + invoke PrintStr, OFFSET nl + ret +PrintCommunityCenterLine ENDP + +; --- PrintCommunityRow: вывод текста, цветов, картинок и элементов интерфейса --- +PrintCommunityRow PROC + invoke PrintHandTop, 5 + call PrintCommunitySuitLine + call PrintCommunityRankLine + call PrintCommunityBlankLine + call PrintCommunityBlankLine + call PrintCommunityCenterLine + invoke PrintHandBottom, 5 + ret +PrintCommunityRow ENDP + +; --- PrintFlipLine: вывод текста, цветов, картинок и элементов интерфейса --- +PrintFlipLine PROC uses eax, count:DWORD, pSegment:DWORD + mov rowIndex, 0 +flip_line_loop: + mov eax, rowIndex + cmp eax, count + jae flip_line_done + invoke PrintUtf8, pSegment + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp flip_line_loop +flip_line_done: + invoke PrintStr, OFFSET nl + ret +PrintFlipLine ENDP + +; --- PrintFlipCards: вывод текста, цветов, картинок и элементов интерфейса --- +PrintFlipCards PROC count:DWORD, pSegment:DWORD + invoke PrintHandTop, count + invoke PrintFlipLine, count, pSegment + invoke PrintFlipLine, count, pSegment + invoke PrintFlipLine, count, pSegment + invoke PrintFlipLine, count, pSegment + invoke PrintFlipLine, count, pSegment + invoke PrintHandBottom, count + ret +PrintFlipCards ENDP + +; --- ShowRevealFrame21: звук, интро или покадровая анимация --- +ShowRevealFrame21 PROC pSegment:DWORD + call ClearView + invoke PrintTitleColor, OFFSET twentyOneTitle + invoke PrintStr, OFFSET revealText + invoke PrintStr, OFFSET aiCardsText + invoke PrintFlipCards, aiCnt21, pSegment + invoke PrintStr, OFFSET playerCardsText + invoke PrintHandRow21, OFFSET playerHand21, playerCnt21, 1 + call CalcPlayerScore21 + invoke PrintStr, OFFSET yourScoreText + invoke PrintUInt, playerTotal + invoke PrintStr, OFFSET nl + ret +ShowRevealFrame21 ENDP + +; --- AnimateReveal21: карты, руки, очки и базовая карточная логика --- +AnimateReveal21 PROC + call PlayCardSound + invoke ShowRevealFrame21, OFFSET cardBackSeg + invoke Sleep, FLIP_DELAY + invoke ShowRevealFrame21, OFFSET cardFlipLeft + invoke Sleep, FLIP_DELAY + invoke ShowRevealFrame21, OFFSET cardFlipMid + invoke Sleep, FLIP_DELAY + invoke ShowRevealFrame21, OFFSET cardFlipRight + invoke Sleep, FLIP_DELAY + mov revealAI21, 1 + call ClearView + invoke PrintTitleColor, OFFSET twentyOneTitle + call ShowAllCards21 + invoke Sleep, FLIP_FINAL_DELAY + ret +AnimateReveal21 ENDP + +; --- CalcPlayerScore21: карты, руки, очки и базовая карточная логика --- +CalcPlayerScore21 PROC uses eax ebx + mov playerTotal, 0 + mov rowIndex, 0 +calc_player21_loop: + mov eax, rowIndex + cmp eax, playerCnt21 + jae calc_player21_done + mov ebx, playerHand21[eax * 4] + invoke CardValue21, ebx + add playerTotal, eax + inc rowIndex + jmp calc_player21_loop +calc_player21_done: + ret +CalcPlayerScore21 ENDP + +; --- CalcAIScore21: карты, руки, очки и базовая карточная логика --- +CalcAIScore21 PROC uses eax ebx + mov dealerTotal, 0 + mov rowIndex, 0 +calc_ai21_loop: + mov eax, rowIndex + cmp eax, aiCnt21 + jae calc_ai21_done + mov ebx, aiHand21[eax * 4] + invoke CardValue21, ebx + add dealerTotal, eax + inc rowIndex + jmp calc_ai21_loop +calc_ai21_done: + ret +CalcAIScore21 ENDP + +; --- ShowAllCards21: карты, руки, очки и базовая карточная логика --- +ShowAllCards21 PROC + cmp revealAI21, 0 + jne show_ai_cards + invoke PrintStr, OFFSET aiThinkText +show_ai_cards: + invoke PrintStr, OFFSET aiCardsText + invoke PrintHandRow21, OFFSET aiHand21, aiCnt21, revealAI21 + invoke PrintStr, OFFSET playerCardsText + invoke PrintHandRow21, OFFSET playerHand21, playerCnt21, 1 + + call CalcPlayerScore21 + call CalcAIScore21 + invoke PrintStr, OFFSET yourScoreText + invoke PrintUInt, playerTotal + invoke PrintStr, OFFSET nl + cmp revealAI21, 0 + je show_cards_done + invoke PrintStr, OFFSET aiScoreText + invoke PrintUInt, dealerTotal + invoke PrintStr, OFFSET nl +show_cards_done: + ret +ShowAllCards21 ENDP +; --- PeekUnusedCard: карты, руки, очки и базовая карточная логика --- +PeekUnusedCard PROC uses edi +peek_unused_again: + invoke RandomRange, 52 + mov edi, OFFSET deckUsed + add edi, eax + cmp byte ptr [edi], 0 + jne peek_unused_again + ret +PeekUnusedCard ENDP + +; --- CheatPeek21: банк, ставки, стресс, подозрение и экономика казино --- +CheatPeek21 PROC uses eax ebx + invoke PrintStr, OFFSET cheatPeekText + call PeekUnusedCard + mov ebx, eax + invoke PrintCard, ebx + invoke AddSuspicion, 12 + call CheckCasinoHeat + call Pause + ret +CheatPeek21 ENDP + +; --- CheatSwap21: банк, ставки, стресс, подозрение и экономика казино --- +CheatSwap21 PROC uses eax ebx + cmp playerCnt21, 0 + je cheat_swap21_none + call DrawCard + mov ebx, playerCnt21 + dec ebx + mov playerHand21[ebx * 4], eax + call CalcPlayerScore21 + invoke PrintStr, OFFSET cheatSwapText + invoke AddSuspicion, 18 + call CheckCasinoHeat + call Pause + ret +cheat_swap21_none: + invoke PrintStr, OFFSET cheatNoTargetText + call Pause + ret +CheatSwap21 ENDP + +; --- CheatPeekPoker: банк, ставки, стресс, подозрение и экономика казино --- +CheatPeekPoker PROC uses eax ebx + mov ebx, communityCnt + cmp ebx, 5 + jb cheat_peek_poker_table + invoke PrintStr, OFFSET cheatPeekText + mov ebx, 0 + mov eax, aiHand21[ebx * 4] + invoke PrintCard, eax + jmp cheat_peek_poker_done +cheat_peek_poker_table: + invoke PrintStr, OFFSET cheatPeekText + mov eax, communityHand[ebx * 4] + invoke PrintCard, eax +cheat_peek_poker_done: + invoke AddSuspicion, 12 + call CheckCasinoHeat + call Pause + ret +CheatPeekPoker ENDP + +; --- CheatSwapPoker: банк, ставки, стресс, подозрение и экономика казино --- +CheatSwapPoker PROC uses eax + cmp playerCnt21, 0 + je cheat_swap_poker_none + call DrawCard + mov DWORD PTR playerHand21[0], eax + invoke PrintStr, OFFSET cheatSwapText + invoke AddSuspicion, 18 + call CheckCasinoHeat + call Pause + ret +cheat_swap_poker_none: + invoke PrintStr, OFFSET cheatNoTargetText + call Pause + ret +CheatSwapPoker ENDP + + +; --- CountDanger21: карты, руки, очки и базовая карточная логика --- +CountDanger21 PROC uses eax ebx esi + call CalcAIScore21 + mov dangerLvl21, 0 + mov cardsLeft21, 0 + mov rowIndex, 0 +danger_loop: + mov eax, rowIndex + cmp eax, 52 + jae danger_done + mov esi, OFFSET deckUsed + cmp byte ptr [esi + eax], 0 + jne danger_next + + inc cardsLeft21 + invoke CardValue21, rowIndex + mov ebx, dealerTotal + add ebx, eax + cmp ebx, 21 + jbe danger_next + inc dangerLvl21 +danger_next: + inc rowIndex + jmp danger_loop +danger_done: + ret +CountDanger21 ENDP + +; --- FinalScreen21: карты, руки, очки и базовая карточная логика --- +FinalScreen21 PROC + call ClearView + mov revealAI21, 1 + call ShowAllCards21 + + mov eax, playerTotal + mov ebx, dealerTotal + cmp eax, 21 + ja final_21_lose + cmp ebx, 21 + ja final_21_win + cmp eax, ebx + ja final_21_win + jb final_21_lose + call PrintDrawEvent + call PayDraw + ret +final_21_win: + call PrintWinEvent + call PayWin + ret +final_21_lose: + call PrintLoseEvent + call PayLose + ret +FinalScreen21 ENDP + +; --- ResetPokerHands: карты, руки, очки и базовая карточная логика --- +ResetPokerHands PROC + mov playerCnt21, 0 + mov aiCnt21, 0 + mov communityCnt, 0 + mov revealAI21, 0 + ret +ResetPokerHands ENDP + +; --- DrawCommunityPoker: покер: оценка комбинаций, ставки, фолды и ИИ --- +DrawCommunityPoker PROC uses ebx ecx + cmp communityCnt, 5 + jae draw_community_done + call PlayCardSound + call DrawCard + mov ebx, communityCnt + mov communityHand[ebx * 4], eax + inc communityCnt +draw_community_done: + ret +DrawCommunityPoker ENDP + +; --- DealPokerHands: карты, руки, очки и базовая карточная логика --- +DealPokerHands PROC uses ecx + mov ecx, 2 +deal_poker_hands_loop: + call DrawPlayer21Hand + call DrawAI21Hand + loop deal_poker_hands_loop + + mov ecx, 5 +deal_poker_table_loop: + call DrawCommunityPoker + loop deal_poker_table_loop + mov communityCnt, 3 + ret +DealPokerHands ENDP + +; --- ShowPokerTable: покер: оценка комбинаций, ставки, фолды и ИИ --- +ShowPokerTable PROC + invoke PrintStr, OFFSET aiCardsText + invoke PrintHandRow21, OFFSET aiHand21, aiCnt21, revealAI21 + invoke PrintStr, OFFSET pokerTableText + call PrintCommunityRow + invoke PrintStr, OFFSET playerCardsText + invoke PrintHandRow21, OFFSET playerHand21, playerCnt21, 1 + ret +ShowPokerTable ENDP + +; --- ShowPokerRevealFrame: звук, интро или покадровая анимация --- +ShowPokerRevealFrame PROC pSegment:DWORD + call ClearView + invoke PrintTitleColor, OFFSET pokerTitle + invoke PrintStr, OFFSET pokerRevealText + invoke PrintStr, OFFSET aiCardsText + invoke PrintFlipCards, aiCnt21, pSegment + invoke PrintStr, OFFSET pokerTableText + call PrintCommunityRow + invoke PrintStr, OFFSET playerCardsText + invoke PrintHandRow21, OFFSET playerHand21, playerCnt21, 1 + ret +ShowPokerRevealFrame ENDP + +; --- AnimateRevealPoker: карты, руки, очки и базовая карточная логика --- +AnimateRevealPoker PROC + call PlayCardSound + invoke ShowPokerRevealFrame, OFFSET cardBackSeg + invoke Sleep, FLIP_DELAY + invoke ShowPokerRevealFrame, OFFSET cardFlipLeft + invoke Sleep, FLIP_DELAY + invoke ShowPokerRevealFrame, OFFSET cardFlipMid + invoke Sleep, FLIP_DELAY + invoke ShowPokerRevealFrame, OFFSET cardFlipRight + invoke Sleep, FLIP_DELAY + mov revealAI21, 1 + call ClearView + invoke PrintTitleColor, OFFSET pokerTitle + call ShowPokerTable + invoke Sleep, FLIP_FINAL_DELAY + ret +AnimateRevealPoker ENDP + +; --- ClearPokerCounts: покер: оценка комбинаций, ставки, фолды и ИИ --- +ClearPokerCounts PROC uses ecx edi + mov ecx, 13 + mov edi, OFFSET rankCounts +clear_rank_counts: + mov byte ptr [edi], 0 + inc edi + loop clear_rank_counts + + mov ecx, 4 + mov edi, OFFSET suitCounts +clear_suit_counts: + mov byte ptr [edi], 0 + inc edi + loop clear_suit_counts + ret +ClearPokerCounts ENDP + +; --- EvaluatePokerN: покер: оценка комбинаций, ставки, фолды и ИИ --- +EvaluatePokerN PROC uses ebx ecx edx esi edi, pHand:DWORD, cardCount:DWORD + call ClearPokerCounts + mov pokerStraight, 0 + mov pokerFlush, 0 + mov pokerHigh, 0 + mov pokerFour, 0FFFFFFFFh + mov pokerTrip, 0FFFFFFFFh + mov pokerPairHigh, 0FFFFFFFFh + mov pokerPairLow, 0FFFFFFFFh + + mov esi, pHand + mov ecx, cardCount +count_poker_cards: + mov eax, [esi] + xor edx, edx + mov ebx, 13 + div ebx + inc byte ptr suitCounts[eax] + inc byte ptr rankCounts[edx] + add esi, 4 + loop count_poker_cards + + mov ecx, 4 + xor ebx, ebx +check_flush_loop: + cmp byte ptr suitCounts[ebx], 5 + jb next_flush_suit + mov pokerFlush, 1 +next_flush_suit: + inc ebx + loop check_flush_loop + + mov ecx, 13 + mov ebx, 12 +find_high_card: + cmp byte ptr rankCounts[ebx], 0 + jne high_card_found + dec ebx + loop find_high_card + jmp check_wheel_straight +high_card_found: + mov pokerHigh, ebx + +check_wheel_straight: + cmp byte ptr rankCounts[12], 0 + je check_normal_straight + cmp byte ptr rankCounts[0], 0 + je check_normal_straight + cmp byte ptr rankCounts[1], 0 + je check_normal_straight + cmp byte ptr rankCounts[2], 0 + je check_normal_straight + cmp byte ptr rankCounts[3], 0 + je check_normal_straight + mov pokerStraight, 1 + mov pokerHigh, 3 + jmp scan_duplicates + +check_normal_straight: + mov ebx, 12 +normal_straight_loop: + cmp ebx, 4 + jb scan_duplicates + cmp byte ptr rankCounts[ebx], 0 + je normal_straight_next + mov eax, ebx + dec eax + cmp byte ptr rankCounts[eax], 0 + je normal_straight_next + dec eax + cmp byte ptr rankCounts[eax], 0 + je normal_straight_next + dec eax + cmp byte ptr rankCounts[eax], 0 + je normal_straight_next + dec eax + cmp byte ptr rankCounts[eax], 0 + je normal_straight_next + mov pokerStraight, 1 + mov pokerHigh, ebx + jmp scan_duplicates +normal_straight_next: + dec ebx + jmp normal_straight_loop + +scan_duplicates: + mov ebx, 12 +duplicate_loop: + cmp ebx, 0FFFFFFFFh + je decide_poker_score + mov al, byte ptr rankCounts[ebx] + cmp al, 4 + jne check_trip_count + mov pokerFour, ebx + jmp duplicate_next +check_trip_count: + cmp al, 3 + jne check_pair_count + cmp pokerTrip, 0FFFFFFFFh + jne second_trip_as_pair + mov pokerTrip, ebx + jmp duplicate_next +second_trip_as_pair: + cmp pokerPairHigh, 0FFFFFFFFh + jne duplicate_next + mov pokerPairHigh, ebx + jmp duplicate_next +check_pair_count: + cmp al, 2 + jne duplicate_next + cmp pokerPairHigh, 0FFFFFFFFh + jne set_low_pair + mov pokerPairHigh, ebx + jmp duplicate_next +set_low_pair: + mov pokerPairLow, ebx +duplicate_next: + dec ebx + jmp duplicate_loop + +decide_poker_score: + cmp pokerStraight, 1 + jne not_straight_flush + cmp pokerFlush, 1 + jne not_straight_flush + mov eax, 8000 + add eax, pokerHigh + ret +not_straight_flush: + cmp pokerFour, 0FFFFFFFFh + je not_four_kind + mov eax, 7000 + add eax, pokerFour + ret +not_four_kind: + cmp pokerTrip, 0FFFFFFFFh + je not_full_house + cmp pokerPairHigh, 0FFFFFFFFh + je not_full_house + mov eax, 6000 + add eax, pokerTrip + ret +not_full_house: + cmp pokerFlush, 1 + jne not_flush + mov eax, 5000 + add eax, pokerHigh + ret +not_flush: + cmp pokerStraight, 1 + jne not_straight + mov eax, 4000 + add eax, pokerHigh + ret +not_straight: + cmp pokerTrip, 0FFFFFFFFh + je not_three_kind + mov eax, 3000 + add eax, pokerTrip + ret +not_three_kind: + cmp pokerPairLow, 0FFFFFFFFh + je not_two_pair + mov eax, pokerPairHigh + mov ebx, 13 + mul ebx + add eax, pokerPairLow + add eax, 2000 + ret +not_two_pair: + cmp pokerPairHigh, 0FFFFFFFFh + je high_card_score + mov eax, 1000 + add eax, pokerPairHigh + ret +high_card_score: + mov eax, pokerHigh + ret +EvaluatePokerN ENDP + +; --- EvaluatePoker: покер: оценка комбинаций, ставки, фолды и ИИ --- +EvaluatePoker PROC pHand:DWORD + invoke EvaluatePokerN, pHand, 5 + ret +EvaluatePoker ENDP + +; --- PrintPokerHandName: вывод текста, цветов, картинок и элементов интерфейса --- +PrintPokerHandName PROC uses eax ebx edx, score:DWORD + mov eax, score + xor edx, edx + mov ebx, 1000 + div ebx + invoke PrintStr, pokerNames[eax * 4] + ret +PrintPokerHandName ENDP + +; --- BuildPokerEvalHand: карты, руки, очки и базовая карточная логика --- +BuildPokerEvalHand PROC uses eax ebx esi edi, pHole:DWORD, pOut:DWORD + mov esi, pHole + mov edi, pOut + + mov eax, [esi] + mov [edi], eax + mov eax, [esi + 4] + mov [edi + 4], eax + + mov eax, communityCnt + add eax, 2 + mov pokerEvalCount, eax + + mov ebx, 0 +build_table_cards: + cmp ebx, communityCnt + jae build_eval_done + mov eax, communityHand[ebx * 4] + mov [edi + ebx * 4 + 8], eax + inc ebx + jmp build_table_cards +build_eval_done: + ret +BuildPokerEvalHand ENDP + +; --- ShowPokerHint: покер: оценка комбинаций, ставки, фолды и ИИ --- +ShowPokerHint PROC + invoke BuildPokerEvalHand, OFFSET playerHand21, OFFSET pokerPlayerEvalHand + invoke EvaluatePokerN, OFFSET pokerPlayerEvalHand, pokerEvalCount + mov pokerPlayerScore, eax + invoke PrintStr, OFFSET pokerHintText + invoke PrintPokerHandName, pokerPlayerScore + ret +ShowPokerHint ENDP + +; --- ShowPokerResult: покер: оценка комбинаций, ставки, фолды и ИИ --- +ShowPokerResult PROC uses ebx + invoke BuildPokerEvalHand, OFFSET playerHand21, OFFSET pokerPlayerEvalHand + mov ebx, pokerEvalCount + invoke BuildPokerEvalHand, OFFSET aiHand21, OFFSET pokerAIEvalHand + mov pokerEvalCount, ebx + + invoke EvaluatePokerN, OFFSET pokerPlayerEvalHand, pokerEvalCount + mov pokerPlayerScore, eax + invoke EvaluatePokerN, OFFSET pokerAIEvalHand, pokerEvalCount + mov pokerAIScore, eax + + invoke PrintStr, OFFSET pokerYourComboText + invoke PrintPokerHandName, pokerPlayerScore + invoke PrintStr, OFFSET pokerAIComboText + invoke PrintPokerHandName, pokerAIScore + + mov eax, pokerPlayerScore + cmp eax, pokerAIScore + ja poker_player_win + jb poker_ai_win + call PrintDrawEvent + call PayDraw + ret +poker_player_win: + call PrintWinEvent + call PayWin + ret +poker_ai_win: + call PrintLoseEvent + call PayLose + ret +ShowPokerResult ENDP + +; --- PokerAIDecide: покер: оценка комбинаций, ставки, фолды и ИИ --- +PokerAIDecide PROC uses ebx edx + invoke BuildPokerEvalHand, OFFSET aiHand21, OFFSET pokerAIEvalHand + invoke EvaluatePokerN, OFFSET pokerAIEvalHand, pokerEvalCount + mov pokerAIScore, eax + + mov eax, pokerAIScore + xor edx, edx + mov ebx, 1000 + div ebx + cmp eax, 1 + jae ai_will_play + + cmp aiDifficulty, 1 + je ai_easy_decide + cmp aiDifficulty, 3 + je ai_hard_decide + +ai_normal_decide: + mov eax, pokerAIScore + cmp eax, 11 + jae ai_normal_random + jmp ai_will_fold +ai_normal_random: + invoke RandomRange, 3 + cmp eax, 0 + je ai_will_fold + jmp ai_will_play + +ai_easy_decide: + invoke RandomRange, 2 + cmp eax, 0 + je ai_will_play + mov eax, pokerAIScore + cmp eax, 10 + jae ai_will_play + jmp ai_will_fold + +ai_hard_decide: + mov eax, pokerAIScore + cmp eax, 10 + jae ai_hard_high_card + invoke RandomRange, 3 + cmp eax, 0 + je ai_will_play + jmp ai_will_fold +ai_hard_high_card: + invoke RandomRange, 4 + cmp eax, 0 + je ai_will_fold + jmp ai_will_play + +ai_will_fold: + xor eax, eax + ret +ai_will_play: + mov eax, 1 + ret +PokerAIDecide ENDP + +; --- PokerAICallRaise: покер: оценка комбинаций, ставки, фолды и ИИ --- +PokerAICallRaise PROC uses ebx ecx edx + invoke BuildPokerEvalHand, OFFSET aiHand21, OFFSET pokerAIEvalHand + invoke EvaluatePokerN, OFFSET pokerAIEvalHand, pokerEvalCount + mov pokerAIScore, eax + + mov eax, pokerAIScore + xor edx, edx + mov ebx, 1000 + div ebx + mov ecx, eax + cmp ecx, 1 + jae ai_call_raise + + mov eax, pokerRaiseAmount + mov ebx, 2 + mul ebx + cmp eax, currentBet + ja ai_big_raise + + cmp aiDifficulty, 1 + je ai_easy_call_bluff + cmp aiDifficulty, 3 + je ai_hard_call_bluff + invoke RandomRange, 3 + cmp eax, 0 + jne ai_call_raise + jmp ai_fold_raise + +ai_big_raise: + cmp aiDifficulty, 1 + je ai_easy_big_raise + cmp aiDifficulty, 3 + je ai_fold_raise + invoke RandomRange, 5 + cmp eax, 0 + je ai_call_raise + jmp ai_fold_raise + +ai_easy_call_bluff: + invoke RandomRange, 2 + cmp eax, 0 + je ai_call_raise + jmp ai_fold_raise + +ai_easy_big_raise: + invoke RandomRange, 3 + cmp eax, 0 + jne ai_call_raise + jmp ai_fold_raise + +ai_hard_call_bluff: + mov eax, pokerAIScore + cmp eax, 12 + jae ai_call_raise + jmp ai_fold_raise + +ai_fold_raise: + xor eax, eax + ret +ai_call_raise: + mov eax, 1 + ret +PokerAICallRaise ENDP + + +; --- HardPokerPlayerExchange: покер: оценка комбинаций, ставки, фолды и ИИ --- +HardPokerPlayerExchange PROC uses eax ebx + cmp aiDifficulty, 3 + jne hard_player_exchange_done + call ClearView + invoke PrintTitleColor, OFFSET pokerTitle + call ShowPokerTable + call ShowPokerHint + invoke PrintStr, OFFSET pokerHardIntroText + invoke PrintStr, OFFSET pokerHardExchangeText + call ReadKey + cmp al, '1' + je hard_replace_first + cmp al, '2' + je hard_replace_second + jmp hard_player_exchange_done +hard_replace_first: + xor ebx, ebx + jmp hard_replace_card +hard_replace_second: + mov ebx, 1 +hard_replace_card: + call PlayCardSound + call DrawCard + mov playerHand21[ebx * 4], eax +hard_player_exchange_done: + ret +HardPokerPlayerExchange ENDP + +; --- HardPokerAIExchange: покер: оценка комбинаций, ставки, фолды и ИИ --- +HardPokerAIExchange PROC uses eax ebx ecx edx + cmp aiDifficulty, 3 + jne hard_ai_exchange_done + invoke PrintStr, OFFSET pokerHardAIExchangeText + invoke Sleep, 650 + + mov eax, aiHand21[0] + xor edx, edx + mov ecx, 13 + div ecx + mov ebx, edx + + mov eax, aiHand21[4] + xor edx, edx + mov ecx, 13 + div ecx + + cmp ebx, edx + je hard_ai_exchange_done + cmp ebx, 8 + jb hard_ai_check_second + cmp edx, 8 + jae hard_ai_exchange_done + +hard_ai_check_second: + cmp ebx, edx + jbe hard_replace_ai_first + mov ebx, 1 + jmp hard_replace_ai_card +hard_replace_ai_first: + xor ebx, ebx +hard_replace_ai_card: + call PlayCardSound + call DrawCard + mov aiHand21[ebx * 4], eax +hard_ai_exchange_done: + ret +HardPokerAIExchange ENDP + +; --- PokerAIRaiseMaybe: покер: оценка комбинаций, ставки, фолды и ИИ --- +PokerAIRaiseMaybe PROC uses ebx ecx edx + invoke BuildPokerEvalHand, OFFSET aiHand21, OFFSET pokerAIEvalHand + invoke EvaluatePokerN, OFFSET pokerAIEvalHand, pokerEvalCount + mov pokerAIScore, eax + + mov eax, bankroll + sub eax, currentBet + cmp eax, 0 + jbe ai_no_raise + mov ecx, eax + + mov eax, pokerAIScore + xor edx, edx + mov ebx, 1000 + div ebx + cmp eax, 2 + jae ai_strong_raise + cmp eax, 1 + je ai_pair_raise_check + + cmp aiDifficulty, 3 + jne ai_no_raise + mov eax, pokerAIScore + cmp eax, 12 + jne ai_no_raise + invoke RandomRange, 7 + cmp eax, 0 + jne ai_no_raise + mov eax, currentBet + xor edx, edx + mov ebx, 3 + div ebx + jmp ai_raise_amount_ready + +ai_pair_raise_check: + cmp aiDifficulty, 1 + je ai_easy_pair_raise + cmp aiDifficulty, 2 + je ai_normal_pair_raise + invoke RandomRange, 3 + cmp eax, 0 + je ai_no_raise + mov eax, currentBet + xor edx, edx + mov ebx, 2 + div ebx + jmp ai_raise_amount_ready + +ai_easy_pair_raise: + invoke RandomRange, 5 + cmp eax, 0 + jne ai_no_raise + mov eax, currentBet + xor edx, edx + mov ebx, 3 + div ebx + jmp ai_raise_amount_ready + +ai_normal_pair_raise: + invoke RandomRange, 3 + cmp eax, 0 + je ai_no_raise + mov eax, currentBet + xor edx, edx + mov ebx, 2 + div ebx + jmp ai_raise_amount_ready + +ai_strong_raise: + cmp aiDifficulty, 1 + je ai_easy_strong_raise + cmp aiDifficulty, 2 + je ai_normal_strong_raise + mov eax, currentBet + jmp ai_raise_amount_ready + +ai_easy_strong_raise: + invoke RandomRange, 3 + cmp eax, 0 + jne ai_no_raise + mov eax, currentBet + xor edx, edx + mov ebx, 2 + div ebx + jmp ai_raise_amount_ready + +ai_normal_strong_raise: + invoke RandomRange, 2 + cmp eax, 0 + je ai_no_raise + mov eax, currentBet + xor edx, edx + mov ebx, 2 + div ebx + jmp ai_raise_amount_ready + +ai_raise_amount_ready: + cmp eax, 50 + jae ai_raise_min_ok + mov eax, 50 +ai_raise_min_ok: + cmp eax, ecx + jbe ai_raise_store + mov eax, ecx +ai_raise_store: + cmp eax, 0 + jbe ai_no_raise + mov pokerAIRaiseAmount, eax + mov pokerRaiseAmount, eax + mov eax, 1 + ret +ai_no_raise: + xor eax, eax + ret +PokerAIRaiseMaybe ENDP +; --- PokerPlayerExchange: покер: оценка комбинаций, ставки, фолды и ИИ --- +PokerPlayerExchange PROC uses eax ebx + mov pokerReplaceIndex, 0 +player_exchange_loop: + cmp pokerReplaceIndex, 5 + jae player_exchange_done + call ClearView + invoke PrintTitleColor, OFFSET pokerTitle + call ShowPokerTable + invoke PrintStr, OFFSET pokerReplaceText + mov eax, pokerReplaceIndex + inc eax + invoke PrintUInt, eax + invoke PrintStr, OFFSET pokerReplaceTail + call ReadKey + cmp al, 'y' + je replace_player_card + cmp al, 'Y' + je replace_player_card + cmp al, '1' + je replace_player_card + jmp next_player_exchange +replace_player_card: + call DrawCard + mov ebx, pokerReplaceIndex + mov playerHand21[ebx * 4], eax +next_player_exchange: + inc pokerReplaceIndex + jmp player_exchange_loop +player_exchange_done: + ret +PokerPlayerExchange ENDP + +; --- PokerAIExchange: покер: оценка комбинаций, ставки, фолды и ИИ --- +PokerAIExchange PROC uses eax ebx ecx edx + invoke EvaluatePoker, OFFSET aiHand21 + xor edx, edx + mov ebx, 1000 + div ebx + cmp eax, 4 + jae ai_exchange_done + + mov pokerReplaced, 0 + mov pokerReplaceIndex, 0 +ai_exchange_loop: + cmp pokerReplaceIndex, 5 + jae ai_exchange_done + cmp pokerReplaced, 3 + jae ai_exchange_done + + mov ebx, pokerReplaceIndex + mov eax, aiHand21[ebx * 4] + xor edx, edx + mov ecx, 13 + div ecx + cmp byte ptr rankCounts[edx], 1 + jne next_ai_exchange + call DrawCard + mov ebx, pokerReplaceIndex + mov aiHand21[ebx * 4], eax + inc pokerReplaced +next_ai_exchange: + inc pokerReplaceIndex + jmp ai_exchange_loop +ai_exchange_done: + ret +PokerAIExchange ENDP + +; --- AddPlayerBJ: карты, руки, очки и базовая карточная логика --- +AddPlayerBJ PROC uses eax ebx edx + call DrawCard + mov ebx, eax + invoke PrintStr, OFFSET yourCardText + invoke PrintCard, ebx + invoke CardValueBJ, ebx + add playerTotal, eax + cmp eax, 11 + jne no_player_ace + inc playerAces +no_player_ace: + inc playerCards + call AdjustPlayerAces + ret +AddPlayerBJ ENDP + +; --- AddDealerBJ: карты, руки, очки и базовая карточная логика --- +AddDealerBJ PROC uses eax ebx + call DrawCard + mov ebx, eax + invoke PrintStr, OFFSET dealerCardText + invoke PrintCard, ebx + invoke CardValueBJ, ebx + add dealerTotal, eax + cmp eax, 11 + jne no_dealer_ace + inc dealerAces +no_dealer_ace: + call AdjustDealerAces + ret +AddDealerBJ ENDP + +; --- CompareTotals: служебный блок игровой логики --- +CompareTotals PROC + call PrintScore + cmp playerTotal, 21 + ja player_lost + cmp dealerTotal, 21 + ja dealer_lost + mov eax, playerTotal + cmp eax, dealerTotal + ja player_won + jb player_lost + call PrintDrawEvent + ret +player_won: + call PrintWinEvent + ret +player_lost: + call PrintLoseEvent + ret +dealer_lost: + invoke PrintStr, OFFSET dealerBustText + ret +CompareTotals ENDP + +; --- Game21: карты, руки, очки и базовая карточная логика --- +Game21 PROC +start_21: + call ClearView + invoke PrintTitleColor, OFFSET twentyOneTitle + call PromptBet + call ResetDeck + call Reset21Hands + + call DrawPlayer21Hand + call DrawPlayer21Hand + call DrawAI21Hand + call DrawAI21Hand + +player_21_loop: + call ClearView + invoke PrintTitleColor, OFFSET twentyOneTitle + call ShowAllCards21 + + cmp playerTotal, 21 + ja player_21_bust + cmp playerTotal, 21 + je ai_21_turn + + invoke PrintStr, OFFSET hitText + invoke PrintStr, OFFSET cheatMoveText + call ReadKey + cmp al, '1' + je hit_21 + cmp al, 'y' + je hit_21 + cmp al, 'Y' + je hit_21 + cmp al, '3' + je cheat_peek_21_action + cmp al, '4' + je cheat_swap_21_action + jmp ai_21_turn +cheat_peek_21_action: + call CheatPeek21 + jmp player_21_loop +cheat_swap_21_action: + call CheatSwap21 + jmp player_21_loop +hit_21: + cmp playerCnt21, 10 + jae ai_21_turn + call DrawPlayer21Hand + jmp player_21_loop + +player_21_bust: + invoke PrintStr, OFFSET bustText + call PayLose + jmp ask_21_again + +ai_21_turn: +ai_21_cycle: + call ClearView + invoke PrintTitleColor, OFFSET twentyOneTitle + call ShowAllCards21 + + cmp playerTotal, 21 + ja finish_21 + cmp dealerTotal, 21 + je finish_21 + cmp aiDifficulty, 1 + je ai_21_easy + cmp aiDifficulty, 2 + je ai_21_normal + cmp dealerTotal, 12 + jb ai_21_must_hit + + mov eax, dealerTotal + cmp eax, playerTotal + jae finish_21 + + call CountDanger21 + mov eax, dangerLvl21 + mov ebx, 2 + mul ebx + cmp eax, cardsLeft21 + ja finish_21 + jmp ai_21_must_hit + +ai_21_easy: + cmp dealerTotal, 16 + jb ai_21_must_hit + jmp finish_21 + +ai_21_normal: + cmp dealerTotal, 17 + jb ai_21_must_hit + jmp finish_21 + +ai_21_must_hit: + cmp aiCnt21, 10 + jae finish_21 + invoke PrintStr, OFFSET aiMoveText + invoke Sleep, 650 + call DrawAI21Hand + call CalcAIScore21 + cmp dealerTotal, 21 + ja finish_21 + jmp ai_21_cycle + +finish_21: + call AnimateReveal21 + call FinalScreen21 +ask_21_again: + cmp tournamentMode, 1 + je game21_tournament_return + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je start_21 + cmp al, 'Y' + je start_21 +game21_tournament_return: + ret +Game21 ENDP + +; --- GamePoker: покер: оценка комбинаций, ставки, фолды и ИИ --- +GamePoker PROC +start_poker: + call ClearView + invoke PrintTitleColor, OFFSET pokerTitle + call PromptBet + call ResetDeck + call ResetPokerHands + call DealPokerHands + call HardPokerPlayerExchange + call HardPokerAIExchange + +poker_stage_loop: + call ClearView + invoke PrintTitleColor, OFFSET pokerTitle + call ShowPokerTable + call ShowPokerHint + call ShowPokerMoney + cmp communityCnt, 5 + jae poker_showdown + invoke PrintStr, OFFSET pokerDecisionText + invoke PrintStr, OFFSET cheatMoveText + call ReadKey + cmp al, '1' + je poker_play + cmp al, 'y' + je poker_play + cmp al, 'Y' + je poker_play + cmp al, '2' + je poker_raise + cmp al, 'r' + je poker_raise + cmp al, 'R' + je poker_raise + cmp al, '3' + je poker_cheat_peek + cmp al, '4' + je poker_cheat_swap + invoke PrintStr, OFFSET pokerFoldText + call PayLose + jmp ask_poker_again + +poker_cheat_peek: + call CheatPeekPoker + jmp poker_stage_loop +poker_cheat_swap: + call CheatSwapPoker + jmp poker_stage_loop + +poker_raise: + call PromptPokerRaise + cmp eax, 0 + je poker_stage_loop + invoke UnlockAchievement, 200h, OFFSET achPokerRaiseName + invoke PrintStr, OFFSET aiThinkText + invoke Sleep, 700 + call PokerAICallRaise + cmp eax, 0 + jne poker_raise_called + invoke PrintStr, OFFSET pokerAIFoldRaiseText + invoke UnlockAchievement, 400h, OFFSET achPokerBluffName + call PayWin + jmp ask_poker_again +poker_raise_called: + invoke PrintStr, OFFSET pokerAICallRaiseText + invoke Sleep, 700 + jmp poker_next_stage + +poker_play: + invoke PrintStr, OFFSET aiThinkText + invoke Sleep, 700 + call PokerAIDecide + cmp eax, 0 + jne poker_ai_plays + invoke PrintStr, OFFSET pokerAIFoldText + call PayWin + jmp ask_poker_again + +poker_ai_plays: + call PokerAIRaiseMaybe + cmp eax, 0 + je poker_next_stage + invoke PrintStr, OFFSET pokerAIRaiseText + invoke PrintUInt, pokerAIRaiseAmount + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET pokerCallRaiseText + call ReadKey + cmp al, '1' + je poker_call_ai_raise + cmp al, 'y' + je poker_call_ai_raise + cmp al, 'Y' + je poker_call_ai_raise + invoke PrintStr, OFFSET pokerFoldToRaiseText + call PayLose + jmp ask_poker_again +poker_call_ai_raise: + mov eax, currentBet + add eax, pokerAIRaiseAmount + cmp eax, bankroll + jbe poker_call_ai_raise_ok + invoke PrintStr, OFFSET tooBigBetText + invoke PrintStr, OFFSET pokerFoldToRaiseText + call PayLose + jmp ask_poker_again +poker_call_ai_raise_ok: + mov currentBet, eax + invoke PrintStr, OFFSET pokerPlayerCallText + invoke PrintUInt, currentBet + invoke PrintStr, OFFSET nl + invoke Sleep, 700 +poker_next_stage: + cmp communityCnt, 5 + jae poker_showdown + invoke PrintStr, OFFSET pokerNextCardText + invoke Sleep, 900 + inc communityCnt + jmp poker_stage_loop + +poker_showdown: + call AnimateRevealPoker + call ShowPokerResult + +ask_poker_again: + cmp tournamentMode, 1 + je poker_tournament_return + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je start_poker + cmp al, 'Y' + je start_poker +poker_tournament_return: + ret +GamePoker ENDP + +; --- PrintSlotSymbol: вывод текста, цветов, картинок и элементов интерфейса --- +PrintSlotSymbol PROC uses eax, value:DWORD + mov eax, value + cmp eax, 0 + je slot_symbol_green + cmp eax, 1 + je slot_symbol_yellow + cmp eax, 2 + je slot_symbol_red + cmp eax, 3 + je slot_symbol_yellow + cmp eax, 4 + je slot_symbol_cyan + cmp eax, 5 + je slot_symbol_yellow + invoke SetColor, COLOR_BAD + jmp slot_symbol_print +slot_symbol_green: + invoke SetColor, COLOR_MONEY + jmp slot_symbol_print +slot_symbol_yellow: + invoke SetColor, COLOR_WARN + jmp slot_symbol_print +slot_symbol_red: + invoke SetColor, COLOR_BAD + jmp slot_symbol_print +slot_symbol_cyan: + invoke SetColor, COLOR_TITLE +slot_symbol_print: + mov eax, value + invoke PrintStr, slotSymbols[eax * 4] + call ResetColor + ret +PrintSlotSymbol ENDP + +; --- MoveCursor: служебные функции консоли и случайных чисел --- +MoveCursor PROC uses eax edx, xPos:DWORD, yPos:DWORD + mov eax, yPos + shl eax, 16 + mov edx, xPos + and edx, 0FFFFh + or eax, edx + invoke SetConsoleCursorPosition, hOut, eax + ret +MoveCursor ENDP + +; --- PrintSkullAt: вывод текста, цветов, картинок и элементов интерфейса --- +PrintSkullAt PROC uses eax, xPos:DWORD, yPos:DWORD + mov eax, yPos + invoke MoveCursor, xPos, eax + invoke PrintUtf8, OFFSET skullSeg1 + mov eax, yPos + inc eax + invoke MoveCursor, xPos, eax + invoke PrintUtf8, OFFSET skullSeg2 + mov eax, yPos + add eax, 2 + invoke MoveCursor, xPos, eax + invoke PrintUtf8, OFFSET skullSeg3 + mov eax, yPos + add eax, 3 + invoke MoveCursor, xPos, eax + invoke PrintUtf8, OFFSET skullSeg4 + mov eax, yPos + add eax, 4 + invoke MoveCursor, xPos, eax + invoke PrintUtf8, OFFSET skullSeg5 + mov eax, yPos + add eax, 5 + invoke MoveCursor, xPos, eax + invoke PrintUtf8, OFFSET skullSeg6 + mov eax, yPos + add eax, 6 + invoke MoveCursor, xPos, eax + invoke PrintUtf8, OFFSET skullSeg7 + mov eax, yPos + add eax, 7 + invoke MoveCursor, xPos, eax + invoke PrintUtf8, OFFSET skullSeg8 + ret +PrintSkullAt ENDP + +; --- ShowSkullSlideFrame: звук, интро или покадровая анимация --- +ShowSkullSlideFrame PROC x1:DWORD, y1:DWORD, x2:DWORD, y2:DWORD, x3:DWORD, y3:DWORD + call ClearView + invoke PrintTitleColor, OFFSET skullsTitle + invoke PrintStr, OFFSET skullsShuffleText + invoke PrintSkullAt, x1, y1 + invoke PrintSkullAt, x2, y2 + invoke PrintSkullAt, x3, y3 + invoke Sleep, 220 + ret +ShowSkullSlideFrame ENDP + +; --- AnimateSkullSwap12: игра с черепами и шариком, перемешивание и отрисовка --- +AnimateSkullSwap12 PROC + invoke ShowSkullSlideFrame, 0, 5, 18, 5, 36, 5 + invoke ShowSkullSlideFrame, 4, 6, 14, 4, 36, 5 + invoke ShowSkullSlideFrame, 8, 7, 10, 3, 36, 5 + invoke ShowSkullSlideFrame, 14, 6, 4, 4, 36, 5 + invoke ShowSkullSlideFrame, 18, 5, 0, 5, 36, 5 + ret +AnimateSkullSwap12 ENDP + +; --- AnimateSkullSwap23: игра с черепами и шариком, перемешивание и отрисовка --- +AnimateSkullSwap23 PROC + invoke ShowSkullSlideFrame, 0, 5, 18, 5, 36, 5 + invoke ShowSkullSlideFrame, 0, 5, 22, 6, 32, 4 + invoke ShowSkullSlideFrame, 0, 5, 26, 7, 28, 3 + invoke ShowSkullSlideFrame, 0, 5, 32, 6, 22, 4 + invoke ShowSkullSlideFrame, 0, 5, 36, 5, 18, 5 + ret +AnimateSkullSwap23 ENDP + +; --- AnimateSkullSwap13: игра с черепами и шариком, перемешивание и отрисовка --- +AnimateSkullSwap13 PROC + invoke ShowSkullSlideFrame, 0, 5, 18, 5, 36, 5 + invoke ShowSkullSlideFrame, 8, 7, 18, 5, 28, 3 + invoke ShowSkullSlideFrame, 18, 8, 18, 5, 18, 2 + invoke ShowSkullSlideFrame, 28, 7, 18, 5, 8, 3 + invoke ShowSkullSlideFrame, 36, 5, 18, 5, 0, 5 + ret +AnimateSkullSwap13 ENDP + + +; --- PrintSkullRows: вывод текста, цветов, картинок и элементов интерфейса --- +PrintSkullRows PROC + invoke PrintUtf8, OFFSET skullSeg1 + invoke PrintUtf8, OFFSET skullSeg1 + invoke PrintUtf8, OFFSET skullSeg1 + invoke PrintStr, OFFSET nl + invoke PrintUtf8, OFFSET skullSeg2 + invoke PrintUtf8, OFFSET skullSeg2 + invoke PrintUtf8, OFFSET skullSeg2 + invoke PrintStr, OFFSET nl + invoke PrintUtf8, OFFSET skullSeg3 + invoke PrintUtf8, OFFSET skullSeg3 + invoke PrintUtf8, OFFSET skullSeg3 + invoke PrintStr, OFFSET nl + invoke PrintUtf8, OFFSET skullSeg4 + invoke PrintUtf8, OFFSET skullSeg4 + invoke PrintUtf8, OFFSET skullSeg4 + invoke PrintStr, OFFSET nl + invoke PrintUtf8, OFFSET skullSeg5 + invoke PrintUtf8, OFFSET skullSeg5 + invoke PrintUtf8, OFFSET skullSeg5 + invoke PrintStr, OFFSET nl + invoke PrintUtf8, OFFSET skullSeg6 + invoke PrintUtf8, OFFSET skullSeg6 + invoke PrintUtf8, OFFSET skullSeg6 + invoke PrintStr, OFFSET nl + invoke PrintUtf8, OFFSET skullSeg7 + invoke PrintUtf8, OFFSET skullSeg7 + invoke PrintUtf8, OFFSET skullSeg7 + invoke PrintStr, OFFSET nl + invoke PrintUtf8, OFFSET skullSeg8 + invoke PrintUtf8, OFFSET skullSeg8 + invoke PrintUtf8, OFFSET skullSeg8 + invoke PrintStr, OFFSET nl + ret +PrintSkullRows ENDP +; --- PrintSkulls: вывод текста, цветов, картинок и элементов интерфейса --- +PrintSkulls PROC reveal:DWORD + call PrintSkullRows + invoke PrintStr, OFFSET skullNums + cmp reveal, 0 + je print_skull_blank_ball + mov eax, skullBallPos + cmp eax, 0 + je print_skull_ball_1 + cmp eax, 1 + je print_skull_ball_2 + invoke PrintStr, OFFSET skullBall3 + ret +print_skull_ball_1: + invoke PrintStr, OFFSET skullBall1 + ret +print_skull_ball_2: + invoke PrintStr, OFFSET skullBall2 + ret +print_skull_blank_ball: + invoke PrintStr, OFFSET skullBlankBall + ret +PrintSkulls ENDP +; --- PrintSkullFaces: вывод текста, цветов, картинок и элементов интерфейса --- +PrintSkullFaces PROC + call PrintSkullRows + invoke PrintStr, OFFSET skullBlankBall + ret +PrintSkullFaces ENDP +; --- ShowSkullShuffleFrame: звук, интро или покадровая анимация --- +ShowSkullShuffleFrame PROC pSwapText:DWORD + call ClearView + invoke PrintTitleColor, OFFSET skullsTitle + invoke PrintStr, OFFSET skullsShuffleText + invoke PrintStr, pSwapText + call PrintSkullFaces + invoke Sleep, 400 + ret +ShowSkullShuffleFrame ENDP + +; --- ShuffleSkulls: игра с черепами и шариком, перемешивание и отрисовка --- +ShuffleSkulls PROC uses eax ebx + cmp aiDifficulty, 1 + je skulls_easy_steps + cmp aiDifficulty, 3 + je skulls_hard_steps + +skulls_normal_steps: + invoke RandomRange, 4 + add eax, 9 + jmp skulls_store_steps + +skulls_easy_steps: + invoke RandomRange, 4 + add eax, 5 + jmp skulls_store_steps + +skulls_hard_steps: + invoke RandomRange, 5 + add eax, 12 + +skulls_store_steps: + mov skullMax, eax + mov skullStep, 0 + +shuffle_skulls_loop: + mov eax, skullStep + cmp eax, skullMax + jae shuffle_skulls_done + + cmp skullStep, 0 + je skulls_play_first_move_sound + mov eax, skullMax + dec eax + cmp skullStep, eax + je skulls_play_last_move_sound + jmp skulls_after_move_sound + +skulls_play_first_move_sound: + call PlayStoneSound + invoke Sleep, 180 + jmp skulls_after_move_sound +skulls_play_last_move_sound: + call PlayStoneSound + +skulls_after_move_sound: + invoke RandomRange, 3 + cmp eax, 0 + je shuffle_12 + cmp eax, 1 + je shuffle_23 + jmp shuffle_13 + +shuffle_12: + mov eax, skullBallPos + cmp eax, 0 + je ball_12_to_2 + cmp eax, 1 + je ball_12_to_1 + jmp show_shuffle_12 +ball_12_to_2: + mov skullBallPos, 1 + jmp show_shuffle_12 +ball_12_to_1: + mov skullBallPos, 0 +show_shuffle_12: + call AnimateSkullSwap12 + jmp shuffle_next + +shuffle_23: + mov eax, skullBallPos + cmp eax, 1 + je ball_23_to_3 + cmp eax, 2 + je ball_23_to_2 + jmp show_shuffle_23 +ball_23_to_3: + mov skullBallPos, 2 + jmp show_shuffle_23 +ball_23_to_2: + mov skullBallPos, 1 +show_shuffle_23: + call AnimateSkullSwap23 + jmp shuffle_next + +shuffle_13: + mov eax, skullBallPos + cmp eax, 0 + je ball_13_to_3 + cmp eax, 2 + je ball_13_to_1 + jmp show_shuffle_13 +ball_13_to_3: + mov skullBallPos, 2 + jmp show_shuffle_13 +ball_13_to_1: + mov skullBallPos, 0 +show_shuffle_13: + call AnimateSkullSwap13 + +shuffle_next: + inc skullStep + jmp shuffle_skulls_loop +shuffle_skulls_done: + ret +ShuffleSkulls ENDP + +; --- GameSkulls: игра с черепами и шариком, перемешивание и отрисовка --- +GameSkulls PROC +skulls_start: + call ClearView + invoke PrintTitleColor, OFFSET skullsTitle + invoke PrintStr, OFFSET skullsIntroText + call PromptBet + invoke RandomRange, 3 + mov skullBallPos, eax + + call ClearView + invoke PrintTitleColor, OFFSET skullsTitle + invoke PrintStr, OFFSET skullsShowText + invoke PrintSkulls, 1 + invoke Sleep, 1600 + + call ClearView + invoke PrintTitleColor, OFFSET skullsTitle + invoke PrintStr, OFFSET skullsHideText + invoke PrintSkulls, 0 + invoke Sleep, 800 + + call ShuffleSkulls + +skulls_guess_again: + call ClearView + invoke PrintTitleColor, OFFSET skullsTitle + invoke PrintSkulls, 0 + invoke PrintStr, OFFSET skullsGuessText + call ReadKey + cmp al, '1' + je skull_guess_1 + cmp al, '2' + je skull_guess_2 + cmp al, '3' + je skull_guess_3 + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp skulls_guess_again + +skull_guess_1: + mov skullGuess, 0 + jmp skulls_reveal +skull_guess_2: + mov skullGuess, 1 + jmp skulls_reveal +skull_guess_3: + mov skullGuess, 2 + +skulls_reveal: + call ClearView + invoke PrintTitleColor, OFFSET skullsTitle + invoke PrintSkulls, 1 + invoke PrintStr, OFFSET skullsBallText + mov eax, skullBallPos + inc eax + invoke PrintUInt, eax + invoke PrintStr, OFFSET nl + + mov eax, skullGuess + cmp eax, skullBallPos + jne skulls_lost + invoke PrintStr, OFFSET skullsWinText + invoke PaySlotMultiplier, 2 + jmp ask_skulls_again + +skulls_lost: + invoke PrintStr, OFFSET skullsLoseText + call PayLose + +ask_skulls_again: + cmp tournamentMode, 1 + je skulls_tournament_return + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je skulls_start + cmp al, 'Y' + je skulls_start +skulls_tournament_return: + ret +GameSkulls ENDP +; --- PrintRevolver: вывод текста, цветов, картинок и элементов интерфейса --- +PrintRevolver PROC pGun:DWORD + invoke SetColor, COLOR_WARN + invoke PrintStr, pGun + call ResetColor + ret +PrintRevolver ENDP + +; --- PrintRouletteTurnGun: вывод текста, цветов, картинок и элементов интерфейса --- +PrintRouletteTurnGun PROC + cmp rrTurn, 0 + jne print_rr_ai_gun + invoke PrintRevolver, OFFSET rrGunDown + ret +print_rr_ai_gun: + invoke PrintRevolver, OFFSET rrGunUp + ret +PrintRouletteTurnGun ENDP + +; --- ShowRouletteStatus: русская рулетка или казино-рулетка --- +ShowRouletteStatus PROC + call ClearView + invoke PrintTitleColor, OFFSET rouletteTitle + call PrintRouletteTurnGun + invoke PrintStr, OFFSET rrDangerText + invoke PrintUInt, rrBullets + invoke PrintStr, OFFSET nl + ret +ShowRouletteStatus ENDP + +; --- ShowRouletteSpinFrame: звук, интро или покадровая анимация --- +ShowRouletteSpinFrame PROC pGun:DWORD + call ClearView + invoke PrintTitleColor, OFFSET rouletteTitle + invoke PrintRevolver, pGun + invoke PrintStr, OFFSET rrSpinText + invoke Sleep, 85 + ret +ShowRouletteSpinFrame ENDP + +; --- AnimateRouletteSpin: русская рулетка или казино-рулетка --- +AnimateRouletteSpin PROC + invoke ShowRouletteSpinFrame, OFFSET rrGunUp + invoke ShowRouletteSpinFrame, OFFSET rrGunUpLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunDownLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunDown + invoke ShowRouletteSpinFrame, OFFSET rrGunDownRight + invoke ShowRouletteSpinFrame, OFFSET rrGunRight + invoke ShowRouletteSpinFrame, OFFSET rrGunUpRight + invoke ShowRouletteSpinFrame, OFFSET rrGunUp + invoke ShowRouletteSpinFrame, OFFSET rrGunUpLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunDownLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunDown + invoke ShowRouletteSpinFrame, OFFSET rrGunDownRight + invoke ShowRouletteSpinFrame, OFFSET rrGunRight + invoke ShowRouletteSpinFrame, OFFSET rrGunUpRight + cmp rrTurn, 0 + jne roulette_spin_ai_final + invoke ShowRouletteSpinFrame, OFFSET rrGunUp + invoke ShowRouletteSpinFrame, OFFSET rrGunUpLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunDownLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunDown + jmp roulette_spin_final_message +roulette_spin_ai_final: + invoke ShowRouletteSpinFrame, OFFSET rrGunUp +roulette_spin_final_message: + call ShowRouletteStatus + cmp rrTurn, 0 + jne roulette_start_ai + invoke PrintStr, OFFSET rrStartsPlayerText + jmp roulette_start_done +roulette_start_ai: + invoke PrintStr, OFFSET rrStartsAIText +roulette_start_done: + invoke Sleep, 400 + ret +AnimateRouletteSpin ENDP + +; --- SetupRoulette: русская рулетка или казино-рулетка --- +SetupRoulette PROC uses eax ebx ecx edx + mov rrBulletMask, 0 + mov eax, aiDifficulty + mov rrBullets, eax + mov ecx, eax +roulette_place_loop: + cmp ecx, 0 + je roulette_setup_done_bullets +roulette_pick_chamber: + invoke RandomRange, 6 + mov ebx, 1 + push ecx + mov ecx, eax + shl ebx, cl + pop ecx + mov edx, rrBulletMask + test edx, ebx + jne roulette_pick_chamber + or rrBulletMask, ebx + dec ecx + jmp roulette_place_loop +roulette_setup_done_bullets: + invoke RandomRange, 6 + mov rrChamber, eax + invoke RandomRange, 2 + mov rrTurn, eax + ret +SetupRoulette ENDP + +; --- RouletteChamberLoaded: аккаунты, файлы сохранений и загрузка профиля --- +RouletteChamberLoaded PROC uses ecx edx + mov edx, 1 + mov ecx, rrChamber + shl edx, cl + mov eax, rrBulletMask + test eax, edx + jne roulette_loaded + xor eax, eax + ret +roulette_loaded: + mov eax, 1 + ret +RouletteChamberLoaded ENDP + +; --- AdvanceRouletteChamber: русская рулетка или казино-рулетка --- +AdvanceRouletteChamber PROC + inc rrChamber + cmp rrChamber, 6 + jb advance_roulette_done + mov rrChamber, 0 +advance_roulette_done: + ret +AdvanceRouletteChamber ENDP + +; --- PrintBang: вывод текста, цветов, картинок и элементов интерфейса --- +PrintBang PROC + call PlayRouletteShotSound + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET rrBangText + call ResetColor + ret +PrintBang ENDP + +; --- GameRoulette: русская рулетка или казино-рулетка --- +GameRoulette PROC +roulette_start: + call ClearView + invoke PrintTitleColor, OFFSET rouletteTitle + invoke PrintStr, OFFSET rrIntroText + call PromptBet + call PlayRouletteSpinSound + call SetupRoulette + call AnimateRouletteSpin + +roulette_turn_loop: + call ShowRouletteStatus + cmp rrTurn, 0 + je roulette_player_turn + +roulette_ai_turn: + invoke PrintStr, OFFSET rrAITurnText + invoke Sleep, 900 + call RouletteChamberLoaded + cmp eax, 1 + je roulette_ai_dead + call PlayRouletteDrySound + invoke PrintStr, OFFSET rrClickText + invoke Sleep, 900 + call AdvanceRouletteChamber + mov rrTurn, 0 + jmp roulette_turn_loop + +roulette_player_turn: + invoke PrintStr, OFFSET rrPlayerTurnText + call ReadAnyKey + invoke PrintStr, OFFSET nl + call RouletteChamberLoaded + cmp eax, 1 + je roulette_player_dead + call PlayRouletteDrySound + invoke PrintStr, OFFSET rrClickText + invoke Sleep, 900 + call AdvanceRouletteChamber + mov rrTurn, 1 + jmp roulette_turn_loop + +roulette_player_dead: + call PrintBang + invoke PrintStr, OFFSET rrPlayerLoseText + call PayLose + jmp ask_roulette_again + +roulette_ai_dead: + invoke UnlockAchievement, 1000h, OFFSET achRussianWinName + call PrintBang + invoke PrintStr, OFFSET rrAIShotText + invoke PrintStr, OFFSET rrPayoutText + mov eax, aiDifficulty + inc eax + mov rrPayout, eax + invoke PaySlotMultiplier, rrPayout + +ask_roulette_again: + cmp tournamentMode, 1 + je roulette_tournament_return + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je roulette_start + cmp al, 'Y' + je roulette_start +roulette_tournament_return: + ret +GameRoulette ENDP + + +; --- ShowBuckshotFrame: звук, интро или покадровая анимация --- +ShowBuckshotFrame PROC pFrame:DWORD, frameDelay:DWORD + call ClearView + invoke PrintTitleColor, OFFSET buckshotTitle + invoke SetColor, COLOR_CARD + invoke PrintStr, pFrame + call ResetColor + invoke Sleep, frameDelay + ret +ShowBuckshotFrame ENDP + +; --- AnimateBuckshotLoad: аккаунты, файлы сохранений и загрузка профиля --- +AnimateBuckshotLoad PROC + invoke ShowBuckshotFrame, OFFSET bsShotgunLoad1, 180 + invoke ShowBuckshotFrame, OFFSET bsShotgunLoad2, 260 + invoke ShowBuckshotFrame, OFFSET bsShotgunLoad3, 260 + ret +AnimateBuckshotLoad ENDP + +; --- AnimateBuckshotFire: Buckshot Roulette: патроны, предметы, ходы игрока и ИИ --- +AnimateBuckshotFire PROC + invoke ShowBuckshotFrame, OFFSET bsShotgunFire, 220 + ret +AnimateBuckshotFire ENDP + +; --- AnimateBuckshotDry: Buckshot Roulette: патроны, предметы, ходы игрока и ИИ --- +AnimateBuckshotDry PROC + invoke ShowBuckshotFrame, OFFSET bsShotgunDry, 180 + ret +AnimateBuckshotDry ENDP +; --- BuckshotGiveItems: Buckshot Roulette: патроны, предметы, ходы игрока и ИИ --- +BuckshotGiveItems PROC uses eax + invoke RandomRange, 2 + inc eax + mov bsPlayerGlass, eax + invoke RandomRange, 2 + mov bsPlayerSaw, eax + invoke RandomRange, 2 + inc eax + mov bsPlayerBeer, eax + invoke RandomRange, 2 + mov bsPlayerCuffs, eax + invoke RandomRange, 2 + inc eax + mov bsAIGlass, eax + invoke RandomRange, 2 + mov bsAISaw, eax + invoke RandomRange, 2 + inc eax + mov bsAIBeer, eax + invoke RandomRange, 2 + mov bsAICuffs, eax + ret +BuckshotGiveItems ENDP + +; --- BuckshotLoad: аккаунты, файлы сохранений и загрузка профиля --- +BuckshotLoad PROC uses eax ebx ecx edi + invoke RandomRange, 5 + add eax, 4 + mov bsShellCount, eax + mov bsShellIndex, 0 + mov bsLiveCount, 0 + mov bsBlankCount, 0 + mov bsKnownShell, 0FFFFFFFFh + mov edi, OFFSET bsShells + mov ecx, bsShellCount +bs_load_loop: + invoke RandomRange, 2 + mov [edi], eax + cmp eax, 1 + je bs_count_live + inc bsBlankCount + jmp bs_count_done +bs_count_live: + inc bsLiveCount +bs_count_done: + add edi, 4 + loop bs_load_loop + cmp bsLiveCount, 0 + jne bs_has_live + mov dword ptr bsShells, 1 + inc bsLiveCount + dec bsBlankCount +bs_has_live: + cmp bsBlankCount, 0 + jne bs_has_blank + mov dword ptr bsShells+4, 0 + inc bsBlankCount + dec bsLiveCount +bs_has_blank: + invoke PrintStr, OFFSET bsLoadText + invoke PrintUInt, bsLiveCount + invoke PrintStr, OFFSET bsLiveText + invoke PrintUInt, bsBlankCount + invoke PrintStr, OFFSET bsBlankText + invoke Sleep, 900 + ret +BuckshotLoad ENDP + +; --- BuckshotCurrentShell: Buckshot Roulette: патроны, предметы, ходы игрока и ИИ --- +BuckshotCurrentShell PROC uses ebx + mov ebx, bsShellIndex + mov eax, bsShells[ebx*4] + ret +BuckshotCurrentShell ENDP + +; --- BuckshotAdvance: Buckshot Roulette: патроны, предметы, ходы игрока и ИИ --- +BuckshotAdvance PROC + cmp bsShell, 1 + je bs_advance_live + cmp bsBlankCount, 0 + je bs_advance_count_done + dec bsBlankCount + jmp bs_advance_count_done +bs_advance_live: + cmp bsLiveCount, 0 + je bs_advance_count_done + dec bsLiveCount +bs_advance_count_done: + inc bsShellIndex + mov bsKnownShell, 0FFFFFFFFh + mov bsDamage, 1 + ret +BuckshotAdvance ENDP + +; --- BuckshotRemaining: Buckshot Roulette: патроны, предметы, ходы игрока и ИИ --- +BuckshotRemaining PROC uses ebx + mov eax, bsShellCount + sub eax, bsShellIndex + ret +BuckshotRemaining ENDP + +; --- BuckshotPrintKnown: Buckshot Roulette: патроны, предметы, ходы игрока и ИИ --- +BuckshotPrintKnown PROC + mov eax, bsKnownShell + cmp eax, 1 + je bs_print_known_live + cmp eax, 0 + je bs_print_known_blank + invoke PrintStr, OFFSET bsKnownUnknownText + ret +bs_print_known_live: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET bsKnownLiveText + call ResetColor + ret +bs_print_known_blank: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET bsKnownBlankText + call ResetColor + ret +BuckshotPrintKnown ENDP + +; --- BuckshotStatus: Buckshot Roulette: патроны, предметы, ходы игрока и ИИ --- +BuckshotStatus PROC + call ClearView + invoke PrintTitleColor, OFFSET buckshotTitle + invoke SetColor, COLOR_CARD + invoke PrintStr, OFFSET bsShotgunArt + call ResetColor + invoke PrintStr, OFFSET bsHPText + invoke PrintUInt, bsPlayerHP + invoke PrintStr, OFFSET bsAIHPText + invoke PrintUInt, bsAIHP + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET bsShellInfoText + invoke PrintUInt, bsLiveCount + invoke PrintStr, OFFSET bsLiveText + invoke PrintUInt, bsBlankCount + invoke PrintStr, OFFSET bsBlankText + invoke PrintStr, OFFSET bsLeftText + call BuckshotRemaining + invoke PrintUInt, eax + invoke PrintStr, OFFSET nl + call BuckshotPrintKnown + invoke PrintStr, OFFSET bsItemsText + invoke PrintUInt, bsPlayerGlass + invoke PrintStr, OFFSET bsSawText + invoke PrintUInt, bsPlayerSaw + invoke PrintStr, OFFSET bsBeerText + invoke PrintUInt, bsPlayerBeer + invoke PrintStr, OFFSET bsCuffsText + invoke PrintUInt, bsPlayerCuffs + invoke PrintStr, OFFSET nl + ret +BuckshotStatus ENDP + +; --- BuckshotAfterShotTurn: Buckshot Roulette: патроны, предметы, ходы игрока и ИИ --- +BuckshotAfterShotTurn PROC + cmp bsShell, 1 + je bs_after_switch + cmp bsTurn, 0 + je bs_after_player_blank + cmp bsTarget, 1 + je bs_after_keep + jmp bs_after_switch +bs_after_player_blank: + cmp bsTarget, 0 + je bs_after_keep +bs_after_switch: + xor bsTurn, 1 +bs_after_keep: + cmp bsTurn, 0 + je bs_check_skip_player + cmp bsSkipAI, 0 + je bs_after_done + mov bsSkipAI, 0 + invoke PrintStr, OFFSET bsSkipAIText + invoke Sleep, 800 + mov bsTurn, 0 + ret +bs_check_skip_player: + cmp bsSkipPlayer, 0 + je bs_after_done + mov bsSkipPlayer, 0 + invoke PrintStr, OFFSET bsSkipPlayerText + invoke Sleep, 800 + mov bsTurn, 1 +bs_after_done: + ret +BuckshotAfterShotTurn ENDP + +; --- BuckshotShoot: Buckshot Roulette: патроны, предметы, ходы игрока и ИИ --- +BuckshotShoot PROC uses eax ebx + call BuckshotCurrentShell + mov bsShell, eax + cmp bsTarget, 0 + je bs_shoot_player_text + invoke PrintStr, OFFSET bsShootAIText + jmp bs_shoot_text_done +bs_shoot_player_text: + invoke PrintStr, OFFSET bsShootPlayerText +bs_shoot_text_done: + cmp bsShell, 1 + je bs_live_shot + call AnimateBuckshotDry + call PlayRouletteDrySound + invoke PrintStr, OFFSET bsDryText + call BuckshotAdvance + invoke Sleep, 900 + call BuckshotAfterShotTurn + ret +bs_live_shot: + call AnimateBuckshotFire + call PlayRouletteShotSound + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET bsHitText + invoke PrintUInt, bsDamage + invoke PrintStr, OFFSET nl + call ResetColor + mov eax, bsDamage + cmp bsTarget, 0 + je bs_damage_player + cmp bsAIHP, eax + ja bs_sub_ai + mov bsAIHP, 0 + jmp bs_damage_done +bs_sub_ai: + sub bsAIHP, eax + jmp bs_damage_done +bs_damage_player: + cmp bsPlayerHP, eax + ja bs_sub_player + mov bsPlayerHP, 0 + jmp bs_damage_done +bs_sub_player: + sub bsPlayerHP, eax +bs_damage_done: + call BuckshotAdvance + invoke Sleep, 1000 + call BuckshotAfterShotTurn + ret +BuckshotShoot ENDP + +; --- BuckshotUseGlass: Buckshot Roulette: патроны, предметы, ходы игрока и ИИ --- +BuckshotUseGlass PROC + call BuckshotCurrentShell + mov bsKnownShell, eax + invoke PrintStr, OFFSET bsGlassUseText + call BuckshotPrintKnown + invoke Sleep, 1000 + ret +BuckshotUseGlass ENDP + +; --- BuckshotUseBeer: Buckshot Roulette: патроны, предметы, ходы игрока и ИИ --- +BuckshotUseBeer PROC + call BuckshotCurrentShell + mov bsShell, eax + invoke PrintStr, OFFSET bsBeerUseText + cmp bsShell, 1 + je bs_beer_live + invoke PrintStr, OFFSET bsBlankLoadedText + jmp bs_beer_done +bs_beer_live: + invoke PrintStr, OFFSET bsLiveLoadedText +bs_beer_done: + call BuckshotAdvance + invoke Sleep, 1000 + ret +BuckshotUseBeer ENDP + +; --- BuckshotPlayerTurn: Buckshot Roulette: патроны, предметы, ходы игрока и ИИ --- +BuckshotPlayerTurn PROC +bs_player_again: + call BuckshotStatus + invoke PrintStr, OFFSET bsPlayerTurnText + invoke PrintStr, OFFSET bsMenuText + call ReadKey + cmp al, '1' + je bs_player_self + cmp al, '2' + je bs_player_ai + cmp al, '3' + je bs_player_glass + cmp al, '4' + je bs_player_saw + cmp al, '5' + je bs_player_beer + cmp al, '6' + je bs_player_cuffs + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp bs_player_again +bs_player_self: + mov bsTarget, 0 + call BuckshotShoot + ret +bs_player_ai: + mov bsTarget, 1 + call BuckshotShoot + ret +bs_player_glass: + cmp bsPlayerGlass, 0 + je bs_player_no_item + dec bsPlayerGlass + call BuckshotUseGlass + jmp bs_player_again +bs_player_saw: + cmp bsPlayerSaw, 0 + je bs_player_no_item + dec bsPlayerSaw + mov bsDamage, 2 + invoke PrintStr, OFFSET bsSawUseText + invoke Sleep, 900 + jmp bs_player_again +bs_player_beer: + cmp bsPlayerBeer, 0 + je bs_player_no_item + dec bsPlayerBeer + call BuckshotUseBeer + call BuckshotRemaining + cmp eax, 0 + je bs_player_done + jmp bs_player_again +bs_player_cuffs: + cmp bsPlayerCuffs, 0 + je bs_player_no_item + dec bsPlayerCuffs + mov bsSkipAI, 1 + invoke PrintStr, OFFSET bsCuffsUseText + invoke Sleep, 900 + jmp bs_player_again +bs_player_no_item: + invoke PrintStr, OFFSET bsNoItemText + invoke Sleep, 800 + jmp bs_player_again +bs_player_done: + ret +BuckshotPlayerTurn ENDP + +; --- BuckshotAITurn: Buckshot Roulette: патроны, предметы, ходы игрока и ИИ --- +BuckshotAITurn PROC + call BuckshotStatus + invoke PrintStr, OFFSET bsAITurnText + invoke Sleep, 900 + cmp bsKnownShell, 0FFFFFFFFh + jne bs_ai_known + cmp bsAIGlass, 0 + je bs_ai_no_glass + dec bsAIGlass + invoke PrintStr, OFFSET bsAIGlassText + call BuckshotUseGlass +bs_ai_no_glass: +bs_ai_known: + cmp bsKnownShell, 1 + je bs_ai_live + cmp bsKnownShell, 0 + je bs_ai_blank + mov eax, bsLiveCount + cmp eax, bsBlankCount + jae bs_ai_live +bs_ai_blank: + mov bsTarget, 1 + call BuckshotShoot + ret +bs_ai_live: + cmp bsAISaw, 0 + je bs_ai_maybe_cuffs + dec bsAISaw + mov bsDamage, 2 + invoke PrintStr, OFFSET bsAISawText + invoke Sleep, 700 +bs_ai_maybe_cuffs: + cmp bsAICuffs, 0 + je bs_ai_shoot_player + dec bsAICuffs + mov bsSkipPlayer, 1 + invoke PrintStr, OFFSET bsAICuffsText + invoke Sleep, 700 +bs_ai_shoot_player: + mov bsTarget, 0 + call BuckshotShoot + ret +BuckshotAITurn ENDP + +; --- GameBuckshot: Buckshot Roulette: патроны, предметы, ходы игрока и ИИ --- +GameBuckshot PROC +buckshot_start: + call ClearView + invoke PrintTitleColor, OFFSET buckshotTitle + invoke PrintStr, OFFSET buckshotIntro + call PromptBet + mov bsPlayerHP, 4 + mov bsAIHP, 4 + mov bsTurn, 0 + mov bsDamage, 1 + mov bsSkipPlayer, 0 + mov bsSkipAI, 0 + call BuckshotGiveItems + call PlayRouletteSpinSound + call AnimateBuckshotLoad + call BuckshotLoad +buckshot_loop: + call BuckshotRemaining + cmp eax, 0 + jne buckshot_has_shells + call AnimateBuckshotLoad + call BuckshotLoad +buckshot_has_shells: + cmp bsPlayerHP, 0 + je buckshot_lost + cmp bsAIHP, 0 + je buckshot_won + cmp bsTurn, 0 + je buckshot_player + call BuckshotAITurn + jmp buckshot_loop +buckshot_player: + call BuckshotPlayerTurn + jmp buckshot_loop +buckshot_won: + call BuckshotStatus + invoke PrintStr, OFFSET bsWinText + invoke PaySlotMultiplier, 3 + jmp buckshot_again +buckshot_lost: + call BuckshotStatus + invoke PrintStr, OFFSET bsLoseText + call PayLose +buckshot_again: + call SaveGame + cmp tournamentMode, 1 + je buckshot_tournament_return + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je buckshot_start + cmp al, 'Y' + je buckshot_start +buckshot_tournament_return: + ret +GameBuckshot ENDP +; --- PrintDiceParity: вывод текста, цветов, картинок и элементов интерфейса --- +PrintDiceParity PROC parity:DWORD + cmp parity, 1 + jne print_dice_odd + invoke PrintStr, OFFSET diceEvenText + ret +print_dice_odd: + invoke PrintStr, OFFSET diceOddText + ret +PrintDiceParity ENDP + +; --- GameDice: кости: бросок, четность и результат --- +GameDice PROC +dice_start: + call ClearView + invoke PrintTitleColor, OFFSET diceTitle + invoke PrintStr, OFFSET diceIntroText + call PromptBet + +dice_choose: + call ClearView + invoke PrintTitleColor, OFFSET diceTitle + invoke PrintStr, OFFSET diceIntroText + call PrintBank + invoke PrintStr, OFFSET diceChoiceText + call ReadKey + cmp al, '1' + je dice_pick_even + cmp al, '2' + je dice_pick_odd + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp dice_choose + +dice_pick_even: + mov diceChoice, 1 + jmp dice_roll +dice_pick_odd: + mov diceChoice, 2 + +dice_roll: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET diceRollText + call ResetColor + invoke Sleep, 500 + invoke RandomRange, 6 + inc eax + mov diceA, eax + invoke RandomRange, 6 + inc eax + mov diceB, eax + mov eax, diceA + add eax, diceB + mov diceSum, eax + invoke PrintStr, OFFSET diceFirstText + invoke PrintUInt, diceA + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET diceSecondText + invoke PrintUInt, diceB + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET diceSumText + invoke PrintUInt, diceSum + invoke PrintStr, OFFSET nl + mov eax, diceSum + and eax, 1 + cmp eax, 0 + je dice_result_even + mov eax, 2 + jmp dice_compare +dice_result_even: + mov eax, 1 +dice_compare: + cmp eax, diceChoice + je dice_win + call PrintLoseEvent + call PayLose + jmp dice_again +dice_win: + call PrintWinEvent + call PayWin + +dice_again: + cmp tournamentMode, 1 + je dice_tournament_return + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je dice_start + cmp al, 'Y' + je dice_start +dice_tournament_return: + ret +GameDice ENDP +; --- Online Dice: Radmin LAN match without a separate server process --- +onlineTitle db 13,10,"--- Online Casino (Radmin) ---",13,10,0 +onlineMenuText db "1. Host room",13,10,"2. Join room",13,10,"0. Back",13,10,0 +onlineHostInfo db "Give your Radmin IPv4 and port 27015 to your friend.",13,10,"Waiting for one player...",13,10,0 +onlineJoinPrompt db "Host Radmin IPv4: ",0 +onlineConnectingText db "Connecting...",13,10,0 +onlineConnectedText db "Connected.",13,10,0 +onlineYouRollText db "Your roll: ",0 +onlineFriendRollText db "Friend roll: ",0 +onlineWinText db "You win this friendly match.",13,10,0 +onlineLoseText db "Friend wins this friendly match.",13,10,0 +onlineDrawText db "Draw. Same roll.",13,10,0 +onlineErrorText db "Network error. Winsock code: ",0 +onlineBadIpText db "IPv4 address is invalid.",13,10,0 + +OnlineStartWinsock PROC + invoke WSAStartup, 0202h, OFFSET onlineWsaData + test eax, eax + jnz online_start_fail + mov onlineWsaReady, 1 + mov eax, 1 + ret +online_start_fail: + xor eax, eax + ret +OnlineStartWinsock ENDP + +OnlineCleanup PROC + cmp onlinePeerSock, -1 + je online_cleanup_listener + invoke closesocket, onlinePeerSock + mov onlinePeerSock, -1 +online_cleanup_listener: + cmp onlineListenSock, -1 + je online_cleanup_wsa + invoke closesocket, onlineListenSock + mov onlineListenSock, -1 +online_cleanup_wsa: + cmp onlineWsaReady, 1 + jne online_cleanup_done + invoke WSACleanup + mov onlineWsaReady, 0 +online_cleanup_done: + ret +OnlineCleanup ENDP + +OnlineBuildAddress PROC uses eax ecx edi + lea edi, onlineAddr + xor eax, eax + mov ecx, 4 + rep stosd + mov word ptr onlineAddr, AF_INET + mov word ptr onlineAddr+2, ONLINE_PORT_NET + ret +OnlineBuildAddress ENDP + +ReadOnlineIp PROC uses eax ecx esi edi + lea edi, onlineIp + xor eax, eax + mov ecx, 32 + rep stosb + invoke ReadFile, hIn, OFFSET onlineIp, 31, ADDR charsRead, 0 + mov ecx, charsRead + cmp ecx, 31 + jbe online_ip_len_ok + mov ecx, 31 +online_ip_len_ok: + mov byte ptr onlineIp[ecx], 0 + mov esi, OFFSET onlineIp +online_ip_trim: + cmp ecx, 0 + je online_ip_done + mov al, [esi] + cmp al, 13 + je online_ip_end + cmp al, 10 + je online_ip_end + inc esi + dec ecx + jmp online_ip_trim +online_ip_end: + mov byte ptr [esi], 0 +online_ip_done: + ret +ReadOnlineIp ENDP + +NetSendAll PROC uses esi edi, hSocket:DWORD, pData:DWORD, byteCount:DWORD + mov esi, pData + mov edi, byteCount +online_send_loop: + cmp edi, 0 + je online_send_ok + invoke send, hSocket, esi, edi, 0 + test eax, eax + jle online_send_fail + add esi, eax + sub edi, eax + jmp online_send_loop +online_send_ok: + mov eax, 1 + ret +online_send_fail: + xor eax, eax + ret +NetSendAll ENDP + +NetRecvAll PROC uses esi edi, hSocket:DWORD, pData:DWORD, byteCount:DWORD + mov esi, pData + mov edi, byteCount +online_recv_loop: + cmp edi, 0 + je online_recv_ok + invoke recv, hSocket, esi, edi, 0 + test eax, eax + jle online_recv_fail + add esi, eax + sub edi, eax + jmp online_recv_loop +online_recv_ok: + mov eax, 1 + ret +online_recv_fail: + xor eax, eax + ret +NetRecvAll ENDP + +PrintOnlineError PROC + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET onlineErrorText + invoke WSAGetLastError + invoke PrintUInt, eax + invoke PrintStr, OFFSET nl + call ResetColor + ret +PrintOnlineError ENDP + +ShowOnlineResult PROC + call ClearView + invoke PrintTitleColor, OFFSET onlineTitle + invoke PrintStr, OFFSET onlineYouRollText + invoke PrintUInt, onlineLocalRoll + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET onlineFriendRollText + invoke PrintUInt, onlineRemoteRoll + invoke PrintStr, OFFSET nl + mov eax, onlineLocalRoll + cmp eax, onlineRemoteRoll + ja online_result_win + jb online_result_lose + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET onlineDrawText + call ResetColor + jmp online_result_done +online_result_win: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET onlineWinText + call ResetColor + jmp online_result_done +online_result_lose: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET onlineLoseText + call ResetColor +online_result_done: + ret +ShowOnlineResult ENDP + +OnlineHostGameText db "Choose online game:",13,10,"1. Dice 1v1",13,10,"2. Russian Roulette 1v1",13,10,"0. Back",13,10,0 +OnlineModeDiceText db "Room mode: Dice 1v1",13,10,0 +OnlineModeRRText db "Room mode: Russian Roulette 1v1",13,10,0 +OnlineProtocolText db "Players use different online protocol versions.",13,10,0 +OnlineRRYourTurnText db "Your turn. Press any key to pull the trigger...",0 +OnlineRRWaitText db "Friend is holding the revolver. Waiting for the trigger...",13,10,0 +OnlineRRStartsYouText db "The revolver points at you. You shoot first.",13,10,0 +OnlineRRStartsFriendText db "The revolver points at your friend. Friend shoots first.",13,10,0 +OnlineRRWinText db "Your friend caught the loaded chamber. You survived.",13,10,0 +OnlineRRLoseText db "The loaded chamber was yours. You lost.",13,10,0 + +OnlineHostConnect PROC + call OnlineStartWinsock + test eax, eax + jz online_host_connect_error + invoke socket, AF_INET, SOCK_STREAM, IPPROTO_TCP + cmp eax, SOCKET_ERROR + je online_host_connect_error + mov onlineListenSock, eax + call OnlineBuildAddress + invoke bind, onlineListenSock, OFFSET onlineAddr, 16 + test eax, eax + jnz online_host_connect_error + invoke listen, onlineListenSock, 1 + test eax, eax + jnz online_host_connect_error + call ClearView + invoke PrintTitleColor, OFFSET onlineTitle + invoke PrintStr, OFFSET onlineHostInfo + invoke accept, onlineListenSock, 0, 0 + cmp eax, SOCKET_ERROR + je online_host_connect_error + mov onlinePeerSock, eax + invoke closesocket, onlineListenSock + mov onlineListenSock, -1 + invoke PrintStr, OFFSET onlineConnectedText + mov eax, 1 + ret +online_host_connect_error: + call PrintOnlineError + call OnlineCleanup + call Pause + xor eax, eax + ret +OnlineHostConnect ENDP + +OnlineJoinConnect PROC + call OnlineStartWinsock + test eax, eax + jz online_join_connect_error + call ClearView + invoke PrintTitleColor, OFFSET onlineTitle + invoke PrintStr, OFFSET onlineJoinPrompt + call ReadOnlineIp + invoke inet_addr, OFFSET onlineIp + cmp eax, 0FFFFFFFFh + je online_join_connect_bad_ip + mov onlineHostIp, eax + invoke socket, AF_INET, SOCK_STREAM, IPPROTO_TCP + cmp eax, SOCKET_ERROR + je online_join_connect_error + mov onlinePeerSock, eax + call OnlineBuildAddress + mov eax, onlineHostIp + mov dword ptr onlineAddr+4, eax + invoke PrintStr, OFFSET onlineConnectingText + invoke connect, onlinePeerSock, OFFSET onlineAddr, 16 + test eax, eax + jnz online_join_connect_error + invoke PrintStr, OFFSET onlineConnectedText + mov eax, 1 + ret +online_join_connect_bad_ip: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET onlineBadIpText + call ResetColor + call OnlineCleanup + call Pause + xor eax, eax + ret +online_join_connect_error: + call PrintOnlineError + call OnlineCleanup + call Pause + xor eax, eax + ret +OnlineJoinConnect ENDP + +OnlineDiceSessionHost PROC + invoke RandomRange, 6 + inc eax + mov onlinePacket, eax + mov onlineLocalRoll, eax + invoke RandomRange, 6 + inc eax + mov onlinePacket+4, eax + mov onlineRemoteRoll, eax + invoke NetSendAll, onlinePeerSock, OFFSET onlinePacket, 8 + test eax, eax + jz online_dice_host_fail + invoke Sleep, 450 + call ShowOnlineResult + mov eax, 1 + ret +online_dice_host_fail: + xor eax, eax + ret +OnlineDiceSessionHost ENDP + +OnlineDiceSessionClient PROC + invoke NetRecvAll, onlinePeerSock, OFFSET onlinePacket, 8 + test eax, eax + jz online_dice_client_fail + mov eax, onlinePacket+4 + mov onlineLocalRoll, eax + mov eax, onlinePacket + mov onlineRemoteRoll, eax + invoke Sleep, 450 + call ShowOnlineResult + mov eax, 1 + ret +online_dice_client_fail: + xor eax, eax + ret +OnlineDiceSessionClient ENDP + +ShowOnlineRRStatus PROC role:DWORD + call ClearView + invoke PrintTitleColor, OFFSET rouletteTitle + mov eax, rrTurn + cmp eax, role + jne online_rr_status_friend + invoke PrintRevolver, OFFSET rrGunDown + jmp online_rr_status_info +online_rr_status_friend: + invoke PrintRevolver, OFFSET rrGunUp +online_rr_status_info: + invoke PrintStr, OFFSET rrDangerText + invoke PrintUInt, rrBullets + invoke PrintStr, OFFSET nl + ret +ShowOnlineRRStatus ENDP + +AnimateOnlineRRStart PROC role:DWORD + invoke ShowRouletteSpinFrame, OFFSET rrGunUp + invoke ShowRouletteSpinFrame, OFFSET rrGunUpLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunDownLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunDown + invoke ShowRouletteSpinFrame, OFFSET rrGunDownRight + invoke ShowRouletteSpinFrame, OFFSET rrGunRight + invoke ShowRouletteSpinFrame, OFFSET rrGunUpRight + invoke ShowRouletteSpinFrame, OFFSET rrGunUp + invoke ShowRouletteSpinFrame, OFFSET rrGunUpLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunDownLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunDown + invoke ShowRouletteSpinFrame, OFFSET rrGunDownRight + invoke ShowRouletteSpinFrame, OFFSET rrGunRight + invoke ShowRouletteSpinFrame, OFFSET rrGunUpRight + invoke ShowOnlineRRStatus, role + mov eax, rrTurn + cmp eax, role + jne online_rr_start_friend + invoke PrintStr, OFFSET OnlineRRStartsYouText + ret +online_rr_start_friend: + invoke PrintStr, OFFSET OnlineRRStartsFriendText + ret +AnimateOnlineRRStart ENDP + +ShowOnlineRRShot PROC role:DWORD + cmp onlinePacket, 1 + je online_rr_shot_bang + call PlayRouletteDrySound + invoke PrintStr, OFFSET rrClickText + invoke Sleep, 850 + ret +online_rr_shot_bang: + call PrintBang + mov eax, onlinePacket+4 + cmp eax, role + jne online_rr_shot_win + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET OnlineRRLoseText + call ResetColor + ret +online_rr_shot_win: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET OnlineRRWinText + call ResetColor + ret +ShowOnlineRRShot ENDP + +OnlineRRSessionHost PROC + call SetupRoulette + mov eax, rrBullets + mov onlinePacket, eax + mov eax, rrTurn + mov onlinePacket+4, eax + invoke NetSendAll, onlinePeerSock, OFFSET onlinePacket, 8 + test eax, eax + jz online_rr_host_fail + call PlayRouletteSpinSound + invoke AnimateOnlineRRStart, 0 +online_rr_host_loop: + invoke ShowOnlineRRStatus, 0 + cmp rrTurn, 0 + je online_rr_host_own_turn + invoke PrintStr, OFFSET OnlineRRWaitText + invoke NetRecvAll, onlinePeerSock, OFFSET onlineAction, 4 + test eax, eax + jz online_rr_host_fail + jmp online_rr_host_fire +online_rr_host_own_turn: + invoke PrintStr, OFFSET OnlineRRYourTurnText + call ReadAnyKey + invoke PrintStr, OFFSET nl +online_rr_host_fire: + mov onlinePacket, 0 + call RouletteChamberLoaded + cmp eax, 1 + jne online_rr_host_event_ready + mov onlinePacket, 1 +online_rr_host_event_ready: + mov eax, rrTurn + mov onlinePacket+4, eax + invoke NetSendAll, onlinePeerSock, OFFSET onlinePacket, 8 + test eax, eax + jz online_rr_host_fail + invoke ShowOnlineRRShot, 0 + cmp onlinePacket, 1 + je online_rr_host_done + call AdvanceRouletteChamber + xor rrTurn, 1 + jmp online_rr_host_loop +online_rr_host_done: + mov eax, 1 + ret +online_rr_host_fail: + xor eax, eax + ret +OnlineRRSessionHost ENDP + +OnlineRRSessionClient PROC + invoke NetRecvAll, onlinePeerSock, OFFSET onlinePacket, 8 + test eax, eax + jz online_rr_client_fail + mov eax, onlinePacket + mov rrBullets, eax + mov eax, onlinePacket+4 + mov rrTurn, eax + call PlayRouletteSpinSound + invoke AnimateOnlineRRStart, 1 +online_rr_client_loop: + invoke ShowOnlineRRStatus, 1 + cmp rrTurn, 1 + jne online_rr_client_wait + invoke PrintStr, OFFSET OnlineRRYourTurnText + call ReadAnyKey + invoke PrintStr, OFFSET nl + mov onlineAction, 1 + invoke NetSendAll, onlinePeerSock, OFFSET onlineAction, 4 + test eax, eax + jz online_rr_client_fail + jmp online_rr_client_receive +online_rr_client_wait: + invoke PrintStr, OFFSET OnlineRRWaitText +online_rr_client_receive: + invoke NetRecvAll, onlinePeerSock, OFFSET onlinePacket, 8 + test eax, eax + jz online_rr_client_fail + mov eax, onlinePacket+4 + mov rrTurn, eax + invoke ShowOnlineRRShot, 1 + cmp onlinePacket, 1 + je online_rr_client_done + xor rrTurn, 1 + jmp online_rr_client_loop +online_rr_client_done: + mov eax, 1 + ret +online_rr_client_fail: + xor eax, eax + ret +OnlineRRSessionClient ENDP + +GameOnlineCasino PROC +online_casino_menu: + call ClearView + invoke PrintTitleColor, OFFSET onlineTitle + invoke PrintStr, OFFSET onlineMenuText + invoke PrintStr, OFFSET choiceText + call ReadKey + cmp al, '1' + je online_casino_host_choose + cmp al, '2' + je online_casino_join + cmp al, '0' + je online_casino_done + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET badChoiceText + call ResetColor + invoke Sleep, 650 + jmp online_casino_menu +online_casino_host_choose: + call ClearView + invoke PrintTitleColor, OFFSET onlineTitle + invoke PrintStr, OFFSET OnlineHostGameText + invoke PrintStr, OFFSET choiceText + call ReadKey + cmp al, '1' + je online_casino_host_dice + cmp al, '2' + je online_casino_host_rr + cmp al, '0' + je online_casino_menu + invoke PrintStr, OFFSET badChoiceText + invoke Sleep, 650 + jmp online_casino_host_choose +online_casino_host_dice: + mov onlineGameMode, ONLINE_GAME_DICE + jmp online_casino_host_connect +online_casino_host_rr: + mov onlineGameMode, ONLINE_GAME_RR +online_casino_host_connect: + call OnlineHostConnect + test eax, eax + jz online_casino_done + mov onlinePacket, ONLINE_MAGIC + mov eax, onlineGameMode + mov onlinePacket+4, eax + invoke NetSendAll, onlinePeerSock, OFFSET onlinePacket, 8 + test eax, eax + jz online_casino_session_error + cmp onlineGameMode, ONLINE_GAME_DICE + je online_casino_run_host_dice + invoke PrintStr, OFFSET OnlineModeRRText + call OnlineRRSessionHost + jmp online_casino_session_done +online_casino_run_host_dice: + invoke PrintStr, OFFSET OnlineModeDiceText + call OnlineDiceSessionHost + jmp online_casino_session_done +online_casino_join: + call OnlineJoinConnect + test eax, eax + jz online_casino_done + invoke NetRecvAll, onlinePeerSock, OFFSET onlinePacket, 8 + test eax, eax + jz online_casino_session_error + cmp onlinePacket, ONLINE_MAGIC + jne online_casino_protocol_error + mov eax, onlinePacket+4 + mov onlineGameMode, eax + cmp eax, ONLINE_GAME_DICE + je online_casino_run_client_dice + cmp eax, ONLINE_GAME_RR + je online_casino_run_client_rr + jmp online_casino_protocol_error +online_casino_run_client_dice: + invoke PrintStr, OFFSET OnlineModeDiceText + call OnlineDiceSessionClient + jmp online_casino_session_done +online_casino_run_client_rr: + invoke PrintStr, OFFSET OnlineModeRRText + call OnlineRRSessionClient +online_casino_session_done: + test eax, eax + jz online_casino_session_error + call OnlineCleanup + call Pause + ret +online_casino_protocol_error: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET OnlineProtocolText + call ResetColor + call OnlineCleanup + call Pause + ret +online_casino_session_error: + call PrintOnlineError + call OnlineCleanup + call Pause +online_casino_done: + ret +GameOnlineCasino ENDP + +; --- PrintCoinSide: вывод текста, цветов, картинок и элементов интерфейса --- +PrintCoinSide PROC side:DWORD + cmp side, 1 + jne print_coin_tails + invoke PrintStr, OFFSET coinHeadsText + ret +print_coin_tails: + invoke PrintStr, OFFSET coinTailsText + ret +PrintCoinSide ENDP + +; --- ShowCoinFlipFrame: звук, интро или покадровая анимация --- +ShowCoinFlipFrame PROC uses eax, pFrame:DWORD + call ClearView + invoke PrintTitleColor, OFFSET coinTitle + invoke PrintStr, OFFSET coinIntroText + call PrintBank + invoke PrintStr, OFFSET coinPickText + invoke PrintCoinSide, coinPick + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET coinSpinText + mov eax, pFrame + invoke PrintStr, eax + call ResetColor + invoke Sleep, 170 + ret +ShowCoinFlipFrame ENDP + +; --- AnimateCoinFlip: орел и решка: выбор стороны, звук и анимация монеты --- +AnimateCoinFlip PROC + invoke ShowCoinFlipFrame, OFFSET coinFrame1 + invoke ShowCoinFlipFrame, OFFSET coinFrame2 + invoke ShowCoinFlipFrame, OFFSET coinFrame3 + invoke ShowCoinFlipFrame, OFFSET coinFrame4 + invoke ShowCoinFlipFrame, OFFSET coinFrame5 + invoke ShowCoinFlipFrame, OFFSET coinFrame6 + invoke ShowCoinFlipFrame, OFFSET coinFrame7 + invoke ShowCoinFlipFrame, OFFSET coinFrame8 + invoke ShowCoinFlipFrame, OFFSET coinFrame9 + invoke ShowCoinFlipFrame, OFFSET coinFrame10 + invoke ShowCoinFlipFrame, OFFSET coinFrame11 + invoke ShowCoinFlipFrame, OFFSET coinFrame12 + invoke ShowCoinFlipFrame, OFFSET coinFrame13 + invoke ShowCoinFlipFrame, OFFSET coinFrame14 + ret +AnimateCoinFlip ENDP + +; --- GameCoin: орел и решка: выбор стороны, звук и анимация монеты --- +GameCoin PROC +coin_start: + call ClearView + invoke PrintTitleColor, OFFSET coinTitle + invoke PrintStr, OFFSET coinIntroText + call PromptBet + +coin_choose: + call ClearView + invoke PrintTitleColor, OFFSET coinTitle + invoke PrintStr, OFFSET coinIntroText + call PrintBank + invoke PrintStr, OFFSET coinChoiceText + call ReadKey + cmp al, '1' + je coin_pick_heads + cmp al, '2' + je coin_pick_tails + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp coin_choose + +coin_pick_heads: + mov coinPick, 1 + jmp coin_flip +coin_pick_tails: + mov coinPick, 2 + +coin_flip: + invoke PrintStr, OFFSET coinPickText + invoke PrintCoinSide, coinPick + call PlayCoinSound + call AnimateCoinFlip + invoke RandomRange, 2 + inc eax + mov coinResult, eax + invoke PrintStr, OFFSET coinResultText + invoke PrintCoinSide, coinResult + mov eax, coinPick + cmp eax, coinResult + je coin_win + call PrintLoseEvent + call PayLose + jmp coin_again +coin_win: + call PrintWinEvent + call PayWin + +coin_again: + cmp tournamentMode, 1 + je coin_tournament_return + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je coin_start + cmp al, 'Y' + je coin_start +coin_tournament_return: + ret +GameCoin ENDP + +; --- PrintRouletteColorName: вывод текста, цветов, картинок и элементов интерфейса --- +PrintRouletteColorName PROC uses eax ebx, value:DWORD + mov eax, value + cmp eax, 0 + jne roulette_color_not_zero + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET rouletteGreenName + call ResetColor + ret +roulette_color_not_zero: + movzx ebx, byte ptr [rouletteColors + eax] + cmp ebx, 1 + jne roulette_color_black + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET rouletteRedName + call ResetColor + ret +roulette_color_black: + invoke SetColor, COLOR_CARD + invoke PrintStr, OFFSET rouletteBlackName + call ResetColor + ret +PrintRouletteColorName ENDP + +; --- PrintRouletteNumberColored: вывод текста, цветов, картинок и элементов интерфейса --- +PrintRouletteNumberColored PROC uses eax ebx, value:DWORD + mov eax, value + cmp eax, 0 + jne roulette_number_not_zero + invoke SetColor, COLOR_MONEY + jmp roulette_number_print +roulette_number_not_zero: + movzx ebx, byte ptr [rouletteColors + eax] + cmp ebx, 1 + jne roulette_number_black + invoke SetColor, COLOR_BAD + jmp roulette_number_print +roulette_number_black: + invoke SetColor, COLOR_CARD +roulette_number_print: + invoke PrintUInt, value + call ResetColor + ret +PrintRouletteNumberColored ENDP + +; --- PrintRoulettePocket: вывод текста, цветов, картинок и элементов интерфейса --- +PrintRoulettePocket PROC uses eax, wheelIndex:DWORD + invoke PrintStr, OFFSET roulettePocketLeft + mov eax, wheelIndex + mov eax, [rouletteWheel + eax * 4] + push eax + cmp eax, 10 + jae roulette_pocket_no_pad + invoke PrintStr, OFFSET rouletteNumSpace +roulette_pocket_no_pad: + pop eax + invoke PrintRouletteNumberColored, eax + invoke PrintStr, OFFSET roulettePocketRight + ret +PrintRoulettePocket ENDP + +; --- PrintRoulettePocketOffset: вывод текста, цветов, картинок и элементов интерфейса --- +PrintRoulettePocketOffset PROC uses eax, wheelOffset:DWORD + mov eax, casinoRouletteSpinIndex + add eax, wheelOffset +roulette_offset_wrap: + cmp eax, 37 + jb roulette_offset_ready + sub eax, 37 + jmp roulette_offset_wrap +roulette_offset_ready: + invoke PrintRoulettePocket, eax + ret +PrintRoulettePocketOffset ENDP + +; --- PrintRouletteTopRow: вывод текста, цветов, картинок и элементов интерфейса --- +PrintRouletteTopRow PROC + invoke PrintStr, OFFSET casinoRoulettePad + invoke PrintRoulettePocketOffset, 31 + invoke PrintRoulettePocketOffset, 32 + invoke PrintRoulettePocketOffset, 33 + invoke PrintRoulettePocketOffset, 34 + invoke PrintRoulettePocketOffset, 35 + invoke PrintRoulettePocketOffset, 36 + invoke PrintRoulettePocketOffset, 0 + invoke PrintRoulettePocketOffset, 1 + invoke PrintRoulettePocketOffset, 2 + invoke PrintRoulettePocketOffset, 3 + invoke PrintRoulettePocketOffset, 4 + invoke PrintRoulettePocketOffset, 5 + invoke PrintRoulettePocketOffset, 6 + invoke PrintStr, OFFSET nl + ret +PrintRouletteTopRow ENDP + +; --- PrintRouletteBottomRow: вывод текста, цветов, картинок и элементов интерфейса --- +PrintRouletteBottomRow PROC + invoke PrintStr, OFFSET casinoRoulettePad + invoke PrintRoulettePocketOffset, 24 + invoke PrintRoulettePocketOffset, 23 + invoke PrintRoulettePocketOffset, 22 + invoke PrintRoulettePocketOffset, 21 + invoke PrintRoulettePocketOffset, 20 + invoke PrintRoulettePocketOffset, 19 + invoke PrintRoulettePocketOffset, 18 + invoke PrintRoulettePocketOffset, 17 + invoke PrintRoulettePocketOffset, 16 + invoke PrintRoulettePocketOffset, 15 + invoke PrintRoulettePocketOffset, 14 + invoke PrintRoulettePocketOffset, 13 + invoke PrintStr, OFFSET nl + ret +PrintRouletteBottomRow ENDP + +; --- PrintRouletteSideRow: вывод текста, цветов, картинок и элементов интерфейса --- +PrintRouletteSideRow PROC leftOffset:DWORD, pGap:DWORD, rightOffset:DWORD + invoke SetColor, COLOR_WOOD + invoke PrintStr, OFFSET rouletteBigSidePad + call ResetColor + invoke PrintRoulettePocketOffset, leftOffset + invoke SetColor, COLOR_TABLE + invoke PrintStr, pGap + call ResetColor + invoke PrintRoulettePocketOffset, rightOffset + invoke PrintStr, OFFSET nl + ret +PrintRouletteSideRow ENDP + +; --- ShowCasinoRouletteFrame: звук, интро или покадровая анимация --- +ShowCasinoRouletteFrame PROC + call ClearView + invoke PrintTitleColor, OFFSET casinoRouletteTitle + invoke SetColor, COLOR_WOOD + invoke PrintStr, OFFSET casinoRouletteWheelTop + call ResetColor + call PrintRouletteTopRow + invoke PrintRouletteSideRow, 30, OFFSET rouletteBigSideGap1, 7 + invoke PrintRouletteSideRow, 29, OFFSET rouletteBigSideGap2, 8 + invoke PrintRouletteSideRow, 28, OFFSET rouletteBigSideGap3, 9 + invoke PrintRouletteSideRow, 27, OFFSET rouletteBigSideGap4, 10 + invoke PrintRouletteSideRow, 26, OFFSET rouletteBigSideGap5, 11 + invoke PrintRouletteSideRow, 25, OFFSET rouletteBigSideGap6, 12 + call PrintRouletteBottomRow + invoke SetColor, COLOR_WOOD + invoke PrintStr, OFFSET casinoRouletteWheelBottom + call ResetColor + invoke PrintStr, OFFSET casinoRouletteSpinText + ret +ShowCasinoRouletteFrame ENDP + +; --- AnimateCasinoRouletteSpin: русская рулетка или казино-рулетка --- +AnimateCasinoRouletteSpin PROC uses eax ebx edx + invoke GetTickCount + xor seed, eax + invoke RandomRange, 37 + mov casinoRouletteResultIndex, eax + mov ebx, eax + mov eax, [rouletteWheel + ebx * 4] + mov casinoRouletteResult, eax + + invoke RandomRange, 18 + add eax, 72 + mov casinoRouletteSpinSteps, eax + mov casinoRouletteSpinCounter, eax + + xor edx, edx + mov ebx, 37 + div ebx + mov eax, casinoRouletteResultIndex + add eax, 37 + sub eax, edx + cmp eax, 37 + jb casino_roulette_start_ready + sub eax, 37 +casino_roulette_start_ready: + mov casinoRouletteSpinIndex, eax + +casino_roulette_spin_loop: + inc casinoRouletteSpinIndex + cmp casinoRouletteSpinIndex, 37 + jb casino_roulette_spin_index_ok + mov casinoRouletteSpinIndex, 0 +casino_roulette_spin_index_ok: + call ShowCasinoRouletteFrame + mov eax, casinoRouletteSpinCounter + cmp eax, 12 + jbe casino_roulette_sleep_slow + cmp eax, 26 + jbe casino_roulette_sleep_mid + invoke Sleep, 45 + jmp casino_roulette_after_sleep +casino_roulette_sleep_mid: + invoke Sleep, 95 + jmp casino_roulette_after_sleep +casino_roulette_sleep_slow: + invoke Sleep, 170 +casino_roulette_after_sleep: + dec casinoRouletteSpinCounter + cmp casinoRouletteSpinCounter, 0 + jne casino_roulette_spin_loop + mov ebx, casinoRouletteSpinIndex + mov casinoRouletteResultIndex, ebx + mov eax, [rouletteWheel + ebx * 4] + mov casinoRouletteResult, eax + ret +AnimateCasinoRouletteSpin ENDP + +; --- CasinoRouletteEvaluate: русская рулетка или казино-рулетка --- +CasinoRouletteEvaluate PROC uses eax ebx edx + invoke PrintStr, OFFSET casinoRouletteResultText + invoke PrintRouletteNumberColored, casinoRouletteResult + invoke PrintStr, OFFSET rouletteNumSpace + invoke PrintRouletteColorName, casinoRouletteResult + + mov eax, casinoRouletteBetType + cmp eax, 1 + je casino_roulette_eval_number + cmp eax, 2 + je casino_roulette_eval_red + cmp eax, 3 + je casino_roulette_eval_black + cmp eax, 4 + je casino_roulette_eval_even + cmp eax, 5 + je casino_roulette_eval_odd + cmp eax, 6 + je casino_roulette_eval_dozen1 + cmp eax, 7 + je casino_roulette_eval_dozen2 + cmp eax, 8 + je casino_roulette_eval_dozen3 + cmp eax, 9 + je casino_roulette_eval_low + cmp eax, 10 + je casino_roulette_eval_high + cmp eax, 11 + je casino_roulette_eval_col1 + cmp eax, 12 + je casino_roulette_eval_col2 + cmp eax, 13 + je casino_roulette_eval_col3 + jmp casino_roulette_lost + +casino_roulette_eval_number: + mov eax, casinoRouletteResult + cmp eax, casinoRouletteBetNumber + jne casino_roulette_lost + invoke UnlockAchievement, 800h, OFFSET achRouletteWinName + invoke PrintStr, OFFSET casinoRouletteWinText + invoke PaySlotMultiplier, 35 + ret + +casino_roulette_eval_red: + mov eax, casinoRouletteResult + movzx ebx, byte ptr [rouletteColors + eax] + cmp ebx, 1 + je casino_roulette_won_even_money + jmp casino_roulette_lost + +casino_roulette_eval_black: + mov eax, casinoRouletteResult + movzx ebx, byte ptr [rouletteColors + eax] + cmp ebx, 2 + je casino_roulette_won_even_money + jmp casino_roulette_lost + +casino_roulette_eval_even: + mov eax, casinoRouletteResult + cmp eax, 0 + je casino_roulette_lost + test eax, 1 + jz casino_roulette_won_even_money + jmp casino_roulette_lost + +casino_roulette_eval_odd: + mov eax, casinoRouletteResult + cmp eax, 0 + je casino_roulette_lost + test eax, 1 + jnz casino_roulette_won_even_money + jmp casino_roulette_lost + +casino_roulette_eval_dozen1: + mov eax, casinoRouletteResult + cmp eax, 1 + jb casino_roulette_lost + cmp eax, 12 + jbe casino_roulette_won_double + jmp casino_roulette_lost +casino_roulette_eval_dozen2: + mov eax, casinoRouletteResult + cmp eax, 13 + jb casino_roulette_lost + cmp eax, 24 + jbe casino_roulette_won_double + jmp casino_roulette_lost +casino_roulette_eval_dozen3: + mov eax, casinoRouletteResult + cmp eax, 25 + jb casino_roulette_lost + cmp eax, 36 + jbe casino_roulette_won_double + jmp casino_roulette_lost +casino_roulette_eval_low: + mov eax, casinoRouletteResult + cmp eax, 1 + jb casino_roulette_lost + cmp eax, 18 + jbe casino_roulette_won_even_money + jmp casino_roulette_lost +casino_roulette_eval_high: + mov eax, casinoRouletteResult + cmp eax, 36 + jbe casino_roulette_won_even_money + jmp casino_roulette_lost +casino_roulette_eval_col1: + mov eax, casinoRouletteResult + cmp eax, 0 + je casino_roulette_lost + dec eax + xor edx, edx + mov ebx, 3 + div ebx + cmp edx, 0 + je casino_roulette_won_double + jmp casino_roulette_lost +casino_roulette_eval_col2: + mov eax, casinoRouletteResult + cmp eax, 0 + je casino_roulette_lost + dec eax + xor edx, edx + mov ebx, 3 + div ebx + cmp edx, 1 + je casino_roulette_won_double + jmp casino_roulette_lost +casino_roulette_eval_col3: + mov eax, casinoRouletteResult + cmp eax, 0 + je casino_roulette_lost + dec eax + xor edx, edx + mov ebx, 3 + div ebx + cmp edx, 2 + je casino_roulette_won_double + jmp casino_roulette_lost + +casino_roulette_won_double: + invoke UnlockAchievement, 800h, OFFSET achRouletteWinName + invoke PrintStr, OFFSET casinoRouletteWinText + invoke PaySlotMultiplier, 2 + ret +casino_roulette_won_even_money: + invoke UnlockAchievement, 800h, OFFSET achRouletteWinName + invoke PrintStr, OFFSET casinoRouletteWinText + call PayWin + ret +casino_roulette_lost: + invoke PrintStr, OFFSET casinoRouletteLoseText + call PayLose + ret +CasinoRouletteEvaluate ENDP + +; --- GameCasinoRoulette: русская рулетка или казино-рулетка --- +GameCasinoRoulette PROC +casino_roulette_start: + call ClearView + invoke PrintTitleColor, OFFSET casinoRouletteTitle + invoke PrintStr, OFFSET casinoRouletteIntro + call PromptBet + +casino_roulette_choose: + call ClearView + invoke PrintTitleColor, OFFSET casinoRouletteTitle + invoke PrintStr, OFFSET casinoRouletteIntro + call PrintBank + invoke PrintStr, OFFSET casinoRouletteBetMenu + call ReadUInt + cmp eax, 1 + je casino_roulette_choose_number + cmp eax, 2 + je casino_roulette_choose_red + cmp eax, 3 + je casino_roulette_choose_black + cmp eax, 4 + je casino_roulette_choose_even + cmp eax, 5 + je casino_roulette_choose_odd + cmp eax, 6 + je casino_roulette_choose_dozen1 + cmp eax, 7 + je casino_roulette_choose_dozen2 + cmp eax, 8 + je casino_roulette_choose_dozen3 + cmp eax, 9 + je casino_roulette_choose_low + cmp eax, 10 + je casino_roulette_choose_high + cmp eax, 11 + je casino_roulette_choose_col1 + cmp eax, 12 + je casino_roulette_choose_col2 + cmp eax, 13 + je casino_roulette_choose_col3 + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp casino_roulette_choose + +casino_roulette_choose_number: + mov casinoRouletteBetType, 1 + invoke PrintStr, OFFSET casinoRouletteNumberAsk + call ReadUInt + cmp eax, 36 + ja casino_roulette_bad_number + mov casinoRouletteBetNumber, eax + jmp casino_roulette_spin +casino_roulette_bad_number: + invoke PrintStr, OFFSET casinoRouletteBadNumber + call Pause + jmp casino_roulette_choose + +casino_roulette_choose_red: + mov casinoRouletteBetType, 2 + jmp casino_roulette_spin +casino_roulette_choose_black: + mov casinoRouletteBetType, 3 + jmp casino_roulette_spin +casino_roulette_choose_even: + mov casinoRouletteBetType, 4 + jmp casino_roulette_spin +casino_roulette_choose_odd: + mov casinoRouletteBetType, 5 + jmp casino_roulette_spin +casino_roulette_choose_dozen1: + mov casinoRouletteBetType, 6 + jmp casino_roulette_spin +casino_roulette_choose_dozen2: + mov casinoRouletteBetType, 7 + jmp casino_roulette_spin +casino_roulette_choose_dozen3: + mov casinoRouletteBetType, 8 + jmp casino_roulette_spin +casino_roulette_choose_low: + mov casinoRouletteBetType, 9 + jmp casino_roulette_spin +casino_roulette_choose_high: + mov casinoRouletteBetType, 10 + jmp casino_roulette_spin +casino_roulette_choose_col1: + mov casinoRouletteBetType, 11 + jmp casino_roulette_spin +casino_roulette_choose_col2: + mov casinoRouletteBetType, 12 + jmp casino_roulette_spin +casino_roulette_choose_col3: + mov casinoRouletteBetType, 13 + +casino_roulette_spin: + call PlayCasinoRouletteSound + call AnimateCasinoRouletteSpin + call CasinoRouletteEvaluate + +casino_roulette_again: + cmp tournamentMode, 1 + je casino_roulette_tournament_return + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je casino_roulette_start + cmp al, 'Y' + je casino_roulette_start +casino_roulette_tournament_return: + ret +GameCasinoRoulette ENDP +; --- SlotApplyWin: слот-машины, барабаны, символы, выплаты и джекпоты --- +SlotApplyWin PROC uses ebx ecx edx, pName:DWORD, multiplier:DWORD, maskValue:DWORD + mov eax, pName + cmp eax, OFFSET slotComboJackpot + je slot_apply_jackpot + + mov eax, maskValue + mov ebx, slotBlockMask + mov ecx, eax + and ecx, ebx + cmp ecx, eax + je slot_apply_skip + or slotBlockMask, eax + jmp slot_apply_record + +slot_apply_jackpot: + mov slotJackpotHit, 1 + mov eax, maskValue + +slot_apply_record: + or slotWinMask, eax + mov ebx, slotMatch + mov eax, slotSymbolValues[ebx * 4] + mov ebx, multiplier + mul ebx + mov edx, eax + add slotBestMultiplier, edx + + mov ebx, slotComboCount + cmp ebx, 32 + jae slot_apply_no_store + mov eax, pName + mov slotComboNames[ebx * 4], eax + mov slotComboMults[ebx * 4], edx + inc slotComboCount +slot_apply_no_store: + mov eax, 1 + ret + +slot_apply_skip: + xor eax, eax + ret +SlotApplyWin ENDP + +; --- SlotSame3: слот-машины, барабаны, символы, выплаты и джекпоты --- +SlotSame3 PROC uses ebx ecx edx, i1:DWORD, i2:DWORD, i3:DWORD + mov ebx, i1 + mov eax, slotGrid[ebx * 4] + mov ecx, i2 + cmp eax, slotGrid[ecx * 4] + jne slot_same3_no + mov edx, i3 + cmp eax, slotGrid[edx * 4] + jne slot_same3_no + mov eax, 1 + ret +slot_same3_no: + xor eax, eax + ret +SlotSame3 ENDP + +; --- SlotSame4: слот-машины, барабаны, символы, выплаты и джекпоты --- +SlotSame4 PROC uses ebx ecx edx, i1:DWORD, i2:DWORD, i3:DWORD, i4:DWORD + mov ebx, i1 + mov eax, slotGrid[ebx * 4] + mov ecx, i2 + cmp eax, slotGrid[ecx * 4] + jne slot_same4_no + mov edx, i3 + cmp eax, slotGrid[edx * 4] + jne slot_same4_no + mov ebx, i4 + cmp eax, slotGrid[ebx * 4] + jne slot_same4_no + mov eax, 1 + ret +slot_same4_no: + xor eax, eax + ret +SlotSame4 ENDP + +; --- SlotSame5: слот-машины, барабаны, символы, выплаты и джекпоты --- +SlotSame5 PROC uses ebx ecx edx, i1:DWORD, i2:DWORD, i3:DWORD, i4:DWORD, i5:DWORD + mov ebx, i1 + mov eax, slotGrid[ebx * 4] + mov ecx, i2 + cmp eax, slotGrid[ecx * 4] + jne slot_same5_no + mov edx, i3 + cmp eax, slotGrid[edx * 4] + jne slot_same5_no + mov ebx, i4 + cmp eax, slotGrid[ebx * 4] + jne slot_same5_no + mov ecx, i5 + cmp eax, slotGrid[ecx * 4] + jne slot_same5_no + mov eax, 1 + ret +slot_same5_no: + xor eax, eax + ret +SlotSame5 ENDP + +; --- SlotAllSame15: слот-машины, барабаны, символы, выплаты и джекпоты --- +SlotAllSame15 PROC uses ebx ecx + mov eax, slotGrid + mov ebx, 1 +slot_all15_loop: + cmp ebx, 15 + jae slot_all15_yes + mov ecx, slotGrid[ebx * 4] + cmp eax, ecx + jne slot_all15_no + inc ebx + jmp slot_all15_loop +slot_all15_yes: + mov eax, 1 + ret +slot_all15_no: + xor eax, eax + ret +SlotAllSame15 ENDP + +; --- SlotTry3: слот-машины, барабаны, символы, выплаты и джекпоты --- +SlotTry3 PROC uses ebx, pName:DWORD, multiplier:DWORD, maskValue:DWORD, i1:DWORD, i2:DWORD, i3:DWORD + invoke SlotSame3, i1, i2, i3 + cmp eax, 0 + je slot_try3_no + mov ebx, i1 + mov eax, slotGrid[ebx * 4] + mov slotMatch, eax + invoke SlotApplyWin, pName, multiplier, maskValue + ret +slot_try3_no: + xor eax, eax + ret +SlotTry3 ENDP + +; --- SlotTry4: слот-машины, барабаны, символы, выплаты и джекпоты --- +SlotTry4 PROC uses ebx, pName:DWORD, multiplier:DWORD, maskValue:DWORD, i1:DWORD, i2:DWORD, i3:DWORD, i4:DWORD + invoke SlotSame4, i1, i2, i3, i4 + cmp eax, 0 + je slot_try4_no + mov ebx, i1 + mov eax, slotGrid[ebx * 4] + mov slotMatch, eax + invoke SlotApplyWin, pName, multiplier, maskValue + ret +slot_try4_no: + xor eax, eax + ret +SlotTry4 ENDP + +; --- SlotTry5: слот-машины, барабаны, символы, выплаты и джекпоты --- +SlotTry5 PROC uses ebx, pName:DWORD, multiplier:DWORD, maskValue:DWORD, i1:DWORD, i2:DWORD, i3:DWORD, i4:DWORD, i5:DWORD + invoke SlotSame5, i1, i2, i3, i4, i5 + cmp eax, 0 + je slot_try5_no + mov ebx, i1 + mov eax, slotGrid[ebx * 4] + mov slotMatch, eax + invoke SlotApplyWin, pName, multiplier, maskValue + ret +slot_try5_no: + xor eax, eax + ret +SlotTry5 ENDP + +; --- EvaluateSlotCombos: слот-машины, барабаны, символы, выплаты и джекпоты --- +EvaluateSlotCombos PROC + mov slotWinMask, 0 + mov slotBlockMask, 0 + mov slotBestMultiplier, 0 + mov slotComboNamePtr, 0 + mov slotComboCount, 0 + mov slotJackpotHit, 0 + + call SlotAllSame15 + cmp eax, 0 + je slot_eval_eye + mov eax, slotGrid + mov slotMatch, eax + invoke SlotApplyWin, OFFSET slotComboJackpot, 10, 32767 + +slot_eval_eye: + invoke SlotTry5, OFFSET slotComboEye, 8, 17553, 0, 4, 7, 10, 14 + + invoke SlotTry5, OFFSET slotComboSky, 7, 31, 0, 1, 2, 3, 4 + invoke SlotTry5, OFFSET slotComboEarth, 7, 31744, 10, 11, 12, 13, 14 + + invoke SlotTry5, OFFSET slotComboUp, 4, 17732, 10, 6, 2, 8, 14 + invoke SlotTry5, OFFSET slotComboDown, 4, 4433, 0, 6, 12, 8, 4 + + invoke SlotTry5, OFFSET slotComboHorXL, 3, 31, 0, 1, 2, 3, 4 + invoke SlotTry5, OFFSET slotComboHorXL, 3, 992, 5, 6, 7, 8, 9 + invoke SlotTry5, OFFSET slotComboHorXL, 3, 31744, 10, 11, 12, 13, 14 + + invoke SlotTry4, OFFSET slotComboHorL, 2, 15, 0, 1, 2, 3 + invoke SlotTry4, OFFSET slotComboHorL, 2, 30, 1, 2, 3, 4 + invoke SlotTry4, OFFSET slotComboHorL, 2, 480, 5, 6, 7, 8 + invoke SlotTry4, OFFSET slotComboHorL, 2, 960, 6, 7, 8, 9 + invoke SlotTry4, OFFSET slotComboHorL, 2, 15360, 10, 11, 12, 13 + invoke SlotTry4, OFFSET slotComboHorL, 2, 30720, 11, 12, 13, 14 + + invoke SlotTry3, OFFSET slotComboVertM, 1, 1057, 0, 5, 10 + invoke SlotTry3, OFFSET slotComboVertM, 1, 2114, 1, 6, 11 + invoke SlotTry3, OFFSET slotComboVertM, 1, 4228, 2, 7, 12 + invoke SlotTry3, OFFSET slotComboVertM, 1, 8456, 3, 8, 13 + invoke SlotTry3, OFFSET slotComboVertM, 1, 16912, 4, 9, 14 + + invoke SlotTry3, OFFSET slotComboDiagM, 1, 4161, 0, 6, 12 + invoke SlotTry3, OFFSET slotComboDiagM, 1, 8322, 1, 7, 13 + invoke SlotTry3, OFFSET slotComboDiagM, 1, 16644, 2, 8, 14 + invoke SlotTry3, OFFSET slotComboDiagM, 1, 1092, 10, 6, 2 + invoke SlotTry3, OFFSET slotComboDiagM, 1, 2184, 11, 7, 3 + invoke SlotTry3, OFFSET slotComboDiagM, 1, 4368, 12, 8, 4 + + invoke SlotTry3, OFFSET slotComboHorM, 1, 7, 0, 1, 2 + invoke SlotTry3, OFFSET slotComboHorM, 1, 14, 1, 2, 3 + invoke SlotTry3, OFFSET slotComboHorM, 1, 28, 2, 3, 4 + invoke SlotTry3, OFFSET slotComboHorM, 1, 224, 5, 6, 7 + invoke SlotTry3, OFFSET slotComboHorM, 1, 448, 6, 7, 8 + invoke SlotTry3, OFFSET slotComboHorM, 1, 896, 7, 8, 9 + invoke SlotTry3, OFFSET slotComboHorM, 1, 7168, 10, 11, 12 + invoke SlotTry3, OFFSET slotComboHorM, 1, 14336, 11, 12, 13 + invoke SlotTry3, OFFSET slotComboHorM, 1, 28672, 12, 13, 14 + ret +EvaluateSlotCombos ENDP + +; --- AwardSlotWin: слот-машины, барабаны, символы, выплаты и джекпоты --- +AwardSlotWin PROC uses ebx + invoke UnlockAchievement, 80h, OFFSET achCloverPitName + call PrintSlotWindow + invoke PrintStr, OFFSET slotPair + mov slotCurrentCell, 0 +slot_award_combo_loop: + mov eax, slotCurrentCell + cmp eax, slotComboCount + jae slot_award_combo_done + invoke PrintStr, OFFSET slotComboText + mov ebx, slotCurrentCell + mov eax, slotComboNames[ebx * 4] + invoke PrintStr, eax + invoke PrintStr, OFFSET cardGap + invoke PrintStr, OFFSET slotMultiplierText + mov ebx, slotCurrentCell + mov eax, slotComboMults[ebx * 4] + invoke PrintUInt, eax + invoke PrintStr, OFFSET nl + inc slotCurrentCell + jmp slot_award_combo_loop +slot_award_combo_done: + invoke PrintStr, OFFSET slotTotalMultiplierText + invoke PrintUInt, slotBestMultiplier + invoke PrintStr, OFFSET nl + cmp slotJackpotHit, 1 + jne slot_award_regular + call PlayJackpotSound + invoke Sleep, 650 + call PlayHakariSound + call PlayHakariDance + call PrintSlotWindow +slot_award_regular: + invoke PaySlotMultiplier, slotBestMultiplier + ret +AwardSlotWin ENDP +; --- GameSlot: слот-машины, барабаны, символы, выплаты и джекпоты --- +GameSlot PROC +slot_start: + call ClearView + invoke PrintTitleColor, OFFSET slotTitle + invoke PrintStr, OFFSET slotPayTableText + call PromptBet + call PlaySlotSound + invoke Sleep, 400 + invoke PrintStr, OFFSET slotPullText + mov slotWinMask, 0 + mov slotVisible, 0 + call PrintSlotWindow + invoke Sleep, 1400 + + invoke FillSlotColumn, 0 + mov slotVisible, 1 + call PrintSlotWindow + invoke Sleep, 620 + + invoke FillSlotColumn, 1 + mov slotVisible, 2 + call PrintSlotWindow + invoke Sleep, 620 + + invoke FillSlotColumn, 2 + mov slotVisible, 3 + call PrintSlotWindow + invoke Sleep, 620 + + invoke FillSlotColumn, 3 + mov slotVisible, 4 + call PrintSlotWindow + invoke Sleep, 620 + + invoke FillSlotColumn, 4 + mov slotVisible, 5 + call PrintSlotWindow + invoke Sleep, 450 + + cmp cheatSlotJackpot, 1 + jne slot_no_forced_jackpot + mov cheatSlotJackpot, 0 + mov ecx, 15 + mov edi, OFFSET slotGrid +slot_force_jackpot_loop: + mov dword ptr [edi], 6 + add edi, 4 + loop slot_force_jackpot_loop + call PrintSlotWindow + invoke Sleep, 300 +slot_no_forced_jackpot: + + call EvaluateSlotCombos + cmp slotBestMultiplier, 0 + jne slot_has_win + invoke PrintStr, OFFSET slotEmpty + call PayLose + jmp ask_slot_again + +slot_has_win: + call AwardSlotWin + +ask_slot_again: + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je slot_start + cmp al, 'Y' + je slot_start + ret +GameSlot ENDP +; --- PrintClassicSlotSymbol: вывод текста, цветов, картинок и элементов интерфейса --- +PrintClassicSlotSymbol PROC uses eax, value:DWORD + mov eax, value + cmp eax, 0 + je classic_symbol_red + cmp eax, 1 + je classic_symbol_yellow + cmp eax, 2 + je classic_symbol_green + cmp eax, 5 + je classic_symbol_cyan + invoke SetColor, COLOR_WARN + jmp classic_symbol_print +classic_symbol_red: + invoke SetColor, COLOR_BAD + jmp classic_symbol_print +classic_symbol_yellow: + invoke SetColor, COLOR_WARN + jmp classic_symbol_print +classic_symbol_green: + invoke SetColor, COLOR_MONEY + jmp classic_symbol_print +classic_symbol_cyan: + invoke SetColor, COLOR_TITLE +classic_symbol_print: + mov eax, value + invoke PrintStr, classicSlotSymbols[eax * 4] + call ResetColor + ret +PrintClassicSlotSymbol ENDP + +; --- PrintClassicSlotCell: вывод текста, цветов, картинок и элементов интерфейса --- +PrintClassicSlotCell PROC uses eax, value:DWORD + mov eax, value + cmp eax, 1 + je classic_slot_cell_bar + invoke PrintStr, OFFSET slotWall + invoke PrintStr, OFFSET slotPadTwo + invoke PrintClassicSlotSymbol, value + invoke PrintStr, OFFSET slotPadTwo + ret +classic_slot_cell_bar: + invoke PrintStr, OFFSET slotWall + invoke PrintStr, OFFSET slotPadOne + invoke PrintClassicSlotSymbol, value + invoke PrintStr, OFFSET slotPadOne + ret +PrintClassicSlotCell ENDP + +; --- PrintClassicSlotBlankCell: вывод текста, цветов, картинок и элементов интерфейса --- +PrintClassicSlotBlankCell PROC + invoke PrintStr, OFFSET slotWall + invoke PrintStr, OFFSET slotCellBlank + ret +PrintClassicSlotBlankCell ENDP + +; --- PrintClassicSlotWindow: вывод текста, цветов, картинок и элементов интерфейса --- +PrintClassicSlotWindow PROC uses eax ebx + call ClearView + invoke PrintTitleColor, OFFSET classicSlotTitle + invoke PrintStr, OFFSET classicSlotBorder + + mov rowIndex, 0 +classic_slot_window_row_loop: + cmp rowIndex, 3 + jae classic_slot_window_done + mov ebx, rowIndex + imul ebx, 3 + + cmp slotVisible, 1 + jb classic_slot_blank_col1 + invoke PrintClassicSlotCell, slotGrid[ebx * 4] + jmp classic_slot_col2 +classic_slot_blank_col1: + call PrintClassicSlotBlankCell + +classic_slot_col2: + cmp slotVisible, 2 + jb classic_slot_blank_col2 + mov eax, ebx + inc eax + invoke PrintClassicSlotCell, slotGrid[eax * 4] + jmp classic_slot_col3 +classic_slot_blank_col2: + call PrintClassicSlotBlankCell + +classic_slot_col3: + cmp slotVisible, 3 + jb classic_slot_blank_col3 + mov eax, ebx + add eax, 2 + invoke PrintClassicSlotCell, slotGrid[eax * 4] + jmp classic_slot_row_end +classic_slot_blank_col3: + call PrintClassicSlotBlankCell + +classic_slot_row_end: + invoke PrintStr, OFFSET slotWall + invoke PrintStr, OFFSET nl + cmp rowIndex, 1 + jne classic_no_payline + invoke PrintStr, OFFSET classicSlotPayline +classic_no_payline: + invoke PrintStr, OFFSET classicSlotBorder + inc rowIndex + jmp classic_slot_window_row_loop + +classic_slot_window_done: + ret +PrintClassicSlotWindow ENDP + +; --- FillClassicSlotColumn: слот-машины, барабаны, символы, выплаты и джекпоты --- +FillClassicSlotColumn PROC uses eax ebx, column:DWORD + mov ebx, column + invoke RandomRange, 6 + mov slotGrid[ebx * 4], eax + mov ebx, column + add ebx, 3 + invoke RandomRange, 6 + mov slotGrid[ebx * 4], eax + mov ebx, column + add ebx, 7 + invoke RandomRange, 6 + mov slotGrid[ebx * 4], eax + ret +FillClassicSlotColumn ENDP + +; --- DurakCardRank: карты, руки, очки и базовая карточная логика --- +DurakCardRank PROC uses ecx edx, card:DWORD + mov eax, card + xor edx, edx + mov ecx, 13 + div ecx + mov eax, edx + ret +DurakCardRank ENDP + +; --- DurakCardSuit: карты, руки, очки и базовая карточная логика --- +DurakCardSuit PROC uses ecx edx, card:DWORD + mov eax, card + xor edx, edx + mov ecx, 13 + div ecx + ret +DurakCardSuit ENDP + +; --- DrawDurakCard: карты, руки, очки и базовая карточная логика --- +DrawDurakCard PROC uses ebx ecx edx edi + cmp durakDeckLeft, 0 + ja draw_durak_random_start + mov eax, 0FFFFFFFFh + ret + +; Сначала пробуем случайно, но не бесконечно: в конце партии иначе можно долго ждать одну карту. +draw_durak_random_start: + mov rowIndex, 120 +draw_durak_try: + invoke RandomRange, 52 + mov ebx, eax + xor edx, edx + mov ecx, 13 + div ecx + cmp edx, 4 + jb draw_durak_next_try + mov edi, OFFSET deckUsed + add edi, ebx + cmp byte ptr [edi], 0 + je draw_durak_take + +draw_durak_next_try: + dec rowIndex + cmp rowIndex, 0 + jne draw_durak_try + + xor ebx, ebx +draw_durak_scan_loop: + cmp ebx, 52 + jae draw_durak_none_left + mov eax, ebx + xor edx, edx + mov ecx, 13 + div ecx + cmp edx, 4 + jb draw_durak_scan_next + mov edi, OFFSET deckUsed + add edi, ebx + cmp byte ptr [edi], 0 + je draw_durak_take + +draw_durak_scan_next: + inc ebx + jmp draw_durak_scan_loop + +draw_durak_take: + mov edi, OFFSET deckUsed + add edi, ebx + mov byte ptr [edi], 1 + cmp durakDeckLeft, 0 + jbe draw_durak_return_card + dec durakDeckLeft +draw_durak_return_card: + mov eax, ebx + ret + +draw_durak_none_left: + mov durakDeckLeft, 0 + mov eax, 0FFFFFFFFh + ret +DrawDurakCard ENDP + +; --- PrintDurakCardName: вывод текста, цветов, картинок и элементов интерфейса --- +PrintDurakCardName PROC uses eax ebx ecx edx, card:DWORD + mov eax, card + cmp eax, 0FFFFFFFFh + jne print_durak_card_real + invoke PrintStr, OFFSET durakUnbeatenText + ret +print_durak_card_real: + xor edx, edx + mov ecx, 13 + div ecx + mov ebx, eax + mov eax, edx + invoke PrintStr, ranks[eax * 4] + invoke PrintSuit, ebx + ret +PrintDurakCardName ENDP + +; --- AddDurakCard: карты, руки, очки и базовая карточная логика --- +AddDurakCard PROC uses ebx ecx, pHand:DWORD, pCount:DWORD, card:DWORD + mov ecx, pCount + mov ebx, [ecx] + cmp ebx, 40 + jae add_durak_done + mov eax, pHand + mov ecx, card + mov [eax + ebx * 4], ecx + mov ecx, pCount + inc dword ptr [ecx] +add_durak_done: + ret +AddDurakCard ENDP + +; --- RemoveDurakCard: карты, руки, очки и базовая карточная логика --- +RemoveDurakCard PROC uses ebx ecx edx esi edi, pHand:DWORD, pCount:DWORD, index:DWORD + mov esi, pHand + mov edi, pCount + mov ecx, [edi] + mov ebx, index + cmp ebx, ecx + jae remove_durak_bad + mov eax, [esi + ebx * 4] + dec ecx + mov [edi], ecx +remove_durak_shift: + cmp ebx, ecx + jae remove_durak_done + mov edx, [esi + ebx * 4 + 4] + mov [esi + ebx * 4], edx + inc ebx + jmp remove_durak_shift +remove_durak_done: + ret +remove_durak_bad: + mov eax, 0FFFFFFFFh + ret +RemoveDurakCard ENDP + +; --- CanDurakBeat: дурак: козырь, атака, защита, подкидывание и добор --- +CanDurakBeat PROC uses ebx ecx edx esi edi, attackCard:DWORD, defenseCard:DWORD + invoke DurakCardSuit, attackCard + mov esi, eax + invoke DurakCardRank, attackCard + mov edi, eax + invoke DurakCardSuit, defenseCard + mov ebx, eax + invoke DurakCardRank, defenseCard + mov ecx, eax + cmp ebx, esi + jne can_durak_check_trump + cmp ecx, edi + ja can_durak_yes + jmp can_durak_no +can_durak_check_trump: + cmp ebx, durakTrumpSuit + jne can_durak_no + cmp esi, durakTrumpSuit + je can_durak_no +can_durak_yes: + mov eax, 1 + ret +can_durak_no: + xor eax, eax + ret +CanDurakBeat ENDP + +; --- ClearDurakTable: дурак: козырь, атака, защита, подкидывание и добор --- +ClearDurakTable PROC uses ecx edi + mov durakTableCnt, 0 + mov ecx, 6 + mov edi, OFFSET durakAttackCards +clear_durak_attack_loop: + mov dword ptr [edi], 0FFFFFFFFh + add edi, 4 + loop clear_durak_attack_loop + mov ecx, 6 + mov edi, OFFSET durakDefenseCards +clear_durak_def_loop: + mov dword ptr [edi], 0FFFFFFFFh + add edi, 4 + loop clear_durak_def_loop + ret +ClearDurakTable ENDP + +; --- AddDurakAttack: дурак: козырь, атака, защита, подкидывание и добор --- +AddDurakAttack PROC uses ebx + mov ebx, durakTableCnt + cmp ebx, 6 + jae add_attack_done + mov durakAttackCards[ebx * 4], eax + mov durakDefenseCards[ebx * 4], 0FFFFFFFFh + inc durakTableCnt +add_attack_done: + ret +AddDurakAttack ENDP + +; --- DurakTableHasDefense: дурак: козырь, атака, защита, подкидывание и добор --- +DurakTableHasDefense PROC uses ebx + mov rowIndex, 0 +has_def_loop: + mov eax, rowIndex + cmp eax, durakTableCnt + jae has_def_no + mov ebx, eax + cmp durakDefenseCards[ebx * 4], 0FFFFFFFFh + jne has_def_yes + inc rowIndex + jmp has_def_loop +has_def_yes: + mov eax, 1 + ret +has_def_no: + xor eax, eax + ret +DurakTableHasDefense ENDP + +; --- DurakFirstUnbeaten: дурак: козырь, атака, защита, подкидывание и добор --- +DurakFirstUnbeaten PROC uses ebx + mov rowIndex, 0 +first_unbeaten_loop: + mov eax, rowIndex + cmp eax, durakTableCnt + jae first_unbeaten_none + mov ebx, eax + cmp durakDefenseCards[ebx * 4], 0FFFFFFFFh + je first_unbeaten_found + inc rowIndex + jmp first_unbeaten_loop +first_unbeaten_found: + mov eax, rowIndex + ret +first_unbeaten_none: + mov eax, 0FFFFFFFFh + ret +DurakFirstUnbeaten ENDP + +; --- DurakAllDefended: дурак: козырь, атака, защита, подкидывание и добор --- +DurakAllDefended PROC + call DurakFirstUnbeaten + cmp eax, 0FFFFFFFFh + jne all_def_no + mov eax, 1 + ret +all_def_no: + xor eax, eax + ret +DurakAllDefended ENDP + +; --- DurakRankOnTable: дурак: козырь, атака, защита, подкидывание и добор --- +DurakRankOnTable PROC uses ebx ecx edx, card:DWORD + invoke DurakCardRank, card + mov ecx, eax + mov rowIndex, 0 +rank_on_table_loop: + mov eax, rowIndex + cmp eax, durakTableCnt + jae rank_on_table_no + mov ebx, eax + invoke DurakCardRank, durakAttackCards[ebx * 4] + cmp eax, ecx + je rank_on_table_yes + cmp durakDefenseCards[ebx * 4], 0FFFFFFFFh + je rank_on_table_next + invoke DurakCardRank, durakDefenseCards[ebx * 4] + cmp eax, ecx + je rank_on_table_yes +rank_on_table_next: + inc rowIndex + jmp rank_on_table_loop +rank_on_table_yes: + mov eax, 1 + ret +rank_on_table_no: + xor eax, eax + ret +DurakRankOnTable ENDP + +; --- CollectDurakTable: аккаунты, файлы сохранений и загрузка профиля --- +CollectDurakTable PROC uses ebx, pHand:DWORD, pCount:DWORD + mov rowIndex, 0 +collect_table_loop: + mov eax, rowIndex + cmp eax, durakTableCnt + jae collect_table_done + mov ebx, eax + invoke AddDurakCard, pHand, pCount, durakAttackCards[ebx * 4] + cmp durakDefenseCards[ebx * 4], 0FFFFFFFFh + je collect_next + invoke AddDurakCard, pHand, pCount, durakDefenseCards[ebx * 4] +collect_next: + inc rowIndex + jmp collect_table_loop +collect_table_done: + call ClearDurakTable + ret +CollectDurakTable ENDP + +; --- DrawDurakPlayer: дурак: козырь, атака, защита, подкидывание и добор --- +DrawDurakPlayer PROC + call PlayCardSound + call DrawDurakCard + cmp eax, 0FFFFFFFFh + je draw_durak_player_done + invoke AddDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, eax +draw_durak_player_done: + ret +DrawDurakPlayer ENDP + +; --- DrawDurakAI: дурак: козырь, атака, защита, подкидывание и добор --- +DrawDurakAI PROC + call PlayCardSound + call DrawDurakCard + cmp eax, 0FFFFFFFFh + je draw_durak_ai_done + invoke AddDurakCard, OFFSET durakAIHand, OFFSET durakAICnt, eax +draw_durak_ai_done: + ret +DrawDurakAI ENDP + +; --- RefillDurakHands: карты, руки, очки и базовая карточная логика --- +RefillDurakHands PROC +refill_player_loop: + cmp durakPlayerCnt, 6 + jae refill_ai_loop + cmp durakDeckLeft, 0 + jbe refill_ai_loop + call DrawDurakPlayer + jmp refill_player_loop +refill_ai_loop: + cmp durakAICnt, 6 + jae refill_done + cmp durakDeckLeft, 0 + jbe refill_done + call DrawDurakAI + jmp refill_ai_loop +refill_done: + ret +RefillDurakHands ENDP +; --- RefillDurakHandsAIFirst: карты, руки, очки и базовая карточная логика --- +RefillDurakHandsAIFirst PROC +refill_ai_first_loop: + cmp durakAICnt, 6 + jae refill_player_after_ai_loop + cmp durakDeckLeft, 0 + jbe refill_player_after_ai_loop + call DrawDurakAI + jmp refill_ai_first_loop +refill_player_after_ai_loop: + cmp durakPlayerCnt, 6 + jae refill_ai_first_done + cmp durakDeckLeft, 0 + jbe refill_ai_first_done + call DrawDurakPlayer + jmp refill_player_after_ai_loop +refill_ai_first_done: + ret +RefillDurakHandsAIFirst ENDP + +; --- PrintDurakHand: вывод текста, цветов, картинок и элементов интерфейса --- +PrintDurakHand PROC uses eax ebx, pHand:DWORD, count:DWORD + mov rowIndex, 0 +print_durak_hand_loop: + mov eax, rowIndex + cmp eax, count + jae print_durak_hand_done + inc eax + invoke PrintUInt, eax + invoke PrintStr, OFFSET dotSpaceText + mov ebx, pHand + mov eax, rowIndex + invoke PrintDurakCardName, dword ptr [ebx + eax * 4] + invoke PrintStr, OFFSET cardGap + inc rowIndex + jmp print_durak_hand_loop +print_durak_hand_done: + invoke PrintStr, OFFSET nl + ret +PrintDurakHand ENDP + +; --- PrintDurakTable: вывод текста, цветов, картинок и элементов интерфейса --- +PrintDurakTable PROC uses ebx + cmp durakTableCnt, 0 + je print_table_done + invoke PrintStr, OFFSET durakTablePairsText + invoke PrintHandRow21, OFFSET durakAttackCards, durakTableCnt, 1 + mov rowIndex, 0 +print_table_pairs_loop: + mov eax, rowIndex + cmp eax, durakTableCnt + jae print_table_done + inc eax + invoke PrintUInt, eax + invoke PrintStr, OFFSET dotSpaceText + mov ebx, rowIndex + invoke PrintDurakCardName, durakAttackCards[ebx * 4] + invoke PrintStr, OFFSET durakSlashText + invoke PrintDurakCardName, durakDefenseCards[ebx * 4] + invoke PrintStr, OFFSET nl + inc rowIndex + jmp print_table_pairs_loop +print_table_done: + ret +PrintDurakTable ENDP + +; --- ShowDurakTable: дурак: козырь, атака, защита, подкидывание и добор --- +ShowDurakTable PROC + call ClearView + invoke PrintTitleColor, OFFSET durakTitle + invoke PrintStr, OFFSET durakDeckVisualText + invoke PrintDurakCardName, durakTrumpCard + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET durakDeckText + invoke PrintUInt, durakDeckLeft + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET durakAICardsText + invoke PrintUInt, durakAICnt + invoke PrintStr, OFFSET nl + cmp durakAICnt, 10 + ja show_ai_no_graphics + invoke PrintStr, OFFSET durakAIFaceText + invoke PrintHandRow21, OFFSET durakAIHand, durakAICnt, 0 +show_ai_no_graphics: + call PrintDurakTable + invoke PrintStr, OFFSET durakYourHandText + cmp durakPlayerCnt, 10 + ja show_player_list_only + invoke PrintHandRow21, OFFSET durakPlayerHand, durakPlayerCnt, 1 +show_player_list_only: + invoke PrintDurakHand, OFFSET durakPlayerHand, durakPlayerCnt + ret +ShowDurakTable ENDP + +; --- FindAIDurakDefense: аккаунты, файлы сохранений и загрузка профиля --- +FindAIDurakDefense PROC uses ebx ecx, tableIndex:DWORD + mov rowIndex, 0 +find_ai_defense_loop: + mov eax, rowIndex + cmp eax, durakAICnt + jae find_ai_defense_no + mov ebx, OFFSET durakAIHand + mov ecx, [ebx + eax * 4] + mov ebx, tableIndex + invoke CanDurakBeat, durakAttackCards[ebx * 4], ecx + cmp eax, 1 + je find_ai_defense_yes + inc rowIndex + jmp find_ai_defense_loop +find_ai_defense_yes: + mov eax, rowIndex + ret +find_ai_defense_no: + mov eax, 0FFFFFFFFh + ret +FindAIDurakDefense ENDP + +; --- AIDefendAll: дурак: козырь, атака, защита, подкидывание и добор --- +AIDefendAll PROC uses ebx + mov durakLoopGuard, 0 +ai_defend_loop: + inc durakLoopGuard + cmp durakLoopGuard, 20 + ja ai_defend_fail + call DurakFirstUnbeaten + cmp eax, 0FFFFFFFFh + je ai_defend_success + mov ebx, eax + invoke FindAIDurakDefense, ebx + cmp eax, 0FFFFFFFFh + je ai_defend_fail + invoke RemoveDurakCard, OFFSET durakAIHand, OFFSET durakAICnt, eax + mov durakDefenseCards[ebx * 4], eax + jmp ai_defend_loop +ai_defend_success: + mov eax, 1 + ret +ai_defend_fail: + xor eax, eax + ret +AIDefendAll ENDP + +; --- FindAIThrowIn: аккаунты, файлы сохранений и загрузка профиля --- +FindAIThrowIn PROC uses ebx ecx + cmp durakTableCnt, 6 + jae ai_throw_none + mov eax, durakTableCnt + cmp eax, durakPlayerCnt + jae ai_throw_none + mov rowIndex, 0 +ai_throw_loop: + mov eax, rowIndex + cmp eax, durakAICnt + jae ai_throw_none + mov ebx, OFFSET durakAIHand + mov ecx, [ebx + eax * 4] + invoke DurakRankOnTable, ecx + cmp eax, 1 + je ai_throw_found + inc rowIndex + jmp ai_throw_loop +ai_throw_found: + mov eax, rowIndex + ret +ai_throw_none: + mov eax, 0FFFFFFFFh + ret +FindAIThrowIn ENDP + +; --- CheckDurakEnd: дурак: козырь, атака, защита, подкидывание и добор --- +CheckDurakEnd PROC + cmp durakDeckLeft, 0 + ja durak_not_finished + cmp durakPlayerCnt, 0 + jne check_ai_empty + cmp durakAICnt, 0 + jne durak_player_won + mov eax, 3 + ret +check_ai_empty: + cmp durakAICnt, 0 + jne durak_not_finished + mov eax, 2 + ret +durak_player_won: + mov eax, 1 + ret +durak_not_finished: + xor eax, eax + ret +CheckDurakEnd ENDP + +; --- SetupDurak: дурак: козырь, атака, защита, подкидывание и добор --- +SetupDurak PROC uses ecx + call ResetDeck + mov durakPlayerCnt, 0 + mov durakAICnt, 0 + mov durakDeckLeft, 36 + mov durakPlayerTurn, 1 + mov durakSafeTurns, 0 + call ClearDurakTable + call DrawDurakCard + mov durakTrumpCard, eax + invoke DurakCardSuit, eax + mov durakTrumpSuit, eax + mov ecx, 6 +setup_durak_deal: + call DrawDurakPlayer + call DrawDurakAI + loop setup_durak_deal + ret +SetupDurak ENDP + +; --- PlayerOpenAttackLoop: звук, интро или покадровая анимация --- +PlayerOpenAttackLoop PROC uses ebx ecx +player_open_attack_loop: + mov eax, durakTableCnt + cmp eax, 6 + jae player_open_attack_done + cmp eax, durakAICnt + jae player_open_attack_done + call ShowDurakTable + invoke PrintStr, OFFSET durakThrowAsk + call ReadUInt + cmp eax, 0 + je player_open_attack_done + cmp eax, 1 + jb player_open_attack_bad + cmp eax, durakPlayerCnt + ja player_open_attack_bad + dec eax + mov durakChoice, eax + mov ebx, OFFSET durakPlayerHand + mov ecx, [ebx + eax * 4] + invoke DurakRankOnTable, ecx + cmp eax, 1 + jne player_open_attack_bad + invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, durakChoice + call AddDurakAttack + jmp player_open_attack_loop +player_open_attack_bad: + invoke PrintStr, OFFSET durakBadMoveText + invoke Sleep, 650 + jmp player_open_attack_loop +player_open_attack_done: + ret +PlayerOpenAttackLoop ENDP + +; --- AIInitialThrowLoop: дурак: козырь, атака, защита, подкидывание и добор --- +AIInitialThrowLoop PROC + mov durakLoopGuard, 0 +ai_initial_throw_loop: + inc durakLoopGuard + cmp durakLoopGuard, 20 + ja ai_initial_throw_done + call FindAIThrowIn + cmp eax, 0FFFFFFFFh + je ai_initial_throw_done + invoke RemoveDurakCard, OFFSET durakAIHand, OFFSET durakAICnt, eax + call AddDurakAttack + jmp ai_initial_throw_loop +ai_initial_throw_done: + ret +AIInitialThrowLoop ENDP +; --- PlayerThrowLoop: звук, интро или покадровая анимация --- +PlayerThrowLoop PROC uses ebx ecx + mov durakLoopGuard, 0 +player_throw_loop: + inc durakLoopGuard + cmp durakLoopGuard, 30 + ja player_throw_done + call ShowDurakTable + call AIDefendAll + cmp eax, 1 + je player_throw_after_defense + invoke CollectDurakTable, OFFSET durakAIHand, OFFSET durakAICnt + invoke PrintStr, OFFSET durakAITakeText + mov durakPlayerTurn, 1 + call RefillDurakHands + call Pause + ret +player_throw_after_defense: + call ShowDurakTable + invoke PrintStr, OFFSET durakThrowAsk + call ReadUInt + cmp eax, 0 + je player_throw_done + cmp eax, 1 + jb player_throw_bad + cmp eax, durakPlayerCnt + ja player_throw_bad + cmp durakTableCnt, 6 + jae player_throw_bad + dec eax + mov durakChoice, eax + mov ebx, OFFSET durakPlayerHand + mov ecx, [ebx + eax * 4] + invoke DurakRankOnTable, ecx + cmp eax, 1 + jne player_throw_bad + invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, durakChoice + call AddDurakAttack + jmp player_throw_loop +player_throw_bad: + invoke PrintStr, OFFSET durakBadMoveText + invoke Sleep, 650 + jmp player_throw_loop +player_throw_done: + call ClearDurakTable + mov durakPlayerTurn, 0 + call RefillDurakHands + ret +PlayerThrowLoop ENDP + +; --- PlayerDefendLoop: звук, интро или покадровая анимация --- +PlayerDefendLoop PROC uses ebx ecx + mov durakLoopGuard, 0 +player_defend_loop: + inc durakLoopGuard + cmp durakLoopGuard, 30 + ja player_take_table + call DurakAllDefended + cmp eax, 1 + je player_defended_all + call ShowDurakTable + invoke PrintStr, OFFSET durakDefendAsk + call ReadUInt + cmp eax, 0 + je player_take_table + cmp eax, 1 + jb player_def_bad + cmp eax, durakPlayerCnt + ja player_def_bad + dec eax + mov durakChoice, eax + mov ebx, OFFSET durakPlayerHand + mov ecx, [ebx + eax * 4] + + call DurakTableHasDefense + cmp eax, 0 + jne player_try_beat + invoke DurakRankOnTable, ecx + cmp eax, 1 + jne player_try_beat + mov eax, durakTableCnt + cmp durakAICnt, eax + jbe player_try_beat + invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, durakChoice + call AddDurakAttack + invoke PrintStr, OFFSET durakTransferText + call Pause + call PlayerThrowLoop + ret + +player_try_beat: + call DurakFirstUnbeaten + mov ebx, eax + mov ecx, OFFSET durakPlayerHand + mov eax, durakChoice + mov ecx, [ecx + eax * 4] + invoke CanDurakBeat, durakAttackCards[ebx * 4], ecx + cmp eax, 1 + jne player_def_bad + invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, durakChoice + mov durakDefenseCards[ebx * 4], eax + jmp player_defend_loop +player_def_bad: + invoke PrintStr, OFFSET durakBadMoveText + invoke Sleep, 650 + jmp player_defend_loop +player_take_table: + invoke CollectDurakTable, OFFSET durakPlayerHand, OFFSET durakPlayerCnt + invoke PrintStr, OFFSET durakPlayerTakeText + mov durakPlayerTurn, 0 + call RefillDurakHandsAIFirst + call Pause + ret +player_defended_all: + call FindAIThrowIn + cmp eax, 0FFFFFFFFh + je player_defense_done + invoke RemoveDurakCard, OFFSET durakAIHand, OFFSET durakAICnt, eax + call AddDurakAttack + jmp player_defend_loop +player_defense_done: + invoke PrintStr, OFFSET durakPlayerDefendText + call ClearDurakTable + mov durakPlayerTurn, 1 + call RefillDurakHandsAIFirst + call Pause + ret +PlayerDefendLoop ENDP + +; --- GameDurak: дурак: козырь, атака, защита, подкидывание и добор --- +GameDurak PROC + durak_start: + call ClearView + invoke PrintTitleColor, OFFSET durakTitle + call PromptBet + call SetupDurak + +durak_round_loop: + call CheckDurakEnd + cmp eax, 1 + je durak_finish_win + cmp eax, 2 + je durak_finish_lose + cmp eax, 3 + je durak_finish_draw + inc durakSafeTurns + cmp durakSafeTurns, 300 + ja durak_finish_stuck + call ClearDurakTable + cmp durakPlayerTurn, 1 + je durak_check_player_attack + jmp durak_check_ai_attack + +durak_check_player_attack: + cmp durakPlayerCnt, 0 + jne durak_player_attack + cmp durakDeckLeft, 0 + jbe durak_round_loop + call RefillDurakHands + cmp durakPlayerCnt, 0 + jne durak_player_attack + jmp durak_finish_stuck + +durak_check_ai_attack: + cmp durakAICnt, 0 + jne durak_ai_attack + cmp durakDeckLeft, 0 + jbe durak_round_loop + call RefillDurakHandsAIFirst + cmp durakAICnt, 0 + jne durak_ai_attack + jmp durak_finish_stuck + +durak_player_attack: +player_attack_choose: + call ShowDurakTable + invoke PrintStr, OFFSET durakAttackAsk + call ReadUInt + cmp eax, 1 + jb player_attack_bad + cmp eax, durakPlayerCnt + ja player_attack_bad + dec eax + invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, eax + call AddDurakAttack + call PlayerOpenAttackLoop + call PlayerThrowLoop + jmp durak_round_loop +player_attack_bad: + invoke PrintStr, OFFSET durakBadMoveText + invoke Sleep, 650 + jmp player_attack_choose + +durak_ai_attack: + cmp durakAICnt, 0 + jne durak_ai_has_card + call RefillDurakHandsAIFirst + cmp durakAICnt, 0 + je durak_round_loop +durak_ai_has_card: + invoke RemoveDurakCard, OFFSET durakAIHand, OFFSET durakAICnt, 0 + call AddDurakAttack + call AIInitialThrowLoop + call PlayerDefendLoop + jmp durak_round_loop + +durak_finish_win: + invoke UnlockAchievement, 2000h, OFFSET achDurakWinName + call ShowDurakTable + invoke PrintStr, OFFSET durakWinText + call PayWin + jmp durak_again + +durak_finish_lose: + call ShowDurakTable + invoke PrintStr, OFFSET durakLoseText + call PayLose + jmp durak_again + +durak_finish_stuck: + call ShowDurakTable + invoke PrintStr, OFFSET durakStuckText + call PayDraw + jmp durak_again + +durak_finish_draw: + call ShowDurakTable + invoke PrintStr, OFFSET drawText + call PayDraw + +durak_again: + cmp tournamentMode, 1 + je durak_tournament_return + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je durak_start + cmp al, 'Y' + je durak_start +durak_tournament_return: + ret +GameDurak ENDP +; --- GameClassicSlot: слот-машины, барабаны, символы, выплаты и джекпоты --- +GameClassicSlot PROC +classic_slot_start: + call ClearView + invoke PrintTitleColor, OFFSET classicSlotTitle + invoke PrintStr, OFFSET classicSlotPayTableText + call PromptBet + call PlaySlotSound + invoke Sleep, 400 + invoke PrintStr, OFFSET slotPullText + mov slotWinMask, 0 + mov slotVisible, 0 + call PrintClassicSlotWindow + invoke Sleep, 1600 + + invoke FillClassicSlotColumn, 0 + mov slotVisible, 1 + call PrintClassicSlotWindow + invoke Sleep, 750 + + invoke FillClassicSlotColumn, 1 + mov slotVisible, 2 + call PrintClassicSlotWindow + invoke Sleep, 750 + + invoke FillClassicSlotColumn, 2 + mov slotVisible, 3 + call PrintClassicSlotWindow + invoke Sleep, 450 + + cmp cheatSlotJackpot, 1 + jne classic_no_forced_jackpot + mov cheatSlotJackpot, 0 + mov dword ptr slotGrid[12], 0 + mov dword ptr slotGrid[16], 0 + mov dword ptr slotGrid[20], 0 + call PrintClassicSlotWindow + invoke Sleep, 300 +classic_no_forced_jackpot: + + mov eax, slotGrid[12] + mov slotA, eax + mov eax, slotGrid[16] + mov slotB, eax + mov eax, slotGrid[20] + mov slotC, eax + + mov eax, slotA + cmp eax, slotB + jne classic_slot_check_pair_1 + mov eax, slotB + cmp eax, slotC + jne classic_slot_pair + invoke UnlockAchievement, 100h, OFFSET achClassicSlotName + call PlayJackpotSound + invoke PrintStr, OFFSET classicSlotJackpot + invoke Sleep, 650 + call PlayHakariSound + call PlayHakariDance + call PrintClassicSlotWindow + mov eax, slotA + cmp eax, 0 + je classic_slot_pay_777 + cmp eax, 2 + je classic_slot_pay_dollar + cmp eax, 1 + je classic_slot_pay_bar + cmp eax, 5 + je classic_slot_pay_aaa + invoke PaySlotMultiplier, 3 + jmp classic_ask_slot_again +classic_slot_pay_777: + invoke UnlockAchievement, 100h, OFFSET achClassicSlotName + invoke PaySlotMultiplier, 10 + jmp classic_ask_slot_again +classic_slot_pay_dollar: + invoke PaySlotMultiplier, 7 + jmp classic_ask_slot_again +classic_slot_pay_bar: + invoke PaySlotMultiplier, 5 + jmp classic_ask_slot_again +classic_slot_pay_aaa: + invoke PaySlotMultiplier, 4 + jmp classic_ask_slot_again + +classic_slot_check_pair_1: + mov eax, slotA + cmp eax, slotC + je classic_slot_pair + mov eax, slotB + cmp eax, slotC + je classic_slot_pair + invoke PrintStr, OFFSET classicSlotEmpty + call PayLose + jmp classic_ask_slot_again + +classic_slot_pair: + invoke UnlockAchievement, 100h, OFFSET achClassicSlotName + invoke PrintStr, OFFSET classicSlotPair + invoke PaySlotMultiplier, 2 + +classic_ask_slot_again: + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je classic_slot_start + cmp al, 'Y' + je classic_slot_start + ret +GameClassicSlot ENDP +; --- ObserverDrawAI1: режим наблюдателя AI vs AI --- +ObserverDrawAI1 PROC + call DrawPlayer21Hand + call CalcPlayerScore21 + ret +ObserverDrawAI1 ENDP + +; --- ObserverDrawAI2: режим наблюдателя AI vs AI --- +ObserverDrawAI2 PROC + call DrawAI21Hand + call CalcAIScore21 + ret +ObserverDrawAI2 ENDP + +; --- ObserverShow21: карты, руки, очки и базовая карточная логика --- +ObserverShow21 PROC + call ClearView + invoke PrintTitleColor, OFFSET observer21Title + invoke PrintStr, OFFSET observerAI1CardsText + invoke PrintHandRow21, OFFSET playerHand21, playerCnt21, 1 + invoke PrintStr, OFFSET observerAI1Text + invoke PrintUInt, playerTotal + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET observerAI2CardsText + invoke PrintHandRow21, OFFSET aiHand21, aiCnt21, 1 + invoke PrintStr, OFFSET observerAI2Text + invoke PrintUInt, dealerTotal + invoke PrintStr, OFFSET nl + ret +ObserverShow21 ENDP + +; --- GameObserver21: карты, руки, очки и базовая карточная логика --- +GameObserver21 PROC + call ClearView + invoke PrintTitleColor, OFFSET observer21Title + call ResetDeck + mov playerCnt21, 0 + mov aiCnt21, 0 + mov revealAI21, 1 + call ObserverDrawAI1 + call ObserverDrawAI1 + call ObserverDrawAI2 + call ObserverDrawAI2 +observer21_loop: + call ObserverShow21 + invoke Sleep, 750 + cmp playerTotal, 17 + jae observer21_ai2 + call ObserverDrawAI1 + jmp observer21_loop +observer21_ai2: + cmp dealerTotal, 17 + jae observer21_compare + call ObserverDrawAI2 + jmp observer21_loop +observer21_compare: + call ObserverShow21 + mov eax, playerTotal + cmp eax, 21 + ja observer21_ai1_bust + mov eax, dealerTotal + cmp eax, 21 + ja observer21_ai1_win + mov eax, playerTotal + cmp eax, dealerTotal + ja observer21_ai1_win + jb observer21_ai2_win + invoke PrintStr, OFFSET observerDrawText + jmp observer21_done +observer21_ai1_bust: + mov eax, dealerTotal + cmp eax, 21 + ja observer21_draw + jmp observer21_ai2_win +observer21_draw: + invoke PrintStr, OFFSET observerDrawText + jmp observer21_done +observer21_ai1_win: + invoke PrintStr, OFFSET observerWin1Text + jmp observer21_done +observer21_ai2_win: + invoke PrintStr, OFFSET observerWin2Text +observer21_done: + call Pause + ret +GameObserver21 ENDP + +; --- ObserverPokerEvaluate: покер: оценка комбинаций, ставки, фолды и ИИ --- +ObserverPokerEvaluate PROC + invoke BuildPokerEvalHand, OFFSET playerHand21, OFFSET pokerPlayerEvalHand + invoke EvaluatePokerN, OFFSET pokerPlayerEvalHand, pokerEvalCount + mov pokerPlayerScore, eax + invoke BuildPokerEvalHand, OFFSET aiHand21, OFFSET pokerAIEvalHand + invoke EvaluatePokerN, OFFSET pokerAIEvalHand, pokerEvalCount + mov pokerAIScore, eax + ret +ObserverPokerEvaluate ENDP + +; --- ObserverShowPoker: покер: оценка комбинаций, ставки, фолды и ИИ --- +ObserverShowPoker PROC + call ClearView + invoke PrintTitleColor, OFFSET observerPokerTitle + call ShowPokerTable + call ShowPokerMoney + call ObserverPokerEvaluate + invoke PrintStr, OFFSET pokerYourComboText + invoke PrintPokerHandName, pokerPlayerScore + invoke PrintStr, OFFSET pokerAIComboText + invoke PrintPokerHandName, pokerAIScore + ret +ObserverShowPoker ENDP + +; --- ObserverPokerDecision: покер: оценка комбинаций, ставки, фолды и ИИ --- +ObserverPokerDecision PROC uses ebx edx + call ObserverPokerEvaluate + mov eax, pokerPlayerScore + cmp eax, 9 + ja observer_poker_ai2_check_fold + invoke RandomRange, 4 + cmp eax, 0 + je observer_poker_ai1_fold +observer_poker_ai2_check_fold: + mov eax, pokerAIScore + cmp eax, 9 + ja observer_poker_raise_check + invoke RandomRange, 4 + cmp eax, 0 + je observer_poker_ai2_fold +observer_poker_raise_check: + mov eax, pokerPlayerScore + cmp eax, 1000 + jb observer_poker_ai2_raise_check + invoke RandomRange, 2 + cmp eax, 0 + jne observer_poker_ai2_raise_check + invoke PrintStr, OFFSET observerAI1RaiseText + add currentBet, 500 + invoke Sleep, 450 + mov eax, pokerAIScore + cmp eax, pokerPlayerScore + jae observer_poker_call_1 + invoke RandomRange, 2 + cmp eax, 0 + je observer_poker_ai2_fold +observer_poker_call_1: + invoke PrintStr, OFFSET observerCallText +observer_poker_ai2_raise_check: + mov eax, pokerAIScore + cmp eax, 1000 + jb observer_poker_continue + invoke RandomRange, 2 + cmp eax, 0 + jne observer_poker_continue + invoke PrintStr, OFFSET observerAI2RaiseText + add currentBet, 500 + invoke Sleep, 450 + mov eax, pokerPlayerScore + cmp eax, pokerAIScore + jae observer_poker_call_2 + invoke RandomRange, 2 + cmp eax, 0 + je observer_poker_ai1_fold +observer_poker_call_2: + invoke PrintStr, OFFSET observerCallText +observer_poker_continue: + xor eax, eax + ret +observer_poker_ai1_fold: + invoke PrintStr, OFFSET observerFold1Text + mov eax, 2 + ret +observer_poker_ai2_fold: + invoke PrintStr, OFFSET observerFold2Text + mov eax, 1 + ret +ObserverPokerDecision ENDP + +; --- GameObserverPoker: покер: оценка комбинаций, ставки, фолды и ИИ --- +GameObserverPoker PROC + call ClearView + invoke PrintTitleColor, OFFSET observerPokerTitle + call ResetDeck + call ResetPokerHands + mov revealAI21, 1 + mov currentBet, 500 + call DealPokerHands +observer_poker_stage_loop: + call ObserverShowPoker + invoke Sleep, 700 + cmp communityCnt, 5 + jae observer_poker_showdown + call ObserverPokerDecision + cmp eax, 1 + je observer_poker_ai1_wins + cmp eax, 2 + je observer_poker_ai2_wins + invoke PrintStr, OFFSET pokerNextCardText + invoke Sleep, 700 + inc communityCnt + jmp observer_poker_stage_loop +observer_poker_showdown: + call ObserverShowPoker + mov eax, pokerPlayerScore + cmp eax, pokerAIScore + ja observer_poker_ai1_wins + jb observer_poker_ai2_wins + invoke PrintStr, OFFSET observerDrawText + jmp observer_poker_done +observer_poker_ai1_wins: + invoke PrintStr, OFFSET observerWin1Text + jmp observer_poker_done +observer_poker_ai2_wins: + invoke PrintStr, OFFSET observerWin2Text +observer_poker_done: + call Pause + ret +GameObserverPoker ENDP + +; --- FindPlayerDurakDefense: аккаунты, файлы сохранений и загрузка профиля --- +FindPlayerDurakDefense PROC uses ebx ecx, tableIndex:DWORD + mov rowIndex, 0 +find_player_defense_loop: + mov eax, rowIndex + cmp eax, durakPlayerCnt + jae find_player_defense_no + mov ebx, OFFSET durakPlayerHand + mov ecx, [ebx + eax * 4] + mov ebx, tableIndex + invoke CanDurakBeat, durakAttackCards[ebx * 4], ecx + cmp eax, 1 + je find_player_defense_yes + inc rowIndex + jmp find_player_defense_loop +find_player_defense_yes: + mov eax, rowIndex + ret +find_player_defense_no: + mov eax, 0FFFFFFFFh + ret +FindPlayerDurakDefense ENDP + +; --- PlayerAIDefendAll: звук, интро или покадровая анимация --- +PlayerAIDefendAll PROC uses ebx +player_ai_defend_loop: + call DurakFirstUnbeaten + cmp eax, 0FFFFFFFFh + je player_ai_defend_success + mov ebx, eax + invoke FindPlayerDurakDefense, ebx + cmp eax, 0FFFFFFFFh + je player_ai_defend_fail + invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, eax + mov durakDefenseCards[ebx * 4], eax + jmp player_ai_defend_loop +player_ai_defend_success: + mov eax, 1 + ret +player_ai_defend_fail: + xor eax, eax + ret +PlayerAIDefendAll ENDP + +; --- FindPlayerThrowIn: аккаунты, файлы сохранений и загрузка профиля --- +FindPlayerThrowIn PROC uses ebx ecx + cmp durakTableCnt, 6 + jae player_ai_throw_none + mov eax, durakTableCnt + cmp eax, durakAICnt + jae player_ai_throw_none + mov rowIndex, 0 +player_ai_throw_loop: + mov eax, rowIndex + cmp eax, durakPlayerCnt + jae player_ai_throw_none + mov ebx, OFFSET durakPlayerHand + mov ecx, [ebx + eax * 4] + invoke DurakRankOnTable, ecx + cmp eax, 1 + je player_ai_throw_found + inc rowIndex + jmp player_ai_throw_loop +player_ai_throw_found: + mov eax, rowIndex + ret +player_ai_throw_none: + mov eax, 0FFFFFFFFh + ret +FindPlayerThrowIn ENDP + +; --- PlayerAIInitialThrowLoop: звук, интро или покадровая анимация --- +PlayerAIInitialThrowLoop PROC +player_ai_initial_throw_loop: + call FindPlayerThrowIn + cmp eax, 0FFFFFFFFh + je player_ai_initial_throw_done + invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, eax + call AddDurakAttack + jmp player_ai_initial_throw_loop +player_ai_initial_throw_done: + ret +PlayerAIInitialThrowLoop ENDP + +; --- ShowDurakObserverTable: дурак: козырь, атака, защита, подкидывание и добор --- +ShowDurakObserverTable PROC + call ClearView + invoke PrintTitleColor, OFFSET observerDurakTitle + invoke PrintStr, OFFSET durakDeckVisualText + invoke PrintDurakCardName, durakTrumpCard + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET durakDeckText + invoke PrintUInt, durakDeckLeft + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET observerAI1CardsText + invoke PrintHandRow21, OFFSET durakPlayerHand, durakPlayerCnt, 1 + call PrintDurakTable + invoke PrintStr, OFFSET observerAI2CardsText + invoke PrintHandRow21, OFFSET durakAIHand, durakAICnt, 1 + ret +ShowDurakObserverTable ENDP + +; --- GameObserverDurak: дурак: козырь, атака, защита, подкидывание и добор --- +GameObserverDurak PROC + call SetupDurak + mov pokerReplaceIndex, 0 +observer_durak_loop: + inc pokerReplaceIndex + cmp pokerReplaceIndex, 32 + ja observer_durak_draw + call CheckDurakEnd + cmp eax, 1 + je observer_durak_ai1_win + cmp eax, 2 + je observer_durak_ai2_win + cmp eax, 3 + je observer_durak_draw + call ClearDurakTable + cmp durakPlayerTurn, 1 + je observer_durak_ai1_attack + jmp observer_durak_ai2_attack +observer_durak_ai1_attack: + cmp durakPlayerCnt, 0 + je observer_durak_ai1_win + invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, 0 + call AddDurakAttack + call PlayerAIInitialThrowLoop + call ShowDurakObserverTable + invoke Sleep, 750 + call AIDefendAll + cmp eax, 1 + je observer_durak_ai2_defended + invoke CollectDurakTable, OFFSET durakAIHand, OFFSET durakAICnt + invoke PrintStr, OFFSET durakAITakeText + mov durakPlayerTurn, 1 + call RefillDurakHands + invoke Sleep, 850 + jmp observer_durak_loop +observer_durak_ai2_defended: + call ShowDurakObserverTable + invoke Sleep, 750 + call ClearDurakTable + mov durakPlayerTurn, 0 + call RefillDurakHands + jmp observer_durak_loop +observer_durak_ai2_attack: + cmp durakAICnt, 0 + je observer_durak_ai2_win + invoke RemoveDurakCard, OFFSET durakAIHand, OFFSET durakAICnt, 0 + call AddDurakAttack + call AIInitialThrowLoop + call ShowDurakObserverTable + invoke Sleep, 750 + call PlayerAIDefendAll + cmp eax, 1 + je observer_durak_ai1_defended + invoke CollectDurakTable, OFFSET durakPlayerHand, OFFSET durakPlayerCnt + invoke PrintStr, OFFSET durakPlayerTakeText + mov durakPlayerTurn, 0 + call RefillDurakHandsAIFirst + invoke Sleep, 850 + jmp observer_durak_loop +observer_durak_ai1_defended: + call ShowDurakObserverTable + invoke Sleep, 750 + call ClearDurakTable + mov durakPlayerTurn, 1 + call RefillDurakHandsAIFirst + jmp observer_durak_loop +observer_durak_ai1_win: + call ShowDurakObserverTable + invoke PrintStr, OFFSET observerWin1Text + jmp observer_durak_done +observer_durak_ai2_win: + call ShowDurakObserverTable + invoke PrintStr, OFFSET observerWin2Text + jmp observer_durak_done +observer_durak_draw: + call ShowDurakObserverTable + invoke PrintStr, OFFSET observerDrawText +observer_durak_done: + call Pause + ret +GameObserverDurak ENDP + +; --- GameObserverRoulette: русская рулетка или казино-рулетка --- +GameObserverRoulette PROC + call ClearView + invoke PrintTitleColor, OFFSET observerRRTitle + call PlayRouletteSpinSound + call SetupRoulette + call AnimateRouletteSpin +observer_rr_loop: + call ShowRouletteStatus + cmp rrTurn, 0 + je observer_rr_ai1_turn + invoke PrintStr, OFFSET rrAITurnText + invoke Sleep, 850 + call RouletteChamberLoaded + cmp eax, 1 + je observer_rr_ai2_dead + call PlayRouletteDrySound + invoke PrintStr, OFFSET rrClickText + invoke Sleep, 750 + call AdvanceRouletteChamber + mov rrTurn, 0 + jmp observer_rr_loop +observer_rr_ai1_turn: + invoke PrintStr, OFFSET rrPlayerTurnText + invoke Sleep, 850 + call RouletteChamberLoaded + cmp eax, 1 + je observer_rr_ai1_dead + call PlayRouletteDrySound + invoke PrintStr, OFFSET rrClickText + invoke Sleep, 750 + call AdvanceRouletteChamber + mov rrTurn, 1 + jmp observer_rr_loop +observer_rr_ai1_dead: + call PrintBang + invoke PrintStr, OFFSET observerShotAI1Text + jmp observer_rr_done +observer_rr_ai2_dead: + call PrintBang + invoke PrintStr, OFFSET observerShotAI2Text +observer_rr_done: + call Pause + ret +GameObserverRoulette ENDP + +; --- GameObserver: режим наблюдателя AI vs AI --- +GameObserver PROC +observer_menu_loop: + call ClearView + invoke PrintTitleColor, OFFSET observerTitle + invoke PrintStr, OFFSET observerMenuText + call ReadUInt + cmp eax, 0 + je observer_exit + cmp eax, 1 + je observer_run_rr + cmp eax, 2 + je observer_run_21 + cmp eax, 3 + je observer_run_poker + cmp eax, 4 + je observer_run_durak + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp observer_menu_loop +observer_run_rr: + invoke UnlockAchievement, 10000h, OFFSET achObserverName + call GameObserverRoulette + jmp observer_menu_loop +observer_run_21: + mov currentGameId, 1 + invoke UnlockAchievement, 10000h, OFFSET achObserverName + call GameObserver21 + jmp observer_menu_loop +observer_run_poker: + mov currentGameId, 2 + invoke UnlockAchievement, 10000h, OFFSET achObserverName + call GameObserverPoker + jmp observer_menu_loop +observer_run_durak: + mov currentGameId, 10 + invoke UnlockAchievement, 10000h, OFFSET achObserverName + call GameObserverDurak + jmp observer_menu_loop +observer_exit: + ret +GameObserver ENDP + +; --- PrintShopBackName: вывод текста, цветов, картинок и элементов интерфейса --- +PrintShopBackName PROC + mov eax, shopBackStyle + cmp eax, 1 + je print_shop_back_blue + cmp eax, 2 + je print_shop_back_red + cmp eax, 3 + je print_shop_back_gold + cmp eax, 4 + je print_shop_back_skull + cmp eax, 5 + je print_shop_back_clover + cmp eax, 6 + je print_shop_back_arcane + cmp eax, 7 + je print_shop_back_noir + cmp eax, 8 + je print_shop_back_diamond + cmp eax, 9 + je print_shop_back_rider + cmp eax, 10 + je print_shop_back_bee + cmp eax, 11 + je print_shop_back_fan + cmp eax, 12 + je print_shop_back_web + invoke PrintStr, OFFSET shopBackGray + ret +print_shop_back_blue: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET shopBackBlue + call ResetColor + ret +print_shop_back_red: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET shopBackRed + call ResetColor + ret +print_shop_back_gold: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopBackGold + call ResetColor + ret +print_shop_back_skull: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET shopBackSkull + call ResetColor + ret +print_shop_back_clover: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET shopBackClover + call ResetColor + ret +print_shop_back_arcane: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET shopBackArcane + call ResetColor + ret +print_shop_back_noir: + invoke SetColor, COLOR_CARD + invoke PrintStr, OFFSET shopBackNoir + call ResetColor + ret +print_shop_back_diamond: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET shopBackDiamond + call ResetColor + ret +print_shop_back_rider: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopBackRider + call ResetColor + ret +print_shop_back_bee: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopBackBee + call ResetColor + ret +print_shop_back_fan: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET shopBackFan + call ResetColor + ret +print_shop_back_web: + invoke SetColor, COLOR_CARD + invoke PrintStr, OFFSET shopBackWeb + call ResetColor + ret +PrintShopBackName ENDP + +; --- PrintShopCharmName: вывод текста, цветов, картинок и элементов интерфейса --- +PrintShopCharmName PROC + mov eax, shopCharmLevel + cmp eax, 1 + je print_shop_charm_clover + cmp eax, 2 + je print_shop_charm_bell + cmp eax, 3 + je print_shop_charm_diamond + cmp eax, 4 + je print_shop_charm_skull + cmp eax, 5 + je print_shop_charm_web + cmp eax, 6 + je print_shop_charm_bee + cmp eax, 7 + je print_shop_charm_moon + cmp eax, 8 + je print_shop_charm_crown + cmp eax, 9 + je print_shop_charm_mirror + cmp eax, 10 + je print_shop_charm_dice + cmp eax, 11 + je print_shop_charm_blood + cmp eax, 12 + je print_shop_charm_hourglass + cmp eax, 13 + je print_shop_charm_horseshoe + cmp eax, 14 + je print_shop_charm_joker + cmp eax, 15 + je print_shop_charm_phoenix + cmp eax, 16 + je print_shop_charm_compass + cmp eax, 17 + je print_shop_charm_tooth + cmp eax, 18 + je print_shop_charm_eye + cmp eax, 19 + je print_shop_charm_key + cmp eax, 20 + je print_shop_charm_candle + cmp eax, 21 + je print_shop_charm_chip + cmp eax, 22 + je print_shop_charm_snake + cmp eax, 23 + je print_shop_charm_ace + cmp eax, 24 + je print_shop_charm_devil + invoke PrintStr, OFFSET shopCharmNone + ret +print_shop_charm_clover: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET shopCharmClover + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_bell: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopCharmBell + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_diamond: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET shopCharmDiamond + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_skull: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET shopCharmSkull + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_web: + invoke SetColor, COLOR_CARD + invoke PrintStr, OFFSET shopCharmWeb + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_bee: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopCharmBee + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_moon: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET shopCharmMoon + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_crown: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopCharmCrown + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_mirror: + invoke SetColor, COLOR_CARD + invoke PrintStr, OFFSET shopCharmMirror + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_dice: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET shopCharmDice + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_blood: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET shopCharmBlood + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_hourglass: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopCharmHourglass + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_horseshoe: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET shopCharmHorseshoe + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_joker: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET shopCharmJoker + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_phoenix: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopCharmPhoenix + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_compass: + invoke SetColor, COLOR_CARD + invoke PrintStr, OFFSET shopCharmCompass + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_tooth: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopCharmTooth + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_eye: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET shopCharmEye + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_key: + invoke SetColor, COLOR_CARD + invoke PrintStr, OFFSET shopCharmKey + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_candle: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET shopCharmCandle + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_chip: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET shopCharmChip + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_snake: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET shopCharmSnake + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_ace: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET shopCharmAce + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_devil: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET shopCharmDevil + call ResetColor +print_shop_charm_uses: + invoke PrintStr, OFFSET shopCharmUsesText + invoke PrintUInt, shopCharmUses + invoke PrintStr, OFFSET nl + ret +PrintShopCharmName ENDP + +; --- PrintShopStatus: вывод текста, цветов, картинок и элементов интерфейса --- +PrintShopStatus PROC + call PrintBank + invoke PrintStr, OFFSET shopBackText + call PrintShopBackName + invoke PrintStr, OFFSET shopCharmText + call PrintShopCharmName + invoke PrintStr, OFFSET nl + ret +PrintShopStatus ENDP + +; --- ShopBuyBack: магазин рубашек, талисманов и покупок --- +ShopBuyBack PROC uses eax ebx, style:DWORD, cost:DWORD, maskValue:DWORD + mov eax, shopBackOwned + mov ebx, maskValue + test eax, ebx + jne shop_back_already_owned + + mov eax, cost + cmp bankroll, eax + jae shop_back_buy + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET tooBigBetText + call ResetColor + ret +shop_back_buy: + sub bankroll, eax + mov eax, shopBackOwned + or eax, ebx + mov shopBackOwned, eax + mov eax, style + mov shopBackStyle, eax + call SaveGame + invoke UnlockAchievement, 10h, OFFSET achShopperName + mov eax, shopBackOwned + and eax, 1FFFh + cmp eax, 1FFFh + jne shop_back_collector_skip + invoke UnlockAchievement, 4000h, OFFSET achBackCollectorName +shop_back_collector_skip: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET shopBoughtText + call ResetColor + call PrintBank + call CheckBankrupt + ret +shop_back_already_owned: + mov eax, style + mov shopBackStyle, eax + call SaveGame + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopSelectedText + call ResetColor + ret +ShopBuyBack ENDP + +; --- ShopBuyCharm: покупка талисмана с разными зарядами --- +ShopBuyCharm PROC uses eax, charmLevel:DWORD, cost:DWORD + mov eax, cost + cmp bankroll, eax + jae shop_charm_buy + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET tooBigBetText + call ResetColor + ret +shop_charm_buy: + sub bankroll, eax + mov eax, charmLevel + mov shopCharmLevel, eax + cmp eax, 5 + je shop_charm_one_use + cmp eax, 11 + je shop_charm_one_use + cmp eax, 14 + je shop_charm_one_use + cmp eax, 18 + je shop_charm_one_use + cmp eax, 20 + je shop_charm_one_use + cmp eax, 24 + je shop_charm_one_use + cmp eax, 4 + je shop_charm_two_uses + cmp eax, 8 + je shop_charm_two_uses + cmp eax, 12 + je shop_charm_two_uses + cmp eax, 15 + je shop_charm_two_uses + cmp eax, 22 + je shop_charm_two_uses + cmp eax, 7 + je shop_charm_four_uses + cmp eax, 9 + je shop_charm_four_uses + cmp eax, 21 + je shop_charm_four_uses + cmp eax, 6 + je shop_charm_five_uses + cmp eax, 17 + je shop_charm_five_uses + cmp eax, 23 + je shop_charm_five_uses + cmp eax, 10 + je shop_charm_six_uses + cmp eax, 19 + je shop_charm_six_uses + cmp eax, 13 + je shop_charm_eight_uses + mov shopCharmUses, 3 + jmp shop_charm_store +shop_charm_one_use: + mov shopCharmUses, 1 + jmp shop_charm_store +shop_charm_two_uses: + mov shopCharmUses, 2 + jmp shop_charm_store +shop_charm_four_uses: + mov shopCharmUses, 4 + jmp shop_charm_store +shop_charm_five_uses: + mov shopCharmUses, 5 + jmp shop_charm_store +shop_charm_six_uses: + mov shopCharmUses, 6 + jmp shop_charm_store +shop_charm_eight_uses: + mov shopCharmUses, 8 +shop_charm_store: + call SaveGame + invoke UnlockAchievement, 10h, OFFSET achShopperName + invoke UnlockAchievement, 8000h, OFFSET achCharmBuyerName + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET shopBoughtText + call ResetColor + call PrintBank + call CheckBankrupt + ret +ShopBuyCharm ENDP + +; --- ShowBestiaryPage: карточка талисмана в бестиарии --- +ShowBestiaryPage PROC artPtr:DWORD, infoPtr:DWORD, colorValue:DWORD + call ClearView + invoke SetColor, colorValue + invoke PrintStr, artPtr + call ResetColor + invoke PrintStr, infoPtr + invoke PrintStr, OFFSET bestiaryBackText + call ReadKey + ret +ShowBestiaryPage ENDP + +; --- GameCharmBestiary: энциклопедия талисманов с ASCII-артами --- +GameCharmBestiary PROC +bestiary_loop: + call ClearView + invoke PrintTitleColor, OFFSET bestiaryTitle + invoke PrintStr, OFFSET bestiaryMenuText + call ReadUInt + cmp eax, 0 + je bestiary_exit + cmp eax, 1 + je bestiary_clover + cmp eax, 2 + je bestiary_bell + cmp eax, 3 + je bestiary_diamond + cmp eax, 4 + je bestiary_skull + cmp eax, 5 + je bestiary_web + cmp eax, 6 + je bestiary_bee + cmp eax, 7 + je bestiary_moon + cmp eax, 8 + je bestiary_crown + cmp eax, 9 + je bestiary_mirror + cmp eax, 10 + je bestiary_dice + cmp eax, 11 + je bestiary_blood + cmp eax, 12 + je bestiary_hourglass + cmp eax, 13 + je bestiary_horseshoe + cmp eax, 14 + je bestiary_joker + cmp eax, 15 + je bestiary_phoenix + cmp eax, 16 + je bestiary_compass + cmp eax, 17 + je bestiary_tooth + cmp eax, 18 + je bestiary_eye + cmp eax, 19 + je bestiary_key + cmp eax, 20 + je bestiary_candle + cmp eax, 21 + je bestiary_chip + cmp eax, 22 + je bestiary_snake + cmp eax, 23 + je bestiary_ace + cmp eax, 24 + je bestiary_devil + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp bestiary_loop +bestiary_clover: + invoke ShowBestiaryPage, OFFSET bestiaryCloverArt, OFFSET bestiaryCloverInfo, COLOR_MONEY + jmp bestiary_loop +bestiary_bell: + invoke ShowBestiaryPage, OFFSET bestiaryBellArt, OFFSET bestiaryBellInfo, COLOR_WARN + jmp bestiary_loop +bestiary_diamond: + invoke ShowBestiaryPage, OFFSET bestiaryDiamondArt, OFFSET bestiaryDiamondInfo, COLOR_TITLE + jmp bestiary_loop +bestiary_skull: + invoke ShowBestiaryPage, OFFSET bestiarySkullArt, OFFSET bestiarySkullInfo, COLOR_BAD + jmp bestiary_loop +bestiary_web: + invoke ShowBestiaryPage, OFFSET bestiaryWebArt, OFFSET bestiaryWebInfo, COLOR_CARD + jmp bestiary_loop +bestiary_bee: + invoke ShowBestiaryPage, OFFSET bestiaryBeeArt, OFFSET bestiaryBeeInfo, COLOR_WARN + jmp bestiary_loop +bestiary_moon: + invoke ShowBestiaryPage, OFFSET bestiaryMoonArt, OFFSET bestiaryMoonInfo, COLOR_TITLE + jmp bestiary_loop +bestiary_crown: + invoke ShowBestiaryPage, OFFSET bestiaryCrownArt, OFFSET bestiaryCrownInfo, COLOR_WARN + jmp bestiary_loop +bestiary_mirror: + invoke ShowBestiaryPage, OFFSET bestiaryMirrorArt, OFFSET bestiaryMirrorInfo, COLOR_CARD + jmp bestiary_loop +bestiary_dice: + invoke ShowBestiaryPage, OFFSET bestiaryDiceArt, OFFSET bestiaryDiceInfo, COLOR_TITLE + jmp bestiary_loop +bestiary_blood: + invoke ShowBestiaryPage, OFFSET bestiaryBloodArt, OFFSET bestiaryBloodInfo, COLOR_BAD + jmp bestiary_loop +bestiary_hourglass: + invoke ShowBestiaryPage, OFFSET bestiaryHourglassArt, OFFSET bestiaryHourglassInfo, COLOR_WARN + jmp bestiary_loop +bestiary_horseshoe: + invoke ShowBestiaryPage, OFFSET bestiaryHorseshoeArt, OFFSET bestiaryHorseshoeInfo, COLOR_MONEY + jmp bestiary_loop +bestiary_joker: + invoke ShowBestiaryPage, OFFSET bestiaryJokerArt, OFFSET bestiaryJokerInfo, COLOR_BAD + jmp bestiary_loop +bestiary_phoenix: + invoke ShowBestiaryPage, OFFSET bestiaryPhoenixArt, OFFSET bestiaryPhoenixInfo, COLOR_WARN + jmp bestiary_loop +bestiary_compass: + invoke ShowBestiaryPage, OFFSET bestiaryCompassArt, OFFSET bestiaryCompassInfo, COLOR_CARD + jmp bestiary_loop +bestiary_tooth: + invoke ShowBestiaryPage, OFFSET bestiaryToothArt, OFFSET bestiaryToothInfo, COLOR_WARN + jmp bestiary_loop +bestiary_eye: + invoke ShowBestiaryPage, OFFSET bestiaryEyeArt, OFFSET bestiaryEyeInfo, COLOR_TITLE + jmp bestiary_loop +bestiary_key: + invoke ShowBestiaryPage, OFFSET bestiaryKeyArt, OFFSET bestiaryKeyInfo, COLOR_CARD + jmp bestiary_loop +bestiary_candle: + invoke ShowBestiaryPage, OFFSET bestiaryCandleArt, OFFSET bestiaryCandleInfo, COLOR_BAD + jmp bestiary_loop +bestiary_chip: + invoke ShowBestiaryPage, OFFSET bestiaryChipArt, OFFSET bestiaryChipInfo, COLOR_MONEY + jmp bestiary_loop +bestiary_snake: + invoke ShowBestiaryPage, OFFSET bestiarySnakeArt, OFFSET bestiarySnakeInfo, COLOR_MONEY + jmp bestiary_loop +bestiary_ace: + invoke ShowBestiaryPage, OFFSET bestiaryAceArt, OFFSET bestiaryAceInfo, COLOR_TITLE + jmp bestiary_loop +bestiary_devil: + invoke ShowBestiaryPage, OFFSET bestiaryDevilArt, OFFSET bestiaryDevilInfo, COLOR_BAD + jmp bestiary_loop +bestiary_exit: + ret +GameCharmBestiary ENDP + +; --- GameShop: магазин рубашек, талисманов и покупок --- +GameShop PROC +shop_loop: + call ClearView + invoke PrintTitleColor, OFFSET shopTitle + call PrintShopStatus + invoke PrintStr, OFFSET shopMainMenuText + call ReadUInt + cmp eax, 0 + je shop_exit + cmp eax, 1 + je shop_backs_menu + cmp eax, 2 + je shop_charms_menu + cmp eax, 3 + je shop_bestiary_menu + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp shop_loop + +shop_bestiary_menu: + call GameCharmBestiary + jmp shop_loop + +shop_backs_menu: + call ClearView + invoke PrintTitleColor, OFFSET shopBackTitle + call PrintShopStatus + invoke PrintStr, OFFSET shopBackMenuText + call ReadUInt + cmp eax, 0 + je shop_loop + cmp eax, 1 + je shop_blue + cmp eax, 2 + je shop_red + cmp eax, 3 + je shop_gold + cmp eax, 4 + je shop_skull + cmp eax, 5 + je shop_clover_back + cmp eax, 6 + je shop_arcane + cmp eax, 7 + je shop_noir + cmp eax, 8 + je shop_diamond_back + cmp eax, 9 + je shop_rider + cmp eax, 10 + je shop_bee + cmp eax, 11 + je shop_fan + cmp eax, 12 + je shop_web + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp shop_backs_menu + +shop_charms_menu: + call ClearView + invoke PrintTitleColor, OFFSET shopCharmTitle + call PrintShopStatus + invoke PrintStr, OFFSET shopCharmMenuText + call ReadUInt + cmp eax, 0 + je shop_loop + cmp eax, 1 + je buy_charm_clover + cmp eax, 2 + je buy_charm_bell + cmp eax, 3 + je buy_charm_diamond + cmp eax, 4 + je buy_charm_skull + cmp eax, 5 + je buy_charm_web + cmp eax, 6 + je buy_charm_bee_item + cmp eax, 7 + je buy_charm_moon + cmp eax, 8 + je buy_charm_crown + cmp eax, 9 + je buy_charm_mirror + cmp eax, 10 + je buy_charm_dice + cmp eax, 11 + je buy_charm_blood + cmp eax, 12 + je buy_charm_hourglass + cmp eax, 13 + je buy_charm_horseshoe + cmp eax, 14 + je buy_charm_joker + cmp eax, 15 + je buy_charm_phoenix + cmp eax, 16 + je buy_charm_compass + cmp eax, 17 + je buy_charm_tooth + cmp eax, 18 + je buy_charm_eye + cmp eax, 19 + je buy_charm_key + cmp eax, 20 + je buy_charm_candle + cmp eax, 21 + je buy_charm_chip + cmp eax, 22 + je buy_charm_snake + cmp eax, 23 + je buy_charm_ace + cmp eax, 24 + je buy_charm_devil + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp shop_charms_menu + +shop_blue: + invoke ShopBuyBack, 1, 3000, 2 + call Pause + jmp shop_backs_menu +shop_red: + invoke ShopBuyBack, 2, 3000, 4 + call Pause + jmp shop_backs_menu +shop_gold: + invoke ShopBuyBack, 3, 10000, 8 + call Pause + jmp shop_backs_menu +shop_skull: + invoke ShopBuyBack, 4, 12000, 10h + call Pause + jmp shop_backs_menu +shop_clover_back: + invoke ShopBuyBack, 5, 15000, 20h + call Pause + jmp shop_backs_menu +shop_arcane: + invoke ShopBuyBack, 6, 17000, 40h + call Pause + jmp shop_backs_menu +shop_noir: + invoke ShopBuyBack, 7, 18000, 80h + call Pause + jmp shop_backs_menu +shop_diamond_back: + invoke ShopBuyBack, 8, 20000, 100h + call Pause + jmp shop_backs_menu +shop_rider: + invoke ShopBuyBack, 9, 22000, 200h + call Pause + jmp shop_backs_menu +shop_bee: + invoke ShopBuyBack, 10, 22000, 400h + call Pause + jmp shop_backs_menu +shop_fan: + invoke ShopBuyBack, 11, 23000, 800h + call Pause + jmp shop_backs_menu +shop_web: + invoke ShopBuyBack, 12, 24000, 1000h + call Pause + jmp shop_backs_menu + +buy_charm_clover: + invoke ShopBuyCharm, 1, 12000 + call Pause + jmp shop_charms_menu +buy_charm_bell: + invoke ShopBuyCharm, 2, 18000 + call Pause + jmp shop_charms_menu +buy_charm_diamond: + invoke ShopBuyCharm, 3, 25000 + call Pause + jmp shop_charms_menu +buy_charm_skull: + invoke ShopBuyCharm, 4, 32000 + call Pause + jmp shop_charms_menu +buy_charm_web: + invoke ShopBuyCharm, 5, 40000 + call Pause + jmp shop_charms_menu +buy_charm_bee_item: + invoke ShopBuyCharm, 6, 30000 + call Pause + jmp shop_charms_menu +buy_charm_moon: + invoke ShopBuyCharm, 7, 36000 + call Pause + jmp shop_charms_menu +buy_charm_crown: + invoke ShopBuyCharm, 8, 52000 + call Pause + jmp shop_charms_menu +buy_charm_mirror: + invoke ShopBuyCharm, 9, 42000 + call Pause + jmp shop_charms_menu +buy_charm_dice: + invoke ShopBuyCharm, 10, 35000 + call Pause + jmp shop_charms_menu +buy_charm_blood: + invoke ShopBuyCharm, 11, 65000 + call Pause + jmp shop_charms_menu +buy_charm_hourglass: + invoke ShopBuyCharm, 12, 48000 + call Pause + jmp shop_charms_menu +buy_charm_horseshoe: + invoke ShopBuyCharm, 13, 39000 + call Pause + jmp shop_charms_menu +buy_charm_joker: + invoke ShopBuyCharm, 14, 70000 + call Pause + jmp shop_charms_menu +buy_charm_phoenix: + invoke ShopBuyCharm, 15, 56000 + call Pause + jmp shop_charms_menu +buy_charm_compass: + invoke ShopBuyCharm, 16, 44000 + call Pause + jmp shop_charms_menu +buy_charm_tooth: + invoke ShopBuyCharm, 17, 47000 + call Pause + jmp shop_charms_menu +buy_charm_eye: + invoke ShopBuyCharm, 18, 60000 + call Pause + jmp shop_charms_menu +buy_charm_key: + invoke ShopBuyCharm, 19, 41000 + call Pause + jmp shop_charms_menu +buy_charm_candle: + invoke ShopBuyCharm, 20, 76000 + call Pause + jmp shop_charms_menu +buy_charm_chip: + invoke ShopBuyCharm, 21, 50000 + call Pause + jmp shop_charms_menu +buy_charm_snake: + invoke ShopBuyCharm, 22, 62000 + call Pause + jmp shop_charms_menu +buy_charm_ace: + invoke ShopBuyCharm, 23, 53000 + call Pause + jmp shop_charms_menu +buy_charm_devil: + invoke ShopBuyCharm, 24, 100000 + call Pause + jmp shop_charms_menu +shop_exit: + ret +GameShop ENDP + + +; --- CopyName: служебный блок игровой логики --- +CopyName PROC uses eax ecx esi edi, pDst:DWORD, pSrc:DWORD + mov edi, pDst + mov esi, pSrc + mov ecx, 63 +copy_name_loop: + mov al, [esi] + cmp al, '.' + je copy_name_stop + mov [edi], al + cmp al, 0 + je copy_name_done + inc esi + inc edi + loop copy_name_loop +copy_name_stop: + mov byte ptr [edi], 0 +copy_name_done: + ret +CopyName ENDP + +; --- ClearLeaderboards: статистика, достижения и таблицы лидеров --- +ClearLeaderboards PROC uses eax ecx edi + mov leaderBestBank, 0 + mov leaderBestWins, 0 + mov leaderBestLosses, 0 + mov leaderValidCount, 0 + mov ecx, 22 + mov edi, OFFSET leaderBestGameWins +clear_leader_counts: + mov dword ptr [edi], 0 + add edi, 4 + loop clear_leader_counts + mov ecx, 1600 + mov edi, OFFSET leaderBestBankName +clear_leader_names: + mov byte ptr [edi], 0 + inc edi + loop clear_leader_names + ret +ClearLeaderboards ENDP + +; --- LeaderboardUpdateGame: статистика, достижения и таблицы лидеров --- +LeaderboardUpdateGame PROC uses eax ebx edx + mov ebx, rowIndex + mov eax, DWORD PTR [saveBuffer+104+ebx*4] + cmp eax, leaderBestGameWins[ebx*4] + jbe leaderboard_check_losses + mov leaderBestGameWins[ebx*4], eax + mov edx, ebx + shl edx, 6 + add edx, OFFSET leaderBestGameWinNames + invoke CopyName, edx, leaderAccountPtr +leaderboard_check_losses: + mov eax, DWORD PTR [saveBuffer+148+ebx*4] + cmp eax, leaderBestGameLosses[ebx*4] + jbe leaderboard_game_done + mov leaderBestGameLosses[ebx*4], eax + mov edx, ebx + shl edx, 6 + add edx, OFFSET leaderBestGameLossNames + invoke CopyName, edx, leaderAccountPtr +leaderboard_game_done: + ret +LeaderboardUpdateGame ENDP + +; --- LeaderboardReadAccount: аккаунты, файлы сохранений и загрузка профиля --- +LeaderboardReadAccount PROC uses eax + call BuildLeaderSavePath + invoke CreateFileA, OFFSET leaderSavePath, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + jne leaderboard_file_opened + cmp appDataReady, 1 + jne leaderboard_read_done + invoke CreateFileA, leaderAccountPtr, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + je leaderboard_read_done +leaderboard_file_opened: + mov saveHandle, eax + invoke ReadFile, saveHandle, ADDR saveBuffer, SAVE_FILE_SIZE, ADDR charsRead, 0 + invoke CloseHandle, saveHandle + cmp charsRead, 32 + jb leaderboard_read_done + mov eax, DWORD PTR [saveBuffer] + cmp eax, SAVE_MAGIC + jne leaderboard_read_done + cmp charsRead, SAVE_FILE_SIZE + jb leaderboard_signature_ok + mov edx, DWORD PTR [saveBuffer+SAVE_SIGN_SIZE] + call CalcSaveSignature + cmp eax, edx + jne leaderboard_read_done +leaderboard_signature_ok: + inc leaderValidCount + mov eax, DWORD PTR [saveBuffer+4] + cmp eax, leaderBestBank + jbe leaderboard_check_total_wins + mov leaderBestBank, eax + invoke CopyName, OFFSET leaderBestBankName, leaderAccountPtr +leaderboard_check_total_wins: + mov eax, DWORD PTR [saveBuffer+12] + cmp eax, leaderBestWins + jbe leaderboard_check_total_losses + mov leaderBestWins, eax + invoke CopyName, OFFSET leaderBestWinsName, leaderAccountPtr +leaderboard_check_total_losses: + mov eax, DWORD PTR [saveBuffer+16] + cmp eax, leaderBestLosses + jbe leaderboard_check_games + mov leaderBestLosses, eax + invoke CopyName, OFFSET leaderBestLossName, leaderAccountPtr +leaderboard_check_games: + cmp charsRead, 236 + jb leaderboard_read_done + mov rowIndex, 0 +leaderboard_game_loop: + cmp rowIndex, 11 + jae leaderboard_read_done + call LeaderboardUpdateGame + inc rowIndex + jmp leaderboard_game_loop +leaderboard_read_done: + ret +LeaderboardReadAccount ENDP + +; --- BuildLeaderboards: статистика, достижения и таблицы лидеров --- +BuildLeaderboards PROC uses eax + call ClearLeaderboards + call CollectAccounts + mov leaderScanIndex, 0 +leaderboard_account_loop: + mov eax, leaderScanIndex + cmp eax, accountCount + jae leaderboard_build_done + shl eax, 6 + add eax, OFFSET accountList + mov leaderAccountPtr, eax + call LeaderboardReadAccount + inc leaderScanIndex + jmp leaderboard_account_loop +leaderboard_build_done: + ret +BuildLeaderboards ENDP + +; --- PrintLeaderPair: вывод текста, цветов, картинок и элементов интерфейса --- +PrintLeaderPair PROC uses eax, pName:DWORD, value:DWORD + mov eax, value + cmp eax, 0 + jne print_leader_pair_value + invoke PrintStr, OFFSET leaderDashText + ret +print_leader_pair_value: + invoke PrintStr, pName + invoke PrintStr, OFFSET leaderOpenText + invoke PrintUInt, value + invoke PrintStr, OFFSET leaderCloseText + ret +PrintLeaderPair ENDP + +; --- PrintLeaderGameLine: вывод текста, цветов, картинок и элементов интерфейса --- +PrintLeaderGameLine PROC uses eax ebx edx + mov eax, rowIndex + invoke PrintStr, statsGameNames[eax*4] + invoke PrintStr, OFFSET leaderGameWinText + mov ebx, rowIndex + mov edx, ebx + shl edx, 6 + add edx, OFFSET leaderBestGameWinNames + invoke PrintLeaderPair, edx, leaderBestGameWins[ebx*4] + invoke PrintStr, OFFSET leaderGameLossText + mov ebx, rowIndex + mov edx, ebx + shl edx, 6 + add edx, OFFSET leaderBestGameLossNames + invoke PrintLeaderPair, edx, leaderBestGameLosses[ebx*4] + invoke PrintStr, OFFSET nl + ret +PrintLeaderGameLine ENDP + +; --- PrintLeaderboards: вывод текста, цветов, картинок и элементов интерфейса --- +PrintLeaderboards PROC + call BuildLeaderboards + invoke PrintTitleColor, OFFSET leaderTitle + cmp leaderValidCount, 0 + jne print_leaders_have_data + invoke PrintStr, OFFSET leaderNoDataText + ret +print_leaders_have_data: + invoke PrintStr, OFFSET leaderBankText + invoke PrintStr, OFFSET leaderBestBankName + invoke PrintStr, OFFSET leaderOpenText + invoke PrintStr, OFFSET leaderMoneyPrefix + invoke PrintUInt, leaderBestBank + invoke PrintStr, OFFSET leaderCloseText + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET leaderWinsText + invoke PrintLeaderPair, OFFSET leaderBestWinsName, leaderBestWins + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET leaderLossText + invoke PrintLeaderPair, OFFSET leaderBestLossName, leaderBestLosses + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET leaderGameTitle + mov rowIndex, 0 +leader_print_game_loop: + cmp rowIndex, 11 + jae leader_print_done + call PrintLeaderGameLine + inc rowIndex + jmp leader_print_game_loop +leader_print_done: + ret +PrintLeaderboards ENDP +; --- PrintGameStatLine: вывод текста, цветов, картинок и элементов интерфейса --- +PrintGameStatLine PROC uses eax ebx + mov eax, rowIndex + invoke PrintStr, statsGameNames[eax * 4] + invoke PrintStr, OFFSET statsLinePlayed + mov ebx, rowIndex + invoke PrintUInt, gameStatsPlayed[ebx * 4] + invoke PrintStr, OFFSET statsLineWins + mov ebx, rowIndex + invoke PrintUInt, gameStatsWon[ebx * 4] + invoke PrintStr, OFFSET statsLineLoss + mov ebx, rowIndex + invoke PrintUInt, gameStatsLost[ebx * 4] + invoke PrintStr, OFFSET statsLineDraw + mov ebx, rowIndex + invoke PrintUInt, gameStatsDraw[ebx * 4] + invoke PrintStr, OFFSET nl + ret +PrintGameStatLine ENDP + +; --- GameStatsByGame: статистика, достижения и таблицы лидеров --- +GameStatsByGame PROC + call ClearView + invoke PrintTitleColor, OFFSET statsByGameTitle + invoke PrintStr, OFFSET leaderCurrentTitle + mov rowIndex, 0 +stats_by_game_loop: + cmp rowIndex, 11 + jae stats_by_game_done + call PrintGameStatLine + inc rowIndex + jmp stats_by_game_loop +stats_by_game_done: + call PrintLeaderboards + call Pause + ret +GameStatsByGame ENDP + +; --- SkillCheckFlushKeys: Skill Check на крюке: шкала, попадания и промахи --- +SkillCheckFlushKeys PROC + invoke GetAsyncKeyState, VK_SPACE + invoke GetAsyncKeyState, VK_RETURN + invoke Sleep, 80 + invoke GetAsyncKeyState, VK_SPACE + invoke GetAsyncKeyState, VK_RETURN + ret +SkillCheckFlushKeys ENDP + +; --- SkillCheckPollKey: Skill Check на крюке: шкала, попадания и промахи --- +SkillCheckPollKey PROC + invoke GetAsyncKeyState, VK_SPACE + test ax, 0001h + jne skill_key_pressed + invoke GetAsyncKeyState, VK_RETURN + test ax, 0001h + jne skill_key_pressed + xor eax, eax + ret +skill_key_pressed: + mov eax, 1 + ret +SkillCheckPollKey ENDP + +; --- SkillCheckDraw: Skill Check на крюке: шкала, попадания и промахи --- +SkillCheckDraw PROC uses eax ebx edx + call ClearView + invoke PrintTitleColor, OFFSET skillTitle + invoke PrintStr, OFFSET skillIntro + + invoke PrintStr, OFFSET skillStateText + mov eax, skillMisses + cmp eax, 0 + je skill_draw_state_good + cmp eax, 1 + je skill_draw_state_warn + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET skillStateBad + call ResetColor + jmp skill_draw_state_done +skill_draw_state_good: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET skillStateGood + call ResetColor + jmp skill_draw_state_done +skill_draw_state_warn: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET skillStateWarn + call ResetColor +skill_draw_state_done: + invoke PrintStr, OFFSET skillProgressText + invoke PrintUInt, skillHits + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET skillMissText + invoke PrintUInt, skillMisses + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET skillGaugeHint + invoke PrintStr, OFFSET skillGaugeLeft + + mov skillGaugeIndex, 0 +skill_draw_gauge_loop: + mov eax, skillGaugeIndex + cmp eax, 45 + jae skill_draw_gauge_done + cmp eax, skillNeedle + je skill_draw_needle + cmp eax, skillPerfectPos + je skill_draw_perfect + cmp eax, skillSuccessStart + jb skill_draw_empty + cmp eax, skillSuccessEnd + ja skill_draw_empty + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET skillGaugeSuccess + call ResetColor + jmp skill_draw_next +skill_draw_perfect: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET skillGaugePerfect + call ResetColor + jmp skill_draw_next +skill_draw_needle: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET skillGaugeNeedle + call ResetColor + jmp skill_draw_next +skill_draw_empty: + invoke PrintStr, OFFSET skillGaugeEmpty +skill_draw_next: + inc skillGaugeIndex + jmp skill_draw_gauge_loop +skill_draw_gauge_done: + invoke PrintStr, OFFSET skillGaugeRight + invoke PrintStr, OFFSET skillGaugeLeft + mov skillGaugeIndex, 0 +skill_draw_gauge_loop2: + mov eax, skillGaugeIndex + cmp eax, 45 + jae skill_draw_gauge_done2 + cmp eax, skillNeedle + je skill_draw_needle2 + cmp eax, skillPerfectPos + je skill_draw_perfect2 + cmp eax, skillSuccessStart + jb skill_draw_empty2 + cmp eax, skillSuccessEnd + ja skill_draw_empty2 + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET skillGaugeSuccess + call ResetColor + jmp skill_draw_next2 +skill_draw_perfect2: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET skillGaugePerfect + call ResetColor + jmp skill_draw_next2 +skill_draw_needle2: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET skillGaugeNeedle + call ResetColor + jmp skill_draw_next2 +skill_draw_empty2: + invoke PrintStr, OFFSET skillGaugeEmpty +skill_draw_next2: + inc skillGaugeIndex + jmp skill_draw_gauge_loop2 +skill_draw_gauge_done2: + invoke PrintStr, OFFSET skillGaugeRight + + invoke PrintStr, OFFSET skillGaugeLeft + mov skillGaugeIndex, 0 +skill_draw_gauge_loop3: + mov eax, skillGaugeIndex + cmp eax, 45 + jae skill_draw_gauge_done3 + cmp eax, skillNeedle + je skill_draw_needle3 + cmp eax, skillPerfectPos + je skill_draw_perfect3 + cmp eax, skillSuccessStart + jb skill_draw_empty3 + cmp eax, skillSuccessEnd + ja skill_draw_empty3 + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET skillGaugeSuccess + call ResetColor + jmp skill_draw_next3 +skill_draw_perfect3: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET skillGaugePerfect + call ResetColor + jmp skill_draw_next3 +skill_draw_needle3: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET skillGaugeNeedle + call ResetColor + jmp skill_draw_next3 +skill_draw_empty3: + invoke PrintStr, OFFSET skillGaugeEmpty +skill_draw_next3: + inc skillGaugeIndex + jmp skill_draw_gauge_loop3 +skill_draw_gauge_done3: + invoke PrintStr, OFFSET skillGaugeRight + ret +SkillCheckDraw ENDP + +; --- SkillCheckMoveNeedle: Skill Check на крюке: шкала, попадания и промахи --- +SkillCheckMoveNeedle PROC uses eax + mov eax, skillDir + cmp eax, 0FFFFFFFFh + je skill_move_left +skill_move_right: + mov eax, skillNeedle + inc eax + cmp eax, 44 + jbe skill_move_store_right + mov eax, 43 + mov skillDir, 0FFFFFFFFh +skill_move_store_right: + mov skillNeedle, eax + ret +skill_move_left: + mov eax, skillNeedle + cmp eax, 0 + ja skill_move_dec + mov eax, 1 + mov skillDir, 1 + mov skillNeedle, eax + ret +skill_move_dec: + dec eax + mov skillNeedle, eax + ret +SkillCheckMoveNeedle ENDP + +; --- SkillCheckEvaluate: Skill Check на крюке: шкала, попадания и промахи --- +SkillCheckEvaluate PROC uses eax + mov eax, skillNeedle + cmp eax, skillPerfectPos + je skill_eval_perfect + cmp eax, skillSuccessStart + jb skill_eval_fail + cmp eax, skillSuccessEnd + ja skill_eval_fail + mov skillResult, 1 + ret +skill_eval_perfect: + mov skillResult, 2 + ret +skill_eval_fail: + mov skillResult, 0 + ret +SkillCheckEvaluate ENDP + +; --- SkillCheckRound: Skill Check на крюке: шкала, попадания и промахи --- +SkillCheckRound PROC uses eax ebx + invoke RandomRange, 27 + add eax, 8 + mov skillSuccessStart, eax + mov ebx, eax + add ebx, 7 + mov skillSuccessEnd, ebx + invoke RandomRange, 6 + add eax, skillSuccessStart + inc eax + mov skillPerfectPos, eax + invoke RandomRange, 45 + mov skillNeedle, eax + invoke RandomRange, 2 + cmp eax, 0 + je skill_round_left + mov skillDir, 1 + jmp skill_round_begin +skill_round_left: + mov skillDir, 0FFFFFFFFh +skill_round_begin: + mov skillFrameCount, 0 + mov skillResult, 0 + mov eax, skillHits + mov ebx, eax + shl ebx, 2 + add eax, ebx + mov ebx, 45 + sub ebx, eax + mov eax, stressLevel + shl eax, 2 + sub ebx, eax + cmp ebx, 18 + jae skill_delay_ready + mov ebx, 18 +skill_delay_ready: + mov skillDelay, ebx + call SkillCheckFlushKeys +skill_round_loop: + call SkillCheckDraw + mov eax, skillDelay + invoke Sleep, eax + call SkillCheckPollKey + cmp eax, 1 + je skill_round_pressed + call SkillCheckMoveNeedle + inc skillFrameCount + cmp skillFrameCount, 120 + jb skill_round_loop + mov skillResult, 0 + ret +skill_round_pressed: + call SkillCheckEvaluate + ret +SkillCheckRound ENDP + +; --- GameSkillCheck: Skill Check на крюке: шкала, попадания и промахи --- +GameSkillCheck PROC +skill_game_start: + call ClearView + invoke PrintTitleColor, OFFSET skillTitle + invoke PrintStr, OFFSET skillIntro + call PromptBet + call PlayDbDHookScene + mov skillHits, 0 + mov skillMisses, 0 + mov skillPerfects, 0 +skill_game_loop: + call SkillCheckRound + call SkillCheckDraw + mov eax, skillResult + cmp eax, 2 + je skill_game_perfect + cmp eax, 1 + je skill_game_success +skill_game_fail: + inc skillMisses + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET skillFailText + call ResetColor + invoke Sleep, 850 + cmp skillMisses, 3 + jae skill_game_lost + jmp skill_game_loop +skill_game_success: + inc skillHits + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET skillSuccessText + call ResetColor + invoke Sleep, 750 + cmp skillHits, 5 + jae skill_game_won + jmp skill_game_loop +skill_game_perfect: + add skillHits, 2 + inc skillPerfects + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET skillPerfectText + call ResetColor + invoke Sleep, 850 + cmp skillHits, 5 + jae skill_game_won + jmp skill_game_loop +skill_game_won: + call StopDbDHookScene + call SkillCheckDraw + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET skillEscapeText + call ResetColor + invoke PaySlotMultiplier, 2 + invoke UnlockAchievement, 20000h, OFFSET achSkillCheckName + call SaveGame + jmp skill_game_again +skill_game_lost: + call StopDbDHookScene + call SkillCheckDraw + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET skillDarkText + call ResetColor + call PayLose + call SaveGame +skill_game_again: + cmp tournamentMode, 1 + je skill_game_exit + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je skill_game_start + cmp al, 'Y' + je skill_game_start +skill_game_exit: + ret +GameSkillCheck ENDP +; --- GameAchievements: статистика, достижения и таблицы лидеров --- +GameAchievements PROC + call ClearView + invoke PrintTitleColor, OFFSET achMenuTitle + invoke PrintAchievementLine, 1, OFFSET achFirstWinName + invoke PrintAchievementLine, 2, OFFSET achFirstLossName + invoke PrintAchievementLine, 4, OFFSET achJackpotName + invoke PrintAchievementLine, 8, OFFSET achHighRollerName + invoke PrintAchievementLine, 10h, OFFSET achShopperName + invoke PrintAchievementLine, 20h, OFFSET achCharmName + invoke PrintAchievementLine, 40h, OFFSET achGoalName + invoke PrintAchievementLine, 80h, OFFSET achCloverPitName + invoke PrintAchievementLine, 100h, OFFSET achClassicSlotName + invoke PrintAchievementLine, 200h, OFFSET achPokerRaiseName + invoke PrintAchievementLine, 400h, OFFSET achPokerBluffName + invoke PrintAchievementLine, 800h, OFFSET achRouletteWinName + invoke PrintAchievementLine, 1000h, OFFSET achRussianWinName + invoke PrintAchievementLine, 2000h, OFFSET achDurakWinName + invoke PrintAchievementLine, 4000h, OFFSET achBackCollectorName + invoke PrintAchievementLine, 8000h, OFFSET achCharmBuyerName + invoke PrintAchievementLine, 10000h, OFFSET achObserverName + invoke PrintAchievementLine, 20000h, OFFSET achSkillCheckName + call Pause + ret +GameAchievements ENDP +; --- GameTraining: служебный блок игровой логики --- +GameTraining PROC + call ClearView + invoke PrintTitleColor, OFFSET trainingTitle + invoke PrintStr, OFFSET trainingText + call Pause + ret +GameTraining ENDP +; --- ShowTournamentStage: турнир-башня и победная анимация финала --- +ShowTournamentStage PROC + call ClearView + invoke PrintTitleColor, OFFSET tournamentTitle + invoke PrintStr, OFFSET tournamentStageText + invoke PrintUInt, tournamentStage + invoke PrintStr, OFFSET nl + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET hellStageCurseText + invoke RandomRange, 4 + cmp eax, 0 + je hell_stage_curse1 + cmp eax, 1 + je hell_stage_curse2 + cmp eax, 2 + je hell_stage_curse3 + invoke PrintStr, OFFSET hellCurse4 + jmp hell_stage_curse_done +hell_stage_curse1: + invoke PrintStr, OFFSET hellCurse1 + jmp hell_stage_curse_done +hell_stage_curse2: + invoke PrintStr, OFFSET hellCurse2 + jmp hell_stage_curse_done +hell_stage_curse3: + invoke PrintStr, OFFSET hellCurse3 +hell_stage_curse_done: + call ResetColor + invoke PrintStr, OFFSET tournamentMusicHint + call ReadKey + cmp al, 'm' + je tower_stage_change_music + cmp al, 'M' + jne tower_stage_done +tower_stage_change_music: + call PlayTowerRandomMusic +tower_stage_done: + ret +ShowTournamentStage ENDP + +; --- AnimateTournamentVictory: банк, ставки, стресс, подозрение и экономика казино --- +AnimateTournamentVictory PROC + call PlayVictorySound + call ClearView + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET tournamentFire1 + call ResetColor + invoke Sleep, 360 + call ClearView + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET tournamentFire2 + call ResetColor + invoke Sleep, 360 + call ClearView + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET tournamentFire3 + call ResetColor + invoke Sleep, 420 + call ClearView + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET tournamentFire4 + call ResetColor + invoke Sleep, 520 + ret +AnimateTournamentVictory ENDP + +; --- GameTournament: турнир-башня и победная анимация финала --- +GameTournament PROC + mov tournamentMode, 1 + call ClearView + invoke PrintTitleColor, OFFSET tournamentTitle + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET secretHellText + call ResetColor + invoke PrintStr, OFFSET tournamentIntro + call Pause + call PlayTowerRandomMusic ; tower start + + mov tournamentStage, 1 + call ShowTournamentStage + mov currentGameId, 6 + mov lastGameResult, 0 + call GameCoin + cmp lastGameResult, 2 + je tournament_failed + + mov tournamentStage, 2 + call ShowTournamentStage + mov currentGameId, 7 + mov lastGameResult, 0 + call GameDice + cmp lastGameResult, 2 + je tournament_failed + + mov tournamentStage, 3 + call ShowTournamentStage + mov currentGameId, 5 + mov lastGameResult, 0 + call GameSkulls + cmp lastGameResult, 2 + je tournament_failed + + mov tournamentStage, 4 + call ShowTournamentStage + mov currentGameId, 1 + mov lastGameResult, 0 + call Game21 + cmp lastGameResult, 2 + je tournament_failed + + mov tournamentStage, 5 + call ShowTournamentStage + mov currentGameId, 2 + mov lastGameResult, 0 + call GamePoker + cmp lastGameResult, 2 + je tournament_failed + + mov tournamentStage, 6 + call ShowTournamentStage + mov currentGameId, 4 + mov lastGameResult, 0 + call GameRoulette + cmp lastGameResult, 2 + je tournament_failed + + mov tournamentStage, 7 + call ShowTournamentStage + mov currentGameId, 8 + mov lastGameResult, 0 + call GameCasinoRoulette + cmp lastGameResult, 2 + je tournament_failed + + mov tournamentStage, 8 + call ShowTournamentStage + mov currentGameId, 10 + mov lastGameResult, 0 + call GameDurak + cmp lastGameResult, 2 + je tournament_failed + + mov tournamentStage, 9 + call ShowTournamentStage + mov currentGameId, 11 + mov lastGameResult, 0 + call GameSkillCheck + cmp lastGameResult, 2 + je tournament_failed + + mov tournamentStage, 10 + call ShowTournamentStage + mov currentGameId, 0 + mov lastGameResult, 0 + call GameBuckshot + cmp lastGameResult, 2 + je tournament_failed + + call StopTowerMusic ; before tower victory + call AnimateTournamentVictory + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET tournamentWinText + call ResetColor + mov currentBet, 66600 + call PayWin + call SaveGame + mov tournamentMode, 0 + call Pause + ret + +tournament_failed: + call StopTowerMusic ; tower failed + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET tournamentFailText + call ResetColor + mov tournamentMode, 0 + call Pause + ret +GameTournament ENDP + + +; --- GameUmamusume: Umamusume Pretty Derby Minigame --- +GameUmamusume PROC uses ebx esi edi + invoke PrintStr, OFFSET umaTitleText + call PromptBet + cmp eax, 0 + jle uma_exit + +uma_select_horse: + invoke PrintStr, OFFSET umaMenuText + invoke PrintStr, OFFSET umaChoiceText + call ReadBetInput + cmp eax, 1 + jl uma_invalid + cmp eax, 5 + jg uma_invalid + mov umaChoice, eax + jmp uma_start_race + +uma_invalid: + invoke PrintStr, OFFSET badChoiceText + jmp uma_select_horse + +uma_start_race: + xor eax, eax + mov umaPos[0], eax + mov umaPos[4], eax + mov umaPos[8], eax + mov umaPos[12], eax + mov umaPos[16], eax + mov umaWinner, 0 + +uma_race_loop: + invoke PrintStr, OFFSET clearLines + invoke PrintStr, OFFSET umaTrackHeader + + ; Horse 1: Special Week (1-3) + invoke RandomRange, 3 + inc eax + add umaPos[0], eax + + ; Horse 2: Silence Suzuka (1-4) + invoke RandomRange, 4 + inc eax + add umaPos[4], eax + + ; Horse 3: Tokai Teio (1-3, boost if pos > 18) + invoke RandomRange, 3 + inc eax + cmp umaPos[8], 18 + jbe uma_t3_no_boost + add eax, 2 +uma_t3_no_boost: + add umaPos[8], eax + + ; Horse 4: Gold Ship (0-6 wildcard) + invoke RandomRange, 7 + add umaPos[12], eax + + ; Horse 5: Mejiro McQueen (steady 2-4) + invoke RandomRange, 3 + add eax, 2 + add umaPos[16], eax + + ; Render track + mov ecx, 0 +uma_render_lane: + push ecx + mov eax, [umaHorseNames + ecx*4] + invoke PrintStr, eax + + mov ebx, [umaPos + ecx*4] + cmp ebx, 0 + jbe uma_render_head + mov edi, ebx +uma_print_step: + push edi + invoke PrintStr, OFFSET umaStepChar + pop edi + dec edi + jnz uma_print_step + +uma_render_head: + invoke PrintStr, OFFSET umaHeadChar + invoke PrintStr, OFFSET umaFinishText + + pop ecx + inc ecx + cmp ecx, 5 + jl uma_render_lane + + ; Check if finish reached (>= 35) + mov eax, 0 +uma_check_finish: + cmp dword ptr [umaPos + eax*4], 35 + jge uma_finish_reached + inc eax + cmp eax, 5 + jl uma_check_finish + + invoke Sleep, 180 + jmp uma_race_loop + +uma_finish_reached: + mov ebx, 0 + mov edi, 1 + mov ecx, 0 +uma_find_max: + mov edx, [umaPos + ecx*4] + cmp edx, ebx + jle uma_next_max + mov ebx, edx + lea edi, [ecx + 1] +uma_next_max: + inc ecx + cmp ecx, 5 + jl uma_find_max + + mov umaWinner, edi + invoke PrintStr, OFFSET umaWinAnnouncement + mov eax, edi + dec eax + mov eax, [umaHorseNames + eax*4] + invoke PrintStr, eax + invoke PrintStr, OFFSET nl + + mov eax, umaChoice + cmp eax, umaWinner + jne uma_race_lost + + invoke PrintStr, OFFSET umaYouWinText + mov ecx, umaChoice + dec ecx + mov eax, currentBet + mov edx, [umaMultipliers + ecx*4] + imul eax, edx + push eax + invoke PrintUInt, eax + invoke PrintStr, OFFSET nl + pop eax + call PayWin + call PrintWinEvent + jmp uma_race_done + +uma_race_lost: + invoke PrintStr, OFFSET umaYouLoseText + call PayLose + call PrintLoseEvent + +uma_race_done: + call Pause +uma_exit: + ret +GameUmamusume ENDP + +include casino3d.inc + + + +; --- AutoLoadAccountFast: автозагрузка профиля без блокировки в CMD --- +AutoLoadAccountFast PROC + call ResetProfileDefaults + call CollectAccounts + cmp accountCount, 0 + jbe autoload_exit + mov selectedAccount, 1 + call CopySelectedAccountName + call LoadSave +autoload_exit: + ret +AutoLoadAccountFast ENDP + +; --- MainMenu: точка входа, главное меню и маршрутизация по играм --- + +MainMenu PROC +menu_loop: + call DailyCheckDate + call CheckSecretEnding + invoke PrintStr, OFFSET clearLines + invoke PrintTitleColor, OFFSET titleText + call PrintBank + call PrintGoal + call ShowStats + invoke PrintStr, OFFSET menuText + invoke PrintStr, OFFSET choiceText + call ReadBetInput + cmp eax, 0FFFFFFFFh + je menu_loop + cmp eax, 0FFFFFFFDh + je menu_loop + cmp eax, 1 + je run_shop + cmp eax, 2 + je run_21 + cmp eax, 3 + je run_poker + cmp eax, 4 + je run_slot + cmp eax, 5 + je run_skulls + cmp eax, 6 + je run_roulette + cmp eax, 7 + je run_coin + cmp eax, 8 + je run_dice + cmp eax, 9 + je run_casino_roulette + cmp eax, 10 + je run_classic_slot + cmp eax, 11 + je run_durak + cmp eax, 12 + je run_skill_check + cmp eax, 13 + je run_buckshot + cmp eax, 14 + je run_observer + cmp eax, 15 + je run_training + cmp eax, 16 + je run_achievements + cmp eax, 17 + je run_stats_by_game + cmp eax, 18 + je run_daily + cmp eax, 19 + je run_settings + cmp eax, 20 + je run_online_dice + cmp eax, 21 + je run_umamusume + cmp eax, 25 + + je run_casino_3d + + cmp eax, 666 + je run_hell_tower + cmp eax, 0 + je exit_menu + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp menu_loop +run_21: + mov currentGameId, 1 + call Game21 + jmp menu_loop +run_poker: + mov currentGameId, 2 + call GamePoker + jmp menu_loop +run_slot: + mov currentGameId, 3 + call PlaySlotIntroSound + call GameSlot + jmp menu_loop +run_skulls: + mov currentGameId, 5 + call GameSkulls + jmp menu_loop +run_coin: + mov currentGameId, 6 + call GameCoin + jmp menu_loop +run_dice: + mov currentGameId, 7 + call GameDice + jmp menu_loop +run_roulette: + mov currentGameId, 4 + call GameRoulette + jmp menu_loop +run_casino_roulette: + mov currentGameId, 8 + call GameCasinoRoulette + jmp menu_loop +run_classic_slot: + mov currentGameId, 9 + call PlaySlotIntroSound + call GameClassicSlot + jmp menu_loop +run_durak: + mov currentGameId, 10 + call GameDurak + jmp menu_loop +run_training: + mov currentGameId, 0 + call GameTraining + jmp menu_loop +run_observer: + mov currentGameId, 0 + call GameObserver + jmp menu_loop +run_shop: + mov currentGameId, 0 + call GameShop + jmp menu_loop +run_achievements: + mov currentGameId, 0 + call GameAchievements + jmp menu_loop +run_stats_by_game: + mov currentGameId, 0 + call GameStatsByGame + jmp menu_loop +run_daily: + mov currentGameId, 0 + call GameDailyTasks + jmp menu_loop +run_settings: + mov currentGameId, 0 + call GameSettings + jmp menu_loop +run_online_dice: + mov currentGameId, 0 + call GameOnlineCasino + jmp menu_loop +run_umamusume: + mov currentGameId, 0 + call GameUmamusume + jmp menu_loop +run_casino_3d: + + call StartCasino3D + + jmp menu_loop + +run_hell_tower: + mov currentGameId, 0 + call GameTournament + jmp menu_loop +run_skill_check: + mov tournamentMode, 0 + mov currentGameId, 11 + call GameSkillCheck + jmp menu_loop +run_buckshot: + mov currentGameId, 0 + call GameBuckshot + jmp menu_loop +exit_menu: + ret +MainMenu ENDP + +; --- main: точка входа, главное меню и маршрутизация по играм --- +main PROC + call InitPaths3D + invoke CreateMutexA, 0, 1, OFFSET mutexName3D + mov mutex3D, eax + invoke GetLastError + cmp eax, 183 + jne main_graphical + invoke FindWindowA, OFFSET sz3DClassName, 0 + test eax, eax + jz main_exit + push eax + invoke ShowWindow, eax, 9 + pop eax + invoke SetForegroundWindow, eax + jmp main_exit +main_graphical: + call LoadProgress3D + call StartCasino3D +main_exit: + cmp mutex3D, 0 + je @F + invoke CloseHandle, mutex3D +@@: + invoke ExitProcess, 0 +main ENDP + +END main diff --git a/build/graphics/poker.exe b/build/graphics/poker.exe new file mode 100644 index 0000000..8971354 Binary files /dev/null and b/build/graphics/poker.exe differ diff --git a/build/graphics/texture-atlas-preview.png b/build/graphics/texture-atlas-preview.png new file mode 100644 index 0000000..1820f00 Binary files /dev/null and b/build/graphics/texture-atlas-preview.png differ diff --git a/build/icon_work/casino_128.png b/build/icon_work/casino_128.png new file mode 100644 index 0000000..8a28abb Binary files /dev/null and b/build/icon_work/casino_128.png differ diff --git a/build/icon_work/casino_16.png b/build/icon_work/casino_16.png new file mode 100644 index 0000000..5c2ed00 Binary files /dev/null and b/build/icon_work/casino_16.png differ diff --git a/build/icon_work/casino_256.png b/build/icon_work/casino_256.png new file mode 100644 index 0000000..571f85c Binary files /dev/null and b/build/icon_work/casino_256.png differ diff --git a/build/icon_work/casino_32.png b/build/icon_work/casino_32.png new file mode 100644 index 0000000..93504c6 Binary files /dev/null and b/build/icon_work/casino_32.png differ diff --git a/build/icon_work/casino_48.png b/build/icon_work/casino_48.png new file mode 100644 index 0000000..546cf29 Binary files /dev/null and b/build/icon_work/casino_48.png differ diff --git a/build/icon_work/casino_64.png b/build/icon_work/casino_64.png new file mode 100644 index 0000000..4b5bcb7 Binary files /dev/null and b/build/icon_work/casino_64.png differ diff --git a/build/icon_work/extract_Assembler_Casino_exe.png b/build/icon_work/extract_Assembler_Casino_exe.png new file mode 100644 index 0000000..93504c6 Binary files /dev/null and b/build/icon_work/extract_Assembler_Casino_exe.png differ diff --git a/build/icon_work/extract_PokerGameSetup_exe.png b/build/icon_work/extract_PokerGameSetup_exe.png new file mode 100644 index 0000000..93504c6 Binary files /dev/null and b/build/icon_work/extract_PokerGameSetup_exe.png differ diff --git a/build/icon_work/extract_Uninstall_Assembler_Casino_exe.png b/build/icon_work/extract_Uninstall_Assembler_Casino_exe.png new file mode 100644 index 0000000..93504c6 Binary files /dev/null and b/build/icon_work/extract_Uninstall_Assembler_Casino_exe.png differ diff --git a/build/icon_work/extract_bin_poker_exe.png b/build/icon_work/extract_bin_poker_exe.png new file mode 100644 index 0000000..93504c6 Binary files /dev/null and b/build/icon_work/extract_bin_poker_exe.png differ diff --git a/casino3d.inc b/casino3d.inc new file mode 100644 index 0000000..80abf4c --- /dev/null +++ b/casino3d.inc @@ -0,0 +1,2975 @@ + +; ============================================================================== +; CASINO 2.5D - MASM32 SOFTWARE RAYCASTER (CP1251) +; Graphical migration; this is not id Software's Doom engine. +; ============================================================================== + +includelib gdi32.lib +includelib winmm.lib + +CreateWindowExA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +RegisterClassExA PROTO :DWORD +DefWindowProcA PROTO :DWORD,:DWORD,:DWORD,:DWORD +ShowWindow PROTO :DWORD,:DWORD +UpdateWindow PROTO :DWORD +GetDC PROTO :DWORD +ReleaseDC PROTO :DWORD,:DWORD +StretchDIBits PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +PeekMessageA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD +TranslateMessage PROTO :DWORD +DispatchMessageA PROTO :DWORD +PostQuitMessage PROTO :DWORD +DestroyWindow PROTO :DWORD +SetWindowTextA PROTO :DWORD,:DWORD +SetForegroundWindow PROTO :DWORD +GetConsoleWindow PROTO +GetSystemMetrics PROTO :DWORD +CreateFileA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +ReadFile PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD +CloseHandle PROTO :DWORD +GetAsyncKeyState PROTO :DWORD +PlaySoundA PROTO :DWORD,:DWORD,:DWORD +GetModuleFileNameA PROTO :DWORD,:DWORD,:DWORD +Sleep PROTO :DWORD + +C3D_POINT STRUCT + x dd ? + y dd ? +C3D_POINT ENDS + +C3D_MSG STRUCT + hwnd dd ? + message dd ? + wParam dd ? + lParam dd ? + time dd ? + pt C3D_POINT <> +C3D_MSG ENDS + +C3D_WNDCLASSEX STRUCT + cbSize dd ? + style dd ? + lpfnWndProc dd ? + cbClsExtra dd ? + cbWndExtra dd ? + hInstance dd ? + hIcon dd ? + hCursor dd ? + hbrBackground dd ? + lpszMenuName dd ? + lpszClassName dd ? + hIconSm dd ? +C3D_WNDCLASSEX ENDS + +C3D_BITMAPINFOHEADER STRUCT + biSize dd ? + biWidth dd ? + biHeight dd ? + biPlanes dw ? + biBitCount dw ? + biCompression dd ? + biSizeImage dd ? + biXPelsPerMeter dd ? + biYPelsPerMeter dd ? + biClrUsed dd ? + biClrImportant dd ? +C3D_BITMAPINFOHEADER ENDS + +C3D_BITMAPINFO STRUCT + bmiHeader C3D_BITMAPINFOHEADER <> + bmiColors dd ? +C3D_BITMAPINFO ENDS + +SpriteObject STRUCT + posX dd ? + posY dd ? + baseTexId dd ? + frameCount dd ? + curFrame dd ? + animTimer dd ? + animSpeed dd ? + interactId dd ? + promptPtr dd ? + distSq dd ? +SpriteObject ENDS + +SCREEN_W equ 640 +SCREEN_H equ 480 +HALF_W equ 320 +HALF_H equ 240 +SCREEN_SIZE equ (SCREEN_W * SCREEN_H) +WIN_SCALE equ 1 +WINDOW_W equ (SCREEN_W * WIN_SCALE) +WINDOW_H equ (SCREEN_H * WIN_SCALE) + +FP_1 equ 65536 +FP_HALF equ 32768 +CHROMA_KEY equ 00FF00FFh + +MODE_WALK equ 0 +MODE_SLOTS equ 1 +MODE_BLACKJACK equ 2 +MODE_ROULETTE equ 3 +MODE_SHOP equ 4 +MODE_ATM equ 5 + +WS_OVERLAPPEDWINDOW equ 00CF0000h +SW_SHOW equ 5 +SW_HIDE equ 0 +PM_REMOVE equ 1 +WM_DESTROY equ 0002h +WM_CLOSE equ 0010h +WM_QUIT equ 0012h +CS_HREDRAW equ 2 +CS_VREDRAW equ 1 +DIB_RGB_COLORS equ 0 +SRCCOPY equ 00CC0020h +INVALID_FILE_HANDLE equ -1 + +include casino3d_data.inc +include font8x8.inc +include src_graphics\platform_data.inc + +.data +ALIGN 4 +h3DInst dd 0 +h3DWnd dd 0 +h3DDC dd 0 +hCasinoConsole dd 0 + +bmi3D C3D_BITMAPINFO <> +msg3D C3D_MSG <> +wc3D C3D_WNDCLASSEX <> + +sz3DClassName db "Casino3DRetroClass",0 +sz3DWindowTitle db "Assembler Casino - 2.5D",0 +szTexturesRelPath db "assets\textures\casino3d-hd.bin",0 +szTexturesFullPath db 260 dup(0) + +soundCoin db "assets\audio\Çâîí ïàäàþùåé ìîíåòû.wav",0 +soundCards db "assets\audio\playing_cards_deck_flick_through_001_20485.wav",0 +soundRoulette db "assets\audio\roulette-wheel-throw-2.wav",0 +soundJackpot db "assets\audio\Äæåêïîò.wav",0 +soundClick db "assets\audio\b05e1ac8be34248.wav",0 + +playerX dd (16 * FP_1 + FP_HALF) +playerY dd (16 * FP_1 + FP_HALF) +playerAngle dd 384 +playerDirX dd 0 +playerDirY dd -FP_1 +playerPlaneX dd (FP_1 * 66 / 100) +playerPlaneY dd 0 + +engineMode dd 0 +interactTargetId dd 0 +interactPromptPtr dd 0 +dancerLuckBuff dd 0 +flashTimer dd 0 +flashMessage db 128 dup(0) + +promptDancer db "[E] CABARET - TIP $100",0 +promptSlot1 db "[E] SLOTS 777",0 +promptSlot2 db "[E] SLOTS 777",0 +promptBlackjack db "[E] BLACKJACK / 21",0 +promptPoker db "POKER - UNDER CONSTRUCTION",0 +promptRoulette db "[E] ROULETTE",0 +promptShop db "[E] BOUTIQUE",0 +promptATM db "[E] CASHIER",0 +promptBackroom db "BACKROOM - UNDER CONSTRUCTION",0 +promptDurak db "DURAK - UNDER CONSTRUCTION",0 +promptHell db "TOWER - UNDER CONSTRUCTION",0 + +msgDancerTipped db "Âû áðîñèëè $100 òàíöîâùèöå! ÓÄÀ×À ÀÊÒÈÂÈÐÎÂÀÍÀ!",0 +msgNeedMoney db "Íåäîñòàòî÷íî äåíåã â êîøåëüêå!",0 +statusHUDFormat db "ÁÀÍÊÐÎËË: $",0 +targetHUDFormat db " ÖÅËÜ: $",0 +luckHUDFormat db " ÓÄÀ×À: +",0 +controlsHUD db "WASD/Ñòðåëêè: Õîäüáà | E: Äåéñòâèå | ESC: Ìåíþ",0 + +NUM_SPRITES equ 13 +ALIGN 4 +casinoSprites SpriteObject NUM_SPRITES dup(<>) +sortedSprites dd NUM_SPRITES dup(0) + +rowDistTable dd 120 dup(0) +rngSeed3D dd 12345678h + +slotBet dd 50 +slotReel1 dd 0 +slotReel2 dd 1 +slotReel3 dd 2 +slotSpinState dd 0 +slotSpinTimer dd 0 +slotWinAmount dd 0 +slotWinMsg db 64 dup(0) + +bjState dd 0 +bjBet dd 100 +bjPlayerCards dd 10 dup(0) +bjPlayerCardCount dd 0 +bjPlayerScore dd 0 +bjDealerCards dd 10 dup(0) +bjDealerCardCount dd 0 +bjDealerScore dd 0 +bjDealerHideHole dd 1 +bjOutcomeMsg db 64 dup(0) + +roulState dd 0 +roulBetType dd 1 +roulBetAmount dd 100 +roulWheelAngle dd 0 +roulBallAngle dd 0 +roulSpinTimer dd 0 +roulWinningNum dd 0 +roulPayout dd 0 +roulOutcomeMsg db 64 dup(0) + +shopMsg db 128 dup(0) +atmMsg db 128 dup(0) + +strWin db "ÏÎÁÅÄÀ! +$",0 +strLose db "ÏÐÎÈÃÐÛØ",0 +strJackpot db "ÄÆÅÊÏÎÒ! +$",0 +strPush db "ÍÈ×Üß (PUSH)",0 +strDealerBust db "ÄÈËÅÐ ÏÅÐÅÁÐÀË! ÏÎÁÅÄÀ! +$",0 +strPlayerBust db "ÏÅÐÅÁÎÐ (>21)! ÏÐÎÈÃÐÛØ",0 + +sym7 db " 777 ",0 +symBar db " BAR ",0 +symBell db " BELL",0 +symCherry db "CHERRY",0 +symClover db "CLOVER",0 +symGem db " GEM ",0 +symCrown db "CROWN",0 + +cardRankStr db "A ",0,"2 ",0,"3 ",0,"4 ",0,"5 ",0,"6 ",0,"7 ",0,"8 ",0,"9 ",0,"10",0,"J ",0,"Q ",0,"K ",0 + +.data? +ALIGN 4 +screenBuffer dd SCREEN_SIZE dup(?) +ALIGN 4 +zBuffer dd SCREEN_W dup(?) +ALIGN 4 +texturesBuffer dd (48 * 128 * 128) dup(?) + +hudNumBuffer db 32 dup(?) + +.code + +; --- 3D Window Procedure --- +Casino3DWndProc PROC hwnd:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD + invoke WindowEvents3D, hwnd, uMsg, wParam, lParam + ret +Casino3DWndProc ENDP + +; --- Random Generator --- +RandomRange3D PROC maxVal:DWORD + mov eax, rngSeed3D + imul eax, 1103515245 + add eax, 12345 + mov rngSeed3D, eax + shr eax, 16 + and eax, 7FFFh + xor edx, edx + div maxVal + mov eax, edx + ret +RandomRange3D ENDP + +; --- Copy String --- +CopyString3D PROC src:DWORD, dst:DWORD + push esi + push edi + mov esi, src + mov edi, dst +@@: + mov al, [esi] + mov [edi], al + test al, al + jz @F + inc esi + inc edi + jmp @B +@@: + pop edi + pop esi + ret +CopyString3D ENDP + +; --- Format Number to Decimal String --- +FormatNumber PROC num:DWORD, buf:DWORD + push ebx + push esi + push edi + mov eax, num + mov edi, buf + test eax, eax + jns fn_pos + mov BYTE PTR [edi], '-' + inc edi + neg eax +fn_pos: + mov ebx, 10 + push 0 +fn_div: + xor edx, edx + div ebx + add dl, '0' + push edx + test eax, eax + jnz fn_div +fn_pop: + pop eax + test al, al + jz fn_done + mov [edi], al + inc edi + jmp fn_pop +fn_done: + mov BYTE PTR [edi], 0 + pop edi + pop esi + pop ebx + ret +FormatNumber ENDP + +; --- Fast 2D Drawing Primitives --- +DrawBox PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD + +DrawPixel PROC x:DWORD, y:DWORD, color:DWORD + invoke DrawBox, x, y, 1, 1, color + ret +DrawPixel ENDP + +DrawBox PROC x:DWORD, y:DWORD, w:DWORD, h:DWORD, color:DWORD + shl x, 1 + shl y, 1 + shl w, 1 + shl h, 1 + push ebx + push esi + push edi + mov edi, y +box_row_loop: + mov eax, y + add eax, h + cmp edi, eax + jge box_done + cmp edi, 0 + jl next_box_row + cmp edi, SCREEN_H + jge box_done + + mov esi, x +box_col_loop: + mov eax, x + add eax, w + cmp esi, eax + jge next_box_row + cmp esi, 0 + jl next_box_col + cmp esi, SCREEN_W + jge next_box_row + + mov ecx, edi + imul ecx, SCREEN_W + add ecx, esi + mov edx, color + mov [screenBuffer + ecx*4], edx + +next_box_col: + inc esi + jmp box_col_loop + +next_box_row: + inc edi + jmp box_row_loop + +box_done: + pop edi + pop esi + pop ebx + ret +DrawBox ENDP + +DrawBoxBorder PROC uses ebx x:DWORD, y:DWORD, w:DWORD, h:DWORD, fillColor:DWORD, borderColor:DWORD, bWidth:DWORD + invoke DrawBox, x, y, w, h, borderColor + mov eax, x + add eax, bWidth + mov edx, y + add edx, bWidth + mov ecx, w + sub ecx, bWidth + sub ecx, bWidth + mov ebx, h + sub ebx, bWidth + sub ebx, bWidth + invoke DrawBox, eax, edx, ecx, ebx, fillColor + ret +DrawBoxBorder ENDP + +DrawCircle PROC cxVal:DWORD, cyVal:DWORD, radius:DWORD, color:DWORD + push ebx + push esi + push edi + mov eax, radius + neg eax + mov edi, eax +circ_y: + cmp edi, radius + jg circ_done + mov eax, radius + neg eax + mov esi, eax +circ_x: + cmp esi, radius + jg next_circ_y + + mov eax, esi + imul eax, eax + mov ebx, edi + imul ebx, ebx + add eax, ebx + mov edx, radius + imul edx, edx + cmp eax, edx + jg next_circ_x + + mov eax, cxVal + add eax, esi + mov ecx, cyVal + add ecx, edi + invoke DrawPixel, eax, ecx, color + +next_circ_x: + inc esi + jmp circ_x +next_circ_y: + inc edi + jmp circ_y +circ_done: + pop edi + pop esi + pop ebx + ret +DrawCircle ENDP + +DrawChar8x8 PROC uses ebx esi edi x:DWORD, y:DWORD, chVal:DWORD, color:DWORD + local column:DWORD + mov eax, chVal + and eax, 255 + lea esi, [font8x8 + eax*8] + xor edi, edi +glyph_row: + movzx ebx, BYTE PTR [esi+edi] + mov column, 0 +glyph_col: + test ebx, 80h + jz glyph_next + mov eax, x + add eax, column + mov edx, y + add edx, edi + invoke DrawPixel, eax, edx, color +glyph_next: + shl ebx, 1 + inc column + cmp column, 8 + jl glyph_col + inc edi + cmp edi, 8 + jl glyph_row + ret +DrawChar8x8 ENDP + +DrawString8x8 PROC x:DWORD, y:DWORD, strPtr:DWORD, color:DWORD + push ebx + push esi + mov esi, strPtr + mov ebx, x +str_loop: + movzx eax, BYTE PTR [esi] + test al, al + jz str_done + invoke DrawChar8x8, ebx, y, eax, color + add ebx, 8 + inc esi + jmp str_loop +str_done: + pop esi + pop ebx + ret +DrawString8x8 ENDP + +; --- True 3D Perspective Floor & Ceiling Rendering --- +RenderCeilingAndFloor PROC uses ebx esi edi + local floorRow:DWORD + local pDist:DWORD + local fStepX:DWORD + local fStepY:DWORD + local fX:DWORD + local fY:DWORD + local shade:DWORD + local cShade:DWORD + + ; Horizon line: row 120 + mov edi, HALF_H +floor_scanlines: + cmp edi, SCREEN_H + jge floor_done + mov floorRow, edi + + ; Distance = (HALF_H * FP_1) / (y - HALF_H) + mov eax, edi + sub eax, HALF_H + inc eax + mov ecx, eax + mov eax, HALF_H * FP_1 + cdq + idiv ecx + mov pDist, eax + + ; Distance shading (closer is brighter, far horizon is dark) + mov edx, pDist + shr edx, 13 + mov eax, 255 + sub eax, edx + cmp eax, 35 + jge @F + mov eax, 35 +@@: + mov shade, eax + mov edx, eax + sub edx, 25 + cmp edx, 20 + jge @F + mov edx, 20 +@@: + mov cShade, edx + + ; Step along scanline: (2 * playerPlane) * pDist / SCREEN_W + mov eax, playerPlaneX + shl eax, 1 + imul pDist + shrd eax, edx, 16 + cdq + mov ecx, SCREEN_W + idiv ecx + mov fStepX, eax + + mov eax, playerPlaneY + shl eax, 1 + imul pDist + shrd eax, edx, 16 + cdq + mov ecx, SCREEN_W + idiv ecx + mov fStepY, eax + + ; Starting floor coordinates at x=0: + ; player + pDist * (playerDir - playerPlane) + mov eax, playerDirX + sub eax, playerPlaneX + imul pDist + shrd eax, edx, 16 + add eax, playerX + mov fX, eax + + mov eax, playerDirY + sub eax, playerPlaneY + imul pDist + shrd eax, edx, 16 + add eax, playerY + mov fY, eax + + ; Fill scanline for floor (y) and ceiling (SCREEN_H - 1 - y) + xor esi, esi +col_floor_loop: + cmp esi, SCREEN_W + jge next_floor_row + + ; Carpet Texture (Slot 3: 3 * 4096 * 4 = 49152 bytes) + mov eax, fX + shr eax, 9 + and eax, 127 + mov edx, fY + shr edx, 9 + and edx, 127 + shl edx, 7 + add edx, eax + + mov eax, [texturesBuffer + (3 * 128 * 128 * 4) + edx*4] + + ; Shade Floor RGB + mov ebx, shade + movzx ecx, al + imul ecx, ebx + shr ecx, 8 + push ecx + + movzx ecx, ah + imul ecx, ebx + shr ecx, 8 + shl ecx, 8 + + shr eax, 16 + movzx eax, al + imul eax, ebx + shr eax, 8 + shl eax, 16 + or eax, ecx + pop ecx + or eax, ecx + + ; Store to Floor pixel + mov ecx, floorRow + imul ecx, SCREEN_W + add ecx, esi + mov [screenBuffer + ecx*4], eax + + ; Ceiling Spotlight Texture (Slot 5: 5 * 4096 * 4 = 81920 bytes) + mov eax, [texturesBuffer + (5 * 128 * 128 * 4) + edx*4] + mov ebx, cShade + movzx ecx, al + imul ecx, ebx + shr ecx, 8 + push ecx + + movzx ecx, ah + imul ecx, ebx + shr ecx, 8 + shl ecx, 8 + + shr eax, 16 + movzx eax, al + imul eax, ebx + shr eax, 8 + shl eax, 16 + or eax, ecx + pop ecx + or eax, ecx + + ; Store to Ceiling pixel: (SCREEN_H - 1 - floorRow) + mov ecx, SCREEN_H - 1 + sub ecx, floorRow + imul ecx, SCREEN_W + add ecx, esi + mov [screenBuffer + ecx*4], eax + + mov eax, fStepX + add fX, eax + mov eax, fStepY + add fY, eax + inc esi + jmp col_floor_loop + +next_floor_row: + inc edi + jmp floor_scanlines + +floor_done: + ret +RenderCeilingAndFloor ENDP + +; --- DDA Raycasting Walls --- +RenderWalls PROC + local col:DWORD + local camX:DWORD + local rayDirX:DWORD + local rayDirY:DWORD + local mapX:DWORD + local mapY:DWORD + local deltaDistX:DWORD + local deltaDistY:DWORD + local stepX:DWORD + local stepY:DWORD + local sideDistX:DWORD + local sideDistY:DWORD + local side:DWORD + local perpWallDist:DWORD + local lineH:DWORD + local drawStart:DWORD + local drawEnd:DWORD + local wallHit:DWORD + local texX:DWORD + local texId:DWORD + local shade:DWORD + + push ebx + push esi + push edi + + mov eax, playerAngle + and eax, 511 + mov ebx, [tableCos + eax*4] + mov playerDirX, ebx + mov ebx, [tableSin + eax*4] + mov playerDirY, ebx + + mov eax, ebx + imul eax, -66 + cdq + mov ecx, 100 + idiv ecx + mov playerPlaneX, eax + + mov eax, playerDirX + imul eax, 66 + cdq + idiv ecx + mov playerPlaneY, eax + + mov col, 0 +col_loop: + cmp col, SCREEN_W + jge walls_done + + mov eax, col + shl eax, 1 + sub eax, SCREEN_W + imul eax, FP_1 + cdq + mov ecx, SCREEN_W + idiv ecx + mov camX, eax + + mov eax, playerPlaneX + imul camX + shrd eax, edx, 16 + add eax, playerDirX + mov rayDirX, eax + + mov eax, playerPlaneY + imul camX + shrd eax, edx, 16 + add eax, playerDirY + mov rayDirY, eax + + mov eax, playerX + sar eax, 16 + mov mapX, eax + mov eax, playerY + sar eax, 16 + mov mapY, eax + + mov eax, rayDirX + test eax, eax + jnz calc_delta_x + mov deltaDistX, 7FFFFFFFh + jmp calc_delta_y +calc_delta_x: + test eax, eax + jns @F + neg eax +@@: + mov ebx, eax + ; 2^32 needs the full EDX:EAX dividend, not a truncated multiply. + xor eax, eax + mov edx, 1 + idiv ebx + mov deltaDistX, eax + +calc_delta_y: + mov eax, rayDirY + test eax, eax + jnz calc_delta_y_ok + mov deltaDistY, 7FFFFFFFh + jmp check_step +calc_delta_y_ok: + test eax, eax + jns @F + neg eax +@@: + mov ebx, eax + ; 2^32 needs the full EDX:EAX dividend, not a truncated multiply. + xor eax, eax + mov edx, 1 + idiv ebx + mov deltaDistY, eax + +check_step: + cmp rayDirX, 0 + jge step_x_pos + mov stepX, -1 + mov eax, playerX + mov edx, mapX + shl edx, 16 + sub eax, edx + imul deltaDistX + shrd eax, edx, 16 + mov sideDistX, eax + jmp check_step_y +step_x_pos: + mov stepX, 1 + mov eax, mapX + inc eax + shl eax, 16 + sub eax, playerX + imul deltaDistX + shrd eax, edx, 16 + mov sideDistX, eax + +check_step_y: + cmp rayDirY, 0 + jge step_y_pos + mov stepY, -1 + mov eax, playerY + mov edx, mapY + shl edx, 16 + sub eax, edx + imul deltaDistY + shrd eax, edx, 16 + mov sideDistY, eax + jmp dda_start +step_y_pos: + mov stepY, 1 + mov eax, mapY + inc eax + shl eax, 16 + sub eax, playerY + imul deltaDistY + shrd eax, edx, 16 + mov sideDistY, eax + +dda_start: + xor ecx, ecx +dda_step_loop: + inc ecx + cmp ecx, 64 + jge hit_wall + + mov eax, sideDistX + cmp eax, sideDistY + jge step_in_y + + mov eax, deltaDistX + add sideDistX, eax + mov eax, stepX + add mapX, eax + mov side, 0 + jmp check_tile + +step_in_y: + mov eax, deltaDistY + add sideDistY, eax + mov eax, stepY + add mapY, eax + mov side, 1 + +check_tile: + cmp mapX, 0 + jl hit_wall + cmp mapX, MAP_WIDTH + jge hit_wall + cmp mapY, 0 + jl hit_wall + cmp mapY, MAP_HEIGHT + jge hit_wall + + mov eax, mapY + shl eax, 5 + add eax, mapX + movzx eax, BYTE PTR [casinoMap + eax] + test eax, eax + jnz hit_wall + jmp dda_step_loop + +hit_wall: + cmp side, 0 + jne perp_y + mov eax, sideDistX + sub eax, deltaDistX + mov perpWallDist, eax + jmp perp_done +perp_y: + mov eax, sideDistY + sub eax, deltaDistY + mov perpWallDist, eax + +perp_done: + cmp perpWallDist, 2048 + jge @F + mov perpWallDist, 2048 +@@: + mov eax, col + mov edx, perpWallDist + mov [zBuffer + eax*4], edx + + ; High casino ceiling: lineH = (SCREEN_H * FP_1 * 180 / 240) / perpWallDist + mov eax, SCREEN_H + imul eax, FP_1 + cdq + idiv perpWallDist + mov lineH, eax + + mov eax, lineH + shr eax, 1 + mov ecx, HALF_H + sub ecx, eax + mov drawStart, ecx + + mov eax, lineH + shr eax, 1 + mov ecx, HALF_H + add ecx, eax + mov drawEnd, ecx + + cmp side, 0 + jne hit_side_y + mov eax, perpWallDist + imul rayDirY + shrd eax, edx, 16 + add eax, playerY + mov wallHit, eax + jmp calc_tex_x +hit_side_y: + mov eax, perpWallDist + imul rayDirX + shrd eax, edx, 16 + add eax, playerX + mov wallHit, eax + +calc_tex_x: + ; MASK WITH 0FFFFh to prevent texture scrambling! + mov eax, wallHit + and eax, 0FFFFh + shr eax, 9 + and eax, 127 + mov texX, eax + + cmp side, 0 + jne @F + cmp rayDirX, 0 + jle @F + mov eax, 127 + sub eax, texX + mov texX, eax +@@: + cmp side, 1 + jne select_tex + cmp rayDirY, 0 + jge select_tex + mov eax, 127 + sub eax, texX + mov texX, eax + +select_tex: + mov eax, mapY + shl eax, 5 + add eax, mapX + movzx eax, BYTE PTR [casinoMap + eax] + mov texId, eax + cmp texId, 0 + jne @F + mov texId, 1 +@@: + + mov eax, perpWallDist + shr eax, 13 + mov edx, 256 + sub edx, eax + cmp edx, 75 + jge @F + mov edx, 75 +@@: + cmp side, 1 + jne @F + imul edx, 3 + shr edx, 2 +@@: + mov shade, edx + + cmp drawStart, 0 + jge @F + mov drawStart, 0 +@@: + cmp drawEnd, SCREEN_H + jl @F + mov drawEnd, SCREEN_H - 1 +@@: + + mov eax, 128 * FP_1 + cdq + idiv lineH + mov esi, eax ; stepY + + mov eax, lineH + shr eax, 1 + add eax, drawStart + sub eax, HALF_H + imul eax, esi + mov edi, eax ; texPos + + mov ecx, drawStart +draw_stripe_loop: + cmp ecx, drawEnd + jg next_col + + mov eax, edi + shr eax, 16 + and eax, 127 + shl eax, 7 + add eax, texX + + mov edx, texId + shl edx, 14 + add eax, edx + mov eax, [texturesBuffer + eax*4] + + ; Shade wall pixel + mov ebx, shade + movzx edx, al + imul edx, ebx + shr edx, 8 + push edx + + movzx edx, ah + imul edx, ebx + shr edx, 8 + shl edx, 8 + + shr eax, 16 + movzx eax, al + imul eax, ebx + shr eax, 8 + shl eax, 16 + or eax, edx + pop edx + or eax, edx + + mov edx, ecx + imul edx, SCREEN_W + add edx, col + mov [screenBuffer + edx*4], eax + + add edi, esi + inc ecx + jmp draw_stripe_loop + +next_col: + inc col + jmp col_loop + +walls_done: + pop edi + pop esi + pop ebx + ret +RenderWalls ENDP + +; --- Render 3D Billboard Sprites --- +RenderSprites PROC + local sprIdx:DWORD + local relX:DWORD + local relY:DWORD + local invDet:DWORD + local transX:DWORD + local transY:DWORD + local sprScreenX:DWORD + local sprH:DWORD + local sprW:DWORD + local drawStartY:DWORD + local drawEndY:DWORD + local drawStartX:DWORD + local drawEndX:DWORD + local stripe:DWORD + local texX:DWORD + local texY:DWORD + local shade:DWORD + local texSlot:DWORD + + push ebx + push esi + push edi + + xor esi, esi +calc_dist_loop: + cmp esi, NUM_SPRITES + jge sort_sprites + mov eax, esi + imul eax, SIZEOF SpriteObject + + mov edx, [casinoSprites + eax].posX + sub edx, playerX + sar edx, 8 + imul edx, edx + mov ebx, edx + + mov edx, [casinoSprites + eax].posY + sub edx, playerY + sar edx, 8 + imul edx, edx + add ebx, edx + + mov [casinoSprites + eax].distSq, ebx + mov [sortedSprites + esi*4], esi + inc esi + jmp calc_dist_loop + +sort_sprites: + xor esi, esi +sort_outer: + cmp esi, NUM_SPRITES - 1 + jge render_sorted_sprites + mov edi, esi + inc edi +sort_inner: + cmp edi, NUM_SPRITES + jge next_sort_outer + + mov eax, [sortedSprites + esi*4] + imul eax, SIZEOF SpriteObject + mov eax, [casinoSprites + eax].distSq + + mov ebx, [sortedSprites + edi*4] + imul ebx, SIZEOF SpriteObject + mov ebx, [casinoSprites + ebx].distSq + + cmp eax, ebx + jge @F + mov ecx, [sortedSprites + esi*4] + mov edx, [sortedSprites + edi*4] + mov [sortedSprites + esi*4], edx + mov [sortedSprites + edi*4], ecx +@@: + inc edi + jmp sort_inner +next_sort_outer: + inc esi + jmp sort_outer + +render_sorted_sprites: + xor esi, esi +draw_spr_loop: + cmp esi, NUM_SPRITES + jge sprites_rendered + + mov eax, [sortedSprites + esi*4] + mov sprIdx, eax + imul eax, SIZEOF SpriteObject + + ; Sample animation by elapsed time. Pausing freezes the clock. + push eax + mov ecx, [casinoSprites + eax].animSpeed + imul ecx, 40 + mov eax, animationClock3D + xor edx, edx + div ecx + pop ebx + xor edx, edx + div [casinoSprites + ebx].frameCount + mov [casinoSprites + ebx].curFrame, edx + mov eax, ebx + + cmp [casinoSprites + eax].distSq, 16 + jle next_spr + + mov edx, [casinoSprites + eax].posX + sub edx, playerX + mov relX, edx + + mov edx, [casinoSprites + eax].posY + sub edx, playerY + mov relY, edx + + mov eax, playerPlaneX + imul playerDirY + shrd eax, edx, 16 + mov ebx, eax + + mov eax, playerDirX + imul playerPlaneY + shrd eax, edx, 16 + sub ebx, eax + test ebx, ebx + jz next_spr + + ; 2^32 needs the full EDX:EAX dividend, not a truncated multiply. + xor eax, eax + mov edx, 1 + idiv ebx + mov invDet, eax + + mov eax, playerDirY + imul relX + shrd eax, edx, 16 + mov ebx, eax + + mov eax, playerDirX + imul relY + shrd eax, edx, 16 + sub ebx, eax + + mov eax, ebx + imul invDet + shrd eax, edx, 16 + mov transX, eax + + mov eax, playerPlaneY + neg eax + imul relX + shrd eax, edx, 16 + mov ebx, eax + + mov eax, playerPlaneX + imul relY + shrd eax, edx, 16 + add ebx, eax + + mov eax, ebx + imul invDet + shrd eax, edx, 16 + mov transY, eax + + cmp transY, 4096 + jle next_spr + + mov eax, transX + imul eax, HALF_W + cdq + idiv transY + add eax, HALF_W + mov sprScreenX, eax + + mov eax, SCREEN_H + imul eax, FP_1 + cdq + idiv transY + test eax, eax + jns @F + neg eax +@@: + cmp eax, SCREEN_H * 2 + jle @F + mov eax, SCREEN_H * 2 +@@: + mov sprH, eax + mov sprW, eax + + mov eax, HALF_H + mov ebx, sprH + shr ebx, 1 + sub eax, ebx + mov drawStartY, eax + add eax, sprH + mov drawEndY, eax + + mov eax, sprScreenX + mov ebx, sprW + shr ebx, 1 + sub eax, ebx + mov drawStartX, eax + add eax, sprW + mov drawEndX, eax + + cmp drawStartY, 0 + jge @F + mov drawStartY, 0 +@@: + cmp drawEndY, SCREEN_H + jl @F + mov drawEndY, SCREEN_H - 1 +@@: + + mov eax, transY + shr eax, 13 + mov edx, 256 + sub edx, eax + cmp edx, 110 + jge @F + mov edx, 110 +@@: + mov shade, edx + + mov eax, sprIdx + imul eax, SIZEOF SpriteObject + mov edx, [casinoSprites + eax].baseTexId + add edx, [casinoSprites + eax].curFrame + mov texSlot, edx + + mov eax, drawStartX + mov stripe, eax + +spr_stripe_loop: + mov eax, stripe + cmp eax, drawEndX + jge next_spr + + cmp eax, 0 + jl next_spr_stripe + cmp eax, SCREEN_W + jge next_spr + + mov edx, transY + cmp edx, [zBuffer + eax*4] + jge next_spr_stripe + + mov eax, stripe + sub eax, sprScreenX + mov ebx, sprW + shr ebx, 1 + add eax, ebx + shl eax, 7 + cdq + idiv sprW + cmp eax, 0 + jl next_spr_stripe + cmp eax, 128 + jge next_spr_stripe + mov texX, eax + + mov edi, drawStartY +spr_pix_y_loop: + cmp edi, drawEndY + jg next_spr_stripe + + mov eax, edi + sub eax, HALF_H + mov ebx, sprH + shr ebx, 1 + add eax, ebx + shl eax, 7 + cdq + idiv sprH + cmp eax, 0 + jl next_spr_y + cmp eax, 128 + jge next_spr_y + mov texY, eax + + shl eax, 7 + add eax, texX + mov edx, texSlot + shl edx, 14 + add eax, edx + mov eax, [texturesBuffer + eax*4] + + ; Chromakey magenta filter + cmp eax, CHROMA_KEY + je next_spr_y +do_draw_sprite_pix: + mov ebx, shade + movzx edx, al + imul edx, ebx + shr edx, 8 + push edx + + movzx edx, ah + imul edx, ebx + shr edx, 8 + shl edx, 8 + + shr eax, 16 + movzx eax, al + imul eax, ebx + shr eax, 8 + shl eax, 16 + or eax, edx + pop edx + or eax, edx + + mov ecx, edi + imul ecx, SCREEN_W + add ecx, stripe + mov [screenBuffer + ecx*4], eax + +next_spr_y: + inc edi + jmp spr_pix_y_loop + +next_spr_stripe: + inc stripe + jmp spr_stripe_loop + +next_spr: + inc esi + jmp draw_spr_loop + +sprites_rendered: + pop edi + pop esi + pop ebx + ret +RenderSprites ENDP + +; --- HUD & Minimap Radar --- +RenderHUD PROC uses ebx esi edi + invoke DrawBox, 0, 0, 320, 16, 0014191Dh + invoke DrawString8x8, 8, 4, OFFSET textBank3D, 00D8BC6Ah + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 64, 4, OFFSET hudNumBuffer, 00FFFFFFh + invoke DrawString8x8, 176, 4, OFFSET textWindowKeys3D, 00A8B6BBh + invoke DrawBox, 0, 226, 320, 14, 0014191Dh + invoke DrawString8x8, 12, 230, OFFSET textWalkKeys3D, 00A8B6BBh + invoke DrawBox, 159, 118, 2, 5, 00E7DFC8h + invoke DrawBox, 157, 120, 6, 1, 00E7DFC8h + cmp interactPromptPtr, 0 + je @F + invoke DrawBoxBorder, 4, 199, 312, 18, 0014191Dh, 00D8BC6Ah, 1 + invoke DrawString8x8, 10, 204, interactPromptPtr, 00F5E2B0h +@@: + cmp flashTimer, 0 + je hud_finished + dec flashTimer + invoke DrawBox, 4, 22, 312, 16, 0014191Dh + invoke DrawString8x8, 10, 26, OFFSET flashMessage, 00FFFFFFh +hud_finished: + ret +RenderHUD ENDP + +RenderMinimap PROC uses ebx esi edi + local radarX:DWORD + local radarY:DWORD + local radarSize:DWORD + + mov radarX, 320 - 48 + mov radarY, 20 + mov radarSize, 44 + + invoke DrawBoxBorder, radarX, radarY, radarSize, radarSize, 00101510h, 0000D7FFh, 1 + + ; Draw Sprites on radar + xor esi, esi +radar_spr_loop: + cmp esi, NUM_SPRITES + jge draw_player_radar + mov eax, esi + imul eax, SIZEOF SpriteObject + mov eax, [casinoSprites + eax].posX + sar eax, 16 + imul eax, radarSize + shr eax, 5 + add eax, radarX + mov ebx, eax + + mov eax, esi + imul eax, SIZEOF SpriteObject + mov eax, [casinoSprites + eax].posY + sar eax, 16 + imul eax, radarSize + shr eax, 5 + add eax, radarY + + invoke DrawPixel, ebx, eax, 00FFAA00h + inc esi + jmp radar_spr_loop + +draw_player_radar: + mov eax, playerX + sar eax, 16 + imul eax, radarSize + shr eax, 5 + add eax, radarX + mov ebx, eax + + mov eax, playerY + sar eax, 16 + imul eax, radarSize + shr eax, 5 + add eax, radarY + + invoke DrawCircle, ebx, eax, 2, 000000FFh + ret +RenderMinimap ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: SLOTS 777 +; ============================================================================== +HandleSlotsInput PROC + cmp slotSpinState, 1 + je slots_input_done + + invoke Pressed3D, 20h ; SPACE -> Spin + test ah, 80h + jz check_bet_adjust + mov eax, bankroll + cmp eax, slotBet + jl @F + sub eax, slotBet + mov bankroll, eax + mov slotSpinState, 1 + mov slotSpinTimer, 0 + mov slotWinAmount, 0 + invoke PlaySoundA, OFFSET soundClick, 0, 1 + jmp slots_input_done +@@: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + +check_bet_adjust: + invoke Pressed3D, 26h ; UP / W + test ah, 80h + jnz inc_bet + invoke Pressed3D, 57h + test ah, 80h + jz check_bet_down +inc_bet: + cmp slotBet, 500 + jge slots_input_done + cmp slotBet, 100 + jge @F + cmp slotBet, 50 + jge set_100 + mov slotBet, 50 + jmp slots_input_done +set_100: + mov slotBet, 100 + jmp slots_input_done +@@: + mov slotBet, 500 + jmp slots_input_done + +check_bet_down: + invoke Pressed3D, 28h ; DOWN / S + test ah, 80h + jnz dec_bet + invoke Pressed3D, 53h + test ah, 80h + jz slots_input_done +dec_bet: + cmp slotBet, 50 + jle set_10 + cmp slotBet, 100 + jle set_50 + mov slotBet, 100 + jmp slots_input_done +set_50: + mov slotBet, 50 + jmp slots_input_done +set_10: + mov slotBet, 10 + +slots_input_done: + ret +HandleSlotsInput ENDP + +RenderSlotsGame PROC uses ebx esi edi + ; Cabinet Background (Dark Cherry Wood & Gold) + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 00150A10h + invoke DrawBoxBorder, 10, 10, 300, 220, 00251015h, 0000D7FFh, 3 + + ; Illuminated Top Marquee + invoke DrawBoxBorder, 25, 20, 270, 32, 000A0505h, 0000FFFFh, 2 + invoke DrawString8x8, 55, 32, OFFSET textSlots3D, 0000D7FFh + + ; Spinning Animation Logic + cmp slotSpinState, 1 + jne draw_reels + inc slotSpinTimer + + cmp slotSpinTimer, 22 + jge @F + invoke RandomRange3D, 7 + mov slotReel1, eax +@@: + cmp slotSpinTimer, 36 + jge @F + invoke RandomRange3D, 7 + mov slotReel2, eax +@@: + cmp slotSpinTimer, 50 + jge @F + invoke RandomRange3D, 7 + mov slotReel3, eax +@@: + cmp slotSpinTimer, 50 + jl draw_reels + + ; Spin finished! Check outcome! + mov slotSpinState, 0 + mov eax, slotReel1 + cmp eax, slotReel2 + jne check_pairs + cmp eax, slotReel3 + jne check_pairs + + ; 3 Matching! + cmp eax, 0 ; 777! + jne @F + mov eax, slotBet + imul eax, 25 + mov slotWinAmount, eax + add bankroll, eax + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + jmp draw_reels +@@: + cmp eax, 6 ; CROWN! + jne @F + mov eax, slotBet + imul eax, 50 + mov slotWinAmount, eax + add bankroll, eax + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + jmp draw_reels +@@: + mov eax, slotBet + imul eax, 10 + mov slotWinAmount, eax + add bankroll, eax + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp draw_reels + +check_pairs: + mov eax, slotReel1 + cmp eax, slotReel2 + je pair_win + mov eax, slotReel2 + cmp eax, slotReel3 + je pair_win + mov eax, slotReel1 + cmp eax, slotReel3 + je pair_win + jmp draw_reels +pair_win: + mov eax, slotBet + imul eax, 2 + mov slotWinAmount, eax + add bankroll, eax + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + +draw_reels: + ; Reels Window + invoke DrawBoxBorder, 30, 62, 260, 95, 000F0F12h, 0000A5FFh, 2 + + ; Reel 1 (45..105) + invoke DrawBoxBorder, 45, 68, 65, 82, 00F0F0F5h, 00505050h, 2 + mov eax, slotReel1 + call DrawReelSymbolAt1 + + ; Reel 2 (128..188) + invoke DrawBoxBorder, 128, 68, 65, 82, 00F0F0F5h, 00505050h, 2 + mov eax, slotReel2 + call DrawReelSymbolAt2 + + ; Reel 3 (210..270) + invoke DrawBoxBorder, 210, 68, 65, 82, 00F0F0F5h, 00505050h, 2 + mov eax, slotReel3 + call DrawReelSymbolAt3 + + ; Bottom Control Panel + invoke DrawBoxBorder, 20, 165, 280, 58, 00151515h, 0000D7FFh, 1 + + invoke DrawString8x8, 28, 172, OFFSET textBank3D, 0000D7FFh + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 110, 172, OFFSET hudNumBuffer, 0000FFFFh + + invoke DrawString8x8, 175, 172, OFFSET textBet3D, 0000D7FFh + invoke FormatNumber, slotBet, OFFSET hudNumBuffer + invoke DrawString8x8, 240, 172, OFFSET hudNumBuffer, 0050FF50h + + cmp slotWinAmount, 0 + jle draw_slot_ctrls + invoke DrawString8x8, 28, 187, OFFSET strWin, 0000FFFFh + invoke FormatNumber, slotWinAmount, OFFSET hudNumBuffer + invoke DrawString8x8, 110, 187, OFFSET hudNumBuffer, 0000FFFFh + +draw_slot_ctrls: + invoke DrawString8x8, 28, 204, OFFSET textSlotsKeys3D, 00A0A0A0h + ret +RenderSlotsGame ENDP + +DrawReelSymbolAt1 PROC + cmp eax, 0 + jne @F + invoke DrawString8x8, 52, 105, OFFSET sym7, 000000FFh + ret +@@: + cmp eax, 1 + jne @F + invoke DrawString8x8, 52, 105, OFFSET symBar, 00FFAA00h + ret +@@: + cmp eax, 2 + jne @F + invoke DrawString8x8, 52, 105, OFFSET symBell, 0000D7FFh + ret +@@: + cmp eax, 3 + jne @F + invoke DrawString8x8, 48, 105, OFFSET symCherry, 000000D0h + ret +@@: + cmp eax, 4 + jne @F + invoke DrawString8x8, 48, 105, OFFSET symClover, 0000A000h + ret +@@: + cmp eax, 5 + jne @F + invoke DrawString8x8, 52, 105, OFFSET symGem, 00FFFF00h + ret +@@: + invoke DrawString8x8, 52, 105, OFFSET symCrown, 0000D7FFh + ret +DrawReelSymbolAt1 ENDP + +DrawReelSymbolAt2 PROC + cmp eax, 0 + jne @F + invoke DrawString8x8, 135, 105, OFFSET sym7, 000000FFh + ret +@@: + cmp eax, 1 + jne @F + invoke DrawString8x8, 135, 105, OFFSET symBar, 00FFAA00h + ret +@@: + cmp eax, 2 + jne @F + invoke DrawString8x8, 135, 105, OFFSET symBell, 0000D7FFh + ret +@@: + cmp eax, 3 + jne @F + invoke DrawString8x8, 131, 105, OFFSET symCherry, 000000D0h + ret +@@: + cmp eax, 4 + jne @F + invoke DrawString8x8, 131, 105, OFFSET symClover, 0000A000h + ret +@@: + cmp eax, 5 + jne @F + invoke DrawString8x8, 135, 105, OFFSET symGem, 00FFFF00h + ret +@@: + invoke DrawString8x8, 135, 105, OFFSET symCrown, 0000D7FFh + ret +DrawReelSymbolAt2 ENDP + +DrawReelSymbolAt3 PROC + cmp eax, 0 + jne @F + invoke DrawString8x8, 218, 105, OFFSET sym7, 000000FFh + ret +@@: + cmp eax, 1 + jne @F + invoke DrawString8x8, 218, 105, OFFSET symBar, 00FFAA00h + ret +@@: + cmp eax, 2 + jne @F + invoke DrawString8x8, 218, 105, OFFSET symBell, 0000D7FFh + ret +@@: + cmp eax, 3 + jne @F + invoke DrawString8x8, 214, 105, OFFSET symCherry, 000000D0h + ret +@@: + cmp eax, 4 + jne @F + invoke DrawString8x8, 214, 105, OFFSET symClover, 0000A000h + ret +@@: + cmp eax, 5 + jne @F + invoke DrawString8x8, 218, 105, OFFSET symGem, 00FFFF00h + ret +@@: + invoke DrawString8x8, 218, 105, OFFSET symCrown, 0000D7FFh + ret +DrawReelSymbolAt3 ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: BLACKJACK (21) +; ============================================================================== +HandleBlackjackInput PROC uses ebx + cmp bjState, 0 ; Need Deal + jne check_bj_player_turn + invoke Pressed3D, 20h ; SPACE -> Deal + test ah, 80h + jz check_bj_bet_change + mov eax, bankroll + cmp eax, bjBet + jl bj_need_cash + sub eax, bjBet + mov bankroll, eax + + ; Deal 2 cards to player, 2 cards to dealer + mov bjPlayerCardCount, 0 + mov bjDealerCardCount, 0 + mov bjDealerHideHole, 1 + + ; Player Card 1 + invoke RandomRange3D, 13 + inc eax + mov ebx, bjPlayerCardCount + mov [bjPlayerCards + ebx*4], eax + inc bjPlayerCardCount + + ; Dealer Card 1 + invoke RandomRange3D, 13 + inc eax + mov ebx, bjDealerCardCount + mov [bjDealerCards + ebx*4], eax + inc bjDealerCardCount + + ; Player Card 2 + invoke RandomRange3D, 13 + inc eax + mov ebx, bjPlayerCardCount + mov [bjPlayerCards + ebx*4], eax + inc bjPlayerCardCount + + ; Dealer Card 2 (Hole card) + invoke RandomRange3D, 13 + inc eax + mov ebx, bjDealerCardCount + mov [bjDealerCards + ebx*4], eax + inc bjDealerCardCount + + invoke PlaySoundA, OFFSET soundCards, 0, 1 + + ; Calc Player Score + call CalcPlayerBJScore + cmp bjPlayerScore, 21 + jne set_bj_turn + ; Instant Blackjack! + mov bjDealerHideHole, 0 + mov eax, bjBet + imul eax, 5 + shr eax, 1 + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET bjOutcomeMsg + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + mov bjState, 2 + ret +set_bj_turn: + mov bjState, 1 + mov BYTE PTR [bjOutcomeMsg], 0 + ret + +bj_need_cash: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + ret + +check_bj_player_turn: + cmp bjState, 1 + jne check_bj_round_over + + invoke Pressed3D, 48h ; 'H' -> Hit + test ah, 80h + jz check_bj_stand + invoke RandomRange3D, 13 + inc eax + mov ebx, bjPlayerCardCount + cmp ebx, 8 + jge @F + mov [bjPlayerCards + ebx*4], eax + inc bjPlayerCardCount +@@: + invoke PlaySoundA, OFFSET soundCards, 0, 1 + call CalcPlayerBJScore + cmp bjPlayerScore, 21 + jle bj_input_done + ; Bust! + invoke CopyString3D, OFFSET strPlayerBust, OFFSET bjOutcomeMsg + mov bjDealerHideHole, 0 + mov bjState, 2 + ret + +check_bj_stand: + invoke Pressed3D, 53h ; 'S' -> Stand + test ah, 80h + jz bj_input_done + + ; Dealer Turn + mov bjDealerHideHole, 0 +dealer_loop: + call CalcDealerBJScore + cmp bjDealerScore, 17 + jge dealer_finished + invoke RandomRange3D, 13 + inc eax + mov ebx, bjDealerCardCount + cmp ebx, 8 + jge dealer_finished + mov [bjDealerCards + ebx*4], eax + inc bjDealerCardCount + jmp dealer_loop + +dealer_finished: + cmp bjDealerScore, 21 + jle compare_scores + ; Dealer Bust! + mov eax, bjBet + shl eax, 1 + add bankroll, eax + invoke CopyString3D, OFFSET strDealerBust, OFFSET bjOutcomeMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + mov bjState, 2 + ret + +compare_scores: + mov eax, bjPlayerScore + cmp eax, bjDealerScore + jle check_dealer_won + ; Player Won! + mov eax, bjBet + shl eax, 1 + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET bjOutcomeMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + mov bjState, 2 + ret +check_dealer_won: + cmp eax, bjDealerScore + jl dealer_wins + ; Push (Tie) + mov eax, bjBet + add bankroll, eax + invoke CopyString3D, OFFSET strPush, OFFSET bjOutcomeMsg + mov bjState, 2 + ret +dealer_wins: + invoke CopyString3D, OFFSET strLose, OFFSET bjOutcomeMsg + mov bjState, 2 + ret + +check_bj_round_over: + invoke Pressed3D, 20h ; SPACE -> Next Hand + test ah, 80h + jz bj_input_done + mov bjState, 0 + ret + +check_bj_bet_change: + invoke Pressed3D, 26h ; UP + test ah, 80h + jz @F + cmp bjBet, 500 + jge bj_input_done + add bjBet, 50 + ret +@@: + invoke Pressed3D, 28h ; DOWN + test ah, 80h + jz bj_input_done + cmp bjBet, 50 + jle bj_input_done + sub bjBet, 50 + +bj_input_done: + ret +HandleBlackjackInput ENDP + +CalcPlayerBJScore PROC uses ebx esi + xor eax, eax + xor ebx, ebx + xor esi, esi +calc_p_loop: + cmp esi, bjPlayerCardCount + jge calc_p_done + mov edx, [bjPlayerCards + esi*4] + cmp edx, 10 + jle @F + mov edx, 10 +@@: + cmp edx, 1 + jne add_p_val + inc ebx ; count Aces + add eax, 11 + jmp next_p_card +add_p_val: + add eax, edx +next_p_card: + inc esi + jmp calc_p_loop +calc_p_done: + ; Soft Ace reduction +reduce_p_ace: + cmp eax, 21 + jle store_p_score + test ebx, ebx + jz store_p_score + sub eax, 10 + dec ebx + jmp reduce_p_ace +store_p_score: + mov bjPlayerScore, eax + ret +CalcPlayerBJScore ENDP + +CalcDealerBJScore PROC uses ebx esi + xor eax, eax + xor ebx, ebx + xor esi, esi +calc_d_loop: + cmp esi, bjDealerCardCount + jge calc_d_done + mov edx, [bjDealerCards + esi*4] + cmp edx, 10 + jle @F + mov edx, 10 +@@: + cmp edx, 1 + jne add_d_val + inc ebx + add eax, 11 + jmp next_d_card +add_d_val: + add eax, edx +next_d_card: + inc esi + jmp calc_d_loop +calc_d_done: +reduce_d_ace: + cmp eax, 21 + jle store_d_score + test ebx, ebx + jz store_d_score + sub eax, 10 + dec ebx + jmp reduce_d_ace +store_d_score: + mov bjDealerScore, eax + ret +CalcDealerBJScore ENDP + +RenderBlackjackGame PROC uses ebx esi edi + ; Emerald Felt Table Background + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 000A3015h + invoke DrawBoxBorder, 10, 10, 300, 220, 000D4018h, 0000D7FFh, 3 + + ; Dealer Area Top + invoke DrawString8x8, 25, 20, OFFSET textBJ3D, 0000D7FFh + invoke DrawString8x8, 25, 35, OFFSET textDealer3D, 00FFFFFFh + invoke FormatNumber, bjDealerScore, OFFSET hudNumBuffer + invoke DrawString8x8, 120, 35, OFFSET hudNumBuffer, 0000FFFFh + + ; Dealer Cards + xor esi, esi +draw_dealer_cards: + cmp esi, bjDealerCardCount + jge draw_player_bj_area + mov eax, esi + imul eax, 45 + add eax, 25 + mov ebx, eax + + cmp esi, 1 + jne draw_dealer_face + cmp bjDealerHideHole, 1 + jne draw_dealer_face + ; Face Down Card + mov eax, selectedBack3D + mov eax, cardBackColors3D[eax*4] + invoke DrawBoxBorder, ebx, 48, 38, 52, eax, 00FFFFFFh, 2 + jmp next_dealer_card_draw + +draw_dealer_face: + invoke DrawBoxBorder, ebx, 48, 38, 52, 00F0F0F5h, 00000000h, 2 + mov eax, [bjDealerCards + esi*4] + dec eax + imul eax, 3 + lea edx, [cardRankStr + eax] + mov eax, ebx + add eax, 8 + invoke DrawString8x8, eax, 68, edx, 00000000h + +next_dealer_card_draw: + inc esi + jmp draw_dealer_cards + +draw_player_bj_area: + ; Player Area Bottom + invoke DrawString8x8, 25, 110, OFFSET textPlayer3D, 00FFFFFFh + invoke FormatNumber, bjPlayerScore, OFFSET hudNumBuffer + invoke DrawString8x8, 120, 110, OFFSET hudNumBuffer, 0050FF50h + + ; Player Cards + xor esi, esi +draw_player_cards: + cmp esi, bjPlayerCardCount + jge draw_bj_footer + mov eax, esi + imul eax, 45 + add eax, 25 + mov ebx, eax + + invoke DrawBoxBorder, ebx, 124, 38, 52, 00F0F0F5h, 00000000h, 2 + mov eax, [bjPlayerCards + esi*4] + dec eax + imul eax, 3 + lea edx, [cardRankStr + eax] + mov eax, ebx + add eax, 8 + invoke DrawString8x8, eax, 144, edx, 00000000h + + inc esi + jmp draw_player_cards + +draw_bj_footer: + ; Footer Status & Controls + invoke DrawBoxBorder, 20, 182, 280, 42, 00102010h, 0000D7FFh, 1 + cmp BYTE PTR [bjOutcomeMsg], 0 + je draw_bj_controls + invoke DrawString8x8, 28, 188, OFFSET bjOutcomeMsg, 0000FFFFh + invoke DrawString8x8, 28, 204, OFFSET textNext3D, 00A0A0A0h + ret + +draw_bj_controls: + invoke DrawString8x8, 28, 188, OFFSET textBJKeys3D, 00FFFFFFh + invoke DrawString8x8, 28, 204, OFFSET textDeal3D, 00A0A0A0h + ret +RenderBlackjackGame ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: ROULETTE +; ============================================================================== +HandleRouletteInput PROC uses ebx + cmp roulState, 1 + je roul_input_done + + invoke Pressed3D, 31h ; '1' -> RED + test ah, 80h + jz @F + mov roulBetType, 1 +@@: + invoke Pressed3D, 32h ; '2' -> BLACK + test ah, 80h + jz @F + mov roulBetType, 2 +@@: + invoke Pressed3D, 33h ; '3' -> ZERO (0) + test ah, 80h + jz @F + mov roulBetType, 3 +@@: + invoke Pressed3D, 34h ; '4' -> EVEN + test ah, 80h + jz @F + mov roulBetType, 4 +@@: + invoke Pressed3D, 35h ; '5' -> ODD + test ah, 80h + jz check_roul_spin + mov roulBetType, 5 + +check_roul_spin: + invoke Pressed3D, 20h ; SPACE -> Spin + test ah, 80h + jz roul_input_done + mov eax, bankroll + cmp eax, roulBetAmount + jl roul_no_cash + sub eax, roulBetAmount + mov bankroll, eax + mov roulState, 1 + mov roulSpinTimer, 50 + mov roulPayout, 0 + invoke PlaySoundA, OFFSET soundRoulette, 0, 1 + ret + +roul_no_cash: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + +roul_input_done: + ret +HandleRouletteInput ENDP + +RenderRouletteGame PROC uses ebx esi edi + ; Table felt background + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 00151525h + invoke DrawBoxBorder, 10, 10, 300, 220, 00201525h, 0000D7FFh, 3 + + ; 2.5D Rotating Wheel on Left + invoke DrawCircle, 85, 110, 65, 00102550h + invoke DrawCircle, 85, 110, 60, 0000D7FFh + invoke DrawCircle, 85, 110, 52, 00101010h + invoke DrawCircle, 85, 110, 22, 0000D7FFh ; Center brass turret + + ; Spinning Wheel / Ball Logic + cmp roulState, 1 + jne draw_roul_ball + dec roulSpinTimer + add roulWheelAngle, 8 + sub roulBallAngle, 14 + cmp roulSpinTimer, 0 + jg draw_roul_ball + + ; Wheel stopped! Determine result! + mov roulState, 2 + invoke RandomRange3D, 37 + mov roulWinningNum, eax + + ; Check bet + cmp roulBetType, 1 ; RED + jne check_ro_black + call IsNumberRed + test eax, eax + jz ro_lost + mov eax, roulBetAmount + shl eax, 1 + mov roulPayout, eax + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET roulOutcomeMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp draw_roul_ball + +check_ro_black: + cmp roulBetType, 2 ; BLACK + jne check_ro_zero + cmp roulWinningNum, 0 + je ro_lost + call IsNumberRed + test eax, eax + jnz ro_lost + mov eax, roulBetAmount + shl eax, 1 + mov roulPayout, eax + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET roulOutcomeMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp draw_roul_ball + +check_ro_zero: + cmp roulBetType, 3 ; ZERO + jne check_ro_even + cmp roulWinningNum, 0 + jne ro_lost + mov eax, roulBetAmount + imul eax, 36 + mov roulPayout, eax + add bankroll, eax + invoke CopyString3D, OFFSET strJackpot, OFFSET roulOutcomeMsg + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + jmp draw_roul_ball + +check_ro_even: + cmp roulBetType, 4 ; EVEN + jne check_ro_odd + mov eax, roulWinningNum + test eax, eax + jz ro_lost + test al, 1 + jnz ro_lost + mov eax, roulBetAmount + shl eax, 1 + mov roulPayout, eax + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET roulOutcomeMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp draw_roul_ball + +check_ro_odd: + mov eax, roulWinningNum + test eax, eax + jz ro_lost + test al, 1 + jz ro_lost + mov eax, roulBetAmount + shl eax, 1 + mov roulPayout, eax + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET roulOutcomeMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp draw_roul_ball + +ro_lost: + invoke CopyString3D, OFFSET strLose, OFFSET roulOutcomeMsg + +draw_roul_ball: + ; Draw White Ball on Rim + mov eax, roulBallAngle + and eax, 511 + mov ebx, [tableCos + eax*4] + imul ebx, 42 + sar ebx, 16 + add ebx, 85 + + mov eax, roulBallAngle + and eax, 511 + mov edx, [tableSin + eax*4] + imul edx, 42 + sar edx, 16 + add edx, 110 + invoke DrawCircle, ebx, edx, 3, 00FFFFFFh + + ; Right Betting Board + invoke DrawBoxBorder, 175, 25, 125, 28, 001010C0h, 00FFFFFFh, 2 ; [1] RED + invoke DrawString8x8, 190, 35, OFFSET textRed3D, 00FFFFFFh + + invoke DrawBoxBorder, 175, 60, 125, 28, 00151515h, 00FFFFFFh, 2 ; [2] BLACK + invoke DrawString8x8, 190, 70, OFFSET textBlack3D, 00FFFFFFh + + invoke DrawBoxBorder, 175, 95, 125, 28, 00106010h, 00FFFFFFh, 2 ; [3] ZERO + invoke DrawString8x8, 190, 105, OFFSET textZero3D, 00FFFFFFh + + invoke DrawBoxBorder, 175, 130, 60, 26, 00302020h, 00FFFFFFh, 1 ; [4] EVEN + invoke DrawString8x8, 185, 139, OFFSET textEven3D, 00FFFFFFh + + invoke DrawBoxBorder, 240, 130, 60, 26, 00302020h, 00FFFFFFh, 1 ; [5] ODD + invoke DrawString8x8, 250, 139, OFFSET textOdd3D, 00FFFFFFh + + ; Highlight Active Bet + cmp roulBetType, 1 + jne @F + invoke DrawBoxBorder, 173, 23, 129, 32, 0, 0000FFFFh, 2 +@@: + cmp roulBetType, 2 + jne @F + invoke DrawBoxBorder, 173, 58, 129, 32, 0, 0000FFFFh, 2 +@@: + cmp roulBetType, 3 + jne @F + invoke DrawBoxBorder, 173, 93, 129, 32, 0, 0000FFFFh, 2 +@@: + cmp roulBetType, 4 + jne @F + invoke DrawBoxBorder, 173, 128, 64, 30, 0, 0000FFFFh, 2 +@@: + cmp roulBetType, 5 + jne draw_ro_footer + invoke DrawBoxBorder, 238, 128, 64, 30, 0, 0000FFFFh, 2 + +draw_ro_footer: + invoke DrawBoxBorder, 20, 180, 280, 42, 00101015h, 0000D7FFh, 1 + + cmp roulState, 2 + jne @F + invoke DrawString8x8, 28, 186, OFFSET textResult3D, 0000D7FFh + invoke FormatNumber, roulWinningNum, OFFSET hudNumBuffer + invoke DrawString8x8, 85, 186, OFFSET hudNumBuffer, 0000FFFFh + invoke DrawString8x8, 130, 186, OFFSET roulOutcomeMsg, 0050FF50h +@@: + invoke DrawString8x8, 28, 202, OFFSET textSpin3D, 00A0A0A0h + ret +RenderRouletteGame ENDP + +IsNumberRed PROC + mov eax, roulWinningNum + cmp eax, 1 + je red_yes + cmp eax, 3 + je red_yes + cmp eax, 5 + je red_yes + cmp eax, 7 + je red_yes + cmp eax, 9 + je red_yes + cmp eax, 12 + je red_yes + cmp eax, 14 + je red_yes + cmp eax, 16 + je red_yes + cmp eax, 18 + je red_yes + cmp eax, 19 + je red_yes + cmp eax, 21 + je red_yes + cmp eax, 23 + je red_yes + cmp eax, 25 + je red_yes + cmp eax, 27 + je red_yes + cmp eax, 30 + je red_yes + cmp eax, 32 + je red_yes + cmp eax, 34 + je red_yes + cmp eax, 36 + je red_yes + xor eax, eax + ret +red_yes: + mov eax, 1 + ret +IsNumberRed ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: BAR & SHOP +; ============================================================================== +HandleShopInput PROC uses ebx esi + xor esi, esi +shop_choice: + inc esi + lea eax, [esi+30h] + invoke Pressed3D, eax + test eax, eax + jnz shop_chosen + cmp esi, 3 + jb shop_choice + ret +shop_chosen: + bt ownedBacks3D, esi + jc shop_equip + mov ebx, 1500 + cmp esi, 1 + jne @F + mov ebx, 1000 +@@: + cmp bankroll, ebx + jb shop_no_money + sub bankroll, ebx + bts ownedBacks3D, esi +shop_equip: + mov selectedBack3D, esi + invoke CopyString3D, OFFSET textBought3D, OFFSET shopMsg + call SaveProgress3D + ret +shop_no_money: + invoke CopyString3D, OFFSET textNoCash3D, OFFSET shopMsg + ret +HandleShopInput ENDP + +RenderShopGame PROC + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 00150A0Ah + invoke DrawBoxBorder, 10, 10, 300, 220, 00251515h, 0000D7FFh, 3 + invoke DrawString8x8, 25, 20, OFFSET textShop3D, 0000D7FFh + + invoke DrawBoxBorder, 20, 40, 280, 32, 001A1010h, 00FFFFFFh, 1 + invoke DrawString8x8, 28, 46, OFFSET textItem1_3D, 0000FFFFh + invoke DrawString8x8, 28, 58, OFFSET textShopHint3D, 00A0A0A0h + + invoke DrawBoxBorder, 20, 80, 280, 32, 001A1010h, 00FFFFFFh, 1 + invoke DrawString8x8, 28, 86, OFFSET textItem2_3D, 0000FFFFh + invoke DrawString8x8, 28, 98, OFFSET textShopHint3D, 00A0A0A0h + + invoke DrawBoxBorder, 20, 120, 280, 32, 001A1010h, 00FFFFFFh, 1 + invoke DrawString8x8, 28, 126, OFFSET textItem3_3D, 0000FFFFh + invoke DrawString8x8, 28, 138, OFFSET textShopHint3D, 00A0A0A0h + + invoke DrawBoxBorder, 20, 165, 280, 55, 00100A0Ah, 0000D7FFh, 1 + invoke DrawString8x8, 28, 172, OFFSET textBank3D, 0000D7FFh + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 110, 172, OFFSET hudNumBuffer, 0000FFFFh + + cmp BYTE PTR [shopMsg], 0 + je @F + invoke DrawString8x8, 28, 188, OFFSET shopMsg, 0050FF50h +@@: + invoke DrawString8x8, 28, 204, OFFSET textBack3D, 00A0A0A0h + ret +RenderShopGame ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: ATM TERMINAL +; ============================================================================== +HandleATMInput PROC + ret +HandleATMInput ENDP + +RenderATMGame PROC + invoke DrawBox, 0, 0, 320, 240, 00172120h + invoke DrawString8x8, 24, 30, OFFSET textATM3D, 00D8BC6Ah + invoke DrawString8x8, 24, 70, OFFSET textBank3D, 00FFFFFFh + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 96, 70, OFFSET hudNumBuffer, 0089DAB2h + invoke DrawString8x8, 24, 115, OFFSET textATMNote3D, 00B7C8C1h + invoke DrawString8x8, 24, 140, OFFSET textATMNote2_3D, 00B7C8C1h + invoke DrawString8x8, 24, 208, OFFSET textBack3D, 00D8BC6Ah + ret +RenderATMGame ENDP + +; --- Player Input & Movement Physics --- +HandlePlayerInput PROC uses ebx esi edi + local speed:DWORD + local nextX:DWORD + local nextY:DWORD + mov eax, deltaTime3D + imul eax, 200 + mov speed, eax + cmp keys3D[10h], 0 + je @F + shl speed, 1 +@@: + mov eax, deltaTime3D + shr eax, 2 + inc eax + cmp keys3D[41h], 0 + jne input_turn_left + cmp keys3D[25h], 0 + je input_right +input_turn_left: + sub playerAngle, eax +input_right: + cmp keys3D[44h], 0 + jne input_turn_right + cmp keys3D[27h], 0 + je input_forward +input_turn_right: + add playerAngle, eax +input_forward: + and playerAngle, 511 + call UpdateCamera3D + xor edi, edi + cmp keys3D[57h], 0 + jne input_go_forward + cmp keys3D[26h], 0 + je input_back +input_go_forward: + inc edi +input_back: + cmp keys3D[53h], 0 + jne input_go_back + cmp keys3D[28h], 0 + je input_move +input_go_back: + dec edi +input_move: + test edi, edi + jz input_action + imul edi, speed + mov eax, playerDirX + imul edi + shrd eax, edx, 16 + add eax, playerX + mov nextX, eax + mov eax, playerDirY + imul edi + shrd eax, edx, 16 + add eax, playerY + mov nextY, eax + invoke CanWalk3D, nextX, playerY + test eax, eax + jz @F + mov eax, nextX + mov playerX, eax +@@: + invoke CanWalk3D, playerX, nextY + test eax, eax + jz input_action + mov eax, nextY + mov playerY, eax +input_action: + invoke Pressed3D, 45h + test eax, eax + jz @F + call Trigger3DInteraction +@@: + ret +HandlePlayerInput ENDP + +CheckInteractions PROC uses ebx esi edi + local nearest:DWORD + mov nearest, 262144 + mov interactTargetId, 0 + mov interactPromptPtr, 0 + xor esi, esi +interaction_scan: + cmp esi, NUM_SPRITES + jge interaction_done + imul edi, esi, SIZEOF SpriteObject + cmp [casinoSprites+edi].interactId, 0 + je interaction_next + mov eax, [casinoSprites+edi].posX + sub eax, playerX + sar eax, 8 + mov ebx, eax + imul eax, eax + mov ecx, eax + mov eax, [casinoSprites+edi].posY + sub eax, playerY + sar eax, 8 + mov edx, eax + imul eax, eax + add ecx, eax + cmp ecx, nearest + jae interaction_next + ; Only target objects in front of the camera. + mov eax, playerDirX + sar eax, 8 + imul eax, ebx + mov ebx, playerDirY + sar ebx, 8 + imul ebx, edx + add eax, ebx + cmp eax, 18000 + jl interaction_next + mov nearest, ecx + mov eax, [casinoSprites+edi].interactId + mov interactTargetId, eax + mov eax, [casinoSprites+edi].promptPtr + mov interactPromptPtr, eax +interaction_next: + inc esi + jmp interaction_scan +interaction_done: + ret +CheckInteractions ENDP + +Trigger3DInteraction PROC + mov eax, interactTargetId + test eax, eax + jz @F + + cmp eax, 8 ; DANCER + jne check_target_slots + cmp bankroll, 100 + jl dancer_no_cash + sub bankroll, 100 + inc dancerLuckBuff + ; Tips are cosmetic and must not silently change game odds. + invoke CopyString3D, OFFSET textTips3D, OFFSET flashMessage + mov flashTimer, 100 + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + ret +dancer_no_cash: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + ret + +check_target_slots: + cmp eax, 3 ; SLOTS + jne check_target_bj + mov engineMode, MODE_SLOTS + invoke PlaySoundA, OFFSET soundClick, 0, 1 + ret + +check_target_bj: + cmp eax, 1 ; BLACKJACK + jne check_target_roulette + mov engineMode, MODE_BLACKJACK + mov bjState, 0 + ret + +check_target_roulette: + cmp eax, 4 ; ROULETTE + jne check_target_shop + mov engineMode, MODE_ROULETTE + mov roulState, 0 + ret + +check_target_shop: + cmp eax, 6 ; SHOP + jne check_target_atm + mov engineMode, MODE_SHOP + ret + +check_target_atm: + cmp eax, 7 ; ATM + jne target_unported + mov engineMode, MODE_ATM + ret +target_unported: + invoke CopyString3D, OFFSET textUnavailable3D, OFFSET flashMessage + mov flashTimer, 150 +@@: + ret +Trigger3DInteraction ENDP + +; --- Engine Initialization --- +Init3DEngine PROC + local screenCX:DWORD + local screenCY:DWORD + local posX:DWORD + local posY:DWORD + local bytesRead:DWORD + + push ebx + push esi + push edi + + call Create3DWindow + test eax, eax + jz init_failed + call LoadTextures3D + test eax, eax + jz init_failed + +init_sprites_table: + ; Sprite 0: VIP Dancer 1 (Stage Left) + mov casinoSprites[0*SIZEOF SpriteObject].posX, (13 * FP_1 + FP_HALF) + mov casinoSprites[0*SIZEOF SpriteObject].posY, (4 * FP_1) + mov casinoSprites[0*SIZEOF SpriteObject].baseTexId, 10 + mov casinoSprites[0*SIZEOF SpriteObject].frameCount, 12 + mov casinoSprites[0*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[0*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[0*SIZEOF SpriteObject].animSpeed, 5 + mov casinoSprites[0*SIZEOF SpriteObject].interactId, 8 + mov casinoSprites[0*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer + + ; Sprite 1: VIP Dancer 2 (Center Stage Star) + mov casinoSprites[1*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) + mov casinoSprites[1*SIZEOF SpriteObject].posY, (3 * FP_1 + FP_HALF) + mov casinoSprites[1*SIZEOF SpriteObject].baseTexId, 10 + mov casinoSprites[1*SIZEOF SpriteObject].frameCount, 12 + mov casinoSprites[1*SIZEOF SpriteObject].curFrame, 2 + mov casinoSprites[1*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[1*SIZEOF SpriteObject].animSpeed, 5 + mov casinoSprites[1*SIZEOF SpriteObject].interactId, 8 + mov casinoSprites[1*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer + + ; Sprite 2: VIP Dancer 3 (Stage Right) + mov casinoSprites[2*SIZEOF SpriteObject].posX, (19 * FP_1 + FP_HALF) + mov casinoSprites[2*SIZEOF SpriteObject].posY, (4 * FP_1) + mov casinoSprites[2*SIZEOF SpriteObject].baseTexId, 10 + mov casinoSprites[2*SIZEOF SpriteObject].frameCount, 12 + mov casinoSprites[2*SIZEOF SpriteObject].curFrame, 1 + mov casinoSprites[2*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[2*SIZEOF SpriteObject].animSpeed, 5 + mov casinoSprites[2*SIZEOF SpriteObject].interactId, 8 + mov casinoSprites[2*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer + + ; Sprite 3: Blackjack Table with Dealer (Front Center Left) + mov casinoSprites[3*SIZEOF SpriteObject].posX, (12 * FP_1 + FP_HALF) + mov casinoSprites[3*SIZEOF SpriteObject].posY, (10 * FP_1) + mov casinoSprites[3*SIZEOF SpriteObject].baseTexId, 30 + mov casinoSprites[3*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[3*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[3*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[3*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[3*SIZEOF SpriteObject].interactId, 1 + mov casinoSprites[3*SIZEOF SpriteObject].promptPtr, OFFSET promptBlackjack + + ; Sprite 4: Roulette Table (Front Center) + mov casinoSprites[4*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) + mov casinoSprites[4*SIZEOF SpriteObject].posY, (10 * FP_1) + mov casinoSprites[4*SIZEOF SpriteObject].baseTexId, 31 + mov casinoSprites[4*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[4*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[4*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[4*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[4*SIZEOF SpriteObject].interactId, 4 + mov casinoSprites[4*SIZEOF SpriteObject].promptPtr, OFFSET promptRoulette + + ; Sprite 5: Poker Table (Front Center Right) + mov casinoSprites[5*SIZEOF SpriteObject].posX, (21 * FP_1) + mov casinoSprites[5*SIZEOF SpriteObject].posY, (10 * FP_1) + mov casinoSprites[5*SIZEOF SpriteObject].baseTexId, 30 + mov casinoSprites[5*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[5*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[5*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[5*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[5*SIZEOF SpriteObject].interactId, 1 + mov casinoSprites[5*SIZEOF SpriteObject].promptPtr, OFFSET promptPoker + + ; Sprite 6: Slot Machine 1 (West Arcade) + mov casinoSprites[6*SIZEOF SpriteObject].posX, (6 * FP_1) + mov casinoSprites[6*SIZEOF SpriteObject].posY, (8 * FP_1) + mov casinoSprites[6*SIZEOF SpriteObject].baseTexId, 24 + mov casinoSprites[6*SIZEOF SpriteObject].frameCount, 3 + mov casinoSprites[6*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[6*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[6*SIZEOF SpriteObject].animSpeed, 8 + mov casinoSprites[6*SIZEOF SpriteObject].interactId, 3 + mov casinoSprites[6*SIZEOF SpriteObject].promptPtr, OFFSET promptSlot1 + + ; Sprite 7: Slot Machine 2 (CloverPit) + mov casinoSprites[7*SIZEOF SpriteObject].posX, (6 * FP_1) + mov casinoSprites[7*SIZEOF SpriteObject].posY, (11 * FP_1) + mov casinoSprites[7*SIZEOF SpriteObject].baseTexId, 24 + mov casinoSprites[7*SIZEOF SpriteObject].frameCount, 3 + mov casinoSprites[7*SIZEOF SpriteObject].curFrame, 1 + mov casinoSprites[7*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[7*SIZEOF SpriteObject].animSpeed, 8 + mov casinoSprites[7*SIZEOF SpriteObject].interactId, 3 + mov casinoSprites[7*SIZEOF SpriteObject].promptPtr, OFFSET promptSlot2 + + ; Sprite 8: Slot Machine 3 + mov casinoSprites[8*SIZEOF SpriteObject].posX, (6 * FP_1) + mov casinoSprites[8*SIZEOF SpriteObject].posY, (14 * FP_1) + mov casinoSprites[8*SIZEOF SpriteObject].baseTexId, 24 + mov casinoSprites[8*SIZEOF SpriteObject].frameCount, 3 + mov casinoSprites[8*SIZEOF SpriteObject].curFrame, 2 + mov casinoSprites[8*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[8*SIZEOF SpriteObject].animSpeed, 8 + mov casinoSprites[8*SIZEOF SpriteObject].interactId, 3 + mov casinoSprites[8*SIZEOF SpriteObject].promptPtr, OFFSET promptSlot1 + + ; Sprite 9: Bartender / Bar Counter (East Wing) + mov casinoSprites[9*SIZEOF SpriteObject].posX, (26 * FP_1) + mov casinoSprites[9*SIZEOF SpriteObject].posY, (12 * FP_1) + mov casinoSprites[9*SIZEOF SpriteObject].baseTexId, 32 + mov casinoSprites[9*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[9*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[9*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[9*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[9*SIZEOF SpriteObject].interactId, 6 + mov casinoSprites[9*SIZEOF SpriteObject].promptPtr, OFFSET promptShop + + ; Sprite 10: ATM Bank Terminal (East Wing) + mov casinoSprites[10*SIZEOF SpriteObject].posX, (26 * FP_1) + mov casinoSprites[10*SIZEOF SpriteObject].posY, (16 * FP_1) + mov casinoSprites[10*SIZEOF SpriteObject].baseTexId, 33 + mov casinoSprites[10*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[10*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[10*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[10*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[10*SIZEOF SpriteObject].interactId, 7 + mov casinoSprites[10*SIZEOF SpriteObject].promptPtr, OFFSET promptATM + + ; Sprite 11: Underground Table (South Wing) + mov casinoSprites[11*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) + mov casinoSprites[11*SIZEOF SpriteObject].posY, (24 * FP_1) + mov casinoSprites[11*SIZEOF SpriteObject].baseTexId, 34 + mov casinoSprites[11*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[11*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[11*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[11*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[11*SIZEOF SpriteObject].interactId, 5 + mov casinoSprites[11*SIZEOF SpriteObject].promptPtr, OFFSET promptBackroom + + ; Sprite 12: Secret Demon Portal (South Wing) + mov casinoSprites[12*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) + mov casinoSprites[12*SIZEOF SpriteObject].posY, (29 * FP_1) + mov casinoSprites[12*SIZEOF SpriteObject].baseTexId, 4 + mov casinoSprites[12*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[12*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[12*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[12*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[12*SIZEOF SpriteObject].interactId, 9 + mov casinoSprites[12*SIZEOF SpriteObject].promptPtr, OFFSET promptHell + + mov eax, 1 + jmp init_return +init_failed: + xor eax, eax +init_return: + pop edi + pop esi + pop ebx + ret +Init3DEngine ENDP + +; --- Main Loop of the 3D Casino Engine --- +StartCasino3D PROC uses ebx esi edi + call Init3DEngine + test eax, eax + jz engine_shutdown + invoke GetTickCount + mov rngSeed3D, eax + mov previousTick3D, eax +engine_loop: + invoke PeekMessageA, OFFSET msg3D, 0, 0, 0, PM_REMOVE + test eax, eax + jz dispatch_frame + cmp msg3D.message, WM_QUIT + je engine_shutdown + invoke TranslateMessage, OFFSET msg3D + invoke DispatchMessageA, OFFSET msg3D + jmp engine_loop + +dispatch_frame: + invoke GetTickCount + mov frameStart3D, eax + sub eax, previousTick3D + cmp eax, 50 + jbe @F + mov eax, 50 +@@: + mov deltaTime3D, eax + mov eax, frameStart3D + mov previousTick3D, eax + invoke GetForegroundWindow + cmp eax, h3DWnd + jne engine_idle + invoke IsIconic, h3DWnd + test eax, eax + jnz engine_idle + invoke Pressed3D, 7Ah + test eax, eax + jz @F + call ToggleFullscreen3D +@@: + invoke Pressed3D, 1Bh + test eax, eax + jz engine_tick + cmp engineMode, MODE_WALK + jne leave_table + xor paused3D, 1 + jmp engine_tick +leave_table: + ; An already paid round cannot be skipped or settled twice. + cmp slotSpinState, 1 + je engine_tick + cmp roulState, 1 + je engine_tick + mov engineMode, MODE_WALK +engine_tick: + cmp paused3D, 0 + jne draw_pause + mov eax, deltaTime3D + add animationClock3D, eax + cmp engineMode, MODE_WALK + jne check_slots_mode + call UpdateCamera3D + call CheckInteractions + call HandlePlayerInput + call UpdateCamera3D + call RenderCeilingAndFloor + call RenderWalls + call RenderSprites + call RenderHUD + call RenderMinimap + jmp present_frame +check_slots_mode: + cmp engineMode, MODE_SLOTS + jne check_bj_mode + call HandleSlotsInput + call RenderSlotsGame + jmp present_frame +check_bj_mode: + cmp engineMode, MODE_BLACKJACK + jne check_roul_mode + call HandleBlackjackInput + call RenderBlackjackGame + jmp present_frame +check_roul_mode: + cmp engineMode, MODE_ROULETTE + jne check_shop_mode + call HandleRouletteInput + call RenderRouletteGame + jmp present_frame +check_shop_mode: + cmp engineMode, MODE_SHOP + jne check_atm_mode + call HandleShopInput + call RenderShopGame + jmp present_frame +check_atm_mode: + call HandleATMInput + call RenderATMGame + jmp present_frame +draw_pause: + invoke DrawBoxBorder, 65, 75, 190, 85, 00151C21h, 00D8BC6Ah, 2 + invoke DrawString8x8, 86, 88, OFFSET textPause3D, 00FFFFFFh + invoke DrawString8x8, 78, 111, OFFSET textResume3D, 00D8BC6Ah + invoke DrawString8x8, 78, 131, OFFSET textQuit3D, 00BBBBBBh + invoke Pressed3D, 51h + test eax, eax + jnz engine_shutdown +present_frame: + call Present3D + lea edi, pressedKeys3D + xor eax, eax + mov ecx, 64 + rep stosd + invoke GetTickCount + sub eax, frameStart3D + cmp eax, 16 + jae engine_loop + mov ecx, 16 + sub ecx, eax + invoke Sleep, ecx + jmp engine_loop +engine_idle: + invoke Sleep, 50 + jmp engine_loop +engine_shutdown: + call SaveProgress3D + cmp h3DDC, 0 + je @F + invoke ReleaseDC, h3DWnd, h3DDC + mov h3DDC, 0 +@@: + cmp h3DWnd, 0 + je @F + invoke DestroyWindow, h3DWnd + mov h3DWnd, 0 +@@: + ret +StartCasino3D ENDP + +include src_graphics\platform_code.inc diff --git a/casino3d_data.inc b/casino3d_data.inc new file mode 100644 index 0000000..4f93958 --- /dev/null +++ b/casino3d_data.inc @@ -0,0 +1,173 @@ +; --- CASINO 3D ENGINE DATA (Generated: Grand Open Hall) --- + +NUM_ANGLES equ 512 +MAP_WIDTH equ 32 +MAP_HEIGHT equ 32 + +.data +ALIGN 4 +tableCos dd 000010000h,00000FFFBh,00000FFECh,00000FFD4h,00000FFB1h,00000FF85h,00000FF4Eh,00000FF0Eh + dd 00000FEC4h,00000FE71h,00000FE13h,00000FDACh,00000FD3Bh,00000FCC0h,00000FC3Bh,00000FBADh + dd 00000FB15h,00000FA73h,00000F9C8h,00000F913h,00000F854h,00000F78Ch,00000F6BAh,00000F5DFh + dd 00000F4FAh,00000F40Ch,00000F314h,00000F213h,00000F109h,00000EFF5h,00000EED9h,00000EDB3h + dd 00000EC83h,00000EB4Bh,00000EA0Ah,00000E8BFh,00000E76Ch,00000E610h,00000E4AAh,00000E33Ch + dd 00000E1C6h,00000E046h,00000DEBEh,00000DD2Dh,00000DB94h,00000D9F2h,00000D848h,00000D696h + dd 00000D4DBh,00000D318h,00000D14Dh,00000CF7Ah,00000CD9Fh,00000CBBCh,00000C9D1h,00000C7DEh + dd 00000C5E4h,00000C3E2h,00000C1D8h,00000BFC7h,00000BDAFh,00000BB8Fh,00000B968h,00000B73Ah + dd 00000B505h,00000B2C9h,00000B086h,00000AE3Ch,00000ABEBh,00000A994h,00000A736h,00000A4D2h + dd 00000A268h,000009FF7h,000009D80h,000009B03h,000009880h,0000095F7h,000009368h,0000090D4h + dd 000008E3Ah,000008B9Ah,0000088F6h,00000864Ch,00000839Ch,0000080E8h,000007E2Fh,000007B70h + dd 0000078ADh,0000075E6h,00000731Ah,000007049h,000006D74h,000006A9Bh,0000067BEh,0000064DDh + dd 0000061F8h,000005F0Fh,000005C22h,000005932h,00000563Eh,000005348h,00000504Dh,000004D50h + dd 000004A50h,00000474Dh,000004447h,00000413Fh,000003E34h,000003B27h,000003817h,000003505h + dd 0000031F1h,000002EDCh,000002BC4h,0000028ABh,000002590h,000002274h,000001F56h,000001C38h + dd 000001918h,0000015F7h,0000012D5h,000000FB3h,000000C90h,00000096Ch,000000648h,000000324h + dd 000000000h,0FFFFFCDCh,0FFFFF9B8h,0FFFFF694h,0FFFFF370h,0FFFFF04Dh,0FFFFED2Bh,0FFFFEA09h + dd 0FFFFE6E8h,0FFFFE3C8h,0FFFFE0AAh,0FFFFDD8Ch,0FFFFDA70h,0FFFFD755h,0FFFFD43Ch,0FFFFD124h + dd 0FFFFCE0Fh,0FFFFCAFBh,0FFFFC7E9h,0FFFFC4D9h,0FFFFC1CCh,0FFFFBEC1h,0FFFFBBB9h,0FFFFB8B3h + dd 0FFFFB5B0h,0FFFFB2B0h,0FFFFAFB3h,0FFFFACB8h,0FFFFA9C2h,0FFFFA6CEh,0FFFFA3DEh,0FFFFA0F1h + dd 0FFFF9E08h,0FFFF9B23h,0FFFF9842h,0FFFF9565h,0FFFF928Ch,0FFFF8FB7h,0FFFF8CE6h,0FFFF8A1Ah + dd 0FFFF8753h,0FFFF8490h,0FFFF81D1h,0FFFF7F18h,0FFFF7C64h,0FFFF79B4h,0FFFF770Ah,0FFFF7466h + dd 0FFFF71C6h,0FFFF6F2Ch,0FFFF6C98h,0FFFF6A09h,0FFFF6780h,0FFFF64FDh,0FFFF6280h,0FFFF6009h + dd 0FFFF5D98h,0FFFF5B2Eh,0FFFF58CAh,0FFFF566Ch,0FFFF5415h,0FFFF51C4h,0FFFF4F7Ah,0FFFF4D37h + dd 0FFFF4AFBh,0FFFF48C6h,0FFFF4698h,0FFFF4471h,0FFFF4251h,0FFFF4039h,0FFFF3E28h,0FFFF3C1Eh + dd 0FFFF3A1Ch,0FFFF3822h,0FFFF362Fh,0FFFF3444h,0FFFF3261h,0FFFF3086h,0FFFF2EB3h,0FFFF2CE8h + dd 0FFFF2B25h,0FFFF296Ah,0FFFF27B8h,0FFFF260Eh,0FFFF246Ch,0FFFF22D3h,0FFFF2142h,0FFFF1FBAh + dd 0FFFF1E3Ah,0FFFF1CC4h,0FFFF1B56h,0FFFF19F0h,0FFFF1894h,0FFFF1741h,0FFFF15F6h,0FFFF14B5h + dd 0FFFF137Dh,0FFFF124Dh,0FFFF1127h,0FFFF100Bh,0FFFF0EF7h,0FFFF0DEDh,0FFFF0CECh,0FFFF0BF4h + dd 0FFFF0B06h,0FFFF0A21h,0FFFF0946h,0FFFF0874h,0FFFF07ACh,0FFFF06EDh,0FFFF0638h,0FFFF058Dh + dd 0FFFF04EBh,0FFFF0453h,0FFFF03C5h,0FFFF0340h,0FFFF02C5h,0FFFF0254h,0FFFF01EDh,0FFFF018Fh + dd 0FFFF013Ch,0FFFF00F2h,0FFFF00B2h,0FFFF007Bh,0FFFF004Fh,0FFFF002Ch,0FFFF0014h,0FFFF0005h + dd 0FFFF0000h,0FFFF0005h,0FFFF0014h,0FFFF002Ch,0FFFF004Fh,0FFFF007Bh,0FFFF00B2h,0FFFF00F2h + dd 0FFFF013Ch,0FFFF018Fh,0FFFF01EDh,0FFFF0254h,0FFFF02C5h,0FFFF0340h,0FFFF03C5h,0FFFF0453h + dd 0FFFF04EBh,0FFFF058Dh,0FFFF0638h,0FFFF06EDh,0FFFF07ACh,0FFFF0874h,0FFFF0946h,0FFFF0A21h + dd 0FFFF0B06h,0FFFF0BF4h,0FFFF0CECh,0FFFF0DEDh,0FFFF0EF7h,0FFFF100Bh,0FFFF1127h,0FFFF124Dh + dd 0FFFF137Dh,0FFFF14B5h,0FFFF15F6h,0FFFF1741h,0FFFF1894h,0FFFF19F0h,0FFFF1B56h,0FFFF1CC4h + dd 0FFFF1E3Ah,0FFFF1FBAh,0FFFF2142h,0FFFF22D3h,0FFFF246Ch,0FFFF260Eh,0FFFF27B8h,0FFFF296Ah + dd 0FFFF2B25h,0FFFF2CE8h,0FFFF2EB3h,0FFFF3086h,0FFFF3261h,0FFFF3444h,0FFFF362Fh,0FFFF3822h + dd 0FFFF3A1Ch,0FFFF3C1Eh,0FFFF3E28h,0FFFF4039h,0FFFF4251h,0FFFF4471h,0FFFF4698h,0FFFF48C6h + dd 0FFFF4AFBh,0FFFF4D37h,0FFFF4F7Ah,0FFFF51C4h,0FFFF5415h,0FFFF566Ch,0FFFF58CAh,0FFFF5B2Eh + dd 0FFFF5D98h,0FFFF6009h,0FFFF6280h,0FFFF64FDh,0FFFF6780h,0FFFF6A09h,0FFFF6C98h,0FFFF6F2Ch + dd 0FFFF71C6h,0FFFF7466h,0FFFF770Ah,0FFFF79B4h,0FFFF7C64h,0FFFF7F18h,0FFFF81D1h,0FFFF8490h + dd 0FFFF8753h,0FFFF8A1Ah,0FFFF8CE6h,0FFFF8FB7h,0FFFF928Ch,0FFFF9565h,0FFFF9842h,0FFFF9B23h + dd 0FFFF9E08h,0FFFFA0F1h,0FFFFA3DEh,0FFFFA6CEh,0FFFFA9C2h,0FFFFACB8h,0FFFFAFB3h,0FFFFB2B0h + dd 0FFFFB5B0h,0FFFFB8B3h,0FFFFBBB9h,0FFFFBEC1h,0FFFFC1CCh,0FFFFC4D9h,0FFFFC7E9h,0FFFFCAFBh + dd 0FFFFCE0Fh,0FFFFD124h,0FFFFD43Ch,0FFFFD755h,0FFFFDA70h,0FFFFDD8Ch,0FFFFE0AAh,0FFFFE3C8h + dd 0FFFFE6E8h,0FFFFEA09h,0FFFFED2Bh,0FFFFF04Dh,0FFFFF370h,0FFFFF694h,0FFFFF9B8h,0FFFFFCDCh + dd 000000000h,000000324h,000000648h,00000096Ch,000000C90h,000000FB3h,0000012D5h,0000015F7h + dd 000001918h,000001C38h,000001F56h,000002274h,000002590h,0000028ABh,000002BC4h,000002EDCh + dd 0000031F1h,000003505h,000003817h,000003B27h,000003E34h,00000413Fh,000004447h,00000474Dh + dd 000004A50h,000004D50h,00000504Dh,000005348h,00000563Eh,000005932h,000005C22h,000005F0Fh + dd 0000061F8h,0000064DDh,0000067BEh,000006A9Bh,000006D74h,000007049h,00000731Ah,0000075E6h + dd 0000078ADh,000007B70h,000007E2Fh,0000080E8h,00000839Ch,00000864Ch,0000088F6h,000008B9Ah + dd 000008E3Ah,0000090D4h,000009368h,0000095F7h,000009880h,000009B03h,000009D80h,000009FF7h + dd 00000A268h,00000A4D2h,00000A736h,00000A994h,00000ABEBh,00000AE3Ch,00000B086h,00000B2C9h + dd 00000B505h,00000B73Ah,00000B968h,00000BB8Fh,00000BDAFh,00000BFC7h,00000C1D8h,00000C3E2h + dd 00000C5E4h,00000C7DEh,00000C9D1h,00000CBBCh,00000CD9Fh,00000CF7Ah,00000D14Dh,00000D318h + dd 00000D4DBh,00000D696h,00000D848h,00000D9F2h,00000DB94h,00000DD2Dh,00000DEBEh,00000E046h + dd 00000E1C6h,00000E33Ch,00000E4AAh,00000E610h,00000E76Ch,00000E8BFh,00000EA0Ah,00000EB4Bh + dd 00000EC83h,00000EDB3h,00000EED9h,00000EFF5h,00000F109h,00000F213h,00000F314h,00000F40Ch + dd 00000F4FAh,00000F5DFh,00000F6BAh,00000F78Ch,00000F854h,00000F913h,00000F9C8h,00000FA73h + dd 00000FB15h,00000FBADh,00000FC3Bh,00000FCC0h,00000FD3Bh,00000FDACh,00000FE13h,00000FE71h + dd 00000FEC4h,00000FF0Eh,00000FF4Eh,00000FF85h,00000FFB1h,00000FFD4h,00000FFECh,00000FFFBh + +ALIGN 4 +tableSin dd 000000000h,000000324h,000000648h,00000096Ch,000000C90h,000000FB3h,0000012D5h,0000015F7h + dd 000001918h,000001C38h,000001F56h,000002274h,000002590h,0000028ABh,000002BC4h,000002EDCh + dd 0000031F1h,000003505h,000003817h,000003B27h,000003E34h,00000413Fh,000004447h,00000474Dh + dd 000004A50h,000004D50h,00000504Dh,000005348h,00000563Eh,000005932h,000005C22h,000005F0Fh + dd 0000061F8h,0000064DDh,0000067BEh,000006A9Bh,000006D74h,000007049h,00000731Ah,0000075E6h + dd 0000078ADh,000007B70h,000007E2Fh,0000080E8h,00000839Ch,00000864Ch,0000088F6h,000008B9Ah + dd 000008E3Ah,0000090D4h,000009368h,0000095F7h,000009880h,000009B03h,000009D80h,000009FF7h + dd 00000A268h,00000A4D2h,00000A736h,00000A994h,00000ABEBh,00000AE3Ch,00000B086h,00000B2C9h + dd 00000B505h,00000B73Ah,00000B968h,00000BB8Fh,00000BDAFh,00000BFC7h,00000C1D8h,00000C3E2h + dd 00000C5E4h,00000C7DEh,00000C9D1h,00000CBBCh,00000CD9Fh,00000CF7Ah,00000D14Dh,00000D318h + dd 00000D4DBh,00000D696h,00000D848h,00000D9F2h,00000DB94h,00000DD2Dh,00000DEBEh,00000E046h + dd 00000E1C6h,00000E33Ch,00000E4AAh,00000E610h,00000E76Ch,00000E8BFh,00000EA0Ah,00000EB4Bh + dd 00000EC83h,00000EDB3h,00000EED9h,00000EFF5h,00000F109h,00000F213h,00000F314h,00000F40Ch + dd 00000F4FAh,00000F5DFh,00000F6BAh,00000F78Ch,00000F854h,00000F913h,00000F9C8h,00000FA73h + dd 00000FB15h,00000FBADh,00000FC3Bh,00000FCC0h,00000FD3Bh,00000FDACh,00000FE13h,00000FE71h + dd 00000FEC4h,00000FF0Eh,00000FF4Eh,00000FF85h,00000FFB1h,00000FFD4h,00000FFECh,00000FFFBh + dd 000010000h,00000FFFBh,00000FFECh,00000FFD4h,00000FFB1h,00000FF85h,00000FF4Eh,00000FF0Eh + dd 00000FEC4h,00000FE71h,00000FE13h,00000FDACh,00000FD3Bh,00000FCC0h,00000FC3Bh,00000FBADh + dd 00000FB15h,00000FA73h,00000F9C8h,00000F913h,00000F854h,00000F78Ch,00000F6BAh,00000F5DFh + dd 00000F4FAh,00000F40Ch,00000F314h,00000F213h,00000F109h,00000EFF5h,00000EED9h,00000EDB3h + dd 00000EC83h,00000EB4Bh,00000EA0Ah,00000E8BFh,00000E76Ch,00000E610h,00000E4AAh,00000E33Ch + dd 00000E1C6h,00000E046h,00000DEBEh,00000DD2Dh,00000DB94h,00000D9F2h,00000D848h,00000D696h + dd 00000D4DBh,00000D318h,00000D14Dh,00000CF7Ah,00000CD9Fh,00000CBBCh,00000C9D1h,00000C7DEh + dd 00000C5E4h,00000C3E2h,00000C1D8h,00000BFC7h,00000BDAFh,00000BB8Fh,00000B968h,00000B73Ah + dd 00000B505h,00000B2C9h,00000B086h,00000AE3Ch,00000ABEBh,00000A994h,00000A736h,00000A4D2h + dd 00000A268h,000009FF7h,000009D80h,000009B03h,000009880h,0000095F7h,000009368h,0000090D4h + dd 000008E3Ah,000008B9Ah,0000088F6h,00000864Ch,00000839Ch,0000080E8h,000007E2Fh,000007B70h + dd 0000078ADh,0000075E6h,00000731Ah,000007049h,000006D74h,000006A9Bh,0000067BEh,0000064DDh + dd 0000061F8h,000005F0Fh,000005C22h,000005932h,00000563Eh,000005348h,00000504Dh,000004D50h + dd 000004A50h,00000474Dh,000004447h,00000413Fh,000003E34h,000003B27h,000003817h,000003505h + dd 0000031F1h,000002EDCh,000002BC4h,0000028ABh,000002590h,000002274h,000001F56h,000001C38h + dd 000001918h,0000015F7h,0000012D5h,000000FB3h,000000C90h,00000096Ch,000000648h,000000324h + dd 000000000h,0FFFFFCDCh,0FFFFF9B8h,0FFFFF694h,0FFFFF370h,0FFFFF04Dh,0FFFFED2Bh,0FFFFEA09h + dd 0FFFFE6E8h,0FFFFE3C8h,0FFFFE0AAh,0FFFFDD8Ch,0FFFFDA70h,0FFFFD755h,0FFFFD43Ch,0FFFFD124h + dd 0FFFFCE0Fh,0FFFFCAFBh,0FFFFC7E9h,0FFFFC4D9h,0FFFFC1CCh,0FFFFBEC1h,0FFFFBBB9h,0FFFFB8B3h + dd 0FFFFB5B0h,0FFFFB2B0h,0FFFFAFB3h,0FFFFACB8h,0FFFFA9C2h,0FFFFA6CEh,0FFFFA3DEh,0FFFFA0F1h + dd 0FFFF9E08h,0FFFF9B23h,0FFFF9842h,0FFFF9565h,0FFFF928Ch,0FFFF8FB7h,0FFFF8CE6h,0FFFF8A1Ah + dd 0FFFF8753h,0FFFF8490h,0FFFF81D1h,0FFFF7F18h,0FFFF7C64h,0FFFF79B4h,0FFFF770Ah,0FFFF7466h + dd 0FFFF71C6h,0FFFF6F2Ch,0FFFF6C98h,0FFFF6A09h,0FFFF6780h,0FFFF64FDh,0FFFF6280h,0FFFF6009h + dd 0FFFF5D98h,0FFFF5B2Eh,0FFFF58CAh,0FFFF566Ch,0FFFF5415h,0FFFF51C4h,0FFFF4F7Ah,0FFFF4D37h + dd 0FFFF4AFBh,0FFFF48C6h,0FFFF4698h,0FFFF4471h,0FFFF4251h,0FFFF4039h,0FFFF3E28h,0FFFF3C1Eh + dd 0FFFF3A1Ch,0FFFF3822h,0FFFF362Fh,0FFFF3444h,0FFFF3261h,0FFFF3086h,0FFFF2EB3h,0FFFF2CE8h + dd 0FFFF2B25h,0FFFF296Ah,0FFFF27B8h,0FFFF260Eh,0FFFF246Ch,0FFFF22D3h,0FFFF2142h,0FFFF1FBAh + dd 0FFFF1E3Ah,0FFFF1CC4h,0FFFF1B56h,0FFFF19F0h,0FFFF1894h,0FFFF1741h,0FFFF15F6h,0FFFF14B5h + dd 0FFFF137Dh,0FFFF124Dh,0FFFF1127h,0FFFF100Bh,0FFFF0EF7h,0FFFF0DEDh,0FFFF0CECh,0FFFF0BF4h + dd 0FFFF0B06h,0FFFF0A21h,0FFFF0946h,0FFFF0874h,0FFFF07ACh,0FFFF06EDh,0FFFF0638h,0FFFF058Dh + dd 0FFFF04EBh,0FFFF0453h,0FFFF03C5h,0FFFF0340h,0FFFF02C5h,0FFFF0254h,0FFFF01EDh,0FFFF018Fh + dd 0FFFF013Ch,0FFFF00F2h,0FFFF00B2h,0FFFF007Bh,0FFFF004Fh,0FFFF002Ch,0FFFF0014h,0FFFF0005h + dd 0FFFF0000h,0FFFF0005h,0FFFF0014h,0FFFF002Ch,0FFFF004Fh,0FFFF007Bh,0FFFF00B2h,0FFFF00F2h + dd 0FFFF013Ch,0FFFF018Fh,0FFFF01EDh,0FFFF0254h,0FFFF02C5h,0FFFF0340h,0FFFF03C5h,0FFFF0453h + dd 0FFFF04EBh,0FFFF058Dh,0FFFF0638h,0FFFF06EDh,0FFFF07ACh,0FFFF0874h,0FFFF0946h,0FFFF0A21h + dd 0FFFF0B06h,0FFFF0BF4h,0FFFF0CECh,0FFFF0DEDh,0FFFF0EF7h,0FFFF100Bh,0FFFF1127h,0FFFF124Dh + dd 0FFFF137Dh,0FFFF14B5h,0FFFF15F6h,0FFFF1741h,0FFFF1894h,0FFFF19F0h,0FFFF1B56h,0FFFF1CC4h + dd 0FFFF1E3Ah,0FFFF1FBAh,0FFFF2142h,0FFFF22D3h,0FFFF246Ch,0FFFF260Eh,0FFFF27B8h,0FFFF296Ah + dd 0FFFF2B25h,0FFFF2CE8h,0FFFF2EB3h,0FFFF3086h,0FFFF3261h,0FFFF3444h,0FFFF362Fh,0FFFF3822h + dd 0FFFF3A1Ch,0FFFF3C1Eh,0FFFF3E28h,0FFFF4039h,0FFFF4251h,0FFFF4471h,0FFFF4698h,0FFFF48C6h + dd 0FFFF4AFBh,0FFFF4D37h,0FFFF4F7Ah,0FFFF51C4h,0FFFF5415h,0FFFF566Ch,0FFFF58CAh,0FFFF5B2Eh + dd 0FFFF5D98h,0FFFF6009h,0FFFF6280h,0FFFF64FDh,0FFFF6780h,0FFFF6A09h,0FFFF6C98h,0FFFF6F2Ch + dd 0FFFF71C6h,0FFFF7466h,0FFFF770Ah,0FFFF79B4h,0FFFF7C64h,0FFFF7F18h,0FFFF81D1h,0FFFF8490h + dd 0FFFF8753h,0FFFF8A1Ah,0FFFF8CE6h,0FFFF8FB7h,0FFFF928Ch,0FFFF9565h,0FFFF9842h,0FFFF9B23h + dd 0FFFF9E08h,0FFFFA0F1h,0FFFFA3DEh,0FFFFA6CEh,0FFFFA9C2h,0FFFFACB8h,0FFFFAFB3h,0FFFFB2B0h + dd 0FFFFB5B0h,0FFFFB8B3h,0FFFFBBB9h,0FFFFBEC1h,0FFFFC1CCh,0FFFFC4D9h,0FFFFC7E9h,0FFFFCAFBh + dd 0FFFFCE0Fh,0FFFFD124h,0FFFFD43Ch,0FFFFD755h,0FFFFDA70h,0FFFFDD8Ch,0FFFFE0AAh,0FFFFE3C8h + dd 0FFFFE6E8h,0FFFFEA09h,0FFFFED2Bh,0FFFFF04Dh,0FFFFF370h,0FFFFF694h,0FFFFF9B8h,0FFFFFCDCh + +ALIGN 4 +casinoMap db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + db 1,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,1 + db 1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1 + db 1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1 + db 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,1 + db 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,1 + db 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,1 + db 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,1 + db 1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1 + db 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,1 + db 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,1 + db 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,1 + db 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,1 + db 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,3,1 + db 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,3,3,1 + db 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,3,3,1 + db 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,3,3,1 + db 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,3,3,1 + db 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,3,3,1 + db 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,3,1 + db 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,1 + db 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,1 + db 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,1 + db 1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1 + db 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,1 + db 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,1 + db 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,1 + db 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,1 + db 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,1 + db 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,1 + db 1,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,1 + db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + diff --git a/docs/KNOWN_LIMITATIONS.txt b/docs/KNOWN_LIMITATIONS.txt new file mode 100644 index 0000000..37ad7aa --- /dev/null +++ b/docs/KNOWN_LIMITATIONS.txt @@ -0,0 +1,18 @@ +ASSEMBLER CASINO - KNOWN LIMITATIONS +==================================== + +1. Игра официально Windows-only. + Это связано с MASM32, WinAPI, winmm, MCI и консолью Windows. + +2. Linux/macOS возможны через Wine/CrossOver/Whisky. + Это сохраняет идею "ассемблерного казино", но не гарантирует идеальную работу звука и вторых окон. + +3. Тяжелые ANSI-анимации зависят от скорости консоли. + На слабых ПК лучше использовать профиль Adaptive или Stable. + +4. Онлайн пока доступен для дружеских костей и русской рулетки 1v1 через Radmin VPN. + Host/Join и TCP-сокеты Winsock встроены в poker.exe; общего сервера, + синхронизации аккаунтов и сетевых карточных игр пока нет. + +5. Дурак - самая рискованная игра по логике. + Перед релизом обязательно руками проверить подкидывание, перевод, бито и завершение партии. diff --git a/docs/ONLINE_RADMIN.txt b/docs/ONLINE_RADMIN.txt new file mode 100644 index 0000000..6c422fe --- /dev/null +++ b/docs/ONLINE_RADMIN.txt @@ -0,0 +1,21 @@ +ASSEMBLER CASINO - ONLINE DICE VIA RADMIN VPN +============================================== + +This mode is a small built-in LAN match. It does not install a server, +service, database, or extra executable. + +1. Both players install and join the same Radmin VPN network. +2. Host starts the casino and selects: 20. Online Casino (Radmin). +3. Host selects: 1. Host room, then chooses Dice or Russian Roulette. +4. Host sends the Radmin IPv4 address to the friend. The port is 27015. +5. Friend selects: 20. Online Casino (Radmin) -> 2. Join room, + then enters the host Radmin IPv4 address. + +The host application itself is the room only while the match is open. +After the match it closes the network socket. No shared account balance is +used yet: these are friendly 1v1 matches and do not alter saved money. + +In Russian Roulette the host owns the hidden chamber state. The joining player +only sends the trigger action, so both computers always see the same outcome. + +If Windows Firewall asks for permission, allow poker.exe on private networks. diff --git a/docs/README_RELEASE.txt b/docs/README_RELEASE.txt new file mode 100644 index 0000000..ecaf99b --- /dev/null +++ b/docs/README_RELEASE.txt @@ -0,0 +1,54 @@ +ASSEMBLER CASINO - RELEASE NOTES +================================ + +Статус платформ +--------------- +Основная версия: Windows x86/x64. +Игра написана на MASM32 и использует WinAPI, WinMM, MCI, консоль Windows и .exe-окружение. + +Linux/macOS: +Нативной версии пока нет, потому что тогда пришлось бы переписывать системный слой под другой ассемблер и другие API. +Реальный вариант запуска без потери идеи "Assembler Casino" - Wine / CrossOver / Whisky. + +Рекомендуемый запуск +-------------------- +Windows: +1. Запустить PokerGameSetup.exe. +2. Выбрать папку установки. +3. Запускать игру через ярлык "Assembler Casino" на рабочем столе. + +Linux: +1. Установить Wine. +2. Запустить: wine "Assembler Casino.exe" +3. Если звуки или вторые окна работают нестабильно, в настройках игры выбрать профиль анимаций Adaptive или Stable. + +macOS: +1. Использовать CrossOver или Whisky. +2. Запустить "Assembler Casino.exe" внутри bottle. +3. Для слабых Mac или старых ноутбуков выбрать профиль Adaptive / Stable. + +Профили анимаций +---------------- +Cinematic - рисует все кадры. Лучший вид, максимальная нагрузка. +Adaptive - пропускает часть кадров, но сцены остаются примерно той же длительности. +Stable - еще меньше перерисовок, меньше ряби на слабых ПК. + +Важно: +Hakari, DBD, Mambo и интро не отключаются профилем. Профиль только уменьшает количество перерисовок. + +Что входит в релиз +------------------ +Assembler Casino.exe - красивый лаунчер. +bin/poker.exe - сама MASM32-игра. +assets/ - звуки, анимации, музыка, иконка. +tools/ - вспомогательные окна и preview-скрипты. +docs/ - документация. +Uninstall Assembler Casino.exe - красивый удалятор. + +Сохранения +---------- +Сохранения аккаунтов лежат в AppData: +%APPDATA%\AssemblerCasino + +Удалятор может удалить и игру, и сохранения, если отметить соответствующий пункт. + diff --git a/docs/RELEASE_CHECKLIST.txt b/docs/RELEASE_CHECKLIST.txt new file mode 100644 index 0000000..1985132 --- /dev/null +++ b/docs/RELEASE_CHECKLIST.txt @@ -0,0 +1,60 @@ +ASSEMBLER CASINO - RELEASE CHECKLIST +==================================== + +Перед отдачей сборки проверить: + +[ ] Запустить tools\release_smoke_check.ps1 и получить "Release smoke check passed." +[ ] PokerGameSetup.exe запускается без ошибки. +[ ] Установщик ставит игру в выбранную папку. +[ ] На рабочем столе появляется ярлык Assembler Casino с казино-иконкой. +[ ] Assembler Casino.exe запускает bin/poker.exe. +[ ] Uninstall Assembler Casino.exe удаляет игру. +[ ] В Windows "Приложения и возможности" есть Assembler Casino. +[ ] Удалятор удаляет ярлык с рабочего стола. + +Основной запуск: + +[ ] Интро запускается и Enter его пропускает. +[ ] Можно создать новый аккаунт. +[ ] Можно войти в существующий аккаунт. +[ ] Банк, статистика и покупки сохраняются после перезапуска. +[ ] При банкротстве программа не закрывается мгновенно. +[ ] Победа при достижении цели банка работает. + +Настройки: + +[ ] Громкость 0-10 меняется. +[ ] Профиль Cinematic показывает все кадры. +[ ] Профиль Adaptive уменьшает рябь. +[ ] Профиль Stable не отключает Hakari/DBD, а только снижает перерисовку. +[ ] Переключатели интро и DBD-окна работают отдельно. + +Игры: + +[ ] 21 / Очко: добор, стоп, вскрытие AI, результат. +[ ] Poker: фолд, ставки, повышение, комбинации. +[ ] CloverPit: 5x3, комбинации, линии выигрыша, Hakari на jackpot. +[ ] Russian Roulette: уровни, звуки, результат. +[ ] Черепа и шарик: шарик не теряется, перемешивание понятно. +[ ] Орел/решка: звук и анимация броска. +[ ] Кости: ставка и результат. +[ ] Казино-рулетка: число/цвет совпадают с результатом. +[ ] Slot machine: старая слот-машина отдельно от CloverPit. +[ ] Дурак: партия завершается, нет зависания после выбора карты. +[ ] Крючок / Skill Check: шкала двигается, успех/провал работает, второе окно закрывается. +[ ] Buckshot Roulette: зарядка, выстрел, предметы/ходы не ломаются. + +Секреты и сервис: + +[ ] Чит-коды вводятся вместо ставки/в меню и не ломают обычный ввод ставки. +[ ] Удаленные MAMBO1-4 не лежат в assets/animations и не попадают в установщик. +[ ] Достижения открываются и всплывающее окно не съезжает. +[ ] Магазин применяет купленные рубашки. +[ ] Бестиарий возвращает в Бестиарий, а не в магазин. +[ ] Таблицы лидеров читают доступные аккаунты. + +Слабый ПК: + +[ ] На Stable интро и большие анимации не превращаются в сильную рябь. +[ ] DBD-окно не мигает через Clear-Host каждый кадр. +[ ] Звук не запускается десятки раз подряд на одной анимации. diff --git a/docs/ROADMAP.txt b/docs/ROADMAP.txt new file mode 100644 index 0000000..7c5a63f --- /dev/null +++ b/docs/ROADMAP.txt @@ -0,0 +1,74 @@ +ASSEMBLER CASINO - ROADMAP +========================== + +Ближайший релиз +--------------- +1. Ручной прогон всех игр по RELEASE_CHECKLIST.txt. +2. Проверка Дурака на зависания после выбора карты, подкидывания и "бито". +3. Проверка Skill Check: второе окно, закрытие окна, успех/провал. +4. Проверка Hakari после jackpot. +5. Проверка сохранений и магазина. +6. Финальная упаковка PokerGameSetup.exe. + +Защита +------ +1. Установщик уже проверяет SHA-256 payload. +2. Лаунчер проверяет SHA-256 bin/poker.exe перед запуском. +3. Сохранения пишутся с checksum/signature и проверяются при загрузке. +4. В будущем: Authenticode-подпись exe-файлов через signtool. + +Онлайн-режим +------------ +Идея: Online Casino через Host / Join. + +Техническая база: +1. Winsock TCP. +2. Один игрок создает комнату и становится host/server. +3. Остальные подключаются по IP, например через Radmin VPN. +4. Host хранит колоду, банк, очередь ходов и состояние игры. +5. Клиенты отправляют команды, а не "свои карты". + +Пример команд: +BET 500 +HIT +STAND +FOLD +RAISE 1000 +PLAY_CARD 3 +READY +CHAT text + +Порядок разработки: +1. [Готово] Online Casino: встроенные Host / Join и выбор режима через Radmin VPN. +2. [Готово] Online Dice 1v1. +3. [Готово] Online Russian Roulette 1v1 с барабаном на стороне хоста. +4. Online lobby: имена игроков и ready. +5. Online 21. +6. Online Poker 2-4 игрока. +7. Online Durak последним, потому что логика самая сложная. + +Графика online-стола +-------------------- +1v1: +верх - соперник, центр - стол, низ - игрок. + +3-4 игрока: +верх - игрок 2, +лево/право - игрок 3/4, +центр - общий стол, +низ - текущий игрок. + +Чужие карты закрыты, свои открыты. +Ход подсвечивается цветом. +Ставки и банк показываются рядом с именами. + +Отложенные идеи +--------------- +1. Больше талисманов и бестиарий с эффектами +/-. +2. Казино-налог / VIP-уровень глубже связать с наградами. +3. Секретная концовка казино. +4. Магазин: больше рубашек, косметики и временных талисманов. +5. Турнир/башня: больше этапов, больше событий. +6. Стресс/подозрение казино: сделать больше влияния на игры. +7. Таблицы лидеров по всем аккаунтам и играм. +8. Возможный Linux/macOS запуск через Wine-документацию. diff --git a/docs/SECURITY_NOTES.txt b/docs/SECURITY_NOTES.txt new file mode 100644 index 0000000..429e954 --- /dev/null +++ b/docs/SECURITY_NOTES.txt @@ -0,0 +1,50 @@ +ASSEMBLER CASINO - SECURITY NOTES +================================= + +Что уже защищено +---------------- +1. Установщик проверяет SHA-256 архива игры внутри PokerGameSetup.exe. + Если после сборки кто-то подменит payload установщика, установка остановится. + +2. Установщик не распаковывает файлы наружу через пути вида ../. + Каждый путь из архива проверяется, чтобы он оставался внутри выбранной папки установки. + +3. Сохранения лежат отдельно в AppData. + Это не защита от взлома, но защищает их от случайного удаления при переустановке. + +4. Лаунчер Assembler Casino.exe проверяет SHA-256 bin/poker.exe перед запуском. + Если основной игровой exe подменили после установки, лаунчер остановит запуск. + +5. Сохранения получили простую checksum/signature. + Новые save-файлы пишутся с подписью по первым 276 байтам и соли в коде. + Старые 276-байтные сохранения читаются для совместимости, а новые поврежденные/измененные + сохранения не загружают банк и статистику. + +Что это НЕ защищает +------------------- +1. Это не DRM. + Если игра лежит на компьютере игрока, ее можно дизассемблировать, патчить и запускать под отладчиком. + +2. Это не цифровая подпись издателя. + Чтобы Windows показывал доверенного автора и чтобы было сложнее незаметно подменить сам PokerGameSetup.exe, + нужен Authenticode-сертификат и подпись через signtool. + +3. Подпись сохранений не является криптографической защитой. + Она ловит грубую ручную правку и случайное повреждение, но патчер с дизассемблером может + найти алгоритм и пересчитать подпись. + +Что можно добавить следующим слоем +--------------------------------- +1. Authenticode: + подписывать PokerGameSetup.exe, Assembler Casino.exe, Uninstall Assembler Casino.exe и bin/poker.exe. + +2. Release manifest: + хранить список SHA-256 всех файлов релиза в docs/RELEASE_MANIFEST.txt. + +3. Более сильная защита сохранений: + вынести save version, HMAC-подобную проверку и явную метку tampered-профиля. + +Честный вывод +------------- +Для офлайн-казино цель защиты - не сделать невозможный взлом, а поймать случайную/грубую подмену файлов, +защитить установщик от повреждения и усложнить ручное редактирование прогресса. diff --git a/docs/casino_intro_preview.txt b/docs/casino_intro_preview.txt new file mode 100644 index 0000000..8e74d19 --- /dev/null +++ b/docs/casino_intro_preview.txt @@ -0,0 +1,21 @@ + +╔══════════════════════════════════════════════════════════════╗ +║ ║ +║ ███████╗ ██████╗ ██╗ █████╗ ███╗ ██╗ ║ +║ ██╔════╝ ██╔══██╗██║ ██╔══██╗████╗ ██║ ║ +║ █████╗ ██████╔╝██║ ███████║██╔██╗ ██║ ║ +║ ██╔══╝ ██╔══██╗██║ ██╔══██║██║╚██╗██║ ║ +║ ███████╗ ██████╔╝███████╗██║ ██║██║ ╚████║ ║ +║ ╚══════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝ ║ +║ ║ +║ ██████╗ █████╗ ███╗ ███╗███████╗███████╗ ║ +║ ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝ ║ +║ ██║ ███╗███████║██╔████╔██║█████╗ ███████╗ ║ +║ ██║ ██║██╔══██║██║╚██╔╝██║██╔══╝ ╚════██║ ║ +║ ╚██████╔╝██║ ██║██║ ╚═╝ ██║███████╗███████║ ║ +║ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚══════╝ ║ +║ ║ +║ >>> P R E S S A N Y K E Y <<< ║ +╚══════════════════════════════════════════════════════════════╝ + cards poker slots skulls roulette coin + ENTER - START diff --git a/docs/dbd_hook_static.txt b/docs/dbd_hook_static.txt new file mode 100644 index 0000000..a5d4175 --- /dev/null +++ b/docs/dbd_hook_static.txt @@ -0,0 +1,20 @@ + DBD HOOK - video frame reference + ,, ., . .. + . .,. .. . .i;,. .,. ;;. + ,;,. ..; ..,,,,i,, ,,,,t; .,, + . . ... .,...,;iiLt;;,;;,. ..,i;;, .;i;,,, ..,, + .. ,; .. .,ii;,,,..,,,C#####8G##G;,,. ...,,,t;,.,, ,,,,, +. . .;;. ,. . . .,,,,,......,;;iiitLG#G;;;, . . ,,. .;;. ... +........,,,.,;...... ....,,,,,..... ... ,,,...... ,t, .,;. ;i, ..;i +;;,;;,,.,ti.;f,,ttii;,;,L@8f;,.,,i; ,;, ...... ;;i;i,,;;,, ,i,,;;ii +,;;,,.,,i;,.,i,,CCLC;tiiG#fiff;,;;i;;;;,..;i;;;,. ,,;;i,.,,,. ,;. ,,,i +;,...,.,ii..,t,,fi;;,,,;;,,,iif;,LC0@Lff,.;,,,,. .,,,i, ;i;..,,, .,,i +,,.,;,.;,,,.it,... .... ..,;tti;0L;,,;,,....,iLf,,, ,. ,....,i;., +,. ....,.. ,,. .. .,,. .,i;;88L,,,,.;tfi;i;,..,i,,,,. . .i,,,,,, +, . .... .,. ... .8##@;;,,fCi,,;;;;iii;;;i;,i,;,. .. ;,,,,iii; +. .,;iitti;ii;;;;;,,,..,,;itt;. .;0##,.;LLCG@####8i,...,,,...i,. .... +,,;iL#############808Cf;,tCC#f,;,.,..,f8,,t0fiittttti;;;. ti;, ;i. +iffLC@0LffLLG0@G0GCCLLtii;t##,,L,.,, ....ti;,ii;iitfffG, .,. ,t, +,,;;;;;,.,,;;;;;;;;;;,;##;;Li.... . .;;,,,,,;tfLtC8, .t. +;;;;;;;iiiiii;;;;;;;;iiitii;, . ,;;;;;,,,;;;;;; . . + SPACE / ENTER - ?????? skill check \ No newline at end of file diff --git a/docs/revolver_small_preview.txt b/docs/revolver_small_preview.txt new file mode 100644 index 0000000..1759a9e --- /dev/null +++ b/docs/revolver_small_preview.txt @@ -0,0 +1,373 @@ +rrGunUp +uu$`$$$uu$$$ +P*$`$$$$$$$$ +?*$ $$$$$$$$ +$:$ $$$$$$$$ +":$ $$$$$$$$ + N$ $$$$$$$$ + $ $$$$$$$$ + $ $$$$$$$$ + $ $$$$$$$$ + $$$$$$$$$$ + $$$$$$$$$$ + $$RR$$$$$$ + $$$$$$$$$$ + $ $$$$$@$$ + $ $$$$$$$$ + $ $$$$$$$$$uuL + $ $$$$$$$$$uu***u.. + $ $$$$$$$$$ `***u$*t + $xxuu$u$$$$uuuk.$$$? + $x$uu8u```$uuu6."$?? + $$$?$$$```$$$$$`""?? + $$$?$$$ $$$$K $$ .. + $$$H$$$ $$$$K. $$$$$Ns. + $$$$$$$ $$$$X. R"$$$%%.N + $$$%uu$ uuu$:: Ruuu "??: + $$$%uu! $u$$$: ||uuuu*?$$ + $??N $'$$$ $$*uuu!':$ + $??........$$$$ $**` dd"" +$.$Rd....$.."?7$uo 5uu..+*** +'*@R.``""**@""`uuouxxu``U+!` +**@**xuu***" *RRux$"``%% + **xN**%% ..u.d$..u%$$o. + "NN`%.. $..".du$$$$$$$$$uu.. + 88@.m":::R*""x$$$$$$$$$$$$$$$$$$$$$$$$$c + $$e""":N@ $$N`"$$$$$$$$$$$$$$$$$$$$$> + $@ "N%uu. ??uuu$$$$$$$$$$$$$$$$$$$$$> + ```"*u$$$$$$$$$$$$$$$$$$$$$$$$$$> + $$$$$$$$$$$$$$$$$$$$$$$$$$> + ""$$$$$$$$$$$$$$$$$$$$$$$$> + ^^$$$$$$$$$$$$$$$$$$$$$> + "*$$$$$$$$$$$$$$$$$$$> + `**$$$$$$$$$$$$$$$$> + ``"+$$$*$$$$$$> + +rrGunUpLeft + $ c + $$$$ $$> + u $$$ $$ $> + $$$$$$$$ $$$$$$>> + $ $$$ $$ $ . N: $$ $$$ $> + $ $$ $$$ $$ .t s.? $ $ $$$ $$ $> + $`$$$$$$$$$$$$ .$$?? .$N%"?$$" $$$$$$$$$$$$> +u $ $$$ $$ $$$ *u $? ? $ $ *'" .$$ $$ $$$ $$ $ +P*$$ $$$$$$$$$$$$ uL**.$$"?$$$$uuu!d** u.$$$$$$$$$$$$$$ + ?: $ $$$ $$ $$ $ u u* k." $ "u uu *` u $$ $$ $$$ $$ $ + $: $ $ $$ $$$ $$ $u `u6 ` Ru uu +! . $$ $$$ $$ $$$ $ + " N$$ $$$$$$$@$$$$$ uu$$K. ||$*`.U% $$$$$$$$$$$$$$$*$ + $$$ R$ $$ $$$ $u $$K . $ *u` %$ $$$ $$ $$ $$$ $ + $$$R$$$$$$$$$$`$$$$$X:: $uu``%$$$$$$$$$$$$$$$$ + $$ $$$ $$ $` `$$ $$ $ x ".$ $$ $$ $$$ $$ + + $$ $$$$$$u``` $$u$$$$o ux$.$$$$$$$$$$$$$$`" + $ $$ u8$ uu $$ uo udu $" $$$ $$ $$ ` + $ $ uu $$ $' $$u R. d$` u$ $$ $$$ + $$xx$?$$$$$ $.$7`*R.".$$uu$$$$$$$** + $x $?$ $$ . "" . ."$ ?$ $$$ *` + $$$$$$$uu! ...@" $." ?$$$$^^" + $$ $% u . $* " R u$ " + $$$ % ..* * : .* " + $$$$?..."**%..:N@u`" + $? ?.` u* %": %` + $$?d.xu*N`m""N ` + $R *xN @" + . @** "8 e + $'*@ * 8$$@ + * $ + +rrGunLeft + c>>>>>>>>> + $$$$$$$$$$ + $$$$$$$$$$ + $$$$$$$$$$ + $$$$$$$$$$ + $$$$$$$$$$ + $$$$$$$$$$ + $$$$$$$$$* + $$$$$$$$$$ + $$$$$$$$$$ + $$$$$$$$$$ + .$$$$$$$$$+ + .$$$$$$$$$" + u$$$$$$$$$` + u$$$$$$$$$` + :$$" $$$$$$$$$$ + N?$:"* .$$$$$$$$$$ + ..??'d*` o$$$$$$$$$* + s%"*!d*! $$$$$$$$$$* + N% uu ++%$$$$$$$$$$` + .$$ uu .U%%$$$$$$$$* + .$$uuu`.``u$$$$$$$$" + $$uu**u``.$$"u$$$^ + t???$$"u|$*uu".$$`u$$$^ + .*$??$$RR|$$5x$$u$Nu$$$ + .$$$" xxdd$$?$$" + uu$"" uu..x$?$$" + **..` ..:: ooRu"" u + **k6$KKX:$$$uuR.." * + L**uu$$$$$$$$$u*..* ." + uu`uu$$$$u$$$7` $R u` + uu uu$$$$uu'$?" :@u` + $$$$$$$$$u$$."" :N%` +$$$$$$$$$$$$$$$$$$$`` ..@" .::N +$$$$$$$$$$$$$$$$$$$`` ..**%.""" +$$$$$$$$$$$$$@$$$$$`` .$**%%m" +u$$$$$$$$$$$$$$$$$uu$$$$$! .."**`." +u$$$$$$$$$$$$$$$$$$8$$$$uu .."u*N@e +$$$$$$$$$$$$$$$$$$uu$$$$uu ..`uNN8$@ +$$$$$$$$$$$R$$$$$$uu??H$%%N..`xx"8$$ +$$$$$$$$$$$R$$$$$$x$$$$$$$??d.** +`` $$$$ xx$$$$$$??RR** +$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ +u**::N .** +uP?$" $'* + +rrGunDownLeft + >$ + >$ $ + >>$$$$$ + >$ $$$ $ + >$ $$ $$ $ + >$$$$$$$$$*$ +c$ $$ $$$ $$ $ + $$$$$$$$$$$$$+ + $$ $$ $$ $$$ " + $$$$$$$$$$$$`` + $ $$$ $$ $$$ + $$ $$ $$$ $$ + $$$$$$$$$$$$* + $$ $$ $$$ $* + .$$$$$$$$$$$` + .$ $$$ $$ $* + u $$ $$$ $$ " + u$$$$$$$$$$^ + $$$ $$ $$^ + .$$$$$$$$$$ + $ $$$ u$ $" + " *` $$ $" u$$ " + $$"**!%%%$$$`u?$$ + : $'d +U `.$ $$ ?u + N??*! .``".ud$$ *" + ." uu `uu $d ." .` + .s% uuu**uxxu."." u`` + N$u u$ $ u R. .R @% + $ $u |$ o R.$ :N N + .$$"u| ouu* ::" + $ R $ $` ."" + ?$$ :$$$$7""" .%m"e@ + ? ? .: $$ $"@ *% `@ $$ + ??" . X$$ '. .* **N 8$ + t$$$"`KK$$uu$$..$**u*N"8 + .$ $. $$$ $u . ." ux + .u.k6$$$$$ ...`x*** + ** uu $$ ! ... * + **`uu$` $$uu .?dR@@ + Lu $` ` $$u %? ?$ ** + u u$ $`` $$ $% $?$ .' + u$$$$$`$$$$$$$$$$ $ + $$$ u8 $?$ $$ + $$$$$$$uu?$$$$$ + $ $$ $$$ u$ $$ + $$ @$$ $$ xx$ + $$$$$$$$$$$$x$$ + $$$ $$ $$$ $ + $$$$$$$$$$$$ $$ + $ $$ $$ $R$ $ + $$ $$$ $$ R$$ + $$$$$$$$$$$$$$$ + $$$ $$ $$ $$$ +$$$$$$$$$$$ $$ + $ $$ $$$ $ + u$$$$$$ $$ + $ $$ $ N + $ $ $ : + $`$$:$" + $ *? + uP + +rrGunDown +>$$$$$$*$$$+"`` +>$$$$$$$$$$$$$$$$**` +>$$$$$$$$$$$$$$$$$$$*" +>$$$$$$$$$$$$$$$$$$$$$^^ +>$$$$$$$$$$$$$$$$$$$$$$$$"" +>$$$$$$$$$$$$$$$$$$$$$$$$$$ +>$$$$$$$$$$$$$$$$$$$$$$$$$$u*"``` +>$$$$$$$$$$$$$$$$$$$$$uuu?? .uu%N" @$ +>$$$$$$$$$$$$$$$$$$$$$"`N$$ @N:"""e$$ +c$$$$$$$$$$$$$$$$$$$$$$$$$x""*R:::"m.@88 + ..uu$$$$$$$$$ud."..$ ..%`NN" + .o$$%u..$d.u.. %%**Nx** + %%``"$xuRR* "***uux**@** + `!+U``uxxuouu`""@**""``.R@*' + ***+..uu5 ou$7?"..$....dR$.$ + ""dd `**$ $$$$........??$ + $:'!uuu*$$ $$$'$ N??$ + $$?*uuuu|| :$$$u$ !uu%$$$ + :??" uuuR ::$uuu $uu%$$$ + N.%%$$$"R .X$$$$ $$$$$$$ + .sN$$$$$ .K$$$$ $$$H$$$ + .. $$ K$$$$ $$$?$$$ + ??""`$$$$$```$$$?$$$ + ??$".6uuu$```u8uu$x$ + ?$$$.kuuu$$$$u$uuxx$ + t*$u***` $$$$$$$$$ $ + ..u***uu$$$$$$$$$ $ + Luu$$$$$$$$$ $ + $$$$$$$$ $ + $$@$$$$$ $ + $$$$$$$$$$ + $$$$$$RR$$ + $$$$$$$$$$ + $$$$$$$$$$ + $$$$$$$$ $ + $$$$$$$$ $ + $$$$$$$$ $ + $$$$$$$$ $N + $$$$$$$$ $:" + $$$$$$$$ $:$ + $$$$$$$$ $*? + $$$$$$$$`$*P + $$$uu$$$`$uu + +rrGunDownRight + $ * + @$$8 * @*'$ + e 8" **@ . + "@ Nx* R$ + ` N""m`N*ux.d?$$ + `% :"% *u `.? ?$ + "`u@N:..%**"...?$$$$ + " *. : * *.. % $$$ + " $u R " *$ . u %$ $$ + "^^$$$$? ".$ "@... !uu$$$$$$$ + `* $$$ $? $". . "" . $$ $?$ x$ + **$$$$$$$uu$$.".R*`7$.$ $$$$$?$xx$$ + $$$ $$ $u `$d .R u$$ '$ $$ uu $ $ + ` $$ $$ $$$ "$ udu ou $$ uu $8u $$ $ + "`$$$$$$$$$$$$$$.$xu o$$$$u$$ ```u$$$$$$ $$ + + $$ $$$ $$ $$ $." x $ $$ $$` `$ $$ $$$ $$ + $$$$$$$$$$$$$$$$%``uu$ ::X$$$$$`$$$$$$$$$$R$$$ + $ $$$ $$ $$ $$$ $% `u* $ . K$$ u$ $$$ $$ $R $$$ + $*$$$$$$$$$$$$$$$ %U.`*$|| .K$$uu $$$$$@$$$$$$$ $$N " + $ $$$ $$ $$$ $$ . !+ uu uR ` 6u` u$ $$ $$$ $$ $ $ :$ + $ $$ $$$ $$ $$ u `* uu u" $ ".k *u u $ $$ $$ $$$ $ :? + $$$$$$$$$$$$$$.u **d!uuu$$$$?"$$.**Lu $$$$$$$$$$$$ $$*P +$ $$ $$$ $$ $$. "'* $ $ ? ?$ u* $$$ $$ $$$ $ u +>$$$$$$$$$$$$ "$$?"%N$. ??$$. $$$$$$$$$$$$`$ + >$ $$ $$$ $ $ ?.s t. $$ $$$ $$ $ + >$ $$$ $$ :N . $ $$ $$$ $ + >>$$$$$$ $$$$$$$$ + >$ $$ $$$ u + >$$ $$$$ + c $ + +rrGunRight + *'$ "$?Pu + **. N::**u + @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ + **RR??$$$$$$xx $$$$ `` + **.d??$$$$$$$x$$$$$$R$$$$$$$$$$$ + $$8"xx`..N%%$H??uu$$$$$$R$$$$$$$$$$$ + @$8NNu`.. uu$$$$uu$$$$$$$$$$$$$$$$$$ + e@N*u".. uu$$$$8$$$$$$$$$$$$$$$$$$u + ".`**".. !$$$$$uu$$$$$$$$$$$$$$$$$u + "m%%**$. ``$$$$$@$$$$$$$$$$$$$ + """.%**.. ``$$$$$$$$$$$$$$$$$$$ + N::. "@.. ``$$$$$$$$$$$$$$$$$$$ + `%N: "".$$u$$$$$$$$$ + `u@: "?$'uu$$$$uu uu + `u R$ `7$$$u$$$$uu`uu + ". *..*u$$$$$$$$$uu**L + * "..Ruu$$$:XKK$6k** + u ""uRoo ::.. `..** + "$$?$x..uu ""$uu + "$$?$$ddxx "$$$. + $$$uN$u$$x5$$|RR$$??$*. + ^$$$u`$$."uu*$|u"$$???t + ^$$$u"$$.``u**uu$$ + "$$$$$$$$u``.`uuu$$. + *$$$$$$$$%%U. uu $$. + `$$$$$$$$$$%++ uu %N + *$$$$$$$$$$ !*d!*"%s + *$$$$$$$$$o `*d'??.. + $$$$$$$$$$. *":$?N + $$$$$$$$$$ "$$: +`$$$$$$$$$u +`$$$$$$$$$u +"$$$$$$$$$. ++$$$$$$$$$. +$$$$$$$$$$ +$$$$$$$$$$ +$$$$$$$$$$ +*$$$$$$$$$ +$$$$$$$$$$ +$$$$$$$$$$ +$$$$$$$$$$ +$$$$$$$$$$ +$$$$$$$$$$ +$$$$$$$$$$ +>>>>>>>>>c + +rrGunUpRight + Pu + ?* $ + "$:$$`$ + : $ $ $ + N $ $$ $ + $$ $$$$$$u + $ $$$ $$ $ + $$ $$$$$$$$$$$ + $$$ $$ $$ $$$ + $$$$$$$$$$$$$$$ + $$R $$ $$$ $$ + $ $R$ $$ $$ $ + $$ $$$$$$$$$$$$ + $ $$$ $$ $$$ + $$x$$$$$$$$$$$$ + $xx $$ $$@ $$ + $$ $u $$$ $$ $ + $$$$$?uu$$$$$$$ + $$ $?$ 8u $$$ + $ $$$$$$$$$$`$$$$$u + '. $?$ %$ $$ ``$ $u u +** $? ?% u$$ ` `$ uL + @@Rd?. uu$$ `$uu`** + * ... ! $$ uu ** + ***x`... $$$$$6k.u. + xu ". . u$ $$$ .$ $. + 8"N*u**$..$$uu$$KK`"$$$t + $8 N** *. .' $$X . "?? +$$ @` %* @"$ $$ :. ? ? + @e"m%. """7$$$$: $$? + "". `$ $ R $ + ":: *uuo |u"$$. + N N: $.R o $| u$ $ + %@ R. .R u $ $u u$N + ``u ".".uxxu**uuu %s. + `. ". d$ uu` uu ". + "* $$du."``. !*??N + u? $$ $.` U+ d'$ : + $$?u`$$$%%%!**"$$ + " $$u "$ $$ `* " + "$ $u $$$ $ + $$$$$$$$$$. + ^$$ $$ $$$ + ^$$$$$$$$$$u + " $$ $$$ $$ u + *$ $$ $$$ $. + `$$$$$$$$$$$. + *$ $$$ $$ $$ + *$$$$$$$$$$$$ + $$ $$$ $$ $$ + $$$ $$ $$$ $ + ``$$$$$$$$$$$$ + " $$$ $$ $$ $$ + +$$$$$$$$$$$$$ + $ $$ $$$ $$ $c + $*$$$$$$$$$> + $ $$ $$ $> + $ $$$ $> + $$$$$>> + $ $> + $> diff --git a/docs/variables_documentation.docx b/docs/variables_documentation.docx new file mode 100644 index 0000000..0dfcc82 Binary files /dev/null and b/docs/variables_documentation.docx differ diff --git a/docs/Новый текстовый документ.txt b/docs/Новый текстовый документ.txt new file mode 100644 index 0000000..99a2f0a --- /dev/null +++ b/docs/Новый текстовый документ.txt @@ -0,0 +1,371 @@ +логотип, палитра и необходимые управляющие символы. + +ESC_SEQ db 1Bh, '[' +CLEAR_SCREEN db 1Bh, '[2J', 1Bh, '[H', 0 +HIDE_CURSOR db 1Bh, '[?25l', 0 +SHOW_CURSOR db 1Bh, '[?25h', 0 +MOVE_HOME db 1Bh, '[H', 0 +RESET_COLOR db 1Bh, '[0m', 0 + +; Палитра 256 цветов (синие и голубые оттенки) +palette db 21, 27, 33, 39, 45, 51, 81, 123, 159 +PAL_SIZE equ 9 +GLITCH_CHARS db "@#$%&X*01?<>", 0 +GLITCH_LEN equ 12 + +; Твой логотип (убедись, что строки заканчиваются на 0) +intro_line1 db "╔══════════════════════════════════════════════════════════════╗", 0 +intro_line2 db "║ ║", 0 +intro_line3 db "║ ███████╗ ██████╗ ██╗ █████╗ ███╗ ██╗ ║", 0 +intro_line4 db "║ ██╔════╝ ██╔══██╗██║ ██╔══██╗████╗ ██║ ║", 0 +intro_line5 db "║ █████╗ ██████╔╝██║ ███████║██╔██╗ ██║ ║", 0 +intro_line6 db "║ ██╔══╝ ██╔══██╗██║ ██╔══██║██║╚██╗██║ ║", 0 +intro_line7 db "║ ███████╗ ██████╔╝███████╗██║ ██║██║ ╚████║ ║", 0 +intro_line8 db "║ ╚══════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝ ║", 0 +intro_line9 db "║ ║", 0 +intro_line10 db "║ ██████╗ █████╗ ███╗ ███╗███████╗███████╗ ║", 0 +intro_line11 db "║ ██╔════╝ ██╔══██╗████╗ ████║██╔════╝██╔════╝ ║", 0 +intro_line12 db "║ ██║ ███╗███████║██╔████╔██║█████╗ ███████╗ ║", 0 +intro_line13 db "║ ██║ ██║██╔══██║██║╚██╔╝██║██╔══╝ ╚════██║ ║", 0 +intro_line14 db "║ ╚██████╔╝██║ ██║██║ ╚═╝ ██║███████╗███████║ ║", 0 +intro_line15 db "║ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚══════╝ ║", 0 +intro_line16 db "║ ║", 0 +intro_line17 db "║ >>> P R E S S A N Y K E Y <<< ║", 0 +intro_line18 db "╚══════════════════════════════════════════════════════════════╝", 0 + +intro_ptrs dd offset intro_line1, offset intro_line2, offset intro_line3 + dd offset intro_line4, offset intro_line5, offset intro_line6 + dd offset intro_line7, offset intro_line8, offset intro_line9 + dd offset intro_line10, offset intro_line11, offset intro_line12 + dd offset intro_line13, offset intro_line14, offset intro_line15 + dd offset intro_line16, offset intro_line17, offset intro_line18, 0 + +; Переменные состояния +frame_counter dd 0 +glitch_timer dd 0 +temp_color_buf db 32 dup(0) +bytesWritten dd 0 +hConsole dd 0 +cMode dd 0 +2. Добавь функции в .code +Этот блок реализует саму анимацию. Тебе нужно вызвать call ShowIntro в самом начале _start. + +Фрагмент кода +; Функция включения ANSI в Windows 10+ +EnableANSI PROC + invoke GetStdHandle, STD_OUTPUT_HANDLE + mov hConsole, eax + invoke GetConsoleMode, hConsole, addr cMode + or cMode, 0004h ; ENABLE_VIRTUAL_TERMINAL_PROCESSING + invoke SetConsoleMode, hConsole, cMode + ret +EnableANSI ENDP + +; Печать строки через WinAPI +PrintWinStr PROC USES edx esi, pStr:DWORD + mov esi, pStr + xor edx, edx +@@: + cmp byte ptr [esi+edx], 0 + je @f + inc edx + jmp @b +@@: + invoke WriteFile, hConsole, esi, edx, addr bytesWritten, 0 + ret +PrintWinStr ENDP + +; Установка цвета ANSI (256 цветов) +SetAnsiColor PROC colorIdx:DWORD + push eax + ; Формируем строку ESC[38;5;Nm + ; Для простоты используем предопределенные части + invoke WriteFile, hConsole, addr ESC_SEQ, 2, addr bytesWritten, 0 + invoke PrintWinStr, addr colorPrefix ; "38;5;" + + ; Преобразование индекса цвета в текст (упрощенно для примера) + ; В идеале тут нужен dwtoa, но для краткости опустим + pop eax + ret +SetAnsiColor ENDP + +ShowIntro PROC + call EnableANSI + invoke PrintWinStr, addr CLEAR_SCREEN + invoke PrintWinStr, addr HIDE_CURSOR + +intro_loop: + invoke PrintWinStr, addr MOVE_HOME + inc frame_counter + + ; Логика таймера глитча + mov eax, frame_counter + xor edx, edx + mov ecx, 120 ; Раз в 6 секунд при 20 FPS + div ecx + test edx, edx + jnz @f + mov glitch_timer, 8 ; Глитч на 8 кадров +@@: + + xor ebx, ebx ; Индекс строки +line_loop: + mov esi, [intro_ptrs + ebx*4] + test esi, esi + jz check_input + + xor edi, edi ; Позиция в строке +char_loop: + mov al, [esi+edi] + test al, al + jz next_line + + ; --- ГРАДИЕНТ --- + ; Цвет = (позиция + кадр) % PAL_SIZE + mov eax, edi + add eax, frame_counter + xor edx, edx + mov ecx, PAL_SIZE + div ecx + movzx eax, [palette + edx] + + ; Вывод ANSI цвета вручную для скорости + push eax + invoke WriteConsoleA, hConsole, addr ESC_SEQ, 2, addr bytesWritten, 0 + ; Здесь должен быть код вывода "38;5;XXXm" + ; Чтобы не усложнять ASM, можно использовать фиксированные цвета из 16-цветовой палитры + ; или дописать процедуру конвертации числа в строку. + pop eax + + ; --- ГЛИТЧ --- + cmp glitch_timer, 0 + jle print_char + + ; Шанс глитча через системное время или rdtsc + rdtsc + test al, 0Fh + jnz print_char + movzx eax, byte ptr [GLITCH_CHARS] ; Упрощенно берем первый символ глитча + +print_char: + mov [temp_color_buf], al + invoke WriteFile, hConsole, addr temp_color_buf, 1, addr bytesWritten, 0 + + inc edi + jmp char_loop + +next_line: + mov byte ptr [temp_color_buf], 10 + invoke WriteFile, hConsole, addr temp_color_buf, 1, addr bytesWritten, 0 + inc ebx + jmp line_loop + +check_input: + cmp glitch_timer, 0 + jle @f + dec glitch_timer +@@: + ; Неблокирующая проверка нажатия клавиши + invoke GetNumberOfConsoleInputEvents, hInput, addr bytesWritten ; hInput должен быть STD_INPUT_HANDLE + cmp bytesWritten, 1 ; Если событий больше чем "ничего" + jg exit_intro + + invoke Sleep, 50 ; 20 FPS + jmp intro_loop + +exit_intro: + invoke PrintWinStr, addr RESET_COLOR + invoke PrintWinStr, addr SHOW_CURSOR + invoke PrintWinStr, addr CLEAR_SCREEN + ret +ShowIntro ENDP + + +Дескриптор консоли: В начале программы обязательно вызови GetStdHandle, чтобы получить hConsole. В твоем коде это, скорее всего, уже делается, просто сохрани результат в переменную. + + +Фрагмент кода +start: + ; Инициализация консоли + call ShowIntro ; Сначала показываем заставку + call MainMenu ; Потом переходим в твое меню + ... + + +1. Обнови секцию .data +Добавь эти строки (я добавил управляющие коды для вспышек): + +Фрагмент кода +; Коды для вспышек цвета +GLITCH_WHITE db 1Bh, '[38;5;15m', 0 +GLITCH_RED db 1Bh, '[38;5;196m', 0 +; Строка для смещения (Shake) +SHAKE_SPACE db " ", 0 ; Два пробела для максимальной тряски + +; Добавим префикс для 256-цветов +COLOR_PFX db 1Bh, '[38;5;', 0 +2. Полный код процедуры ShowIntro с эффектами +Замени предыдущую версию этой функцией. Я добавил комментарии, чтобы ты видел, где происходит магия. + +Фрагмент кода +ShowIntro PROC + call EnableANSI + invoke GetStdHandle, STD_INPUT_HANDLE + mov hInput, eax + + invoke PrintWinStr, addr CLEAR_SCREEN + invoke PrintWinStr, addr HIDE_CURSOR + +intro_loop: + invoke PrintWinStr, addr MOVE_HOME + inc frame_counter + + ; --- ТАЙМЕР ГЛИТЧА --- + ; Раз в ~5 секунд запускаем эффект на 10 кадров + mov eax, frame_counter + xor edx, edx + mov ecx, 100 + div ecx + test edx, edx + jnz @f + mov glitch_timer, 10 +@@: + + ; --- ЭФФЕКТ SCREEN SHAKE --- + ; Если глитч активен, случайно смещаем всё вправо + cmp glitch_timer, 0 + jle start_draw + rdtsc + and al, 3 ; Получаем число 0-3 + jz start_draw + invoke WriteFile, hConsole, addr SHAKE_SPACE, eax, addr bytesWritten, 0 + +start_draw: + xor ebx, ebx ; Индекс текущей строки intro_ptrs +line_loop: + mov esi, [intro_ptrs + ebx*4] + test esi, esi + jz check_input + + xor edi, edi ; Индекс символа в строке +char_loop: + mov al, [esi+edi] + test al, al + jz next_line + + ; --- ЛОГИКА ЦВЕТА --- + push eax + cmp glitch_timer, 0 + jle normal_color + + ; Шанс 1 к 10 на вспышку во время глитча + rdtsc + and ax, 0FFh + cmp ax, 10 + ja normal_color + + ; ВЫБОР ВСПЫШКИ (Белый или Красный) + test al, 1 + jnz flash_red + invoke PrintWinStr, addr GLITCH_WHITE + jmp glitch_char_logic +flash_red: + invoke PrintWinStr, addr GLITCH_RED + jmp glitch_char_logic + +normal_color: + ; Обычный градиент + mov eax, edi + add eax, frame_counter + xor edx, edx + mov ecx, PAL_SIZE + div ecx + movzx eax, [palette + edx] + call SetAnsiColorSimple ; Упрощенная установка цвета + +glitch_char_logic: + pop eax ; Достаем оригинальный символ + + cmp glitch_timer, 0 + jle print_char + + ; Шанс 1 к 8 на замену символа мусором + rdtsc + and al, 7 + jnz print_char + + ; Берем случайный символ из GLITCH_CHARS + rdtsc + xor edx, edx + mov ecx, GLITCH_LEN + div ecx + mov al, [GLITCH_CHARS + edx] + +print_char: + mov [temp_color_buf], al + invoke WriteFile, hConsole, addr temp_color_buf, 1, addr bytesWritten, 0 + + inc edi + jmp char_loop + +next_line: + mov byte ptr [temp_color_buf], 10 + invoke WriteFile, hConsole, addr temp_color_buf, 1, addr bytesWritten, 0 + inc ebx + jmp line_loop + +check_input: + ; Отрисовали кадр, уменьшаем таймер глитча + cmp glitch_timer, 0 + jle @f + dec glitch_timer +@@: + ; Проверка нажатия любой клавиши + invoke GetNumberOfConsoleInputEvents, hInput, addr bytesWritten + cmp bytesWritten, 1 + jbe no_key + + ; Если нажали — очищаем буфер и выходим + invoke FlushConsoleInputBuffer, hInput + jmp exit_intro + +no_key: + invoke Sleep, 40 ; ~25 FPS для динамичности + jmp intro_loop + +exit_intro: + invoke PrintWinStr, addr RESET_COLOR + invoke PrintWinStr, addr SHOW_CURSOR + invoke PrintWinStr, addr CLEAR_SCREEN + ret +ShowIntro ENDP + +; Упрощенная установка цвета для 256-палитры (фиксированные коды для экономии места) +; Чтобы не делать сложный перевод числа в строку в ASM +SetAnsiColorSimple PROC colorVal:DWORD + ; Мы просто выведем ESC[38;5;Nm + ; Для красоты вставим прямо "бегущий" индекс + invoke PrintWinStr, addr COLOR_PFX + ; Тут я использую лайфхак: вывожу просто индекс из палитры вручную + ; Если тебе нужны именно 256 цветов, здесь вызывается функция dwtoa + ; Но для теста можно оставить системные цвета 31-37 + ret +SetAnsiColorSimple ENDP +Как это работает: +Screen Shake: Перед началом отрисовки каждой строки, если glitch_timer > 0, мы вызываем rdtsc и печатаем от 0 до 3 пробелов. Это заставляет логотип "прыгать" влево-вправо. + +Color Flicker: Внутри цикла символов мы проверяем rdtsc. Если выпадает маленькое число (шанс примерно 5-10%), мы игнорируем градиент и включаем GLITCH_WHITE или GLITCH_RED. + +Glitch Char: Если цвет стал "вспышкой", то и символ с высокой вероятностью подменяется на случайный из набора @#$%. + +Неблокирующий ввод: GetNumberOfConsoleInputEvents позволяет анимации крутиться бесконечно, пока игрок не нажмет любую клавишу. + +Что нужно поправить в твоем основном коде: +Убедись, что в начале программы (в _start) ты инициализируешь hInput и hConsole: + +Фрагмент кода +invoke GetStdHandle, STD_OUTPUT_HANDLE +mov hConsole, eax +invoke GetStdHandle, STD_INPUT_HANDLE +mov hInput, eax +Этот код превратит твою заставку в некое подобие "взломанного терминала". Выглядит очень эффектно для игры про покер или казино! \ No newline at end of file diff --git a/docs/ЧИТКОДЫ.txt b/docs/ЧИТКОДЫ.txt new file mode 100644 index 0000000..47a4e16 --- /dev/null +++ b/docs/ЧИТКОДЫ.txt @@ -0,0 +1,21 @@ +ÑÅÊÐÅÒÍÛÅ ×ÈÒ-ÊÎÄÛ ASSEMBLER CASINO + +MONEYRAIN - +$50000 +SEVENS - +$7777 +WINNEXT - ãàðàíòèðóåò âûèãðûø â ñëåäóþùåì ðàóíäå +GODMODE - ðåæèì áîãà (íåëüçÿ ïðîèãðàòü) +FAIRPLAY - ñáðîñèòü GODMODE/WINNEXT +GOAL - âûñòàâèòü áàíê ïîä öåëü +RESETBANK - ñáðîñèòü áàíê äî $10000 +EASYAI - ñëîæíîñòü AI Easy +NORMALAI - ñëîæíîñòü AI Normal +HARDAI - ñëîæíîñòü AI Hard +JACKPOT - â Ñëîòàõ/CloverPit ñëåäóþùèé ñïèí ñóïåð-âûèãðûø +HIGHROLLER - +$250000 +DOUBLECASH - óäâîèòü áàíê +ONEBUCK - áàíê = $1 +SHOPPING - +$30000 íà ïîêóïêè â ìàãàçèíå +ALLBACKS - ðàçáëîêèðîâàòü âñå ðóáàøêè +MAXCHARM - ïðîêà÷àòü òàëèñìàí äî 3 óðîâíÿ +NOCHARM - ñíÿòü òàëèñìàí +ACHIEVER - ðàçáëîêèðîâàòü âñå äîñòèæåíèÿ diff --git a/font8x8.inc b/font8x8.inc new file mode 100644 index 0000000..fc5cdf4 --- /dev/null +++ b/font8x8.inc @@ -0,0 +1,260 @@ +; --- 8x8 BITMAP FONT FOR CP1251 (Generated) --- +.data +ALIGN 4 +font8x8 label byte +db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0x00 +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x01 +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x02 +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x03 +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x04 +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x05 +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x06 +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x07 +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x08 +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x09 +db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0x0A +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x0B +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x0C +db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0x0D +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x0E +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x0F +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x10 +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x11 +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x12 +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x13 +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x14 +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x15 +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x16 +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x17 +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x18 +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x19 +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x1A +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x1B +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x1C +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x1D +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x1E +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x1F +db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0x20 +db 020h, 020h, 020h, 020h, 000h, 020h, 000h, 000h ; char 0x21 +db 050h, 050h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0x22 +db 030h, 0F8h, 030h, 0F8h, 060h, 060h, 000h, 000h ; char 0x23 +db 038h, 050h, 070h, 018h, 028h, 078h, 020h, 000h ; char 0x24 +db 0E8h, 0B0h, 0E0h, 038h, 068h, 0B8h, 000h, 000h ; char 0x25 +db 0E0h, 0A0h, 0C0h, 0D0h, 0A0h, 0F0h, 000h, 000h ; char 0x26 +db 020h, 020h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0x27 +db 020h, 040h, 040h, 040h, 040h, 040h, 020h, 010h ; char 0x28 +db 020h, 010h, 010h, 010h, 010h, 010h, 020h, 040h ; char 0x29 +db 020h, 070h, 070h, 020h, 000h, 000h, 000h, 000h ; char 0x2A +db 000h, 020h, 020h, 0F8h, 020h, 020h, 000h, 000h ; char 0x2B +db 000h, 000h, 000h, 000h, 000h, 020h, 020h, 040h ; char 0x2C +db 000h, 000h, 000h, 070h, 000h, 000h, 000h, 000h ; char 0x2D +db 000h, 000h, 000h, 000h, 000h, 020h, 000h, 000h ; char 0x2E +db 008h, 010h, 010h, 020h, 020h, 020h, 040h, 000h ; char 0x2F +db 060h, 090h, 0B0h, 0D0h, 090h, 060h, 000h, 000h ; char 0x30 +db 020h, 060h, 020h, 020h, 020h, 070h, 000h, 000h ; char 0x31 +db 038h, 048h, 008h, 010h, 020h, 078h, 000h, 000h ; char 0x32 +db 078h, 008h, 030h, 008h, 008h, 070h, 000h, 000h ; char 0x33 +db 030h, 030h, 050h, 090h, 0F8h, 010h, 000h, 000h ; char 0x34 +db 078h, 040h, 070h, 008h, 008h, 070h, 000h, 000h ; char 0x35 +db 038h, 060h, 078h, 048h, 048h, 030h, 000h, 000h ; char 0x36 +db 078h, 008h, 010h, 010h, 020h, 020h, 000h, 000h ; char 0x37 +db 078h, 048h, 030h, 048h, 048h, 070h, 000h, 000h ; char 0x38 +db 060h, 090h, 090h, 0F0h, 010h, 0E0h, 000h, 000h ; char 0x39 +db 000h, 000h, 020h, 000h, 000h, 020h, 000h, 000h ; char 0x3A +db 000h, 000h, 020h, 000h, 000h, 020h, 020h, 040h ; char 0x3B +db 000h, 010h, 020h, 040h, 020h, 010h, 000h, 000h ; char 0x3C +db 000h, 000h, 078h, 000h, 078h, 000h, 000h, 000h ; char 0x3D +db 000h, 040h, 020h, 010h, 020h, 040h, 000h, 000h ; char 0x3E +db 060h, 010h, 010h, 070h, 000h, 040h, 000h, 000h ; char 0x3F +db 030h, 048h, 0B8h, 0B8h, 0B8h, 0A8h, 080h, 070h ; char 0x40 +db 020h, 050h, 050h, 050h, 070h, 050h, 000h, 000h ; char 0x41 +db 078h, 048h, 070h, 048h, 048h, 070h, 000h, 000h ; char 0x42 +db 070h, 080h, 080h, 080h, 080h, 070h, 000h, 000h ; char 0x43 +db 0E0h, 090h, 090h, 090h, 090h, 0E0h, 000h, 000h ; char 0x44 +db 070h, 040h, 070h, 040h, 040h, 070h, 000h, 000h ; char 0x45 +db 070h, 040h, 070h, 040h, 040h, 040h, 000h, 000h ; char 0x46 +db 070h, 080h, 0B0h, 090h, 090h, 070h, 000h, 000h ; char 0x47 +db 090h, 090h, 0F0h, 090h, 090h, 090h, 000h, 000h ; char 0x48 +db 070h, 020h, 020h, 020h, 020h, 070h, 000h, 000h ; char 0x49 +db 070h, 010h, 010h, 010h, 010h, 070h, 000h, 000h ; char 0x4A +db 048h, 050h, 060h, 060h, 050h, 048h, 000h, 000h ; char 0x4B +db 040h, 040h, 040h, 040h, 040h, 070h, 000h, 000h ; char 0x4C +db 010h, 0B0h, 0B0h, 050h, 010h, 010h, 000h, 000h ; char 0x4D +db 050h, 050h, 070h, 070h, 050h, 050h, 000h, 000h ; char 0x4E +db 070h, 088h, 088h, 088h, 088h, 070h, 000h, 000h ; char 0x4F +db 070h, 048h, 048h, 070h, 040h, 040h, 000h, 000h ; char 0x50 +db 070h, 088h, 088h, 088h, 088h, 070h, 020h, 018h ; char 0x51 +db 070h, 048h, 048h, 070h, 048h, 048h, 000h, 000h ; char 0x52 +db 038h, 040h, 060h, 018h, 008h, 070h, 000h, 000h ; char 0x53 +db 0F8h, 020h, 020h, 020h, 020h, 020h, 000h, 000h ; char 0x54 +db 090h, 090h, 090h, 090h, 090h, 060h, 000h, 000h ; char 0x55 +db 050h, 050h, 050h, 050h, 050h, 020h, 000h, 000h ; char 0x56 +db 050h, 050h, 070h, 050h, 050h, 050h, 000h, 000h ; char 0x57 +db 088h, 050h, 020h, 020h, 050h, 088h, 000h, 000h ; char 0x58 +db 088h, 050h, 050h, 020h, 020h, 020h, 000h, 000h ; char 0x59 +db 0F0h, 020h, 020h, 040h, 040h, 0F0h, 000h, 000h ; char 0x5A +db 060h, 040h, 040h, 040h, 040h, 040h, 040h, 060h ; char 0x5B +db 040h, 020h, 020h, 020h, 010h, 010h, 008h, 000h ; char 0x5C +db 030h, 010h, 010h, 010h, 010h, 010h, 010h, 030h ; char 0x5D +db 020h, 050h, 050h, 000h, 000h, 000h, 000h, 000h ; char 0x5E +db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0F8h ; char 0x5F +db 020h, 000h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0x60 +db 000h, 000h, 078h, 008h, 078h, 078h, 000h, 000h ; char 0x61 +db 040h, 040h, 078h, 048h, 048h, 070h, 000h, 000h ; char 0x62 +db 000h, 000h, 030h, 040h, 040h, 070h, 000h, 000h ; char 0x63 +db 010h, 010h, 070h, 090h, 090h, 0F0h, 000h, 000h ; char 0x64 +db 000h, 000h, 038h, 078h, 040h, 038h, 000h, 000h ; char 0x65 +db 038h, 020h, 0F0h, 020h, 020h, 020h, 000h, 000h ; char 0x66 +db 000h, 000h, 0F0h, 090h, 0F0h, 080h, 0F0h, 0F0h ; char 0x67 +db 040h, 040h, 078h, 048h, 048h, 048h, 000h, 000h ; char 0x68 +db 010h, 000h, 070h, 010h, 010h, 078h, 000h, 000h ; char 0x69 +db 010h, 000h, 070h, 010h, 010h, 010h, 010h, 070h ; char 0x6A +db 040h, 040h, 050h, 060h, 050h, 048h, 000h, 000h ; char 0x6B +db 070h, 010h, 010h, 010h, 010h, 078h, 000h, 000h ; char 0x6C +db 000h, 000h, 0F8h, 0A8h, 0A8h, 0A8h, 000h, 000h ; char 0x6D +db 000h, 000h, 078h, 048h, 048h, 048h, 000h, 000h ; char 0x6E +db 000h, 000h, 060h, 090h, 090h, 060h, 000h, 000h ; char 0x6F +db 000h, 000h, 078h, 048h, 048h, 070h, 040h, 040h ; char 0x70 +db 000h, 000h, 070h, 090h, 090h, 0F0h, 010h, 010h ; char 0x71 +db 000h, 000h, 078h, 048h, 040h, 040h, 000h, 000h ; char 0x72 +db 000h, 000h, 078h, 060h, 018h, 078h, 000h, 000h ; char 0x73 +db 000h, 040h, 0F0h, 040h, 040h, 070h, 000h, 000h ; char 0x74 +db 000h, 000h, 048h, 048h, 048h, 078h, 000h, 000h ; char 0x75 +db 000h, 000h, 050h, 050h, 050h, 020h, 000h, 000h ; char 0x76 +db 000h, 000h, 088h, 0B0h, 070h, 050h, 000h, 000h ; char 0x77 +db 000h, 000h, 088h, 070h, 050h, 088h, 000h, 000h ; char 0x78 +db 000h, 000h, 050h, 050h, 050h, 020h, 020h, 0C0h ; char 0x79 +db 000h, 000h, 070h, 020h, 020h, 070h, 000h, 000h ; char 0x7A +db 030h, 020h, 020h, 040h, 020h, 020h, 020h, 030h ; char 0x7B +db 020h, 020h, 020h, 020h, 020h, 020h, 020h, 020h ; char 0x7C +db 060h, 020h, 020h, 010h, 020h, 020h, 020h, 060h ; char 0x7D +db 000h, 000h, 000h, 0D0h, 070h, 000h, 000h, 000h ; char 0x7E +db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x7F +db 0E0h, 040h, 070h, 048h, 048h, 050h, 000h, 000h ; char 0x80 +db 070h, 040h, 040h, 040h, 040h, 040h, 000h, 000h ; char 0x81 +db 000h, 000h, 000h, 000h, 000h, 020h, 020h, 040h ; char 0x82 +db 020h, 000h, 070h, 040h, 040h, 040h, 000h, 000h ; char 0x83 +db 000h, 000h, 000h, 000h, 000h, 050h, 0F0h, 000h ; char 0x84 +db 000h, 000h, 000h, 000h, 000h, 0A8h, 000h, 000h ; char 0x85 +db 020h, 070h, 020h, 020h, 020h, 000h, 000h, 000h ; char 0x86 +db 020h, 070h, 020h, 020h, 070h, 020h, 000h, 000h ; char 0x87 +db 030h, 040h, 0E0h, 040h, 0E0h, 070h, 000h, 000h ; char 0x88 +db 0E0h, 0E0h, 038h, 0C0h, 0FCh, 0FCh, 000h, 000h ; char 0x89 +db 0E0h, 0A0h, 0B8h, 0A8h, 0A8h, 0B8h, 000h, 000h ; char 0x8A +db 000h, 000h, 020h, 040h, 040h, 020h, 000h, 000h ; char 0x8B +db 0A0h, 0A0h, 0F8h, 0A8h, 0A8h, 0B8h, 000h, 000h ; char 0x8C +db 048h, 050h, 060h, 060h, 050h, 048h, 000h, 000h ; char 0x8D +db 0E0h, 040h, 078h, 048h, 048h, 048h, 000h, 000h ; char 0x8E +db 088h, 088h, 088h, 088h, 088h, 0F8h, 020h, 000h ; char 0x8F +db 040h, 0E0h, 040h, 078h, 048h, 048h, 008h, 010h ; char 0x90 +db 010h, 020h, 020h, 000h, 000h, 000h, 000h, 000h ; char 0x91 +db 020h, 020h, 040h, 000h, 000h, 000h, 000h, 000h ; char 0x92 +db 050h, 0A0h, 0A0h, 000h, 000h, 000h, 000h, 000h ; char 0x93 +db 050h, 050h, 0A0h, 000h, 000h, 000h, 000h, 000h ; char 0x94 +db 000h, 000h, 070h, 070h, 070h, 000h, 000h, 000h ; char 0x95 +db 000h, 000h, 000h, 078h, 000h, 000h, 000h, 000h ; char 0x96 +db 000h, 000h, 000h, 0F8h, 000h, 000h, 000h, 000h ; char 0x97 +db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0x98 +db 0E8h, 0B8h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0x99 +db 000h, 000h, 060h, 078h, 068h, 0B8h, 000h, 000h ; char 0x9A +db 000h, 000h, 020h, 010h, 010h, 020h, 000h, 000h ; char 0x9B +db 000h, 000h, 0A0h, 0F8h, 0A8h, 0B8h, 000h, 000h ; char 0x9C +db 020h, 000h, 058h, 070h, 050h, 048h, 000h, 000h ; char 0x9D +db 0F0h, 040h, 078h, 048h, 048h, 048h, 000h, 000h ; char 0x9E +db 000h, 000h, 050h, 050h, 050h, 070h, 020h, 000h ; char 0x9F +db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0xA0 +db 050h, 050h, 050h, 020h, 020h, 040h, 000h, 000h ; char 0xA1 +db 070h, 000h, 050h, 050h, 050h, 020h, 020h, 0C0h ; char 0xA2 +db 070h, 010h, 010h, 010h, 010h, 070h, 000h, 000h ; char 0xA3 +db 088h, 070h, 050h, 050h, 070h, 088h, 000h, 000h ; char 0xA4 +db 070h, 040h, 040h, 040h, 040h, 040h, 000h, 000h ; char 0xA5 +db 020h, 020h, 020h, 000h, 020h, 020h, 020h, 020h ; char 0xA6 +db 070h, 040h, 070h, 048h, 038h, 008h, 078h, 000h ; char 0xA7 +db 070h, 040h, 070h, 040h, 040h, 070h, 000h, 000h ; char 0xA8 +db 070h, 088h, 0A8h, 0A8h, 088h, 070h, 000h, 000h ; char 0xA9 +db 070h, 080h, 0F0h, 080h, 080h, 070h, 000h, 000h ; char 0xAA +db 000h, 048h, 090h, 090h, 048h, 000h, 000h, 000h ; char 0xAB +db 000h, 000h, 000h, 078h, 008h, 000h, 000h, 000h ; char 0xAC +db 000h, 000h, 000h, 070h, 000h, 000h, 000h, 000h ; char 0xAD +db 070h, 088h, 0A8h, 070h, 000h, 000h, 000h, 000h ; char 0xAE +db 070h, 020h, 020h, 020h, 020h, 070h, 000h, 000h ; char 0xAF +db 078h, 048h, 078h, 000h, 000h, 000h, 000h, 000h ; char 0xB0 +db 000h, 020h, 0F8h, 020h, 000h, 0F8h, 000h, 000h ; char 0xB1 +db 070h, 020h, 020h, 020h, 020h, 070h, 000h, 000h ; char 0xB2 +db 010h, 000h, 070h, 010h, 010h, 078h, 000h, 000h ; char 0xB3 +db 000h, 010h, 070h, 040h, 040h, 040h, 000h, 000h ; char 0xB4 +db 000h, 000h, 048h, 048h, 048h, 07Ch, 040h, 040h ; char 0xB5 +db 070h, 0D0h, 0D0h, 050h, 010h, 010h, 070h, 000h ; char 0xB6 +db 000h, 000h, 000h, 020h, 000h, 000h, 000h, 000h ; char 0xB7 +db 050h, 000h, 038h, 078h, 040h, 038h, 000h, 000h ; char 0xB8 +db 0D8h, 0D8h, 0C0h, 0D8h, 0C0h, 0C0h, 000h, 000h ; char 0xB9 +db 000h, 000h, 038h, 078h, 040h, 038h, 000h, 000h ; char 0xBA +db 090h, 048h, 048h, 090h, 000h, 000h, 000h, 000h ; char 0xBB +db 010h, 000h, 070h, 010h, 010h, 010h, 010h, 070h ; char 0xBC +db 038h, 040h, 060h, 018h, 008h, 070h, 000h, 000h ; char 0xBD +db 000h, 000h, 078h, 060h, 018h, 078h, 000h, 000h ; char 0xBE +db 050h, 000h, 070h, 010h, 010h, 078h, 000h, 000h ; char 0xBF +db 020h, 050h, 050h, 050h, 070h, 050h, 000h, 000h ; char 0xC0 +db 078h, 040h, 070h, 048h, 048h, 070h, 000h, 000h ; char 0xC1 +db 078h, 048h, 070h, 048h, 048h, 070h, 000h, 000h ; char 0xC2 +db 070h, 040h, 040h, 040h, 040h, 040h, 000h, 000h ; char 0xC3 +db 070h, 050h, 050h, 050h, 050h, 0F8h, 088h, 000h ; char 0xC4 +db 070h, 040h, 070h, 040h, 040h, 070h, 000h, 000h ; char 0xC5 +db 0A8h, 070h, 070h, 070h, 0A8h, 0A8h, 000h, 000h ; char 0xC6 +db 0F0h, 010h, 0E0h, 010h, 010h, 0E0h, 000h, 000h ; char 0xC7 +db 048h, 058h, 058h, 068h, 068h, 048h, 000h, 000h ; char 0xC8 +db 048h, 058h, 058h, 068h, 068h, 048h, 000h, 000h ; char 0xC9 +db 048h, 050h, 060h, 060h, 050h, 048h, 000h, 000h ; char 0xCA +db 0E0h, 0A0h, 0A0h, 0A0h, 0A0h, 020h, 000h, 000h ; char 0xCB +db 010h, 0B0h, 0B0h, 050h, 010h, 010h, 000h, 000h ; char 0xCC +db 090h, 090h, 0F0h, 090h, 090h, 090h, 000h, 000h ; char 0xCD +db 070h, 088h, 088h, 088h, 088h, 070h, 000h, 000h ; char 0xCE +db 078h, 048h, 048h, 048h, 048h, 048h, 000h, 000h ; char 0xCF +db 070h, 048h, 048h, 070h, 040h, 040h, 000h, 000h ; char 0xD0 +db 070h, 080h, 080h, 080h, 080h, 070h, 000h, 000h ; char 0xD1 +db 0F8h, 020h, 020h, 020h, 020h, 020h, 000h, 000h ; char 0xD2 +db 050h, 050h, 050h, 020h, 020h, 040h, 000h, 000h ; char 0xD3 +db 020h, 070h, 0A8h, 0A8h, 070h, 020h, 000h, 000h ; char 0xD4 +db 088h, 050h, 020h, 020h, 050h, 088h, 000h, 000h ; char 0xD5 +db 050h, 050h, 050h, 050h, 050h, 078h, 008h, 000h ; char 0xD6 +db 090h, 090h, 090h, 070h, 010h, 010h, 000h, 000h ; char 0xD7 +db 0A8h, 0A8h, 0A8h, 0A8h, 0A8h, 0F8h, 000h, 000h ; char 0xD8 +db 0A8h, 0A8h, 0A8h, 0A8h, 0A8h, 0F8h, 008h, 000h ; char 0xD9 +db 0C0h, 040h, 070h, 048h, 048h, 070h, 000h, 000h ; char 0xDA +db 090h, 090h, 0F0h, 0B0h, 0B0h, 0D0h, 000h, 000h ; char 0xDB +db 040h, 040h, 070h, 048h, 048h, 070h, 000h, 000h ; char 0xDC +db 070h, 008h, 078h, 008h, 008h, 070h, 000h, 000h ; char 0xDD +db 0B8h, 0A8h, 0E8h, 0A8h, 0A8h, 0B8h, 000h, 000h ; char 0xDE +db 070h, 090h, 090h, 070h, 050h, 090h, 000h, 000h ; char 0xDF +db 000h, 000h, 078h, 008h, 078h, 078h, 000h, 000h ; char 0xE0 +db 060h, 078h, 048h, 048h, 030h, 000h, 000h, 000h ; char 0xE1 +db 000h, 000h, 078h, 070h, 048h, 078h, 000h, 000h ; char 0xE2 +db 000h, 000h, 070h, 040h, 040h, 040h, 000h, 000h ; char 0xE3 +db 000h, 000h, 070h, 050h, 050h, 0F8h, 088h, 000h ; char 0xE4 +db 000h, 000h, 038h, 078h, 040h, 038h, 000h, 000h ; char 0xE5 +db 000h, 000h, 0A8h, 070h, 070h, 0A8h, 000h, 000h ; char 0xE6 +db 000h, 000h, 078h, 030h, 008h, 078h, 000h, 000h ; char 0xE7 +db 000h, 000h, 048h, 058h, 068h, 048h, 000h, 000h ; char 0xE8 +db 070h, 000h, 048h, 058h, 068h, 048h, 000h, 000h ; char 0xE9 +db 000h, 000h, 058h, 070h, 050h, 048h, 000h, 000h ; char 0xEA +db 000h, 000h, 070h, 050h, 050h, 090h, 000h, 000h ; char 0xEB +db 000h, 000h, 050h, 070h, 0B0h, 088h, 000h, 000h ; char 0xEC +db 000h, 000h, 048h, 078h, 048h, 048h, 000h, 000h ; char 0xED +db 000h, 000h, 060h, 090h, 090h, 060h, 000h, 000h ; char 0xEE +db 000h, 000h, 078h, 048h, 048h, 048h, 000h, 000h ; char 0xEF +db 000h, 000h, 078h, 048h, 048h, 070h, 040h, 040h ; char 0xF0 +db 000h, 000h, 030h, 040h, 040h, 070h, 000h, 000h ; char 0xF1 +db 000h, 000h, 0F8h, 020h, 020h, 020h, 000h, 000h ; char 0xF2 +db 000h, 000h, 050h, 050h, 050h, 020h, 020h, 0C0h ; char 0xF3 +db 020h, 020h, 078h, 0A8h, 0A8h, 070h, 020h, 020h ; char 0xF4 +db 000h, 000h, 088h, 070h, 050h, 088h, 000h, 000h ; char 0xF5 +db 000h, 000h, 050h, 050h, 050h, 078h, 008h, 000h ; char 0xF6 +db 000h, 000h, 048h, 078h, 008h, 008h, 000h, 000h ; char 0xF7 +db 000h, 000h, 0A8h, 0A8h, 0A8h, 0F8h, 000h, 000h ; char 0xF8 +db 000h, 000h, 0A8h, 0A8h, 0A8h, 0F8h, 008h, 000h ; char 0xF9 +db 000h, 000h, 0C0h, 078h, 048h, 078h, 000h, 000h ; char 0xFA +db 000h, 000h, 090h, 0F0h, 0B0h, 0F0h, 000h, 000h ; char 0xFB +db 000h, 000h, 040h, 078h, 048h, 078h, 000h, 000h ; char 0xFC +db 000h, 000h, 070h, 078h, 008h, 070h, 000h, 000h ; char 0xFD +db 000h, 000h, 0B0h, 0F0h, 0B0h, 0B0h, 000h, 000h ; char 0xFE +db 000h, 000h, 0F0h, 090h, 070h, 090h, 000h, 000h ; char 0xFF diff --git a/poker.asm b/poker.asm new file mode 100644 index 0000000..8c3c843 --- /dev/null +++ b/poker.asm @@ -0,0 +1,15144 @@ +.386 +.model flat, stdcall +option casemap:none + +includelib kernel32.lib +includelib winmm.lib +includelib user32.lib +includelib ws2_32.lib +includelib gdi32.lib + + +STD_INPUT_HANDLE equ -10 +STD_OUTPUT_HANDLE equ -11 +VK_RETURN equ 0Dh +VK_SPACE equ 20h +VK_M equ 4Dh +FLIP_DELAY equ 650 +FLIP_FINAL_DELAY equ 850 +GENERIC_READ equ 80000000h +GENERIC_WRITE equ 40000000h +OPEN_EXISTING equ 3 +CREATE_ALWAYS equ 2 +FILE_ATTRIBUTE_NORMAL equ 80h +INVALID_HANDLE_VALUE equ -1 +SAVE_MAGIC equ 31435653h +SAVE_SIGN_SIZE equ 276 +SAVE_FILE_SIZE equ 280 +SAVE_SALT equ 0A57C0DEh +ENABLE_VIRTUAL_TERMINAL_PROCESSING equ 0004h +COLOR_DEFAULT equ 07h +COLOR_TITLE equ 0Bh +COLOR_MONEY equ 0Ah +COLOR_WARN equ 0Eh +COLOR_BAD equ 0Ch +COLOR_CARD equ 0Fh +COLOR_RED_CARD equ 0Ch +COLOR_BACK_CARD equ 08h +COLOR_TABLE equ 02h +COLOR_WOOD equ 06h +AF_INET equ 2 +SOCK_STREAM equ 1 +IPPROTO_TCP equ 6 +INADDR_ANY equ 0 +SOCKET_ERROR equ -1 +ONLINE_PORT_NET equ 8769h +ONLINE_MAGIC equ 4E4C4E31h +ONLINE_GAME_DICE equ 1 +ONLINE_GAME_RR equ 2 + +ExitProcess PROTO :DWORD +GetStdHandle PROTO :DWORD +WriteFile PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD +WriteConsoleA PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD +WriteConsoleW PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD +ReadFile PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD +SetConsoleOutputCP PROTO :DWORD +SetConsoleCP PROTO :DWORD +MultiByteToWideChar PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD +WideCharToMultiByte PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD +GetTickCount PROTO +GetLocalTime PROTO :DWORD +GetAsyncKeyState PROTO :DWORD +GetEnvironmentVariableA PROTO :DWORD, :DWORD, :DWORD +CreateDirectoryA PROTO :DWORD, :DWORD +Sleep PROTO :DWORD +WinExec PROTO :DWORD, :DWORD +SetConsoleCursorPosition PROTO :DWORD, :DWORD +SetConsoleScreenBufferSize PROTO :DWORD, :DWORD +SetConsoleWindowInfo PROTO :DWORD, :DWORD, :DWORD +SetConsoleTextAttribute PROTO :DWORD, :DWORD +GetConsoleScreenBufferInfo PROTO :DWORD, :DWORD +GetConsoleMode PROTO :DWORD, :DWORD +SetConsoleMode PROTO :DWORD, :DWORD +FillConsoleOutputCharacterA PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD +mciSendStringA PROTO :DWORD, :DWORD, :DWORD, :DWORD +waveOutSetVolume PROTO :DWORD, :DWORD +AnimFrameDelay PROTO :DWORD +CreateFileA PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD +CloseHandle PROTO :DWORD +FindFirstFileA PROTO :DWORD, :DWORD +FindNextFileA PROTO :DWORD, :DWORD +FindClose PROTO :DWORD +WSAStartup PROTO :DWORD, :DWORD +WSACleanup PROTO +socket PROTO :DWORD, :DWORD, :DWORD +bind PROTO :DWORD, :DWORD, :DWORD +listen PROTO :DWORD, :DWORD +accept PROTO :DWORD, :DWORD, :DWORD +connect PROTO :DWORD, :DWORD, :DWORD +send PROTO :DWORD, :DWORD, :DWORD, :DWORD +recv PROTO :DWORD, :DWORD, :DWORD, :DWORD +closesocket PROTO :DWORD +inet_addr PROTO :DWORD +WSAGetLastError PROTO +MoveCursor PROTO :DWORD, :DWORD +PrintSlotSymbol PROTO :DWORD +RandomRange PROTO :DWORD +PrintUInt PROTO :DWORD +UnlockAchievement PROTO :DWORD, :DWORD +ShowBestiaryPage PROTO :DWORD, :DWORD, :DWORD + +.data +; === Ãëîáàëüíûå äåñêðèïòîðû, áóôåðû êîíñîëè, RNG è âðåìåííàÿ ïàìÿòü === +hOut dd 0 +hIn dd 0 +charsWritten dd 0 +charsRead dd 0 +consoleMode dd 0 +printLen dd 0 +wideLen dd 0 +seed dd 0 +inputBuffer db 32 dup(0) +cheatBuffer db 32 dup(0) +wideBuffer dw 4096 dup(0) +utf8Buffer db 8192 dup(0) +frameBuffer db 32768 dup(0) +deckUsed db 52 dup(0) +onlineWsaData db 400 dup(0) +onlineAddr db 16 dup(0) +onlineIp db 32 dup(0) +onlineListenSock dd -1 +onlinePeerSock dd -1 +onlineWsaReady dd 0 +onlinePacket dd 0, 0 +onlineLocalRoll dd 0 +onlineRemoteRoll dd 0 +onlineGameMode dd 0 +onlineHostIp dd 0 +onlineAction dd 1 +consoleRectTiny dw 0, 0, 119, 34 +consoleRect160 dw 0, 0, 159, 44 +consoleRect140 dw 0, 0, 139, 39 +consoleRect120 dw 0, 0, 119, 34 + +; === Îáùèå ñ÷åò÷èêè î÷êîâ è ñîñòîÿíèå ñòàðûõ êàðòî÷íûõ ðåæèìîâ === +playerTotal dd 0 +dealerTotal dd 0 +playerAces dd 0 +dealerAces dd 0 +playerCards dd 0 +; === Ñîñòîÿíèå CloverPit / ñëîò-ìàøèí: ñåòêà, âûïëàòû, êîìáèíàöèè === +slotA dd 0 +slotB dd 0 +slotC dd 0 +slotD dd 0 +slotE dd 0 +slotMatch dd 0 +slotWinMask dd 0 +slotCurrentCell dd 0 +slotBestMultiplier dd 0 +slotComboNamePtr dd 0 +slotBlockMask dd 0 +slotComboCount dd 0 +slotJackpotHit dd 0 +slotComboNames dd 32 dup(0) +slotComboMults dd 32 dup(0) +slotGrid dd 15 dup(0) +slotVisible dd 0 +; === Îáùàÿ êàðòî÷íàÿ ìîäåëü: ðóêè èãðîêà, AI è êàðòû íà ñòîëå === +playerHand21 dd 10 dup(0) +aiHand21 dd 10 dup(0) +communityHand dd 5 dup(0) +pokerPlayerEvalHand dd 7 dup(0) +pokerAIEvalHand dd 7 dup(0) +playerCnt21 dd 0 +aiCnt21 dd 0 +communityCnt dd 0 +revealAI21 dd 0 +dangerLvl21 dd 0 +cardsLeft21 dd 0 +rowIndex dd 0 +pokerPlayerScore dd 0 +pokerAIScore dd 0 +pokerEvalCount dd 0 +; === Ýêîíîìèêà àêêàóíòà: áàíê, öåëü, ñòàâêà è ÷èò-ôëàãè === +bankroll dd 10000 +targetBank dd 50000 +currentBet dd 0 +cheatLuckyWin dd 0 +cheatGodMode dd 0 +cheatSlotJackpot dd 0 +settingsVolume dd 10 +settingsLowSpec dd 0 +settingsIntroEnabled dd 1 +settingsDbdWindowEnabled dd 0 +animFrameCounter dd 0 +animWidth dd 0 +animHeight dd 0 +secretEndingSeen dd 0 +vipTaxAmount dd 0 +; === Êðóïüå-êîììåíòàòîð: ÷òåíèå ôðàç èç dealer_phrases.txt === +dealerFileHandle dd 0 +dealerLineLen dd 0 +dealerPhraseCount dd 0 +dealerPhrasePick dd 0 +dealerScanMode dd 0 +dealerWantedTag db 0 +; === Ìàãàçèí: êóïëåííûå ðóáàøêè, âûáðàííàÿ ðóáàøêà è òàëèñìàíû === +shopBackOwned dd 1 +shopBackStyle dd 0 +shopCharmLevel dd 0 +shopCharmUses dd 0 +achievements dd 0 +pokerRaiseAmount dd 0 +pokerAIRaiseAmount dd 0 +; === Ôàéëû, àêêàóíòû, ñîõðàíåíèÿ, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ === +saveHandle dd 0 +achievementHandle dd 0 +findHandle dd 0 +danceHandle dd 0 +danceBytes dd 0 +frameBytes dd 0 +introLoopSeen dd 0 +introSkipLoop dd 0 +accountCount dd 0 +selectedAccount dd 0 +accountNameLen dd 0 +saveBuffer dd 80 dup(0) +gamesPlayed dd 0 +gamesWon dd 0 +gamesLost dd 0 +gamesDrawn dd 0 +bestWin dd 0 +bestLoss dd 0 +currentGameId dd 0 +gameStatsPlayed dd 11 dup(0) +gameStatsWon dd 11 dup(0) +gameStatsLost dd 11 dup(0) +gameStatsDraw dd 11 dup(0) +leaderBestBank dd 0 +leaderBestWins dd 0 +leaderBestLosses dd 0 +leaderValidCount dd 0 +leaderScanIndex dd 0 +leaderAccountPtr dd 0 +leaderBestGameWins dd 11 dup(0) +leaderBestGameLosses dd 11 dup(0) +leaderBestBankName db 64 dup(0) +leaderBestWinsName db 64 dup(0) +leaderBestLossName db 64 dup(0) +leaderBestGameWinNames db 11 dup(64 dup(0)) +leaderBestGameLossNames db 11 dup(64 dup(0)) +; === Íàñòðîéêè ñëîæíîñòè, âðåìåííûå ïåðåìåííûå ïîêåðà è ìèíè-èãð === +aiDifficulty dd 2 +bankRecovered dd 0 +saveTampered dd 0 +pokerReplaceIndex dd 0 +pokerReplaced dd 0 +pokerStraight dd 0 +pokerFlush dd 0 +pokerHigh dd 0 +pokerFour dd 0 +pokerTrip dd 0 +pokerPairHigh dd 0 +pokerPairLow dd 0 +; === ×åðåïà è øàðèê: ïîçèöèÿ øàðèêà, âûáîð è ÷èñëî ïåðåìåøèâàíèé === +skullBallPos dd 0 +skullGuess dd 0 +skullStep dd 0 +skullMax dd 0 +; === Ðóññêàÿ ðóëåòêà: áàðàáàí, ïàòðîíû, õîä è ìíîæèòåëü === +rrBulletMask dd 0 +rrBullets dd 0 +rrChamber dd 0 +rrTurn dd 0 +rrPayout dd 0 +; === Buckshot Roulette: ïàòðîíû, çäîðîâüå, ïðåäìåòû è ñîñòîÿíèå õîäà === +bsShells dd 8 dup(0) +bsShellIndex dd 0 +bsShellCount dd 0 +bsLiveCount dd 0 +bsBlankCount dd 0 +bsPlayerHP dd 0 +bsAIHP dd 0 +bsTurn dd 0 +bsDamage dd 1 +bsKnownShell dd 0FFFFFFFFh +bsSkipPlayer dd 0 +bsSkipAI dd 0 +bsPlayerGlass dd 0 +bsPlayerSaw dd 0 +bsPlayerBeer dd 0 +bsPlayerCuffs dd 0 +bsAIGlass dd 0 +bsAISaw dd 0 +bsAIBeer dd 0 +bsAICuffs dd 0 +bsTarget dd 0 +bsShell dd 0 +bsAction dd 0 +; === Ìèíè-èãðû îðåë/ðåøêà, êîñòè è êàçèíî-ðóëåòêà === +coinPick dd 0 +coinResult dd 0 +diceA dd 0 +diceB dd 0 +diceSum dd 0 +diceChoice dd 0 +casinoRouletteBetType dd 0 +casinoRouletteBetNumber dd 0 +casinoRouletteResult dd 0 +casinoRouletteResultIndex dd 0 +casinoRouletteSpinIndex dd 0 +casinoRouletteSpinSteps dd 0 +casinoRouletteSpinCounter dd 0 +casinoRouletteVisibleCount dd 0 +; === Äóðàê: ðóêè, êîëîäà, êîçûðü, ñòîë àòàêè è çàùèòû === +durakPlayerHand dd 40 dup(0) +durakAIHand dd 40 dup(0) +durakPlayerCnt dd 0 +durakAICnt dd 0 +durakDeckLeft dd 0 +durakTrumpCard dd 0 +durakTrumpSuit dd 0 +durakAttackCard dd 0FFFFFFFFh +durakDefenseCard dd 0FFFFFFFFh +durakPlayerTurn dd 1 +durakChoice dd 0 +durakTableCnt dd 0 +durakAttackCards dd 6 dup(0) +durakDefenseCards dd 6 dup(0FFFFFFFFh) +durakTempHand dd 6 dup(0) +durakSafeTurns dd 0 +durakLoopGuard dd 0 +; === Skill Check, ñòðåññ, ïîäîçðåíèå êàçèíî è òóðíèð-áàøíÿ === +skillNeedle dd 0 +skillDir dd 1 +skillSuccessStart dd 0 +skillSuccessEnd dd 0 +skillPerfectPos dd 0 +skillGaugeIndex dd 0 +skillFrameCount dd 0 +skillHits dd 0 +skillMisses dd 0 +skillResult dd 0 +skillPerfects dd 0 +skillDelay dd 45 +casinoSuspicion dd 0 +stressLevel dd 0 +lastGameResult dd 0 +tournamentStage dd 0 +tournamentMode dd 0 +dailyDateKey dd 0 +dailyRewardMask dd 0 +dailyProgressPacked dd 0 +dailyTaskPacked dd 0 +systemTime dw 8 dup(0) +pulseCycles dd 0 +; === Âðåìåííûå ñ÷åò÷èêè ðàíãîâ è ìàñòåé äëÿ îöåíêè ïîêåðà === +rankCounts db 13 dup(0) +suitCounts db 4 dup(0) + +; === Òåêñò èíòåðôåéñà: ìåíþ, ñèñòåìíûå ñîîáùåíèÿ, áàíê è ñòàâêè === +nl db 13,10,0 +dotSpaceText db ". ",0 +clearLines db 13,10,13,10,13,10,13,10,13,10,13,10,0 + +titleText db "==============================",13,10 + db " ASSEMBLER CASINO",13,10 + db "==============================",13,10,0 +menuText db "1. Ìàãàçèí",13,10 + db "2. 21 / Î÷êî",13,10 + db "3. Poker",13,10 + db "4. CloverPit",13,10 + db "5. ×åðåïà è øàðèê",13,10 + db "6. Ðóññêàÿ ðóëåòêà",13,10 + db "7. Îðåë è ðåøêà",13,10 + db "8. Êîñòè",13,10 + db "9. Êàçèíî-ðóëåòêà",13,10 + db "10. Slot machine",13,10 + db "11. Äóðàê",13,10 + db "12. Êðþê: Skill Check",13,10 + db "13. Buckshot Roulette",13,10 + db "14. Íàáëþäàòåëü AI vs AI",13,10 + db "15. Îáó÷åíèå",13,10 + db "16. Äîñòèæåíèÿ",13,10 + db "17. Ñòàòèñòèêà ïî èãðàì",13,10 + db "18. Åæåäíåâíûå çàäàíèÿ",13,10 + db "19. Íàñòðîéêè",13,10 + db "20. Online Casino (Radmin)",13,10 + db "21. Umamusume Ñêà÷êè",13,10 + + db "25. 3D-ÊÀÇÈÍÎ (DOOM / Wolf3D Raycaster 2.5D) [NEW]",13,10 + + db "0. Exit",13,10,0 +choiceText db "Âûáîð: ",0 +badChoiceText db "Íåò òàêîãî ïóíêòà.",13,10,0 +accountMenuText db "1. Âîéòè â àêêàóíò",13,10 + db "2. Ñîçäàòü àêêàóíò",13,10,0 +accountPromptText db "Ââåäèòå èìÿ àêêàóíòà ëàòèíèöåé: ",0 +accountBadText db "Èìÿ äîëæíî ñîäåðæàòü õîòÿ áû îäíó áóêâó èëè öèôðó.",13,10,0 +accountLoginText db "Àêêàóíò çàãðóæåí: ",0 +accountCreateText db "Àêêàóíò ñîçäàí: ",0 +accountListTitle db "Âûáåðèòå àêêàóíò:",13,10,0 +accountNoFilesText db "Ñîõðàíåííûõ àêêàóíòîâ ïîêà íåò.",13,10,0 +accountSelectText db "Íîìåð àêêàóíòà: ",0 +pauseText db 13,10,"Íàæìèòå ëþáóþ êëàâèøó...",0 +bankText db "Âàø áàíê: $",0 +betText db "Ââåäèòå ñòàâêó: $",0 +betChosenText db "Âû ïîñòàâèëè $",0 +badBetText db "Ñòàâêà äîëæíà áûòü ÷èñëîì áîëüøå 0.",13,10,0 +tooBigBetText db "Ó âàñ íåò ñòîëüêî äåíåã.",13,10,0 +suspicionText db "Ïîäîçðåíèå êàçèíî: ",0 +suspicionCalmText db "òèõî",13,10,0 +suspicionWatchText db "çà òîáîé ñìîòðÿò",13,10,0 +suspicionHuntText db "îõðàíà ðÿäîì",13,10,0 +suspicionUpText db "Ïîäîçðåíèå âûðîñëî.",13,10,0 +suspicionFineText db "Îõðàíà çàìåòèëà ìóòíóþ èãðó. Øòðàô: $",0 +stressText db "Ñòðåññ ñòàâêè: ",0 +stressLowText db "ñïîêîéíî",13,10,0 +stressMidText db "ïóëüñ ðàñòåò",13,10,0 +stressHighText db "ðóêè äðîæàò",13,10,0 +stressMaxText db "ïàíèêà",13,10,0 +cheatMoveText db "Øóëåðñòâî: 3 - ïîäñìîòðåòü, 4 - ïîäìåíèòü êàðòó.",13,10,0 +cheatPeekText db "Òû íåçàìåòíî ïîäñìîòðåë êàðòó:",13,10,0 +cheatSwapText db "Òû ïîäìåíèë êàðòó ïîä ðóêàâîì.",13,10,0 +cheatNoTargetText db "Ñåé÷àñ íå÷åãî ïîäìåíÿòü.",13,10,0 +tournamentTitle db 13,10,"--- Ñåêðåòíûé ðåæèì: Àäñêàÿ áàøíÿ ---",13,10,0 +tournamentIntro db "Àäñêàÿ áàøíÿ êàçèíî: 10 ýòàïîâ ïîäðÿä. Ïðîèãðàë - íà÷èíàåøü çàíîâî.",13,10 + db "Âõîä ñêðûò. Êîä 666 ïðèíÿò. Ìóçûêó ìîæíî ìåíÿòü êëàâèøåé M ïåðåä ýòàïîì.",13,10,0 +tournamentStageText db 13,10,"Ýòàï áàøíè: ",0 +tournamentMusicHint db "M - ñëó÷àéíî ñìåíèòü ìóçûêó áàøíè, ëþáàÿ äðóãàÿ êëàâèøà - íà÷àòü ýòàï",13,10,0 +secretHellText db 13,10,"Ñåêðåòíûé êîä ïðèíÿò. Êàçèíî îïóñêàåò òåáÿ â Àäñêóþ áàøíþ...",13,10,0 +hellStageCurseText db "Ïðîêëÿòèå ýòàïà: ",0 +hellCurse1 db "êðóïüå áîëüøå íå ìîðãàåò.",13,10,0 +hellCurse2 db "ìóçûêà èãðàåò, äàæå åñëè òû ïðîèãðûâàåøü.",13,10,0 +hellCurse3 db "êàæäàÿ ñòàâêà ïàõíåò ñåðîé.",13,10,0 +hellCurse4 db "îõðàííèê óæå çíàåò òâîå èìÿ.",13,10,0 +tournamentFailText db 13,10,"Àäñêàÿ áàøíÿ çàêðûëà äâåðè. Òóðíèð íà÷èíàåòñÿ çàíîâî.",13,10,0 +tournamentWinText db 13,10,"ÒÛ ÂÛÆÈË Â ÀÄÑÊÎÉ ÁÀØÍÅ! Ñåêðåòíûé áîíóñ: $66600",13,10,0 +tournamentFire1 db 13,10," . * .",13,10," ASSEMBLER CASINO",13,10," . | .",13,10," ___ /---\ ___",13,10," /___\ | T | /___\",13,10,0 +tournamentFire2 db 13,10," * \ | / \ | / *",13,10," -- TOWER CLEARED --",13,10," * / | \ / | \ *",13,10," ___ /---\ ___",13,10," /___\ | 10| /___\",13,10,0 +tournamentFire3 db 13,10," * . * . * . * . * . * . *",13,10," $$$ FIREWORKS $$$",13,10," . * . * . * . * . * . * .",13,10," \ \ | / /",13,10," \__\_|_/__/",13,10,0 +tournamentFire4 db 13,10," ============ JACKPOT SKY ============",13,10," * * * * *",13,10," * CASINO CHAMPION *",13,10," * * * * *",13,10," =====================================",13,10,0 +dailyTitle db 13,10,"--- Åæåäíåâíûå çàäàíèÿ ---",13,10,0 +dailyIntro db "Êàæäûé êàëåíäàðíûé äåíü êàçèíî âûáèðàåò 3 çàäàíèÿ èç 40.",13,10,0 +dailyDateText db "Äàòà çàäàíèÿ: ",0 +dailyPoolText db "Ïóë çàäàíèé: 40. Ñåãîäíÿ âûáðàíî: 3",13,10,0 +dailySlashText db " / ",0 +dailyRewardText db " Íàãðàäà: $",0 +dailyClaimText db "Åæåäíåâíàÿ íàãðàäà ïîëó÷åíà: +$",0 +dailyDoneText db " [ïîëó÷åíî]",13,10,0 +dailyOpenText db " [â ïðîöåññå]",13,10,0 +settingsTitle db 13,10,"--- Íàñòðîéêè êàçèíî ---",13,10,0 +settingsMenuText db "1. Òèøå",13,10 + db "2. Ãðîì÷å",13,10 + db "3. Ïðîôèëü àíèìàöèé",13,10 + db "4. Ïåðåêëþ÷èòü èíòðî",13,10 + db "5. Ïåðåêëþ÷èòü DBD-îêíî",13,10 + db "0. Íàçàä",13,10 + db "Âûáîð: ",0 +settingsVolumeText db "Ãðîìêîñòü: ",0 +settingsVolumeHint db "0 - áåç çâóêà, 10 - ìàêñèìóì",13,10,0 +settingsModeText db "Ïðîôèëü àíèìàöèé: ",0 +settingsNormalText db "îáû÷íûé",13,10,0 +settingsLowText db "ñëàáûé ÏÊ",13,10,0 +settingsIntroText db "Èíòðî: ",0 +settingsDbdText db "DBD-îêíî: ",0 +settingsOnText db "âêë",13,10,0 +settingsOffText db "âûêë",13,10,0 +settingsCinematicText db "Cinematic - ìàêñèìóì",13,10,0 +settingsAdaptiveText db "Adaptive - ìÿã÷å",13,10,0 +settingsStableText db "Stable - ìåíüøå ðÿáè",13,10,0 +settingsAnimHintText db "Cinematic: âñå êàäðû; Adaptive: ìåíüøå ðÿáè; Stable: äëÿ ñëàáûõ ÏÊ.",13,10,0 +vipStatusText db "VIP-ñòàòóñ: ",0 +vipBronzeText db "Bronze",13,10,0 +vipSilverText db "Silver",13,10,0 +vipGoldText db "Gold",13,10,0 +vipDiamondText db "Diamond",13,10,0 +vipTaxText db "Êîìèññèÿ êàçèíî: $",0 +secretEndingTitle db 13,10,"========================================",13,10," ÊÀÇÈÍÎ ÏÐÈÇÍÀËÎ ÒÅÁß ÑÂÎÈÌ",13,10,"========================================",13,10,0 +secretEndingBody db "Òû ñîáðàë âñå äîñòèæåíèÿ, ñêóïèë ðóáàøêè è âûíåñ áàíê òàê, ÷òî êðóïüå áîëüøå íå ñïîðèò.",13,10,"Äâåðè ñëóæåáíîãî ëèôòà îòêðûâàþòñÿ. Íà òàáëè÷êå îäíà ôðàçà: HOUSE PLAYER.",13,10,"Ñåêðåòíàÿ êîíöîâêà îòêðûòà.",13,10,0 +secretEndingArt1 db " .---. .---. .---.",13,10," / $ / / VIP / / $ /",13,10," \\____/ \\____/ \\____/",13,10,0 +secretEndingArt2 db " ======= ASSEMBLER CASINO PRIVATE FLOOR =======",13,10," cards slots roulette secrets",13,10," =================================================",13,10,0 +dailyReadyText db " [ãîòîâî ê ïîëó÷åíèþ]",13,10,0 +dailyTaskName01 db "Ñûãðàòü 3 èãðû",0 +dailyTaskName02 db "Ñûãðàòü 5 èãð",0 +dailyTaskName03 db "Ñûãðàòü 7 èãð",0 +dailyTaskName04 db "Ïîáåäèòü 1 ðàç",0 +dailyTaskName05 db "Ïîáåäèòü 2 ðàçà",0 +dailyTaskName06 db "Ïîáåäèòü 3 ðàçà",0 +dailyTaskName07 db "Ïðîèãðàòü 1 ðàç",0 +dailyTaskName08 db "Ïðîèãðàòü 2 ðàçà",0 +dailyTaskName09 db "Ñäåëàòü íè÷üþ 1 ðàç",0 +dailyTaskName10 db "Ïîñòàâèòü îò $5000",0 +dailyTaskName11 db "Ïîñòàâèòü îò $5000 òðè ðàçà",0 +dailyTaskName12 db "Ïîñòàâèòü îò $10000",0 +dailyTaskName13 db "Ñûãðàòü â 21",0 +dailyTaskName14 db "Ïîáåäèòü â 21",0 +dailyTaskName15 db "Ñûãðàòü â Poker",0 +dailyTaskName16 db "Ïîáåäèòü â Poker",0 +dailyTaskName17 db "Ñûãðàòü â CloverPit",0 +dailyTaskName18 db "Ïîáåäèòü â CloverPit",0 +dailyTaskName19 db "Ñûãðàòü â ðóññêóþ ðóëåòêó",0 +dailyTaskName20 db "Ïîáåäèòü â ðóññêóþ ðóëåòêó",0 +dailyTaskName21 db "Ñûãðàòü â ÷åðåïà",0 +dailyTaskName22 db "Ïîáåäèòü â ÷åðåïà",0 +dailyTaskName23 db "Ñûãðàòü â îðëà è ðåøêó",0 +dailyTaskName24 db "Ïîáåäèòü â îðëà è ðåøêó",0 +dailyTaskName25 db "Ñûãðàòü â êîñòè",0 +dailyTaskName26 db "Ïîáåäèòü â êîñòè",0 +dailyTaskName27 db "Ñûãðàòü â êàçèíî-ðóëåòêó",0 +dailyTaskName28 db "Ïîáåäèòü â êàçèíî-ðóëåòêó",0 +dailyTaskName29 db "Ñûãðàòü â Slot machine",0 +dailyTaskName30 db "Ïîáåäèòü â Slot machine",0 +dailyTaskName31 db "Ñûãðàòü â äóðàêà",0 +dailyTaskName32 db "Ïîáåäèòü â äóðàêà",0 +dailyTaskName33 db "Ñûãðàòü â Skill Check",0 +dailyTaskName34 db "Ïîáåäèòü â Skill Check",0 +dailyTaskName35 db "Ñûãðàòü 2 êàðòî÷íûå èãðû",0 +dailyTaskName36 db "Ïîáåäèòü â êàðòî÷íîé èãðå",0 +dailyTaskName37 db "Ñûãðàòü 3 èãðû óäà÷è",0 +dailyTaskName38 db "Ïîáåäèòü 2 ðàçà â èãðàõ óäà÷è",0 +dailyTaskName39 db "Ñûãðàòü 2 îïàñíûå èãðû",0 +dailyTaskName40 db "Ïîáåäèòü â îïàñíîé èãðå",0 +dailyTaskNameTable dd OFFSET dailyTaskName01, OFFSET dailyTaskName02, OFFSET dailyTaskName03, OFFSET dailyTaskName04 + dd OFFSET dailyTaskName05, OFFSET dailyTaskName06, OFFSET dailyTaskName07, OFFSET dailyTaskName08 + dd OFFSET dailyTaskName09, OFFSET dailyTaskName10, OFFSET dailyTaskName11, OFFSET dailyTaskName12 + dd OFFSET dailyTaskName13, OFFSET dailyTaskName14, OFFSET dailyTaskName15, OFFSET dailyTaskName16 + dd OFFSET dailyTaskName17, OFFSET dailyTaskName18, OFFSET dailyTaskName19, OFFSET dailyTaskName20 + dd OFFSET dailyTaskName21, OFFSET dailyTaskName22, OFFSET dailyTaskName23, OFFSET dailyTaskName24 + dd OFFSET dailyTaskName25, OFFSET dailyTaskName26, OFFSET dailyTaskName27, OFFSET dailyTaskName28 + dd OFFSET dailyTaskName29, OFFSET dailyTaskName30, OFFSET dailyTaskName31, OFFSET dailyTaskName32 + dd OFFSET dailyTaskName33, OFFSET dailyTaskName34, OFFSET dailyTaskName35, OFFSET dailyTaskName36 + dd OFFSET dailyTaskName37, OFFSET dailyTaskName38, OFFSET dailyTaskName39, OFFSET dailyTaskName40 +cheatAppliedText db "CHEAT ACTIVATED: ",0 +cheatBadText db "Unknown cheat code.",13,10,0 +cheatMoneyText db "+$50000",13,10,0 +cheatSevenText db "+$7777",13,10,0 +cheatWinText db "next loss becomes win",13,10,0 +cheatGodText db "losses become wins",13,10,0 +cheatFairText db "fair play restored",13,10,0 +cheatGoalText db "bank moved to current goal",13,10,0 +cheatResetText db "bank reset to $10000",13,10,0 +cheatEasyText db "AI difficulty EASY",13,10,0 +cheatNormalText db "AI difficulty NORMAL",13,10,0 +cheatHardText db "AI difficulty HARD",13,10,0 +cheatJackpotText db "next slot spin is forced jackpot",13,10,0 +cheatRichText db "+$250000",13,10,0 +cheatDoubleText db "bank doubled",13,10,0 +cheatPoorText db "bank set to $1",13,10,0 +cheatShopText db "+$30000 for shop",13,10,0 +cheatBacksText db "all card backs unlocked",13,10,0 +cheatCharmText db "luck talisman maxed",13,10,0 +cheatNoCharmText db "luck talisman removed",13,10,0 +cheatAchText db "all achievements unlocked",13,10,0 +cheatSavedText db "CHEAT: loss changed into win.",13,10,0 +cheatCodeMoney db "MONEYRAIN",0 +cheatCodeSeven db "SEVENS",0 +cheatCodeWin db "WINNEXT",0 +cheatCodeGod db "GODMODE",0 +cheatCodeFair db "FAIRPLAY",0 +cheatCodeGoal db "GOAL",0 +cheatCodeReset db "RESETBANK",0 +cheatCodeEasy db "EASYAI",0 +cheatCodeNormal db "NORMALAI",0 +cheatCodeHard db "HARDAI",0 +cheatCodeJackpot db "JACKPOT",0 +cheatCodeRich db "HIGHROLLER",0 +cheatCodeDouble db "DOUBLECASH",0 +cheatCodePoor db "ONEBUCK",0 +cheatCodeShop db "SHOPPING",0 +cheatCodeBacks db "ALLBACKS",0 +cheatCodeCharm db "MAXCHARM",0 +cheatCodeNoCharm db "NOCHARM",0 +cheatCodeAch db "ACHIEVER",0 +moneyWinText db "Âûèãðûø: +$",0 +moneyLoseText db "Ïðîèãðûø: -$",0 +moneyDrawText db "Ñòàâêà âîçâðàùàåòñÿ.",13,10,0 +casinoKickText db 13,10,"Ó âàñ íå îñòàëîñü äåíåã. Âàñ âûâîäÿò èç êàçèíî.",13,10,0 +casinoExitText db "Íàæìèòå ëþáóþ êëàâèøó, ÷òîáû âûéòè...",0 +welcomeText db 13,10,"Äîáðî ïîæàëîâàòü â ASSEMBLER CASINO!",13,10,"Óäà÷à ëþáèò ñìåëûõ, íî êàçèíî ëþáèò ìàòåìàòèêó.",13,10,0 +difficultyText db 13,10,"Ñëîæíîñòü AI: 1 - Easy, 2 - Normal, 3 - Hard: ",0 +difficultyNowText db "Ñëîæíîñòü AI: ",0 +easyName db "Easy",13,10,0 +normalName db "Normal",13,10,0 +hardName db "Hard",13,10,0 +statsGamesText db "Èãð ñûãðàíî: ",0 +statsWinsText db "Ïîáåä: ",0 +statsLossText db "Ïîðàæåíèé: ",0 +statsDrawText db "Íè÷üèõ: ",0 +statsBestWinText db "Ìàêñ. âûèãðûø: $",0 +statsBestLossText db "Ìàêñ. ïðîèãðûø: $",0 +statsByGameTitle db 13,10,"--- Ñòàòèñòèêà è ëèäåðû êàçèíî ---",13,10,0 +statsLinePlayed db " èãð: ",0 +statsLineWins db " ïîáåä: ",0 +statsLineLoss db " ïîðàæåíèé: ",0 +statsLineDraw db " íè÷üèõ: ",0 +leaderCurrentTitle db "Òåêóùèé àêêàóíò:",13,10,0 +leaderTitle db 13,10,"Ëèäåðû ñðåäè âñåõ àêêàóíòîâ:",13,10,0 +leaderNoDataText db "Íåò ñîõðàíåíèé àêêàóíòîâ.",13,10,0 +leaderBankText db "Ñàìûé áîëüøîé áàíê: ",0 +leaderWinsText db "Áîëüøå âñåãî ïîáåä: ",0 +leaderLossText db "Áîëüøå âñåãî ïîðàæåíèé: ",0 +leaderGameTitle db 13,10,"Ëèäåðû ïî èãðàì:",13,10,0 +leaderGameWinText db " ïîáåäû: ",0 +leaderGameLossText db " ïîðàæåíèÿ: ",0 +leaderDashText db "-",0 +leaderOpenText db " (",0 +leaderCloseText db ")",0 +leaderMoneyPrefix db "$",0 +statsGame21 db "21 / Î÷êî",0 +statsGamePoker db "Poker",0 +statsGameClover db "CloverPit",0 +statsGameRR db "Ðóññêàÿ ðóëåòêà",0 +statsGameSkulls db "×åðåïà",0 +statsGameCoin db "Îðåë/ðåøêà",0 +statsGameDice db "Êîñòè",0 +statsGameCasinoRoulette db "Êàçèíî-ðóëåòêà",0 +statsGameClassicSlot db "Slot machine",0 +statsGameDurak db "Äóðàê",0 +statsGameSkillCheck db "Êðþê: Skill Check",0 +statsGameNames dd OFFSET statsGame21, OFFSET statsGamePoker, OFFSET statsGameClover, OFFSET statsGameRR, OFFSET statsGameSkulls + dd OFFSET statsGameCoin, OFFSET statsGameDice, OFFSET statsGameCasinoRoulette, OFFSET statsGameClassicSlot, OFFSET statsGameDurak + dd OFFSET statsGameSkillCheck +bankRecoveredText db "Ïîñëå ïðîøëîãî âèçèòà êàçèíî âûäàëî íîâûé ñòàðòîâûé áàíê: $10000",13,10,0 +saveTamperedText db "Ñîõðàíåíèå ïîâðåæäåíî èëè èçìåíåíî. Êàçèíî âûäàëî ÷èñòûé ñòàðòîâûé áàíê.",13,10,0 +goalText db "Öåëü èãðû: äîâåñòè áàíê äî $",0 +victoryText db 13,10,"+====================================+",13,10 + db "| ÄÆÅÊÏÎÒ ÆÈÇÍÈ |",13,10 + db "+====================================+",13,10,13,10,0 +victoryReachedText db "Òû ïîäíÿë áàíê äî $",0 +victoryTailText db "Îõðàíà óæå íåðâíè÷àåò.",13,10 + db "Êàçèíî ïðèçíàåò ïîðàæåíèå.",13,10,13,10 + db "Çàáèðàé âûèãðûø è óõîäè êðàñèâî.",13,10,0 +victoryExitText db "Íàæìèòå ëþáóþ êëàâèøó, ÷òîáû ïðîäîëæèòü èãðó...",0 +nextGoalText db "Ñëåäóþùàÿ öåëü: $",0 +croupierPrefix db 13,10,"Êðóïüå: ",0 +croupierWin1 db "Êðàñèâî. Ôèøêè èäóò ê âàì.",13,10,0 +croupierWin2 db "Ñòîë ñåãîäíÿ ÿâíî íà âàøåé ñòîðîíå.",13,10,0 +croupierWin3 db "Õîðîøèé óäàð ïî áàíêó êàçèíî.",13,10,0 +croupierLose1 db "Êàçèíî çàáèðàåò ñòàâêó.",13,10,0 +croupierLose2 db "Íå ëó÷øèé ðàñêëàä, íî âå÷åð åùå æèâîé.",13,10,0 +croupierLose3 db "Ôèøêè óõîäÿò ñî ñòîëà.",13,10,0 +croupierDraw1 db "Ñòàâêà îñòàåòñÿ ïðè âàñ.",13,10,0 +croupierDraw2 db "Íèêòî íå ñäâèíóë áàíê. Èãðàåì äàëüøå.",13,10,0 +croupierDraw3 db "Ðîâíî. Áåç ïîáåäèòåëÿ.",13,10,0 +croupierWinList dd OFFSET croupierWin1, OFFSET croupierWin2, OFFSET croupierWin3 +croupierLoseList dd OFFSET croupierLose1, OFFSET croupierLose2, OFFSET croupierLose3 +croupierDrawList dd OFFSET croupierDraw1, OFFSET croupierDraw2, OFFSET croupierDraw3 +dealerFileName db "assets\data\dealer_phrases.txt",0 +pulseTitleText db 13,10,"Ïóëüñ ñòàâêè:",13,10,0 +pulseFrame1 db " _/\_ ñïîêîéíî",13,10,0 +pulseFrame2 db " _/\/\_ íàïðÿæåíèå",13,10,0 +pulseFrame3 db " _/\/\/\_ ðèñê",13,10,0 +pulseFrame4 db " _/\/\/\/\_ ñåðäöå êîëîòèòñÿ",13,10,0 +pulseFrame5 db " _/\/\_/\_ âäîõ...",13,10,0 +observerTitle db 13,10,"--- Íàáëþäàòåëü AI vs AI ---",13,10,0 +observerIntro db "AI-1 è AI-2 èãðàþò 5 áûñòðûõ ðàóíäîâ â 21 áåç ñòàâîê.",13,10,0 +observerRoundText db 13,10,"Ðàóíä ",0 +observerAI1Text db "AI-1 î÷êè: ",0 +observerAI2Text db "AI-2 î÷êè: ",0 +observerWin1Text db "AI-1 çàáèðàåò ðàóíä.",13,10,0 +observerWin2Text db "AI-2 çàáèðàåò ðàóíä.",13,10,0 +observerDrawText db "Íè÷üÿ ìåæäó æåëåçêàìè.",13,10,0 +observerDoneText db 13,10,"Íàáëþäåíèå îêîí÷åíî.",13,10,0 +observerMenuText db "1. Ðóññêàÿ ðóëåòêà",13,10 + db "2. 21 / Î÷êî",13,10 + db "3. Poker",13,10 + db "4. Äóðàê",13,10 + db "0. Íàçàä",13,10 + db "Âûáîð: ",0 +observer21Title db 13,10,"--- AI vs AI: 21 / Î÷êî ---",13,10,0 +observerPokerTitle db 13,10,"--- AI vs AI: Poker ---",13,10,0 +observerDurakTitle db 13,10,"--- AI vs AI: Äóðàê ---",13,10,0 +observerRRTitle db 13,10,"--- AI vs AI: Ðóññêàÿ ðóëåòêà ---",13,10,0 +observerAI1CardsText db 13,10,"Êàðòû AI-1:",13,10,0 +observerAI2CardsText db 13,10,"Êàðòû AI-2:",13,10,0 +observerAI1RaiseText db "AI-1 ïîâûøàåò ñòàâêó.",13,10,0 +observerAI2RaiseText db "AI-2 ïîâûøàåò ñòàâêó.",13,10,0 +observerCallText db "Ñîïåðíèê îòâå÷àåò.",13,10,0 +observerFold1Text db "AI-1 äåëàåò ôîëä.",13,10,0 +observerFold2Text db "AI-2 äåëàåò ôîëä.",13,10,0 +observerShotAI1Text db "Âûñòðåë äîñòàëñÿ AI-1. Ïîáåäèë AI-2.",13,10,0 +observerShotAI2Text db "Âûñòðåë äîñòàëñÿ AI-2. Ïîáåäèë AI-1.",13,10,0 +shopMainMenuText db "1. Ðóáàøêè êàðò",13,10 + db "2. Òàëèñìàíû",13,10 + db "3. Áåñòèàðèé òàëèñìàíîâ",13,10 + db "0. Íàçàä",13,10 + db "Âûáîð: ",0 +shopBackTitle db 13,10,"--- Ìàãàçèí: ðóáàøêè êàðò ---",13,10,0 +shopCharmTitle db 13,10,"--- Ìàãàçèí: òàëèñìàíû ---",13,10,0 +shopBackMenuText db "1. Ñèíÿÿ ðóáàøêà êàðò - $3000",13,10 + db "2. Êðàñíàÿ ðóáàøêà êàðò - $3000",13,10 + db "3. Çîëîòàÿ ðóáàøêà êàðò - $10000",13,10 + db "4. Ðóáàøêà ×åðåï - $12000",13,10 + db "5. Rubashka CloverPit - $15000",13,10 + db "6. Rubashka Arcane kart - $17000",13,10 + db "7. Rubashka Noir kart - $18000",13,10 + db "8. Rubashka Diamond kart - $20000",13,10 + db "9. Rubashka Rider kart - $22000",13,10 + db "10. Rubashka Bee kart - $22000",13,10 + db "11. Rubashka Fan kart - $23000",13,10 + db "12. Rubashka Web kart - $24000",13,10 + db "0. Íàçàä",13,10 + db "Âûáîð: ",0 +shopCharmMenuText db "1. Òàëèñìàí Êëåâåð: 7%, 3 çàðÿäà - $12000",13,10 + db "2. Òàëèñìàí Êîëîêîë: 14%, 3 çàðÿäà, +4 ïîäîçðåíèÿ - $18000",13,10 + db "3. Òàëèñìàí Àëìàç: 21%, 3 çàðÿäà, +8 ïîäîçðåíèÿ - $25000",13,10 + db "4. Òàëèñìàí ×åðåï: 28%, 2 çàðÿäà, øòðàô ïîëîâèíà ñòàâêè - $32000",13,10 + db "5. Òàëèñìàí Ïàóòèíà: 35%, 1 çàðÿä, +20 ïîäîçðåíèÿ - $40000",13,10 + db "6. Òàëèñìàí Ï÷åëà: 12%, 5 çàðÿäîâ - $30000",13,10 + db "7. Òàëèñìàí Ëóíà: 18%, 4 çàðÿäà, +8 ïîäîçðåíèÿ - $36000",13,10 + db "8. Òàëèñìàí Êîðîíà: 24%, 2 çàðÿäà, +12 ïîäîçðåíèÿ - $52000",13,10 + db "9. Òàëèñìàí Çåðêàëî: 16%, 4 çàðÿäà, +6 ïîäîçðåíèÿ - $42000",13,10 + db "10. Òàëèñìàí Êîñòü: 10%, 6 çàðÿäîâ - $35000",13,10 + db "11. Êðîâàâàÿ ìîíåòà: 40%, 1 çàðÿä, øòðàô 25% ñòàâêè è +25 ïîäîçðåíèÿ - $65000",13,10 + db "12. Ïåñî÷íûå ÷àñû: 22%, 2 çàðÿäà, +15 ïîäîçðåíèÿ - $48000",13,10 + db "13. Ïîäêîâà: 9%, 8 çàðÿäîâ - $39000",13,10 + db "14. Ìàñêà äæîêåðà: 33%, 1 çàðÿä, +30 ïîäîçðåíèÿ - $70000",13,10 + db "15. Ïåðî ôåíèêñà: 26%, 2 çàðÿäà, +10 ïîäîçðåíèÿ - $56000",13,10 + db "16. Ñëîìàííûé êîìïàñ: 19%, 3 çàðÿäà, +12 ïîäîçðåíèÿ - $44000",13,10 + db "17. Çîëîòîé çóá: 15%, 5 çàðÿäîâ, øòðàô 20% ñòàâêè - $47000",13,10 + db "18. Õðóñòàëüíûé ãëàç: 31%, 1 çàðÿä, +18 ïîäîçðåíèÿ - $60000",13,10 + db "19. Ðæàâûé êëþ÷: 13%, 6 çàðÿäîâ - $41000",13,10 + db "20. ×åðíàÿ ñâå÷à: 38%, 1 çàðÿä, øòðàô 33% ñòàâêè è +35 ïîäîçðåíèÿ - $76000",13,10 + db "21. Ñ÷àñòëèâàÿ ôèøêà: 20%, 4 çàðÿäà - $50000",13,10 + db "22. Çìåèíîå êîëüöî: 29%, 2 çàðÿäà, +16 ïîäîçðåíèÿ - $62000",13,10 + db "23. Îñêîëîê òóçà: 17%, 5 çàðÿäîâ, +7 ïîäîçðåíèÿ - $53000",13,10 + db "24. Äîãîâîð ñ äüÿâîëîì: 50%, 1 çàðÿä, øòðàô 50% ñòàâêè è +45 ïîäîçðåíèÿ - $100000",13,10 + db "0. Íàçàä",13,10 + db "Âûáîð: ",0 +shopTitle db 13,10,"--- Ìàãàçèí êàçèíî ---",13,10,0 +shopMenuText db "1. Ñèíÿÿ ðóáàøêà êàðò - $3000",13,10 + db "2. Êðàñíàÿ ðóáàøêà êàðò - $3000",13,10 + db "3. Çîëîòàÿ ðóáàøêà êàðò - $10000",13,10 + db "4. Ðóáàøêà ×åðåï - $12000",13,10 + db "5. Ðóáàøêà CloverPit - $15000",13,10 + db "6. Òàëèñìàí Êëåâåð: 7%, 3 çàðÿäà - $12000",13,10 + db "7. Òàëèñìàí Êîëîêîë: 14%, 3 çàðÿäà - $18000",13,10 + db "8. Òàëèñìàí Àëìàç: 21%, 3 çàðÿäà - $25000",13,10 + db "9. Rubashka Arcane kart - $17000",13,10 + db "10. Rubashka Noir kart - $18000",13,10 + db "11. Rubashka Diamond kart - $20000",13,10 + db "12. Rubashka Rider kart - $22000",13,10 + db "13. Rubashka Bee kart - $22000",13,10 + db "14. Rubashka Fan kart - $23000",13,10 + db "15. Rubashka Web kart - $24000",13,10 + db "0. Íàçàä",13,10 + db "Âûáîð: ",0 +shopBackText db "Òåêóùàÿ ðóáàøêà: ",0 +shopBackGray db "Ñåðàÿ",13,10,0 +shopBackBlue db "Ñèíÿÿ âîëíà",13,10,0 +shopBackRed db "Êðàñíûé êðåñò",13,10,0 +shopBackGold db "Çîëîòîé áëåñê",13,10,0 +shopBackSkull db "×åðåï",13,10,0 +shopBackClover db "CloverPit",13,10,0 +shopBackArcane db "Arcane",13,10,0 +shopBackNoir db "Noir",13,10,0 +shopBackDiamond db "Diamond",13,10,0 +shopBackRider db "Rider",13,10,0 +shopBackBee db "Bee",13,10,0 +shopBackFan db "Fan",13,10,0 +shopBackWeb db "Web",13,10,0 +shopCharmText db "Òàëèñìàí: ",0 +shopCharmNone db "íåò",13,10,0 +shopCharmClover db "Êëåâåð",0 +shopCharmBell db "Êîëîêîë",0 +shopCharmDiamond db "Àëìàç",0 +shopCharmSkull db "×åðåï",0 +shopCharmWeb db "Ïàóòèíà",0 +shopCharmBee db "Ï÷åëà",0 +shopCharmMoon db "Ëóíà",0 +shopCharmCrown db "Êîðîíà",0 +shopCharmMirror db "Çåðêàëî",0 +shopCharmDice db "Êîñòü",0 +shopCharmBlood db "Êðîâàâàÿ ìîíåòà",0 +shopCharmHourglass db "Ïåñî÷íûå ÷àñû",0 +shopCharmHorseshoe db "Ïîäêîâà",0 +shopCharmJoker db "Ìàñêà äæîêåðà",0 +shopCharmPhoenix db "Ïåðî ôåíèêñà",0 +shopCharmCompass db "Ñëîìàííûé êîìïàñ",0 +shopCharmTooth db "Çîëîòîé çóá",0 +shopCharmEye db "Õðóñòàëüíûé ãëàç",0 +shopCharmKey db "Ðæàâûé êëþ÷",0 +shopCharmCandle db "×åðíàÿ ñâå÷à",0 +shopCharmChip db "Ñ÷àñòëèâàÿ ôèøêà",0 +shopCharmSnake db "Çìåèíîå êîëüöî",0 +shopCharmAce db "Îñêîëîê òóçà",0 +shopCharmDevil db "Äîãîâîð ñ äüÿâîëîì",0 +bestiaryTitle db 13,10,"--- Áåñòèàðèé òàëèñìàíîâ ---",13,10,0 +bestiaryMenuText db "--- Îáû÷íûå ---",13,10 + db "1. Êëåâåð",13,10 + db "2. Êîëîêîë",13,10 + db "6. Ï÷åëà",13,10 + db "10. Êîñòü",13,10 + db "13. Ïîäêîâà",13,10 + db "19. Ðæàâûé êëþ÷",13,10 + db "--- Ðåäêèå ---",13,10 + db "3. Àëìàç",13,10 + db "7. Ëóíà",13,10 + db "9. Çåðêàëî",13,10 + db "12. Ïåñî÷íûå ÷àñû",13,10 + db "15. Ïåðî ôåíèêñà",13,10 + db "16. Ñëîìàííûé êîìïàñ",13,10 + db "17. Çîëîòîé çóá",13,10 + db "21. Ñ÷àñòëèâàÿ ôèøêà",13,10 + db "23. Îñêîëîê òóçà",13,10 + db "--- Ïðîêëÿòûå ---",13,10 + db "4. ×åðåï",13,10 + db "5. Ïàóòèíà",13,10 + db "11. Êðîâàâàÿ ìîíåòà",13,10 + db "14. Ìàñêà äæîêåðà",13,10 + db "20. ×åðíàÿ ñâå÷à",13,10 + db "22. Çìåèíîå êîëüöî",13,10 + db "--- Ëåãåíäàðíûå ---",13,10 + db "8. Êîðîíà",13,10 + db "18. Õðóñòàëüíûé ãëàç",13,10 + db "24. Äîãîâîð ñ äüÿâîëîì",13,10 + db "0. Íàçàä",13,10 + db "Âûáîð: ",0 +bestiaryGoodText db "Ïëþñ: ",0 +bestiaryBadText db "Ìèíóñ: ",0 +bestiaryBackText db 13,10,"0 - íàçàä ê ñïèñêó áåñòèàðèÿ: ",0 +bestiaryCloverArt db 13,10," .-. .-.",13,10," .' V '. CLOVER",13,10," \ \|/ /",13,10," `-+-'",13,10,0 +bestiaryBellArt db 13,10," .---.",13,10," / ___ \ BELL",13,10," / / \ ",13,10," \_\___/_/",13,10," (_) ",13,10,0 +bestiaryDiamondArt db 13,10," /",13,10," /##\ DIAMOND",13,10," /####",13,10," \####/",13,10," \##/",13,10," \/",13,10,0 +bestiarySkullArt db 13,10," .-''''-.",13,10," / O O \ SKULL",13,10," | __ |",13,10," | .____. |",13,10," \__||||__/",13,10,0 +bestiaryWebArt db 13,10," \ | /",13,10," ---\ | /--- WEB",13,10," ---- @ ----",13,10," ---/ | \---",13,10," / | ",13,10,0 +bestiaryBeeArt db 13,10," __",13,10," __/o \__ BEE",13,10," / \__/ ",13,10," \__/==\__/",13,10," \__/",13,10,0 +bestiaryMoonArt db 13,10," .--.",13,10," .' _/ MOON",13,10," / .'",13,10," \ '.",13,10," '.__",13,10,0 +bestiaryCloverInfo db "Êëåâåð: 7%, 3 çàðÿäà.",13,10,"Ïëþñ: ìîæåò ïîëíîñòüþ ñïàñòè ïðîèãðàííóþ ñòàâêó.",13,10,"Ìèíóñ: ñëàáûé øàíñ, áåç äîïîëíèòåëüíûõ áîíóñîâ.",13,10,0 +bestiaryBellInfo db "Êîëîêîë: 14%, 3 çàðÿäà.",13,10,"Ïëþñ: ÷àùå ñïàñàåò ïðîèãðûø.",13,10,"Ìèíóñ: çâîí ïðèâëåêàåò êàçèíî: +4 ïîäîçðåíèÿ ïðè ñðàáàòûâàíèè.",13,10,0 +bestiaryDiamondInfo db "Àëìàç: 21%, 3 çàðÿäà.",13,10,"Ïëþñ: ñèëüíûé øàíñ ñïàñåíèÿ.",13,10,"Ìèíóñ: áëåñê ïàëèòñÿ îõðàíå: +8 ïîäîçðåíèÿ.",13,10,0 +bestiarySkullInfo db "×åðåï: 28%, 2 çàðÿäà.",13,10,"Ïëþñ: âûñîêèé øàíñ íå ïîòåðÿòü âñþ ñòàâêó.",13,10,"Ìèíóñ: çàáèðàåò ïîëîâèíó ñòàâêè äàæå ïðè ñïàñåíèè.",13,10,0 +bestiaryWebInfo db "Ïàóòèíà: 35%, 1 çàðÿä.",13,10,"Ïëþñ: ïî÷òè àâàðèéíàÿ êíîïêà ïðîòèâ ïðîèãðûøà.",13,10,"Ìèíóñ: +20 ïîäîçðåíèÿ, çàðÿä îäèí.",13,10,0 +bestiaryBeeInfo db "Ï÷åëà: 12%, 5 çàðÿäîâ.",13,10,"Ïëþñ: ìíîãî ïîïûòîê, õîðîøèé òàëèñìàí íà äëèííóþ èãðó.",13,10,"Ìèíóñ: øàíñ íèæå, ÷åì ó äîðîãèõ òàëèñìàíîâ.",13,10,0 +bestiaryMoonInfo db "Ëóíà: 18%, 4 çàðÿäà.",13,10,"Ïëþñ: áàëàíñ øàíñà è çàðÿäîâ.",13,10,"Ìèíóñ: ëóííûé ñâåò âûäàåò øóëåðà: +8 ïîäîçðåíèÿ.",13,10,0 +bestiaryCrownArt db 13,10," _^_",13,10," .'___'. CROWN",13,10," /_/|_|\_",13,10," /___",13,10,0 +bestiaryMirrorArt db 13,10," .----.",13,10," / .--. \ MIRROR",13,10," | | <> | |",13,10," \ '--' /",13,10," '----'",13,10,0 +bestiaryDiceArt db 13,10," +-----+",13,10," | o o | DICE",13,10," | o |",13,10," | o o |",13,10," +-----+",13,10,0 +bestiaryBloodArt db 13,10," .---.",13,10," / $ $ \ BLOOD COIN",13,10," | *** |",13,10," \_===_/",13,10," drip",13,10,0 +bestiaryHourglassArt db 13,10," \-----/",13,10," \.../ HOURGLASS",13,10," \./",13,10," /\",13,10," /___",13,10,0 +bestiaryCrownInfo db "Êîðîíà: 24%, 2 çàðÿäà.",13,10,"Ïëþñ: ñîëèäíûé øàíñ ñïàñåíèÿ.",13,10,"Ìèíóñ: êîðîíà ñëèøêîì çàìåòíà: +12 ïîäîçðåíèÿ.",13,10,0 +bestiaryMirrorInfo db "Çåðêàëî: 16%, 4 çàðÿäà.",13,10,"Ïëþñ: íåñêîëüêî ñòàáèëüíûõ ïîïûòîê îáìàíóòü ïðîèãðûø.",13,10,"Ìèíóñ: îòðàæåíèå ïàëèò ðóêè: +6 ïîäîçðåíèÿ.",13,10,0 +bestiaryDiceInfo db "Êîñòü: 10%, 6 çàðÿäîâ.",13,10,"Ïëþñ: ìíîãî çàðÿäîâ, ìîæíî æèòü äîëãî.",13,10,"Ìèíóñ: øàíñ ìàëåíüêèé, ýòî òàëèñìàí òåðïåíèÿ.",13,10,0 +bestiaryBloodInfo db "Êðîâàâàÿ ìîíåòà: 40%, 1 çàðÿä.",13,10,"Ïëþñ: ñàìûé ðåçêèé øàíñ ñïàñåíèÿ.",13,10,"Ìèíóñ: çàáèðàåò 25% ñòàâêè è äàåò +25 ïîäîçðåíèÿ.",13,10,0 +bestiaryHourglassInfo db "Ïåñî÷íûå ÷àñû: 22%, 2 çàðÿäà.",13,10,"Ïëþñ: íàäåæíåå ñðåäíåãî.",13,10,"Ìèíóñ: âðåìÿ íå ëþáèò ñâèäåòåëåé: +15 ïîäîçðåíèÿ.",13,10,0 +bestiaryHorseshoeArt db 13,10," __ __",13,10," / \_/ \ HORSESHOE",13,10," | o o |",13,10," \__ __/",13,10," |_|",13,10,0 +bestiaryJokerArt db 13,10," .-^^-.",13,10," / o o \ JOKER",13,10," | .--. |",13,10," \_\__/ _/",13,10," /==\",13,10,0 +bestiaryPhoenixArt db 13,10," /\",13,10," ___/ \___ PHOENIX",13,10," / / /\ \ ",13,10," /_||_\",13,10," \/",13,10,0 +bestiaryCompassArt db 13,10," .---.",13,10," / N \ COMPASS",13,10," | W-+-E |",13,10," \ S /",13,10," '--?'",13,10,0 +bestiaryToothArt db 13,10," .--.",13,10," /$ $\ GOLD TOOTH",13,10," | __ |",13,10," \____/",13,10," drip",13,10,0 +bestiaryEyeArt db 13,10," .-------.",13,10," / .---. \ EYE",13,10," | ( 0 ) |",13,10," \ '---' /",13,10," '-------'",13,10,0 +bestiaryKeyArt db 13,10," __",13,10," ___/ \___ KEY",13,10," (___ ___)",13,10," |__|==",13,10," ==",13,10,0 +bestiaryCandleArt db 13,10," )",13,10," ( ) CANDLE",13,10," .-#-.",13,10," |###|",13,10," |___|",13,10,0 +bestiaryChipArt db 13,10," .-----.",13,10," / $ $ $ \ CHIP",13,10," | $ 777 $ |",13,10," \ $ $ $ /",13,10," '-----'",13,10,0 +bestiarySnakeArt db 13,10," __",13,10," __/ \__ SNAKE RING",13,10," / _ _ ",13,10," \_/ \/ \_/",13,10," hiss",13,10,0 +bestiaryAceArt db 13,10," .---.",13,10," / A \ ACE SHARD",13,10," | ^ |",13,10," \ /_\ /",13,10," '---'",13,10,0 +bestiaryDevilArt db 13,10," /\ /\",13,10," / \_/ \ DEVIL",13,10," | $ $ |",13,10," | ___ |",13,10," \_/###\_/",13,10,0 +bestiaryHorseshoeInfo db "Ïîäêîâà: 9%, 8 çàðÿäîâ.",13,10,"Ïëþñ: ìíîãî ïîïûòîê, õîðîøî äëÿ äëèííûõ ñåññèé.",13,10,"Ìèíóñ: øàíñ ìàëåíüêèé, ñïàñàåò ðåäêî.",13,10,0 +bestiaryJokerInfo db "Ìàñêà äæîêåðà: 33%, 1 çàðÿä.",13,10,"Ïëþñ: ñèëüíûé øàíñ ðåçêî îòìåíèòü ïðîèãðûø.",13,10,"Ìèíóñ: ñëèøêîì òåàòðàëüíî: +30 ïîäîçðåíèÿ.",13,10,0 +bestiaryPhoenixInfo db "Ïåðî ôåíèêñà: 26%, 2 çàðÿäà.",13,10,"Ïëþñ: õîðîøèé øàíñ, áóäòî ñòàâêà âîñêðåñàåò èç ïåïëà.",13,10,"Ìèíóñ: +10 ïîäîçðåíèÿ ïðè ñðàáàòûâàíèè.",13,10,0 +bestiaryCompassInfo db "Ñëîìàííûé êîìïàñ: 19%, 3 çàðÿäà.",13,10,"Ïëþñ: ñðåäíèé òàëèñìàí áåç äåíåæíîãî øòðàôà.",13,10,"Ìèíóñ: âåäåò êðèâî: +12 ïîäîçðåíèÿ.",13,10,0 +bestiaryToothInfo db "Çîëîòîé çóá: 15%, 5 çàðÿäîâ.",13,10,"Ïëþñ: ìíîãî çàðÿäîâ ïðè íîðìàëüíîì øàíñå.",13,10,"Ìèíóñ: áåðåò ïëàòó 20% ñòàâêè ïðè ñïàñåíèè.",13,10,0 +bestiaryEyeInfo db "Õðóñòàëüíûé ãëàç: 31%, 1 çàðÿä.",13,10,"Ïëþñ: ïî÷òè âèäèò ïðîèãðûø çàðàíåå.",13,10,"Ìèíóñ: +18 ïîäîçðåíèÿ, çàðÿä îäèí.",13,10,0 +bestiaryKeyInfo db "Ðæàâûé êëþ÷: 13%, 6 çàðÿäîâ.",13,10,"Ïëþñ: äåøåâëå ìîùíûõ òàëèñìàíîâ è äîëãî æèâåò.",13,10,"Ìèíóñ: øàíñ ñëàáûé, êëþ÷ ÷àñòî íå ïîäõîäèò.",13,10,0 +bestiaryCandleInfo db "×åðíàÿ ñâå÷à: 38%, 1 çàðÿä.",13,10,"Ïëþñ: î÷åíü ñèëüíûé øàíñ ñïàñåíèÿ.",13,10,"Ìèíóñ: øòðàô 33% ñòàâêè è +35 ïîäîçðåíèÿ.",13,10,0 +bestiaryChipInfo db "Ñ÷àñòëèâàÿ ôèøêà: 20%, 4 çàðÿäà.",13,10,"Ïëþñ: ðîâíûé óíèâåðñàëüíûé òàëèñìàí.",13,10,"Ìèíóñ: áåç ÿðêîãî áîíóñà, ïðîñòî íàäåæíîñòü.",13,10,0 +bestiarySnakeInfo db "Çìåèíîå êîëüöî: 29%, 2 çàðÿäà.",13,10,"Ïëþñ: âûñîêèé øàíñ íà äâà ñïàñåíèÿ.",13,10,"Ìèíóñ: øèïèò íà îõðàíó: +16 ïîäîçðåíèÿ.",13,10,0 +bestiaryAceInfo db "Îñêîëîê òóçà: 17%, 5 çàðÿäîâ.",13,10,"Ïëþñ: ìíîãî çàðÿäîâ è ÷óòü áîëüøå óäà÷è, ÷åì ó êëþ÷à.",13,10,"Ìèíóñ: +7 ïîäîçðåíèÿ.",13,10,0 +bestiaryDevilInfo db "Äîãîâîð ñ äüÿâîëîì: 50%, 1 çàðÿä.",13,10,"Ïëþñ: ñàìûé ìîùíûé øàíñ ñïàñòè ïðîèãðûø.",13,10,"Ìèíóñ: øòðàô 50% ñòàâêè è +45 ïîäîçðåíèÿ.",13,10,0 +charmPenaltyText db "Öåíà òàëèñìàíà: $",0 +shopCharmUsesText db ", çàðÿäîâ: ",0 +shopBoughtText db "Ïîêóïêà âûïîëíåíà.",13,10,0 +shopSelectedText db "Ðóáàøêà âûáðàíà.",13,10,0 +shopCharmBurnText db "Òàëèñìàí ñãîðåë.",13,10,0 +shopCharmSaveText db 13,10,"Òàëèñìàí âñïûõíóë è ñïàñ ñòàâêó!",13,10,0 +achMenuTitle db 13,10,"--- Äîñòèæåíèÿ ---",13,10,0 +achPopupTop db 13,10,"+--------------------------------------+",13,10,0 +achPopupTitle db "| ÄÎÑÒÈÆÅÍÈÅ ÎÒÊÐÛÒÎ |",13,10,0 +achPopupLeft db "| ",0 +achPopupBottom db "+--------------------------------------+",13,10,0 +achDoneText db "[x] ",0 +achTodoText db "[ ] ",0 +achFirstWinName db "Ïåðâûé âûèãðûø",13,10,0 +achFirstLossName db "Ïåðâûé ïðîèãðûø",13,10,0 +achJackpotName db "Äæåêïîò ïîéìàí",13,10,0 +achHighRollerName db "Áîëüøàÿ ñòàâêà",13,10,0 +achShopperName db "Ïîêóïàòåëü êàçèíî",13,10,0 +achCharmName db "Òàëèñìàí ñðàáîòàë",13,10,0 +achGoalName db "Öåëü äîñòèãíóòà",13,10,0 +achCloverPitName db "CloverPit ðàçîãðåëñÿ",13,10,0 +achClassicSlotName db "Ñòàðûé àâòîìàò ïëàòèò",13,10,0 +achPokerRaiseName db "Ñòàâêà ïîâûøåíà",13,10,0 +achPokerBluffName db "Áëåô ñðàáîòàë",13,10,0 +achRouletteWinName db "Êîëåñî ñóäüáû",13,10,0 +achRussianWinName db "Ñóõîé ùåë÷îê",13,10,0 +achDurakWinName db "Íå äóðàê",13,10,0 +achBackCollectorName db "Êîëëåêöèîíåð ðóáàøåê",13,10,0 +achCharmBuyerName db "Òàëèñìàí â êàðìàíå",13,10,0 +achObserverName db "Ëîæà íàáëþäàòåëÿ",13,10,0 +achSkillCheckName db "Ñ êðþêà ñîðâàëñÿ",13,10,0 +achievementFileName db "runtime\achievement.txt",0 +achievementCmd db "cmd /c start ""Achievement"" tools\achievement_popup.bat",0 +skillTitle db 13,10,"--- Êðþê: Skill Check ---",13,10,0 +skillIntro db "Ïîïàäàé ïî çåëåíîé çîíå. PERFECT äàåò äâîéíîé ïðîãðåññ.",13,10 + db "3 ïðîìàõà - òüìà çàáèðàåò ñòàâêó. 5 ïðîãðåññà - òû ñðûâàåøüñÿ ñ êðþêà.",13,10 + db "Íàæèìàé SPACE èëè ENTER.",13,10,0 +skillHookArt db 13,10 + db " || .:!!!!!!!!!!:.",13,10 + db " || .:!##############!:.",13,10 + db " _____||_____ !#### ENTITY #####!",13,10 + db " /____ ____/ ':!#############!:'",13,10 + db " | | ''!!####!!''",13,10 + db " | | _J",13,10 + db " | | __/ |",13,10 + db " _____| |_____ .-' .-^-. .---- RED LOCKER ----.",13,10 + db " | WOODEN WALL | / /.-.\\\\ | [] [] [] [] [] |",13,10 + db " | || || || || || | |( )| | | [] [] [] [] [] |",13,10 + db " | || || || || || | /|\\___/|\\| | [] [] [] [] [] |",13,10 + db " | || || || || || |__/ | / \\ | \\__ |__________________|",13,10 + db " | || || || || || /_/ \\_\\ J J J",13,10 + db " |________________| _/ \\_ chains and hooks",13,10 + db " >>> SPACE / ENTER - ëîâèòü skill check <<<",13,10,0 +skillStateText db "Ñîñòîÿíèå: ",0 +skillStateGood db "äåðæèøüñÿ",13,10,0 +skillStateWarn db "öåïü ñêðèïèò",13,10,0 +skillStateBad db "òüìà ðÿäîì",13,10,0 +skillProgressText db "Ïðîãðåññ ïîáåãà: ",0 +skillMissText db "Ïðîìàõè: ",0 +skillGaugeHint db 13,10,"Áîëüøîé skill check:",13,10,0 +skillGaugeLeft db "[",0 +skillGaugeRight db "]",13,10,0 +skillGaugeEmpty db "-",0 +skillGaugeSuccess db "#",0 +skillGaugePerfect db "@",0 +skillGaugeNeedle db "|",0 +skillSuccessText db 13,10,"Óñïåõ. Òû óäåðæàëñÿ íà êðþêå.",13,10,0 +skillPerfectText db 13,10,"PERFECT! Ðûâîê ïî÷òè ñîðâàë êðþê.",13,10,0 +skillFailText db 13,10,"Ïðîìàõ. Êðþê äåðíóë ñèëüíåå.",13,10,0 +skillEscapeText db 13,10,"Òû ñîðâàëñÿ ñ êðþêà è âûðâàëñÿ èç òóìàíà!",13,10,0 +skillDarkText db 13,10,"Òüìà çàáðàëà òåáÿ. Ñòàâêà ñãîðåëà.",13,10,0 +coinTitle db 13,10,"--- Îðåë è ðåøêà ---",13,10,0 +coinIntroText db "Óãàäàé ñòîðîíó ìîíåòû. Ïîáåäà äàåò âûèãðûø ðàçìåðîì ñî ñòàâêó.",13,10,0 +coinChoiceText db "1 - Îðåë, 2 - Ðåøêà: ",0 +coinSpinText db "Ìîíåòà ëåòèò...",13,10,0 +; === ASCII-êàäðû àíèìàöèè ìîíåòû === +coinFrame1 db 13,10 + db " ( O )",13,10 + db 13,10 + db " ___________________",13,10,0 +coinFrame2 db 13,10 + db " ( / )",13,10 + db 13,10 + db " ___________________",13,10,0 +coinFrame3 db 13,10 + db " ( | )",13,10 + db 13,10 + db " ___________________",13,10,0 +coinFrame4 db 13,10 + db " ( \ )",13,10 + db 13,10 + db " ___________________",13,10,0 +coinFrame5 db 13,10 + db " ( - )",13,10 + db 13,10 + db " ___________________",13,10,0 +coinFrame6 db 13,10 + db " ( / )",13,10 + db 13,10 + db " ___________________",13,10,0 +coinFrame7 db 13,10 + db " ( | )",13,10 + db 13,10 + db " ___________________",13,10,0 +coinFrame8 db 13,10 + db " ( \ )",13,10 + db 13,10 + db " ___________________",13,10,0 +coinFrame9 db 13,10 + db " ( O )",13,10 + db 13,10 + db " ___________________",13,10,0 +coinFrame10 db 13,10 + db " ( / )",13,10 + db " ",13,10 + db " ___________________",13,10,0 +coinFrame11 db 13,10 + db " ( | )",13,10 + db " ",13,10 + db " ___________________",13,10,0 +coinFrame12 db 13,10 + db " ( \ )",13,10 + db " ",13,10 + db " ___________________",13,10,0 +coinFrame13 db 13,10 + db " ( - )",13,10 + db " ",13,10 + db " ___________________",13,10,0 +coinFrame14 db 13,10 + db " ( O )",13,10 + db " ",13,10 + db " ___________________",13,10,0 +coinPickText db "Òû âûáðàë: ",0 +coinResultText db "Âûïàëî: ",0 +coinHeadsText db "Îðåë",13,10,0 +coinTailsText db "Ðåøêà",13,10,0 +diceTitle db 13,10,"--- Êîñòè ---",13,10,0 +diceIntroText db "Óãàäàé ÷åòíîñòü ñóììû äâóõ êîñòåé. Ïîáåäà äàåò âûèãðûø ðàçìåðîì ñî ñòàâêó.",13,10,0 +diceChoiceText db "1 - ÷åò, 2 - íå÷åò: ",0 +diceRollText db "Êîñòè ëåòÿò ïî ñòîëó...",13,10,0 +diceFirstText db "Ïåðâàÿ êîñòü: ",0 +diceSecondText db "Âòîðàÿ êîñòü: ",0 +diceSumText db "Ñóììà: ",0 +diceEvenText db "×åò",13,10,0 +diceOddText db "Íå÷åò",13,10,0 +; === Êàçèíî-ðóëåòêà: òåêñòû, êîëåñî, öâåòà è êàðìàíû === +casinoRouletteTitle db 13,10,"--- Êàçèíî-ðóëåòêà ---",13,10,0 +casinoRouletteIntro db "Åâðîïåéñêîå êîëåñî: 0 çåëåíûé, ïîëîâèíà ÷èñåë êðàñíûå, ïîëîâèíà ÷åðíûå.",13,10 + db "Ñòàâêà íà ÷èñëî ïëàòèò x35, îñòàëüíûå ñòàâêè ïëàòÿò x1.",13,10,0 +casinoRouletteBetMenu db "1 - ÷èñëî 0-36",13,10 + db "2 - êðàñíîå",13,10 + db "3 - ÷åðíîå",13,10 + db "4 - ÷åò",13,10 + db "5 - íå÷åò",13,10 + db "Âûáîð ñòàâêè: ",0 +casinoRouletteNumberAsk db "Ââåäèòå ÷èñëî 0-36: ",0 +casinoRouletteBadNumber db " ðóëåòêå åñòü òîëüêî ÷èñëà îò 0 äî 36.",13,10,0 +casinoRouletteSpinText db "Øàðèê ñêà÷åò ïî êàðìàíàì êîëåñà... Èòîãîâûé êàðìàí ïðÿìî ïîä ñòðåëêîé ñâåðõó.",13,10,0 +casinoRouletteResultText db 13,10,"Øàðèê îñòàíîâèëñÿ íà: ",0 +casinoRouletteWinText db "Ñòàâêà ñûãðàëà.",13,10,0 +casinoRouletteLoseText db "Ñòàâêà íå ñûãðàëà.",13,10,0 +casinoRouletteWheelTop db " =============================================================",13,10 + db " o",13,10 + db " v",13,10,0 +casinoRouletteWheelBottom db " =============================================================",13,10,0 +casinoRoulettePad db " ",0 +rouletteBigSidePad db " ",0 +rouletteBigSideGap1 db " .-------------------------------------------------. ",0 +rouletteBigSideGap2 db " / .-------------------------------------. \ ",0 +rouletteBigSideGap3 db " | / . . . . . . . . . . . . . . \ | ",0 +rouletteBigSideGap4 db " | | \\ | // ( O ) \\ | | ",0 +rouletteBigSideGap5 db " | | // | \\ --+-- // | | ",0 +rouletteBigSideGap6 db " | \ . . . . . . . . . . . . \ | | ",0 +roulettePocketLeft db "[",0 +roulettePocketRight db "] ",0 +rouletteNumSpace db " ",0 +rouletteRedName db "êðàñíîå",13,10,0 +rouletteBlackName db "÷åðíîå",13,10,0 +rouletteGreenName db "çåëåíûé íîëü",13,10,0 +rouletteWheel dd 0,32,15,19,4,21,2,25,17,34,6,27,13,36,11,30,8,23,10 + dd 5,24,16,33,1,20,14,31,9,22,18,29,7,28,12,35,3,26 +rouletteColors db 0,1,2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,2,1 + db 1,2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,2,1 +bankLevelText db "Óðîâåíü áàíêà: ",0 +bankLevelNewbie db "Íîâè÷îê",13,10,0 +bankLevelPlayer db "Èãðîê",13,10,0 +bankLevelHigh db "Õàéðîëëåð",13,10,0 +bankLevelLegend db "Ëåãåíäà êàçèíî",13,10,0 + + +; === Òåêñòû êàðòî÷íûõ èãð: 21, ïîêåð, äóðàê è ïîäñêàçêè === +hitText db "Âçÿòü êàðòó? (y/n): ",0 +againText db "Ñûãðàòü åùå? (y/n): ",0 +yourCardText db 13,10,"Òâîÿ êàðòà:",13,10,0 +dealerCardText db 13,10,"Êàðòà äèëåðà:",13,10,0 +aiThinkText db 13,10,"AI äóìàåò...",13,10,0 +aiMoveText db 13,10,"AI áåðåò êàðòó!",13,10,0 +aiCardsText db 13,10,"Êàðòû AI:",13,10,0 +playerCardsText db 13,10,"Òâîè êàðòû:",13,10,0 +yourScoreText db "Òâîè î÷êè: ",0 +dealerScoreText db "Î÷êè äèëåðà: ",0 +aiScoreText db "Î÷êè AI: ",0 +bustText db "Ïåðåáîð. Òû ïðîèãðàë.",13,10,0 +dealerBustText db "Ó äèëåðà ïåðåáîð. Òû âûèãðàë!",13,10,0 +winText db "Òû âûèãðàë!",13,10,0 +loseText db "Òû ïðîèãðàë.",13,10,0 +drawText db "Íè÷üÿ.",13,10,0 +blackjackText db "Blackjack!",13,10,0 + +twentyOneTitle db 13,10,"--- 21 / Î÷êî ---",13,10,0 +blackjackTitle db 13,10,"--- Blackjack ---",13,10,0 +pokerTitle db 13,10,"--- Poker ---",13,10,0 +slotTitle db 13,10,"--- CloverPit ---",13,10,0 +classicSlotTitle db 13,10,"--- Slot machine ---",13,10,0 +durakTitle db 13,10,"--- Äóðàê ---",13,10,0 +durakInfoText db "Êîçûðü: ",0 +durakDeckText db "Êàðò â êîëîäå: ",0 +durakAICardsText db "Êàðò ó AI: ",0 +durakYourHandText db 13,10,"Òâîè êàðòû:",13,10,0 +durakTableText db 13,10,"Íà ñòîëå: ",0 +durakAttackAsk db "Âûáåðè êàðòó äëÿ àòàêè: ",0 +durakDefendAsk db "×åì áèòü? 0 - âçÿòü: ",0 +durakBadMoveText db "Òàê íåëüçÿ. Âûáåðè äðóãóþ êàðòó.",13,10,0 +durakAITakeText db "AI íå ñìîã îòáèòüñÿ è âçÿë êàðòó.",13,10,0 +durakAIDefendText db "AI îòáèëñÿ êàðòîé: ",0 +durakAIAttackText db "AI àòàêóåò: ",0 +durakPlayerTakeText db "Òû âçÿë êàðòó.",13,10,0 +durakPlayerDefendText db "Òû îòáèëñÿ.",13,10,0 +durakWinText db "Òû âûøåë èç èãðû áåç êàðò. Ïîáåäà!",13,10,0 +durakLoseText db "AI èçáàâèëñÿ îò êàðò ðàíüøå òåáÿ. Òû ïðîèãðàë.",13,10,0 +trainingTitle db 13,10,"--- Îáó÷åíèå ---",13,10,0 +trainingText db "Ãëàâíîå: ñíà÷àëà âûáåðè ñòàâêó. Åñëè áàíê óïàäåò äî 0, êàçèíî âûâåäåò òåáÿ.",13,10 + db "Ìàãàçèí: ðóáàøêè ìåíÿþò âèä çàêðûòûõ êàðò, òàëèñìàíû ìîãóò ñïàñòè ïðîèãðàííóþ ñòàâêó.",13,10 + db "21 / Î÷êî: áåðè êàðòû äî 21. Ïåðåáîð - ïîðàæåíèå. AI äîáèðàåò ïîñëå âñêðûòèÿ.",13,10 + db "Poker: ó òåáÿ 2 êàðòû, íà ñòîëå 3+1+1. Ìîæíî èãðàòü, ôîëäèòü è ïîâûøàòü ñòàâêó.",13,10 + db "CloverPit: ïîëå 5x3. Ïëàòÿò ðàçíûå ëèíèè è ôèãóðû èç îäèíàêîâûõ ñèìâîëîâ.",13,10 + db "×åðåïà: çàïîìíè, ãäå øàðèê, ïîòîì ñëåäè çà ïåðåìåøèâàíèåì ÷åðåïîâ.",13,10 + db "Ðóññêàÿ ðóëåòêà: Easy/Normal/Hard çàäàþò 1/2/3 îïàñíûå êàìåðû áàðàáàíà.",13,10 + db "Îðåë è ðåøêà: âûáåðè ñòîðîíó ìîíåòû è äîæäèñü ïàäåíèÿ.",13,10 + db "Êîñòè: óãàäàé ÷åòíîñòü ñóììû äâóõ êóáèêîâ.",13,10 + db "Êàçèíî-ðóëåòêà: ìîæíî ñòàâèòü íà ÷èñëî, öâåò, ÷åò/íå÷åò, äþæèíû, ïîëîâèíû è êîëîíêè.",13,10 + db "Slot machine: ñòàðàÿ 3x3 ñëîò-ìàøèíà ñ âûïàäåíèåì áàðàáàíîâ è ñðåäíåé ëèíèåé.",13,10 + db "Äóðàê: àòàêóé, ïîäêèäûâàé ñîâïàäàþùèå ðàíãè, îòáèâàéñÿ èëè ïåðåâîäè õîä.",13,10 + db "Êðþê: Skill Check: SPACE/ENTER ïî çåëåíîé çîíå. PERFECT äàåò äâîéíîé ïðîãðåññ.",13,10 + db "Buckshot Roulette: ñ÷èòàé æèâûå/õîëîñòûå, èñïîëüçóé ïðåäìåòû è âûáèðàé öåëü âûñòðåëà.",13,10 + db "Íàáëþäàòåëü: AI vs AI èãðàåò áåç òâîèõ ñòàâîê, ïðîñòî äëÿ ïðîñìîòðà.",13,10 + db "Äîñòèæåíèÿ è ñòàòèñòèêà ñîõðàíÿþòñÿ â àêêàóíò.",13,10,0 +durakDeckVisualText db "Êîëîäà: [ðóáàøêà], èç-ïîä íåå òîð÷èò êîçûðü ",0 +durakAIFaceText db 13,10,"Êàðòû AI:",13,10,0 +durakThrowAsk db "Ïîäêèíóòü êàðòó? 0 - áèòî: ",0 +durakTransferText db "Ïåðåâîä! Õîä ïåðåõîäèò îáðàòíî.",13,10,0 +durakTablePairsText db 13,10,"Êàðòû íà ñòîëå:",13,10,0 +durakSlashText db " / ",0 +durakUnbeatenText db " _ ",0 +durakStuckText db "Ïàðòèÿ çàøëà â òóïèê. Ñ÷èòàåì íè÷üþ.",13,10,0 +skullsTitle db 13,10,"--- ×åðåïà è øàðèê ---",13,10,0 +skullsIntroText db "Ñëåäè çà øàðèêîì. Âûïëàòà çà ïîáåäó: x2.",13,10,0 +skullsShowText db "Ñìîòðè âíèìàòåëüíî: øàðèê ñåé÷àñ çäåñü.",13,10,0 +skullsHideText db "×åðåïà çàêðûâàþò øàðèê...",13,10,0 +skullsShuffleText db "×åðåïà ñêîëüçÿò ïî ñòîëó...",13,10,0 +skullsGuessText db "Ãäå øàðèê? 1 / 2 / 3: ",0 +skullsWinText db "Âåðíî! Øàðèê íàéäåí.",13,10,0 +skullsLoseText db "Ìèìî. Øàðèê áûë ïîä äðóãèì ÷åðåïîì.",13,10,0 +skullsBallText db "Øàðèê áûë ïîä ÷åðåïîì ",0 +skullsSwap12Text db " \\______/",13,10," / \",13,10,0 +skullsSwap23Text db " \\______/",13,10," / \",13,10,0 +skullsSwap13Text db " \\____________________/",13,10," / \",13,10,0 +rouletteTitle db 13,10,"--- Ðóññêàÿ ðóëåòêà ---",13,10,0 +rrIntroText db "Áàðàáàí íà 6 êàìåð. Easy: 1 îïàñíàÿ, Normal: 2, Hard: 3.",13,10,"AI èãðàåò ñ òîáîé ïî î÷åðåäè. Êòî ïîïàë íà îïàñíóþ êàìåðó - ïðîèãðàë.",13,10,0 +rrDangerText db "Îïàñíûõ êàìåð â áàðàáàíå: ",0 +rrSpinText db "Áàðàáàí âðàùàåòñÿ... ",0 +rrSpin1 db "|",13,10,0 +rrSpin2 db "/",13,10,0 +rrSpin3 db "-",13,10,0 +rrSpin4 db "\\",13,10,0 +rrStartsPlayerText db "Ðåâîëüâåð îñòàíîâèëñÿ íà òåáå. Òû ñòðåëÿåøü ïåðâûì.",13,10,0 +rrStartsAIText db "Ðåâîëüâåð îñòàíîâèëñÿ íà AI. Îí ñòðåëÿåò ïåðâûì.",13,10,0 +rrPlayerTurnText db "Òâîé õîä. Íàæìè ëþáóþ êëàâèøó, ÷òîáû íàæàòü íà ñïóñê...",0 +rrAITurnText db "Õîä AI. Îí ïîäíèìàåò ðåâîëüâåð...",13,10,0 +rrClickText db "Ùåë÷îê. Ïóñòî.",13,10,0 +rrBangText db "ÁÀÕ!",13,10,0 +rrPlayerLoseText db "Òåáå íå ïîâåçëî. Ñòàâêà óõîäèò êàçèíî.",13,10,0 +rrAIShotText db "AI âûáûë. Òû ïåðåæèë ýòó ïàðòèþ.",13,10,0 +rrPayoutText db "Âûïëàòà ðóëåòêè çàâèñèò îò ñëîæíîñòè.",13,10,0 +buckshotTitle db 13,10,"--- Buckshot Roulette ---",13,10,0 +buckshotIntro db "Äðîáîâèê çàðÿæåí æèâûìè è õîëîñòûìè ïàòðîíàìè â íåèçâåñòíîì ïîðÿäêå.",13,10 + db "Ñòðåëÿé â ñåáÿ èëè AI. Õîëîñòîé â ñåáÿ îñòàâëÿåò õîä òåáå.",13,10 + db "Ëóïà ðàñêðûâàåò òåêóùèé ïàòðîí, ïèëà äàåò 2 óðîíà, ïèâî âûáðàñûâàåò ïàòðîí, íàðó÷íèêè ïðîïóñêàþò õîä AI.",13,10,0 +bsShotgunArt db 13,10 + db " ,_______________________________________________",13,10 + db " |_________________,----------._ [____] ""-,__",13,10 + db " (_(||||||||||||)___________/ ""--.__",13,10 + db " `----------' [ ))""-, \",13,10 + db " "" `--.__ |",13,10 + db " `----'",13,10 + db " DOUBLE BARREL CASINO",13,10,0 +bsShotgunLoad1 db 13,10 + db " ,_______________________________________________",13,10 + db " |_________________,----------._ [____] ""-,__",13,10 + db " (_(||||||||||||)___________/ ""--.__",13,10 + db " `----------' [ ))""-, \",13,10 + db " "" `--.__ |",13,10 + db " `----'",13,10 + db " Êðóïüå áåðåò äðîáîâèê ñî ñòîëà...",13,10,0 +bsShotgunLoad2 db 13,10 + db " ,_______________________________________________",13,10 + db " |_________________,----------._ [____] ""-,__",13,10 + db " (_(||||||||||||)______/__/ ""--.__",13,10 + db " `----------' / LIVE] ",13,10 + db " __/ BLANK] .__ |",13,10 + db " `----'",13,10 + db " Ñòâîë ïðèîòêðûò. Ïàòðîíû ó êàçåííîé ÷àñòè.",13,10,0 +bsShotgunLoad3 db 13,10 + db " ,_______________________________________________",13,10 + db " |_________________,----------._ [____] ""-,__",13,10 + db " (_(||||||||||||)___________/ ""--.__",13,10 + db " `----------' [ ))""-, \",13,10 + db " "" `--.__ |",13,10 + db " `----'",13,10 + db " ÙÅËÊ. Äðîáîâèê çàêðûò.",13,10,0 +bsShotgunFire db 13,10 + db " *** BOOM ***",13,10 + db " ,_______________________________________________ ***",13,10 + db " |_________________,----------._ [____] ""-,__ *****",13,10 + db " (_(||||||||||||)___________/ ""--.__ ***",13,10 + db " `----------' [ ))""-, \ *",13,10 + db " "" `--.__ |",13,10 + db " `----'",13,10,0 +bsShotgunDry db 13,10 + db " ,_______________________________________________",13,10 + db " |_________________,----------._ [____] ""-,__ click",13,10 + db " (_(||||||||||||)___________/ ""--.__",13,10 + db " `----------' [ ))""-, \",13,10 + db " "" `--.__ |",13,10 + db " `----'",13,10,0 +bsHPText db "HP: òû ",0 +bsAIHPText db " / AI ",0 +bsShellInfoText db "Ïàòðîíû â ðàóíäå: ",0 +bsLiveText db " æèâûõ, ",0 +bsBlankText db " õîëîñòûõ",13,10,0 +bsLeftText db "Îñòàëîñü â äðîáîâèêå: ",0 +bsKnownUnknownText db "Òåêóùèé ïàòðîí: íåèçâåñòíî",13,10,0 +bsKnownLiveText db "Òåêóùèé ïàòðîí: ÆÈÂÎÉ",13,10,0 +bsKnownBlankText db "Òåêóùèé ïàòðîí: õîëîñòîé",13,10,0 +bsItemsText db "Ïðåäìåòû: ëóïà ",0 +bsSawText db ", ïèëà ",0 +bsBeerText db ", ïèâî ",0 +bsCuffsText db ", íàðó÷íèêè ",0 +bsMenuText db 13,10,"1. Ñòðåëÿòü â ñåáÿ",13,10 + db "2. Ñòðåëÿòü â AI",13,10 + db "3. Ëóïà",13,10 + db "4. Ïèëà",13,10 + db "5. Ïèâî",13,10 + db "6. Íàðó÷íèêè",13,10 + db "Âûáîð: ",0 +bsLoadText db 13,10,"Êðóïüå çàðÿæàåò äðîáîâèê...",13,10,0 +bsLiveLoadedText db "Æèâîé ïàòðîí",13,10,0 +bsBlankLoadedText db "Õîëîñòîé ïàòðîí",13,10,0 +bsPlayerTurnText db 13,10,"Òâîé õîä.",13,10,0 +bsAITurnText db 13,10,"Õîä AI...",13,10,0 +bsShootPlayerText db "Âûñòðåë â òåáÿ.",13,10,0 +bsShootAIText db "Âûñòðåë â AI.",13,10,0 +bsDryText db "Ùåë÷îê. Õîëîñòîé.",13,10,0 +bsHitText db "ÁÀÕ! Óðîí: ",0 +bsGlassUseText db "Ëóïà ïîêàçûâàåò ïàòðîí.",13,10,0 +bsSawUseText db "Ïèëà íàäðåçàåò ñòâîë. Ñëåäóþùèé æèâîé âûñòðåë ñèëüíåå.",13,10,0 +bsBeerUseText db "Ïèâî. Ïàòðîí âûëåòàåò èç äðîáîâèêà: ",0 +bsCuffsUseText db "Íàðó÷íèêè çàùåëêíóëèñü. AI ïðîïóñòèò õîä.",13,10,0 +bsNoItemText db "Ýòîãî ïðåäìåòà íåò.",13,10,0 +bsAISawText db "AI èñïîëüçóåò ïèëó.",13,10,0 +bsAIGlassText db "AI ñìîòðèò ïàòðîí ÷åðåç ëóïó.",13,10,0 +bsAIBeerText db "AI âûáðàñûâàåò ïàòðîí ïèâîì.",13,10,0 +bsAICuffsText db "AI íàäåâàåò íà òåáÿ íàðó÷íèêè.",13,10,0 +bsSkipPlayerText db "Òû â íàðó÷íèêàõ è ïðîïóñêàåøü õîä.",13,10,0 +bsSkipAIText db "AI â íàðó÷íèêàõ è ïðîïóñêàåò õîä.",13,10,0 +bsWinText db "AI ïàäàåò. Òû çàáèðàåøü áàíê ñòîëà.",13,10,0 +bsLoseText db "Òû ïàäàåøü. Êðóïüå çàáèðàåò ñòàâêó.",13,10,0 +rrGunUp db 117,117,36,96,36,36,36,117,117,36,36,36,13,10 + + db 80,42,36,96,36,36,36,36,36,36,36,36,13,10 + + db 63,42,36,32,36,36,36,36,36,36,36,36,13,10 + + db 36,58,36,32,36,36,36,36,36,36,36,36,13,10 + + db 34,58,36,32,36,36,36,36,36,36,36,36,13,10 + + db 32,78,36,32,36,36,36,36,36,36,36,36,13,10 + + db 32,32,36,32,36,36,36,36,36,36,36,36,13,10 + + db 32,32,36,32,36,36,36,36,36,36,36,36,13,10 + + db 32,32,36,32,36,36,36,36,36,36,36,36,13,10 + + db 32,32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,36,36,82,82,36,36,36,36,36,36,13,10 + + db 32,32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,36,32,36,36,36,36,36,64,36,36,13,10 + + db 32,32,36,32,36,36,36,36,36,36,36,36,13,10 + + db 32,32,36,32,36,36,36,36,36,36,36,36,36,117,117,76,13,10 + + db 32,32,36,32,36,36,36,36,36,36,36,36,36,117,117,42,42,42,117,46,46,13,10 + + db 32,32,36,32,36,36,36,36,36,36,36,36,36,32,96,42,42,42,117,36,42,116,13,10 + + db 32,32,36,120,120,117,117,36,117,36,36,36,36,117,117,117,107,46,36,36,36,63,13,10 + + db 32,32,36,120,36,117,117,56,117,96,96,96,36,117,117,117,54,46,34,36,63,63,13,10 + + db 32,32,36,36,36,63,36,36,36,96,96,96,36,36,36,36,36,96,34,34,63,63,13,10 + + db 32,32,36,36,36,63,36,36,36,32,32,32,36,36,36,36,75,32,32,32,36,36,32,46,46,13,10 + + db 32,32,36,36,36,72,36,36,36,32,32,32,36,36,36,36,75,46,32,32,36,36,36,36,36,78,115,46,13,10 + + db 32,32,36,36,36,36,36,36,36,32,32,32,36,36,36,36,88,46,32,32,82,34,36,36,36,37,37,46,78,13,10 + + db 32,32,36,36,36,37,117,117,36,32,32,32,117,117,117,36,58,58,32,32,82,117,117,117,32,32,34,63,63,58,13,10 + + db 32,32,36,36,36,37,117,117,33,32,32,32,36,117,36,36,36,58,32,32,124,124,117,117,117,117,42,63,36,36,13,10 + + db 32,32,36,63,63,78,32,32,32,32,32,32,36,39,36,36,36,32,32,32,36,36,42,117,117,117,33,39,58,36,13,10 + + db 32,32,36,63,63,46,46,46,46,46,46,46,46,36,36,36,36,32,32,32,36,42,42,96,32,32,100,100,34,34,13,10 + + db 36,46,36,82,100,46,46,46,46,36,46,46,34,63,55,36,117,111,32,32,53,117,117,46,46,43,42,42,42,13,10 + + db 39,42,64,82,46,96,96,34,34,42,42,64,34,34,96,117,117,111,117,120,120,117,96,96,85,43,33,96,13,10 + + db 42,42,64,42,42,120,117,117,42,42,42,34,32,32,32,42,82,82,117,120,36,34,96,96,37,37,13,10 + + db 32,32,32,42,42,120,78,42,42,37,37,32,32,32,32,46,46,117,46,100,36,46,46,117,37,36,36,111,46,13,10 + + db 32,32,32,32,32,34,78,78,96,37,46,46,32,32,36,46,46,34,46,100,117,36,36,36,36,36,36,36,36,36,117,117 + + db 46,46,13,10 + + db 32,32,32,32,32,56,56,64,46,109,34,58,58,58,82,42,34,34,120,36,36,36,36,36,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,36,99,13,10 + + db 32,32,32,32,32,36,36,101,34,34,34,58,78,64,32,32,32,32,36,36,78,96,34,36,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 + + db 32,32,32,32,32,36,64,32,32,32,34,78,37,117,117,46,32,32,63,63,117,117,117,36,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,96,96,96,34,42,117,36,36,36,36,36,36,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,34,36,36,36,36,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,94,94,36,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,42,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,42,42,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,96 + + db 34,43,36,36,36,42,36,36,36,36,36,36,62,13,10 + + db 0 + +rrGunUpLeft db 32,32,32,32,32,32,32,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,13,10 + + db 32,32,32,32,32,32,36,36,36,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,62,13,10 + + db 32,32,32,32,32,117,32,36,36,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,62,13,10 + + db 32,32,32,32,36,36,36,36,36,36,36,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,62,62,13,10 + + db 32,32,32,36,32,36,36,36,32,36,36,32,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,46,32,78,58,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,32,36,62,13,10 + + db 32,32,36,32,36,36,32,36,36,36,32,36,36,32,32,32,32,32,32,32,32,32,32,32,32,46,116,32,32,32,32,32 + + db 32,32,115,46,63,32,36,32,32,32,32,32,32,32,32,32,32,36,32,36,36,36,32,36,36,32,36,62,13,10 + + db 32,36,96,36,36,36,36,36,36,36,36,36,36,36,36,32,32,32,32,32,32,32,32,32,46,36,36,63,63,32,32,46 + + db 36,78,37,34,63,36,36,34,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,62,13,10 + + db 117,32,36,32,32,36,36,36,32,36,36,32,36,36,36,32,32,32,32,32,32,32,32,42,117,32,36,63,32,63,32,36 + + db 32,36,32,32,42,39,34,32,32,32,32,32,32,32,46,36,36,32,36,36,32,36,36,36,32,36,36,32,36,13,10 + + db 80,42,36,36,32,36,36,36,36,36,36,36,36,36,36,36,36,32,32,32,117,76,42,42,46,36,36,34,63,36,36,36 + + db 36,117,117,117,33,100,42,42,32,32,32,32,117,46,36,36,36,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,63,58,32,36,32,32,36,36,36,32,36,36,32,36,36,32,36,32,117,32,117,42,32,107,46,34,32,32,36,32,34 + + db 117,32,117,117,32,32,42,96,32,32,32,117,32,36,36,32,36,36,32,36,36,36,32,36,36,32,36,13,10 + + db 32,32,36,58,32,36,32,36,32,36,36,32,36,36,36,32,36,36,32,36,117,32,96,117,54,32,96,32,32,32,82,117 + + db 32,117,117,32,32,43,33,32,32,46,32,36,36,32,36,36,36,32,36,36,32,36,36,36,32,36,13,10 + + db 32,32,34,32,78,36,36,32,36,36,36,36,36,36,36,64,36,36,36,36,36,32,117,117,36,36,75,46,32,32,32,124 + + db 124,36,42,96,46,85,37,32,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,42,36,13,10 + + db 32,32,32,32,32,32,32,36,36,36,32,82,36,32,36,36,32,36,36,36,32,36,117,32,36,36,75,32,46,32,32,32 + + db 36,32,42,117,96,32,37,36,32,36,36,36,32,36,36,32,36,36,32,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,36,36,36,82,36,36,36,36,36,36,36,36,36,36,96,36,36,36,36,36,88,58,58,32,32 + + db 32,36,117,117,96,96,37,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,32,36,36,32,36,96,32,96,36,36,32,36,36,32,36,32,32 + + db 32,32,120,32,34,46,36,32,36,36,32,36,36,32,36,36,36,32,36,36,32,43,13,10 + + db 32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,36,36,36,117,96,96,96,32,32,36,36,117,36,36,36,36,111 + + db 32,117,120,36,46,36,36,36,36,36,36,36,36,36,36,36,36,36,36,96,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,36,32,32,36,36,32,117,56,36,32,32,32,32,32,117,117,32,36,36,32,117 + + db 111,32,117,100,117,32,36,34,32,36,36,36,32,36,36,32,36,36,32,96,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,36,32,36,32,117,117,32,36,36,32,32,32,32,32,36,39,32,36,36,117 + + db 32,82,46,32,100,36,96,32,117,36,32,36,36,32,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,36,36,120,120,36,63,36,36,36,36,36,32,32,32,36,46,36,55,96,42 + + db 82,46,34,46,36,36,117,117,36,36,36,36,36,36,36,42,42,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,120,32,36,63,36,32,36,36,32,32,32,46,32,34,34,32,32 + + db 46,32,46,34,36,32,63,36,32,36,36,36,32,42,96,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,117,117,33,32,46,46,46,64,34,32,32 + + db 36,46,34,32,32,63,36,36,36,36,94,94,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,37,32,117,32,46,32,36,42,32,34,32,32 + + db 32,82,32,32,32,117,36,32,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,37,32,32,46,46,42,32,42,32,32,32 + + db 58,32,32,46,42,32,32,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,63,46,46,46,34,42,42,37,46,46,58 + + db 78,64,117,96,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,63,32,63,46,96,32,117,42,32,37,34,58 + + db 32,37,96,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,63,100,46,120,117,42,78,96,109,34,34 + + db 78,32,96,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,82,32,42,120,78,32,64,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,32,64,42,42,32,34,56,32,101,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,39,42,64,32,42,32,56,36,36,64,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,42,32,32,32,32,32,32,36,13,10 + + db 0 + +rrGunLeft db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,99,62,62,62,62,62,62,62,62,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,42,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 46,36,36,36,36,36,36,36,36,36,43,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 46,36,36,36,36,36,36,36,36,36,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 117,36,36,36,36,36,36,36,36,36,96,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 117,36,36,36,36,36,36,36,36,36,96,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,58,36,36,34,32,32,32,32 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,78,63,36,58,34,42,32,32,46 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,46,63,63,39,100,42,96,32,111 + + db 36,36,36,36,36,36,36,36,36,42,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,115,37,34,42,33,100,42,33,32,36 + + db 36,36,36,36,36,36,36,36,36,42,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,78,37,32,117,117,32,43,43,37,36 + + db 36,36,36,36,36,36,36,36,36,96,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,36,36,32,117,117,32,46,85,37,37 + + db 36,36,36,36,36,36,36,36,42,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,36,36,117,117,117,96,46,96,96,117 + + db 36,36,36,36,36,36,36,36,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,117,117,42,42,117,96,96,46 + + db 36,36,34,117,36,36,36,94,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,63,63,63,36,36,34,117,124,36,42,117,117,34,46 + + db 36,36,96,117,36,36,36,94,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,42,36,63,63,36,36,82,82,124,36,36,53,120,36,36 + + db 117,36,78,117,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,36,36,36,34,32,32,32,32,32,32,32,32,120,120,100 + + db 100,36,36,63,36,36,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,117,117,36,34,34,32,32,32,32,32,32,32,32,117,117,46 + + db 46,120,36,63,36,36,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,42,42,46,46,96,32,46,46,58,58,32,32,111,111,82,117 + + db 34,34,32,32,117,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,42,42,107,54,36,75,75,88,58,36,36,36,117,117,82,46 + + db 46,34,32,32,42,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,76,42,42,117,117,36,36,36,36,36,36,36,36,36,117,42,46 + + db 46,42,32,46,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,117,117,96,117,117,36,36,36,36,117,36,36,36,55,96,32,32 + + db 36,82,32,117,96,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,117,117,32,117,117,36,36,36,36,117,117,39,36,63,34,32,32 + + db 32,58,64,117,96,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,117,36,36,46,34,34,32,32 + + db 32,58,78,37,96,13,10 + + db 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,96,96,32,32,32,32,32,32,46,46,64,34,32 + + db 46,58,58,78,13,10 + + db 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,96,96,32,32,32,32,32,32,46,46,42,42,37 + + db 46,34,34,34,13,10 + + db 36,36,36,36,36,36,36,36,36,36,36,36,36,64,36,36,36,36,36,96,96,32,32,32,32,32,32,46,36,42,42,37 + + db 37,109,34,13,10 + + db 117,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,117,117,36,36,36,36,36,33,32,46,46,34,42,42 + + db 96,46,34,13,10 + + db 117,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,56,36,36,36,36,117,117,32,46,46,34,117,42 + + db 78,64,101,13,10 + + db 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,117,117,36,36,36,36,117,117,32,46,46,96,117,78 + + db 78,56,36,64,13,10 + + db 36,36,36,36,36,36,36,36,36,36,36,82,36,36,36,36,36,36,117,117,63,63,72,36,37,37,78,46,46,96,120,120 + + db 34,56,36,36,13,10 + + db 36,36,36,36,36,36,36,36,36,36,36,82,36,36,36,36,36,36,120,36,36,36,36,36,36,36,63,63,100,46,42,42 + + db 13,10 + + db 96,96,32,32,32,32,32,32,32,36,36,36,36,32,32,32,32,32,120,120,36,36,36,36,36,36,63,63,82,82,42,42 + + db 13,10 + + db 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,64,64,13 + + db 10 + + db 117,42,42,58,58,78,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,42,42,13 + + db 10 + + db 117,80,63,36,34,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,39,42,13 + + db 10 + + db 0 + +rrGunDownLeft db 32,32,32,32,32,32,62,36,13,10 + + db 32,32,32,32,32,62,36,32,36,13,10 + + db 32,32,32,62,62,36,36,36,36,36,13,10 + + db 32,32,32,62,36,32,36,36,36,32,36,13,10 + + db 32,32,62,36,32,36,36,32,36,36,32,36,13,10 + + db 32,62,36,36,36,36,36,36,36,36,36,42,36,13,10 + + db 99,36,32,36,36,32,36,36,36,32,36,36,32,36,13,10 + + db 32,36,36,36,36,36,36,36,36,36,36,36,36,36,43,13,10 + + db 32,32,36,36,32,36,36,32,36,36,32,36,36,36,32,34,13,10 + + db 32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,96,96,13,10 + + db 32,32,32,32,36,32,36,36,36,32,36,36,32,36,36,36,13,10 + + db 32,32,32,32,32,36,36,32,36,36,32,36,36,36,32,36,36,13,10 + + db 32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,42,13,10 + + db 32,32,32,32,32,32,32,36,36,32,36,36,32,36,36,36,32,36,42,13,10 + + db 32,32,32,32,32,32,32,46,36,36,36,36,36,36,36,36,36,36,36,96,13,10 + + db 32,32,32,32,32,32,32,32,46,36,32,36,36,36,32,36,36,32,36,42,13,10 + + db 32,32,32,32,32,32,32,32,117,32,36,36,32,36,36,36,32,36,36,32,34,13,10 + + db 32,32,32,32,32,32,32,32,32,117,36,36,36,36,36,36,36,36,36,36,94,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,36,36,32,36,36,94,13,10 + + db 32,32,32,32,32,32,32,32,32,32,46,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,36,32,36,36,36,32,117,36,32,36,34,13,10 + + db 32,32,32,32,32,32,34,32,42,96,32,32,36,36,32,36,34,32,117,36,36,32,34,13,10 + + db 32,32,32,32,32,36,36,34,42,42,33,37,37,37,36,36,36,96,117,63,36,36,13,10 + + db 32,32,32,32,58,32,36,39,100,32,43,85,32,96,46,36,32,36,36,32,63,117,13,10 + + db 32,32,32,32,78,63,63,42,33,32,32,46,96,96,34,46,117,100,36,36,32,32,42,34,13,10 + + db 32,32,32,32,32,46,34,32,117,117,32,96,117,117,32,36,100,32,46,34,32,32,46,96,13,10 + + db 32,32,32,32,46,115,37,32,117,117,117,42,42,117,120,120,117,46,34,46,34,32,32,117,96,96,13,10 + + db 32,32,32,32,32,32,78,36,117,32,117,36,32,36,32,117,32,82,46,32,46,82,32,64,37,13,10 + + db 32,32,32,32,32,32,36,32,36,117,32,124,36,32,32,32,111,32,82,46,36,32,58,78,32,78,13,10 + + db 32,32,32,32,32,32,46,36,36,34,117,124,32,32,32,111,117,117,42,32,32,32,32,58,58,34,13,10 + + db 32,32,32,32,32,32,32,32,36,32,82,32,32,32,32,36,32,36,96,32,32,32,32,46,34,34,13,10 + + db 32,32,32,32,32,32,32,63,36,36,32,32,32,58,36,36,36,36,55,34,34,34,32,46,37,109,34,101,64,13,10 + + db 32,32,32,32,32,32,63,32,63,32,32,32,46,58,32,36,36,32,36,34,64,32,42,37,32,96,64,32,36,36,13,10 + + db 32,32,32,32,32,32,63,63,34,32,32,46,32,88,36,36,32,39,46,32,46,42,32,42,42,78,32,56,36,13,10 + + db 32,32,32,32,32,116,36,36,36,34,96,75,75,36,36,117,117,36,36,46,46,36,42,42,117,42,78,34,56,13,10 + + db 32,32,32,32,32,46,36,32,36,46,32,36,36,36,32,36,117,32,32,32,46,32,46,34,32,117,120,13,10 + + db 32,32,32,32,32,32,46,117,46,107,54,36,36,36,36,36,32,32,32,32,32,46,46,46,96,120,42,42,42,13,10 + + db 32,32,32,32,32,32,32,42,42,32,117,117,32,36,36,32,32,32,32,32,33,32,32,46,46,46,32,42,13,10 + + db 32,32,32,32,32,32,32,32,42,42,96,117,117,36,96,32,32,32,36,36,117,117,32,46,63,100,82,64,64,13,10 + + db 32,32,32,32,32,32,32,32,76,117,32,32,36,96,32,96,32,32,36,36,117,32,37,63,32,63,36,32,42,42,13,10 + + db 32,32,32,32,32,32,32,32,117,32,117,36,32,36,96,96,32,36,36,32,36,37,32,36,63,36,32,46,39,13,10 + + db 32,32,32,32,32,32,32,32,32,117,36,36,36,36,36,96,36,36,36,36,36,36,36,36,36,36,32,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,117,56,32,36,63,36,32,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,117,117,63,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,36,32,36,36,32,36,36,36,32,117,36,32,36,36,13,10 + + db 32,32,32,32,32,32,32,32,36,36,32,64,36,36,32,36,36,32,120,120,36,13,10 + + db 32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,120,36,36,13,10 + + db 32,32,32,32,32,32,36,36,36,32,36,36,32,36,36,36,32,32,36,13,10 + + db 32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,32,36,36,13,10 + + db 32,32,32,36,32,36,36,32,36,36,32,36,82,36,32,32,36,13,10 + + db 32,32,32,36,36,32,36,36,36,32,36,36,32,82,36,36,13,10 + + db 32,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,36,36,36,32,36,36,32,36,36,32,36,36,36,13,10 + + db 36,36,36,36,36,36,36,36,36,36,36,32,36,36,13,10 + + db 32,36,32,36,36,32,36,36,36,32,32,36,13,10 + + db 32,32,117,36,36,36,36,36,36,32,36,36,13,10 + + db 32,32,32,36,32,36,36,32,32,36,32,78,13,10 + + db 32,32,32,32,36,32,36,32,36,32,58,13,10 + + db 32,32,32,32,32,36,96,36,36,58,36,34,13,10 + + db 32,32,32,32,32,32,36,32,42,63,13,10 + + db 32,32,32,32,32,32,32,117,80,13,10 + + db 0 + +rrGunDown db 62,36,36,36,36,36,36,42,36,36,36,43,34,96,96,13,10 + + db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,42,42,96,13,10 + + db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,42,34,13,10 + + db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,94,94,13,10 + + db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,34,34,13,10 + + db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,117,42,34,96,96 + + db 96,13,10 + + db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,117,117,117,63,63,32,32,46,117,117 + + db 37,78,34,32,32,32,64,36,13,10 + + db 62,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,34,96,78,36,36,32,32,32,32,64 + + db 78,58,34,34,34,101,36,36,13,10 + + db 99,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,120,34,34,42,82,58 + + db 58,58,34,109,46,64,56,56,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,46,46,117,117,36,36,36,36,36,36,36,36,36,117,100,46,34,46,46,36,32 + + db 32,46,46,37,96,78,78,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,111,36,36,37,117,46,46,36,100,46,117,46,46,32,32 + + db 32,32,37,37,42,42,78,120,42,42,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,37,37,96,96,34,36,120,117,82,82,42,32,32 + + db 32,34,42,42,42,117,117,120,42,42,64,42,42,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,33,43,85,96,96,117,120,120,117,111,117,117,96,34 + + db 34,64,42,42,34,34,96,96,46,82,64,42,39,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,42,42,42,43,46,46,117,117,53,32,32,111,117,36,55,63 + + db 34,46,46,36,46,46,46,46,100,82,36,46,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,34,100,100,32,32,96,42,42,36,32,32,32,36,36,36,36 + + db 46,46,46,46,46,46,46,46,63,63,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,58,39,33,117,117,117,42,36,36,32,32,32,36,36,36,39 + + db 36,32,32,32,32,32,32,78,63,63,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,63,42,117,117,117,117,124,124,32,32,58,36,36,36,117 + + db 36,32,32,32,33,117,117,37,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,58,63,63,34,32,32,117,117,117,82,32,32,58,58,36,117,117 + + db 117,32,32,32,36,117,117,37,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,78,46,37,37,36,36,36,34,82,32,32,46,88,36,36,36 + + db 36,32,32,32,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,115,78,36,36,36,36,36,32,32,46,75,36,36,36 + + db 36,32,32,32,36,36,36,72,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,46,32,36,36,32,32,32,75,36,36,36 + + db 36,32,32,32,36,36,36,63,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,63,63,34,34,96,36,36,36,36 + + db 36,96,96,96,36,36,36,63,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,63,63,36,34,46,54,117,117,117 + + db 36,96,96,96,117,56,117,117,36,120,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,63,36,36,36,46,107,117,117,117 + + db 36,36,36,36,117,36,117,117,120,120,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,42,36,117,42,42,42,96,32 + + db 36,36,36,36,36,36,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,46,117,42,42,42,117,117 + + db 36,36,36,36,36,36,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,76,117,117 + + db 36,36,36,36,36,36,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,64,36,36,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,82,82,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,32,36,78,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,32,36,58,34,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,32,36,58,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,32,36,42,63,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,36,36,36,36,36,96,36,42,80,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,36,36,36,117,117,36,36,36,96,36,117,117,13,10 + + db 0 + +rrGunDownRight db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 36,32,32,32,32,32,32,42,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,64 + + db 36,36,56,32,42,32,64,42,39,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101 + + db 32,56,34,32,42,42,64,32,46,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34 + + db 64,32,78,120,42,32,82,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,32,78,34,34,109 + + db 96,78,42,117,120,46,100,63,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,37,32,58,34,37 + + db 32,42,117,32,96,46,63,32,63,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,96,117,64,78,58,46,46 + + db 37,42,42,34,46,46,46,63,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,32,32,42,46,32,32,58,32,32,32 + + db 42,32,42,46,46,32,32,37,32,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,32,36,117,32,32,32,82,32,32,32,34 + + db 32,42,36,32,46,32,117,32,37,36,32,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,94,94,36,36,36,36,63,32,32,34,46,36,32,32,34 + + db 64,46,46,46,32,33,117,117,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,42,32,36,36,36,32,36,63,32,36,34,46,32,46,32,32,34 + + db 34,32,46,32,32,32,36,36,32,36,63,36,32,120,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,42,42,36,36,36,36,36,36,36,117,117,36,36,46,34,46,82,42,96,55 + + db 36,46,36,32,32,32,36,36,36,36,36,63,36,120,120,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,36,36,32,36,117,32,96,36,100,32,46,82,32,117,36,36 + + db 32,39,36,32,32,32,32,32,36,36,32,117,117,32,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,96,32,36,36,32,36,36,32,36,36,36,32,34,36,32,117,100,117,32,111,117,32,36 + + db 36,32,117,117,32,32,32,32,32,36,56,117,32,36,36,32,32,36,13,10 + + db 32,32,32,32,32,32,32,32,34,96,36,36,36,36,36,36,36,36,36,36,36,36,36,36,46,36,120,117,32,111,36,36 + + db 36,36,117,36,36,32,32,96,96,96,117,36,36,36,36,36,36,32,36,36,13,10 + + db 32,32,32,32,32,32,32,43,32,36,36,32,36,36,36,32,36,36,32,36,36,32,36,46,34,32,120,32,32,32,32,36 + + db 32,36,36,32,36,36,96,32,96,36,32,36,36,32,36,36,36,32,36,36,13,10 + + db 32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,37,96,96,117,117,36,32,32,32,58 + + db 58,88,36,36,36,36,36,96,36,36,36,36,36,36,36,36,36,36,82,36,36,36,13,10 + + db 32,32,32,32,32,36,32,36,36,36,32,36,36,32,36,36,32,36,36,36,32,36,37,32,96,117,42,32,36,32,32,32 + + db 46,32,75,36,36,32,117,36,32,36,36,36,32,36,36,32,36,82,32,36,36,36,13,10 + + db 32,32,32,32,36,42,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,32,37,85,46,96,42,36,124,124,32,32 + + db 32,46,75,36,36,117,117,32,36,36,36,36,36,64,36,36,36,36,36,36,36,32,36,36,78,32,34,13,10 + + db 32,32,32,36,32,36,36,36,32,36,36,32,36,36,36,32,36,36,32,46,32,32,33,43,32,32,117,117,32,117,82,32 + + db 32,32,96,32,54,117,96,32,117,36,32,36,36,32,36,36,36,32,36,36,32,36,32,36,32,58,36,13,10 + + db 32,32,36,32,36,36,32,36,36,36,32,36,36,32,36,36,32,117,32,32,32,96,42,32,32,117,117,32,117,34,32,36 + + db 32,32,34,46,107,32,42,117,32,117,32,36,32,36,36,32,36,36,32,36,36,36,32,32,36,32,58,63,13,10 + + db 32,36,36,36,36,36,36,36,36,36,36,36,36,36,36,46,117,32,32,32,32,42,42,100,33,117,117,117,36,36,36,36 + + db 63,34,36,36,46,42,42,76,117,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,32,36,36,42,80,13,10 + + db 36,32,36,36,32,36,36,36,32,36,36,32,36,36,46,32,32,32,32,32,32,32,34,39,42,32,32,36,32,36,32,63 + + db 32,63,36,32,117,42,32,32,32,32,32,32,32,32,36,36,36,32,36,36,32,36,36,36,32,32,36,32,117,13,10 + + db 62,36,36,36,36,36,36,36,36,36,36,36,36,32,32,32,32,32,32,32,32,34,36,36,63,34,37,78,36,46,32,32 + + db 63,63,36,36,46,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,96,36,13,10 + + db 32,62,36,32,36,36,32,36,36,36,32,36,32,32,32,32,32,32,32,32,32,32,36,32,63,46,115,32,32,32,32,32 + + db 32,32,116,46,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,32,36,36,32,36,13,10 + + db 32,32,62,36,32,36,36,36,32,36,36,32,32,32,32,32,32,32,32,32,32,32,32,58,78,32,46,32,32,32,32,32 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,36,36,32,36,36,36,32,36,13,10 + + db 32,32,62,62,36,36,36,36,36,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,62,36,32,36,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,117,13,10 + + db 32,32,32,32,32,62,36,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,13,10 + + db 32,32,32,32,32,32,99,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,13,10 + + db 0 + +rrGunRight db 32,32,32,32,32,32,32,32,32,32,32,32,42,39,36,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,32,32,32,32,34,36,63,80,117,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,42,42,46,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + + db 32,32,32,32,32,78,58,58,42,42,117,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,64,64,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,42,42,82,82,63,63,36,36,36,36,36,36,120,120,32,32,32,32,32,36,36 + + db 36,36,32,32,32,32,32,32,32,96,96,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,42,42,46,100,63,63,36,36,36,36,36,36,36,120,36,36,36,36,36,36,82 + + db 36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,36,36,56,34,120,120,96,46,46,78,37,37,36,72,63,63,117,117,36,36,36,36,36,36,82 + + db 36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,64,36,56,78,78,117,96,46,46,32,117,117,36,36,36,36,117,117,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,101,64,78,42,117,34,46,46,32,117,117,36,36,36,36,56,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,117,13,10 + + db 32,32,32,32,32,32,32,32,34,46,96,42,42,34,46,46,32,33,36,36,36,36,36,117,117,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,117,13,10 + + db 32,32,32,32,32,32,32,32,34,109,37,37,42,42,36,46,32,32,32,32,32,32,96,96,36,36,36,36,36,64,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,34,34,34,46,37,42,42,46,46,32,32,32,32,32,32,96,96,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,78,58,58,46,32,34,64,46,46,32,32,32,32,32,32,96,96,36,36,36,36,36,36,36,36 + + db 36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,96,37,78,58,32,32,32,34,34,46,36,36,117,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,96,117,64,58,32,32,32,34,63,36,39,117,117,36,36,36,36,117,117,32,117,117,13,10 + + db 32,32,32,32,32,32,96,117,32,82,36,32,32,96,55,36,36,36,117,36,36,36,36,117,117,96,117,117,13,10 + + db 32,32,32,32,32,32,34,46,32,42,46,46,42,117,36,36,36,36,36,36,36,36,36,117,117,42,42,76,13,10 + + db 32,32,32,32,32,32,42,32,32,34,46,46,82,117,117,36,36,36,58,88,75,75,36,54,107,42,42,13,10 + + db 32,32,32,32,32,32,117,32,32,34,34,117,82,111,111,32,32,58,58,46,46,32,96,46,46,42,42,13,10 + + db 32,32,32,32,34,36,36,63,36,120,46,46,117,117,32,32,32,32,32,32,32,32,34,34,36,117,117,13,10 + + db 32,32,32,32,34,36,36,63,36,36,100,100,120,120,32,32,32,32,32,32,32,32,34,36,36,36,46,13,10 + + db 32,32,32,32,36,36,36,117,78,36,117,36,36,120,53,36,36,124,82,82,36,36,63,63,36,42,46,13,10 + + db 32,32,32,94,36,36,36,117,96,36,36,46,34,117,117,42,36,124,117,34,36,36,63,63,63,116,13,10 + + db 32,32,32,94,36,36,36,117,34,36,36,46,96,96,117,42,42,117,117,36,36,13,10 + + db 32,32,34,36,36,36,36,36,36,36,36,117,96,96,46,96,117,117,117,36,36,46,13,10 + + db 32,32,42,36,36,36,36,36,36,36,36,37,37,85,46,32,117,117,32,36,36,46,13,10 + + db 32,96,36,36,36,36,36,36,36,36,36,36,37,43,43,32,117,117,32,37,78,13,10 + + db 32,42,36,36,36,36,36,36,36,36,36,36,32,33,42,100,33,42,34,37,115,13,10 + + db 32,42,36,36,36,36,36,36,36,36,36,111,32,96,42,100,39,63,63,46,46,13,10 + + db 32,36,36,36,36,36,36,36,36,36,36,46,32,32,42,34,58,36,63,78,13,10 + + db 32,36,36,36,36,36,36,36,36,36,36,32,32,32,32,34,36,36,58,13,10 + + db 96,36,36,36,36,36,36,36,36,36,117,13,10 + + db 96,36,36,36,36,36,36,36,36,36,117,13,10 + + db 34,36,36,36,36,36,36,36,36,36,46,13,10 + + db 43,36,36,36,36,36,36,36,36,36,46,13,10 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 42,36,36,36,36,36,36,36,36,36,13,10 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 36,36,36,36,36,36,36,36,36,36,13,10 + + db 62,62,62,62,62,62,62,62,62,99,13,10 + + db 0 + +rrGunUpRight db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,80,117,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,63,42,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,36,58,36,36,96,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,58,32,36,32,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,78,32,36,32,32,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,36,36,36,117,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,32,36,36,36,32,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,36,36,32,36,36,32,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,82,32,36,36,32,36,36,36,32,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,32,36,82,36,32,36,36,32,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,36,32,32,36,36,36,32,36,36,32,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,36,36,120,36,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,36,120,120,32,36,36,32,36,36,64,32,36,36,13,10 + + db 32,32,32,32,32,32,32,32,36,36,32,36,117,32,36,36,36,32,36,36,32,36,13,10 + + db 32,32,32,32,32,32,36,36,36,36,36,63,117,117,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,36,36,32,36,63,36,32,56,117,32,36,36,36,13,10 + + db 32,36,32,32,36,36,36,36,36,36,36,36,36,36,96,36,36,36,36,36,117,13,10 + + db 32,39,46,32,36,63,36,32,37,36,32,36,36,32,96,96,36,32,36,117,32,117,13,10 + + db 42,42,32,36,63,32,63,37,32,117,36,36,32,32,96,32,96,36,32,32,117,76,13,10 + + db 32,64,64,82,100,63,46,32,117,117,36,36,32,32,32,96,36,117,117,96,42,42,13,10 + + db 32,32,42,32,46,46,46,32,32,33,32,32,32,32,32,36,36,32,117,117,32,42,42,13,10 + + db 32,42,42,42,120,96,46,46,46,32,32,32,32,32,36,36,36,36,36,54,107,46,117,46,13,10 + + db 32,32,32,120,117,32,34,46,32,46,32,32,32,117,36,32,36,36,36,32,46,36,32,36,46,13,10 + + db 32,56,34,78,42,117,42,42,36,46,46,36,36,117,117,36,36,75,75,96,34,36,36,36,116,13,10 + + db 32,36,56,32,78,42,42,32,42,46,32,46,39,32,36,36,88,32,46,32,32,34,63,63,13,10 + + db 36,36,32,64,96,32,37,42,32,64,34,36,32,36,36,32,58,46,32,32,32,63,32,63,13,10 + + db 32,64,101,34,109,37,46,32,34,34,34,55,36,36,36,36,58,32,32,32,36,36,63,13,10 + + db 32,32,32,32,34,34,46,32,32,32,32,96,36,32,36,32,32,32,32,82,32,36,13,10 + + db 32,32,32,32,34,58,58,32,32,32,32,42,117,117,111,32,32,32,124,117,34,36,36,46,13,10 + + db 32,32,32,32,78,32,78,58,32,36,46,82,32,111,32,32,32,36,124,32,117,36,32,36,13,10 + + db 32,32,32,32,32,37,64,32,82,46,32,46,82,32,117,32,36,32,36,117,32,117,36,78,13,10 + + db 32,32,32,32,96,96,117,32,32,34,46,34,46,117,120,120,117,42,42,117,117,117,32,37,115,46,13,10 + + db 32,32,32,32,32,32,96,46,32,32,34,46,32,100,36,32,117,117,96,32,117,117,32,34,46,13,10 + + db 32,32,32,32,32,32,34,42,32,32,36,36,100,117,46,34,96,96,46,32,32,33,42,63,63,78,13,10 + + db 32,32,32,32,32,32,32,32,117,63,32,36,36,32,36,46,96,32,85,43,32,100,39,36,32,58,13,10 + + db 32,32,32,32,32,32,32,32,36,36,63,117,96,36,36,36,37,37,37,33,42,42,34,36,36,13,10 + + db 32,32,32,32,32,32,32,34,32,36,36,117,32,34,36,32,36,36,32,32,96,42,32,34,13,10 + + db 32,32,32,32,32,32,32,32,34,36,32,36,117,32,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,36,36,36,36,36,36,36,36,36,36,46,13,10 + + db 32,32,32,32,32,32,32,32,32,94,36,36,32,36,36,32,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,94,36,36,36,36,36,36,36,36,36,36,117,13,10 + + db 32,32,32,32,32,32,32,32,32,34,32,36,36,32,36,36,36,32,36,36,32,117,13,10 + + db 32,32,32,32,32,32,32,32,32,32,42,36,32,36,36,32,36,36,36,32,36,46,13,10 + + db 32,32,32,32,32,32,32,32,32,32,96,36,36,36,36,36,36,36,36,36,36,36,46,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,42,36,32,36,36,36,32,36,36,32,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,42,36,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,32,36,36,36,32,36,36,32,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,32,36,36,32,36,36,36,32,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,96,96,36,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,32,36,36,36,32,36,36,32,36,36,32,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,43,36,36,36,36,36,36,36,36,36,36,36,36,36,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,36,36,32,36,36,36,32,36,36,32,36,99,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,42,36,36,36,36,36,36,36,36,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,36,36,32,36,36,32,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,36,36,36,32,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,36,36,36,36,62,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,32,36,62,13,10 + + db 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,36,62,13,10 + + db 0 + +pokerReplaceText db "Ïîìåíÿòü êàðòó ",0 +pokerReplaceTail db "? (y/n): ",0 +pokerAIExchangeText db 13,10,"AI äóìàåò íàä îáìåíîì...",13,10,0 +pokerRevealText db 13,10,"AI âñêðûâàåò ïîêåðíóþ ðóêó...",13,10,0 +pokerYourComboText db "Òâîÿ êîìáèíàöèÿ: ",0 +pokerAIComboText db "Êîìáèíàöèÿ AI: ",0 +pokerTableText db 13,10,"Êàðòû íà ñòîëå:",13,10,0 +pokerHintText db "Ïîäñêàçêà: ñåé÷àñ ó òåáÿ ",0 +pokerDecisionText db "1 - èãðàòü, 2 - ïîâûñèòü ñòàâêó, 0 - ôîëä: ",0 +pokerPotText db "Áàíê ðàóíäà: $",0 +pokerBetText db "Òâîÿ òåêóùàÿ ñòàâêà: $",0 +pokerChipTitle db "Ôèøêè:",13,10,0 +pokerChipHigh db " [###]",13,10,0 +pokerChipMid db " [===]",13,10,0 +pokerChipLow db " [___]",13,10,0 +pokerRaiseAskText db "Íà ñêîëüêî ïîâûñèòü ñòàâêó: $",0 +pokerRaisedText db "Òû ïîâûñèë ñòàâêó. Íîâàÿ ñòàâêà: $",0 +pokerBadRaiseText db "Ïîâûøåíèå äîëæíî áûòü áîëüøå 0 è íå áîëüøå òâîåãî áàíêà.",13,10,0 +pokerAICallRaiseText db 13,10,"AI îòâå÷àåò íà ñòàâêó.",13,10,0 +pokerAIFoldRaiseText db 13,10,"AI íå ïðèíèìàåò ïîâûøåíèå è äåëàåò ôîëä. Òû âûèãðàë!",13,10,0 +pokerHardIntroText db "Hard Poker: îäèí ðàç ìîæíî çàìåíèòü îäíó êàðìàííóþ êàðòó.",13,10,0 +pokerHardExchangeText db "Çàìåíèòü êàðòó? 1 - ïåðâóþ, 2 - âòîðóþ, 0 - íå ìåíÿòü: ",0 +pokerHardAIExchangeText db 13,10,"AI ïåðåñìàòðèâàåò êàðìàííûå êàðòû...",13,10,0 +pokerAIRaiseText db 13,10,"AI ïîâûøàåò ñòàâêó íà $",0 +pokerCallRaiseText db "Îòâåòèòü? 1 - êîëë, 0 - ôîëä: ",0 +pokerPlayerCallText db "Òû îòâåòèë íà ïîâûøåíèå. Íîâàÿ ñòàâêà: $",0 +pokerFoldToRaiseText db 13,10,"Òû ñáðîñèë êàðòû ïîñëå ïîâûøåíèÿ AI.",13,10,"Òû ïðîèãðàë.",13,10,0 +pokerFoldText db 13,10,"Òû ñäåëàë ôîëä.",13,10,"Òû ïðîèãðàë.",13,10,0 +pokerAIFoldText db 13,10,"AI ñäåëàë ôîëä. Òû âûèãðàë!",13,10,0 +pokerNextCardText db 13,10,"Îòêðûâàåòñÿ ñëåäóþùàÿ êàðòà...",13,10,0 +pokerHighName db "Ñòàðøàÿ êàðòà",13,10,0 +pokerPairName db "Ïàðà",13,10,0 +pokerTwoPairName db "Äâå ïàðû",13,10,0 +pokerTripsName db "Òðîéêà",13,10,0 +pokerStraightName db "Ñòðèò",13,10,0 +pokerFlushName db "Ôëåø",13,10,0 +pokerFullHouseName db "Ôóëë õàóñ",13,10,0 +pokerFourName db "Êàðå",13,10,0 +pokerStraightFlushName db "Ñòðèò-ôëåø",13,10,0 + +; === Òåêñòû è ñèìâîëû ñëîò-ìàøèí === +slotPullText db "Êðóòèì áàðàáàíû...",13,10,0 +slotLeft db "[ ",0 +slotMid db " ] [ ",0 +slotRight db " ]",13,10,0 +slotJackpot db "Äæåêïîò!",13,10,0 +slotPair db "Êîìáèíàöèÿ ñûãðàëà!",13,10,0 +slotPayoutText db "Âûïëàòà x",0 +slotPayTableText db "Ñèìâîëû: LEM/CHR x2, CLV/BEL x3, DIA/BOX x5, 777 x7.",13,10 + db "Êîìáèíàöèè: Ãîð.M/Âåðò.M/Äèàã.M x1, Ãîð.L x2, Ãîð.XL x3",13,10 + db "Ââåðõ/Âíèç x4, Íåáî/Çåìëÿ x7, Ãëàç x8, Äæåêïîò x10.",13,10,0 +slotEmpty db "Íå ïîâåçëî.",13,10,0 +slotComboText db "Êîìáèíàöèÿ: ",0 +slotMultiplierText db "Ìíîæèòåëü: x",0 +slotTotalMultiplierText db "Èòîãîâûé ìíîæèòåëü: x",0 +slotComboHorM db "Ãîð. M",0 +slotComboVertM db "Âåðò. M",0 +slotComboDiagM db "Äèàã. M",0 +slotComboHorL db "Ãîð. L",0 +slotComboHorXL db "Ãîð. XL",0 +slotComboUp db "Ââåðõ",0 +slotComboDown db "Âíèç",0 +slotComboSky db "Íåáî",0 +slotComboEarth db "Çåìëÿ",0 +slotComboEye db "Ãëàç",0 +slotComboJackpot db "Äæåêïîò",0 + +; === Ãðàôèêà êàðò: ðàìêè, ñòðîêè, ðóáàøêè è ïåðåâîðîò === +cardTop db 0E2h, 094h, 08Ch, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 090h, 13,10,0 +cardBottom db 0E2h, 094h, 094h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 098h, 13,10,0 +cardEmpty db 0E2h, 094h, 082h, " ", 0E2h, 094h, 082h, 13,10,0 +cardSuitLeft db 0E2h, 094h, 082h, " ", 0 +cardSuitRight db " ", 0E2h, 094h, 082h, 13,10,0 +cardRankOneL db 0E2h, 094h, 082h, " ", 0 +cardRankOneR db " ", 0E2h, 094h, 082h, 13,10,0 +cardRankTenL db 0E2h, 094h, 082h, " ", 0 +cardRankTenR db " ", 0E2h, 094h, 082h, 13,10,0 +cardCenterL db 0E2h, 094h, 082h, " ", 0 +cardCenterR db " ", 0E2h, 094h, 082h, 13,10,0 +cardTopSeg db 0E2h, 094h, 08Ch, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 090h, 0 +cardBottomSeg db 0E2h, 094h, 094h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 080h, 0E2h, 094h, 098h, 0 +cardEmptySeg db 0E2h, 094h, 082h, " ", 0E2h, 094h, 082h, 0 +cardBackSeg db 0E2h, 094h, 082h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 096h, 091h, 0E2h, 094h, 082h, 0 +cardBackBlueSeg db 0E2h, 094h, 082h, "~~*~~*~~*", 0E2h, 094h, 082h, 0 +cardBackRedSeg db 0E2h, 094h, 082h, "XX+XX+XX+", 0E2h, 094h, 082h, 0 +cardBackGoldSeg db 0E2h, 094h, 082h, "$*$*$*$*$", 0E2h, 094h, 082h, 0 +cardBackSkullSeg db 0E2h, 094h, 082h, "|o",0E2h,098h,0A0h," v ",0E2h,098h,0A0h,"o|", 0E2h, 094h, 082h, 0 +cardBackCloverSeg db 0E2h, 094h, 082h, "$+ ",0E2h,099h,0A3h,"$",0E2h,099h,0A3h," +$", 0E2h, 094h, 082h, 0 +backGray1 db 0E2h,094h,082h,"+-+-+-+-+",0E2h,094h,082h,0 +backGray2 db 0E2h,094h,082h,"|#|#|#|#|",0E2h,094h,082h,0 +backGray3 db 0E2h,094h,082h,"+-+-+-+-+",0E2h,094h,082h,0 +backGray4 db 0E2h,094h,082h,"|#|#|#|#|",0E2h,094h,082h,0 +backGray5 db 0E2h,094h,082h,"+-+-+-+-+",0E2h,094h,082h,0 +backBlue1 db 0E2h,094h,082h,"\\==*==//",0E2h,094h,082h,0 +backBlue2 db 0E2h,094h,082h,"/ ___ /",0E2h,094h,082h,0 +backBlue3 db 0E2h,094h,082h,"| (@@@) |",0E2h,094h,082h,0 +backBlue4 db 0E2h,094h,082h,"/ ~~~ /",0E2h,094h,082h,0 +backBlue5 db 0E2h,094h,082h,"//==*==//",0E2h,094h,082h,0 +backRed1 db 0E2h,094h,082h,"ooooooooo",0E2h,094h,082h,0 +backRed2 db 0E2h,094h,082h,"oXXXxXXXo",0E2h,094h,082h,0 +backRed3 db 0E2h,094h,082h,"oXX---XXo",0E2h,094h,082h,0 +backRed4 db 0E2h,094h,082h,"oXXXxXXXo",0E2h,094h,082h,0 +backRed5 db 0E2h,094h,082h,"ooooooooo",0E2h,094h,082h,0 +backGold1 db 0E2h,094h,082h,"{$*$$$*$}",0E2h,094h,082h,0 +backGold2 db 0E2h,094h,082h,"*/^ $ ^/*",0E2h,094h,082h,0 +backGold3 db 0E2h,094h,082h,"$ <@@@> $",0E2h,094h,082h,0 +backGold4 db 0E2h,094h,082h,"*v/ $ /v*",0E2h,094h,082h,0 +backGold5 db 0E2h,094h,082h,"{$*$$$*$}",0E2h,094h,082h,0 +backSkull1 db 0E2h,094h,082h,"._.---._.",0E2h,094h,082h,0 +backSkull2 db 0E2h,094h,082h,"/,(o o),\",0E2h,094h,082h,0 +backSkull3 db 0E2h,094h,082h,"| ^ |",0E2h,094h,082h,0 +backSkull4 db 0E2h,094h,082h,"\ '-=-' /",0E2h,094h,082h,0 +backSkull5 db 0E2h,094h,082h,"~|==|==|~",0E2h,094h,082h,0 +backClover1 db 0E2h,094h,082h,"+o+$$$+o+",0E2h,094h,082h,0 +backClover2 db 0E2h,094h,082h,"o ",0E2h,098h,098h," + ",0E2h,098h,098h," o",0E2h,094h,082h,0 +backClover3 db 0E2h,094h,082h,"$+ ",0E2h,099h,0A3h,"$",0E2h,099h,0A3h," +$",0E2h,094h,082h,0 +backClover4 db 0E2h,094h,082h,"o ",0E2h,098h,098h," | ",0E2h,098h,098h," o",0E2h,094h,082h,0 +backClover5 db 0E2h,094h,082h,"+o+$$$+o+",0E2h,094h,082h,0 +backArcane1 db 0E2h,094h,082h,".~*~*~*~.",0E2h,094h,082h,0 +backArcane2 db 0E2h,094h,082h,"/__~_~__\",0E2h,094h,082h,0 +backArcane3 db 0E2h,094h,082h,"|_/\/\_ |",0E2h,094h,082h,0 +backArcane4 db 0E2h,094h,082h,"| \_/\_/|",0E2h,094h,082h,0 +backArcane5 db 0E2h,094h,082h,"'--===--'",0E2h,094h,082h,0 +backNoir1 db 0E2h,094h,082h,"((\\_//))",0E2h,094h,082h,0 +backNoir2 db 0E2h,094h,082h,"// | \\",0E2h,094h,082h,0 +backNoir3 db 0E2h,094h,082h,"--(#*#)--",0E2h,094h,082h,0 +backNoir4 db 0E2h,094h,082h,"\\__|__//",0E2h,094h,082h,0 +backNoir5 db 0E2h,094h,082h,"((//~\\))",0E2h,094h,082h,0 +backDiamond1 db 0E2h,094h,082h,"<><###><>",0E2h,094h,082h,0 +backDiamond2 db 0E2h,094h,082h,"/\ /\",0E2h,094h,082h,0 +backDiamond3 db 0E2h,094h,082h,"*$*",0E2h,094h,082h,0 +backDiamond4 db 0E2h,094h,082h,"\/ \/",0E2h,094h,082h,0 +backDiamond5 db 0E2h,094h,082h,"<><###><>",0E2h,094h,082h,0 +backRider1 db 0E2h,094h,082h,".oO===Oo.",0E2h,094h,082h,0 +backRider2 db 0E2h,094h,082h,"(/ .-. /)",0E2h,094h,082h,0 +backRider3 db 0E2h,094h,082h,"o-( @ )-o",0E2h,094h,082h,0 +backRider4 db 0E2h,094h,082h,"(/ '-' /)",0E2h,094h,082h,0 +backRider5 db 0E2h,094h,082h,"'oO===Oo'",0E2h,094h,082h,0 +backBee1 db 0E2h,094h,082h,"<>.<>.<>.",0E2h,094h,082h,0 +backBee2 db 0E2h,094h,082h,".<>.<><>.",0E2h,094h,082h,0 +backBee3 db 0E2h,094h,082h,"<> BEE <>",0E2h,094h,082h,0 +backBee4 db 0E2h,094h,082h,".<>.<><>.",0E2h,094h,082h,0 +backBee5 db 0E2h,094h,082h,"<>.<>.<>.",0E2h,094h,082h,0 +backFan1 db 0E2h,094h,082h,"\\|/\\|//",0E2h,094h,082h,0 +backFan2 db 0E2h,094h,082h," -\\|//- ",0E2h,094h,082h,0 +backFan3 db 0E2h,094h,082h,"<(( o ))>",0E2h,094h,082h,0 +backFan4 db 0E2h,094h,082h," -//|\\- ",0E2h,094h,082h,0 +backFan5 db 0E2h,094h,082h,"//|/|/|\\",0E2h,094h,082h,0 +backWeb1 db 0E2h,094h,082h,"\\..|..//",0E2h,094h,082h,0 +backWeb2 db 0E2h,094h,082h,".\\.|.//.",0E2h,094h,082h,0 +backWeb3 db 0E2h,094h,082h,"--(o-o)--",0E2h,094h,082h,0 +backWeb4 db 0E2h,094h,082h,".//|.|\\.",0E2h,094h,082h,0 +backWeb5 db 0E2h,094h,082h,"//''-''\\",0E2h,094h,082h,0 +cardFlipLeft db 0E2h, 094h, 082h, " \ ", 0E2h, 094h, 082h, 0 +cardFlipMid db 0E2h, 094h, 082h, " | ", 0E2h, 094h, 082h, 0 +cardFlipRight db 0E2h, 094h, 082h, " / ", 0E2h, 094h, 082h, 0 +cardSuitRightSeg db " ", 0E2h, 094h, 082h, 0 +cardRankOneRSeg db " ", 0E2h, 094h, 082h, 0 +cardRankTenRSeg db " ", 0E2h, 094h, 082h, 0 +cardCenterRSeg db " ", 0E2h, 094h, 082h, 0 +cardGap db " ",0 +revealText db 13,10,"AI âñêðûâàåò êàðòû...",13,10,0 +rank2 db "2",0 +rank3 db "3",0 +rank4 db "4",0 +rank5 db "5",0 +rank6 db "6",0 +rank7 db "7",0 +rank8 db "8",0 +rank9 db "9",0 +rank10 db "10",0 +rankJ db "J",0 +rankQ db "Q",0 +rankK db "K",0 +rankA db "A",0 + +suitSpades db 0E2h, 099h, 0A0h, 0 +suitHearts db 0E2h, 099h, 0A5h, 0 +suitClubs db 0E2h, 099h, 0A3h, 0 +suitDiamonds db 0E2h, 099h, 0A6h, 0 + +ranks dd OFFSET rank2, OFFSET rank3, OFFSET rank4, OFFSET rank5 + dd OFFSET rank6, OFFSET rank7, OFFSET rank8, OFFSET rank9 + dd OFFSET rank10, OFFSET rankJ, OFFSET rankQ, OFFSET rankK, OFFSET rankA +suits dd OFFSET suitSpades, OFFSET suitHearts, OFFSET suitClubs, OFFSET suitDiamonds +pokerNames dd OFFSET pokerHighName, OFFSET pokerPairName, OFFSET pokerTwoPairName + dd OFFSET pokerTripsName, OFFSET pokerStraightName, OFFSET pokerFlushName + dd OFFSET pokerFullHouseName, OFFSET pokerFourName, OFFSET pokerStraightFlushName + +slot0 db "CLV",0 +slot1 db "LEM",0 +slot2 db "CHR",0 +slot3 db "BEL",0 +slot4 db "DIA",0 +slot5 db "BOX",0 +slot6 db "777",0 +slotSymbols dd OFFSET slot0, OFFSET slot1, OFFSET slot2 + dd OFFSET slot3, OFFSET slot4, OFFSET slot5, OFFSET slot6 +slotSymbolValues dd 3, 2, 2, 3, 5, 5, 7 +classicSlot0 db "7",0 +classicSlot1 db "BAR",0 +classicSlot2 db "$",0 +classicSlot3 db "*",0 +classicSlot4 db "#",0 +classicSlot5 db "A",0 +classicSlotSymbols dd OFFSET classicSlot0, OFFSET classicSlot1, OFFSET classicSlot2 + dd OFFSET classicSlot3, OFFSET classicSlot4, OFFSET classicSlot5 +classicSlotPayTableText db "Êëàññè÷åñêèé ñëîò 3x3. Âûèãðûøíàÿ ëèíèÿ - ñðåäíÿÿ.",13,10 + db "777 x10, $$$ x7, BAR x5, AAA x4, *** / ### x3, ïàðà x2.",13,10,0 +classicSlotJackpot db "Äæåêïîò! Òðè îäèíàêîâûõ.",13,10,0 +classicSlotPair db "Ïàðà íà ëèíèè!",13,10,0 +classicSlotEmpty db "Íå ïîâåçëî.",13,10,0 +classicSlotBorder db '+-----+-----+-----+',13,10,0 +classicSlotPayline db '----- WIN LINE -----',13,10,0 +; === MCI-êîìàíäû çâóêîâûõ ôàéëîâ === +cardSoundClose db 'close cardsound',0 +cardSoundOpen db 'open "assets\audio\playing_cards_deck_flick_through_001_20485.wav" type waveaudio alias cardsound',0 +cardSoundPlay db 'play cardsound from 0',0 +cardSoundStop db 'stop cardsound',0 +slotSoundClose db 'close slotsound',0 +slotSoundOpen db 'open "assets\audio\hKhoJArfEGAxxMewx0UQiddakTdBjFc.wav" type waveaudio alias slotsound',0 +slotSoundPlay db 'play slotsound from 0',0 +slotSoundStop db 'stop slotsound',0 +slotIntroClose db 'close slotintro',0 +slotIntroOpen db 'open "assets\audio\Ëåòñ ãîó ãýìáëèíã.wav" type waveaudio alias slotintro',0 +slotIntroPlay db 'play slotintro from 0',0 +slotIntroStop db 'stop slotintro',0 +jackpotClose db 'close jackpotsound',0 +jackpotOpen db 'open "assets\audio\Äæýê ïîò.wav" type waveaudio alias jackpotsound',0 +jackpotPlay db 'play jackpotsound from 0',0 +jackpotStop db 'stop jackpotsound',0 +hakariSoundClose db 'close hakarisound',0 +hakariSoundOpen db 'open "assets\audio\hakari_dance.wav" type waveaudio alias hakarisound',0 +hakariSoundPlay db 'play hakarisound from 0',0 +hakariSoundStop db 'stop hakarisound',0 +coinSoundClose db 'close coinsound',0 +coinSoundOpen db 'open "assets\audio\Çâóê ìîíåòû áðîøåííîé â âîçäóõ è óïàâøåé íà ïîâåðõíîñòü.wav" type waveaudio alias coinsound',0 +coinSoundPlay db 'play coinsound from 0',0 +coinSoundStop db 'stop coinsound',0 +bankruptClose db 'close bankruptsound',0 +bankruptOpen db 'open "assets\audio\Ïðîèãðûø.wav" type waveaudio alias bankruptsound',0 +bankruptPlay db 'play bankruptsound from 0',0 +bankruptStop db 'stop bankruptsound',0 +victoryClose db 'close victorysound',0 +victoryOpen db 'open "assets\audio\victory-tf2.wav" type waveaudio alias victorysound',0 +victoryPlay db 'play victorysound from 0',0 +victoryStop db 'stop victorysound',0 +rrSpinClose db 'close rrspinsound',0 +rrSpinOpen db 'open "assets\audio\toy-gun-revolver-close-chamber-spin_f1ruc5nd.wav" type waveaudio alias rrspinsound',0 +rrSpinPlay db 'play rrspinsound from 0',0 +rrSpinStop db 'stop rrspinsound',0 +rrDryClose db 'close rrdrysound',0 +rrDryOpen db 'open "assets\audio\revolverdryfirec.wav" type waveaudio alias rrdrysound',0 +rrDryPlay db 'play rrdrysound from 0',0 +rrDryStop db 'stop rrdrysound',0 +rrShotClose db 'close rrshotsound',0 +rrShotOpen db 'open "assets\audio\b05e1ac8be34248.wav" type waveaudio alias rrshotsound',0 +rrShotPlay db 'play rrshotsound from 0',0 +rrShotStop db 'stop rrshotsound',0 +casinoRouletteSoundClose db 'close casinoroulettesound',0 +casinoRouletteSoundOpen db 'open "assets\audio\roulette-wheel-throw-2.wav" type waveaudio alias casinoroulettesound',0 +casinoRouletteSoundPlay db 'play casinoroulettesound from 0',0 +casinoRouletteSoundStop db 'stop casinoroulettesound',0 +stoneSoundClose db 'close stonesound',0 +stoneSoundOpen db 'open "assets\audio\moving-stone.wav" type waveaudio alias stonesound',0 +stoneSoundPlay db 'play stonesound from 0',0 +stoneSoundStop db 'stop stonesound',0 +towerMusicClose db 'close towermusic',0 +towerMusicStop db 'stop towermusic',0 +towerMusicPlay db 'play towermusic repeat',0 +towerMusicOpen1 db 'open "assets\music\tower\KEYGEN_CHURCH_-_Hareklavit_75543927.mp3" type mpegvideo alias towermusic',0 +towerMusicOpen2 db 'open "assets\music\tower\KEYGEN_CHURCH_-_Ladikerfos_75543991.mp3" type mpegvideo alias towermusic',0 +towerMusicOpen3 db 'open "assets\music\tower\Keygen_Church_-_Tenebre_Rosso_Sangue_ULTRAKILL_Original_Game_Soundtrack_79610890.mp3" type mpegvideo alias towermusic',0 +towerMusicOpen4 db 'open "assets\music\tower\KEYGEN_CHURCH_-_Tilaskarot_75546826.mp3" type mpegvideo alias towermusic',0 +slotBorder db '+-----+-----+-----+-----+-----+',13,10,0 +slotWall db '|',0 +slotWinLeft db '>',0 +slotWinRight db '<',0 +slotCellBlank db ' ',0 +slotPadTwo db ' ',0 +slotPadOne db ' ',0 +skullSeg1 db 020h, 020h, 020h, 020h, 0E2h, 096h, 084h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 084h, 020h, 020h, 020h, 020h, 020h, 020h, 0 +skullSeg2 db 020h, 020h, 0E2h, 096h, 084h, 0E2h, 096h, 088h, 0E2h, 096h, 080h, 020h, 0E2h, 096h, 084h, 0E2h, 096h, 084h, 020h, 0E2h, 096h, 080h, 0E2h, 096h, 088h, 0E2h, 096h, 084h, 020h, 020h, 020h, 020h, 0 +skullSeg3 db 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 020h, 0 +skullSeg4 db 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 0E2h, 096h, 080h, 020h, 020h, 0E2h, 096h, 080h, 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 020h, 0 +skullSeg5 db 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 0E2h, 096h, 084h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 084h, 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 020h, 0 +skullSeg6 db 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 0E2h, 096h, 080h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 080h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 020h, 020h, 0 +skullSeg7 db 020h, 020h, 020h, 0E2h, 096h, 080h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 0E2h, 096h, 080h, 020h, 020h, 020h, 020h, 020h, 0 +skullSeg8 db 020h, 020h, 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 0E2h, 096h, 088h, 0E2h, 096h, 088h, 020h, 020h, 020h, 020h, 020h, 020h, 0 +skullNums db " [1] [2] [3]",13,10,0 +skullBlankBall db 13,10,13,10,13,10,0 +skullBall1 db " .***.",13,10," (* O *)",13,10," `***'",13,10,0 +skullBall2 db " .***.",13,10," (* O *)",13,10," `***'",13,10,0 +skullBall3 db " .***.",13,10," (* O *)",13,10," `***'",13,10,0 +saveFileName db 64 dup(0) +saveFullPath db 260 dup(0) +saveDirPath db 260 dup(0) +accountPatternFull db 260 dup(0) +leaderSavePath db 260 dup(0) +appDataReady dd 0 +saveExt db '.dat',0 +accountPattern db "*.dat",0 +appDataEnvName db "APPDATA",0 +appDataSubDir db "\AssemblerCasino",0 +pathSlashText db "\",0 +runtimeDir db "runtime",0 +danceFileName db "assets\animations\hakari_dance.ans",0 +casinoIntroFile db "assets\animations\casino_intro.ans",0 +dbdHookFileName db "assets\animations\dbd_hook.ans",0 +dbdHookCmd db "cmd /c start ""DBD Hook"" tools\preview_dbd_hook.bat",0 +dbdHookStopFile db "runtime\dbd_hook.stop",0 +animProfileFile db "runtime\anim_profile.txt",0 +animProfileDigits db "012",0 +ansiExitIntro db 1Bh,"[0m",1Bh,"[?25h",1Bh,"[2J",1Bh,"[H",0 +accountList db 20 dup(64 dup(0)) +findData db 320 dup(0) + + +; --- Umamusume Pretty Derby Data --- +umaTitleText db 13,10,"=== UMAMUSUME PRETTY DERBY (ÑÊÀ×ÊÈ) ===",13,10,0 +umaMenuText db "Âûáåðèòå âàøó äåâ÷îíêó-ëîøàäêó:",13,10 + db "1. Special Week (Ñïåöèàë Óèê) - Êîýô. x4 (Ñáàëàíñèðîâàííàÿ)",13,10 + db "2. Silence Suzuka (Ñàéëåíñ Ñóäçóêà) - Êîýô. x3 (Ðåçâûé ñòàðò)",13,10 + db "3. Tokai Teio (Òîêàé Òýéîí) - Êîýô. x5 (Ôèíèøíûé ñïóðò)",13,10 + db "4. Gold Ship (Ãîëä Øèï) - Êîýô. x8 (Íåïðåäñêàçóåìàÿ!)",13,10 + db "5. Mejiro McQueen (Ìýäçèðî Ìàêêóèí) - Êîýô. x6 (Ñòàéåð)",13,10,0 +umaChoiceText db "Âàø âûáîð (1-5): ",0 +umaTrackHeader db 13,10,"--- ÒÐÀÑÑÀ ÒÐÈÓÌÔÀ ---",13,10,0 +umaFinishText db " |FINISH|",13,10,0 +umaHorse1Name db "1. Special Week : ",0 +umaHorse2Name db "2. Silence Suzuka : ",0 +umaHorse3Name db "3. Tokai Teio : ",0 +umaHorse4Name db "4. Gold Ship : ",0 +umaHorse5Name db "5. Mejiro McQueen : ",0 +umaWinAnnouncement db 13,10,"Ïîáåäèòåëü ñêà÷åê: ",0 +umaYouWinText db " ÏÎÁÅÄÀ! Âàø âûáîð ïðèøåë ïåðâûì! Âû âûèãðàëè $",0 +umaYouLoseText db " Óâû, âàø âûáîð íå çàíÿë 1-å ìåñòî. Óäà÷à óëûáíåòñÿ â ñëåäóþùèé ðàç!",13,10,0 +umaStepChar db "=",0 +umaHeadChar db ">",0 +umaHorseNames dd OFFSET umaHorse1Name, OFFSET umaHorse2Name, OFFSET umaHorse3Name, OFFSET umaHorse4Name, OFFSET umaHorse5Name +umaMultipliers dd 4, 3, 5, 8, 6 + +umaPos dd 5 dup(0) +umaChoice dd 0 +umaWinner dd 0 + +.code +; --- PrintStr: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintStr PROC uses eax ecx esi, pText:DWORD + mov esi, pText + xor ecx, ecx +count_loop: + cmp byte ptr [esi + ecx], 0 + je count_done + inc ecx + jmp count_loop +count_done: + cmp ecx, 0 + je print_done + mov printLen, ecx + invoke MultiByteToWideChar, 1251, 0, pText, printLen, ADDR wideBuffer, 4096 + cmp eax, 0 + je print_raw_fallback + mov wideLen, eax + invoke WriteConsoleW, hOut, ADDR wideBuffer, wideLen, ADDR charsWritten, 0 + cmp eax, 0 + jne print_done + invoke WideCharToMultiByte, 65001, 0, ADDR wideBuffer, wideLen, ADDR utf8Buffer, 8192, 0, 0 + cmp eax, 0 + je print_raw_fallback + invoke WriteFile, hOut, ADDR utf8Buffer, eax, ADDR charsWritten, 0 + jmp print_done +print_raw_fallback: + invoke WriteFile, hOut, pText, printLen, ADDR charsWritten, 0 +print_done: + ret +PrintStr ENDP + +; --- PrintUtf8: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintUtf8 PROC uses eax ecx esi, pText:DWORD + mov esi, pText + xor ecx, ecx +utf8_count_loop: + cmp byte ptr [esi + ecx], 0 + je utf8_count_done + inc ecx + jmp utf8_count_loop +utf8_count_done: + cmp ecx, 0 + je utf8_print_done + mov printLen, ecx + invoke MultiByteToWideChar, 65001, 0, pText, printLen, ADDR wideBuffer, 4096 + cmp eax, 0 + je utf8_raw_fallback + mov wideLen, eax + invoke WriteConsoleW, hOut, ADDR wideBuffer, wideLen, ADDR charsWritten, 0 + cmp eax, 0 + jne utf8_print_done + invoke WriteFile, hOut, pText, printLen, ADDR charsWritten, 0 + jmp utf8_print_done +utf8_raw_fallback: + invoke WriteFile, hOut, pText, printLen, ADDR charsWritten, 0 +utf8_print_done: + ret +PrintUtf8 ENDP + +; --- SetColor: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +SetColor PROC attr:DWORD + invoke SetConsoleTextAttribute, hOut, attr + ret +SetColor ENDP + +; --- ResetColor: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +ResetColor PROC + invoke SetConsoleTextAttribute, hOut, COLOR_DEFAULT + ret +ResetColor ENDP + +; --- EnableAnsi: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +EnableAnsi PROC uses eax + invoke GetConsoleMode, hOut, ADDR consoleMode + cmp eax, 0 + je enable_ansi_done + or consoleMode, ENABLE_VIRTUAL_TERMINAL_PROCESSING + invoke SetConsoleMode, hOut, consoleMode +enable_ansi_done: + ret +EnableAnsi ENDP + +; --- SetSuitColor: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +SetSuitColor PROC suitIndex:DWORD + mov eax, suitIndex + cmp eax, 1 + je set_red_suit + cmp eax, 3 + je set_red_suit + invoke SetColor, COLOR_CARD + ret +set_red_suit: + invoke SetColor, COLOR_RED_CARD + ret +SetSuitColor ENDP + +; --- SetCardBackColor: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +SetCardBackColor PROC + mov eax, shopBackStyle + cmp eax, 1 + je card_back_blue + cmp eax, 2 + je card_back_red + cmp eax, 3 + je card_back_gold + cmp eax, 4 + je card_back_skull + cmp eax, 5 + je card_back_clover + cmp eax, 6 + je card_back_arcane + cmp eax, 7 + je card_back_noir + cmp eax, 8 + je card_back_diamond + cmp eax, 9 + je card_back_rider + cmp eax, 10 + je card_back_bee + cmp eax, 11 + je card_back_fan + cmp eax, 12 + je card_back_web + invoke SetColor, COLOR_BACK_CARD + ret +card_back_blue: + invoke SetColor, COLOR_TITLE + ret +card_back_red: + invoke SetColor, COLOR_BAD + ret +card_back_gold: + invoke SetColor, COLOR_WARN + ret +card_back_skull: + invoke SetColor, COLOR_BAD + ret +card_back_clover: + invoke SetColor, COLOR_MONEY + ret +card_back_arcane: + invoke SetColor, COLOR_TITLE + ret +card_back_noir: + invoke SetColor, COLOR_CARD + ret +card_back_diamond: + invoke SetColor, COLOR_TITLE + ret +card_back_rider: + invoke SetColor, COLOR_WARN + ret +card_back_bee: + invoke SetColor, COLOR_WARN + ret +card_back_fan: + invoke SetColor, COLOR_TITLE + ret +card_back_web: + invoke SetColor, COLOR_CARD + ret +SetCardBackColor ENDP +; --- PrintCardBackSegLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintCardBackSegLine PROC lineNo:DWORD + mov eax, shopBackStyle + cmp eax, 1 + je back_line_blue + cmp eax, 2 + je back_line_red + cmp eax, 3 + je back_line_gold + cmp eax, 4 + je back_line_skull + cmp eax, 5 + je back_line_clover + cmp eax, 6 + je back_line_arcane + cmp eax, 7 + je back_line_noir + cmp eax, 8 + je back_line_diamond + cmp eax, 9 + je back_line_rider + cmp eax, 10 + je back_line_bee + cmp eax, 11 + je back_line_fan + cmp eax, 12 + je back_line_web +back_line_gray: + mov eax, lineNo + cmp eax, 1 + je back_gray_1 + cmp eax, 2 + je back_gray_2 + cmp eax, 3 + je back_gray_3 + cmp eax, 4 + je back_gray_4 + invoke PrintUtf8, OFFSET backGray5 + ret +back_gray_1: + invoke PrintUtf8, OFFSET backGray1 + ret +back_gray_2: + invoke PrintUtf8, OFFSET backGray2 + ret +back_gray_3: + invoke PrintUtf8, OFFSET backGray3 + ret +back_gray_4: + invoke PrintUtf8, OFFSET backGray4 + ret +back_line_blue: + mov eax, lineNo + cmp eax, 1 + je back_blue_1 + cmp eax, 2 + je back_blue_2 + cmp eax, 3 + je back_blue_3 + cmp eax, 4 + je back_blue_4 + invoke PrintUtf8, OFFSET backBlue5 + ret +back_blue_1: + invoke PrintUtf8, OFFSET backBlue1 + ret +back_blue_2: + invoke PrintUtf8, OFFSET backBlue2 + ret +back_blue_3: + invoke PrintUtf8, OFFSET backBlue3 + ret +back_blue_4: + invoke PrintUtf8, OFFSET backBlue4 + ret +back_line_red: + mov eax, lineNo + cmp eax, 1 + je back_red_1 + cmp eax, 2 + je back_red_2 + cmp eax, 3 + je back_red_3 + cmp eax, 4 + je back_red_4 + invoke PrintUtf8, OFFSET backRed5 + ret +back_red_1: + invoke PrintUtf8, OFFSET backRed1 + ret +back_red_2: + invoke PrintUtf8, OFFSET backRed2 + ret +back_red_3: + invoke PrintUtf8, OFFSET backRed3 + ret +back_red_4: + invoke PrintUtf8, OFFSET backRed4 + ret +back_line_gold: + mov eax, lineNo + cmp eax, 1 + je back_gold_1 + cmp eax, 2 + je back_gold_2 + cmp eax, 3 + je back_gold_3 + cmp eax, 4 + je back_gold_4 + invoke PrintUtf8, OFFSET backGold5 + ret +back_gold_1: + invoke PrintUtf8, OFFSET backGold1 + ret +back_gold_2: + invoke PrintUtf8, OFFSET backGold2 + ret +back_gold_3: + invoke PrintUtf8, OFFSET backGold3 + ret +back_gold_4: + invoke PrintUtf8, OFFSET backGold4 + ret +back_line_skull: + mov eax, lineNo + cmp eax, 1 + je back_skull_1 + cmp eax, 2 + je back_skull_2 + cmp eax, 3 + je back_skull_3 + cmp eax, 4 + je back_skull_4 + invoke PrintUtf8, OFFSET backSkull5 + ret +back_skull_1: + invoke PrintUtf8, OFFSET backSkull1 + ret +back_skull_2: + invoke PrintUtf8, OFFSET backSkull2 + ret +back_skull_3: + invoke PrintUtf8, OFFSET backSkull3 + ret +back_skull_4: + invoke PrintUtf8, OFFSET backSkull4 + ret +back_line_clover: + mov eax, lineNo + cmp eax, 1 + je back_clover_1 + cmp eax, 2 + je back_clover_2 + cmp eax, 3 + je back_clover_3 + cmp eax, 4 + je back_clover_4 + invoke PrintUtf8, OFFSET backClover5 + ret +back_clover_1: + invoke PrintUtf8, OFFSET backClover1 + ret +back_clover_2: + invoke PrintUtf8, OFFSET backClover2 + ret +back_clover_3: + invoke PrintUtf8, OFFSET backClover3 + ret +back_clover_4: + invoke PrintUtf8, OFFSET backClover4 + ret +back_line_arcane: + mov eax, lineNo + cmp eax, 1 + je back_arcane_1 + cmp eax, 2 + je back_arcane_2 + cmp eax, 3 + je back_arcane_3 + cmp eax, 4 + je back_arcane_4 + invoke PrintUtf8, OFFSET backArcane5 + ret +back_arcane_1: + invoke PrintUtf8, OFFSET backArcane1 + ret +back_arcane_2: + invoke PrintUtf8, OFFSET backArcane2 + ret +back_arcane_3: + invoke PrintUtf8, OFFSET backArcane3 + ret +back_arcane_4: + invoke PrintUtf8, OFFSET backArcane4 + ret +back_line_noir: + mov eax, lineNo + cmp eax, 1 + je back_noir_1 + cmp eax, 2 + je back_noir_2 + cmp eax, 3 + je back_noir_3 + cmp eax, 4 + je back_noir_4 + invoke PrintUtf8, OFFSET backNoir5 + ret +back_noir_1: + invoke PrintUtf8, OFFSET backNoir1 + ret +back_noir_2: + invoke PrintUtf8, OFFSET backNoir2 + ret +back_noir_3: + invoke PrintUtf8, OFFSET backNoir3 + ret +back_noir_4: + invoke PrintUtf8, OFFSET backNoir4 + ret +back_line_diamond: + mov eax, lineNo + cmp eax, 1 + je back_diamond_1 + cmp eax, 2 + je back_diamond_2 + cmp eax, 3 + je back_diamond_3 + cmp eax, 4 + je back_diamond_4 + invoke PrintUtf8, OFFSET backDiamond5 + ret +back_diamond_1: + invoke PrintUtf8, OFFSET backDiamond1 + ret +back_diamond_2: + invoke PrintUtf8, OFFSET backDiamond2 + ret +back_diamond_3: + invoke PrintUtf8, OFFSET backDiamond3 + ret +back_diamond_4: + invoke PrintUtf8, OFFSET backDiamond4 + ret +back_line_rider: + mov eax, lineNo + cmp eax, 1 + je back_rider_1 + cmp eax, 2 + je back_rider_2 + cmp eax, 3 + je back_rider_3 + cmp eax, 4 + je back_rider_4 + invoke PrintUtf8, OFFSET backRider5 + ret +back_rider_1: + invoke PrintUtf8, OFFSET backRider1 + ret +back_rider_2: + invoke PrintUtf8, OFFSET backRider2 + ret +back_rider_3: + invoke PrintUtf8, OFFSET backRider3 + ret +back_rider_4: + invoke PrintUtf8, OFFSET backRider4 + ret +back_line_bee: + mov eax, lineNo + cmp eax, 1 + je back_bee_1 + cmp eax, 2 + je back_bee_2 + cmp eax, 3 + je back_bee_3 + cmp eax, 4 + je back_bee_4 + invoke PrintUtf8, OFFSET backBee5 + ret +back_bee_1: + invoke PrintUtf8, OFFSET backBee1 + ret +back_bee_2: + invoke PrintUtf8, OFFSET backBee2 + ret +back_bee_3: + invoke PrintUtf8, OFFSET backBee3 + ret +back_bee_4: + invoke PrintUtf8, OFFSET backBee4 + ret +back_line_fan: + mov eax, lineNo + cmp eax, 1 + je back_fan_1 + cmp eax, 2 + je back_fan_2 + cmp eax, 3 + je back_fan_3 + cmp eax, 4 + je back_fan_4 + invoke PrintUtf8, OFFSET backFan5 + ret +back_fan_1: + invoke PrintUtf8, OFFSET backFan1 + ret +back_fan_2: + invoke PrintUtf8, OFFSET backFan2 + ret +back_fan_3: + invoke PrintUtf8, OFFSET backFan3 + ret +back_fan_4: + invoke PrintUtf8, OFFSET backFan4 + ret +back_line_web: + mov eax, lineNo + cmp eax, 1 + je back_web_1 + cmp eax, 2 + je back_web_2 + cmp eax, 3 + je back_web_3 + cmp eax, 4 + je back_web_4 + invoke PrintUtf8, OFFSET backWeb5 + ret +back_web_1: + invoke PrintUtf8, OFFSET backWeb1 + ret +back_web_2: + invoke PrintUtf8, OFFSET backWeb2 + ret +back_web_3: + invoke PrintUtf8, OFFSET backWeb3 + ret +back_web_4: + invoke PrintUtf8, OFFSET backWeb4 + ret +PrintCardBackSegLine ENDP + +; --- PrintCardBackSeg: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintCardBackSeg PROC + invoke PrintCardBackSegLine, 3 + ret +PrintCardBackSeg ENDP + +; --- PrintSuit: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintSuit PROC uses eax, suitIndex:DWORD + invoke SetSuitColor, suitIndex + mov eax, suitIndex + invoke PrintUtf8, suits[eax * 4] + call ResetColor + ret +PrintSuit ENDP + +; --- PrintMoney: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintMoney PROC value:DWORD + invoke SetColor, COLOR_MONEY + invoke PrintUInt, value + call ResetColor + ret +PrintMoney ENDP + +; --- PrintTitleColor: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintTitleColor PROC pText:DWORD + invoke SetColor, COLOR_TITLE + invoke PrintStr, pText + call ResetColor + ret +PrintTitleColor ENDP + +; --- ColorPrint: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +ColorPrint PROC pText:DWORD, attr:DWORD + invoke SetColor, attr + invoke PrintStr, pText + call ResetColor + ret +ColorPrint ENDP + +; --- PrintWinEvent: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintWinEvent PROC + invoke ColorPrint, OFFSET winText, COLOR_MONEY + ret +PrintWinEvent ENDP + +; --- PrintLoseEvent: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintLoseEvent PROC + invoke ColorPrint, OFFSET loseText, COLOR_BAD + ret +PrintLoseEvent ENDP + +; --- PrintDrawEvent: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintDrawEvent PROC + invoke ColorPrint, OFFSET drawText, COLOR_WARN + ret +PrintDrawEvent ENDP + +; --- PrintCroupierFromList: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintCroupierFromList PROC uses eax ebx, pList:DWORD + invoke RandomRange, 3 + shl eax, 2 + mov ebx, pList + add ebx, eax + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET croupierPrefix + invoke PrintStr, DWORD PTR [ebx] + call ResetColor + ret +PrintCroupierFromList ENDP + +; --- DealerProcessLine: ñëóæåáíûé áëîê èãðîâîé ëîãèêè --- +DealerProcessLine PROC uses eax edx + mov eax, dealerLineLen + cmp eax, 3 + jb dealer_process_done + mov al, byte ptr [frameBuffer] + cmp al, dealerWantedTag + jne dealer_process_done + cmp byte ptr [frameBuffer+1], '|' + jne dealer_process_done + cmp dealerScanMode, 0 + jne dealer_process_select + inc dealerPhraseCount + ret + +dealer_process_select: + mov eax, dealerPhraseCount + cmp eax, dealerPhrasePick + jne dealer_process_next + mov eax, OFFSET frameBuffer + add eax, dealerLineLen + mov byte ptr [eax], 0 + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET croupierPrefix + mov edx, OFFSET frameBuffer + add edx, 2 + invoke PrintStr, edx + invoke PrintStr, OFFSET nl + call ResetColor + mov dealerPhrasePick, 0FFFFFFFFh +dealer_process_next: + inc dealerPhraseCount +dealer_process_done: + ret +DealerProcessLine ENDP + +; --- DealerScanFile: ñëóæåáíûé áëîê èãðîâîé ëîãèêè --- +DealerScanFile PROC uses eax edx, mode:DWORD + mov eax, mode + mov dealerScanMode, eax + mov dealerLineLen, 0 + invoke CreateFileA, OFFSET dealerFileName, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + jne dealer_scan_opened + xor eax, eax + ret + +dealer_scan_opened: + mov dealerFileHandle, eax + +dealer_scan_loop: + invoke ReadFile, dealerFileHandle, ADDR inputBuffer, 1, ADDR charsRead, 0 + cmp charsRead, 0 + je dealer_scan_eof + mov al, byte ptr inputBuffer + cmp al, 13 + je dealer_scan_loop + cmp al, 10 + je dealer_scan_line_end + mov edx, dealerLineLen + cmp edx, 32760 + jae dealer_scan_loop + mov byte ptr [frameBuffer + edx], al + inc dealerLineLen + jmp dealer_scan_loop + +dealer_scan_line_end: + call DealerProcessLine + mov dealerLineLen, 0 + jmp dealer_scan_loop + +dealer_scan_eof: + cmp dealerLineLen, 0 + je dealer_scan_close + call DealerProcessLine + +dealer_scan_close: + invoke CloseHandle, dealerFileHandle + mov eax, 1 + ret +DealerScanFile ENDP + +; --- PrintCroupierFromFile: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintCroupierFromFile PROC uses eax, wanted:DWORD, pFallback:DWORD + mov eax, wanted + mov dealerWantedTag, al + mov dealerPhraseCount, 0 + invoke DealerScanFile, 0 + cmp eax, 0 + je croupier_file_fallback + cmp dealerPhraseCount, 0 + je croupier_file_fallback + invoke RandomRange, dealerPhraseCount + mov dealerPhrasePick, eax + mov dealerPhraseCount, 0 + invoke DealerScanFile, 1 + ret +croupier_file_fallback: + invoke PrintCroupierFromList, pFallback + ret +PrintCroupierFromFile ENDP + +; --- PrintCroupierWin: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintCroupierWin PROC + invoke PrintCroupierFromFile, 'W', OFFSET croupierWinList + ret +PrintCroupierWin ENDP + +; --- PrintCroupierLose: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintCroupierLose PROC + invoke PrintCroupierFromFile, 'L', OFFSET croupierLoseList + ret +PrintCroupierLose ENDP + +; --- PrintCroupierDraw: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintCroupierDraw PROC + invoke PrintCroupierFromFile, 'D', OFFSET croupierDrawList + ret +PrintCroupierDraw ENDP + +; --- FlushFrame: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +FlushFrame PROC uses eax ebx ecx edx esi edi + LOCAL csbi[22]:BYTE + LOCAL X_start:DWORD + LOCAL Y_start:DWORD + LOCAL nextLinePtr:DWORD + LOCAL currentLineIndex:DWORD + + cmp frameBytes, 0 + je flush_frame_done + + mov eax, OFFSET frameBuffer + add eax, frameBytes + mov byte ptr [eax], 0 + + cmp animWidth, 0 + je print_default + cmp animHeight, 0 + je print_default + + call ClearView + + lea eax, csbi + invoke GetConsoleScreenBufferInfo, hOut, eax + cmp eax, 0 + je print_default + + movzx ecx, word ptr csbi[14] + movzx esi, word ptr csbi[10] + sub ecx, esi + inc ecx + + movzx edx, word ptr csbi[16] + movzx esi, word ptr csbi[12] + sub edx, esi + inc edx + + mov eax, ecx + cmp eax, animWidth + jbe set_x_left + sub eax, animWidth + shr eax, 1 + add ax, word ptr csbi[10] + movzx eax, ax + mov X_start, eax + jmp x_calculated +set_x_left: + movzx eax, word ptr csbi[10] + mov X_start, eax +x_calculated: + + mov eax, edx + cmp eax, animHeight + jbe set_y_top + sub eax, animHeight + shr eax, 1 + add ax, word ptr csbi[12] + movzx eax, ax + mov Y_start, eax + jmp y_calculated +set_y_top: + movzx eax, word ptr csbi[12] + mov Y_start, eax +y_calculated: + + mov esi, OFFSET frameBuffer +skip_lead_loop: + cmp byte ptr [esi], 1Bh + jne check_lead_newline + cmp byte ptr [esi+1], '[' + jne check_lead_newline + + cmp byte ptr [esi+2], '2' + jne check_lead_H + cmp byte ptr [esi+3], 'J' + jne check_lead_newline + add esi, 4 + jmp skip_lead_loop + +check_lead_H: + cmp byte ptr [esi+2], 'H' + jne check_lead_hide + add esi, 3 + jmp skip_lead_loop + +check_lead_hide: + cmp byte ptr [esi+2], '?' + jne check_lead_newline + cmp byte ptr [esi+3], '2' + jne check_lead_newline + cmp byte ptr [esi+4], '5' + jne check_lead_newline + cmp byte ptr [esi+5], 'l' + jne check_lead_show + add esi, 6 + jmp skip_lead_loop + +check_lead_show: + cmp byte ptr [esi+5], 'h' + jne check_lead_newline + add esi, 6 + jmp skip_lead_loop + +check_lead_newline: + mov al, [esi] + cmp al, 0Dh + je skip_lead_nl_char + cmp al, 0Ah + je skip_lead_nl_char + jmp done_lead_skipping +skip_lead_nl_char: + inc esi + jmp skip_lead_loop +done_lead_skipping: + + mov currentLineIndex, 0 +line_parse_loop: + cmp byte ptr [esi], 0 + je print_done + + mov edi, esi +find_line_end: + mov al, [edi] + cmp al, 0 + je line_end_found + cmp al, 0Dh + je line_end_found + cmp al, 0Ah + je line_end_found + inc edi + jmp find_line_end +line_end_found: + mov dl, [edi] + mov byte ptr [edi], 0 + + mov ebx, edi + cmp dl, 0 + je next_line_ptr_done + inc ebx + mov al, [ebx] + cmp al, 0Dh + je skip_nl_chars + cmp al, 0Ah + je skip_nl_chars + jmp next_line_ptr_done +skip_nl_chars: + inc ebx + mov al, [ebx] + cmp al, 0Dh + je skip_nl_chars + cmp al, 0Ah + je skip_nl_chars +next_line_ptr_done: + mov nextLinePtr, ebx + + mov eax, currentLineIndex + add eax, Y_start + + movzx edx, word ptr csbi[16] + cmp eax, edx + jg skip_this_line + + invoke MoveCursor, X_start, eax + invoke PrintUtf8, esi + +skip_this_line: + mov esi, nextLinePtr + inc currentLineIndex + jmp line_parse_loop + +print_default: + invoke PrintUtf8, OFFSET frameBuffer + +print_done: + mov frameBytes, 0 +flush_frame_done: + ret +FlushFrame ENDP + +; --- PlayHakariDance: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +PlayHakariDance PROC uses eax ebx ecx edx esi edi + mov animWidth, 118 + mov animHeight, 43 + invoke CreateFileA, OFFSET danceFileName, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + jne hakari_file_ok + invoke mciSendStringA, OFFSET hakariSoundStop, 0, 0, 0 + mov animWidth, 0 + mov animHeight, 0 + ret +hakari_file_ok: + mov danceHandle, eax + mov frameBytes, 0 + mov animFrameCounter, 0 + +hakari_read_loop: + invoke ReadFile, danceHandle, ADDR inputBuffer, 1, ADDR danceBytes, 0 + cmp danceBytes, 0 + je hakari_finish + mov al, byte ptr inputBuffer + cmp al, 0Ch + je hakari_show_frame + mov edx, frameBytes + cmp edx, 32760 + jae hakari_show_frame_keep_char + mov [frameBuffer + edx], al + inc frameBytes + jmp hakari_read_loop + +hakari_show_frame_keep_char: + call ClearView + call FlushFrame + invoke AnimFrameDelay, 12 + invoke Sleep, eax + mov al, byte ptr inputBuffer + mov [frameBuffer], al + mov frameBytes, 1 + jmp hakari_read_loop + +hakari_show_frame: + call AnimShouldDrawFrame + cmp eax, 1 + jne hakari_skip_frame + call ClearView + call FlushFrame + invoke AnimFrameDelay, 12 + invoke Sleep, eax + jmp hakari_read_loop +hakari_skip_frame: + mov frameBytes, 0 + jmp hakari_read_loop + +hakari_finish: + call ClearView + call FlushFrame + invoke CloseHandle, danceHandle + invoke mciSendStringA, OFFSET hakariSoundStop, 0, 0, 0 + invoke Sleep, 40 + call ClearView + mov animWidth, 0 + mov animHeight, 0 + ret +PlayHakariDance ENDP + +; --- WriteAnimProfileFile: shares animation profile with helper windows --- +WriteAnimProfileFile PROC uses eax ebx edx + invoke CreateFileA, OFFSET animProfileFile, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + je write_anim_profile_done + mov ebx, eax + mov edx, settingsLowSpec + cmp edx, 2 + jbe write_anim_profile_value_ok + xor edx, edx +write_anim_profile_value_ok: + mov al, byte ptr [animProfileDigits + edx] + mov byte ptr [inputBuffer], al + invoke WriteFile, ebx, ADDR inputBuffer, 1, ADDR charsWritten, 0 + invoke CloseHandle, ebx +write_anim_profile_done: + ret +WriteAnimProfileFile ENDP +; --- PlayDbDHookScene: ïîêàäðîâàÿ àíèìàöèÿ êðþêà èç Dead by Daylight --- +PlayDbDHookScene PROC uses eax + cmp settingsDbdWindowEnabled, 1 + jne play_dbd_done + invoke WinExec, OFFSET dbdHookCmd, 1 +play_dbd_done: + ret +PlayDbDHookScene ENDP + +; --- StopDbDHookScene: çàêðûâàåò îòäåëüíîå îêíî DBD-àíèìàöèè ÷åðåç ôàéë-ñèãíàë --- +StopDbDHookScene PROC uses eax + invoke CreateFileA, OFFSET dbdHookStopFile, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + je stop_dbd_done + invoke CloseHandle, eax +stop_dbd_done: + ret +StopDbDHookScene ENDP + +; --- IntroMaybeLoopMarker: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +IntroMaybeLoopMarker PROC + cmp frameBytes, 10 + jne intro_marker_no + cmp byte ptr [frameBuffer], '@' + jne intro_marker_no + cmp byte ptr [frameBuffer+1], '@' + jne intro_marker_no + cmp byte ptr [frameBuffer+2], 'L' + jne intro_marker_no + cmp byte ptr [frameBuffer+3], 'O' + jne intro_marker_no + cmp byte ptr [frameBuffer+4], 'O' + jne intro_marker_no + cmp byte ptr [frameBuffer+5], 'P' + jne intro_marker_no + cmp byte ptr [frameBuffer+6], '@' + jne intro_marker_no + cmp byte ptr [frameBuffer+7], '@' + jne intro_marker_no + mov introLoopSeen, 1 + mov introSkipLoop, 0 + mov frameBytes, 0 + mov eax, 1 + ret +intro_marker_no: + xor eax, eax + ret +IntroMaybeLoopMarker ENDP + +; --- IntroHandleFrameEnd: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +IntroHandleFrameEnd PROC + call IntroMaybeLoopMarker + cmp eax, 1 + je intro_handle_done + cmp introSkipLoop, 1 + je intro_discard_frame + call AnimShouldDrawFrame + cmp eax, 1 + jne intro_discard_frame + call FlushFrame + invoke AnimFrameDelay, 45 + invoke Sleep, eax + ret +intro_discard_frame: + mov frameBytes, 0 +intro_handle_done: + ret +IntroHandleFrameEnd ENDP + +; --- PlayCasinoIntro: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +PlayCasinoIntro PROC uses eax ebx ecx edx esi edi + cmp settingsIntroEnabled, 1 + jne intro_disabled + mov introLoopSeen, 0 + mov introSkipLoop, 0 + mov animFrameCounter, 0 + mov animWidth, 64 + mov animHeight, 21 +intro_restart_file: + invoke CreateFileA, OFFSET casinoIntroFile, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + jne intro_file_ok + mov animWidth, 0 + mov animHeight, 0 + ret +intro_file_ok: + mov danceHandle, eax + mov frameBytes, 0 + +intro_read_loop: + invoke GetAsyncKeyState, VK_RETURN + test ax, 8000h + jnz intro_exit + invoke ReadFile, danceHandle, ADDR inputBuffer, 1, ADDR danceBytes, 0 + cmp danceBytes, 0 + je intro_restart_cycle + mov al, byte ptr inputBuffer + cmp al, 0Ch + je intro_show_frame + mov edx, frameBytes + cmp edx, 32760 + jae intro_show_frame_keep_char + mov [frameBuffer + edx], al + inc frameBytes + jmp intro_read_loop + +intro_show_frame_keep_char: + call IntroHandleFrameEnd + mov al, byte ptr inputBuffer + mov [frameBuffer], al + mov frameBytes, 1 + jmp intro_read_loop + +intro_show_frame: + call IntroHandleFrameEnd + jmp intro_read_loop + +intro_restart_cycle: + call FlushFrame + invoke CloseHandle, danceHandle + cmp introLoopSeen, 1 + jne intro_restart_file + mov introSkipLoop, 1 + jmp intro_restart_file + +intro_exit: + invoke CloseHandle, danceHandle + invoke PrintUtf8, OFFSET ansiExitIntro + invoke Sleep, 180 +intro_disabled: + mov animWidth, 0 + mov animHeight, 0 + ret +PlayCasinoIntro ENDP +; --- InitSounds: ñëóæåáíûé áëîê èãðîâîé ëîãèêè --- +InitSounds PROC uses eax ecx edx + invoke mciSendStringA, OFFSET cardSoundClose, 0, 0, 0 + invoke mciSendStringA, OFFSET cardSoundOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET slotSoundClose, 0, 0, 0 + invoke mciSendStringA, OFFSET slotSoundOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET slotIntroClose, 0, 0, 0 + invoke mciSendStringA, OFFSET slotIntroOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET jackpotClose, 0, 0, 0 + invoke mciSendStringA, OFFSET jackpotOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET hakariSoundClose, 0, 0, 0 + invoke mciSendStringA, OFFSET hakariSoundOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET coinSoundClose, 0, 0, 0 + invoke mciSendStringA, OFFSET coinSoundOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET bankruptClose, 0, 0, 0 + invoke mciSendStringA, OFFSET bankruptOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET victoryClose, 0, 0, 0 + invoke mciSendStringA, OFFSET victoryOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET rrSpinClose, 0, 0, 0 + invoke mciSendStringA, OFFSET rrSpinOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET rrDryClose, 0, 0, 0 + invoke mciSendStringA, OFFSET rrDryOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET rrShotClose, 0, 0, 0 + invoke mciSendStringA, OFFSET rrShotOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET casinoRouletteSoundClose, 0, 0, 0 + invoke mciSendStringA, OFFSET casinoRouletteSoundOpen, 0, 0, 0 + invoke mciSendStringA, OFFSET stoneSoundClose, 0, 0, 0 + invoke mciSendStringA, OFFSET stoneSoundOpen, 0, 0, 0 + ret +InitSounds ENDP + +; --- PlayCardSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +PlayCardSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET cardSoundStop, 0, 0, 0 + invoke mciSendStringA, OFFSET cardSoundPlay, 0, 0, 0 + invoke Sleep, 90 + ret +PlayCardSound ENDP + +; --- PlaySlotSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +PlaySlotSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET slotSoundStop, 0, 0, 0 + invoke mciSendStringA, OFFSET slotSoundPlay, 0, 0, 0 + ret +PlaySlotSound ENDP + +; --- PlaySlotIntroSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +PlaySlotIntroSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET slotIntroStop, 0, 0, 0 + invoke mciSendStringA, OFFSET slotIntroPlay, 0, 0, 0 + ret +PlaySlotIntroSound ENDP + +; --- PlayJackpotSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +PlayJackpotSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET jackpotStop, 0, 0, 0 + invoke mciSendStringA, OFFSET jackpotPlay, 0, 0, 0 + ret +PlayJackpotSound ENDP + +; --- PlayHakariSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +PlayHakariSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET hakariSoundStop, 0, 0, 0 + invoke mciSendStringA, OFFSET hakariSoundPlay, 0, 0, 0 + ret +PlayHakariSound ENDP + +; --- PlayCoinSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +PlayCoinSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET coinSoundStop, 0, 0, 0 + invoke mciSendStringA, OFFSET coinSoundPlay, 0, 0, 0 + ret +PlayCoinSound ENDP + +; --- PlayBankruptSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +PlayBankruptSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET bankruptStop, 0, 0, 0 + invoke mciSendStringA, OFFSET bankruptPlay, 0, 0, 0 + ret +PlayBankruptSound ENDP + +; --- PlayVictorySound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +PlayVictorySound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET victoryStop, 0, 0, 0 + invoke mciSendStringA, OFFSET victoryPlay, 0, 0, 0 + ret +PlayVictorySound ENDP + +; --- PlayCasinoRouletteSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +PlayCasinoRouletteSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET casinoRouletteSoundStop, 0, 0, 0 + invoke mciSendStringA, OFFSET casinoRouletteSoundPlay, 0, 0, 0 + ret +PlayCasinoRouletteSound ENDP +; --- PlayRouletteSpinSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +PlayRouletteSpinSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET rrSpinStop, 0, 0, 0 + invoke mciSendStringA, OFFSET rrSpinPlay, 0, 0, 0 + ret +PlayRouletteSpinSound ENDP + +; --- PlayRouletteDrySound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +PlayRouletteDrySound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET rrDryStop, 0, 0, 0 + invoke mciSendStringA, OFFSET rrDryPlay, 0, 0, 0 + ret +PlayRouletteDrySound ENDP + +; --- PlayRouletteShotSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +PlayRouletteShotSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET rrShotStop, 0, 0, 0 + invoke mciSendStringA, OFFSET rrShotPlay, 0, 0, 0 + ret +PlayRouletteShotSound ENDP + +; --- PlayStoneSound: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +PlayStoneSound PROC uses eax ecx edx + invoke mciSendStringA, OFFSET stoneSoundStop, 0, 0, 0 + invoke mciSendStringA, OFFSET stoneSoundPlay, 0, 0, 0 + ret +PlayStoneSound ENDP + +; --- StopTowerMusic: ìóçûêà òóðíèð-áàøíè --- +StopTowerMusic PROC + invoke mciSendStringA, OFFSET towerMusicStop, 0, 0, 0 + invoke mciSendStringA, OFFSET towerMusicClose, 0, 0, 0 + ret +StopTowerMusic ENDP + +; --- PlayTowerRandomMusic: ñëó÷àéíàÿ ìóçûêà òóðíèð-áàøíè --- +PlayTowerRandomMusic PROC uses eax + call StopTowerMusic + invoke RandomRange, 4 + cmp eax, 0 + je tower_music_1 + cmp eax, 1 + je tower_music_2 + cmp eax, 2 + je tower_music_3 +tower_music_4: + invoke mciSendStringA, OFFSET towerMusicOpen4, 0, 0, 0 + jmp tower_music_play +tower_music_1: + invoke mciSendStringA, OFFSET towerMusicOpen1, 0, 0, 0 + jmp tower_music_play +tower_music_2: + invoke mciSendStringA, OFFSET towerMusicOpen2, 0, 0, 0 + jmp tower_music_play +tower_music_3: + invoke mciSendStringA, OFFSET towerMusicOpen3, 0, 0, 0 +tower_music_play: + invoke mciSendStringA, OFFSET towerMusicPlay, 0, 0, 0 + ret +PlayTowerRandomMusic ENDP + +; --- PrintSlotCell: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintSlotCell PROC uses eax ebx ecx, value:DWORD + invoke PrintStr, OFFSET slotWall + mov eax, slotCurrentCell + mov ebx, 1 + mov ecx, eax + shl ebx, cl + mov eax, slotWinMask + test eax, ebx + je slot_cell_normal + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET slotWinLeft + invoke PrintSlotSymbol, value + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET slotWinRight + call ResetColor + ret +slot_cell_normal: + invoke PrintStr, OFFSET slotPadOne + invoke PrintSlotSymbol, value + invoke PrintStr, OFFSET slotPadOne + ret +PrintSlotCell ENDP +; --- PrintSlotBlankCell: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintSlotBlankCell PROC + invoke PrintStr, OFFSET slotWall + invoke PrintStr, OFFSET slotCellBlank + ret +PrintSlotBlankCell ENDP + +; --- PrintSlotPaddingRow: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintSlotPaddingRow PROC + call PrintSlotBlankCell + call PrintSlotBlankCell + call PrintSlotBlankCell + call PrintSlotBlankCell + call PrintSlotBlankCell + invoke PrintStr, OFFSET slotWall + invoke PrintStr, OFFSET nl + ret +PrintSlotPaddingRow ENDP +; --- PrintSlotWindow: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintSlotWindow PROC uses eax ebx + call ClearView + invoke PrintTitleColor, OFFSET slotTitle + invoke PrintStr, OFFSET slotBorder + + mov rowIndex, 0 +slot_window_row_loop: + cmp rowIndex, 3 + jae slot_window_done + call PrintSlotPaddingRow + mov ebx, rowIndex + imul ebx, 5 + + cmp slotVisible, 1 + jb slot_blank_col1 + mov slotCurrentCell, ebx + invoke PrintSlotCell, slotGrid[ebx * 4] + jmp slot_col2 +slot_blank_col1: + call PrintSlotBlankCell + +slot_col2: + cmp slotVisible, 2 + jb slot_blank_col2 + mov eax, ebx + inc eax + mov slotCurrentCell, eax + invoke PrintSlotCell, slotGrid[eax * 4] + jmp slot_col3 +slot_blank_col2: + call PrintSlotBlankCell + +slot_col3: + cmp slotVisible, 3 + jb slot_blank_col3 + mov eax, ebx + add eax, 2 + mov slotCurrentCell, eax + invoke PrintSlotCell, slotGrid[eax * 4] + jmp slot_col4 +slot_blank_col3: + call PrintSlotBlankCell + +slot_col4: + cmp slotVisible, 4 + jb slot_blank_col4 + mov eax, ebx + add eax, 3 + mov slotCurrentCell, eax + invoke PrintSlotCell, slotGrid[eax * 4] + jmp slot_col5 +slot_blank_col4: + call PrintSlotBlankCell + +slot_col5: + cmp slotVisible, 5 + jb slot_blank_col5 + mov eax, ebx + add eax, 4 + mov slotCurrentCell, eax + invoke PrintSlotCell, slotGrid[eax * 4] + jmp slot_row_end +slot_blank_col5: + call PrintSlotBlankCell + +slot_row_end: + invoke PrintStr, OFFSET slotWall + invoke PrintStr, OFFSET nl + call PrintSlotPaddingRow + invoke PrintStr, OFFSET slotBorder + inc rowIndex + jmp slot_window_row_loop + +slot_window_done: + ret +PrintSlotWindow ENDP + +; --- FillSlotColumn: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- +FillSlotColumn PROC uses eax ebx, column:DWORD + mov ebx, column + invoke RandomRange, 7 + mov slotGrid[ebx * 4], eax + mov ebx, column + add ebx, 5 + invoke RandomRange, 7 + mov slotGrid[ebx * 4], eax + mov ebx, column + add ebx, 10 + invoke RandomRange, 7 + mov slotGrid[ebx * 4], eax + ret +FillSlotColumn ENDP +; --- PrintUInt: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintUInt PROC uses eax ebx ecx edx edi, value:DWORD + LOCAL buffer[12]:BYTE + + lea edi, buffer[11] + mov byte ptr [edi], 0 + mov eax, value + cmp eax, 0 + jne convert_loop_start + dec edi + mov byte ptr [edi], '0' + invoke PrintStr, edi + ret + +convert_loop_start: + mov ebx, 10 +convert_loop: + xor edx, edx + div ebx + add dl, '0' + dec edi + mov byte ptr [edi], dl + cmp eax, 0 + jne convert_loop + invoke PrintStr, edi + ret +PrintUInt ENDP + +; --- ReadKey: ââîä ïîëüçîâàòåëÿ è ðàçáîð ââåäåííûõ äàííûõ --- +ReadKey PROC uses ebx +read_key_again: + invoke ReadFile, hIn, ADDR inputBuffer, 1, ADDR charsRead, 0 + cmp charsRead, 0 + je read_key_empty + movzx eax, byte ptr inputBuffer + cmp al, 13 + je read_key_again + cmp al, 10 + je read_key_again + mov ebx, eax +read_key_drain: + invoke ReadFile, hIn, ADDR inputBuffer, 1, ADDR charsRead, 0 + cmp charsRead, 0 + je read_key_return + movzx eax, byte ptr inputBuffer + cmp al, 10 + jne read_key_drain +read_key_return: + mov eax, ebx + ret +read_key_empty: + xor eax, eax + ret +ReadKey ENDP + +; --- ReadAnyKey: ââîä ïîëüçîâàòåëÿ è ðàçáîð ââåäåííûõ äàííûõ --- +ReadAnyKey PROC +read_any_again: + invoke ReadFile, hIn, ADDR inputBuffer, 1, ADDR charsRead, 0 + cmp charsRead, 0 + je read_any_empty + movzx eax, byte ptr inputBuffer + ret +read_any_empty: + xor eax, eax + ret +ReadAnyKey ENDP + +; --- ReadUInt: ââîä ÷èñëà îäíîé ñòðîêîé, áåç çàâèñàíèÿ íà CR/LF --- +ReadUInt PROC uses ebx ecx edx esi edi + xor ebx, ebx ; parsed number + xor edi, edi ; digit count + invoke ReadFile, hIn, ADDR inputBuffer, 31, ADDR charsRead, 0 + cmp charsRead, 0 + je read_uint_zero + + mov esi, OFFSET inputBuffer + mov ecx, charsRead +read_uint_parse_loop: + cmp ecx, 0 + je read_uint_end + movzx eax, byte ptr [esi] + inc esi + dec ecx + cmp al, 13 + je read_uint_end + cmp al, 10 + je read_uint_end + cmp al, ' ' + je read_uint_parse_loop + cmp al, 9 + je read_uint_parse_loop + cmp al, '0' + jb read_uint_bad + cmp al, '9' + ja read_uint_bad + + sub al, '0' + movzx edx, al + mov eax, ebx + imul eax, eax, 10 + add eax, edx + mov ebx, eax + inc edi + jmp read_uint_parse_loop + +read_uint_end: + cmp edi, 0 + je read_uint_zero + mov eax, ebx + ret + +read_uint_bad: + xor eax, eax + ret + +read_uint_zero: + xor eax, eax + ret +ReadUInt ENDP + +; --- StrEqual: ââîä ïîëüçîâàòåëÿ è ðàçáîð ââåäåííûõ äàííûõ --- +StrEqual PROC uses esi edi ebx, pLeft:DWORD, pRight:DWORD + mov esi, pLeft + mov edi, pRight +str_equal_loop: + mov al, [esi] + mov bl, [edi] + cmp al, bl + jne str_not_equal + cmp al, 0 + je str_is_equal + inc esi + inc edi + jmp str_equal_loop +str_is_equal: + mov eax, 1 + ret +str_not_equal: + xor eax, eax + ret +StrEqual ENDP + +; --- PrintCheatApplied: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintCheatApplied PROC pText:DWORD + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET cheatAppliedText + invoke PrintStr, pText + call ResetColor + ret +PrintCheatApplied ENDP + +; --- ApplyCheatCode: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- +ApplyCheatCode PROC pCode:DWORD + invoke StrEqual, pCode, OFFSET cheatCodeMoney + cmp eax, 1 + je cheat_money + invoke StrEqual, pCode, OFFSET cheatCodeSeven + cmp eax, 1 + je cheat_sevens + invoke StrEqual, pCode, OFFSET cheatCodeWin + cmp eax, 1 + je cheat_win_next + invoke StrEqual, pCode, OFFSET cheatCodeGod + cmp eax, 1 + je cheat_god + invoke StrEqual, pCode, OFFSET cheatCodeFair + cmp eax, 1 + je cheat_fair + invoke StrEqual, pCode, OFFSET cheatCodeGoal + cmp eax, 1 + je cheat_goal + invoke StrEqual, pCode, OFFSET cheatCodeReset + cmp eax, 1 + je cheat_reset + invoke StrEqual, pCode, OFFSET cheatCodeEasy + cmp eax, 1 + je cheat_easy + invoke StrEqual, pCode, OFFSET cheatCodeNormal + cmp eax, 1 + je cheat_normal + invoke StrEqual, pCode, OFFSET cheatCodeHard + cmp eax, 1 + je cheat_hard + invoke StrEqual, pCode, OFFSET cheatCodeJackpot + cmp eax, 1 + je cheat_jackpot + invoke StrEqual, pCode, OFFSET cheatCodeRich + cmp eax, 1 + je cheat_rich + invoke StrEqual, pCode, OFFSET cheatCodeDouble + cmp eax, 1 + je cheat_double + invoke StrEqual, pCode, OFFSET cheatCodePoor + cmp eax, 1 + je cheat_poor + invoke StrEqual, pCode, OFFSET cheatCodeShop + cmp eax, 1 + je cheat_shop + invoke StrEqual, pCode, OFFSET cheatCodeBacks + cmp eax, 1 + je cheat_backs + invoke StrEqual, pCode, OFFSET cheatCodeCharm + cmp eax, 1 + je cheat_max_charm + invoke StrEqual, pCode, OFFSET cheatCodeNoCharm + cmp eax, 1 + je cheat_no_charm + invoke StrEqual, pCode, OFFSET cheatCodeAch + cmp eax, 1 + je cheat_ach + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET cheatBadText + call ResetColor + xor eax, eax + ret + +cheat_money: + add bankroll, 50000 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatMoneyText + call PrintBank + call CheckVictory + mov eax, 1 + ret +cheat_sevens: + add bankroll, 7777 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatSevenText + call PrintBank + call CheckVictory + mov eax, 1 + ret +cheat_win_next: + mov cheatLuckyWin, 1 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatWinText + mov eax, 1 + ret +cheat_god: + mov cheatGodMode, 1 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatGodText + mov eax, 1 + ret +cheat_fair: + mov cheatLuckyWin, 0 + mov cheatGodMode, 0 + mov casinoSuspicion, 0 + call SaveGame + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET cheatAppliedText + invoke PrintStr, OFFSET cheatFairText + call ResetColor + mov eax, 1 + ret +cheat_goal: + mov eax, targetBank + mov bankroll, eax + call SaveGame + invoke PrintCheatApplied, OFFSET cheatGoalText + call PrintBank + call CheckVictory + mov eax, 1 + ret +cheat_reset: + mov bankroll, 10000 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatResetText + call PrintBank + mov eax, 1 + ret +cheat_easy: + mov aiDifficulty, 1 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatEasyText + mov eax, 1 + ret +cheat_normal: + mov aiDifficulty, 2 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatNormalText + mov eax, 1 + ret +cheat_hard: + mov aiDifficulty, 3 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatHardText + mov eax, 1 + ret +cheat_jackpot: + mov cheatSlotJackpot, 1 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatJackpotText + mov eax, 1 + ret +cheat_rich: + add bankroll, 250000 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatRichText + call PrintBank + call CheckVictory + mov eax, 1 + ret +cheat_double: + mov eax, bankroll + add bankroll, eax + call SaveGame + invoke PrintCheatApplied, OFFSET cheatDoubleText + call PrintBank + call CheckVictory + mov eax, 1 + ret +cheat_poor: + mov bankroll, 1 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatPoorText + call PrintBank + mov eax, 1 + ret +cheat_shop: + add bankroll, 30000 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatShopText + call PrintBank + call CheckVictory + mov eax, 1 + ret +cheat_backs: + mov shopBackOwned, 1FFFh + call SaveGame + invoke PrintCheatApplied, OFFSET cheatBacksText + mov eax, 1 + ret +cheat_max_charm: + mov shopCharmLevel, 5 + mov shopCharmUses, 1 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatCharmText + mov eax, 1 + ret +cheat_no_charm: + mov shopCharmLevel, 0 + call SaveGame + invoke PrintCheatApplied, OFFSET cheatNoCharmText + mov eax, 1 + ret +cheat_ach: + mov achievements, 7FFFFh + call SaveGame + invoke PrintCheatApplied, OFFSET cheatAchText + mov eax, 1 + ret +ApplyCheatCode ENDP + +; --- ReadBetInput: ââîä ïîëüçîâàòåëÿ è ðàçáîð ââåäåííûõ äàííûõ --- +ReadBetInput PROC uses ebx ecx edx esi edi + mov ecx, 32 + mov edi, OFFSET cheatBuffer + xor eax, eax + rep stosb + + xor ebx, ebx ; parsed numeric bet + xor esi, esi ; stored input length + xor edi, edi ; 0 = number, 1 = cheat/code +read_bet_loop: + invoke ReadFile, hIn, ADDR inputBuffer, 1, ADDR charsRead, 0 + cmp charsRead, 0 + je read_bet_finish + movzx eax, byte ptr inputBuffer + cmp al, 13 + je read_bet_drain_lf + cmp al, 10 + je read_bet_finish + cmp al, ' ' + je read_bet_loop + cmp al, 9 + je read_bet_loop + + cmp al, 'a' + jb read_bet_store + cmp al, 'z' + ja read_bet_store + sub al, 20h + +read_bet_store: + cmp esi, 31 + jae read_bet_after_store + mov cheatBuffer[esi], al +read_bet_after_store: + inc esi + + cmp edi, 0 + jne read_bet_loop + cmp al, '0' + jb read_bet_mark_code + cmp al, '9' + ja read_bet_mark_code + movzx edx, al + sub edx, '0' + imul ebx, ebx, 10 + add ebx, edx + jmp read_bet_loop + +read_bet_mark_code: + mov edi, 1 + jmp read_bet_loop + +read_bet_drain_lf: + invoke ReadFile, hIn, ADDR inputBuffer, 1, ADDR charsRead, 0 + cmp charsRead, 0 + je read_bet_finish + movzx eax, byte ptr inputBuffer + cmp al, 10 + jne read_bet_drain_lf + +read_bet_finish: + cmp esi, 0 + je read_bet_empty + cmp edi, 0 + jne read_bet_cheat + mov eax, ebx + ret + +read_bet_cheat: + invoke ApplyCheatCode, OFFSET cheatBuffer + cmp eax, 1 + je read_bet_cheat_ok + mov eax, 0FFFFFFFEh + ret +read_bet_cheat_ok: + mov eax, 0FFFFFFFFh + ret +read_bet_empty: + xor eax, eax + ret +ReadBetInput ENDP + +; --- Pause: ââîä ïîëüçîâàòåëÿ è ðàçáîð ââåäåííûõ äàííûõ --- +Pause PROC + invoke PrintStr, OFFSET pauseText + call ReadAnyKey + ret +Pause ENDP + +; --- PrintBank: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintBank PROC + invoke PrintStr, OFFSET bankText + invoke PrintMoney, bankroll + invoke PrintStr, OFFSET nl + ret +PrintBank ENDP +; --- PrintGoal: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintGoal PROC + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET goalText + call ResetColor + invoke PrintMoney, targetBank + invoke PrintStr, OFFSET nl + ret +PrintGoal ENDP + +; --- ResetProfileDefaults: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- +ResetProfileDefaults PROC uses ecx edi + mov bankroll, 10000 + mov targetBank, 50000 + mov gamesPlayed, 0 + mov gamesWon, 0 + mov gamesLost, 0 + mov gamesDrawn, 0 + mov bestWin, 0 + mov bestLoss, 0 + mov aiDifficulty, 2 + mov cheatLuckyWin, 0 + mov cheatGodMode, 0 + mov cheatSlotJackpot, 0 + mov settingsVolume, 10 + mov secretEndingSeen, 0 + mov vipTaxAmount, 0 + mov bankRecovered, 0 + mov shopBackOwned, 1 + mov shopBackStyle, 0 + mov shopCharmLevel, 0 + mov shopCharmUses, 0 + mov achievements, 0 + mov casinoSuspicion, 0 + mov stressLevel, 0 + mov lastGameResult, 0 + mov currentGameId, 0 + mov ecx, 11 + mov edi, OFFSET gameStatsPlayed +reset_game_stats_loop: + mov dword ptr [edi], 0 + add edi, 4 + loop reset_game_stats_loop + mov ecx, 11 + mov edi, OFFSET gameStatsWon +reset_game_won_loop: + mov dword ptr [edi], 0 + add edi, 4 + loop reset_game_won_loop + mov ecx, 11 + mov edi, OFFSET gameStatsLost +reset_game_lost_loop: + mov dword ptr [edi], 0 + add edi, 4 + loop reset_game_lost_loop + mov ecx, 11 + mov edi, OFFSET gameStatsDraw +reset_game_draw_loop: + mov dword ptr [edi], 0 + add edi, 4 + loop reset_game_draw_loop + ret +ResetProfileDefaults ENDP + +; --- ReadAccountName: ââîä ïîëüçîâàòåëÿ è ðàçáîð ââåäåííûõ äàííûõ --- +; --- CopyCString: êîïèðîâàíèå ASCIIZ-ñòðîêè --- +CopyCString PROC uses eax esi edi, pDst:DWORD, pSrc:DWORD + mov edi, pDst + mov esi, pSrc +copy_cstring_loop: + mov al, [esi] + mov [edi], al + inc esi + inc edi + cmp al, 0 + jne copy_cstring_loop + ret +CopyCString ENDP + +; --- AppendCString: äîïèñûâàåò ASCIIZ-ñòðîêó â êîíåö áóôåðà --- +AppendCString PROC uses eax esi edi, pDst:DWORD, pSrc:DWORD + mov edi, pDst +append_find_end: + cmp byte ptr [edi], 0 + je append_copy_start + inc edi + jmp append_find_end +append_copy_start: + mov esi, pSrc +append_copy_loop: + mov al, [esi] + mov [edi], al + inc esi + inc edi + cmp al, 0 + jne append_copy_loop + ret +AppendCString ENDP + +; --- BuildAppDataDir: ïóòü ê %APPDATA%\AssemblerCasino --- +BuildAppDataDir PROC uses eax + mov appDataReady, 0 + invoke GetEnvironmentVariableA, OFFSET appDataEnvName, OFFSET saveDirPath, 220 + cmp eax, 0 + je build_appdata_done + cmp eax, 220 + jae build_appdata_done + invoke AppendCString, OFFSET saveDirPath, OFFSET appDataSubDir + invoke CreateDirectoryA, OFFSET saveDirPath, 0 + mov appDataReady, 1 +build_appdata_done: + ret +BuildAppDataDir ENDP + +; --- BuildSaveFullPath: ïîëíûé ïóòü òåêóùåãî àêêàóíòà --- +BuildSaveFullPath PROC + call BuildAppDataDir + cmp appDataReady, 1 + jne build_save_local + invoke CopyCString, OFFSET saveFullPath, OFFSET saveDirPath + invoke AppendCString, OFFSET saveFullPath, OFFSET pathSlashText + invoke AppendCString, OFFSET saveFullPath, OFFSET saveFileName + ret +build_save_local: + invoke CopyCString, OFFSET saveFullPath, OFFSET saveFileName + ret +BuildSaveFullPath ENDP + +; --- BuildAccountPatternFull: ìàñêà ïîèñêà àêêàóíòîâ --- +BuildAccountPatternFull PROC + call BuildAppDataDir + cmp appDataReady, 1 + jne build_pattern_local + invoke CopyCString, OFFSET accountPatternFull, OFFSET saveDirPath + invoke AppendCString, OFFSET accountPatternFull, OFFSET pathSlashText + invoke AppendCString, OFFSET accountPatternFull, OFFSET accountPattern + ret +build_pattern_local: + invoke CopyCString, OFFSET accountPatternFull, OFFSET accountPattern + ret +BuildAccountPatternFull ENDP + +; --- BuildLeaderSavePath: ïîëíûé ïóòü àêêàóíòà äëÿ òàáëèö ëèäåðîâ --- +BuildLeaderSavePath PROC + call BuildAppDataDir + cmp appDataReady, 1 + jne build_leader_local + invoke CopyCString, OFFSET leaderSavePath, OFFSET saveDirPath + invoke AppendCString, OFFSET leaderSavePath, OFFSET pathSlashText + invoke AppendCString, OFFSET leaderSavePath, leaderAccountPtr + ret +build_leader_local: + invoke CopyCString, OFFSET leaderSavePath, leaderAccountPtr + ret +BuildLeaderSavePath ENDP +ReadAccountName PROC uses eax ecx edi + mov ecx, 64 + mov edi, OFFSET saveFileName +clear_account_name: + mov byte ptr [edi], 0 + inc edi + loop clear_account_name + + mov accountNameLen, 0 + mov edi, OFFSET saveFileName +read_account_loop: + invoke ReadFile, hIn, ADDR inputBuffer, 1, ADDR charsRead, 0 + cmp charsRead, 0 + je account_name_done + mov al, byte ptr inputBuffer + cmp al, 13 + je account_name_drain_lf + cmp al, 10 + je account_name_done + + cmp accountNameLen, 50 + jae read_account_loop + cmp al, '0' + jb check_account_upper + cmp al, '9' + jbe store_account_char +check_account_upper: + cmp al, 'A' + jb check_account_lower + cmp al, 'Z' + jbe store_account_char +check_account_lower: + cmp al, 'a' + jb check_account_symbols + cmp al, 'z' + jbe store_account_char +check_account_symbols: + cmp al, '_' + je store_account_char + cmp al, '-' + je store_account_char + jmp read_account_loop +store_account_char: + mov [edi], al + inc edi + inc accountNameLen + jmp read_account_loop + +account_name_drain_lf: + invoke ReadFile, hIn, ADDR inputBuffer, 1, ADDR charsRead, 0 + cmp charsRead, 0 + je account_name_done + mov al, byte ptr inputBuffer + cmp al, 10 + jne account_name_drain_lf + +account_name_done: + cmp accountNameLen, 0 + je account_name_return + mov byte ptr [edi], '.' + inc edi + mov byte ptr [edi], 'd' + inc edi + mov byte ptr [edi], 'a' + inc edi + mov byte ptr [edi], 't' + inc edi + mov byte ptr [edi], 0 +account_name_return: + ret +ReadAccountName ENDP + +; --- AskAccountName: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- +AskAccountName PROC +ask_account_name_again: + invoke PrintStr, OFFSET accountPromptText + call ReadAccountName + cmp accountNameLen, 0 + jne account_name_ok + invoke PrintStr, OFFSET accountBadText + jmp ask_account_name_again +account_name_ok: + ret +AskAccountName ENDP + +; --- CopyFindAccountName: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- +CopyFindAccountName PROC uses eax ecx esi edi + mov eax, accountCount + shl eax, 6 + mov edi, OFFSET accountList + add edi, eax + mov esi, OFFSET findData + add esi, 44 + mov ecx, 63 +copy_find_name_loop: + mov al, [esi] + mov [edi], al + cmp al, 0 + je copy_find_name_done + inc esi + inc edi + loop copy_find_name_loop + mov byte ptr [edi], 0 +copy_find_name_done: + ret +CopyFindAccountName ENDP + +; --- CopySelectedAccountName: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- +CopySelectedAccountName PROC uses eax ecx esi edi + mov eax, selectedAccount + dec eax + shl eax, 6 + mov esi, OFFSET accountList + add esi, eax + mov edi, OFFSET saveFileName + mov ecx, 63 +copy_selected_name_loop: + mov al, [esi] + mov [edi], al + cmp al, 0 + je copy_selected_name_done + inc esi + inc edi + loop copy_selected_name_loop + mov byte ptr [edi], 0 +copy_selected_name_done: + ret +CopySelectedAccountName ENDP + +; --- CollectAccounts: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- +CollectAccounts PROC uses eax + mov accountCount, 0 + call BuildAccountPatternFull + invoke FindFirstFileA, OFFSET accountPatternFull, OFFSET findData + cmp eax, INVALID_HANDLE_VALUE + je collect_accounts_done + mov findHandle, eax +collect_accounts_loop: + mov eax, DWORD PTR [findData] + test eax, 10h + jne collect_accounts_next + cmp accountCount, 20 + jae collect_accounts_close + call CopyFindAccountName + inc accountCount +collect_accounts_next: + invoke FindNextFileA, findHandle, OFFSET findData + cmp eax, 0 + jne collect_accounts_loop +collect_accounts_close: + invoke FindClose, findHandle +collect_accounts_done: + ret +CollectAccounts ENDP + +; --- PrintAccountList: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintAccountList PROC uses eax ebx + invoke PrintStr, OFFSET accountListTitle + mov ebx, 0 +print_account_loop: + cmp ebx, accountCount + jae print_account_done + mov eax, ebx + inc eax + invoke PrintUInt, eax + invoke PrintStr, OFFSET dotSpaceText + mov eax, ebx + shl eax, 6 + add eax, OFFSET accountList + invoke PrintStr, eax + invoke PrintStr, OFFSET nl + inc ebx + jmp print_account_loop +print_account_done: + ret +PrintAccountList ENDP + +; --- SelectExistingAccount: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- +SelectExistingAccount PROC +select_account_again: + call ClearView + invoke PrintTitleColor, OFFSET titleText + call CollectAccounts + cmp accountCount, 0 + jne accounts_available + invoke PrintStr, OFFSET accountNoFilesText + call Pause + xor eax, eax + ret +accounts_available: + call PrintAccountList + invoke PrintStr, OFFSET accountSelectText + call ReadUInt + cmp eax, 1 + jb select_account_bad + cmp eax, accountCount + ja select_account_bad + mov selectedAccount, eax + call CopySelectedAccountName + mov eax, 1 + ret +select_account_bad: + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp select_account_again +SelectExistingAccount ENDP + +; --- AccountMenu: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- +AccountMenu PROC +account_menu_loop: + call ClearView + invoke PrintTitleColor, OFFSET titleText + invoke PrintStr, OFFSET accountMenuText + invoke PrintStr, OFFSET choiceText + call ReadKey + cmp al, '1' + je account_login + cmp al, '2' + je account_create + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp account_menu_loop + +account_login: + call ResetProfileDefaults + call SelectExistingAccount + cmp eax, 1 + jne account_menu_loop + call LoadSave + invoke PrintStr, OFFSET accountLoginText + invoke PrintStr, OFFSET saveFileName + invoke PrintStr, OFFSET nl + invoke Sleep, 700 + ret + +account_create: + call ClearView + invoke PrintTitleColor, OFFSET titleText + call ResetProfileDefaults + call AskAccountName + call SaveGame + invoke PrintStr, OFFSET accountCreateText + invoke PrintStr, OFFSET saveFileName + invoke PrintStr, OFFSET nl + invoke Sleep, 700 + ret +AccountMenu ENDP +; --- CalcSaveSignature: ïðîñòàÿ ïîäïèñü ñîõðàíåíèÿ îò ðó÷íîé ïðàâêè --- +CalcSaveSignature PROC uses ecx esi edx + mov esi, OFFSET saveBuffer + mov ecx, SAVE_SIGN_SIZE / 4 + mov eax, SAVE_SALT +save_signature_loop: + rol eax, 5 + xor eax, [esi] + mov edx, eax + shr edx, 16 + xor eax, edx + add eax, 9E3779B9h + add esi, 4 + loop save_signature_loop + ret +CalcSaveSignature ENDP +; --- SaveGame: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- +SaveGame PROC uses eax ecx esi edi + mov DWORD PTR [saveBuffer], SAVE_MAGIC + mov eax, bankroll + mov DWORD PTR [saveBuffer+4], eax + mov eax, targetBank + mov DWORD PTR [saveBuffer+36], eax + mov eax, gamesPlayed + mov DWORD PTR [saveBuffer+8], eax + mov eax, gamesWon + mov DWORD PTR [saveBuffer+12], eax + mov eax, gamesLost + mov DWORD PTR [saveBuffer+16], eax + mov eax, gamesDrawn + mov DWORD PTR [saveBuffer+20], eax + mov eax, bestWin + mov DWORD PTR [saveBuffer+24], eax + mov eax, bestLoss + mov DWORD PTR [saveBuffer+28], eax + mov eax, aiDifficulty + mov DWORD PTR [saveBuffer+32], eax + mov eax, shopBackOwned + mov DWORD PTR [saveBuffer+40], eax + mov eax, shopBackStyle + mov DWORD PTR [saveBuffer+44], eax + mov eax, shopCharmLevel + mov DWORD PTR [saveBuffer+48], eax + mov eax, achievements + mov DWORD PTR [saveBuffer+52], eax + mov eax, shopCharmUses + mov DWORD PTR [saveBuffer+56], eax + mov eax, casinoSuspicion + mov DWORD PTR [saveBuffer+236], eax + mov eax, dailyDateKey + mov DWORD PTR [saveBuffer+240], eax + mov eax, dailyRewardMask + mov DWORD PTR [saveBuffer+244], eax + mov eax, dailyProgressPacked + mov DWORD PTR [saveBuffer+248], eax + mov eax, dailyTaskPacked + mov DWORD PTR [saveBuffer+252], eax + mov eax, settingsVolume + mov DWORD PTR [saveBuffer+256], eax + mov eax, secretEndingSeen + mov DWORD PTR [saveBuffer+260], eax + mov eax, settingsLowSpec + mov DWORD PTR [saveBuffer+264], eax + mov eax, settingsIntroEnabled + mov DWORD PTR [saveBuffer+268], eax + mov eax, settingsDbdWindowEnabled + mov DWORD PTR [saveBuffer+272], eax + mov ecx, 44 + mov esi, OFFSET gameStatsPlayed + mov edi, OFFSET saveBuffer+60 +save_stats_played_loop: + mov eax, [esi] + mov [edi], eax + add esi, 4 + add edi, 4 + loop save_stats_played_loop + call CalcSaveSignature + mov DWORD PTR [saveBuffer+SAVE_SIGN_SIZE], eax + call BuildSaveFullPath + invoke CreateFileA, OFFSET saveFullPath, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + je save_done + mov saveHandle, eax + invoke WriteFile, saveHandle, ADDR saveBuffer, SAVE_FILE_SIZE, ADDR charsWritten, 0 + invoke CloseHandle, saveHandle +save_done: + ret +SaveGame ENDP + +; --- LoadSave: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- +LoadSave PROC uses eax ecx esi edi + mov dailyDateKey, 0 + mov dailyRewardMask, 0 + mov dailyProgressPacked, 0 + mov dailyTaskPacked, 0 + mov settingsVolume, 10 ; load default for old saves + mov secretEndingSeen, 0 + mov settingsLowSpec, 0 + mov settingsIntroEnabled, 1 + mov settingsDbdWindowEnabled, 1 + mov saveTampered, 0 + call BuildSaveFullPath + invoke CreateFileA, OFFSET saveFullPath, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + jne load_file_opened + cmp appDataReady, 1 + jne load_done + invoke CreateFileA, OFFSET saveFileName, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + je load_done +load_file_opened: + mov saveHandle, eax + invoke ReadFile, saveHandle, ADDR saveBuffer, SAVE_FILE_SIZE, ADDR charsRead, 0 + invoke CloseHandle, saveHandle + cmp charsRead, 32 + jb load_done + mov eax, DWORD PTR [saveBuffer] + cmp eax, SAVE_MAGIC + jne load_done + cmp charsRead, SAVE_FILE_SIZE + jb load_signature_ok + mov edx, DWORD PTR [saveBuffer+SAVE_SIGN_SIZE] + call CalcSaveSignature + cmp eax, edx + jne load_tampered +load_signature_ok: + mov eax, DWORD PTR [saveBuffer+4] + mov bankroll, eax + cmp eax, 0 + jne load_bank_ok + mov bankroll, 10000 + mov bankRecovered, 1 +load_bank_ok: + mov eax, DWORD PTR [saveBuffer+8] + mov gamesPlayed, eax + mov eax, DWORD PTR [saveBuffer+12] + mov gamesWon, eax + mov eax, DWORD PTR [saveBuffer+16] + mov gamesLost, eax + mov eax, DWORD PTR [saveBuffer+20] + mov gamesDrawn, eax + mov eax, DWORD PTR [saveBuffer+24] + mov bestWin, eax + mov eax, DWORD PTR [saveBuffer+28] + mov bestLoss, eax + cmp charsRead, 36 + jb load_done + mov eax, DWORD PTR [saveBuffer+32] + cmp eax, 1 + jb load_done + cmp eax, 3 + ja load_done + mov aiDifficulty, eax + cmp charsRead, 40 + jb load_done + mov eax, DWORD PTR [saveBuffer+36] + cmp eax, 50000 + jb load_done + mov targetBank, eax + cmp charsRead, 52 + jb load_done + mov eax, DWORD PTR [saveBuffer+40] + cmp eax, 0 + je load_done + mov shopBackOwned, eax + mov eax, DWORD PTR [saveBuffer+44] + cmp eax, 12 + ja load_shop_charm + mov shopBackStyle, eax +load_shop_charm: + mov eax, DWORD PTR [saveBuffer+48] + cmp eax, 24 + ja load_done + mov shopCharmLevel, eax + cmp charsRead, 56 + jb load_done + mov eax, DWORD PTR [saveBuffer+52] + mov achievements, eax + cmp charsRead, 60 + jb load_done + mov eax, DWORD PTR [saveBuffer+56] + cmp eax, 8 + ja load_done + mov shopCharmUses, eax + cmp charsRead, 236 + jb load_done + mov ecx, 44 + mov esi, OFFSET saveBuffer+60 + mov edi, OFFSET gameStatsPlayed +load_stats_played_loop: + mov eax, [esi] + mov [edi], eax + add esi, 4 + add edi, 4 + loop load_stats_played_loop + cmp charsRead, 240 + jb load_done + mov eax, DWORD PTR [saveBuffer+236] + cmp eax, 100 + ja load_done + mov casinoSuspicion, eax + cmp charsRead, 252 + jb load_done + mov eax, DWORD PTR [saveBuffer+240] + mov dailyDateKey, eax + mov eax, DWORD PTR [saveBuffer+244] + mov dailyRewardMask, eax + mov eax, DWORD PTR [saveBuffer+248] + mov dailyProgressPacked, eax + cmp charsRead, 256 + jb load_daily_check + mov eax, DWORD PTR [saveBuffer+252] + mov dailyTaskPacked, eax + cmp charsRead, 260 + jb load_daily_check +load_settings_volume: + mov eax, DWORD PTR [saveBuffer+256] + cmp eax, 10 + ja load_secret_seen + mov settingsVolume, eax +load_secret_seen: + cmp charsRead, 264 + jb load_daily_check + mov eax, DWORD PTR [saveBuffer+260] + cmp eax, 1 + ja load_low_spec_setting + mov secretEndingSeen, eax +load_low_spec_setting: + cmp charsRead, 268 + jb load_daily_check + mov eax, DWORD PTR [saveBuffer+264] + cmp eax, 2 + ja load_intro_setting + mov settingsLowSpec, eax +load_intro_setting: + cmp charsRead, 272 + jb load_daily_check + mov eax, DWORD PTR [saveBuffer+268] + cmp eax, 1 + ja load_dbd_setting + mov settingsIntroEnabled, eax +load_dbd_setting: + cmp charsRead, 276 + jb load_daily_check + mov eax, DWORD PTR [saveBuffer+272] + cmp eax, 1 + ja load_daily_check + mov settingsDbdWindowEnabled, eax +load_daily_check: + call DailyCheckDate + jmp load_done +load_tampered: + mov bankroll, 10000 + mov bankRecovered, 1 + mov saveTampered, 1 + jmp load_done +load_done: + ret +LoadSave ENDP + +; --- RegisterGamePlayed: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- +RegisterGamePlayed PROC uses eax ebx + mov eax, currentGameId + cmp eax, 1 + jb register_game_played_done + cmp eax, 11 + ja register_game_played_done + dec eax + mov ebx, eax + inc dword ptr gameStatsPlayed[ebx * 4] +register_game_played_done: + ret +RegisterGamePlayed ENDP + +; --- RegisterGameWin: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- +RegisterGameWin PROC uses eax ebx + call RegisterGamePlayed + mov eax, currentGameId + cmp eax, 1 + jb register_game_win_done + cmp eax, 10 + ja register_game_win_done + dec eax + mov ebx, eax + inc dword ptr gameStatsWon[ebx * 4] +register_game_win_done: + ret +RegisterGameWin ENDP + +; --- RegisterGameLoss: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- +RegisterGameLoss PROC uses eax ebx + call RegisterGamePlayed + mov eax, currentGameId + cmp eax, 1 + jb register_game_loss_done + cmp eax, 10 + ja register_game_loss_done + dec eax + mov ebx, eax + inc dword ptr gameStatsLost[ebx * 4] +register_game_loss_done: + ret +RegisterGameLoss ENDP + +; --- RegisterGameDraw: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- +RegisterGameDraw PROC uses eax ebx + call RegisterGamePlayed + mov eax, currentGameId + cmp eax, 1 + jb register_game_draw_done + cmp eax, 10 + ja register_game_draw_done + dec eax + mov ebx, eax + inc dword ptr gameStatsDraw[ebx * 4] +register_game_draw_done: + ret +RegisterGameDraw ENDP +; --- RegisterWin: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- +RegisterWin PROC uses eax, amount:DWORD + inc gamesPlayed + inc gamesWon + call DailyAddWin + call RegisterGameWin + mov eax, amount + cmp eax, bestWin + jbe register_win_save + mov bestWin, eax +register_win_save: + call SaveGame + ret +RegisterWin ENDP + +; --- RegisterLoss: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- +RegisterLoss PROC uses eax, amount:DWORD + inc gamesPlayed + inc gamesLost + call DailyAddLoss + call RegisterGameLoss + mov eax, amount + cmp eax, bestLoss + jbe register_loss_save + mov bestLoss, eax +register_loss_save: + invoke UnlockAchievement, 2, OFFSET achFirstLossName +register_loss_ach_done: + call SaveGame + ret +RegisterLoss ENDP + +; --- RegisterDraw: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- +RegisterDraw PROC + inc gamesPlayed + inc gamesDrawn + call DailyAddDraw + call RegisterGameDraw + call SaveGame + ret +RegisterDraw ENDP + +; --- DailyTaskGoal: öåëü çàäàíèÿ èç ïóëà 40 --- +DailyTaskGoal PROC taskId:DWORD + mov eax, taskId + cmp eax, 2 + je daily_goal_5 + cmp eax, 3 + je daily_goal_7 + cmp eax, 5 + je daily_goal_2 + cmp eax, 6 + je daily_goal_3 + cmp eax, 8 + je daily_goal_2 + cmp eax, 11 + je daily_goal_3 + cmp eax, 35 + je daily_goal_2 + cmp eax, 37 + je daily_goal_3 + cmp eax, 38 + je daily_goal_2 + cmp eax, 39 + je daily_goal_2 + mov eax, 1 + ret +daily_goal_2: + mov eax, 2 + ret +daily_goal_3: + mov eax, 3 + ret +daily_goal_5: + mov eax, 5 + ret +daily_goal_7: + mov eax, 7 + ret +DailyTaskGoal ENDP + +; --- DailyTaskReward: äåíåæíàÿ íàãðàäà çàäàíèÿ èç ïóëà 40 --- +DailyTaskReward PROC taskId:DWORD + mov eax, taskId + cmp eax, 12 + je daily_reward_big + cmp eax, 30 + je daily_reward_big + cmp eax, 34 + je daily_reward_big + cmp eax, 36 + je daily_reward_big + cmp eax, 38 + je daily_reward_mid + cmp eax, 40 + je daily_reward_mid + cmp eax, 10 + jb daily_reward_small + cmp eax, 28 + jbe daily_reward_mid + mov eax, 2000 + ret +daily_reward_small: + mov eax, 1000 + ret +daily_reward_mid: + mov eax, 2500 + ret +daily_reward_big: + mov eax, 4000 + ret +DailyTaskReward ENDP + +; --- DailyGenerateTasks: âûáèðàåò 3 çàäàíèÿ èç 40 ïî êàëåíäàðíîé äàòå --- +DailyGenerateTasks PROC uses eax ebx ecx edx + mov eax, dailyDateKey + xor edx, edx + mov ebx, 40 + div ebx + inc edx + mov byte ptr [dailyTaskPacked], dl + + mov eax, dailyDateKey + xor edx, edx + mov ebx, 3 + div ebx + add eax, 17 + xor edx, edx + mov ebx, 40 + div ebx + inc edx + mov al, dl + cmp al, byte ptr [dailyTaskPacked] + jne daily_gen_store2 + inc al + cmp al, 41 + jb daily_gen_store2 + mov al, 1 +daily_gen_store2: + mov byte ptr [dailyTaskPacked+1], al + + mov eax, dailyDateKey + xor edx, edx + mov ebx, 7 + div ebx + add eax, 29 + xor edx, edx + mov ebx, 40 + div ebx + inc edx + mov al, dl +daily_gen_unique3: + cmp al, byte ptr [dailyTaskPacked] + je daily_gen_inc3 + cmp al, byte ptr [dailyTaskPacked+1] + je daily_gen_inc3 + jmp daily_gen_store3 +daily_gen_inc3: + inc al + cmp al, 41 + jb daily_gen_unique3 + mov al, 1 + jmp daily_gen_unique3 +daily_gen_store3: + mov byte ptr [dailyTaskPacked+2], al + mov byte ptr [dailyTaskPacked+3], 0 + ret +DailyGenerateTasks ENDP + +; --- DailyCheckDate: êàëåíäàðíûå åæåäíåâíûå çàäàíèÿ --- +DailyCheckDate PROC uses eax ebx + invoke GetLocalTime, OFFSET systemTime + movzx eax, word ptr [systemTime] + imul eax, eax, 10000 + movzx ebx, word ptr [systemTime+2] + imul ebx, ebx, 100 + add eax, ebx + movzx ebx, word ptr [systemTime+6] + add eax, ebx + cmp dailyDateKey, eax + je daily_date_has_date + mov dailyDateKey, eax + mov dailyRewardMask, 0 + mov dailyProgressPacked, 0 + mov dailyTaskPacked, 0 + call DailyGenerateTasks + ret +daily_date_has_date: + cmp byte ptr [dailyTaskPacked], 0 + jne daily_date_done + call DailyGenerateTasks +daily_date_done: + ret +DailyCheckDate ENDP + +; --- DailyTaskMatches: ïðîâåðÿåò, ðåàãèðóåò ëè çàäàíèå íà ñîáûòèå --- +; eventType: 1 played, 2 win, 3 loss, 4 draw, 5 bet>=5000, 6 bet>=10000 +DailyTaskMatches PROC uses ebx ecx edx, taskId:DWORD, eventType:DWORD + mov eax, taskId + mov ebx, eventType + cmp eax, 1 + je daily_match_play_any + cmp eax, 2 + je daily_match_play_any + cmp eax, 3 + je daily_match_play_any + cmp eax, 4 + je daily_match_win_any + cmp eax, 5 + je daily_match_win_any + cmp eax, 6 + je daily_match_win_any + cmp eax, 7 + je daily_match_loss_any + cmp eax, 8 + je daily_match_loss_any + cmp eax, 9 + je daily_match_draw_any + cmp eax, 10 + je daily_match_bet5 + cmp eax, 11 + je daily_match_bet5 + cmp eax, 12 + je daily_match_bet10 + + cmp eax, 13 + jb daily_match_none + cmp eax, 34 + ja daily_match_groups + mov ecx, eax + sub ecx, 13 + shr ecx, 1 + inc ecx + ; map compact game order 1..11 to actual currentGameId + cmp ecx, 3 + jb daily_match_game_ready + cmp ecx, 3 + je daily_match_game_clover + cmp ecx, 4 + je daily_match_game_rr + cmp ecx, 5 + je daily_match_game_skulls + cmp ecx, 6 + je daily_match_game_coin + cmp ecx, 7 + je daily_match_game_dice + cmp ecx, 8 + je daily_match_game_casino_roulette + cmp ecx, 9 + je daily_match_game_slot + cmp ecx, 10 + je daily_match_game_durak + mov ecx, 11 + jmp daily_match_game_ready +daily_match_game_clover: + mov ecx, 3 + jmp daily_match_game_ready +daily_match_game_rr: + mov ecx, 4 + jmp daily_match_game_ready +daily_match_game_skulls: + mov ecx, 5 + jmp daily_match_game_ready +daily_match_game_coin: + mov ecx, 6 + jmp daily_match_game_ready +daily_match_game_dice: + mov ecx, 7 + jmp daily_match_game_ready +daily_match_game_casino_roulette: + mov ecx, 8 + jmp daily_match_game_ready +daily_match_game_slot: + mov ecx, 9 + jmp daily_match_game_ready +daily_match_game_durak: + mov ecx, 10 +daily_match_game_ready: + cmp currentGameId, ecx + jne daily_match_none + test eax, 1 + jnz daily_match_play_any + jmp daily_match_win_any + +daily_match_groups: + cmp eax, 35 + je daily_match_card_play + cmp eax, 36 + je daily_match_card_win + cmp eax, 37 + je daily_match_luck_play + cmp eax, 38 + je daily_match_luck_win + cmp eax, 39 + je daily_match_risk_play + cmp eax, 40 + je daily_match_risk_win + jmp daily_match_none + +daily_match_play_any: + cmp ebx, 1 + je daily_match_yes + jmp daily_match_none +daily_match_win_any: + cmp ebx, 2 + je daily_match_yes + jmp daily_match_none +daily_match_loss_any: + cmp ebx, 3 + je daily_match_yes + jmp daily_match_none +daily_match_draw_any: + cmp ebx, 4 + je daily_match_yes + jmp daily_match_none +daily_match_bet5: + cmp ebx, 5 + je daily_match_yes + jmp daily_match_none +daily_match_bet10: + cmp ebx, 6 + je daily_match_yes + jmp daily_match_none + +daily_match_card_play: + cmp ebx, 1 + jne daily_match_none + cmp currentGameId, 1 + je daily_match_yes + cmp currentGameId, 2 + je daily_match_yes + cmp currentGameId, 10 + je daily_match_yes + jmp daily_match_none +daily_match_card_win: + cmp ebx, 2 + jne daily_match_none + cmp currentGameId, 1 + je daily_match_yes + cmp currentGameId, 2 + je daily_match_yes + cmp currentGameId, 10 + je daily_match_yes + jmp daily_match_none +daily_match_luck_play: + cmp ebx, 1 + jne daily_match_none + cmp currentGameId, 3 + je daily_match_yes + cmp currentGameId, 6 + je daily_match_yes + cmp currentGameId, 7 + je daily_match_yes + cmp currentGameId, 8 + je daily_match_yes + cmp currentGameId, 9 + je daily_match_yes + jmp daily_match_none +daily_match_luck_win: + cmp ebx, 2 + jne daily_match_none + cmp currentGameId, 3 + je daily_match_yes + cmp currentGameId, 6 + je daily_match_yes + cmp currentGameId, 7 + je daily_match_yes + cmp currentGameId, 8 + je daily_match_yes + cmp currentGameId, 9 + je daily_match_yes + jmp daily_match_none +daily_match_risk_play: + cmp ebx, 1 + jne daily_match_none + cmp currentGameId, 4 + je daily_match_yes + cmp currentGameId, 5 + je daily_match_yes + cmp currentGameId, 11 + je daily_match_yes + jmp daily_match_none +daily_match_risk_win: + cmp ebx, 2 + jne daily_match_none + cmp currentGameId, 4 + je daily_match_yes + cmp currentGameId, 5 + je daily_match_yes + cmp currentGameId, 11 + je daily_match_yes + jmp daily_match_none + +daily_match_yes: + mov eax, 1 + ret +daily_match_none: + xor eax, eax + ret +DailyTaskMatches ENDP + +; --- DailyApplyEvent: ïðèìåíÿåò èãðîâîå ñîáûòèå ê òð¸ì çàäàíèÿì äíÿ --- +DailyApplyEvent PROC uses eax ebx ecx edx esi, eventType:DWORD + call DailyCheckDate + mov esi, 0 +daily_apply_loop: + cmp esi, 3 + jae daily_apply_done + movzx eax, byte ptr [dailyTaskPacked + esi] + cmp eax, 0 + je daily_apply_next + mov ebx, eax + invoke DailyTaskMatches, ebx, eventType + cmp eax, 1 + jne daily_apply_next + movzx ecx, byte ptr [dailyProgressPacked + esi] + invoke DailyTaskGoal, ebx + cmp ecx, eax + jae daily_apply_next + inc byte ptr [dailyProgressPacked + esi] +daily_apply_next: + inc esi + jmp daily_apply_loop +daily_apply_done: + ret +DailyApplyEvent ENDP + +DailyAddPlayed PROC + invoke DailyApplyEvent, 1 + ret +DailyAddPlayed ENDP + +DailyAddWin PROC + call DailyAddPlayed + invoke DailyApplyEvent, 2 + ret +DailyAddWin ENDP + +DailyAddLoss PROC + call DailyAddPlayed + invoke DailyApplyEvent, 3 + ret +DailyAddLoss ENDP + +DailyAddDraw PROC + call DailyAddPlayed + invoke DailyApplyEvent, 4 + ret +DailyAddDraw ENDP + +DailyAddHighBet PROC + call DailyCheckDate + cmp currentBet, 5000 + jb daily_bet_done + invoke DailyApplyEvent, 5 + cmp currentBet, 10000 + jb daily_bet_done + invoke DailyApplyEvent, 6 +daily_bet_done: + ret +DailyAddHighBet ENDP + +; --- DailyClaimSlot: âûäà÷à íàãðàäû çà îäèí ñëîò åæåäíåâêè --- +DailyClaimSlot PROC uses eax ebx ecx edx, slotIndex:DWORD, maskValue:DWORD + mov eax, dailyRewardMask + and eax, maskValue + cmp eax, 0 + jne daily_claim_slot_done + mov ecx, slotIndex + movzx ebx, byte ptr [dailyTaskPacked + ecx] + cmp ebx, 0 + je daily_claim_slot_done + movzx edx, byte ptr [dailyProgressPacked + ecx] + invoke DailyTaskGoal, ebx + cmp edx, eax + jb daily_claim_slot_done + mov eax, maskValue + or dailyRewardMask, eax + invoke DailyTaskReward, ebx + add bankroll, eax + push eax + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET dailyClaimText + pop eax + invoke PrintUInt, eax + invoke PrintStr, OFFSET nl + call ResetColor +daily_claim_slot_done: + ret +DailyClaimSlot ENDP + +DailyClaimRewards PROC + call DailyCheckDate + invoke DailyClaimSlot, 0, 1 + invoke DailyClaimSlot, 1, 2 + invoke DailyClaimSlot, 2, 4 + call SaveGame + ret +DailyClaimRewards ENDP + +; --- PrintDailySlot: ñòðîêà îäíîãî åæåäíåâíîãî çàäàíèÿ --- +PrintDailySlot PROC uses eax ebx ecx edx, slotIndex:DWORD, maskValue:DWORD + mov ecx, slotIndex + mov eax, ecx + inc eax + invoke PrintUInt, eax + invoke PrintStr, OFFSET dotSpaceText + movzx ebx, byte ptr [dailyTaskPacked + ecx] + cmp ebx, 1 + jb daily_slot_done + cmp ebx, 40 + ja daily_slot_done + mov eax, ebx + dec eax + mov edx, dword ptr [dailyTaskNameTable + eax * 4] + invoke PrintStr, edx + invoke PrintStr, OFFSET dailySlashText + mov ecx, slotIndex + movzx eax, byte ptr [dailyProgressPacked + ecx] + push eax + invoke PrintUInt, eax + invoke PrintStr, OFFSET dailySlashText + invoke DailyTaskGoal, ebx + mov edx, eax + invoke PrintUInt, edx + invoke PrintStr, OFFSET dailyRewardText + invoke DailyTaskReward, ebx + invoke PrintUInt, eax + mov eax, dailyRewardMask + and eax, maskValue + cmp eax, 0 + jne daily_slot_status_done + pop eax + cmp eax, edx + jae daily_slot_status_ready + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET dailyOpenText + call ResetColor + ret +daily_slot_status_ready: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET dailyReadyText + call ResetColor + ret +daily_slot_status_done: + pop eax + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET dailyDoneText + call ResetColor + ret +daily_slot_done: + ret +PrintDailySlot ENDP + +GameDailyTasks PROC + call ClearView + invoke PrintTitleColor, OFFSET dailyTitle + invoke PrintStr, OFFSET dailyIntro + call DailyClaimRewards + call PrintBank + invoke PrintStr, OFFSET dailyDateText + invoke PrintUInt, dailyDateKey + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET dailyPoolText + invoke PrintDailySlot, 0, 1 + invoke PrintDailySlot, 1, 2 + invoke PrintDailySlot, 2, 4 + call Pause + ret +GameDailyTasks ENDP + +; --- PrintDifficultyName: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintDifficultyName PROC + cmp aiDifficulty, 1 + je print_easy_name + cmp aiDifficulty, 3 + je print_hard_name + invoke PrintStr, OFFSET normalName + ret +print_easy_name: + invoke PrintStr, OFFSET easyName + ret +print_hard_name: + invoke PrintStr, OFFSET hardName + ret +PrintDifficultyName ENDP + +; --- PrintBankLevelName: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintBankLevelName PROC + mov eax, bankroll + cmp eax, 100000 + jae print_level_legend + cmp eax, 50000 + jae print_level_high + cmp eax, 20000 + jae print_level_player + invoke PrintStr, OFFSET bankLevelNewbie + ret +print_level_player: + invoke PrintStr, OFFSET bankLevelPlayer + ret +print_level_high: + invoke PrintStr, OFFSET bankLevelHigh + ret +print_level_legend: + invoke PrintStr, OFFSET bankLevelLegend + ret +PrintBankLevelName ENDP + +; --- PrintBankLevel: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintBankLevel PROC + invoke PrintStr, OFFSET bankLevelText + call PrintBankLevelName + ret +PrintBankLevel ENDP + +; --- ApplySoundVolume: íàñòðîéêè ãðîìêîñòè WinMM, 0-10 --- +ApplySoundVolume PROC uses eax edx + mov eax, settingsVolume + cmp eax, 10 + jb volume_scaled + mov eax, 0FFFFh + jmp volume_pack +volume_scaled: + imul eax, eax, 6553 +volume_pack: + mov edx, eax + shl edx, 16 + or eax, edx + invoke waveOutSetVolume, 0FFFFFFFFh, eax + ret +ApplySoundVolume ENDP +; --- AnimShouldDrawFrame: animation profile frame skipper --- +AnimShouldDrawFrame PROC uses ecx edx + inc animFrameCounter + mov eax, settingsLowSpec + cmp eax, 0 + je anim_draw_yes + cmp eax, 1 + je anim_adaptive_check + mov eax, animFrameCounter + xor edx, edx + mov ecx, 3 + div ecx + cmp edx, 1 + je anim_draw_yes + xor eax, eax + ret +anim_adaptive_check: + mov eax, animFrameCounter + and eax, 1 + cmp eax, 1 + je anim_draw_yes + xor eax, eax + ret +anim_draw_yes: + mov eax, 1 + ret +AnimShouldDrawFrame ENDP + +; --- AnimFrameDelay: keeps scene timing while reducing redraws --- +AnimFrameDelay PROC baseDelay:DWORD + mov eax, baseDelay + cmp settingsLowSpec, 1 + je anim_delay_adaptive + cmp settingsLowSpec, 2 + je anim_delay_stable + ret +anim_delay_adaptive: + shl eax, 1 + ret +anim_delay_stable: + imul eax, eax, 3 + ret +AnimFrameDelay ENDP + +; --- PrintVIPStatus: VIP-ñòàòóñ ïî ðàçìåðó áàíêà --- +PrintVIPStatus PROC + invoke PrintStr, OFFSET vipStatusText + mov eax, bankroll + cmp eax, 500000 + jae print_vip_diamond + cmp eax, 250000 + jae print_vip_gold + cmp eax, 100000 + jae print_vip_silver + invoke PrintStr, OFFSET vipBronzeText + ret +print_vip_silver: + invoke SetColor, COLOR_CARD + invoke PrintStr, OFFSET vipSilverText + call ResetColor + ret +print_vip_gold: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET vipGoldText + call ResetColor + ret +print_vip_diamond: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET vipDiamondText + call ResetColor + ret +PrintVIPStatus ENDP + +; --- ApplyVIPTax: êàçèíî áåðåò êîìèññèþ ñ áîëüøèõ VIP-ñòàâîê --- +ApplyVIPTax PROC uses eax ebx edx + mov vipTaxAmount, 0 + mov eax, bankroll + cmp eax, 100000 + jb vip_tax_done + mov eax, currentBet + cmp bankroll, 500000 + jae vip_tax_diamond + cmp bankroll, 250000 + jae vip_tax_gold + mov ebx, 1 + jmp vip_tax_calc +vip_tax_gold: + mov ebx, 2 + jmp vip_tax_calc +vip_tax_diamond: + mov ebx, 3 +vip_tax_calc: + mul ebx + mov ebx, 100 + xor edx, edx + div ebx + cmp eax, 0 + jne vip_tax_have + mov eax, 1 +vip_tax_have: + mov vipTaxAmount, eax + cmp bankroll, eax + jae vip_tax_sub + mov eax, bankroll + mov vipTaxAmount, eax +vip_tax_sub: + sub bankroll, eax + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET vipTaxText + invoke PrintUInt, vipTaxAmount + invoke PrintStr, OFFSET nl + call ResetColor + call SaveGame +vip_tax_done: + ret +ApplyVIPTax ENDP + +; --- CheckSecretEnding: ñåêðåòíàÿ êîíöîâêà çà ïîëíîå çàêðûòèå êàçèíî --- +CheckSecretEnding PROC uses eax + cmp secretEndingSeen, 0 + jne secret_ending_done + mov eax, achievements + and eax, 3FFFFh + cmp eax, 3FFFFh + jne secret_ending_done + mov eax, shopBackOwned + and eax, 1FFFh + cmp eax, 1FFFh + jne secret_ending_done + cmp bankroll, 1000000 + jb secret_ending_done + mov secretEndingSeen, 1 + call SaveGame + call ClearView + call PlayVictorySound + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET secretEndingTitle + invoke PrintStr, OFFSET secretEndingArt1 + invoke Sleep, 500 + invoke PrintStr, OFFSET secretEndingArt2 + call ResetColor + invoke PrintStr, OFFSET secretEndingBody + call Pause +secret_ending_done: + ret +CheckSecretEnding ENDP + +; --- GameSettings: íàñòðîéêè çâóêà è èãðîâûõ îïöèé --- +GameSettings PROC +settings_loop: + call ClearView + invoke PrintTitleColor, OFFSET settingsTitle + invoke PrintStr, OFFSET settingsVolumeText + invoke PrintUInt, settingsVolume + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET settingsVolumeHint + call PrintVIPStatus + + invoke PrintStr, OFFSET settingsModeText + cmp settingsLowSpec, 0 + je settings_print_cinematic + cmp settingsLowSpec, 1 + je settings_print_adaptive + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET settingsStableText + call ResetColor + jmp settings_print_intro +settings_print_cinematic: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET settingsCinematicText + call ResetColor + jmp settings_print_intro +settings_print_adaptive: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET settingsAdaptiveText + call ResetColor +settings_print_intro: + invoke PrintStr, OFFSET settingsIntroText + cmp settingsIntroEnabled, 1 + je settings_intro_on + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET settingsOffText + call ResetColor + jmp settings_print_dbd +settings_intro_on: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET settingsOnText + call ResetColor +settings_print_dbd: + invoke PrintStr, OFFSET settingsDbdText + cmp settingsDbdWindowEnabled, 1 + je settings_dbd_on + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET settingsOffText + call ResetColor + jmp settings_show_menu +settings_dbd_on: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET settingsOnText + call ResetColor +settings_show_menu: + invoke PrintStr, OFFSET settingsAnimHintText + invoke PrintStr, OFFSET settingsMenuText + call ReadUInt + cmp eax, 0 + je settings_exit + cmp eax, 1 + je settings_quieter + cmp eax, 2 + je settings_louder + cmp eax, 3 + je settings_toggle_low + cmp eax, 4 + je settings_toggle_intro + cmp eax, 5 + je settings_toggle_dbd + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp settings_loop +settings_quieter: + cmp settingsVolume, 0 + jbe settings_apply + dec settingsVolume + jmp settings_apply +settings_louder: + cmp settingsVolume, 10 + jae settings_apply + inc settingsVolume + jmp settings_apply +settings_toggle_low: + inc settingsLowSpec + cmp settingsLowSpec, 3 + jb settings_apply + mov settingsLowSpec, 0 + jmp settings_apply +settings_toggle_intro: + mov eax, settingsIntroEnabled + xor eax, 1 + mov settingsIntroEnabled, eax + jmp settings_apply +settings_toggle_dbd: + mov eax, settingsDbdWindowEnabled + xor eax, 1 + mov settingsDbdWindowEnabled, eax +settings_apply: + call ApplySoundVolume + call SaveGame + jmp settings_loop +settings_exit: + ret +GameSettings ENDP +; --- CalcStressLevel: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- +CalcStressLevel PROC uses eax ebx edx + mov stressLevel, 0 + cmp bankroll, 0 + je calc_stress_done + cmp currentBet, 0 + je calc_stress_done + mov eax, currentBet + mov ebx, 100 + mul ebx + mov ebx, bankroll + xor edx, edx + div ebx + cmp eax, 75 + jae calc_stress_max + cmp eax, 50 + jae calc_stress_high + cmp eax, 25 + jae calc_stress_mid + jmp calc_stress_done +calc_stress_mid: + mov stressLevel, 1 + jmp calc_stress_done +calc_stress_high: + mov stressLevel, 2 + jmp calc_stress_done +calc_stress_max: + mov stressLevel, 3 +calc_stress_done: + ret +CalcStressLevel ENDP + +; --- PrintStressLevel: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintStressLevel PROC + invoke PrintStr, OFFSET stressText + mov eax, stressLevel + cmp eax, 0 + je print_stress_low + cmp eax, 1 + je print_stress_mid + cmp eax, 2 + je print_stress_high + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET stressMaxText + call ResetColor + ret +print_stress_low: + invoke PrintStr, OFFSET stressLowText + ret +print_stress_mid: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET stressMidText + call ResetColor + ret +print_stress_high: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET stressHighText + call ResetColor + ret +PrintStressLevel ENDP + +; --- PrintSuspicion: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintSuspicion PROC + invoke PrintStr, OFFSET suspicionText + mov eax, casinoSuspicion + cmp eax, 44 + jae print_suspicion_hunt + cmp eax, 25 + jae print_suspicion_watch + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET suspicionCalmText + call ResetColor + ret +print_suspicion_watch: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET suspicionWatchText + call ResetColor + ret +print_suspicion_hunt: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET suspicionHuntText + call ResetColor + ret +PrintSuspicion ENDP + +; --- AddSuspicion: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- +AddSuspicion PROC uses eax ebx, amount:DWORD + mov eax, casinoSuspicion + add eax, amount + cmp eax, 100 + jbe add_suspicion_store + mov eax, 100 +add_suspicion_store: + mov casinoSuspicion, eax + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET suspicionUpText + call ResetColor + call SaveGame + ret +AddSuspicion ENDP + +; --- CheckCasinoHeat: ñëóæåáíûé áëîê èãðîâîé ëîãèêè --- +CheckCasinoHeat PROC uses eax ebx + mov eax, casinoSuspicion + cmp eax, 44 + jb casino_heat_done + sub eax, 40 + mov ebx, eax + invoke RandomRange, 100 + cmp eax, ebx + jae casino_heat_done + mov eax, currentBet + shr eax, 1 + cmp eax, 1 + jae casino_heat_have_fine + mov eax, 1 +casino_heat_have_fine: + cmp bankroll, eax + jae casino_heat_sub + mov eax, bankroll +casino_heat_sub: + sub bankroll, eax + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET suspicionFineText + invoke PrintUInt, eax + invoke PrintStr, OFFSET nl + call ResetColor + call PrintBank + call SaveGame +casino_heat_done: + ret +CheckCasinoHeat ENDP +; --- ShowStats: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- +ShowStats PROC + invoke PrintStr, OFFSET difficultyNowText + call PrintDifficultyName + call PrintBankLevel + invoke PrintStr, OFFSET statsGamesText + invoke PrintUInt, gamesPlayed + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET statsWinsText + invoke PrintUInt, gamesWon + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET statsLossText + invoke PrintUInt, gamesLost + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET statsDrawText + invoke PrintUInt, gamesDrawn + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET statsBestWinText + invoke PrintUInt, bestWin + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET statsBestLossText + invoke PrintUInt, bestLoss + invoke PrintStr, OFFSET nl + call PrintSuspicion + ret +ShowStats ENDP + + +; --- WriteAchievementPopup: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- +WriteAchievementPopup PROC uses eax ecx esi, pName:DWORD + mov esi, pName + xor ecx, ecx +achievement_len_loop: + mov al, [esi + ecx] + cmp al, 0 + je achievement_len_ready + cmp al, 13 + je achievement_len_ready + cmp ecx, 64 + jae achievement_len_ready + inc ecx + jmp achievement_len_loop +achievement_len_ready: + invoke CreateFileA, OFFSET achievementFileName, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + je achievement_popup_run + mov achievementHandle, eax + invoke WriteFile, achievementHandle, pName, ecx, ADDR charsWritten, 0 + invoke CloseHandle, achievementHandle +achievement_popup_run: + invoke WinExec, OFFSET achievementCmd, 1 + ret +WriteAchievementPopup ENDP + +; --- UnlockAchievement: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- +UnlockAchievement PROC uses eax ebx, maskValue:DWORD, pName:DWORD + mov eax, achievements + mov ebx, maskValue + test eax, ebx + jz unlock_achievement_new + ret +unlock_achievement_new: + or eax, ebx + mov achievements, eax + call SaveGame + invoke WriteAchievementPopup, pName + ret +UnlockAchievement ENDP + +; --- PrintAchievementLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintAchievementLine PROC uses eax ebx, maskValue:DWORD, pName:DWORD + mov eax, achievements + mov ebx, maskValue + test eax, ebx + jz print_achievement_locked + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET achDoneText + call ResetColor + jmp print_achievement_name +print_achievement_locked: + invoke SetColor, COLOR_BACK_CARD + invoke PrintStr, OFFSET achTodoText + call ResetColor +print_achievement_name: + invoke PrintStr, pName + ret +PrintAchievementLine ENDP +; --- ShowWelcome: ñëóæåáíûé áëîê èãðîâîé ëîãèêè --- +ShowWelcome PROC + call ClearView + invoke PrintTitleColor, OFFSET titleText + invoke PrintStr, OFFSET welcomeText + call PrintGoal + cmp bankRecovered, 0 + je welcome_check_tampered + invoke PrintStr, OFFSET bankRecoveredText +welcome_check_tampered: + cmp saveTampered, 0 + je welcome_bank_normal + invoke PrintStr, OFFSET saveTamperedText +welcome_bank_normal: + call PrintBank + call ShowStats + call Pause + ret +ShowWelcome ENDP + +; --- SelectDifficulty: ñëóæåáíûé áëîê èãðîâîé ëîãèêè --- +SelectDifficulty PROC +select_difficulty_again: + call ClearView + invoke PrintTitleColor, OFFSET titleText + invoke PrintStr, OFFSET difficultyText + call ReadKey + cmp al, '1' + je set_easy_ai + cmp al, '2' + je set_normal_ai + cmp al, '3' + je set_hard_ai + jmp select_difficulty_again +set_easy_ai: + mov aiDifficulty, 1 + jmp difficulty_selected +set_normal_ai: + mov aiDifficulty, 2 + jmp difficulty_selected +set_hard_ai: + mov aiDifficulty, 3 +difficulty_selected: + call SaveGame + ret +SelectDifficulty ENDP + +; --- ShowPokerChips: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +ShowPokerChips PROC uses eax ebx edx + invoke PrintStr, OFFSET pokerChipTitle + + mov eax, currentBet + mov ebx, 5000 + xor edx, edx + div ebx + add eax, 5 + cmp eax, 10 + jbe poker_chips_count_ready + mov eax, 10 +poker_chips_count_ready: + mov rowIndex, eax + +poker_chips_loop: + cmp rowIndex, 0 + je poker_chips_done + mov eax, rowIndex + cmp eax, 7 + ja poker_chips_high + cmp eax, 4 + ja poker_chips_mid + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET pokerChipLow + jmp poker_chips_next +poker_chips_mid: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET pokerChipMid + jmp poker_chips_next +poker_chips_high: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET pokerChipHigh +poker_chips_next: + dec rowIndex + jmp poker_chips_loop + +poker_chips_done: + call ResetColor + ret +ShowPokerChips ENDP + +; --- ShowPokerMoney: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +ShowPokerMoney PROC uses eax ebx + call ShowPokerChips + invoke PrintStr, OFFSET pokerPotText + mov eax, currentBet + mov ebx, 2 + mul ebx + invoke PrintUInt, eax + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET pokerBetText + invoke PrintUInt, currentBet + invoke PrintStr, OFFSET nl + ret +ShowPokerMoney ENDP + +; --- PromptPokerRaise: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +PromptPokerRaise PROC uses ebx + call PrintBank + invoke PrintStr, OFFSET pokerRaiseAskText + call ReadUInt + cmp eax, 0 + je raise_bad + mov pokerRaiseAmount, eax + mov ebx, currentBet + add ebx, eax + cmp ebx, bankroll + ja raise_bad + mov currentBet, ebx + invoke PrintStr, OFFSET pokerRaisedText + invoke PrintUInt, currentBet + invoke PrintStr, OFFSET nl + mov eax, 1 + ret +raise_bad: + invoke PrintStr, OFFSET pokerBadRaiseText + xor eax, eax + ret +PromptPokerRaise ENDP + +; --- PaySlotMultiplier: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- +PaySlotMultiplier PROC uses eax ebx edx, multiplier:DWORD + mov lastGameResult, 1 + mov eax, currentBet + mov ebx, multiplier + mul ebx + mov pokerRaiseAmount, eax + add bankroll, eax + invoke PrintStr, OFFSET slotPayoutText + invoke PrintUInt, multiplier + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET moneyWinText + invoke PrintUInt, pokerRaiseAmount + invoke PrintStr, OFFSET nl + invoke RegisterWin, pokerRaiseAmount + invoke UnlockAchievement, 1, OFFSET achFirstWinName + call PrintBank + call PrintCroupierWin + cmp multiplier, 10 + jb slot_multiplier_no_ach + invoke UnlockAchievement, 4, OFFSET achJackpotName +slot_multiplier_no_ach: + call CheckVictory + ret +PaySlotMultiplier ENDP +; --- CheckBankrupt: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- +CheckBankrupt PROC + cmp bankroll, 0 + ja bankroll_ok + call PlayBankruptSound + invoke Sleep, 300 + invoke PrintStr, OFFSET casinoKickText + invoke PrintStr, OFFSET casinoExitText + call ReadAnyKey + invoke ExitProcess, 0 +bankroll_ok: + ret +CheckBankrupt ENDP +; --- CheckVictory: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- +CheckVictory PROC + mov eax, bankroll + cmp eax, targetBank + jb victory_not_yet + call PlayVictorySound + call ClearView + invoke PrintTitleColor, OFFSET titleText + invoke PrintStr, OFFSET victoryText + invoke PrintStr, OFFSET victoryReachedText + invoke PrintUInt, targetBank + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET victoryTailText + call PrintBank + +advance_victory_goal: + mov eax, bankroll + cmp eax, targetBank + jb victory_goal_ready + add targetBank, 50000 + jmp advance_victory_goal +victory_goal_ready: + call SaveGame + invoke UnlockAchievement, 40h, OFFSET achGoalName + invoke PrintStr, OFFSET nextGoalText + invoke PrintUInt, targetBank + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET victoryExitText + call CheckSecretEnding +victory_secret_checked: + call ReadAnyKey + ret +victory_not_yet: + call CheckSecretEnding + ret +CheckVictory ENDP + +; --- ShowStressPulse: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- +ShowStressPulse PROC uses eax ebx edx + cmp bankroll, 0 + je stress_pulse_done + mov eax, currentBet + cmp eax, 0 + je stress_pulse_done + mov ebx, 100 + mul ebx + mov ebx, bankroll + xor edx, edx + div ebx + cmp eax, 25 + jb stress_pulse_done + + invoke PrintStr, OFFSET pulseTitleText + cmp eax, 50 + jae stress_pulse_hot + invoke SetColor, COLOR_WARN + jmp stress_pulse_frames +stress_pulse_hot: + invoke SetColor, COLOR_BAD +stress_pulse_frames: + mov eax, stressLevel + inc eax + mov pulseCycles, eax +stress_pulse_cycle: + invoke PrintStr, OFFSET pulseFrame1 + invoke Sleep, 70 + invoke PrintStr, OFFSET pulseFrame2 + invoke Sleep, 70 + invoke PrintStr, OFFSET pulseFrame3 + invoke Sleep, 70 + invoke PrintStr, OFFSET pulseFrame4 + invoke Sleep, 70 + invoke PrintStr, OFFSET pulseFrame5 + invoke Sleep, 90 + dec pulseCycles + cmp pulseCycles, 0 + jne stress_pulse_cycle + call ResetColor +stress_pulse_done: + ret +ShowStressPulse ENDP + +; --- PromptBet: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- +PromptBet PROC +prompt_bet_again: + call CheckBankrupt + call PrintBank + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET betText + call ReadBetInput + push eax + call ResetColor + pop eax + cmp eax, 0FFFFFFFFh + je prompt_bet_again + cmp eax, 0FFFFFFFEh + je prompt_bet_again + cmp eax, 0FFFFFFFDh + je prompt_bet_again + cmp eax, 0 + jne bet_check_money + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET badBetText + call ResetColor + jmp prompt_bet_again + +bet_check_money: + cmp eax, bankroll + jbe bet_store + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET tooBigBetText + call ResetColor + jmp prompt_bet_again +bet_store: + mov currentBet, eax + call ApplyVIPTax + cmp currentBet, 10000 + jb bet_highroller_done + invoke UnlockAchievement, 8, OFFSET achHighRollerName +bet_highroller_done: + call DailyAddHighBet + invoke PrintStr, OFFSET betChosenText + invoke PrintMoney, currentBet + invoke PrintStr, OFFSET nl + call CalcStressLevel + call PrintStressLevel + call ShowStressPulse + invoke Sleep, 500 + ret +PromptBet ENDP + +; --- PayWin: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- +PayWin PROC + mov lastGameResult, 1 + mov eax, currentBet + add bankroll, eax + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET moneyWinText + invoke PrintUInt, currentBet + call ResetColor + invoke PrintStr, OFFSET nl + invoke RegisterWin, currentBet + invoke UnlockAchievement, 1, OFFSET achFirstWinName + call PrintBank + call PrintCroupierWin + call CheckVictory + ret +PayWin ENDP + +; --- TryCharmSave: òàëèñìàíû ñïàñàþò ñòàâêó, íî ó ñèëüíûõ åñòü öåíà --- +TryCharmSave PROC uses ebx ecx edx + cmp shopCharmLevel, 0 + jne charm_has_level + xor eax, eax + ret +charm_has_level: + cmp shopCharmUses, 0 + jne charm_has_uses + mov shopCharmLevel, 0 + xor eax, eax + ret +charm_has_uses: + mov ebx, shopCharmLevel + cmp ebx, 1 + je charm_chance_clover + cmp ebx, 2 + je charm_chance_bell + cmp ebx, 3 + je charm_chance_diamond + cmp ebx, 4 + je charm_chance_skull + cmp ebx, 5 + je charm_chance_web + cmp ebx, 6 + je charm_chance_bee + cmp ebx, 7 + je charm_chance_moon + cmp ebx, 8 + je charm_chance_crown + cmp ebx, 9 + je charm_chance_mirror + cmp ebx, 10 + je charm_chance_dice + cmp ebx, 11 + je charm_chance_blood + cmp ebx, 12 + je charm_chance_hourglass + cmp ebx, 13 + je charm_chance_horseshoe + cmp ebx, 14 + je charm_chance_joker + cmp ebx, 15 + je charm_chance_phoenix + cmp ebx, 16 + je charm_chance_compass + cmp ebx, 17 + je charm_chance_tooth + cmp ebx, 18 + je charm_chance_eye + cmp ebx, 19 + je charm_chance_key + cmp ebx, 20 + je charm_chance_candle + cmp ebx, 21 + je charm_chance_chip + cmp ebx, 22 + je charm_chance_snake + cmp ebx, 23 + je charm_chance_ace + cmp ebx, 24 + je charm_chance_devil + xor eax, eax + ret +charm_chance_clover: + mov ecx, 7 + jmp charm_roll +charm_chance_bell: + mov ecx, 14 + jmp charm_roll +charm_chance_diamond: + mov ecx, 21 + jmp charm_roll +charm_chance_skull: + mov ecx, 28 + jmp charm_roll +charm_chance_web: + mov ecx, 35 + jmp charm_roll +charm_chance_bee: + mov ecx, 12 + jmp charm_roll +charm_chance_moon: + mov ecx, 18 + jmp charm_roll +charm_chance_crown: + mov ecx, 24 + jmp charm_roll +charm_chance_mirror: + mov ecx, 16 + jmp charm_roll +charm_chance_dice: + mov ecx, 10 + jmp charm_roll +charm_chance_blood: + mov ecx, 40 + jmp charm_roll +charm_chance_hourglass: + mov ecx, 22 + jmp charm_roll +charm_chance_horseshoe: + mov ecx, 9 + jmp charm_roll +charm_chance_joker: + mov ecx, 33 + jmp charm_roll +charm_chance_phoenix: + mov ecx, 26 + jmp charm_roll +charm_chance_compass: + mov ecx, 19 + jmp charm_roll +charm_chance_tooth: + mov ecx, 15 + jmp charm_roll +charm_chance_eye: + mov ecx, 31 + jmp charm_roll +charm_chance_key: + mov ecx, 13 + jmp charm_roll +charm_chance_candle: + mov ecx, 38 + jmp charm_roll +charm_chance_chip: + mov ecx, 20 + jmp charm_roll +charm_chance_snake: + mov ecx, 29 + jmp charm_roll +charm_chance_ace: + mov ecx, 17 + jmp charm_roll +charm_chance_devil: + mov ecx, 50 +charm_roll: + invoke RandomRange, 100 + cmp eax, ecx + jb charm_save_hit + xor eax, eax + ret + +charm_save_hit: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopCharmSaveText + call ResetColor + dec shopCharmUses + + mov ebx, shopCharmLevel + cmp ebx, 2 + je charm_penalty_bell + cmp ebx, 3 + je charm_penalty_diamond + cmp ebx, 4 + je charm_penalty_skull + cmp ebx, 5 + je charm_penalty_web + cmp ebx, 7 + je charm_penalty_moon + cmp ebx, 8 + je charm_penalty_crown + cmp ebx, 9 + je charm_penalty_mirror + cmp ebx, 11 + je charm_penalty_blood + cmp ebx, 12 + je charm_penalty_hourglass + cmp ebx, 14 + je charm_penalty_joker + cmp ebx, 15 + je charm_penalty_phoenix + cmp ebx, 16 + je charm_penalty_compass + cmp ebx, 17 + je charm_penalty_tooth + cmp ebx, 18 + je charm_penalty_eye + cmp ebx, 20 + je charm_penalty_candle + cmp ebx, 22 + je charm_penalty_snake + cmp ebx, 23 + je charm_penalty_ace + cmp ebx, 24 + je charm_penalty_devil + jmp charm_penalty_done + +charm_penalty_bell: + invoke AddSuspicion, 4 + jmp charm_penalty_done +charm_penalty_diamond: + invoke AddSuspicion, 8 + jmp charm_penalty_done +charm_penalty_web: + invoke AddSuspicion, 20 + jmp charm_penalty_done +charm_penalty_moon: + invoke AddSuspicion, 8 + jmp charm_penalty_done +charm_penalty_crown: + invoke AddSuspicion, 12 + jmp charm_penalty_done +charm_penalty_mirror: + invoke AddSuspicion, 6 + jmp charm_penalty_done +charm_penalty_hourglass: + invoke AddSuspicion, 15 + jmp charm_penalty_done +charm_penalty_joker: + invoke AddSuspicion, 30 + jmp charm_penalty_done +charm_penalty_phoenix: + invoke AddSuspicion, 10 + jmp charm_penalty_done +charm_penalty_compass: + invoke AddSuspicion, 12 + jmp charm_penalty_done +charm_penalty_eye: + invoke AddSuspicion, 18 + jmp charm_penalty_done +charm_penalty_snake: + invoke AddSuspicion, 16 + jmp charm_penalty_done +charm_penalty_ace: + invoke AddSuspicion, 7 + jmp charm_penalty_done +charm_penalty_blood: + invoke AddSuspicion, 25 + mov ebx, 4 + jmp charm_take_fraction +charm_penalty_skull: + mov ebx, 2 + jmp charm_take_fraction +charm_penalty_tooth: + mov ebx, 5 + jmp charm_take_fraction +charm_penalty_candle: + invoke AddSuspicion, 35 + mov ebx, 3 + jmp charm_take_fraction +charm_penalty_devil: + invoke AddSuspicion, 45 + mov ebx, 2 +charm_take_fraction: + mov eax, currentBet + xor edx, edx + div ebx + cmp eax, 1 + jae charm_have_price + mov eax, 1 +charm_have_price: + cmp bankroll, eax + jae charm_sub_price + mov eax, bankroll +charm_sub_price: + sub bankroll, eax + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET charmPenaltyText + invoke PrintUInt, eax + invoke PrintStr, OFFSET nl + call ResetColor + +charm_penalty_done: + call RegisterDraw + invoke UnlockAchievement, 20h, OFFSET achCharmName + cmp shopCharmUses, 0 + jne charm_still_alive + mov shopCharmLevel, 0 + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET shopCharmBurnText + call ResetColor +charm_still_alive: + call SaveGame + call PrintBank + call PrintCroupierDraw + mov eax, 1 + ret +TryCharmSave ENDP + +; --- PayLose: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- +PayLose PROC + cmp cheatGodMode, 0 + jne pay_lose_cheat_win + cmp cheatLuckyWin, 0 + jne pay_lose_cheat_once + jmp pay_lose_normal +pay_lose_cheat_once: + mov cheatLuckyWin, 0 +pay_lose_cheat_win: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET cheatSavedText + call ResetColor + call PayWin + ret +pay_lose_normal: + call TryCharmSave + cmp eax, 1 + je pay_lose_charm_saved + mov eax, currentBet + cmp bankroll, eax + jae pay_lose_sub + mov bankroll, 0 + jmp pay_lose_done +pay_lose_sub: + sub bankroll, eax +pay_lose_done: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET moneyLoseText + invoke PrintUInt, currentBet + call ResetColor + invoke PrintStr, OFFSET nl + invoke RegisterLoss, currentBet + call PrintBank + call PrintCroupierLose + call CheckBankrupt +pay_lose_charm_saved: + ret +PayLose ENDP + +; --- PayDraw: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- +PayDraw PROC + mov lastGameResult, 3 + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET moneyDrawText + call ResetColor + call RegisterDraw + call PrintBank + call PrintCroupierDraw + ret +PayDraw ENDP + +; --- PaySlotPair: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- +PaySlotPair PROC + mov lastGameResult, 1 + mov eax, currentBet + add bankroll, eax + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET moneyWinText + invoke PrintUInt, currentBet + call ResetColor + invoke PrintStr, OFFSET nl + call PrintBank + ret +PaySlotPair ENDP + +; --- PaySlotJackpot: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- +PaySlotJackpot PROC uses ebx + mov lastGameResult, 1 + mov eax, currentBet + mov ebx, 5 + mul ebx + add bankroll, eax + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET moneyWinText + invoke PrintUInt, eax + call ResetColor + invoke PrintStr, OFFSET nl + call PrintBank + invoke UnlockAchievement, 4, OFFSET achJackpotName + ret +PaySlotJackpot ENDP + +; --- ConfigureConsoleSize: çàäàåò ñòàðòîâûé ðàçìåð îêíà êîíñîëè áåç ìàñøòàáèðîâàíèÿ ASCII --- +ConfigureConsoleSize PROC + invoke SetConsoleWindowInfo, hOut, 1, OFFSET consoleRectTiny + + invoke SetConsoleScreenBufferSize, hOut, 012C00A0h ; 160 x 300 buffer + cmp eax, 0 + je try_console_140 + invoke SetConsoleWindowInfo, hOut, 1, OFFSET consoleRect160 + cmp eax, 0 + jne console_size_done + +try_console_140: + invoke SetConsoleWindowInfo, hOut, 1, OFFSET consoleRectTiny + invoke SetConsoleScreenBufferSize, hOut, 012C008Ch ; 140 x 300 buffer + cmp eax, 0 + je try_console_120 + invoke SetConsoleWindowInfo, hOut, 1, OFFSET consoleRect140 + cmp eax, 0 + jne console_size_done + +try_console_120: + invoke SetConsoleWindowInfo, hOut, 1, OFFSET consoleRectTiny + invoke SetConsoleScreenBufferSize, hOut, 012C0078h ; 120 x 300 buffer + cmp eax, 0 + je console_size_done + invoke SetConsoleWindowInfo, hOut, 1, OFFSET consoleRect120 + +console_size_done: + ret +ConfigureConsoleSize ENDP +; --- HomeCursor: ñëóæåáíûå ôóíêöèè êîíñîëè è ñëó÷àéíûõ ÷èñåë --- +HomeCursor PROC + invoke SetConsoleCursorPosition, hOut, 0 + ret +HomeCursor ENDP + +; --- ClearView: ñëóæåáíûå ôóíêöèè êîíñîëè è ñëó÷àéíûõ ÷èñåë --- +ClearView PROC uses eax edx + LOCAL csbi[22]:BYTE + LOCAL cells:DWORD + + call ResetColor + invoke GetConsoleScreenBufferInfo, hOut, ADDR csbi + cmp eax, 0 + jne clear_console_buffer + invoke PrintStr, OFFSET clearLines + ret + +clear_console_buffer: + movzx eax, word ptr csbi[0] + movzx edx, word ptr csbi[2] + mul edx + mov cells, eax + invoke FillConsoleOutputCharacterA, hOut, 32, cells, 0, ADDR charsWritten + call HomeCursor + ret +ClearView ENDP + +; --- RandomRange: ñëóæåáíûå ôóíêöèè êîíñîëè è ñëó÷àéíûõ ÷èñåë --- +RandomRange PROC uses ecx edx, range:DWORD + mov eax, seed + imul eax, 214013 + add eax, 2531011 + mov seed, eax + shr eax, 16 + and eax, 7FFFh + xor edx, edx + mov ecx, range + div ecx + mov eax, edx + ret +RandomRange ENDP + +; --- ResetDeck: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +ResetDeck PROC uses ecx edi + mov ecx, 52 + mov edi, OFFSET deckUsed +reset_loop: + mov byte ptr [edi], 0 + inc edi + loop reset_loop + ret +ResetDeck ENDP + +; --- DrawCard: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +DrawCard PROC uses edi +draw_again: + invoke RandomRange, 52 + mov edi, OFFSET deckUsed + add edi, eax + cmp byte ptr [edi], 0 + jne draw_again + mov byte ptr [edi], 1 + ret +DrawCard ENDP +; --- CardValue21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +CardValue21 PROC uses ecx edx, card:DWORD + mov eax, card + xor edx, edx + mov ecx, 13 + div ecx + mov eax, edx + cmp eax, 8 + jbe numeric_card + cmp eax, 9 + je jack_card + cmp eax, 10 + je queen_card + cmp eax, 11 + je king_card + mov eax, 11 + ret +numeric_card: + add eax, 2 + ret +jack_card: + mov eax, 2 + ret +queen_card: + mov eax, 3 + ret +king_card: + mov eax, 4 + ret +CardValue21 ENDP + +; --- CardValueBJ: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +CardValueBJ PROC uses ecx edx, card:DWORD + mov eax, card + xor edx, edx + mov ecx, 13 + div ecx + mov eax, edx + cmp eax, 8 + jbe bj_numeric + cmp eax, 12 + je bj_ace + mov eax, 10 + ret +bj_numeric: + add eax, 2 + ret +bj_ace: + mov eax, 11 + ret +CardValueBJ ENDP + +; --- AdjustPlayerAces: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +AdjustPlayerAces PROC +adjust_player: + cmp playerTotal, 21 + jbe adjust_player_done + cmp playerAces, 0 + je adjust_player_done + sub playerTotal, 10 + dec playerAces + jmp adjust_player +adjust_player_done: + ret +AdjustPlayerAces ENDP + +; --- AdjustDealerAces: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +AdjustDealerAces PROC +adjust_dealer: + cmp dealerTotal, 21 + jbe adjust_dealer_done + cmp dealerAces, 0 + je adjust_dealer_done + sub dealerTotal, 10 + dec dealerAces + jmp adjust_dealer +adjust_dealer_done: + ret +AdjustDealerAces ENDP + +; --- PrintScore: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintScore PROC + invoke PrintStr, OFFSET yourScoreText + invoke PrintUInt, playerTotal + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET dealerScoreText + invoke PrintUInt, dealerTotal + invoke PrintStr, OFFSET nl + ret +PrintScore ENDP + +; --- PrintCard: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintCard PROC uses eax ebx ecx edx esi, card:DWORD + mov eax, card + xor edx, edx + mov ecx, 13 + div ecx + mov ebx, eax + mov esi, edx + + invoke PrintUtf8, OFFSET cardTop + invoke PrintUtf8, OFFSET cardSuitLeft + invoke PrintSuit, ebx + invoke PrintUtf8, OFFSET cardSuitRight + + cmp esi, 8 + jne one_rank + invoke PrintUtf8, OFFSET cardRankTenL + invoke PrintStr, ranks[esi * 4] + invoke PrintUtf8, OFFSET cardRankTenR + jmp rank_done +one_rank: + invoke PrintUtf8, OFFSET cardRankOneL + invoke PrintStr, ranks[esi * 4] + invoke PrintUtf8, OFFSET cardRankOneR +rank_done: + invoke PrintUtf8, OFFSET cardEmpty + invoke PrintUtf8, OFFSET cardEmpty + invoke PrintUtf8, OFFSET cardCenterL + invoke PrintSuit, ebx + invoke PrintUtf8, OFFSET cardCenterR + invoke PrintUtf8, OFFSET cardBottom + ret +PrintCard ENDP + +; --- AddPlayer21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +AddPlayer21 PROC uses eax ebx + call PlayCardSound + call DrawCard + mov ebx, eax + invoke PrintStr, OFFSET yourCardText + invoke PrintCard, ebx + invoke CardValue21, ebx + add playerTotal, eax + ret +AddPlayer21 ENDP + +; --- AddDealer21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +AddDealer21 PROC uses eax ebx + call PlayCardSound + call DrawCard + mov ebx, eax + invoke PrintStr, OFFSET dealerCardText + invoke PrintCard, ebx + invoke CardValue21, ebx + add dealerTotal, eax + ret +AddDealer21 ENDP + +; --- Reset21Hands: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +Reset21Hands PROC + mov playerTotal, 0 + mov dealerTotal, 0 + mov playerCnt21, 0 + mov aiCnt21, 0 + mov revealAI21, 0 + ret +Reset21Hands ENDP + +; --- DrawPlayer21Hand: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +DrawPlayer21Hand PROC uses ebx ecx + cmp playerCnt21, 10 + jae draw_player21_done + call PlayCardSound + call DrawCard + mov ebx, playerCnt21 + mov playerHand21[ebx * 4], eax + inc playerCnt21 +draw_player21_done: + ret +DrawPlayer21Hand ENDP + +; --- DrawAI21Hand: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +DrawAI21Hand PROC uses ebx ecx + cmp aiCnt21, 10 + jae draw_ai21_done + call PlayCardSound + call DrawCard + mov ebx, aiCnt21 + mov aiHand21[ebx * 4], eax + inc aiCnt21 +draw_ai21_done: + ret +DrawAI21Hand ENDP + +; --- PrintHandTop: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintHandTop PROC uses eax, count:DWORD + mov rowIndex, 0 +top_loop: + mov eax, rowIndex + cmp eax, count + jae top_done + invoke PrintUtf8, OFFSET cardTopSeg + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp top_loop +top_done: + invoke PrintStr, OFFSET nl + ret +PrintHandTop ENDP + +; --- PrintHandBottom: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintHandBottom PROC uses eax, count:DWORD + mov rowIndex, 0 +bottom_loop: + mov eax, rowIndex + cmp eax, count + jae bottom_done + invoke PrintUtf8, OFFSET cardBottomSeg + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp bottom_loop +bottom_done: + invoke PrintStr, OFFSET nl + ret +PrintHandBottom ENDP + +; --- PrintHandBlankLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintHandBlankLine PROC uses eax, count:DWORD, reveal:DWORD + mov rowIndex, 0 +blank_loop: + mov eax, rowIndex + cmp eax, count + jae blank_done + cmp reveal, 0 + je blank_hidden + invoke PrintUtf8, OFFSET cardEmptySeg + jmp blank_next +blank_hidden: + call SetCardBackColor + invoke PrintCardBackSegLine, 4 + call ResetColor +blank_next: + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp blank_loop +blank_done: + invoke PrintStr, OFFSET nl + ret +PrintHandBlankLine ENDP + +; --- PrintHandSuitLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintHandSuitLine PROC uses eax ebx ecx edx, pHand:DWORD, count:DWORD, reveal:DWORD + LOCAL suitIndex:DWORD + + mov rowIndex, 0 +suit_loop: + mov eax, rowIndex + cmp eax, count + jae suit_done + cmp reveal, 0 + je suit_hidden + + mov ebx, pHand + mov eax, [ebx + eax * 4] + xor edx, edx + mov ecx, 13 + div ecx + mov suitIndex, eax + + invoke PrintUtf8, OFFSET cardSuitLeft + mov eax, suitIndex + invoke PrintSuit, eax + invoke PrintUtf8, OFFSET cardSuitRightSeg + jmp suit_next +suit_hidden: + call SetCardBackColor + invoke PrintCardBackSegLine, 1 + call ResetColor +suit_next: + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp suit_loop +suit_done: + invoke PrintStr, OFFSET nl + ret +PrintHandSuitLine ENDP + +; --- PrintHandRankLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintHandRankLine PROC uses eax ebx ecx edx, pHand:DWORD, count:DWORD, reveal:DWORD + LOCAL rankIndex:DWORD + + mov rowIndex, 0 +rank_loop_row: + mov eax, rowIndex + cmp eax, count + jae rank_done_row + cmp reveal, 0 + je rank_hidden + + mov ebx, pHand + mov eax, [ebx + eax * 4] + xor edx, edx + mov ecx, 13 + div ecx + mov rankIndex, edx + + cmp edx, 8 + jne rank_one_char + invoke PrintUtf8, OFFSET cardRankTenL + mov eax, rankIndex + invoke PrintStr, ranks[eax * 4] + invoke PrintUtf8, OFFSET cardRankTenRSeg + jmp rank_next +rank_one_char: + invoke PrintUtf8, OFFSET cardRankOneL + mov eax, rankIndex + invoke PrintStr, ranks[eax * 4] + invoke PrintUtf8, OFFSET cardRankOneRSeg + jmp rank_next +rank_hidden: + call SetCardBackColor + invoke PrintCardBackSegLine, 2 + call ResetColor +rank_next: + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp rank_loop_row +rank_done_row: + invoke PrintStr, OFFSET nl + ret +PrintHandRankLine ENDP + +; --- PrintHandCenterLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintHandCenterLine PROC uses eax ebx ecx edx, pHand:DWORD, count:DWORD, reveal:DWORD + LOCAL suitIndex:DWORD + + mov rowIndex, 0 +center_loop: + mov eax, rowIndex + cmp eax, count + jae center_done + cmp reveal, 0 + je center_hidden + + mov ebx, pHand + mov eax, [ebx + eax * 4] + xor edx, edx + mov ecx, 13 + div ecx + mov suitIndex, eax + + invoke PrintUtf8, OFFSET cardCenterL + mov eax, suitIndex + invoke PrintSuit, eax + invoke PrintUtf8, OFFSET cardCenterRSeg + jmp center_next +center_hidden: + call SetCardBackColor + invoke PrintCardBackSegLine, 5 + call ResetColor +center_next: + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp center_loop +center_done: + invoke PrintStr, OFFSET nl + ret +PrintHandCenterLine ENDP + +; --- PrintHandRow21: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintHandRow21 PROC pHand:DWORD, count:DWORD, reveal:DWORD + invoke PrintHandTop, count + invoke PrintHandSuitLine, pHand, count, reveal + invoke PrintHandRankLine, pHand, count, reveal + invoke PrintHandBlankLine, count, reveal + invoke PrintHandBlankLine, count, reveal + invoke PrintHandCenterLine, pHand, count, reveal + invoke PrintHandBottom, count + ret +PrintHandRow21 ENDP + +; --- PrintCommunitySuitLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintCommunitySuitLine PROC uses eax ebx ecx edx + LOCAL suitIndex:DWORD + + mov rowIndex, 0 +community_suit_loop: + mov eax, rowIndex + cmp eax, 5 + jae community_suit_done + cmp eax, communityCnt + jae community_suit_hidden + + mov eax, communityHand[eax * 4] + xor edx, edx + mov ecx, 13 + div ecx + mov suitIndex, eax + invoke PrintUtf8, OFFSET cardSuitLeft + mov eax, suitIndex + invoke PrintSuit, eax + invoke PrintUtf8, OFFSET cardSuitRightSeg + jmp community_suit_next +community_suit_hidden: + call SetCardBackColor + invoke PrintCardBackSegLine, 1 + call ResetColor +community_suit_next: + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp community_suit_loop +community_suit_done: + invoke PrintStr, OFFSET nl + ret +PrintCommunitySuitLine ENDP + +; --- PrintCommunityRankLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintCommunityRankLine PROC uses eax ecx edx + LOCAL rankIndex:DWORD + + mov rowIndex, 0 +community_rank_loop: + mov eax, rowIndex + cmp eax, 5 + jae community_rank_done + cmp eax, communityCnt + jae community_rank_hidden + + mov eax, communityHand[eax * 4] + xor edx, edx + mov ecx, 13 + div ecx + mov rankIndex, edx + cmp edx, 8 + jne community_rank_one + invoke PrintUtf8, OFFSET cardRankTenL + mov eax, rankIndex + invoke PrintStr, ranks[eax * 4] + invoke PrintUtf8, OFFSET cardRankTenRSeg + jmp community_rank_next +community_rank_one: + invoke PrintUtf8, OFFSET cardRankOneL + mov eax, rankIndex + invoke PrintStr, ranks[eax * 4] + invoke PrintUtf8, OFFSET cardRankOneRSeg + jmp community_rank_next +community_rank_hidden: + call SetCardBackColor + invoke PrintCardBackSegLine, 2 + call ResetColor +community_rank_next: + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp community_rank_loop +community_rank_done: + invoke PrintStr, OFFSET nl + ret +PrintCommunityRankLine ENDP + +; --- PrintCommunityBlankLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintCommunityBlankLine PROC uses eax + mov rowIndex, 0 +community_blank_loop: + mov eax, rowIndex + cmp eax, 5 + jae community_blank_done + cmp eax, communityCnt + jae community_blank_hidden + invoke PrintUtf8, OFFSET cardEmptySeg + jmp community_blank_next +community_blank_hidden: + call SetCardBackColor + invoke PrintCardBackSegLine, 4 + call ResetColor +community_blank_next: + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp community_blank_loop +community_blank_done: + invoke PrintStr, OFFSET nl + ret +PrintCommunityBlankLine ENDP + +; --- PrintCommunityCenterLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintCommunityCenterLine PROC uses eax ecx edx + LOCAL suitIndex:DWORD + + mov rowIndex, 0 +community_center_loop: + mov eax, rowIndex + cmp eax, 5 + jae community_center_done + cmp eax, communityCnt + jae community_center_hidden + + mov eax, communityHand[eax * 4] + xor edx, edx + mov ecx, 13 + div ecx + mov suitIndex, eax + invoke PrintUtf8, OFFSET cardCenterL + mov eax, suitIndex + invoke PrintSuit, eax + invoke PrintUtf8, OFFSET cardCenterRSeg + jmp community_center_next +community_center_hidden: + call SetCardBackColor + invoke PrintCardBackSegLine, 5 + call ResetColor +community_center_next: + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp community_center_loop +community_center_done: + invoke PrintStr, OFFSET nl + ret +PrintCommunityCenterLine ENDP + +; --- PrintCommunityRow: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintCommunityRow PROC + invoke PrintHandTop, 5 + call PrintCommunitySuitLine + call PrintCommunityRankLine + call PrintCommunityBlankLine + call PrintCommunityBlankLine + call PrintCommunityCenterLine + invoke PrintHandBottom, 5 + ret +PrintCommunityRow ENDP + +; --- PrintFlipLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintFlipLine PROC uses eax, count:DWORD, pSegment:DWORD + mov rowIndex, 0 +flip_line_loop: + mov eax, rowIndex + cmp eax, count + jae flip_line_done + invoke PrintUtf8, pSegment + invoke PrintUtf8, OFFSET cardGap + inc rowIndex + jmp flip_line_loop +flip_line_done: + invoke PrintStr, OFFSET nl + ret +PrintFlipLine ENDP + +; --- PrintFlipCards: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintFlipCards PROC count:DWORD, pSegment:DWORD + invoke PrintHandTop, count + invoke PrintFlipLine, count, pSegment + invoke PrintFlipLine, count, pSegment + invoke PrintFlipLine, count, pSegment + invoke PrintFlipLine, count, pSegment + invoke PrintFlipLine, count, pSegment + invoke PrintHandBottom, count + ret +PrintFlipCards ENDP + +; --- ShowRevealFrame21: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +ShowRevealFrame21 PROC pSegment:DWORD + call ClearView + invoke PrintTitleColor, OFFSET twentyOneTitle + invoke PrintStr, OFFSET revealText + invoke PrintStr, OFFSET aiCardsText + invoke PrintFlipCards, aiCnt21, pSegment + invoke PrintStr, OFFSET playerCardsText + invoke PrintHandRow21, OFFSET playerHand21, playerCnt21, 1 + call CalcPlayerScore21 + invoke PrintStr, OFFSET yourScoreText + invoke PrintUInt, playerTotal + invoke PrintStr, OFFSET nl + ret +ShowRevealFrame21 ENDP + +; --- AnimateReveal21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +AnimateReveal21 PROC + call PlayCardSound + invoke ShowRevealFrame21, OFFSET cardBackSeg + invoke Sleep, FLIP_DELAY + invoke ShowRevealFrame21, OFFSET cardFlipLeft + invoke Sleep, FLIP_DELAY + invoke ShowRevealFrame21, OFFSET cardFlipMid + invoke Sleep, FLIP_DELAY + invoke ShowRevealFrame21, OFFSET cardFlipRight + invoke Sleep, FLIP_DELAY + mov revealAI21, 1 + call ClearView + invoke PrintTitleColor, OFFSET twentyOneTitle + call ShowAllCards21 + invoke Sleep, FLIP_FINAL_DELAY + ret +AnimateReveal21 ENDP + +; --- CalcPlayerScore21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +CalcPlayerScore21 PROC uses eax ebx + mov playerTotal, 0 + mov rowIndex, 0 +calc_player21_loop: + mov eax, rowIndex + cmp eax, playerCnt21 + jae calc_player21_done + mov ebx, playerHand21[eax * 4] + invoke CardValue21, ebx + add playerTotal, eax + inc rowIndex + jmp calc_player21_loop +calc_player21_done: + ret +CalcPlayerScore21 ENDP + +; --- CalcAIScore21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +CalcAIScore21 PROC uses eax ebx + mov dealerTotal, 0 + mov rowIndex, 0 +calc_ai21_loop: + mov eax, rowIndex + cmp eax, aiCnt21 + jae calc_ai21_done + mov ebx, aiHand21[eax * 4] + invoke CardValue21, ebx + add dealerTotal, eax + inc rowIndex + jmp calc_ai21_loop +calc_ai21_done: + ret +CalcAIScore21 ENDP + +; --- ShowAllCards21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +ShowAllCards21 PROC + cmp revealAI21, 0 + jne show_ai_cards + invoke PrintStr, OFFSET aiThinkText +show_ai_cards: + invoke PrintStr, OFFSET aiCardsText + invoke PrintHandRow21, OFFSET aiHand21, aiCnt21, revealAI21 + invoke PrintStr, OFFSET playerCardsText + invoke PrintHandRow21, OFFSET playerHand21, playerCnt21, 1 + + call CalcPlayerScore21 + call CalcAIScore21 + invoke PrintStr, OFFSET yourScoreText + invoke PrintUInt, playerTotal + invoke PrintStr, OFFSET nl + cmp revealAI21, 0 + je show_cards_done + invoke PrintStr, OFFSET aiScoreText + invoke PrintUInt, dealerTotal + invoke PrintStr, OFFSET nl +show_cards_done: + ret +ShowAllCards21 ENDP +; --- PeekUnusedCard: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +PeekUnusedCard PROC uses edi +peek_unused_again: + invoke RandomRange, 52 + mov edi, OFFSET deckUsed + add edi, eax + cmp byte ptr [edi], 0 + jne peek_unused_again + ret +PeekUnusedCard ENDP + +; --- CheatPeek21: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- +CheatPeek21 PROC uses eax ebx + invoke PrintStr, OFFSET cheatPeekText + call PeekUnusedCard + mov ebx, eax + invoke PrintCard, ebx + invoke AddSuspicion, 12 + call CheckCasinoHeat + call Pause + ret +CheatPeek21 ENDP + +; --- CheatSwap21: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- +CheatSwap21 PROC uses eax ebx + cmp playerCnt21, 0 + je cheat_swap21_none + call DrawCard + mov ebx, playerCnt21 + dec ebx + mov playerHand21[ebx * 4], eax + call CalcPlayerScore21 + invoke PrintStr, OFFSET cheatSwapText + invoke AddSuspicion, 18 + call CheckCasinoHeat + call Pause + ret +cheat_swap21_none: + invoke PrintStr, OFFSET cheatNoTargetText + call Pause + ret +CheatSwap21 ENDP + +; --- CheatPeekPoker: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- +CheatPeekPoker PROC uses eax ebx + mov ebx, communityCnt + cmp ebx, 5 + jb cheat_peek_poker_table + invoke PrintStr, OFFSET cheatPeekText + mov ebx, 0 + mov eax, aiHand21[ebx * 4] + invoke PrintCard, eax + jmp cheat_peek_poker_done +cheat_peek_poker_table: + invoke PrintStr, OFFSET cheatPeekText + mov eax, communityHand[ebx * 4] + invoke PrintCard, eax +cheat_peek_poker_done: + invoke AddSuspicion, 12 + call CheckCasinoHeat + call Pause + ret +CheatPeekPoker ENDP + +; --- CheatSwapPoker: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- +CheatSwapPoker PROC uses eax + cmp playerCnt21, 0 + je cheat_swap_poker_none + call DrawCard + mov DWORD PTR playerHand21[0], eax + invoke PrintStr, OFFSET cheatSwapText + invoke AddSuspicion, 18 + call CheckCasinoHeat + call Pause + ret +cheat_swap_poker_none: + invoke PrintStr, OFFSET cheatNoTargetText + call Pause + ret +CheatSwapPoker ENDP + + +; --- CountDanger21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +CountDanger21 PROC uses eax ebx esi + call CalcAIScore21 + mov dangerLvl21, 0 + mov cardsLeft21, 0 + mov rowIndex, 0 +danger_loop: + mov eax, rowIndex + cmp eax, 52 + jae danger_done + mov esi, OFFSET deckUsed + cmp byte ptr [esi + eax], 0 + jne danger_next + + inc cardsLeft21 + invoke CardValue21, rowIndex + mov ebx, dealerTotal + add ebx, eax + cmp ebx, 21 + jbe danger_next + inc dangerLvl21 +danger_next: + inc rowIndex + jmp danger_loop +danger_done: + ret +CountDanger21 ENDP + +; --- FinalScreen21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +FinalScreen21 PROC + call ClearView + mov revealAI21, 1 + call ShowAllCards21 + + mov eax, playerTotal + mov ebx, dealerTotal + cmp eax, 21 + ja final_21_lose + cmp ebx, 21 + ja final_21_win + cmp eax, ebx + ja final_21_win + jb final_21_lose + call PrintDrawEvent + call PayDraw + ret +final_21_win: + call PrintWinEvent + call PayWin + ret +final_21_lose: + call PrintLoseEvent + call PayLose + ret +FinalScreen21 ENDP + +; --- ResetPokerHands: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +ResetPokerHands PROC + mov playerCnt21, 0 + mov aiCnt21, 0 + mov communityCnt, 0 + mov revealAI21, 0 + ret +ResetPokerHands ENDP + +; --- DrawCommunityPoker: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +DrawCommunityPoker PROC uses ebx ecx + cmp communityCnt, 5 + jae draw_community_done + call PlayCardSound + call DrawCard + mov ebx, communityCnt + mov communityHand[ebx * 4], eax + inc communityCnt +draw_community_done: + ret +DrawCommunityPoker ENDP + +; --- DealPokerHands: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +DealPokerHands PROC uses ecx + mov ecx, 2 +deal_poker_hands_loop: + call DrawPlayer21Hand + call DrawAI21Hand + loop deal_poker_hands_loop + + mov ecx, 5 +deal_poker_table_loop: + call DrawCommunityPoker + loop deal_poker_table_loop + mov communityCnt, 3 + ret +DealPokerHands ENDP + +; --- ShowPokerTable: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +ShowPokerTable PROC + invoke PrintStr, OFFSET aiCardsText + invoke PrintHandRow21, OFFSET aiHand21, aiCnt21, revealAI21 + invoke PrintStr, OFFSET pokerTableText + call PrintCommunityRow + invoke PrintStr, OFFSET playerCardsText + invoke PrintHandRow21, OFFSET playerHand21, playerCnt21, 1 + ret +ShowPokerTable ENDP + +; --- ShowPokerRevealFrame: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +ShowPokerRevealFrame PROC pSegment:DWORD + call ClearView + invoke PrintTitleColor, OFFSET pokerTitle + invoke PrintStr, OFFSET pokerRevealText + invoke PrintStr, OFFSET aiCardsText + invoke PrintFlipCards, aiCnt21, pSegment + invoke PrintStr, OFFSET pokerTableText + call PrintCommunityRow + invoke PrintStr, OFFSET playerCardsText + invoke PrintHandRow21, OFFSET playerHand21, playerCnt21, 1 + ret +ShowPokerRevealFrame ENDP + +; --- AnimateRevealPoker: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +AnimateRevealPoker PROC + call PlayCardSound + invoke ShowPokerRevealFrame, OFFSET cardBackSeg + invoke Sleep, FLIP_DELAY + invoke ShowPokerRevealFrame, OFFSET cardFlipLeft + invoke Sleep, FLIP_DELAY + invoke ShowPokerRevealFrame, OFFSET cardFlipMid + invoke Sleep, FLIP_DELAY + invoke ShowPokerRevealFrame, OFFSET cardFlipRight + invoke Sleep, FLIP_DELAY + mov revealAI21, 1 + call ClearView + invoke PrintTitleColor, OFFSET pokerTitle + call ShowPokerTable + invoke Sleep, FLIP_FINAL_DELAY + ret +AnimateRevealPoker ENDP + +; --- ClearPokerCounts: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +ClearPokerCounts PROC uses ecx edi + mov ecx, 13 + mov edi, OFFSET rankCounts +clear_rank_counts: + mov byte ptr [edi], 0 + inc edi + loop clear_rank_counts + + mov ecx, 4 + mov edi, OFFSET suitCounts +clear_suit_counts: + mov byte ptr [edi], 0 + inc edi + loop clear_suit_counts + ret +ClearPokerCounts ENDP + +; --- EvaluatePokerN: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +EvaluatePokerN PROC uses ebx ecx edx esi edi, pHand:DWORD, cardCount:DWORD + call ClearPokerCounts + mov pokerStraight, 0 + mov pokerFlush, 0 + mov pokerHigh, 0 + mov pokerFour, 0FFFFFFFFh + mov pokerTrip, 0FFFFFFFFh + mov pokerPairHigh, 0FFFFFFFFh + mov pokerPairLow, 0FFFFFFFFh + + mov esi, pHand + mov ecx, cardCount +count_poker_cards: + mov eax, [esi] + xor edx, edx + mov ebx, 13 + div ebx + inc byte ptr suitCounts[eax] + inc byte ptr rankCounts[edx] + add esi, 4 + loop count_poker_cards + + mov ecx, 4 + xor ebx, ebx +check_flush_loop: + cmp byte ptr suitCounts[ebx], 5 + jb next_flush_suit + mov pokerFlush, 1 +next_flush_suit: + inc ebx + loop check_flush_loop + + mov ecx, 13 + mov ebx, 12 +find_high_card: + cmp byte ptr rankCounts[ebx], 0 + jne high_card_found + dec ebx + loop find_high_card + jmp check_wheel_straight +high_card_found: + mov pokerHigh, ebx + +check_wheel_straight: + cmp byte ptr rankCounts[12], 0 + je check_normal_straight + cmp byte ptr rankCounts[0], 0 + je check_normal_straight + cmp byte ptr rankCounts[1], 0 + je check_normal_straight + cmp byte ptr rankCounts[2], 0 + je check_normal_straight + cmp byte ptr rankCounts[3], 0 + je check_normal_straight + mov pokerStraight, 1 + mov pokerHigh, 3 + jmp scan_duplicates + +check_normal_straight: + mov ebx, 12 +normal_straight_loop: + cmp ebx, 4 + jb scan_duplicates + cmp byte ptr rankCounts[ebx], 0 + je normal_straight_next + mov eax, ebx + dec eax + cmp byte ptr rankCounts[eax], 0 + je normal_straight_next + dec eax + cmp byte ptr rankCounts[eax], 0 + je normal_straight_next + dec eax + cmp byte ptr rankCounts[eax], 0 + je normal_straight_next + dec eax + cmp byte ptr rankCounts[eax], 0 + je normal_straight_next + mov pokerStraight, 1 + mov pokerHigh, ebx + jmp scan_duplicates +normal_straight_next: + dec ebx + jmp normal_straight_loop + +scan_duplicates: + mov ebx, 12 +duplicate_loop: + cmp ebx, 0FFFFFFFFh + je decide_poker_score + mov al, byte ptr rankCounts[ebx] + cmp al, 4 + jne check_trip_count + mov pokerFour, ebx + jmp duplicate_next +check_trip_count: + cmp al, 3 + jne check_pair_count + cmp pokerTrip, 0FFFFFFFFh + jne second_trip_as_pair + mov pokerTrip, ebx + jmp duplicate_next +second_trip_as_pair: + cmp pokerPairHigh, 0FFFFFFFFh + jne duplicate_next + mov pokerPairHigh, ebx + jmp duplicate_next +check_pair_count: + cmp al, 2 + jne duplicate_next + cmp pokerPairHigh, 0FFFFFFFFh + jne set_low_pair + mov pokerPairHigh, ebx + jmp duplicate_next +set_low_pair: + mov pokerPairLow, ebx +duplicate_next: + dec ebx + jmp duplicate_loop + +decide_poker_score: + cmp pokerStraight, 1 + jne not_straight_flush + cmp pokerFlush, 1 + jne not_straight_flush + mov eax, 8000 + add eax, pokerHigh + ret +not_straight_flush: + cmp pokerFour, 0FFFFFFFFh + je not_four_kind + mov eax, 7000 + add eax, pokerFour + ret +not_four_kind: + cmp pokerTrip, 0FFFFFFFFh + je not_full_house + cmp pokerPairHigh, 0FFFFFFFFh + je not_full_house + mov eax, 6000 + add eax, pokerTrip + ret +not_full_house: + cmp pokerFlush, 1 + jne not_flush + mov eax, 5000 + add eax, pokerHigh + ret +not_flush: + cmp pokerStraight, 1 + jne not_straight + mov eax, 4000 + add eax, pokerHigh + ret +not_straight: + cmp pokerTrip, 0FFFFFFFFh + je not_three_kind + mov eax, 3000 + add eax, pokerTrip + ret +not_three_kind: + cmp pokerPairLow, 0FFFFFFFFh + je not_two_pair + mov eax, pokerPairHigh + mov ebx, 13 + mul ebx + add eax, pokerPairLow + add eax, 2000 + ret +not_two_pair: + cmp pokerPairHigh, 0FFFFFFFFh + je high_card_score + mov eax, 1000 + add eax, pokerPairHigh + ret +high_card_score: + mov eax, pokerHigh + ret +EvaluatePokerN ENDP + +; --- EvaluatePoker: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +EvaluatePoker PROC pHand:DWORD + invoke EvaluatePokerN, pHand, 5 + ret +EvaluatePoker ENDP + +; --- PrintPokerHandName: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintPokerHandName PROC uses eax ebx edx, score:DWORD + mov eax, score + xor edx, edx + mov ebx, 1000 + div ebx + invoke PrintStr, pokerNames[eax * 4] + ret +PrintPokerHandName ENDP + +; --- BuildPokerEvalHand: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +BuildPokerEvalHand PROC uses eax ebx esi edi, pHole:DWORD, pOut:DWORD + mov esi, pHole + mov edi, pOut + + mov eax, [esi] + mov [edi], eax + mov eax, [esi + 4] + mov [edi + 4], eax + + mov eax, communityCnt + add eax, 2 + mov pokerEvalCount, eax + + mov ebx, 0 +build_table_cards: + cmp ebx, communityCnt + jae build_eval_done + mov eax, communityHand[ebx * 4] + mov [edi + ebx * 4 + 8], eax + inc ebx + jmp build_table_cards +build_eval_done: + ret +BuildPokerEvalHand ENDP + +; --- ShowPokerHint: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +ShowPokerHint PROC + invoke BuildPokerEvalHand, OFFSET playerHand21, OFFSET pokerPlayerEvalHand + invoke EvaluatePokerN, OFFSET pokerPlayerEvalHand, pokerEvalCount + mov pokerPlayerScore, eax + invoke PrintStr, OFFSET pokerHintText + invoke PrintPokerHandName, pokerPlayerScore + ret +ShowPokerHint ENDP + +; --- ShowPokerResult: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +ShowPokerResult PROC uses ebx + invoke BuildPokerEvalHand, OFFSET playerHand21, OFFSET pokerPlayerEvalHand + mov ebx, pokerEvalCount + invoke BuildPokerEvalHand, OFFSET aiHand21, OFFSET pokerAIEvalHand + mov pokerEvalCount, ebx + + invoke EvaluatePokerN, OFFSET pokerPlayerEvalHand, pokerEvalCount + mov pokerPlayerScore, eax + invoke EvaluatePokerN, OFFSET pokerAIEvalHand, pokerEvalCount + mov pokerAIScore, eax + + invoke PrintStr, OFFSET pokerYourComboText + invoke PrintPokerHandName, pokerPlayerScore + invoke PrintStr, OFFSET pokerAIComboText + invoke PrintPokerHandName, pokerAIScore + + mov eax, pokerPlayerScore + cmp eax, pokerAIScore + ja poker_player_win + jb poker_ai_win + call PrintDrawEvent + call PayDraw + ret +poker_player_win: + call PrintWinEvent + call PayWin + ret +poker_ai_win: + call PrintLoseEvent + call PayLose + ret +ShowPokerResult ENDP + +; --- PokerAIDecide: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +PokerAIDecide PROC uses ebx edx + invoke BuildPokerEvalHand, OFFSET aiHand21, OFFSET pokerAIEvalHand + invoke EvaluatePokerN, OFFSET pokerAIEvalHand, pokerEvalCount + mov pokerAIScore, eax + + mov eax, pokerAIScore + xor edx, edx + mov ebx, 1000 + div ebx + cmp eax, 1 + jae ai_will_play + + cmp aiDifficulty, 1 + je ai_easy_decide + cmp aiDifficulty, 3 + je ai_hard_decide + +ai_normal_decide: + mov eax, pokerAIScore + cmp eax, 11 + jae ai_normal_random + jmp ai_will_fold +ai_normal_random: + invoke RandomRange, 3 + cmp eax, 0 + je ai_will_fold + jmp ai_will_play + +ai_easy_decide: + invoke RandomRange, 2 + cmp eax, 0 + je ai_will_play + mov eax, pokerAIScore + cmp eax, 10 + jae ai_will_play + jmp ai_will_fold + +ai_hard_decide: + mov eax, pokerAIScore + cmp eax, 10 + jae ai_hard_high_card + invoke RandomRange, 3 + cmp eax, 0 + je ai_will_play + jmp ai_will_fold +ai_hard_high_card: + invoke RandomRange, 4 + cmp eax, 0 + je ai_will_fold + jmp ai_will_play + +ai_will_fold: + xor eax, eax + ret +ai_will_play: + mov eax, 1 + ret +PokerAIDecide ENDP + +; --- PokerAICallRaise: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +PokerAICallRaise PROC uses ebx ecx edx + invoke BuildPokerEvalHand, OFFSET aiHand21, OFFSET pokerAIEvalHand + invoke EvaluatePokerN, OFFSET pokerAIEvalHand, pokerEvalCount + mov pokerAIScore, eax + + mov eax, pokerAIScore + xor edx, edx + mov ebx, 1000 + div ebx + mov ecx, eax + cmp ecx, 1 + jae ai_call_raise + + mov eax, pokerRaiseAmount + mov ebx, 2 + mul ebx + cmp eax, currentBet + ja ai_big_raise + + cmp aiDifficulty, 1 + je ai_easy_call_bluff + cmp aiDifficulty, 3 + je ai_hard_call_bluff + invoke RandomRange, 3 + cmp eax, 0 + jne ai_call_raise + jmp ai_fold_raise + +ai_big_raise: + cmp aiDifficulty, 1 + je ai_easy_big_raise + cmp aiDifficulty, 3 + je ai_fold_raise + invoke RandomRange, 5 + cmp eax, 0 + je ai_call_raise + jmp ai_fold_raise + +ai_easy_call_bluff: + invoke RandomRange, 2 + cmp eax, 0 + je ai_call_raise + jmp ai_fold_raise + +ai_easy_big_raise: + invoke RandomRange, 3 + cmp eax, 0 + jne ai_call_raise + jmp ai_fold_raise + +ai_hard_call_bluff: + mov eax, pokerAIScore + cmp eax, 12 + jae ai_call_raise + jmp ai_fold_raise + +ai_fold_raise: + xor eax, eax + ret +ai_call_raise: + mov eax, 1 + ret +PokerAICallRaise ENDP + + +; --- HardPokerPlayerExchange: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +HardPokerPlayerExchange PROC uses eax ebx + cmp aiDifficulty, 3 + jne hard_player_exchange_done + call ClearView + invoke PrintTitleColor, OFFSET pokerTitle + call ShowPokerTable + call ShowPokerHint + invoke PrintStr, OFFSET pokerHardIntroText + invoke PrintStr, OFFSET pokerHardExchangeText + call ReadKey + cmp al, '1' + je hard_replace_first + cmp al, '2' + je hard_replace_second + jmp hard_player_exchange_done +hard_replace_first: + xor ebx, ebx + jmp hard_replace_card +hard_replace_second: + mov ebx, 1 +hard_replace_card: + call PlayCardSound + call DrawCard + mov playerHand21[ebx * 4], eax +hard_player_exchange_done: + ret +HardPokerPlayerExchange ENDP + +; --- HardPokerAIExchange: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +HardPokerAIExchange PROC uses eax ebx ecx edx + cmp aiDifficulty, 3 + jne hard_ai_exchange_done + invoke PrintStr, OFFSET pokerHardAIExchangeText + invoke Sleep, 650 + + mov eax, aiHand21[0] + xor edx, edx + mov ecx, 13 + div ecx + mov ebx, edx + + mov eax, aiHand21[4] + xor edx, edx + mov ecx, 13 + div ecx + + cmp ebx, edx + je hard_ai_exchange_done + cmp ebx, 8 + jb hard_ai_check_second + cmp edx, 8 + jae hard_ai_exchange_done + +hard_ai_check_second: + cmp ebx, edx + jbe hard_replace_ai_first + mov ebx, 1 + jmp hard_replace_ai_card +hard_replace_ai_first: + xor ebx, ebx +hard_replace_ai_card: + call PlayCardSound + call DrawCard + mov aiHand21[ebx * 4], eax +hard_ai_exchange_done: + ret +HardPokerAIExchange ENDP + +; --- PokerAIRaiseMaybe: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +PokerAIRaiseMaybe PROC uses ebx ecx edx + invoke BuildPokerEvalHand, OFFSET aiHand21, OFFSET pokerAIEvalHand + invoke EvaluatePokerN, OFFSET pokerAIEvalHand, pokerEvalCount + mov pokerAIScore, eax + + mov eax, bankroll + sub eax, currentBet + cmp eax, 0 + jbe ai_no_raise + mov ecx, eax + + mov eax, pokerAIScore + xor edx, edx + mov ebx, 1000 + div ebx + cmp eax, 2 + jae ai_strong_raise + cmp eax, 1 + je ai_pair_raise_check + + cmp aiDifficulty, 3 + jne ai_no_raise + mov eax, pokerAIScore + cmp eax, 12 + jne ai_no_raise + invoke RandomRange, 7 + cmp eax, 0 + jne ai_no_raise + mov eax, currentBet + xor edx, edx + mov ebx, 3 + div ebx + jmp ai_raise_amount_ready + +ai_pair_raise_check: + cmp aiDifficulty, 1 + je ai_easy_pair_raise + cmp aiDifficulty, 2 + je ai_normal_pair_raise + invoke RandomRange, 3 + cmp eax, 0 + je ai_no_raise + mov eax, currentBet + xor edx, edx + mov ebx, 2 + div ebx + jmp ai_raise_amount_ready + +ai_easy_pair_raise: + invoke RandomRange, 5 + cmp eax, 0 + jne ai_no_raise + mov eax, currentBet + xor edx, edx + mov ebx, 3 + div ebx + jmp ai_raise_amount_ready + +ai_normal_pair_raise: + invoke RandomRange, 3 + cmp eax, 0 + je ai_no_raise + mov eax, currentBet + xor edx, edx + mov ebx, 2 + div ebx + jmp ai_raise_amount_ready + +ai_strong_raise: + cmp aiDifficulty, 1 + je ai_easy_strong_raise + cmp aiDifficulty, 2 + je ai_normal_strong_raise + mov eax, currentBet + jmp ai_raise_amount_ready + +ai_easy_strong_raise: + invoke RandomRange, 3 + cmp eax, 0 + jne ai_no_raise + mov eax, currentBet + xor edx, edx + mov ebx, 2 + div ebx + jmp ai_raise_amount_ready + +ai_normal_strong_raise: + invoke RandomRange, 2 + cmp eax, 0 + je ai_no_raise + mov eax, currentBet + xor edx, edx + mov ebx, 2 + div ebx + jmp ai_raise_amount_ready + +ai_raise_amount_ready: + cmp eax, 50 + jae ai_raise_min_ok + mov eax, 50 +ai_raise_min_ok: + cmp eax, ecx + jbe ai_raise_store + mov eax, ecx +ai_raise_store: + cmp eax, 0 + jbe ai_no_raise + mov pokerAIRaiseAmount, eax + mov pokerRaiseAmount, eax + mov eax, 1 + ret +ai_no_raise: + xor eax, eax + ret +PokerAIRaiseMaybe ENDP +; --- PokerPlayerExchange: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +PokerPlayerExchange PROC uses eax ebx + mov pokerReplaceIndex, 0 +player_exchange_loop: + cmp pokerReplaceIndex, 5 + jae player_exchange_done + call ClearView + invoke PrintTitleColor, OFFSET pokerTitle + call ShowPokerTable + invoke PrintStr, OFFSET pokerReplaceText + mov eax, pokerReplaceIndex + inc eax + invoke PrintUInt, eax + invoke PrintStr, OFFSET pokerReplaceTail + call ReadKey + cmp al, 'y' + je replace_player_card + cmp al, 'Y' + je replace_player_card + cmp al, '1' + je replace_player_card + jmp next_player_exchange +replace_player_card: + call DrawCard + mov ebx, pokerReplaceIndex + mov playerHand21[ebx * 4], eax +next_player_exchange: + inc pokerReplaceIndex + jmp player_exchange_loop +player_exchange_done: + ret +PokerPlayerExchange ENDP + +; --- PokerAIExchange: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +PokerAIExchange PROC uses eax ebx ecx edx + invoke EvaluatePoker, OFFSET aiHand21 + xor edx, edx + mov ebx, 1000 + div ebx + cmp eax, 4 + jae ai_exchange_done + + mov pokerReplaced, 0 + mov pokerReplaceIndex, 0 +ai_exchange_loop: + cmp pokerReplaceIndex, 5 + jae ai_exchange_done + cmp pokerReplaced, 3 + jae ai_exchange_done + + mov ebx, pokerReplaceIndex + mov eax, aiHand21[ebx * 4] + xor edx, edx + mov ecx, 13 + div ecx + cmp byte ptr rankCounts[edx], 1 + jne next_ai_exchange + call DrawCard + mov ebx, pokerReplaceIndex + mov aiHand21[ebx * 4], eax + inc pokerReplaced +next_ai_exchange: + inc pokerReplaceIndex + jmp ai_exchange_loop +ai_exchange_done: + ret +PokerAIExchange ENDP + +; --- AddPlayerBJ: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +AddPlayerBJ PROC uses eax ebx edx + call DrawCard + mov ebx, eax + invoke PrintStr, OFFSET yourCardText + invoke PrintCard, ebx + invoke CardValueBJ, ebx + add playerTotal, eax + cmp eax, 11 + jne no_player_ace + inc playerAces +no_player_ace: + inc playerCards + call AdjustPlayerAces + ret +AddPlayerBJ ENDP + +; --- AddDealerBJ: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +AddDealerBJ PROC uses eax ebx + call DrawCard + mov ebx, eax + invoke PrintStr, OFFSET dealerCardText + invoke PrintCard, ebx + invoke CardValueBJ, ebx + add dealerTotal, eax + cmp eax, 11 + jne no_dealer_ace + inc dealerAces +no_dealer_ace: + call AdjustDealerAces + ret +AddDealerBJ ENDP + +; --- CompareTotals: ñëóæåáíûé áëîê èãðîâîé ëîãèêè --- +CompareTotals PROC + call PrintScore + cmp playerTotal, 21 + ja player_lost + cmp dealerTotal, 21 + ja dealer_lost + mov eax, playerTotal + cmp eax, dealerTotal + ja player_won + jb player_lost + call PrintDrawEvent + ret +player_won: + call PrintWinEvent + ret +player_lost: + call PrintLoseEvent + ret +dealer_lost: + invoke PrintStr, OFFSET dealerBustText + ret +CompareTotals ENDP + +; --- Game21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +Game21 PROC +start_21: + call ClearView + invoke PrintTitleColor, OFFSET twentyOneTitle + call PromptBet + call ResetDeck + call Reset21Hands + + call DrawPlayer21Hand + call DrawPlayer21Hand + call DrawAI21Hand + call DrawAI21Hand + +player_21_loop: + call ClearView + invoke PrintTitleColor, OFFSET twentyOneTitle + call ShowAllCards21 + + cmp playerTotal, 21 + ja player_21_bust + cmp playerTotal, 21 + je ai_21_turn + + invoke PrintStr, OFFSET hitText + invoke PrintStr, OFFSET cheatMoveText + call ReadKey + cmp al, '1' + je hit_21 + cmp al, 'y' + je hit_21 + cmp al, 'Y' + je hit_21 + cmp al, '3' + je cheat_peek_21_action + cmp al, '4' + je cheat_swap_21_action + jmp ai_21_turn +cheat_peek_21_action: + call CheatPeek21 + jmp player_21_loop +cheat_swap_21_action: + call CheatSwap21 + jmp player_21_loop +hit_21: + cmp playerCnt21, 10 + jae ai_21_turn + call DrawPlayer21Hand + jmp player_21_loop + +player_21_bust: + invoke PrintStr, OFFSET bustText + call PayLose + jmp ask_21_again + +ai_21_turn: +ai_21_cycle: + call ClearView + invoke PrintTitleColor, OFFSET twentyOneTitle + call ShowAllCards21 + + cmp playerTotal, 21 + ja finish_21 + cmp dealerTotal, 21 + je finish_21 + cmp aiDifficulty, 1 + je ai_21_easy + cmp aiDifficulty, 2 + je ai_21_normal + cmp dealerTotal, 12 + jb ai_21_must_hit + + mov eax, dealerTotal + cmp eax, playerTotal + jae finish_21 + + call CountDanger21 + mov eax, dangerLvl21 + mov ebx, 2 + mul ebx + cmp eax, cardsLeft21 + ja finish_21 + jmp ai_21_must_hit + +ai_21_easy: + cmp dealerTotal, 16 + jb ai_21_must_hit + jmp finish_21 + +ai_21_normal: + cmp dealerTotal, 17 + jb ai_21_must_hit + jmp finish_21 + +ai_21_must_hit: + cmp aiCnt21, 10 + jae finish_21 + invoke PrintStr, OFFSET aiMoveText + invoke Sleep, 650 + call DrawAI21Hand + call CalcAIScore21 + cmp dealerTotal, 21 + ja finish_21 + jmp ai_21_cycle + +finish_21: + call AnimateReveal21 + call FinalScreen21 +ask_21_again: + cmp tournamentMode, 1 + je game21_tournament_return + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je start_21 + cmp al, 'Y' + je start_21 +game21_tournament_return: + ret +Game21 ENDP + +; --- GamePoker: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +GamePoker PROC +start_poker: + call ClearView + invoke PrintTitleColor, OFFSET pokerTitle + call PromptBet + call ResetDeck + call ResetPokerHands + call DealPokerHands + call HardPokerPlayerExchange + call HardPokerAIExchange + +poker_stage_loop: + call ClearView + invoke PrintTitleColor, OFFSET pokerTitle + call ShowPokerTable + call ShowPokerHint + call ShowPokerMoney + cmp communityCnt, 5 + jae poker_showdown + invoke PrintStr, OFFSET pokerDecisionText + invoke PrintStr, OFFSET cheatMoveText + call ReadKey + cmp al, '1' + je poker_play + cmp al, 'y' + je poker_play + cmp al, 'Y' + je poker_play + cmp al, '2' + je poker_raise + cmp al, 'r' + je poker_raise + cmp al, 'R' + je poker_raise + cmp al, '3' + je poker_cheat_peek + cmp al, '4' + je poker_cheat_swap + invoke PrintStr, OFFSET pokerFoldText + call PayLose + jmp ask_poker_again + +poker_cheat_peek: + call CheatPeekPoker + jmp poker_stage_loop +poker_cheat_swap: + call CheatSwapPoker + jmp poker_stage_loop + +poker_raise: + call PromptPokerRaise + cmp eax, 0 + je poker_stage_loop + invoke UnlockAchievement, 200h, OFFSET achPokerRaiseName + invoke PrintStr, OFFSET aiThinkText + invoke Sleep, 700 + call PokerAICallRaise + cmp eax, 0 + jne poker_raise_called + invoke PrintStr, OFFSET pokerAIFoldRaiseText + invoke UnlockAchievement, 400h, OFFSET achPokerBluffName + call PayWin + jmp ask_poker_again +poker_raise_called: + invoke PrintStr, OFFSET pokerAICallRaiseText + invoke Sleep, 700 + jmp poker_next_stage + +poker_play: + invoke PrintStr, OFFSET aiThinkText + invoke Sleep, 700 + call PokerAIDecide + cmp eax, 0 + jne poker_ai_plays + invoke PrintStr, OFFSET pokerAIFoldText + call PayWin + jmp ask_poker_again + +poker_ai_plays: + call PokerAIRaiseMaybe + cmp eax, 0 + je poker_next_stage + invoke PrintStr, OFFSET pokerAIRaiseText + invoke PrintUInt, pokerAIRaiseAmount + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET pokerCallRaiseText + call ReadKey + cmp al, '1' + je poker_call_ai_raise + cmp al, 'y' + je poker_call_ai_raise + cmp al, 'Y' + je poker_call_ai_raise + invoke PrintStr, OFFSET pokerFoldToRaiseText + call PayLose + jmp ask_poker_again +poker_call_ai_raise: + mov eax, currentBet + add eax, pokerAIRaiseAmount + cmp eax, bankroll + jbe poker_call_ai_raise_ok + invoke PrintStr, OFFSET tooBigBetText + invoke PrintStr, OFFSET pokerFoldToRaiseText + call PayLose + jmp ask_poker_again +poker_call_ai_raise_ok: + mov currentBet, eax + invoke PrintStr, OFFSET pokerPlayerCallText + invoke PrintUInt, currentBet + invoke PrintStr, OFFSET nl + invoke Sleep, 700 +poker_next_stage: + cmp communityCnt, 5 + jae poker_showdown + invoke PrintStr, OFFSET pokerNextCardText + invoke Sleep, 900 + inc communityCnt + jmp poker_stage_loop + +poker_showdown: + call AnimateRevealPoker + call ShowPokerResult + +ask_poker_again: + cmp tournamentMode, 1 + je poker_tournament_return + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je start_poker + cmp al, 'Y' + je start_poker +poker_tournament_return: + ret +GamePoker ENDP + +; --- PrintSlotSymbol: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintSlotSymbol PROC uses eax, value:DWORD + mov eax, value + cmp eax, 0 + je slot_symbol_green + cmp eax, 1 + je slot_symbol_yellow + cmp eax, 2 + je slot_symbol_red + cmp eax, 3 + je slot_symbol_yellow + cmp eax, 4 + je slot_symbol_cyan + cmp eax, 5 + je slot_symbol_yellow + invoke SetColor, COLOR_BAD + jmp slot_symbol_print +slot_symbol_green: + invoke SetColor, COLOR_MONEY + jmp slot_symbol_print +slot_symbol_yellow: + invoke SetColor, COLOR_WARN + jmp slot_symbol_print +slot_symbol_red: + invoke SetColor, COLOR_BAD + jmp slot_symbol_print +slot_symbol_cyan: + invoke SetColor, COLOR_TITLE +slot_symbol_print: + mov eax, value + invoke PrintStr, slotSymbols[eax * 4] + call ResetColor + ret +PrintSlotSymbol ENDP + +; --- MoveCursor: ñëóæåáíûå ôóíêöèè êîíñîëè è ñëó÷àéíûõ ÷èñåë --- +MoveCursor PROC uses eax edx, xPos:DWORD, yPos:DWORD + mov eax, yPos + shl eax, 16 + mov edx, xPos + and edx, 0FFFFh + or eax, edx + invoke SetConsoleCursorPosition, hOut, eax + ret +MoveCursor ENDP + +; --- PrintSkullAt: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintSkullAt PROC uses eax, xPos:DWORD, yPos:DWORD + mov eax, yPos + invoke MoveCursor, xPos, eax + invoke PrintUtf8, OFFSET skullSeg1 + mov eax, yPos + inc eax + invoke MoveCursor, xPos, eax + invoke PrintUtf8, OFFSET skullSeg2 + mov eax, yPos + add eax, 2 + invoke MoveCursor, xPos, eax + invoke PrintUtf8, OFFSET skullSeg3 + mov eax, yPos + add eax, 3 + invoke MoveCursor, xPos, eax + invoke PrintUtf8, OFFSET skullSeg4 + mov eax, yPos + add eax, 4 + invoke MoveCursor, xPos, eax + invoke PrintUtf8, OFFSET skullSeg5 + mov eax, yPos + add eax, 5 + invoke MoveCursor, xPos, eax + invoke PrintUtf8, OFFSET skullSeg6 + mov eax, yPos + add eax, 6 + invoke MoveCursor, xPos, eax + invoke PrintUtf8, OFFSET skullSeg7 + mov eax, yPos + add eax, 7 + invoke MoveCursor, xPos, eax + invoke PrintUtf8, OFFSET skullSeg8 + ret +PrintSkullAt ENDP + +; --- ShowSkullSlideFrame: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +ShowSkullSlideFrame PROC x1:DWORD, y1:DWORD, x2:DWORD, y2:DWORD, x3:DWORD, y3:DWORD + call ClearView + invoke PrintTitleColor, OFFSET skullsTitle + invoke PrintStr, OFFSET skullsShuffleText + invoke PrintSkullAt, x1, y1 + invoke PrintSkullAt, x2, y2 + invoke PrintSkullAt, x3, y3 + invoke Sleep, 220 + ret +ShowSkullSlideFrame ENDP + +; --- AnimateSkullSwap12: èãðà ñ ÷åðåïàìè è øàðèêîì, ïåðåìåøèâàíèå è îòðèñîâêà --- +AnimateSkullSwap12 PROC + invoke ShowSkullSlideFrame, 0, 5, 18, 5, 36, 5 + invoke ShowSkullSlideFrame, 4, 6, 14, 4, 36, 5 + invoke ShowSkullSlideFrame, 8, 7, 10, 3, 36, 5 + invoke ShowSkullSlideFrame, 14, 6, 4, 4, 36, 5 + invoke ShowSkullSlideFrame, 18, 5, 0, 5, 36, 5 + ret +AnimateSkullSwap12 ENDP + +; --- AnimateSkullSwap23: èãðà ñ ÷åðåïàìè è øàðèêîì, ïåðåìåøèâàíèå è îòðèñîâêà --- +AnimateSkullSwap23 PROC + invoke ShowSkullSlideFrame, 0, 5, 18, 5, 36, 5 + invoke ShowSkullSlideFrame, 0, 5, 22, 6, 32, 4 + invoke ShowSkullSlideFrame, 0, 5, 26, 7, 28, 3 + invoke ShowSkullSlideFrame, 0, 5, 32, 6, 22, 4 + invoke ShowSkullSlideFrame, 0, 5, 36, 5, 18, 5 + ret +AnimateSkullSwap23 ENDP + +; --- AnimateSkullSwap13: èãðà ñ ÷åðåïàìè è øàðèêîì, ïåðåìåøèâàíèå è îòðèñîâêà --- +AnimateSkullSwap13 PROC + invoke ShowSkullSlideFrame, 0, 5, 18, 5, 36, 5 + invoke ShowSkullSlideFrame, 8, 7, 18, 5, 28, 3 + invoke ShowSkullSlideFrame, 18, 8, 18, 5, 18, 2 + invoke ShowSkullSlideFrame, 28, 7, 18, 5, 8, 3 + invoke ShowSkullSlideFrame, 36, 5, 18, 5, 0, 5 + ret +AnimateSkullSwap13 ENDP + + +; --- PrintSkullRows: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintSkullRows PROC + invoke PrintUtf8, OFFSET skullSeg1 + invoke PrintUtf8, OFFSET skullSeg1 + invoke PrintUtf8, OFFSET skullSeg1 + invoke PrintStr, OFFSET nl + invoke PrintUtf8, OFFSET skullSeg2 + invoke PrintUtf8, OFFSET skullSeg2 + invoke PrintUtf8, OFFSET skullSeg2 + invoke PrintStr, OFFSET nl + invoke PrintUtf8, OFFSET skullSeg3 + invoke PrintUtf8, OFFSET skullSeg3 + invoke PrintUtf8, OFFSET skullSeg3 + invoke PrintStr, OFFSET nl + invoke PrintUtf8, OFFSET skullSeg4 + invoke PrintUtf8, OFFSET skullSeg4 + invoke PrintUtf8, OFFSET skullSeg4 + invoke PrintStr, OFFSET nl + invoke PrintUtf8, OFFSET skullSeg5 + invoke PrintUtf8, OFFSET skullSeg5 + invoke PrintUtf8, OFFSET skullSeg5 + invoke PrintStr, OFFSET nl + invoke PrintUtf8, OFFSET skullSeg6 + invoke PrintUtf8, OFFSET skullSeg6 + invoke PrintUtf8, OFFSET skullSeg6 + invoke PrintStr, OFFSET nl + invoke PrintUtf8, OFFSET skullSeg7 + invoke PrintUtf8, OFFSET skullSeg7 + invoke PrintUtf8, OFFSET skullSeg7 + invoke PrintStr, OFFSET nl + invoke PrintUtf8, OFFSET skullSeg8 + invoke PrintUtf8, OFFSET skullSeg8 + invoke PrintUtf8, OFFSET skullSeg8 + invoke PrintStr, OFFSET nl + ret +PrintSkullRows ENDP +; --- PrintSkulls: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintSkulls PROC reveal:DWORD + call PrintSkullRows + invoke PrintStr, OFFSET skullNums + cmp reveal, 0 + je print_skull_blank_ball + mov eax, skullBallPos + cmp eax, 0 + je print_skull_ball_1 + cmp eax, 1 + je print_skull_ball_2 + invoke PrintStr, OFFSET skullBall3 + ret +print_skull_ball_1: + invoke PrintStr, OFFSET skullBall1 + ret +print_skull_ball_2: + invoke PrintStr, OFFSET skullBall2 + ret +print_skull_blank_ball: + invoke PrintStr, OFFSET skullBlankBall + ret +PrintSkulls ENDP +; --- PrintSkullFaces: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintSkullFaces PROC + call PrintSkullRows + invoke PrintStr, OFFSET skullBlankBall + ret +PrintSkullFaces ENDP +; --- ShowSkullShuffleFrame: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +ShowSkullShuffleFrame PROC pSwapText:DWORD + call ClearView + invoke PrintTitleColor, OFFSET skullsTitle + invoke PrintStr, OFFSET skullsShuffleText + invoke PrintStr, pSwapText + call PrintSkullFaces + invoke Sleep, 400 + ret +ShowSkullShuffleFrame ENDP + +; --- ShuffleSkulls: èãðà ñ ÷åðåïàìè è øàðèêîì, ïåðåìåøèâàíèå è îòðèñîâêà --- +ShuffleSkulls PROC uses eax ebx + cmp aiDifficulty, 1 + je skulls_easy_steps + cmp aiDifficulty, 3 + je skulls_hard_steps + +skulls_normal_steps: + invoke RandomRange, 4 + add eax, 9 + jmp skulls_store_steps + +skulls_easy_steps: + invoke RandomRange, 4 + add eax, 5 + jmp skulls_store_steps + +skulls_hard_steps: + invoke RandomRange, 5 + add eax, 12 + +skulls_store_steps: + mov skullMax, eax + mov skullStep, 0 + +shuffle_skulls_loop: + mov eax, skullStep + cmp eax, skullMax + jae shuffle_skulls_done + + cmp skullStep, 0 + je skulls_play_first_move_sound + mov eax, skullMax + dec eax + cmp skullStep, eax + je skulls_play_last_move_sound + jmp skulls_after_move_sound + +skulls_play_first_move_sound: + call PlayStoneSound + invoke Sleep, 180 + jmp skulls_after_move_sound +skulls_play_last_move_sound: + call PlayStoneSound + +skulls_after_move_sound: + invoke RandomRange, 3 + cmp eax, 0 + je shuffle_12 + cmp eax, 1 + je shuffle_23 + jmp shuffle_13 + +shuffle_12: + mov eax, skullBallPos + cmp eax, 0 + je ball_12_to_2 + cmp eax, 1 + je ball_12_to_1 + jmp show_shuffle_12 +ball_12_to_2: + mov skullBallPos, 1 + jmp show_shuffle_12 +ball_12_to_1: + mov skullBallPos, 0 +show_shuffle_12: + call AnimateSkullSwap12 + jmp shuffle_next + +shuffle_23: + mov eax, skullBallPos + cmp eax, 1 + je ball_23_to_3 + cmp eax, 2 + je ball_23_to_2 + jmp show_shuffle_23 +ball_23_to_3: + mov skullBallPos, 2 + jmp show_shuffle_23 +ball_23_to_2: + mov skullBallPos, 1 +show_shuffle_23: + call AnimateSkullSwap23 + jmp shuffle_next + +shuffle_13: + mov eax, skullBallPos + cmp eax, 0 + je ball_13_to_3 + cmp eax, 2 + je ball_13_to_1 + jmp show_shuffle_13 +ball_13_to_3: + mov skullBallPos, 2 + jmp show_shuffle_13 +ball_13_to_1: + mov skullBallPos, 0 +show_shuffle_13: + call AnimateSkullSwap13 + +shuffle_next: + inc skullStep + jmp shuffle_skulls_loop +shuffle_skulls_done: + ret +ShuffleSkulls ENDP + +; --- GameSkulls: èãðà ñ ÷åðåïàìè è øàðèêîì, ïåðåìåøèâàíèå è îòðèñîâêà --- +GameSkulls PROC +skulls_start: + call ClearView + invoke PrintTitleColor, OFFSET skullsTitle + invoke PrintStr, OFFSET skullsIntroText + call PromptBet + invoke RandomRange, 3 + mov skullBallPos, eax + + call ClearView + invoke PrintTitleColor, OFFSET skullsTitle + invoke PrintStr, OFFSET skullsShowText + invoke PrintSkulls, 1 + invoke Sleep, 1600 + + call ClearView + invoke PrintTitleColor, OFFSET skullsTitle + invoke PrintStr, OFFSET skullsHideText + invoke PrintSkulls, 0 + invoke Sleep, 800 + + call ShuffleSkulls + +skulls_guess_again: + call ClearView + invoke PrintTitleColor, OFFSET skullsTitle + invoke PrintSkulls, 0 + invoke PrintStr, OFFSET skullsGuessText + call ReadKey + cmp al, '1' + je skull_guess_1 + cmp al, '2' + je skull_guess_2 + cmp al, '3' + je skull_guess_3 + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp skulls_guess_again + +skull_guess_1: + mov skullGuess, 0 + jmp skulls_reveal +skull_guess_2: + mov skullGuess, 1 + jmp skulls_reveal +skull_guess_3: + mov skullGuess, 2 + +skulls_reveal: + call ClearView + invoke PrintTitleColor, OFFSET skullsTitle + invoke PrintSkulls, 1 + invoke PrintStr, OFFSET skullsBallText + mov eax, skullBallPos + inc eax + invoke PrintUInt, eax + invoke PrintStr, OFFSET nl + + mov eax, skullGuess + cmp eax, skullBallPos + jne skulls_lost + invoke PrintStr, OFFSET skullsWinText + invoke PaySlotMultiplier, 2 + jmp ask_skulls_again + +skulls_lost: + invoke PrintStr, OFFSET skullsLoseText + call PayLose + +ask_skulls_again: + cmp tournamentMode, 1 + je skulls_tournament_return + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je skulls_start + cmp al, 'Y' + je skulls_start +skulls_tournament_return: + ret +GameSkulls ENDP +; --- PrintRevolver: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintRevolver PROC pGun:DWORD + invoke SetColor, COLOR_WARN + invoke PrintStr, pGun + call ResetColor + ret +PrintRevolver ENDP + +; --- PrintRouletteTurnGun: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintRouletteTurnGun PROC + cmp rrTurn, 0 + jne print_rr_ai_gun + invoke PrintRevolver, OFFSET rrGunDown + ret +print_rr_ai_gun: + invoke PrintRevolver, OFFSET rrGunUp + ret +PrintRouletteTurnGun ENDP + +; --- ShowRouletteStatus: ðóññêàÿ ðóëåòêà èëè êàçèíî-ðóëåòêà --- +ShowRouletteStatus PROC + call ClearView + invoke PrintTitleColor, OFFSET rouletteTitle + call PrintRouletteTurnGun + invoke PrintStr, OFFSET rrDangerText + invoke PrintUInt, rrBullets + invoke PrintStr, OFFSET nl + ret +ShowRouletteStatus ENDP + +; --- ShowRouletteSpinFrame: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +ShowRouletteSpinFrame PROC pGun:DWORD + call ClearView + invoke PrintTitleColor, OFFSET rouletteTitle + invoke PrintRevolver, pGun + invoke PrintStr, OFFSET rrSpinText + invoke Sleep, 85 + ret +ShowRouletteSpinFrame ENDP + +; --- AnimateRouletteSpin: ðóññêàÿ ðóëåòêà èëè êàçèíî-ðóëåòêà --- +AnimateRouletteSpin PROC + invoke ShowRouletteSpinFrame, OFFSET rrGunUp + invoke ShowRouletteSpinFrame, OFFSET rrGunUpLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunDownLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunDown + invoke ShowRouletteSpinFrame, OFFSET rrGunDownRight + invoke ShowRouletteSpinFrame, OFFSET rrGunRight + invoke ShowRouletteSpinFrame, OFFSET rrGunUpRight + invoke ShowRouletteSpinFrame, OFFSET rrGunUp + invoke ShowRouletteSpinFrame, OFFSET rrGunUpLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunDownLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunDown + invoke ShowRouletteSpinFrame, OFFSET rrGunDownRight + invoke ShowRouletteSpinFrame, OFFSET rrGunRight + invoke ShowRouletteSpinFrame, OFFSET rrGunUpRight + cmp rrTurn, 0 + jne roulette_spin_ai_final + invoke ShowRouletteSpinFrame, OFFSET rrGunUp + invoke ShowRouletteSpinFrame, OFFSET rrGunUpLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunDownLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunDown + jmp roulette_spin_final_message +roulette_spin_ai_final: + invoke ShowRouletteSpinFrame, OFFSET rrGunUp +roulette_spin_final_message: + call ShowRouletteStatus + cmp rrTurn, 0 + jne roulette_start_ai + invoke PrintStr, OFFSET rrStartsPlayerText + jmp roulette_start_done +roulette_start_ai: + invoke PrintStr, OFFSET rrStartsAIText +roulette_start_done: + invoke Sleep, 400 + ret +AnimateRouletteSpin ENDP + +; --- SetupRoulette: ðóññêàÿ ðóëåòêà èëè êàçèíî-ðóëåòêà --- +SetupRoulette PROC uses eax ebx ecx edx + mov rrBulletMask, 0 + mov eax, aiDifficulty + mov rrBullets, eax + mov ecx, eax +roulette_place_loop: + cmp ecx, 0 + je roulette_setup_done_bullets +roulette_pick_chamber: + invoke RandomRange, 6 + mov ebx, 1 + push ecx + mov ecx, eax + shl ebx, cl + pop ecx + mov edx, rrBulletMask + test edx, ebx + jne roulette_pick_chamber + or rrBulletMask, ebx + dec ecx + jmp roulette_place_loop +roulette_setup_done_bullets: + invoke RandomRange, 6 + mov rrChamber, eax + invoke RandomRange, 2 + mov rrTurn, eax + ret +SetupRoulette ENDP + +; --- RouletteChamberLoaded: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- +RouletteChamberLoaded PROC uses ecx edx + mov edx, 1 + mov ecx, rrChamber + shl edx, cl + mov eax, rrBulletMask + test eax, edx + jne roulette_loaded + xor eax, eax + ret +roulette_loaded: + mov eax, 1 + ret +RouletteChamberLoaded ENDP + +; --- AdvanceRouletteChamber: ðóññêàÿ ðóëåòêà èëè êàçèíî-ðóëåòêà --- +AdvanceRouletteChamber PROC + inc rrChamber + cmp rrChamber, 6 + jb advance_roulette_done + mov rrChamber, 0 +advance_roulette_done: + ret +AdvanceRouletteChamber ENDP + +; --- PrintBang: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintBang PROC + call PlayRouletteShotSound + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET rrBangText + call ResetColor + ret +PrintBang ENDP + +; --- GameRoulette: ðóññêàÿ ðóëåòêà èëè êàçèíî-ðóëåòêà --- +GameRoulette PROC +roulette_start: + call ClearView + invoke PrintTitleColor, OFFSET rouletteTitle + invoke PrintStr, OFFSET rrIntroText + call PromptBet + call PlayRouletteSpinSound + call SetupRoulette + call AnimateRouletteSpin + +roulette_turn_loop: + call ShowRouletteStatus + cmp rrTurn, 0 + je roulette_player_turn + +roulette_ai_turn: + invoke PrintStr, OFFSET rrAITurnText + invoke Sleep, 900 + call RouletteChamberLoaded + cmp eax, 1 + je roulette_ai_dead + call PlayRouletteDrySound + invoke PrintStr, OFFSET rrClickText + invoke Sleep, 900 + call AdvanceRouletteChamber + mov rrTurn, 0 + jmp roulette_turn_loop + +roulette_player_turn: + invoke PrintStr, OFFSET rrPlayerTurnText + call ReadAnyKey + invoke PrintStr, OFFSET nl + call RouletteChamberLoaded + cmp eax, 1 + je roulette_player_dead + call PlayRouletteDrySound + invoke PrintStr, OFFSET rrClickText + invoke Sleep, 900 + call AdvanceRouletteChamber + mov rrTurn, 1 + jmp roulette_turn_loop + +roulette_player_dead: + call PrintBang + invoke PrintStr, OFFSET rrPlayerLoseText + call PayLose + jmp ask_roulette_again + +roulette_ai_dead: + invoke UnlockAchievement, 1000h, OFFSET achRussianWinName + call PrintBang + invoke PrintStr, OFFSET rrAIShotText + invoke PrintStr, OFFSET rrPayoutText + mov eax, aiDifficulty + inc eax + mov rrPayout, eax + invoke PaySlotMultiplier, rrPayout + +ask_roulette_again: + cmp tournamentMode, 1 + je roulette_tournament_return + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je roulette_start + cmp al, 'Y' + je roulette_start +roulette_tournament_return: + ret +GameRoulette ENDP + + +; --- ShowBuckshotFrame: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +ShowBuckshotFrame PROC pFrame:DWORD, frameDelay:DWORD + call ClearView + invoke PrintTitleColor, OFFSET buckshotTitle + invoke SetColor, COLOR_CARD + invoke PrintStr, pFrame + call ResetColor + invoke Sleep, frameDelay + ret +ShowBuckshotFrame ENDP + +; --- AnimateBuckshotLoad: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- +AnimateBuckshotLoad PROC + invoke ShowBuckshotFrame, OFFSET bsShotgunLoad1, 180 + invoke ShowBuckshotFrame, OFFSET bsShotgunLoad2, 260 + invoke ShowBuckshotFrame, OFFSET bsShotgunLoad3, 260 + ret +AnimateBuckshotLoad ENDP + +; --- AnimateBuckshotFire: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- +AnimateBuckshotFire PROC + invoke ShowBuckshotFrame, OFFSET bsShotgunFire, 220 + ret +AnimateBuckshotFire ENDP + +; --- AnimateBuckshotDry: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- +AnimateBuckshotDry PROC + invoke ShowBuckshotFrame, OFFSET bsShotgunDry, 180 + ret +AnimateBuckshotDry ENDP +; --- BuckshotGiveItems: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- +BuckshotGiveItems PROC uses eax + invoke RandomRange, 2 + inc eax + mov bsPlayerGlass, eax + invoke RandomRange, 2 + mov bsPlayerSaw, eax + invoke RandomRange, 2 + inc eax + mov bsPlayerBeer, eax + invoke RandomRange, 2 + mov bsPlayerCuffs, eax + invoke RandomRange, 2 + inc eax + mov bsAIGlass, eax + invoke RandomRange, 2 + mov bsAISaw, eax + invoke RandomRange, 2 + inc eax + mov bsAIBeer, eax + invoke RandomRange, 2 + mov bsAICuffs, eax + ret +BuckshotGiveItems ENDP + +; --- BuckshotLoad: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- +BuckshotLoad PROC uses eax ebx ecx edi + invoke RandomRange, 5 + add eax, 4 + mov bsShellCount, eax + mov bsShellIndex, 0 + mov bsLiveCount, 0 + mov bsBlankCount, 0 + mov bsKnownShell, 0FFFFFFFFh + mov edi, OFFSET bsShells + mov ecx, bsShellCount +bs_load_loop: + invoke RandomRange, 2 + mov [edi], eax + cmp eax, 1 + je bs_count_live + inc bsBlankCount + jmp bs_count_done +bs_count_live: + inc bsLiveCount +bs_count_done: + add edi, 4 + loop bs_load_loop + cmp bsLiveCount, 0 + jne bs_has_live + mov dword ptr bsShells, 1 + inc bsLiveCount + dec bsBlankCount +bs_has_live: + cmp bsBlankCount, 0 + jne bs_has_blank + mov dword ptr bsShells+4, 0 + inc bsBlankCount + dec bsLiveCount +bs_has_blank: + invoke PrintStr, OFFSET bsLoadText + invoke PrintUInt, bsLiveCount + invoke PrintStr, OFFSET bsLiveText + invoke PrintUInt, bsBlankCount + invoke PrintStr, OFFSET bsBlankText + invoke Sleep, 900 + ret +BuckshotLoad ENDP + +; --- BuckshotCurrentShell: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- +BuckshotCurrentShell PROC uses ebx + mov ebx, bsShellIndex + mov eax, bsShells[ebx*4] + ret +BuckshotCurrentShell ENDP + +; --- BuckshotAdvance: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- +BuckshotAdvance PROC + cmp bsShell, 1 + je bs_advance_live + cmp bsBlankCount, 0 + je bs_advance_count_done + dec bsBlankCount + jmp bs_advance_count_done +bs_advance_live: + cmp bsLiveCount, 0 + je bs_advance_count_done + dec bsLiveCount +bs_advance_count_done: + inc bsShellIndex + mov bsKnownShell, 0FFFFFFFFh + mov bsDamage, 1 + ret +BuckshotAdvance ENDP + +; --- BuckshotRemaining: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- +BuckshotRemaining PROC uses ebx + mov eax, bsShellCount + sub eax, bsShellIndex + ret +BuckshotRemaining ENDP + +; --- BuckshotPrintKnown: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- +BuckshotPrintKnown PROC + mov eax, bsKnownShell + cmp eax, 1 + je bs_print_known_live + cmp eax, 0 + je bs_print_known_blank + invoke PrintStr, OFFSET bsKnownUnknownText + ret +bs_print_known_live: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET bsKnownLiveText + call ResetColor + ret +bs_print_known_blank: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET bsKnownBlankText + call ResetColor + ret +BuckshotPrintKnown ENDP + +; --- BuckshotStatus: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- +BuckshotStatus PROC + call ClearView + invoke PrintTitleColor, OFFSET buckshotTitle + invoke SetColor, COLOR_CARD + invoke PrintStr, OFFSET bsShotgunArt + call ResetColor + invoke PrintStr, OFFSET bsHPText + invoke PrintUInt, bsPlayerHP + invoke PrintStr, OFFSET bsAIHPText + invoke PrintUInt, bsAIHP + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET bsShellInfoText + invoke PrintUInt, bsLiveCount + invoke PrintStr, OFFSET bsLiveText + invoke PrintUInt, bsBlankCount + invoke PrintStr, OFFSET bsBlankText + invoke PrintStr, OFFSET bsLeftText + call BuckshotRemaining + invoke PrintUInt, eax + invoke PrintStr, OFFSET nl + call BuckshotPrintKnown + invoke PrintStr, OFFSET bsItemsText + invoke PrintUInt, bsPlayerGlass + invoke PrintStr, OFFSET bsSawText + invoke PrintUInt, bsPlayerSaw + invoke PrintStr, OFFSET bsBeerText + invoke PrintUInt, bsPlayerBeer + invoke PrintStr, OFFSET bsCuffsText + invoke PrintUInt, bsPlayerCuffs + invoke PrintStr, OFFSET nl + ret +BuckshotStatus ENDP + +; --- BuckshotAfterShotTurn: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- +BuckshotAfterShotTurn PROC + cmp bsShell, 1 + je bs_after_switch + cmp bsTurn, 0 + je bs_after_player_blank + cmp bsTarget, 1 + je bs_after_keep + jmp bs_after_switch +bs_after_player_blank: + cmp bsTarget, 0 + je bs_after_keep +bs_after_switch: + xor bsTurn, 1 +bs_after_keep: + cmp bsTurn, 0 + je bs_check_skip_player + cmp bsSkipAI, 0 + je bs_after_done + mov bsSkipAI, 0 + invoke PrintStr, OFFSET bsSkipAIText + invoke Sleep, 800 + mov bsTurn, 0 + ret +bs_check_skip_player: + cmp bsSkipPlayer, 0 + je bs_after_done + mov bsSkipPlayer, 0 + invoke PrintStr, OFFSET bsSkipPlayerText + invoke Sleep, 800 + mov bsTurn, 1 +bs_after_done: + ret +BuckshotAfterShotTurn ENDP + +; --- BuckshotShoot: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- +BuckshotShoot PROC uses eax ebx + call BuckshotCurrentShell + mov bsShell, eax + cmp bsTarget, 0 + je bs_shoot_player_text + invoke PrintStr, OFFSET bsShootAIText + jmp bs_shoot_text_done +bs_shoot_player_text: + invoke PrintStr, OFFSET bsShootPlayerText +bs_shoot_text_done: + cmp bsShell, 1 + je bs_live_shot + call AnimateBuckshotDry + call PlayRouletteDrySound + invoke PrintStr, OFFSET bsDryText + call BuckshotAdvance + invoke Sleep, 900 + call BuckshotAfterShotTurn + ret +bs_live_shot: + call AnimateBuckshotFire + call PlayRouletteShotSound + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET bsHitText + invoke PrintUInt, bsDamage + invoke PrintStr, OFFSET nl + call ResetColor + mov eax, bsDamage + cmp bsTarget, 0 + je bs_damage_player + cmp bsAIHP, eax + ja bs_sub_ai + mov bsAIHP, 0 + jmp bs_damage_done +bs_sub_ai: + sub bsAIHP, eax + jmp bs_damage_done +bs_damage_player: + cmp bsPlayerHP, eax + ja bs_sub_player + mov bsPlayerHP, 0 + jmp bs_damage_done +bs_sub_player: + sub bsPlayerHP, eax +bs_damage_done: + call BuckshotAdvance + invoke Sleep, 1000 + call BuckshotAfterShotTurn + ret +BuckshotShoot ENDP + +; --- BuckshotUseGlass: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- +BuckshotUseGlass PROC + call BuckshotCurrentShell + mov bsKnownShell, eax + invoke PrintStr, OFFSET bsGlassUseText + call BuckshotPrintKnown + invoke Sleep, 1000 + ret +BuckshotUseGlass ENDP + +; --- BuckshotUseBeer: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- +BuckshotUseBeer PROC + call BuckshotCurrentShell + mov bsShell, eax + invoke PrintStr, OFFSET bsBeerUseText + cmp bsShell, 1 + je bs_beer_live + invoke PrintStr, OFFSET bsBlankLoadedText + jmp bs_beer_done +bs_beer_live: + invoke PrintStr, OFFSET bsLiveLoadedText +bs_beer_done: + call BuckshotAdvance + invoke Sleep, 1000 + ret +BuckshotUseBeer ENDP + +; --- BuckshotPlayerTurn: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- +BuckshotPlayerTurn PROC +bs_player_again: + call BuckshotStatus + invoke PrintStr, OFFSET bsPlayerTurnText + invoke PrintStr, OFFSET bsMenuText + call ReadKey + cmp al, '1' + je bs_player_self + cmp al, '2' + je bs_player_ai + cmp al, '3' + je bs_player_glass + cmp al, '4' + je bs_player_saw + cmp al, '5' + je bs_player_beer + cmp al, '6' + je bs_player_cuffs + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp bs_player_again +bs_player_self: + mov bsTarget, 0 + call BuckshotShoot + ret +bs_player_ai: + mov bsTarget, 1 + call BuckshotShoot + ret +bs_player_glass: + cmp bsPlayerGlass, 0 + je bs_player_no_item + dec bsPlayerGlass + call BuckshotUseGlass + jmp bs_player_again +bs_player_saw: + cmp bsPlayerSaw, 0 + je bs_player_no_item + dec bsPlayerSaw + mov bsDamage, 2 + invoke PrintStr, OFFSET bsSawUseText + invoke Sleep, 900 + jmp bs_player_again +bs_player_beer: + cmp bsPlayerBeer, 0 + je bs_player_no_item + dec bsPlayerBeer + call BuckshotUseBeer + call BuckshotRemaining + cmp eax, 0 + je bs_player_done + jmp bs_player_again +bs_player_cuffs: + cmp bsPlayerCuffs, 0 + je bs_player_no_item + dec bsPlayerCuffs + mov bsSkipAI, 1 + invoke PrintStr, OFFSET bsCuffsUseText + invoke Sleep, 900 + jmp bs_player_again +bs_player_no_item: + invoke PrintStr, OFFSET bsNoItemText + invoke Sleep, 800 + jmp bs_player_again +bs_player_done: + ret +BuckshotPlayerTurn ENDP + +; --- BuckshotAITurn: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- +BuckshotAITurn PROC + call BuckshotStatus + invoke PrintStr, OFFSET bsAITurnText + invoke Sleep, 900 + cmp bsKnownShell, 0FFFFFFFFh + jne bs_ai_known + cmp bsAIGlass, 0 + je bs_ai_no_glass + dec bsAIGlass + invoke PrintStr, OFFSET bsAIGlassText + call BuckshotUseGlass +bs_ai_no_glass: +bs_ai_known: + cmp bsKnownShell, 1 + je bs_ai_live + cmp bsKnownShell, 0 + je bs_ai_blank + mov eax, bsLiveCount + cmp eax, bsBlankCount + jae bs_ai_live +bs_ai_blank: + mov bsTarget, 1 + call BuckshotShoot + ret +bs_ai_live: + cmp bsAISaw, 0 + je bs_ai_maybe_cuffs + dec bsAISaw + mov bsDamage, 2 + invoke PrintStr, OFFSET bsAISawText + invoke Sleep, 700 +bs_ai_maybe_cuffs: + cmp bsAICuffs, 0 + je bs_ai_shoot_player + dec bsAICuffs + mov bsSkipPlayer, 1 + invoke PrintStr, OFFSET bsAICuffsText + invoke Sleep, 700 +bs_ai_shoot_player: + mov bsTarget, 0 + call BuckshotShoot + ret +BuckshotAITurn ENDP + +; --- GameBuckshot: Buckshot Roulette: ïàòðîíû, ïðåäìåòû, õîäû èãðîêà è ÈÈ --- +GameBuckshot PROC +buckshot_start: + call ClearView + invoke PrintTitleColor, OFFSET buckshotTitle + invoke PrintStr, OFFSET buckshotIntro + call PromptBet + mov bsPlayerHP, 4 + mov bsAIHP, 4 + mov bsTurn, 0 + mov bsDamage, 1 + mov bsSkipPlayer, 0 + mov bsSkipAI, 0 + call BuckshotGiveItems + call PlayRouletteSpinSound + call AnimateBuckshotLoad + call BuckshotLoad +buckshot_loop: + call BuckshotRemaining + cmp eax, 0 + jne buckshot_has_shells + call AnimateBuckshotLoad + call BuckshotLoad +buckshot_has_shells: + cmp bsPlayerHP, 0 + je buckshot_lost + cmp bsAIHP, 0 + je buckshot_won + cmp bsTurn, 0 + je buckshot_player + call BuckshotAITurn + jmp buckshot_loop +buckshot_player: + call BuckshotPlayerTurn + jmp buckshot_loop +buckshot_won: + call BuckshotStatus + invoke PrintStr, OFFSET bsWinText + invoke PaySlotMultiplier, 3 + jmp buckshot_again +buckshot_lost: + call BuckshotStatus + invoke PrintStr, OFFSET bsLoseText + call PayLose +buckshot_again: + call SaveGame + cmp tournamentMode, 1 + je buckshot_tournament_return + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je buckshot_start + cmp al, 'Y' + je buckshot_start +buckshot_tournament_return: + ret +GameBuckshot ENDP +; --- PrintDiceParity: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintDiceParity PROC parity:DWORD + cmp parity, 1 + jne print_dice_odd + invoke PrintStr, OFFSET diceEvenText + ret +print_dice_odd: + invoke PrintStr, OFFSET diceOddText + ret +PrintDiceParity ENDP + +; --- GameDice: êîñòè: áðîñîê, ÷åòíîñòü è ðåçóëüòàò --- +GameDice PROC +dice_start: + call ClearView + invoke PrintTitleColor, OFFSET diceTitle + invoke PrintStr, OFFSET diceIntroText + call PromptBet + +dice_choose: + call ClearView + invoke PrintTitleColor, OFFSET diceTitle + invoke PrintStr, OFFSET diceIntroText + call PrintBank + invoke PrintStr, OFFSET diceChoiceText + call ReadKey + cmp al, '1' + je dice_pick_even + cmp al, '2' + je dice_pick_odd + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp dice_choose + +dice_pick_even: + mov diceChoice, 1 + jmp dice_roll +dice_pick_odd: + mov diceChoice, 2 + +dice_roll: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET diceRollText + call ResetColor + invoke Sleep, 500 + invoke RandomRange, 6 + inc eax + mov diceA, eax + invoke RandomRange, 6 + inc eax + mov diceB, eax + mov eax, diceA + add eax, diceB + mov diceSum, eax + invoke PrintStr, OFFSET diceFirstText + invoke PrintUInt, diceA + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET diceSecondText + invoke PrintUInt, diceB + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET diceSumText + invoke PrintUInt, diceSum + invoke PrintStr, OFFSET nl + mov eax, diceSum + and eax, 1 + cmp eax, 0 + je dice_result_even + mov eax, 2 + jmp dice_compare +dice_result_even: + mov eax, 1 +dice_compare: + cmp eax, diceChoice + je dice_win + call PrintLoseEvent + call PayLose + jmp dice_again +dice_win: + call PrintWinEvent + call PayWin + +dice_again: + cmp tournamentMode, 1 + je dice_tournament_return + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je dice_start + cmp al, 'Y' + je dice_start +dice_tournament_return: + ret +GameDice ENDP +; --- Online Dice: Radmin LAN match without a separate server process --- +onlineTitle db 13,10,"--- Online Casino (Radmin) ---",13,10,0 +onlineMenuText db "1. Host room",13,10,"2. Join room",13,10,"0. Back",13,10,0 +onlineHostInfo db "Give your Radmin IPv4 and port 27015 to your friend.",13,10,"Waiting for one player...",13,10,0 +onlineJoinPrompt db "Host Radmin IPv4: ",0 +onlineConnectingText db "Connecting...",13,10,0 +onlineConnectedText db "Connected.",13,10,0 +onlineYouRollText db "Your roll: ",0 +onlineFriendRollText db "Friend roll: ",0 +onlineWinText db "You win this friendly match.",13,10,0 +onlineLoseText db "Friend wins this friendly match.",13,10,0 +onlineDrawText db "Draw. Same roll.",13,10,0 +onlineErrorText db "Network error. Winsock code: ",0 +onlineBadIpText db "IPv4 address is invalid.",13,10,0 + +OnlineStartWinsock PROC + invoke WSAStartup, 0202h, OFFSET onlineWsaData + test eax, eax + jnz online_start_fail + mov onlineWsaReady, 1 + mov eax, 1 + ret +online_start_fail: + xor eax, eax + ret +OnlineStartWinsock ENDP + +OnlineCleanup PROC + cmp onlinePeerSock, -1 + je online_cleanup_listener + invoke closesocket, onlinePeerSock + mov onlinePeerSock, -1 +online_cleanup_listener: + cmp onlineListenSock, -1 + je online_cleanup_wsa + invoke closesocket, onlineListenSock + mov onlineListenSock, -1 +online_cleanup_wsa: + cmp onlineWsaReady, 1 + jne online_cleanup_done + invoke WSACleanup + mov onlineWsaReady, 0 +online_cleanup_done: + ret +OnlineCleanup ENDP + +OnlineBuildAddress PROC uses eax ecx edi + lea edi, onlineAddr + xor eax, eax + mov ecx, 4 + rep stosd + mov word ptr onlineAddr, AF_INET + mov word ptr onlineAddr+2, ONLINE_PORT_NET + ret +OnlineBuildAddress ENDP + +ReadOnlineIp PROC uses eax ecx esi edi + lea edi, onlineIp + xor eax, eax + mov ecx, 32 + rep stosb + invoke ReadFile, hIn, OFFSET onlineIp, 31, ADDR charsRead, 0 + mov ecx, charsRead + cmp ecx, 31 + jbe online_ip_len_ok + mov ecx, 31 +online_ip_len_ok: + mov byte ptr onlineIp[ecx], 0 + mov esi, OFFSET onlineIp +online_ip_trim: + cmp ecx, 0 + je online_ip_done + mov al, [esi] + cmp al, 13 + je online_ip_end + cmp al, 10 + je online_ip_end + inc esi + dec ecx + jmp online_ip_trim +online_ip_end: + mov byte ptr [esi], 0 +online_ip_done: + ret +ReadOnlineIp ENDP + +NetSendAll PROC uses esi edi, hSocket:DWORD, pData:DWORD, byteCount:DWORD + mov esi, pData + mov edi, byteCount +online_send_loop: + cmp edi, 0 + je online_send_ok + invoke send, hSocket, esi, edi, 0 + test eax, eax + jle online_send_fail + add esi, eax + sub edi, eax + jmp online_send_loop +online_send_ok: + mov eax, 1 + ret +online_send_fail: + xor eax, eax + ret +NetSendAll ENDP + +NetRecvAll PROC uses esi edi, hSocket:DWORD, pData:DWORD, byteCount:DWORD + mov esi, pData + mov edi, byteCount +online_recv_loop: + cmp edi, 0 + je online_recv_ok + invoke recv, hSocket, esi, edi, 0 + test eax, eax + jle online_recv_fail + add esi, eax + sub edi, eax + jmp online_recv_loop +online_recv_ok: + mov eax, 1 + ret +online_recv_fail: + xor eax, eax + ret +NetRecvAll ENDP + +PrintOnlineError PROC + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET onlineErrorText + invoke WSAGetLastError + invoke PrintUInt, eax + invoke PrintStr, OFFSET nl + call ResetColor + ret +PrintOnlineError ENDP + +ShowOnlineResult PROC + call ClearView + invoke PrintTitleColor, OFFSET onlineTitle + invoke PrintStr, OFFSET onlineYouRollText + invoke PrintUInt, onlineLocalRoll + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET onlineFriendRollText + invoke PrintUInt, onlineRemoteRoll + invoke PrintStr, OFFSET nl + mov eax, onlineLocalRoll + cmp eax, onlineRemoteRoll + ja online_result_win + jb online_result_lose + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET onlineDrawText + call ResetColor + jmp online_result_done +online_result_win: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET onlineWinText + call ResetColor + jmp online_result_done +online_result_lose: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET onlineLoseText + call ResetColor +online_result_done: + ret +ShowOnlineResult ENDP + +OnlineHostGameText db "Choose online game:",13,10,"1. Dice 1v1",13,10,"2. Russian Roulette 1v1",13,10,"0. Back",13,10,0 +OnlineModeDiceText db "Room mode: Dice 1v1",13,10,0 +OnlineModeRRText db "Room mode: Russian Roulette 1v1",13,10,0 +OnlineProtocolText db "Players use different online protocol versions.",13,10,0 +OnlineRRYourTurnText db "Your turn. Press any key to pull the trigger...",0 +OnlineRRWaitText db "Friend is holding the revolver. Waiting for the trigger...",13,10,0 +OnlineRRStartsYouText db "The revolver points at you. You shoot first.",13,10,0 +OnlineRRStartsFriendText db "The revolver points at your friend. Friend shoots first.",13,10,0 +OnlineRRWinText db "Your friend caught the loaded chamber. You survived.",13,10,0 +OnlineRRLoseText db "The loaded chamber was yours. You lost.",13,10,0 + +OnlineHostConnect PROC + call OnlineStartWinsock + test eax, eax + jz online_host_connect_error + invoke socket, AF_INET, SOCK_STREAM, IPPROTO_TCP + cmp eax, SOCKET_ERROR + je online_host_connect_error + mov onlineListenSock, eax + call OnlineBuildAddress + invoke bind, onlineListenSock, OFFSET onlineAddr, 16 + test eax, eax + jnz online_host_connect_error + invoke listen, onlineListenSock, 1 + test eax, eax + jnz online_host_connect_error + call ClearView + invoke PrintTitleColor, OFFSET onlineTitle + invoke PrintStr, OFFSET onlineHostInfo + invoke accept, onlineListenSock, 0, 0 + cmp eax, SOCKET_ERROR + je online_host_connect_error + mov onlinePeerSock, eax + invoke closesocket, onlineListenSock + mov onlineListenSock, -1 + invoke PrintStr, OFFSET onlineConnectedText + mov eax, 1 + ret +online_host_connect_error: + call PrintOnlineError + call OnlineCleanup + call Pause + xor eax, eax + ret +OnlineHostConnect ENDP + +OnlineJoinConnect PROC + call OnlineStartWinsock + test eax, eax + jz online_join_connect_error + call ClearView + invoke PrintTitleColor, OFFSET onlineTitle + invoke PrintStr, OFFSET onlineJoinPrompt + call ReadOnlineIp + invoke inet_addr, OFFSET onlineIp + cmp eax, 0FFFFFFFFh + je online_join_connect_bad_ip + mov onlineHostIp, eax + invoke socket, AF_INET, SOCK_STREAM, IPPROTO_TCP + cmp eax, SOCKET_ERROR + je online_join_connect_error + mov onlinePeerSock, eax + call OnlineBuildAddress + mov eax, onlineHostIp + mov dword ptr onlineAddr+4, eax + invoke PrintStr, OFFSET onlineConnectingText + invoke connect, onlinePeerSock, OFFSET onlineAddr, 16 + test eax, eax + jnz online_join_connect_error + invoke PrintStr, OFFSET onlineConnectedText + mov eax, 1 + ret +online_join_connect_bad_ip: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET onlineBadIpText + call ResetColor + call OnlineCleanup + call Pause + xor eax, eax + ret +online_join_connect_error: + call PrintOnlineError + call OnlineCleanup + call Pause + xor eax, eax + ret +OnlineJoinConnect ENDP + +OnlineDiceSessionHost PROC + invoke RandomRange, 6 + inc eax + mov onlinePacket, eax + mov onlineLocalRoll, eax + invoke RandomRange, 6 + inc eax + mov onlinePacket+4, eax + mov onlineRemoteRoll, eax + invoke NetSendAll, onlinePeerSock, OFFSET onlinePacket, 8 + test eax, eax + jz online_dice_host_fail + invoke Sleep, 450 + call ShowOnlineResult + mov eax, 1 + ret +online_dice_host_fail: + xor eax, eax + ret +OnlineDiceSessionHost ENDP + +OnlineDiceSessionClient PROC + invoke NetRecvAll, onlinePeerSock, OFFSET onlinePacket, 8 + test eax, eax + jz online_dice_client_fail + mov eax, onlinePacket+4 + mov onlineLocalRoll, eax + mov eax, onlinePacket + mov onlineRemoteRoll, eax + invoke Sleep, 450 + call ShowOnlineResult + mov eax, 1 + ret +online_dice_client_fail: + xor eax, eax + ret +OnlineDiceSessionClient ENDP + +ShowOnlineRRStatus PROC role:DWORD + call ClearView + invoke PrintTitleColor, OFFSET rouletteTitle + mov eax, rrTurn + cmp eax, role + jne online_rr_status_friend + invoke PrintRevolver, OFFSET rrGunDown + jmp online_rr_status_info +online_rr_status_friend: + invoke PrintRevolver, OFFSET rrGunUp +online_rr_status_info: + invoke PrintStr, OFFSET rrDangerText + invoke PrintUInt, rrBullets + invoke PrintStr, OFFSET nl + ret +ShowOnlineRRStatus ENDP + +AnimateOnlineRRStart PROC role:DWORD + invoke ShowRouletteSpinFrame, OFFSET rrGunUp + invoke ShowRouletteSpinFrame, OFFSET rrGunUpLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunDownLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunDown + invoke ShowRouletteSpinFrame, OFFSET rrGunDownRight + invoke ShowRouletteSpinFrame, OFFSET rrGunRight + invoke ShowRouletteSpinFrame, OFFSET rrGunUpRight + invoke ShowRouletteSpinFrame, OFFSET rrGunUp + invoke ShowRouletteSpinFrame, OFFSET rrGunUpLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunDownLeft + invoke ShowRouletteSpinFrame, OFFSET rrGunDown + invoke ShowRouletteSpinFrame, OFFSET rrGunDownRight + invoke ShowRouletteSpinFrame, OFFSET rrGunRight + invoke ShowRouletteSpinFrame, OFFSET rrGunUpRight + invoke ShowOnlineRRStatus, role + mov eax, rrTurn + cmp eax, role + jne online_rr_start_friend + invoke PrintStr, OFFSET OnlineRRStartsYouText + ret +online_rr_start_friend: + invoke PrintStr, OFFSET OnlineRRStartsFriendText + ret +AnimateOnlineRRStart ENDP + +ShowOnlineRRShot PROC role:DWORD + cmp onlinePacket, 1 + je online_rr_shot_bang + call PlayRouletteDrySound + invoke PrintStr, OFFSET rrClickText + invoke Sleep, 850 + ret +online_rr_shot_bang: + call PrintBang + mov eax, onlinePacket+4 + cmp eax, role + jne online_rr_shot_win + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET OnlineRRLoseText + call ResetColor + ret +online_rr_shot_win: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET OnlineRRWinText + call ResetColor + ret +ShowOnlineRRShot ENDP + +OnlineRRSessionHost PROC + call SetupRoulette + mov eax, rrBullets + mov onlinePacket, eax + mov eax, rrTurn + mov onlinePacket+4, eax + invoke NetSendAll, onlinePeerSock, OFFSET onlinePacket, 8 + test eax, eax + jz online_rr_host_fail + call PlayRouletteSpinSound + invoke AnimateOnlineRRStart, 0 +online_rr_host_loop: + invoke ShowOnlineRRStatus, 0 + cmp rrTurn, 0 + je online_rr_host_own_turn + invoke PrintStr, OFFSET OnlineRRWaitText + invoke NetRecvAll, onlinePeerSock, OFFSET onlineAction, 4 + test eax, eax + jz online_rr_host_fail + jmp online_rr_host_fire +online_rr_host_own_turn: + invoke PrintStr, OFFSET OnlineRRYourTurnText + call ReadAnyKey + invoke PrintStr, OFFSET nl +online_rr_host_fire: + mov onlinePacket, 0 + call RouletteChamberLoaded + cmp eax, 1 + jne online_rr_host_event_ready + mov onlinePacket, 1 +online_rr_host_event_ready: + mov eax, rrTurn + mov onlinePacket+4, eax + invoke NetSendAll, onlinePeerSock, OFFSET onlinePacket, 8 + test eax, eax + jz online_rr_host_fail + invoke ShowOnlineRRShot, 0 + cmp onlinePacket, 1 + je online_rr_host_done + call AdvanceRouletteChamber + xor rrTurn, 1 + jmp online_rr_host_loop +online_rr_host_done: + mov eax, 1 + ret +online_rr_host_fail: + xor eax, eax + ret +OnlineRRSessionHost ENDP + +OnlineRRSessionClient PROC + invoke NetRecvAll, onlinePeerSock, OFFSET onlinePacket, 8 + test eax, eax + jz online_rr_client_fail + mov eax, onlinePacket + mov rrBullets, eax + mov eax, onlinePacket+4 + mov rrTurn, eax + call PlayRouletteSpinSound + invoke AnimateOnlineRRStart, 1 +online_rr_client_loop: + invoke ShowOnlineRRStatus, 1 + cmp rrTurn, 1 + jne online_rr_client_wait + invoke PrintStr, OFFSET OnlineRRYourTurnText + call ReadAnyKey + invoke PrintStr, OFFSET nl + mov onlineAction, 1 + invoke NetSendAll, onlinePeerSock, OFFSET onlineAction, 4 + test eax, eax + jz online_rr_client_fail + jmp online_rr_client_receive +online_rr_client_wait: + invoke PrintStr, OFFSET OnlineRRWaitText +online_rr_client_receive: + invoke NetRecvAll, onlinePeerSock, OFFSET onlinePacket, 8 + test eax, eax + jz online_rr_client_fail + mov eax, onlinePacket+4 + mov rrTurn, eax + invoke ShowOnlineRRShot, 1 + cmp onlinePacket, 1 + je online_rr_client_done + xor rrTurn, 1 + jmp online_rr_client_loop +online_rr_client_done: + mov eax, 1 + ret +online_rr_client_fail: + xor eax, eax + ret +OnlineRRSessionClient ENDP + +GameOnlineCasino PROC +online_casino_menu: + call ClearView + invoke PrintTitleColor, OFFSET onlineTitle + invoke PrintStr, OFFSET onlineMenuText + invoke PrintStr, OFFSET choiceText + call ReadKey + cmp al, '1' + je online_casino_host_choose + cmp al, '2' + je online_casino_join + cmp al, '0' + je online_casino_done + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET badChoiceText + call ResetColor + invoke Sleep, 650 + jmp online_casino_menu +online_casino_host_choose: + call ClearView + invoke PrintTitleColor, OFFSET onlineTitle + invoke PrintStr, OFFSET OnlineHostGameText + invoke PrintStr, OFFSET choiceText + call ReadKey + cmp al, '1' + je online_casino_host_dice + cmp al, '2' + je online_casino_host_rr + cmp al, '0' + je online_casino_menu + invoke PrintStr, OFFSET badChoiceText + invoke Sleep, 650 + jmp online_casino_host_choose +online_casino_host_dice: + mov onlineGameMode, ONLINE_GAME_DICE + jmp online_casino_host_connect +online_casino_host_rr: + mov onlineGameMode, ONLINE_GAME_RR +online_casino_host_connect: + call OnlineHostConnect + test eax, eax + jz online_casino_done + mov onlinePacket, ONLINE_MAGIC + mov eax, onlineGameMode + mov onlinePacket+4, eax + invoke NetSendAll, onlinePeerSock, OFFSET onlinePacket, 8 + test eax, eax + jz online_casino_session_error + cmp onlineGameMode, ONLINE_GAME_DICE + je online_casino_run_host_dice + invoke PrintStr, OFFSET OnlineModeRRText + call OnlineRRSessionHost + jmp online_casino_session_done +online_casino_run_host_dice: + invoke PrintStr, OFFSET OnlineModeDiceText + call OnlineDiceSessionHost + jmp online_casino_session_done +online_casino_join: + call OnlineJoinConnect + test eax, eax + jz online_casino_done + invoke NetRecvAll, onlinePeerSock, OFFSET onlinePacket, 8 + test eax, eax + jz online_casino_session_error + cmp onlinePacket, ONLINE_MAGIC + jne online_casino_protocol_error + mov eax, onlinePacket+4 + mov onlineGameMode, eax + cmp eax, ONLINE_GAME_DICE + je online_casino_run_client_dice + cmp eax, ONLINE_GAME_RR + je online_casino_run_client_rr + jmp online_casino_protocol_error +online_casino_run_client_dice: + invoke PrintStr, OFFSET OnlineModeDiceText + call OnlineDiceSessionClient + jmp online_casino_session_done +online_casino_run_client_rr: + invoke PrintStr, OFFSET OnlineModeRRText + call OnlineRRSessionClient +online_casino_session_done: + test eax, eax + jz online_casino_session_error + call OnlineCleanup + call Pause + ret +online_casino_protocol_error: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET OnlineProtocolText + call ResetColor + call OnlineCleanup + call Pause + ret +online_casino_session_error: + call PrintOnlineError + call OnlineCleanup + call Pause +online_casino_done: + ret +GameOnlineCasino ENDP + +; --- PrintCoinSide: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintCoinSide PROC side:DWORD + cmp side, 1 + jne print_coin_tails + invoke PrintStr, OFFSET coinHeadsText + ret +print_coin_tails: + invoke PrintStr, OFFSET coinTailsText + ret +PrintCoinSide ENDP + +; --- ShowCoinFlipFrame: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +ShowCoinFlipFrame PROC uses eax, pFrame:DWORD + call ClearView + invoke PrintTitleColor, OFFSET coinTitle + invoke PrintStr, OFFSET coinIntroText + call PrintBank + invoke PrintStr, OFFSET coinPickText + invoke PrintCoinSide, coinPick + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET coinSpinText + mov eax, pFrame + invoke PrintStr, eax + call ResetColor + invoke Sleep, 170 + ret +ShowCoinFlipFrame ENDP + +; --- AnimateCoinFlip: îðåë è ðåøêà: âûáîð ñòîðîíû, çâóê è àíèìàöèÿ ìîíåòû --- +AnimateCoinFlip PROC + invoke ShowCoinFlipFrame, OFFSET coinFrame1 + invoke ShowCoinFlipFrame, OFFSET coinFrame2 + invoke ShowCoinFlipFrame, OFFSET coinFrame3 + invoke ShowCoinFlipFrame, OFFSET coinFrame4 + invoke ShowCoinFlipFrame, OFFSET coinFrame5 + invoke ShowCoinFlipFrame, OFFSET coinFrame6 + invoke ShowCoinFlipFrame, OFFSET coinFrame7 + invoke ShowCoinFlipFrame, OFFSET coinFrame8 + invoke ShowCoinFlipFrame, OFFSET coinFrame9 + invoke ShowCoinFlipFrame, OFFSET coinFrame10 + invoke ShowCoinFlipFrame, OFFSET coinFrame11 + invoke ShowCoinFlipFrame, OFFSET coinFrame12 + invoke ShowCoinFlipFrame, OFFSET coinFrame13 + invoke ShowCoinFlipFrame, OFFSET coinFrame14 + ret +AnimateCoinFlip ENDP + +; --- GameCoin: îðåë è ðåøêà: âûáîð ñòîðîíû, çâóê è àíèìàöèÿ ìîíåòû --- +GameCoin PROC +coin_start: + call ClearView + invoke PrintTitleColor, OFFSET coinTitle + invoke PrintStr, OFFSET coinIntroText + call PromptBet + +coin_choose: + call ClearView + invoke PrintTitleColor, OFFSET coinTitle + invoke PrintStr, OFFSET coinIntroText + call PrintBank + invoke PrintStr, OFFSET coinChoiceText + call ReadKey + cmp al, '1' + je coin_pick_heads + cmp al, '2' + je coin_pick_tails + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp coin_choose + +coin_pick_heads: + mov coinPick, 1 + jmp coin_flip +coin_pick_tails: + mov coinPick, 2 + +coin_flip: + invoke PrintStr, OFFSET coinPickText + invoke PrintCoinSide, coinPick + call PlayCoinSound + call AnimateCoinFlip + invoke RandomRange, 2 + inc eax + mov coinResult, eax + invoke PrintStr, OFFSET coinResultText + invoke PrintCoinSide, coinResult + mov eax, coinPick + cmp eax, coinResult + je coin_win + call PrintLoseEvent + call PayLose + jmp coin_again +coin_win: + call PrintWinEvent + call PayWin + +coin_again: + cmp tournamentMode, 1 + je coin_tournament_return + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je coin_start + cmp al, 'Y' + je coin_start +coin_tournament_return: + ret +GameCoin ENDP + +; --- PrintRouletteColorName: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintRouletteColorName PROC uses eax ebx, value:DWORD + mov eax, value + cmp eax, 0 + jne roulette_color_not_zero + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET rouletteGreenName + call ResetColor + ret +roulette_color_not_zero: + movzx ebx, byte ptr [rouletteColors + eax] + cmp ebx, 1 + jne roulette_color_black + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET rouletteRedName + call ResetColor + ret +roulette_color_black: + invoke SetColor, COLOR_CARD + invoke PrintStr, OFFSET rouletteBlackName + call ResetColor + ret +PrintRouletteColorName ENDP + +; --- PrintRouletteNumberColored: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintRouletteNumberColored PROC uses eax ebx, value:DWORD + mov eax, value + cmp eax, 0 + jne roulette_number_not_zero + invoke SetColor, COLOR_MONEY + jmp roulette_number_print +roulette_number_not_zero: + movzx ebx, byte ptr [rouletteColors + eax] + cmp ebx, 1 + jne roulette_number_black + invoke SetColor, COLOR_BAD + jmp roulette_number_print +roulette_number_black: + invoke SetColor, COLOR_CARD +roulette_number_print: + invoke PrintUInt, value + call ResetColor + ret +PrintRouletteNumberColored ENDP + +; --- PrintRoulettePocket: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintRoulettePocket PROC uses eax, wheelIndex:DWORD + invoke PrintStr, OFFSET roulettePocketLeft + mov eax, wheelIndex + mov eax, [rouletteWheel + eax * 4] + push eax + cmp eax, 10 + jae roulette_pocket_no_pad + invoke PrintStr, OFFSET rouletteNumSpace +roulette_pocket_no_pad: + pop eax + invoke PrintRouletteNumberColored, eax + invoke PrintStr, OFFSET roulettePocketRight + ret +PrintRoulettePocket ENDP + +; --- PrintRoulettePocketOffset: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintRoulettePocketOffset PROC uses eax, wheelOffset:DWORD + mov eax, casinoRouletteSpinIndex + add eax, wheelOffset +roulette_offset_wrap: + cmp eax, 37 + jb roulette_offset_ready + sub eax, 37 + jmp roulette_offset_wrap +roulette_offset_ready: + invoke PrintRoulettePocket, eax + ret +PrintRoulettePocketOffset ENDP + +; --- PrintRouletteTopRow: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintRouletteTopRow PROC + invoke PrintStr, OFFSET casinoRoulettePad + invoke PrintRoulettePocketOffset, 31 + invoke PrintRoulettePocketOffset, 32 + invoke PrintRoulettePocketOffset, 33 + invoke PrintRoulettePocketOffset, 34 + invoke PrintRoulettePocketOffset, 35 + invoke PrintRoulettePocketOffset, 36 + invoke PrintRoulettePocketOffset, 0 + invoke PrintRoulettePocketOffset, 1 + invoke PrintRoulettePocketOffset, 2 + invoke PrintRoulettePocketOffset, 3 + invoke PrintRoulettePocketOffset, 4 + invoke PrintRoulettePocketOffset, 5 + invoke PrintRoulettePocketOffset, 6 + invoke PrintStr, OFFSET nl + ret +PrintRouletteTopRow ENDP + +; --- PrintRouletteBottomRow: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintRouletteBottomRow PROC + invoke PrintStr, OFFSET casinoRoulettePad + invoke PrintRoulettePocketOffset, 24 + invoke PrintRoulettePocketOffset, 23 + invoke PrintRoulettePocketOffset, 22 + invoke PrintRoulettePocketOffset, 21 + invoke PrintRoulettePocketOffset, 20 + invoke PrintRoulettePocketOffset, 19 + invoke PrintRoulettePocketOffset, 18 + invoke PrintRoulettePocketOffset, 17 + invoke PrintRoulettePocketOffset, 16 + invoke PrintRoulettePocketOffset, 15 + invoke PrintRoulettePocketOffset, 14 + invoke PrintRoulettePocketOffset, 13 + invoke PrintStr, OFFSET nl + ret +PrintRouletteBottomRow ENDP + +; --- PrintRouletteSideRow: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintRouletteSideRow PROC leftOffset:DWORD, pGap:DWORD, rightOffset:DWORD + invoke SetColor, COLOR_WOOD + invoke PrintStr, OFFSET rouletteBigSidePad + call ResetColor + invoke PrintRoulettePocketOffset, leftOffset + invoke SetColor, COLOR_TABLE + invoke PrintStr, pGap + call ResetColor + invoke PrintRoulettePocketOffset, rightOffset + invoke PrintStr, OFFSET nl + ret +PrintRouletteSideRow ENDP + +; --- ShowCasinoRouletteFrame: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +ShowCasinoRouletteFrame PROC + call ClearView + invoke PrintTitleColor, OFFSET casinoRouletteTitle + invoke SetColor, COLOR_WOOD + invoke PrintStr, OFFSET casinoRouletteWheelTop + call ResetColor + call PrintRouletteTopRow + invoke PrintRouletteSideRow, 30, OFFSET rouletteBigSideGap1, 7 + invoke PrintRouletteSideRow, 29, OFFSET rouletteBigSideGap2, 8 + invoke PrintRouletteSideRow, 28, OFFSET rouletteBigSideGap3, 9 + invoke PrintRouletteSideRow, 27, OFFSET rouletteBigSideGap4, 10 + invoke PrintRouletteSideRow, 26, OFFSET rouletteBigSideGap5, 11 + invoke PrintRouletteSideRow, 25, OFFSET rouletteBigSideGap6, 12 + call PrintRouletteBottomRow + invoke SetColor, COLOR_WOOD + invoke PrintStr, OFFSET casinoRouletteWheelBottom + call ResetColor + invoke PrintStr, OFFSET casinoRouletteSpinText + ret +ShowCasinoRouletteFrame ENDP + +; --- AnimateCasinoRouletteSpin: ðóññêàÿ ðóëåòêà èëè êàçèíî-ðóëåòêà --- +AnimateCasinoRouletteSpin PROC uses eax ebx edx + invoke GetTickCount + xor seed, eax + invoke RandomRange, 37 + mov casinoRouletteResultIndex, eax + mov ebx, eax + mov eax, [rouletteWheel + ebx * 4] + mov casinoRouletteResult, eax + + invoke RandomRange, 18 + add eax, 72 + mov casinoRouletteSpinSteps, eax + mov casinoRouletteSpinCounter, eax + + xor edx, edx + mov ebx, 37 + div ebx + mov eax, casinoRouletteResultIndex + add eax, 37 + sub eax, edx + cmp eax, 37 + jb casino_roulette_start_ready + sub eax, 37 +casino_roulette_start_ready: + mov casinoRouletteSpinIndex, eax + +casino_roulette_spin_loop: + inc casinoRouletteSpinIndex + cmp casinoRouletteSpinIndex, 37 + jb casino_roulette_spin_index_ok + mov casinoRouletteSpinIndex, 0 +casino_roulette_spin_index_ok: + call ShowCasinoRouletteFrame + mov eax, casinoRouletteSpinCounter + cmp eax, 12 + jbe casino_roulette_sleep_slow + cmp eax, 26 + jbe casino_roulette_sleep_mid + invoke Sleep, 45 + jmp casino_roulette_after_sleep +casino_roulette_sleep_mid: + invoke Sleep, 95 + jmp casino_roulette_after_sleep +casino_roulette_sleep_slow: + invoke Sleep, 170 +casino_roulette_after_sleep: + dec casinoRouletteSpinCounter + cmp casinoRouletteSpinCounter, 0 + jne casino_roulette_spin_loop + mov ebx, casinoRouletteSpinIndex + mov casinoRouletteResultIndex, ebx + mov eax, [rouletteWheel + ebx * 4] + mov casinoRouletteResult, eax + ret +AnimateCasinoRouletteSpin ENDP + +; --- CasinoRouletteEvaluate: ðóññêàÿ ðóëåòêà èëè êàçèíî-ðóëåòêà --- +CasinoRouletteEvaluate PROC uses eax ebx edx + invoke PrintStr, OFFSET casinoRouletteResultText + invoke PrintRouletteNumberColored, casinoRouletteResult + invoke PrintStr, OFFSET rouletteNumSpace + invoke PrintRouletteColorName, casinoRouletteResult + + mov eax, casinoRouletteBetType + cmp eax, 1 + je casino_roulette_eval_number + cmp eax, 2 + je casino_roulette_eval_red + cmp eax, 3 + je casino_roulette_eval_black + cmp eax, 4 + je casino_roulette_eval_even + cmp eax, 5 + je casino_roulette_eval_odd + cmp eax, 6 + je casino_roulette_eval_dozen1 + cmp eax, 7 + je casino_roulette_eval_dozen2 + cmp eax, 8 + je casino_roulette_eval_dozen3 + cmp eax, 9 + je casino_roulette_eval_low + cmp eax, 10 + je casino_roulette_eval_high + cmp eax, 11 + je casino_roulette_eval_col1 + cmp eax, 12 + je casino_roulette_eval_col2 + cmp eax, 13 + je casino_roulette_eval_col3 + jmp casino_roulette_lost + +casino_roulette_eval_number: + mov eax, casinoRouletteResult + cmp eax, casinoRouletteBetNumber + jne casino_roulette_lost + invoke UnlockAchievement, 800h, OFFSET achRouletteWinName + invoke PrintStr, OFFSET casinoRouletteWinText + invoke PaySlotMultiplier, 35 + ret + +casino_roulette_eval_red: + mov eax, casinoRouletteResult + movzx ebx, byte ptr [rouletteColors + eax] + cmp ebx, 1 + je casino_roulette_won_even_money + jmp casino_roulette_lost + +casino_roulette_eval_black: + mov eax, casinoRouletteResult + movzx ebx, byte ptr [rouletteColors + eax] + cmp ebx, 2 + je casino_roulette_won_even_money + jmp casino_roulette_lost + +casino_roulette_eval_even: + mov eax, casinoRouletteResult + cmp eax, 0 + je casino_roulette_lost + test eax, 1 + jz casino_roulette_won_even_money + jmp casino_roulette_lost + +casino_roulette_eval_odd: + mov eax, casinoRouletteResult + cmp eax, 0 + je casino_roulette_lost + test eax, 1 + jnz casino_roulette_won_even_money + jmp casino_roulette_lost + +casino_roulette_eval_dozen1: + mov eax, casinoRouletteResult + cmp eax, 1 + jb casino_roulette_lost + cmp eax, 12 + jbe casino_roulette_won_double + jmp casino_roulette_lost +casino_roulette_eval_dozen2: + mov eax, casinoRouletteResult + cmp eax, 13 + jb casino_roulette_lost + cmp eax, 24 + jbe casino_roulette_won_double + jmp casino_roulette_lost +casino_roulette_eval_dozen3: + mov eax, casinoRouletteResult + cmp eax, 25 + jb casino_roulette_lost + cmp eax, 36 + jbe casino_roulette_won_double + jmp casino_roulette_lost +casino_roulette_eval_low: + mov eax, casinoRouletteResult + cmp eax, 1 + jb casino_roulette_lost + cmp eax, 18 + jbe casino_roulette_won_even_money + jmp casino_roulette_lost +casino_roulette_eval_high: + mov eax, casinoRouletteResult + cmp eax, 36 + jbe casino_roulette_won_even_money + jmp casino_roulette_lost +casino_roulette_eval_col1: + mov eax, casinoRouletteResult + cmp eax, 0 + je casino_roulette_lost + dec eax + xor edx, edx + mov ebx, 3 + div ebx + cmp edx, 0 + je casino_roulette_won_double + jmp casino_roulette_lost +casino_roulette_eval_col2: + mov eax, casinoRouletteResult + cmp eax, 0 + je casino_roulette_lost + dec eax + xor edx, edx + mov ebx, 3 + div ebx + cmp edx, 1 + je casino_roulette_won_double + jmp casino_roulette_lost +casino_roulette_eval_col3: + mov eax, casinoRouletteResult + cmp eax, 0 + je casino_roulette_lost + dec eax + xor edx, edx + mov ebx, 3 + div ebx + cmp edx, 2 + je casino_roulette_won_double + jmp casino_roulette_lost + +casino_roulette_won_double: + invoke UnlockAchievement, 800h, OFFSET achRouletteWinName + invoke PrintStr, OFFSET casinoRouletteWinText + invoke PaySlotMultiplier, 2 + ret +casino_roulette_won_even_money: + invoke UnlockAchievement, 800h, OFFSET achRouletteWinName + invoke PrintStr, OFFSET casinoRouletteWinText + call PayWin + ret +casino_roulette_lost: + invoke PrintStr, OFFSET casinoRouletteLoseText + call PayLose + ret +CasinoRouletteEvaluate ENDP + +; --- GameCasinoRoulette: ðóññêàÿ ðóëåòêà èëè êàçèíî-ðóëåòêà --- +GameCasinoRoulette PROC +casino_roulette_start: + call ClearView + invoke PrintTitleColor, OFFSET casinoRouletteTitle + invoke PrintStr, OFFSET casinoRouletteIntro + call PromptBet + +casino_roulette_choose: + call ClearView + invoke PrintTitleColor, OFFSET casinoRouletteTitle + invoke PrintStr, OFFSET casinoRouletteIntro + call PrintBank + invoke PrintStr, OFFSET casinoRouletteBetMenu + call ReadUInt + cmp eax, 1 + je casino_roulette_choose_number + cmp eax, 2 + je casino_roulette_choose_red + cmp eax, 3 + je casino_roulette_choose_black + cmp eax, 4 + je casino_roulette_choose_even + cmp eax, 5 + je casino_roulette_choose_odd + cmp eax, 6 + je casino_roulette_choose_dozen1 + cmp eax, 7 + je casino_roulette_choose_dozen2 + cmp eax, 8 + je casino_roulette_choose_dozen3 + cmp eax, 9 + je casino_roulette_choose_low + cmp eax, 10 + je casino_roulette_choose_high + cmp eax, 11 + je casino_roulette_choose_col1 + cmp eax, 12 + je casino_roulette_choose_col2 + cmp eax, 13 + je casino_roulette_choose_col3 + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp casino_roulette_choose + +casino_roulette_choose_number: + mov casinoRouletteBetType, 1 + invoke PrintStr, OFFSET casinoRouletteNumberAsk + call ReadUInt + cmp eax, 36 + ja casino_roulette_bad_number + mov casinoRouletteBetNumber, eax + jmp casino_roulette_spin +casino_roulette_bad_number: + invoke PrintStr, OFFSET casinoRouletteBadNumber + call Pause + jmp casino_roulette_choose + +casino_roulette_choose_red: + mov casinoRouletteBetType, 2 + jmp casino_roulette_spin +casino_roulette_choose_black: + mov casinoRouletteBetType, 3 + jmp casino_roulette_spin +casino_roulette_choose_even: + mov casinoRouletteBetType, 4 + jmp casino_roulette_spin +casino_roulette_choose_odd: + mov casinoRouletteBetType, 5 + jmp casino_roulette_spin +casino_roulette_choose_dozen1: + mov casinoRouletteBetType, 6 + jmp casino_roulette_spin +casino_roulette_choose_dozen2: + mov casinoRouletteBetType, 7 + jmp casino_roulette_spin +casino_roulette_choose_dozen3: + mov casinoRouletteBetType, 8 + jmp casino_roulette_spin +casino_roulette_choose_low: + mov casinoRouletteBetType, 9 + jmp casino_roulette_spin +casino_roulette_choose_high: + mov casinoRouletteBetType, 10 + jmp casino_roulette_spin +casino_roulette_choose_col1: + mov casinoRouletteBetType, 11 + jmp casino_roulette_spin +casino_roulette_choose_col2: + mov casinoRouletteBetType, 12 + jmp casino_roulette_spin +casino_roulette_choose_col3: + mov casinoRouletteBetType, 13 + +casino_roulette_spin: + call PlayCasinoRouletteSound + call AnimateCasinoRouletteSpin + call CasinoRouletteEvaluate + +casino_roulette_again: + cmp tournamentMode, 1 + je casino_roulette_tournament_return + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je casino_roulette_start + cmp al, 'Y' + je casino_roulette_start +casino_roulette_tournament_return: + ret +GameCasinoRoulette ENDP +; --- SlotApplyWin: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- +SlotApplyWin PROC uses ebx ecx edx, pName:DWORD, multiplier:DWORD, maskValue:DWORD + mov eax, pName + cmp eax, OFFSET slotComboJackpot + je slot_apply_jackpot + + mov eax, maskValue + mov ebx, slotBlockMask + mov ecx, eax + and ecx, ebx + cmp ecx, eax + je slot_apply_skip + or slotBlockMask, eax + jmp slot_apply_record + +slot_apply_jackpot: + mov slotJackpotHit, 1 + mov eax, maskValue + +slot_apply_record: + or slotWinMask, eax + mov ebx, slotMatch + mov eax, slotSymbolValues[ebx * 4] + mov ebx, multiplier + mul ebx + mov edx, eax + add slotBestMultiplier, edx + + mov ebx, slotComboCount + cmp ebx, 32 + jae slot_apply_no_store + mov eax, pName + mov slotComboNames[ebx * 4], eax + mov slotComboMults[ebx * 4], edx + inc slotComboCount +slot_apply_no_store: + mov eax, 1 + ret + +slot_apply_skip: + xor eax, eax + ret +SlotApplyWin ENDP + +; --- SlotSame3: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- +SlotSame3 PROC uses ebx ecx edx, i1:DWORD, i2:DWORD, i3:DWORD + mov ebx, i1 + mov eax, slotGrid[ebx * 4] + mov ecx, i2 + cmp eax, slotGrid[ecx * 4] + jne slot_same3_no + mov edx, i3 + cmp eax, slotGrid[edx * 4] + jne slot_same3_no + mov eax, 1 + ret +slot_same3_no: + xor eax, eax + ret +SlotSame3 ENDP + +; --- SlotSame4: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- +SlotSame4 PROC uses ebx ecx edx, i1:DWORD, i2:DWORD, i3:DWORD, i4:DWORD + mov ebx, i1 + mov eax, slotGrid[ebx * 4] + mov ecx, i2 + cmp eax, slotGrid[ecx * 4] + jne slot_same4_no + mov edx, i3 + cmp eax, slotGrid[edx * 4] + jne slot_same4_no + mov ebx, i4 + cmp eax, slotGrid[ebx * 4] + jne slot_same4_no + mov eax, 1 + ret +slot_same4_no: + xor eax, eax + ret +SlotSame4 ENDP + +; --- SlotSame5: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- +SlotSame5 PROC uses ebx ecx edx, i1:DWORD, i2:DWORD, i3:DWORD, i4:DWORD, i5:DWORD + mov ebx, i1 + mov eax, slotGrid[ebx * 4] + mov ecx, i2 + cmp eax, slotGrid[ecx * 4] + jne slot_same5_no + mov edx, i3 + cmp eax, slotGrid[edx * 4] + jne slot_same5_no + mov ebx, i4 + cmp eax, slotGrid[ebx * 4] + jne slot_same5_no + mov ecx, i5 + cmp eax, slotGrid[ecx * 4] + jne slot_same5_no + mov eax, 1 + ret +slot_same5_no: + xor eax, eax + ret +SlotSame5 ENDP + +; --- SlotAllSame15: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- +SlotAllSame15 PROC uses ebx ecx + mov eax, slotGrid + mov ebx, 1 +slot_all15_loop: + cmp ebx, 15 + jae slot_all15_yes + mov ecx, slotGrid[ebx * 4] + cmp eax, ecx + jne slot_all15_no + inc ebx + jmp slot_all15_loop +slot_all15_yes: + mov eax, 1 + ret +slot_all15_no: + xor eax, eax + ret +SlotAllSame15 ENDP + +; --- SlotTry3: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- +SlotTry3 PROC uses ebx, pName:DWORD, multiplier:DWORD, maskValue:DWORD, i1:DWORD, i2:DWORD, i3:DWORD + invoke SlotSame3, i1, i2, i3 + cmp eax, 0 + je slot_try3_no + mov ebx, i1 + mov eax, slotGrid[ebx * 4] + mov slotMatch, eax + invoke SlotApplyWin, pName, multiplier, maskValue + ret +slot_try3_no: + xor eax, eax + ret +SlotTry3 ENDP + +; --- SlotTry4: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- +SlotTry4 PROC uses ebx, pName:DWORD, multiplier:DWORD, maskValue:DWORD, i1:DWORD, i2:DWORD, i3:DWORD, i4:DWORD + invoke SlotSame4, i1, i2, i3, i4 + cmp eax, 0 + je slot_try4_no + mov ebx, i1 + mov eax, slotGrid[ebx * 4] + mov slotMatch, eax + invoke SlotApplyWin, pName, multiplier, maskValue + ret +slot_try4_no: + xor eax, eax + ret +SlotTry4 ENDP + +; --- SlotTry5: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- +SlotTry5 PROC uses ebx, pName:DWORD, multiplier:DWORD, maskValue:DWORD, i1:DWORD, i2:DWORD, i3:DWORD, i4:DWORD, i5:DWORD + invoke SlotSame5, i1, i2, i3, i4, i5 + cmp eax, 0 + je slot_try5_no + mov ebx, i1 + mov eax, slotGrid[ebx * 4] + mov slotMatch, eax + invoke SlotApplyWin, pName, multiplier, maskValue + ret +slot_try5_no: + xor eax, eax + ret +SlotTry5 ENDP + +; --- EvaluateSlotCombos: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- +EvaluateSlotCombos PROC + mov slotWinMask, 0 + mov slotBlockMask, 0 + mov slotBestMultiplier, 0 + mov slotComboNamePtr, 0 + mov slotComboCount, 0 + mov slotJackpotHit, 0 + + call SlotAllSame15 + cmp eax, 0 + je slot_eval_eye + mov eax, slotGrid + mov slotMatch, eax + invoke SlotApplyWin, OFFSET slotComboJackpot, 10, 32767 + +slot_eval_eye: + invoke SlotTry5, OFFSET slotComboEye, 8, 17553, 0, 4, 7, 10, 14 + + invoke SlotTry5, OFFSET slotComboSky, 7, 31, 0, 1, 2, 3, 4 + invoke SlotTry5, OFFSET slotComboEarth, 7, 31744, 10, 11, 12, 13, 14 + + invoke SlotTry5, OFFSET slotComboUp, 4, 17732, 10, 6, 2, 8, 14 + invoke SlotTry5, OFFSET slotComboDown, 4, 4433, 0, 6, 12, 8, 4 + + invoke SlotTry5, OFFSET slotComboHorXL, 3, 31, 0, 1, 2, 3, 4 + invoke SlotTry5, OFFSET slotComboHorXL, 3, 992, 5, 6, 7, 8, 9 + invoke SlotTry5, OFFSET slotComboHorXL, 3, 31744, 10, 11, 12, 13, 14 + + invoke SlotTry4, OFFSET slotComboHorL, 2, 15, 0, 1, 2, 3 + invoke SlotTry4, OFFSET slotComboHorL, 2, 30, 1, 2, 3, 4 + invoke SlotTry4, OFFSET slotComboHorL, 2, 480, 5, 6, 7, 8 + invoke SlotTry4, OFFSET slotComboHorL, 2, 960, 6, 7, 8, 9 + invoke SlotTry4, OFFSET slotComboHorL, 2, 15360, 10, 11, 12, 13 + invoke SlotTry4, OFFSET slotComboHorL, 2, 30720, 11, 12, 13, 14 + + invoke SlotTry3, OFFSET slotComboVertM, 1, 1057, 0, 5, 10 + invoke SlotTry3, OFFSET slotComboVertM, 1, 2114, 1, 6, 11 + invoke SlotTry3, OFFSET slotComboVertM, 1, 4228, 2, 7, 12 + invoke SlotTry3, OFFSET slotComboVertM, 1, 8456, 3, 8, 13 + invoke SlotTry3, OFFSET slotComboVertM, 1, 16912, 4, 9, 14 + + invoke SlotTry3, OFFSET slotComboDiagM, 1, 4161, 0, 6, 12 + invoke SlotTry3, OFFSET slotComboDiagM, 1, 8322, 1, 7, 13 + invoke SlotTry3, OFFSET slotComboDiagM, 1, 16644, 2, 8, 14 + invoke SlotTry3, OFFSET slotComboDiagM, 1, 1092, 10, 6, 2 + invoke SlotTry3, OFFSET slotComboDiagM, 1, 2184, 11, 7, 3 + invoke SlotTry3, OFFSET slotComboDiagM, 1, 4368, 12, 8, 4 + + invoke SlotTry3, OFFSET slotComboHorM, 1, 7, 0, 1, 2 + invoke SlotTry3, OFFSET slotComboHorM, 1, 14, 1, 2, 3 + invoke SlotTry3, OFFSET slotComboHorM, 1, 28, 2, 3, 4 + invoke SlotTry3, OFFSET slotComboHorM, 1, 224, 5, 6, 7 + invoke SlotTry3, OFFSET slotComboHorM, 1, 448, 6, 7, 8 + invoke SlotTry3, OFFSET slotComboHorM, 1, 896, 7, 8, 9 + invoke SlotTry3, OFFSET slotComboHorM, 1, 7168, 10, 11, 12 + invoke SlotTry3, OFFSET slotComboHorM, 1, 14336, 11, 12, 13 + invoke SlotTry3, OFFSET slotComboHorM, 1, 28672, 12, 13, 14 + ret +EvaluateSlotCombos ENDP + +; --- AwardSlotWin: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- +AwardSlotWin PROC uses ebx + invoke UnlockAchievement, 80h, OFFSET achCloverPitName + call PrintSlotWindow + invoke PrintStr, OFFSET slotPair + mov slotCurrentCell, 0 +slot_award_combo_loop: + mov eax, slotCurrentCell + cmp eax, slotComboCount + jae slot_award_combo_done + invoke PrintStr, OFFSET slotComboText + mov ebx, slotCurrentCell + mov eax, slotComboNames[ebx * 4] + invoke PrintStr, eax + invoke PrintStr, OFFSET cardGap + invoke PrintStr, OFFSET slotMultiplierText + mov ebx, slotCurrentCell + mov eax, slotComboMults[ebx * 4] + invoke PrintUInt, eax + invoke PrintStr, OFFSET nl + inc slotCurrentCell + jmp slot_award_combo_loop +slot_award_combo_done: + invoke PrintStr, OFFSET slotTotalMultiplierText + invoke PrintUInt, slotBestMultiplier + invoke PrintStr, OFFSET nl + cmp slotJackpotHit, 1 + jne slot_award_regular + call PlayJackpotSound + invoke Sleep, 650 + call PlayHakariSound + call PlayHakariDance + call PrintSlotWindow +slot_award_regular: + invoke PaySlotMultiplier, slotBestMultiplier + ret +AwardSlotWin ENDP +; --- GameSlot: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- +GameSlot PROC +slot_start: + call ClearView + invoke PrintTitleColor, OFFSET slotTitle + invoke PrintStr, OFFSET slotPayTableText + call PromptBet + call PlaySlotSound + invoke Sleep, 400 + invoke PrintStr, OFFSET slotPullText + mov slotWinMask, 0 + mov slotVisible, 0 + call PrintSlotWindow + invoke Sleep, 1400 + + invoke FillSlotColumn, 0 + mov slotVisible, 1 + call PrintSlotWindow + invoke Sleep, 620 + + invoke FillSlotColumn, 1 + mov slotVisible, 2 + call PrintSlotWindow + invoke Sleep, 620 + + invoke FillSlotColumn, 2 + mov slotVisible, 3 + call PrintSlotWindow + invoke Sleep, 620 + + invoke FillSlotColumn, 3 + mov slotVisible, 4 + call PrintSlotWindow + invoke Sleep, 620 + + invoke FillSlotColumn, 4 + mov slotVisible, 5 + call PrintSlotWindow + invoke Sleep, 450 + + cmp cheatSlotJackpot, 1 + jne slot_no_forced_jackpot + mov cheatSlotJackpot, 0 + mov ecx, 15 + mov edi, OFFSET slotGrid +slot_force_jackpot_loop: + mov dword ptr [edi], 6 + add edi, 4 + loop slot_force_jackpot_loop + call PrintSlotWindow + invoke Sleep, 300 +slot_no_forced_jackpot: + + call EvaluateSlotCombos + cmp slotBestMultiplier, 0 + jne slot_has_win + invoke PrintStr, OFFSET slotEmpty + call PayLose + jmp ask_slot_again + +slot_has_win: + call AwardSlotWin + +ask_slot_again: + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je slot_start + cmp al, 'Y' + je slot_start + ret +GameSlot ENDP +; --- PrintClassicSlotSymbol: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintClassicSlotSymbol PROC uses eax, value:DWORD + mov eax, value + cmp eax, 0 + je classic_symbol_red + cmp eax, 1 + je classic_symbol_yellow + cmp eax, 2 + je classic_symbol_green + cmp eax, 5 + je classic_symbol_cyan + invoke SetColor, COLOR_WARN + jmp classic_symbol_print +classic_symbol_red: + invoke SetColor, COLOR_BAD + jmp classic_symbol_print +classic_symbol_yellow: + invoke SetColor, COLOR_WARN + jmp classic_symbol_print +classic_symbol_green: + invoke SetColor, COLOR_MONEY + jmp classic_symbol_print +classic_symbol_cyan: + invoke SetColor, COLOR_TITLE +classic_symbol_print: + mov eax, value + invoke PrintStr, classicSlotSymbols[eax * 4] + call ResetColor + ret +PrintClassicSlotSymbol ENDP + +; --- PrintClassicSlotCell: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintClassicSlotCell PROC uses eax, value:DWORD + mov eax, value + cmp eax, 1 + je classic_slot_cell_bar + invoke PrintStr, OFFSET slotWall + invoke PrintStr, OFFSET slotPadTwo + invoke PrintClassicSlotSymbol, value + invoke PrintStr, OFFSET slotPadTwo + ret +classic_slot_cell_bar: + invoke PrintStr, OFFSET slotWall + invoke PrintStr, OFFSET slotPadOne + invoke PrintClassicSlotSymbol, value + invoke PrintStr, OFFSET slotPadOne + ret +PrintClassicSlotCell ENDP + +; --- PrintClassicSlotBlankCell: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintClassicSlotBlankCell PROC + invoke PrintStr, OFFSET slotWall + invoke PrintStr, OFFSET slotCellBlank + ret +PrintClassicSlotBlankCell ENDP + +; --- PrintClassicSlotWindow: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintClassicSlotWindow PROC uses eax ebx + call ClearView + invoke PrintTitleColor, OFFSET classicSlotTitle + invoke PrintStr, OFFSET classicSlotBorder + + mov rowIndex, 0 +classic_slot_window_row_loop: + cmp rowIndex, 3 + jae classic_slot_window_done + mov ebx, rowIndex + imul ebx, 3 + + cmp slotVisible, 1 + jb classic_slot_blank_col1 + invoke PrintClassicSlotCell, slotGrid[ebx * 4] + jmp classic_slot_col2 +classic_slot_blank_col1: + call PrintClassicSlotBlankCell + +classic_slot_col2: + cmp slotVisible, 2 + jb classic_slot_blank_col2 + mov eax, ebx + inc eax + invoke PrintClassicSlotCell, slotGrid[eax * 4] + jmp classic_slot_col3 +classic_slot_blank_col2: + call PrintClassicSlotBlankCell + +classic_slot_col3: + cmp slotVisible, 3 + jb classic_slot_blank_col3 + mov eax, ebx + add eax, 2 + invoke PrintClassicSlotCell, slotGrid[eax * 4] + jmp classic_slot_row_end +classic_slot_blank_col3: + call PrintClassicSlotBlankCell + +classic_slot_row_end: + invoke PrintStr, OFFSET slotWall + invoke PrintStr, OFFSET nl + cmp rowIndex, 1 + jne classic_no_payline + invoke PrintStr, OFFSET classicSlotPayline +classic_no_payline: + invoke PrintStr, OFFSET classicSlotBorder + inc rowIndex + jmp classic_slot_window_row_loop + +classic_slot_window_done: + ret +PrintClassicSlotWindow ENDP + +; --- FillClassicSlotColumn: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- +FillClassicSlotColumn PROC uses eax ebx, column:DWORD + mov ebx, column + invoke RandomRange, 6 + mov slotGrid[ebx * 4], eax + mov ebx, column + add ebx, 3 + invoke RandomRange, 6 + mov slotGrid[ebx * 4], eax + mov ebx, column + add ebx, 7 + invoke RandomRange, 6 + mov slotGrid[ebx * 4], eax + ret +FillClassicSlotColumn ENDP + +; --- DurakCardRank: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +DurakCardRank PROC uses ecx edx, card:DWORD + mov eax, card + xor edx, edx + mov ecx, 13 + div ecx + mov eax, edx + ret +DurakCardRank ENDP + +; --- DurakCardSuit: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +DurakCardSuit PROC uses ecx edx, card:DWORD + mov eax, card + xor edx, edx + mov ecx, 13 + div ecx + ret +DurakCardSuit ENDP + +; --- DrawDurakCard: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +DrawDurakCard PROC uses ebx ecx edx edi + cmp durakDeckLeft, 0 + ja draw_durak_random_start + mov eax, 0FFFFFFFFh + ret + +; Ñíà÷àëà ïðîáóåì ñëó÷àéíî, íî íå áåñêîíå÷íî: â êîíöå ïàðòèè èíà÷å ìîæíî äîëãî æäàòü îäíó êàðòó. +draw_durak_random_start: + mov rowIndex, 120 +draw_durak_try: + invoke RandomRange, 52 + mov ebx, eax + xor edx, edx + mov ecx, 13 + div ecx + cmp edx, 4 + jb draw_durak_next_try + mov edi, OFFSET deckUsed + add edi, ebx + cmp byte ptr [edi], 0 + je draw_durak_take + +draw_durak_next_try: + dec rowIndex + cmp rowIndex, 0 + jne draw_durak_try + + xor ebx, ebx +draw_durak_scan_loop: + cmp ebx, 52 + jae draw_durak_none_left + mov eax, ebx + xor edx, edx + mov ecx, 13 + div ecx + cmp edx, 4 + jb draw_durak_scan_next + mov edi, OFFSET deckUsed + add edi, ebx + cmp byte ptr [edi], 0 + je draw_durak_take + +draw_durak_scan_next: + inc ebx + jmp draw_durak_scan_loop + +draw_durak_take: + mov edi, OFFSET deckUsed + add edi, ebx + mov byte ptr [edi], 1 + cmp durakDeckLeft, 0 + jbe draw_durak_return_card + dec durakDeckLeft +draw_durak_return_card: + mov eax, ebx + ret + +draw_durak_none_left: + mov durakDeckLeft, 0 + mov eax, 0FFFFFFFFh + ret +DrawDurakCard ENDP + +; --- PrintDurakCardName: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintDurakCardName PROC uses eax ebx ecx edx, card:DWORD + mov eax, card + cmp eax, 0FFFFFFFFh + jne print_durak_card_real + invoke PrintStr, OFFSET durakUnbeatenText + ret +print_durak_card_real: + xor edx, edx + mov ecx, 13 + div ecx + mov ebx, eax + mov eax, edx + invoke PrintStr, ranks[eax * 4] + invoke PrintSuit, ebx + ret +PrintDurakCardName ENDP + +; --- AddDurakCard: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +AddDurakCard PROC uses ebx ecx, pHand:DWORD, pCount:DWORD, card:DWORD + mov ecx, pCount + mov ebx, [ecx] + cmp ebx, 40 + jae add_durak_done + mov eax, pHand + mov ecx, card + mov [eax + ebx * 4], ecx + mov ecx, pCount + inc dword ptr [ecx] +add_durak_done: + ret +AddDurakCard ENDP + +; --- RemoveDurakCard: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +RemoveDurakCard PROC uses ebx ecx edx esi edi, pHand:DWORD, pCount:DWORD, index:DWORD + mov esi, pHand + mov edi, pCount + mov ecx, [edi] + mov ebx, index + cmp ebx, ecx + jae remove_durak_bad + mov eax, [esi + ebx * 4] + dec ecx + mov [edi], ecx +remove_durak_shift: + cmp ebx, ecx + jae remove_durak_done + mov edx, [esi + ebx * 4 + 4] + mov [esi + ebx * 4], edx + inc ebx + jmp remove_durak_shift +remove_durak_done: + ret +remove_durak_bad: + mov eax, 0FFFFFFFFh + ret +RemoveDurakCard ENDP + +; --- CanDurakBeat: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- +CanDurakBeat PROC uses ebx ecx edx esi edi, attackCard:DWORD, defenseCard:DWORD + invoke DurakCardSuit, attackCard + mov esi, eax + invoke DurakCardRank, attackCard + mov edi, eax + invoke DurakCardSuit, defenseCard + mov ebx, eax + invoke DurakCardRank, defenseCard + mov ecx, eax + cmp ebx, esi + jne can_durak_check_trump + cmp ecx, edi + ja can_durak_yes + jmp can_durak_no +can_durak_check_trump: + cmp ebx, durakTrumpSuit + jne can_durak_no + cmp esi, durakTrumpSuit + je can_durak_no +can_durak_yes: + mov eax, 1 + ret +can_durak_no: + xor eax, eax + ret +CanDurakBeat ENDP + +; --- ClearDurakTable: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- +ClearDurakTable PROC uses ecx edi + mov durakTableCnt, 0 + mov ecx, 6 + mov edi, OFFSET durakAttackCards +clear_durak_attack_loop: + mov dword ptr [edi], 0FFFFFFFFh + add edi, 4 + loop clear_durak_attack_loop + mov ecx, 6 + mov edi, OFFSET durakDefenseCards +clear_durak_def_loop: + mov dword ptr [edi], 0FFFFFFFFh + add edi, 4 + loop clear_durak_def_loop + ret +ClearDurakTable ENDP + +; --- AddDurakAttack: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- +AddDurakAttack PROC uses ebx + mov ebx, durakTableCnt + cmp ebx, 6 + jae add_attack_done + mov durakAttackCards[ebx * 4], eax + mov durakDefenseCards[ebx * 4], 0FFFFFFFFh + inc durakTableCnt +add_attack_done: + ret +AddDurakAttack ENDP + +; --- DurakTableHasDefense: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- +DurakTableHasDefense PROC uses ebx + mov rowIndex, 0 +has_def_loop: + mov eax, rowIndex + cmp eax, durakTableCnt + jae has_def_no + mov ebx, eax + cmp durakDefenseCards[ebx * 4], 0FFFFFFFFh + jne has_def_yes + inc rowIndex + jmp has_def_loop +has_def_yes: + mov eax, 1 + ret +has_def_no: + xor eax, eax + ret +DurakTableHasDefense ENDP + +; --- DurakFirstUnbeaten: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- +DurakFirstUnbeaten PROC uses ebx + mov rowIndex, 0 +first_unbeaten_loop: + mov eax, rowIndex + cmp eax, durakTableCnt + jae first_unbeaten_none + mov ebx, eax + cmp durakDefenseCards[ebx * 4], 0FFFFFFFFh + je first_unbeaten_found + inc rowIndex + jmp first_unbeaten_loop +first_unbeaten_found: + mov eax, rowIndex + ret +first_unbeaten_none: + mov eax, 0FFFFFFFFh + ret +DurakFirstUnbeaten ENDP + +; --- DurakAllDefended: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- +DurakAllDefended PROC + call DurakFirstUnbeaten + cmp eax, 0FFFFFFFFh + jne all_def_no + mov eax, 1 + ret +all_def_no: + xor eax, eax + ret +DurakAllDefended ENDP + +; --- DurakRankOnTable: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- +DurakRankOnTable PROC uses ebx ecx edx, card:DWORD + invoke DurakCardRank, card + mov ecx, eax + mov rowIndex, 0 +rank_on_table_loop: + mov eax, rowIndex + cmp eax, durakTableCnt + jae rank_on_table_no + mov ebx, eax + invoke DurakCardRank, durakAttackCards[ebx * 4] + cmp eax, ecx + je rank_on_table_yes + cmp durakDefenseCards[ebx * 4], 0FFFFFFFFh + je rank_on_table_next + invoke DurakCardRank, durakDefenseCards[ebx * 4] + cmp eax, ecx + je rank_on_table_yes +rank_on_table_next: + inc rowIndex + jmp rank_on_table_loop +rank_on_table_yes: + mov eax, 1 + ret +rank_on_table_no: + xor eax, eax + ret +DurakRankOnTable ENDP + +; --- CollectDurakTable: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- +CollectDurakTable PROC uses ebx, pHand:DWORD, pCount:DWORD + mov rowIndex, 0 +collect_table_loop: + mov eax, rowIndex + cmp eax, durakTableCnt + jae collect_table_done + mov ebx, eax + invoke AddDurakCard, pHand, pCount, durakAttackCards[ebx * 4] + cmp durakDefenseCards[ebx * 4], 0FFFFFFFFh + je collect_next + invoke AddDurakCard, pHand, pCount, durakDefenseCards[ebx * 4] +collect_next: + inc rowIndex + jmp collect_table_loop +collect_table_done: + call ClearDurakTable + ret +CollectDurakTable ENDP + +; --- DrawDurakPlayer: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- +DrawDurakPlayer PROC + call PlayCardSound + call DrawDurakCard + cmp eax, 0FFFFFFFFh + je draw_durak_player_done + invoke AddDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, eax +draw_durak_player_done: + ret +DrawDurakPlayer ENDP + +; --- DrawDurakAI: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- +DrawDurakAI PROC + call PlayCardSound + call DrawDurakCard + cmp eax, 0FFFFFFFFh + je draw_durak_ai_done + invoke AddDurakCard, OFFSET durakAIHand, OFFSET durakAICnt, eax +draw_durak_ai_done: + ret +DrawDurakAI ENDP + +; --- RefillDurakHands: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +RefillDurakHands PROC +refill_player_loop: + cmp durakPlayerCnt, 6 + jae refill_ai_loop + cmp durakDeckLeft, 0 + jbe refill_ai_loop + call DrawDurakPlayer + jmp refill_player_loop +refill_ai_loop: + cmp durakAICnt, 6 + jae refill_done + cmp durakDeckLeft, 0 + jbe refill_done + call DrawDurakAI + jmp refill_ai_loop +refill_done: + ret +RefillDurakHands ENDP +; --- RefillDurakHandsAIFirst: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +RefillDurakHandsAIFirst PROC +refill_ai_first_loop: + cmp durakAICnt, 6 + jae refill_player_after_ai_loop + cmp durakDeckLeft, 0 + jbe refill_player_after_ai_loop + call DrawDurakAI + jmp refill_ai_first_loop +refill_player_after_ai_loop: + cmp durakPlayerCnt, 6 + jae refill_ai_first_done + cmp durakDeckLeft, 0 + jbe refill_ai_first_done + call DrawDurakPlayer + jmp refill_player_after_ai_loop +refill_ai_first_done: + ret +RefillDurakHandsAIFirst ENDP + +; --- PrintDurakHand: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintDurakHand PROC uses eax ebx, pHand:DWORD, count:DWORD + mov rowIndex, 0 +print_durak_hand_loop: + mov eax, rowIndex + cmp eax, count + jae print_durak_hand_done + inc eax + invoke PrintUInt, eax + invoke PrintStr, OFFSET dotSpaceText + mov ebx, pHand + mov eax, rowIndex + invoke PrintDurakCardName, dword ptr [ebx + eax * 4] + invoke PrintStr, OFFSET cardGap + inc rowIndex + jmp print_durak_hand_loop +print_durak_hand_done: + invoke PrintStr, OFFSET nl + ret +PrintDurakHand ENDP + +; --- PrintDurakTable: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintDurakTable PROC uses ebx + cmp durakTableCnt, 0 + je print_table_done + invoke PrintStr, OFFSET durakTablePairsText + invoke PrintHandRow21, OFFSET durakAttackCards, durakTableCnt, 1 + mov rowIndex, 0 +print_table_pairs_loop: + mov eax, rowIndex + cmp eax, durakTableCnt + jae print_table_done + inc eax + invoke PrintUInt, eax + invoke PrintStr, OFFSET dotSpaceText + mov ebx, rowIndex + invoke PrintDurakCardName, durakAttackCards[ebx * 4] + invoke PrintStr, OFFSET durakSlashText + invoke PrintDurakCardName, durakDefenseCards[ebx * 4] + invoke PrintStr, OFFSET nl + inc rowIndex + jmp print_table_pairs_loop +print_table_done: + ret +PrintDurakTable ENDP + +; --- ShowDurakTable: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- +ShowDurakTable PROC + call ClearView + invoke PrintTitleColor, OFFSET durakTitle + invoke PrintStr, OFFSET durakDeckVisualText + invoke PrintDurakCardName, durakTrumpCard + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET durakDeckText + invoke PrintUInt, durakDeckLeft + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET durakAICardsText + invoke PrintUInt, durakAICnt + invoke PrintStr, OFFSET nl + cmp durakAICnt, 10 + ja show_ai_no_graphics + invoke PrintStr, OFFSET durakAIFaceText + invoke PrintHandRow21, OFFSET durakAIHand, durakAICnt, 0 +show_ai_no_graphics: + call PrintDurakTable + invoke PrintStr, OFFSET durakYourHandText + cmp durakPlayerCnt, 10 + ja show_player_list_only + invoke PrintHandRow21, OFFSET durakPlayerHand, durakPlayerCnt, 1 +show_player_list_only: + invoke PrintDurakHand, OFFSET durakPlayerHand, durakPlayerCnt + ret +ShowDurakTable ENDP + +; --- FindAIDurakDefense: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- +FindAIDurakDefense PROC uses ebx ecx, tableIndex:DWORD + mov rowIndex, 0 +find_ai_defense_loop: + mov eax, rowIndex + cmp eax, durakAICnt + jae find_ai_defense_no + mov ebx, OFFSET durakAIHand + mov ecx, [ebx + eax * 4] + mov ebx, tableIndex + invoke CanDurakBeat, durakAttackCards[ebx * 4], ecx + cmp eax, 1 + je find_ai_defense_yes + inc rowIndex + jmp find_ai_defense_loop +find_ai_defense_yes: + mov eax, rowIndex + ret +find_ai_defense_no: + mov eax, 0FFFFFFFFh + ret +FindAIDurakDefense ENDP + +; --- AIDefendAll: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- +AIDefendAll PROC uses ebx + mov durakLoopGuard, 0 +ai_defend_loop: + inc durakLoopGuard + cmp durakLoopGuard, 20 + ja ai_defend_fail + call DurakFirstUnbeaten + cmp eax, 0FFFFFFFFh + je ai_defend_success + mov ebx, eax + invoke FindAIDurakDefense, ebx + cmp eax, 0FFFFFFFFh + je ai_defend_fail + invoke RemoveDurakCard, OFFSET durakAIHand, OFFSET durakAICnt, eax + mov durakDefenseCards[ebx * 4], eax + jmp ai_defend_loop +ai_defend_success: + mov eax, 1 + ret +ai_defend_fail: + xor eax, eax + ret +AIDefendAll ENDP + +; --- FindAIThrowIn: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- +FindAIThrowIn PROC uses ebx ecx + cmp durakTableCnt, 6 + jae ai_throw_none + mov eax, durakTableCnt + cmp eax, durakPlayerCnt + jae ai_throw_none + mov rowIndex, 0 +ai_throw_loop: + mov eax, rowIndex + cmp eax, durakAICnt + jae ai_throw_none + mov ebx, OFFSET durakAIHand + mov ecx, [ebx + eax * 4] + invoke DurakRankOnTable, ecx + cmp eax, 1 + je ai_throw_found + inc rowIndex + jmp ai_throw_loop +ai_throw_found: + mov eax, rowIndex + ret +ai_throw_none: + mov eax, 0FFFFFFFFh + ret +FindAIThrowIn ENDP + +; --- CheckDurakEnd: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- +CheckDurakEnd PROC + cmp durakDeckLeft, 0 + ja durak_not_finished + cmp durakPlayerCnt, 0 + jne check_ai_empty + cmp durakAICnt, 0 + jne durak_player_won + mov eax, 3 + ret +check_ai_empty: + cmp durakAICnt, 0 + jne durak_not_finished + mov eax, 2 + ret +durak_player_won: + mov eax, 1 + ret +durak_not_finished: + xor eax, eax + ret +CheckDurakEnd ENDP + +; --- SetupDurak: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- +SetupDurak PROC uses ecx + call ResetDeck + mov durakPlayerCnt, 0 + mov durakAICnt, 0 + mov durakDeckLeft, 36 + mov durakPlayerTurn, 1 + mov durakSafeTurns, 0 + call ClearDurakTable + call DrawDurakCard + mov durakTrumpCard, eax + invoke DurakCardSuit, eax + mov durakTrumpSuit, eax + mov ecx, 6 +setup_durak_deal: + call DrawDurakPlayer + call DrawDurakAI + loop setup_durak_deal + ret +SetupDurak ENDP + +; --- PlayerOpenAttackLoop: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +PlayerOpenAttackLoop PROC uses ebx ecx +player_open_attack_loop: + mov eax, durakTableCnt + cmp eax, 6 + jae player_open_attack_done + cmp eax, durakAICnt + jae player_open_attack_done + call ShowDurakTable + invoke PrintStr, OFFSET durakThrowAsk + call ReadUInt + cmp eax, 0 + je player_open_attack_done + cmp eax, 1 + jb player_open_attack_bad + cmp eax, durakPlayerCnt + ja player_open_attack_bad + dec eax + mov durakChoice, eax + mov ebx, OFFSET durakPlayerHand + mov ecx, [ebx + eax * 4] + invoke DurakRankOnTable, ecx + cmp eax, 1 + jne player_open_attack_bad + invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, durakChoice + call AddDurakAttack + jmp player_open_attack_loop +player_open_attack_bad: + invoke PrintStr, OFFSET durakBadMoveText + invoke Sleep, 650 + jmp player_open_attack_loop +player_open_attack_done: + ret +PlayerOpenAttackLoop ENDP + +; --- AIInitialThrowLoop: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- +AIInitialThrowLoop PROC + mov durakLoopGuard, 0 +ai_initial_throw_loop: + inc durakLoopGuard + cmp durakLoopGuard, 20 + ja ai_initial_throw_done + call FindAIThrowIn + cmp eax, 0FFFFFFFFh + je ai_initial_throw_done + invoke RemoveDurakCard, OFFSET durakAIHand, OFFSET durakAICnt, eax + call AddDurakAttack + jmp ai_initial_throw_loop +ai_initial_throw_done: + ret +AIInitialThrowLoop ENDP +; --- PlayerThrowLoop: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +PlayerThrowLoop PROC uses ebx ecx + mov durakLoopGuard, 0 +player_throw_loop: + inc durakLoopGuard + cmp durakLoopGuard, 30 + ja player_throw_done + call ShowDurakTable + call AIDefendAll + cmp eax, 1 + je player_throw_after_defense + invoke CollectDurakTable, OFFSET durakAIHand, OFFSET durakAICnt + invoke PrintStr, OFFSET durakAITakeText + mov durakPlayerTurn, 1 + call RefillDurakHands + call Pause + ret +player_throw_after_defense: + call ShowDurakTable + invoke PrintStr, OFFSET durakThrowAsk + call ReadUInt + cmp eax, 0 + je player_throw_done + cmp eax, 1 + jb player_throw_bad + cmp eax, durakPlayerCnt + ja player_throw_bad + cmp durakTableCnt, 6 + jae player_throw_bad + dec eax + mov durakChoice, eax + mov ebx, OFFSET durakPlayerHand + mov ecx, [ebx + eax * 4] + invoke DurakRankOnTable, ecx + cmp eax, 1 + jne player_throw_bad + invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, durakChoice + call AddDurakAttack + jmp player_throw_loop +player_throw_bad: + invoke PrintStr, OFFSET durakBadMoveText + invoke Sleep, 650 + jmp player_throw_loop +player_throw_done: + call ClearDurakTable + mov durakPlayerTurn, 0 + call RefillDurakHands + ret +PlayerThrowLoop ENDP + +; --- PlayerDefendLoop: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +PlayerDefendLoop PROC uses ebx ecx + mov durakLoopGuard, 0 +player_defend_loop: + inc durakLoopGuard + cmp durakLoopGuard, 30 + ja player_take_table + call DurakAllDefended + cmp eax, 1 + je player_defended_all + call ShowDurakTable + invoke PrintStr, OFFSET durakDefendAsk + call ReadUInt + cmp eax, 0 + je player_take_table + cmp eax, 1 + jb player_def_bad + cmp eax, durakPlayerCnt + ja player_def_bad + dec eax + mov durakChoice, eax + mov ebx, OFFSET durakPlayerHand + mov ecx, [ebx + eax * 4] + + call DurakTableHasDefense + cmp eax, 0 + jne player_try_beat + invoke DurakRankOnTable, ecx + cmp eax, 1 + jne player_try_beat + mov eax, durakTableCnt + cmp durakAICnt, eax + jbe player_try_beat + invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, durakChoice + call AddDurakAttack + invoke PrintStr, OFFSET durakTransferText + call Pause + call PlayerThrowLoop + ret + +player_try_beat: + call DurakFirstUnbeaten + mov ebx, eax + mov ecx, OFFSET durakPlayerHand + mov eax, durakChoice + mov ecx, [ecx + eax * 4] + invoke CanDurakBeat, durakAttackCards[ebx * 4], ecx + cmp eax, 1 + jne player_def_bad + invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, durakChoice + mov durakDefenseCards[ebx * 4], eax + jmp player_defend_loop +player_def_bad: + invoke PrintStr, OFFSET durakBadMoveText + invoke Sleep, 650 + jmp player_defend_loop +player_take_table: + invoke CollectDurakTable, OFFSET durakPlayerHand, OFFSET durakPlayerCnt + invoke PrintStr, OFFSET durakPlayerTakeText + mov durakPlayerTurn, 0 + call RefillDurakHandsAIFirst + call Pause + ret +player_defended_all: + call FindAIThrowIn + cmp eax, 0FFFFFFFFh + je player_defense_done + invoke RemoveDurakCard, OFFSET durakAIHand, OFFSET durakAICnt, eax + call AddDurakAttack + jmp player_defend_loop +player_defense_done: + invoke PrintStr, OFFSET durakPlayerDefendText + call ClearDurakTable + mov durakPlayerTurn, 1 + call RefillDurakHandsAIFirst + call Pause + ret +PlayerDefendLoop ENDP + +; --- GameDurak: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- +GameDurak PROC + durak_start: + call ClearView + invoke PrintTitleColor, OFFSET durakTitle + call PromptBet + call SetupDurak + +durak_round_loop: + call CheckDurakEnd + cmp eax, 1 + je durak_finish_win + cmp eax, 2 + je durak_finish_lose + cmp eax, 3 + je durak_finish_draw + inc durakSafeTurns + cmp durakSafeTurns, 300 + ja durak_finish_stuck + call ClearDurakTable + cmp durakPlayerTurn, 1 + je durak_check_player_attack + jmp durak_check_ai_attack + +durak_check_player_attack: + cmp durakPlayerCnt, 0 + jne durak_player_attack + cmp durakDeckLeft, 0 + jbe durak_round_loop + call RefillDurakHands + cmp durakPlayerCnt, 0 + jne durak_player_attack + jmp durak_finish_stuck + +durak_check_ai_attack: + cmp durakAICnt, 0 + jne durak_ai_attack + cmp durakDeckLeft, 0 + jbe durak_round_loop + call RefillDurakHandsAIFirst + cmp durakAICnt, 0 + jne durak_ai_attack + jmp durak_finish_stuck + +durak_player_attack: +player_attack_choose: + call ShowDurakTable + invoke PrintStr, OFFSET durakAttackAsk + call ReadUInt + cmp eax, 1 + jb player_attack_bad + cmp eax, durakPlayerCnt + ja player_attack_bad + dec eax + invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, eax + call AddDurakAttack + call PlayerOpenAttackLoop + call PlayerThrowLoop + jmp durak_round_loop +player_attack_bad: + invoke PrintStr, OFFSET durakBadMoveText + invoke Sleep, 650 + jmp player_attack_choose + +durak_ai_attack: + cmp durakAICnt, 0 + jne durak_ai_has_card + call RefillDurakHandsAIFirst + cmp durakAICnt, 0 + je durak_round_loop +durak_ai_has_card: + invoke RemoveDurakCard, OFFSET durakAIHand, OFFSET durakAICnt, 0 + call AddDurakAttack + call AIInitialThrowLoop + call PlayerDefendLoop + jmp durak_round_loop + +durak_finish_win: + invoke UnlockAchievement, 2000h, OFFSET achDurakWinName + call ShowDurakTable + invoke PrintStr, OFFSET durakWinText + call PayWin + jmp durak_again + +durak_finish_lose: + call ShowDurakTable + invoke PrintStr, OFFSET durakLoseText + call PayLose + jmp durak_again + +durak_finish_stuck: + call ShowDurakTable + invoke PrintStr, OFFSET durakStuckText + call PayDraw + jmp durak_again + +durak_finish_draw: + call ShowDurakTable + invoke PrintStr, OFFSET drawText + call PayDraw + +durak_again: + cmp tournamentMode, 1 + je durak_tournament_return + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je durak_start + cmp al, 'Y' + je durak_start +durak_tournament_return: + ret +GameDurak ENDP +; --- GameClassicSlot: ñëîò-ìàøèíû, áàðàáàíû, ñèìâîëû, âûïëàòû è äæåêïîòû --- +GameClassicSlot PROC +classic_slot_start: + call ClearView + invoke PrintTitleColor, OFFSET classicSlotTitle + invoke PrintStr, OFFSET classicSlotPayTableText + call PromptBet + call PlaySlotSound + invoke Sleep, 400 + invoke PrintStr, OFFSET slotPullText + mov slotWinMask, 0 + mov slotVisible, 0 + call PrintClassicSlotWindow + invoke Sleep, 1600 + + invoke FillClassicSlotColumn, 0 + mov slotVisible, 1 + call PrintClassicSlotWindow + invoke Sleep, 750 + + invoke FillClassicSlotColumn, 1 + mov slotVisible, 2 + call PrintClassicSlotWindow + invoke Sleep, 750 + + invoke FillClassicSlotColumn, 2 + mov slotVisible, 3 + call PrintClassicSlotWindow + invoke Sleep, 450 + + cmp cheatSlotJackpot, 1 + jne classic_no_forced_jackpot + mov cheatSlotJackpot, 0 + mov dword ptr slotGrid[12], 0 + mov dword ptr slotGrid[16], 0 + mov dword ptr slotGrid[20], 0 + call PrintClassicSlotWindow + invoke Sleep, 300 +classic_no_forced_jackpot: + + mov eax, slotGrid[12] + mov slotA, eax + mov eax, slotGrid[16] + mov slotB, eax + mov eax, slotGrid[20] + mov slotC, eax + + mov eax, slotA + cmp eax, slotB + jne classic_slot_check_pair_1 + mov eax, slotB + cmp eax, slotC + jne classic_slot_pair + invoke UnlockAchievement, 100h, OFFSET achClassicSlotName + call PlayJackpotSound + invoke PrintStr, OFFSET classicSlotJackpot + invoke Sleep, 650 + call PlayHakariSound + call PlayHakariDance + call PrintClassicSlotWindow + mov eax, slotA + cmp eax, 0 + je classic_slot_pay_777 + cmp eax, 2 + je classic_slot_pay_dollar + cmp eax, 1 + je classic_slot_pay_bar + cmp eax, 5 + je classic_slot_pay_aaa + invoke PaySlotMultiplier, 3 + jmp classic_ask_slot_again +classic_slot_pay_777: + invoke UnlockAchievement, 100h, OFFSET achClassicSlotName + invoke PaySlotMultiplier, 10 + jmp classic_ask_slot_again +classic_slot_pay_dollar: + invoke PaySlotMultiplier, 7 + jmp classic_ask_slot_again +classic_slot_pay_bar: + invoke PaySlotMultiplier, 5 + jmp classic_ask_slot_again +classic_slot_pay_aaa: + invoke PaySlotMultiplier, 4 + jmp classic_ask_slot_again + +classic_slot_check_pair_1: + mov eax, slotA + cmp eax, slotC + je classic_slot_pair + mov eax, slotB + cmp eax, slotC + je classic_slot_pair + invoke PrintStr, OFFSET classicSlotEmpty + call PayLose + jmp classic_ask_slot_again + +classic_slot_pair: + invoke UnlockAchievement, 100h, OFFSET achClassicSlotName + invoke PrintStr, OFFSET classicSlotPair + invoke PaySlotMultiplier, 2 + +classic_ask_slot_again: + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je classic_slot_start + cmp al, 'Y' + je classic_slot_start + ret +GameClassicSlot ENDP +; --- ObserverDrawAI1: ðåæèì íàáëþäàòåëÿ AI vs AI --- +ObserverDrawAI1 PROC + call DrawPlayer21Hand + call CalcPlayerScore21 + ret +ObserverDrawAI1 ENDP + +; --- ObserverDrawAI2: ðåæèì íàáëþäàòåëÿ AI vs AI --- +ObserverDrawAI2 PROC + call DrawAI21Hand + call CalcAIScore21 + ret +ObserverDrawAI2 ENDP + +; --- ObserverShow21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +ObserverShow21 PROC + call ClearView + invoke PrintTitleColor, OFFSET observer21Title + invoke PrintStr, OFFSET observerAI1CardsText + invoke PrintHandRow21, OFFSET playerHand21, playerCnt21, 1 + invoke PrintStr, OFFSET observerAI1Text + invoke PrintUInt, playerTotal + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET observerAI2CardsText + invoke PrintHandRow21, OFFSET aiHand21, aiCnt21, 1 + invoke PrintStr, OFFSET observerAI2Text + invoke PrintUInt, dealerTotal + invoke PrintStr, OFFSET nl + ret +ObserverShow21 ENDP + +; --- GameObserver21: êàðòû, ðóêè, î÷êè è áàçîâàÿ êàðòî÷íàÿ ëîãèêà --- +GameObserver21 PROC + call ClearView + invoke PrintTitleColor, OFFSET observer21Title + call ResetDeck + mov playerCnt21, 0 + mov aiCnt21, 0 + mov revealAI21, 1 + call ObserverDrawAI1 + call ObserverDrawAI1 + call ObserverDrawAI2 + call ObserverDrawAI2 +observer21_loop: + call ObserverShow21 + invoke Sleep, 750 + cmp playerTotal, 17 + jae observer21_ai2 + call ObserverDrawAI1 + jmp observer21_loop +observer21_ai2: + cmp dealerTotal, 17 + jae observer21_compare + call ObserverDrawAI2 + jmp observer21_loop +observer21_compare: + call ObserverShow21 + mov eax, playerTotal + cmp eax, 21 + ja observer21_ai1_bust + mov eax, dealerTotal + cmp eax, 21 + ja observer21_ai1_win + mov eax, playerTotal + cmp eax, dealerTotal + ja observer21_ai1_win + jb observer21_ai2_win + invoke PrintStr, OFFSET observerDrawText + jmp observer21_done +observer21_ai1_bust: + mov eax, dealerTotal + cmp eax, 21 + ja observer21_draw + jmp observer21_ai2_win +observer21_draw: + invoke PrintStr, OFFSET observerDrawText + jmp observer21_done +observer21_ai1_win: + invoke PrintStr, OFFSET observerWin1Text + jmp observer21_done +observer21_ai2_win: + invoke PrintStr, OFFSET observerWin2Text +observer21_done: + call Pause + ret +GameObserver21 ENDP + +; --- ObserverPokerEvaluate: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +ObserverPokerEvaluate PROC + invoke BuildPokerEvalHand, OFFSET playerHand21, OFFSET pokerPlayerEvalHand + invoke EvaluatePokerN, OFFSET pokerPlayerEvalHand, pokerEvalCount + mov pokerPlayerScore, eax + invoke BuildPokerEvalHand, OFFSET aiHand21, OFFSET pokerAIEvalHand + invoke EvaluatePokerN, OFFSET pokerAIEvalHand, pokerEvalCount + mov pokerAIScore, eax + ret +ObserverPokerEvaluate ENDP + +; --- ObserverShowPoker: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +ObserverShowPoker PROC + call ClearView + invoke PrintTitleColor, OFFSET observerPokerTitle + call ShowPokerTable + call ShowPokerMoney + call ObserverPokerEvaluate + invoke PrintStr, OFFSET pokerYourComboText + invoke PrintPokerHandName, pokerPlayerScore + invoke PrintStr, OFFSET pokerAIComboText + invoke PrintPokerHandName, pokerAIScore + ret +ObserverShowPoker ENDP + +; --- ObserverPokerDecision: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +ObserverPokerDecision PROC uses ebx edx + call ObserverPokerEvaluate + mov eax, pokerPlayerScore + cmp eax, 9 + ja observer_poker_ai2_check_fold + invoke RandomRange, 4 + cmp eax, 0 + je observer_poker_ai1_fold +observer_poker_ai2_check_fold: + mov eax, pokerAIScore + cmp eax, 9 + ja observer_poker_raise_check + invoke RandomRange, 4 + cmp eax, 0 + je observer_poker_ai2_fold +observer_poker_raise_check: + mov eax, pokerPlayerScore + cmp eax, 1000 + jb observer_poker_ai2_raise_check + invoke RandomRange, 2 + cmp eax, 0 + jne observer_poker_ai2_raise_check + invoke PrintStr, OFFSET observerAI1RaiseText + add currentBet, 500 + invoke Sleep, 450 + mov eax, pokerAIScore + cmp eax, pokerPlayerScore + jae observer_poker_call_1 + invoke RandomRange, 2 + cmp eax, 0 + je observer_poker_ai2_fold +observer_poker_call_1: + invoke PrintStr, OFFSET observerCallText +observer_poker_ai2_raise_check: + mov eax, pokerAIScore + cmp eax, 1000 + jb observer_poker_continue + invoke RandomRange, 2 + cmp eax, 0 + jne observer_poker_continue + invoke PrintStr, OFFSET observerAI2RaiseText + add currentBet, 500 + invoke Sleep, 450 + mov eax, pokerPlayerScore + cmp eax, pokerAIScore + jae observer_poker_call_2 + invoke RandomRange, 2 + cmp eax, 0 + je observer_poker_ai1_fold +observer_poker_call_2: + invoke PrintStr, OFFSET observerCallText +observer_poker_continue: + xor eax, eax + ret +observer_poker_ai1_fold: + invoke PrintStr, OFFSET observerFold1Text + mov eax, 2 + ret +observer_poker_ai2_fold: + invoke PrintStr, OFFSET observerFold2Text + mov eax, 1 + ret +ObserverPokerDecision ENDP + +; --- GameObserverPoker: ïîêåð: îöåíêà êîìáèíàöèé, ñòàâêè, ôîëäû è ÈÈ --- +GameObserverPoker PROC + call ClearView + invoke PrintTitleColor, OFFSET observerPokerTitle + call ResetDeck + call ResetPokerHands + mov revealAI21, 1 + mov currentBet, 500 + call DealPokerHands +observer_poker_stage_loop: + call ObserverShowPoker + invoke Sleep, 700 + cmp communityCnt, 5 + jae observer_poker_showdown + call ObserverPokerDecision + cmp eax, 1 + je observer_poker_ai1_wins + cmp eax, 2 + je observer_poker_ai2_wins + invoke PrintStr, OFFSET pokerNextCardText + invoke Sleep, 700 + inc communityCnt + jmp observer_poker_stage_loop +observer_poker_showdown: + call ObserverShowPoker + mov eax, pokerPlayerScore + cmp eax, pokerAIScore + ja observer_poker_ai1_wins + jb observer_poker_ai2_wins + invoke PrintStr, OFFSET observerDrawText + jmp observer_poker_done +observer_poker_ai1_wins: + invoke PrintStr, OFFSET observerWin1Text + jmp observer_poker_done +observer_poker_ai2_wins: + invoke PrintStr, OFFSET observerWin2Text +observer_poker_done: + call Pause + ret +GameObserverPoker ENDP + +; --- FindPlayerDurakDefense: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- +FindPlayerDurakDefense PROC uses ebx ecx, tableIndex:DWORD + mov rowIndex, 0 +find_player_defense_loop: + mov eax, rowIndex + cmp eax, durakPlayerCnt + jae find_player_defense_no + mov ebx, OFFSET durakPlayerHand + mov ecx, [ebx + eax * 4] + mov ebx, tableIndex + invoke CanDurakBeat, durakAttackCards[ebx * 4], ecx + cmp eax, 1 + je find_player_defense_yes + inc rowIndex + jmp find_player_defense_loop +find_player_defense_yes: + mov eax, rowIndex + ret +find_player_defense_no: + mov eax, 0FFFFFFFFh + ret +FindPlayerDurakDefense ENDP + +; --- PlayerAIDefendAll: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +PlayerAIDefendAll PROC uses ebx +player_ai_defend_loop: + call DurakFirstUnbeaten + cmp eax, 0FFFFFFFFh + je player_ai_defend_success + mov ebx, eax + invoke FindPlayerDurakDefense, ebx + cmp eax, 0FFFFFFFFh + je player_ai_defend_fail + invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, eax + mov durakDefenseCards[ebx * 4], eax + jmp player_ai_defend_loop +player_ai_defend_success: + mov eax, 1 + ret +player_ai_defend_fail: + xor eax, eax + ret +PlayerAIDefendAll ENDP + +; --- FindPlayerThrowIn: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- +FindPlayerThrowIn PROC uses ebx ecx + cmp durakTableCnt, 6 + jae player_ai_throw_none + mov eax, durakTableCnt + cmp eax, durakAICnt + jae player_ai_throw_none + mov rowIndex, 0 +player_ai_throw_loop: + mov eax, rowIndex + cmp eax, durakPlayerCnt + jae player_ai_throw_none + mov ebx, OFFSET durakPlayerHand + mov ecx, [ebx + eax * 4] + invoke DurakRankOnTable, ecx + cmp eax, 1 + je player_ai_throw_found + inc rowIndex + jmp player_ai_throw_loop +player_ai_throw_found: + mov eax, rowIndex + ret +player_ai_throw_none: + mov eax, 0FFFFFFFFh + ret +FindPlayerThrowIn ENDP + +; --- PlayerAIInitialThrowLoop: çâóê, èíòðî èëè ïîêàäðîâàÿ àíèìàöèÿ --- +PlayerAIInitialThrowLoop PROC +player_ai_initial_throw_loop: + call FindPlayerThrowIn + cmp eax, 0FFFFFFFFh + je player_ai_initial_throw_done + invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, eax + call AddDurakAttack + jmp player_ai_initial_throw_loop +player_ai_initial_throw_done: + ret +PlayerAIInitialThrowLoop ENDP + +; --- ShowDurakObserverTable: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- +ShowDurakObserverTable PROC + call ClearView + invoke PrintTitleColor, OFFSET observerDurakTitle + invoke PrintStr, OFFSET durakDeckVisualText + invoke PrintDurakCardName, durakTrumpCard + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET durakDeckText + invoke PrintUInt, durakDeckLeft + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET observerAI1CardsText + invoke PrintHandRow21, OFFSET durakPlayerHand, durakPlayerCnt, 1 + call PrintDurakTable + invoke PrintStr, OFFSET observerAI2CardsText + invoke PrintHandRow21, OFFSET durakAIHand, durakAICnt, 1 + ret +ShowDurakObserverTable ENDP + +; --- GameObserverDurak: äóðàê: êîçûðü, àòàêà, çàùèòà, ïîäêèäûâàíèå è äîáîð --- +GameObserverDurak PROC + call SetupDurak + mov pokerReplaceIndex, 0 +observer_durak_loop: + inc pokerReplaceIndex + cmp pokerReplaceIndex, 32 + ja observer_durak_draw + call CheckDurakEnd + cmp eax, 1 + je observer_durak_ai1_win + cmp eax, 2 + je observer_durak_ai2_win + cmp eax, 3 + je observer_durak_draw + call ClearDurakTable + cmp durakPlayerTurn, 1 + je observer_durak_ai1_attack + jmp observer_durak_ai2_attack +observer_durak_ai1_attack: + cmp durakPlayerCnt, 0 + je observer_durak_ai1_win + invoke RemoveDurakCard, OFFSET durakPlayerHand, OFFSET durakPlayerCnt, 0 + call AddDurakAttack + call PlayerAIInitialThrowLoop + call ShowDurakObserverTable + invoke Sleep, 750 + call AIDefendAll + cmp eax, 1 + je observer_durak_ai2_defended + invoke CollectDurakTable, OFFSET durakAIHand, OFFSET durakAICnt + invoke PrintStr, OFFSET durakAITakeText + mov durakPlayerTurn, 1 + call RefillDurakHands + invoke Sleep, 850 + jmp observer_durak_loop +observer_durak_ai2_defended: + call ShowDurakObserverTable + invoke Sleep, 750 + call ClearDurakTable + mov durakPlayerTurn, 0 + call RefillDurakHands + jmp observer_durak_loop +observer_durak_ai2_attack: + cmp durakAICnt, 0 + je observer_durak_ai2_win + invoke RemoveDurakCard, OFFSET durakAIHand, OFFSET durakAICnt, 0 + call AddDurakAttack + call AIInitialThrowLoop + call ShowDurakObserverTable + invoke Sleep, 750 + call PlayerAIDefendAll + cmp eax, 1 + je observer_durak_ai1_defended + invoke CollectDurakTable, OFFSET durakPlayerHand, OFFSET durakPlayerCnt + invoke PrintStr, OFFSET durakPlayerTakeText + mov durakPlayerTurn, 0 + call RefillDurakHandsAIFirst + invoke Sleep, 850 + jmp observer_durak_loop +observer_durak_ai1_defended: + call ShowDurakObserverTable + invoke Sleep, 750 + call ClearDurakTable + mov durakPlayerTurn, 1 + call RefillDurakHandsAIFirst + jmp observer_durak_loop +observer_durak_ai1_win: + call ShowDurakObserverTable + invoke PrintStr, OFFSET observerWin1Text + jmp observer_durak_done +observer_durak_ai2_win: + call ShowDurakObserverTable + invoke PrintStr, OFFSET observerWin2Text + jmp observer_durak_done +observer_durak_draw: + call ShowDurakObserverTable + invoke PrintStr, OFFSET observerDrawText +observer_durak_done: + call Pause + ret +GameObserverDurak ENDP + +; --- GameObserverRoulette: ðóññêàÿ ðóëåòêà èëè êàçèíî-ðóëåòêà --- +GameObserverRoulette PROC + call ClearView + invoke PrintTitleColor, OFFSET observerRRTitle + call PlayRouletteSpinSound + call SetupRoulette + call AnimateRouletteSpin +observer_rr_loop: + call ShowRouletteStatus + cmp rrTurn, 0 + je observer_rr_ai1_turn + invoke PrintStr, OFFSET rrAITurnText + invoke Sleep, 850 + call RouletteChamberLoaded + cmp eax, 1 + je observer_rr_ai2_dead + call PlayRouletteDrySound + invoke PrintStr, OFFSET rrClickText + invoke Sleep, 750 + call AdvanceRouletteChamber + mov rrTurn, 0 + jmp observer_rr_loop +observer_rr_ai1_turn: + invoke PrintStr, OFFSET rrPlayerTurnText + invoke Sleep, 850 + call RouletteChamberLoaded + cmp eax, 1 + je observer_rr_ai1_dead + call PlayRouletteDrySound + invoke PrintStr, OFFSET rrClickText + invoke Sleep, 750 + call AdvanceRouletteChamber + mov rrTurn, 1 + jmp observer_rr_loop +observer_rr_ai1_dead: + call PrintBang + invoke PrintStr, OFFSET observerShotAI1Text + jmp observer_rr_done +observer_rr_ai2_dead: + call PrintBang + invoke PrintStr, OFFSET observerShotAI2Text +observer_rr_done: + call Pause + ret +GameObserverRoulette ENDP + +; --- GameObserver: ðåæèì íàáëþäàòåëÿ AI vs AI --- +GameObserver PROC +observer_menu_loop: + call ClearView + invoke PrintTitleColor, OFFSET observerTitle + invoke PrintStr, OFFSET observerMenuText + call ReadUInt + cmp eax, 0 + je observer_exit + cmp eax, 1 + je observer_run_rr + cmp eax, 2 + je observer_run_21 + cmp eax, 3 + je observer_run_poker + cmp eax, 4 + je observer_run_durak + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp observer_menu_loop +observer_run_rr: + invoke UnlockAchievement, 10000h, OFFSET achObserverName + call GameObserverRoulette + jmp observer_menu_loop +observer_run_21: + mov currentGameId, 1 + invoke UnlockAchievement, 10000h, OFFSET achObserverName + call GameObserver21 + jmp observer_menu_loop +observer_run_poker: + mov currentGameId, 2 + invoke UnlockAchievement, 10000h, OFFSET achObserverName + call GameObserverPoker + jmp observer_menu_loop +observer_run_durak: + mov currentGameId, 10 + invoke UnlockAchievement, 10000h, OFFSET achObserverName + call GameObserverDurak + jmp observer_menu_loop +observer_exit: + ret +GameObserver ENDP + +; --- PrintShopBackName: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintShopBackName PROC + mov eax, shopBackStyle + cmp eax, 1 + je print_shop_back_blue + cmp eax, 2 + je print_shop_back_red + cmp eax, 3 + je print_shop_back_gold + cmp eax, 4 + je print_shop_back_skull + cmp eax, 5 + je print_shop_back_clover + cmp eax, 6 + je print_shop_back_arcane + cmp eax, 7 + je print_shop_back_noir + cmp eax, 8 + je print_shop_back_diamond + cmp eax, 9 + je print_shop_back_rider + cmp eax, 10 + je print_shop_back_bee + cmp eax, 11 + je print_shop_back_fan + cmp eax, 12 + je print_shop_back_web + invoke PrintStr, OFFSET shopBackGray + ret +print_shop_back_blue: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET shopBackBlue + call ResetColor + ret +print_shop_back_red: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET shopBackRed + call ResetColor + ret +print_shop_back_gold: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopBackGold + call ResetColor + ret +print_shop_back_skull: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET shopBackSkull + call ResetColor + ret +print_shop_back_clover: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET shopBackClover + call ResetColor + ret +print_shop_back_arcane: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET shopBackArcane + call ResetColor + ret +print_shop_back_noir: + invoke SetColor, COLOR_CARD + invoke PrintStr, OFFSET shopBackNoir + call ResetColor + ret +print_shop_back_diamond: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET shopBackDiamond + call ResetColor + ret +print_shop_back_rider: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopBackRider + call ResetColor + ret +print_shop_back_bee: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopBackBee + call ResetColor + ret +print_shop_back_fan: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET shopBackFan + call ResetColor + ret +print_shop_back_web: + invoke SetColor, COLOR_CARD + invoke PrintStr, OFFSET shopBackWeb + call ResetColor + ret +PrintShopBackName ENDP + +; --- PrintShopCharmName: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintShopCharmName PROC + mov eax, shopCharmLevel + cmp eax, 1 + je print_shop_charm_clover + cmp eax, 2 + je print_shop_charm_bell + cmp eax, 3 + je print_shop_charm_diamond + cmp eax, 4 + je print_shop_charm_skull + cmp eax, 5 + je print_shop_charm_web + cmp eax, 6 + je print_shop_charm_bee + cmp eax, 7 + je print_shop_charm_moon + cmp eax, 8 + je print_shop_charm_crown + cmp eax, 9 + je print_shop_charm_mirror + cmp eax, 10 + je print_shop_charm_dice + cmp eax, 11 + je print_shop_charm_blood + cmp eax, 12 + je print_shop_charm_hourglass + cmp eax, 13 + je print_shop_charm_horseshoe + cmp eax, 14 + je print_shop_charm_joker + cmp eax, 15 + je print_shop_charm_phoenix + cmp eax, 16 + je print_shop_charm_compass + cmp eax, 17 + je print_shop_charm_tooth + cmp eax, 18 + je print_shop_charm_eye + cmp eax, 19 + je print_shop_charm_key + cmp eax, 20 + je print_shop_charm_candle + cmp eax, 21 + je print_shop_charm_chip + cmp eax, 22 + je print_shop_charm_snake + cmp eax, 23 + je print_shop_charm_ace + cmp eax, 24 + je print_shop_charm_devil + invoke PrintStr, OFFSET shopCharmNone + ret +print_shop_charm_clover: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET shopCharmClover + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_bell: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopCharmBell + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_diamond: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET shopCharmDiamond + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_skull: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET shopCharmSkull + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_web: + invoke SetColor, COLOR_CARD + invoke PrintStr, OFFSET shopCharmWeb + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_bee: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopCharmBee + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_moon: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET shopCharmMoon + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_crown: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopCharmCrown + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_mirror: + invoke SetColor, COLOR_CARD + invoke PrintStr, OFFSET shopCharmMirror + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_dice: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET shopCharmDice + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_blood: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET shopCharmBlood + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_hourglass: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopCharmHourglass + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_horseshoe: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET shopCharmHorseshoe + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_joker: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET shopCharmJoker + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_phoenix: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopCharmPhoenix + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_compass: + invoke SetColor, COLOR_CARD + invoke PrintStr, OFFSET shopCharmCompass + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_tooth: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopCharmTooth + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_eye: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET shopCharmEye + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_key: + invoke SetColor, COLOR_CARD + invoke PrintStr, OFFSET shopCharmKey + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_candle: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET shopCharmCandle + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_chip: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET shopCharmChip + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_snake: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET shopCharmSnake + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_ace: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET shopCharmAce + call ResetColor + jmp print_shop_charm_uses +print_shop_charm_devil: + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET shopCharmDevil + call ResetColor +print_shop_charm_uses: + invoke PrintStr, OFFSET shopCharmUsesText + invoke PrintUInt, shopCharmUses + invoke PrintStr, OFFSET nl + ret +PrintShopCharmName ENDP + +; --- PrintShopStatus: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintShopStatus PROC + call PrintBank + invoke PrintStr, OFFSET shopBackText + call PrintShopBackName + invoke PrintStr, OFFSET shopCharmText + call PrintShopCharmName + invoke PrintStr, OFFSET nl + ret +PrintShopStatus ENDP + +; --- ShopBuyBack: ìàãàçèí ðóáàøåê, òàëèñìàíîâ è ïîêóïîê --- +ShopBuyBack PROC uses eax ebx, style:DWORD, cost:DWORD, maskValue:DWORD + mov eax, shopBackOwned + mov ebx, maskValue + test eax, ebx + jne shop_back_already_owned + + mov eax, cost + cmp bankroll, eax + jae shop_back_buy + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET tooBigBetText + call ResetColor + ret +shop_back_buy: + sub bankroll, eax + mov eax, shopBackOwned + or eax, ebx + mov shopBackOwned, eax + mov eax, style + mov shopBackStyle, eax + call SaveGame + invoke UnlockAchievement, 10h, OFFSET achShopperName + mov eax, shopBackOwned + and eax, 1FFFh + cmp eax, 1FFFh + jne shop_back_collector_skip + invoke UnlockAchievement, 4000h, OFFSET achBackCollectorName +shop_back_collector_skip: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET shopBoughtText + call ResetColor + call PrintBank + call CheckBankrupt + ret +shop_back_already_owned: + mov eax, style + mov shopBackStyle, eax + call SaveGame + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET shopSelectedText + call ResetColor + ret +ShopBuyBack ENDP + +; --- ShopBuyCharm: ïîêóïêà òàëèñìàíà ñ ðàçíûìè çàðÿäàìè --- +ShopBuyCharm PROC uses eax, charmLevel:DWORD, cost:DWORD + mov eax, cost + cmp bankroll, eax + jae shop_charm_buy + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET tooBigBetText + call ResetColor + ret +shop_charm_buy: + sub bankroll, eax + mov eax, charmLevel + mov shopCharmLevel, eax + cmp eax, 5 + je shop_charm_one_use + cmp eax, 11 + je shop_charm_one_use + cmp eax, 14 + je shop_charm_one_use + cmp eax, 18 + je shop_charm_one_use + cmp eax, 20 + je shop_charm_one_use + cmp eax, 24 + je shop_charm_one_use + cmp eax, 4 + je shop_charm_two_uses + cmp eax, 8 + je shop_charm_two_uses + cmp eax, 12 + je shop_charm_two_uses + cmp eax, 15 + je shop_charm_two_uses + cmp eax, 22 + je shop_charm_two_uses + cmp eax, 7 + je shop_charm_four_uses + cmp eax, 9 + je shop_charm_four_uses + cmp eax, 21 + je shop_charm_four_uses + cmp eax, 6 + je shop_charm_five_uses + cmp eax, 17 + je shop_charm_five_uses + cmp eax, 23 + je shop_charm_five_uses + cmp eax, 10 + je shop_charm_six_uses + cmp eax, 19 + je shop_charm_six_uses + cmp eax, 13 + je shop_charm_eight_uses + mov shopCharmUses, 3 + jmp shop_charm_store +shop_charm_one_use: + mov shopCharmUses, 1 + jmp shop_charm_store +shop_charm_two_uses: + mov shopCharmUses, 2 + jmp shop_charm_store +shop_charm_four_uses: + mov shopCharmUses, 4 + jmp shop_charm_store +shop_charm_five_uses: + mov shopCharmUses, 5 + jmp shop_charm_store +shop_charm_six_uses: + mov shopCharmUses, 6 + jmp shop_charm_store +shop_charm_eight_uses: + mov shopCharmUses, 8 +shop_charm_store: + call SaveGame + invoke UnlockAchievement, 10h, OFFSET achShopperName + invoke UnlockAchievement, 8000h, OFFSET achCharmBuyerName + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET shopBoughtText + call ResetColor + call PrintBank + call CheckBankrupt + ret +ShopBuyCharm ENDP + +; --- ShowBestiaryPage: êàðòî÷êà òàëèñìàíà â áåñòèàðèè --- +ShowBestiaryPage PROC artPtr:DWORD, infoPtr:DWORD, colorValue:DWORD + call ClearView + invoke SetColor, colorValue + invoke PrintStr, artPtr + call ResetColor + invoke PrintStr, infoPtr + invoke PrintStr, OFFSET bestiaryBackText + call ReadKey + ret +ShowBestiaryPage ENDP + +; --- GameCharmBestiary: ýíöèêëîïåäèÿ òàëèñìàíîâ ñ ASCII-àðòàìè --- +GameCharmBestiary PROC +bestiary_loop: + call ClearView + invoke PrintTitleColor, OFFSET bestiaryTitle + invoke PrintStr, OFFSET bestiaryMenuText + call ReadUInt + cmp eax, 0 + je bestiary_exit + cmp eax, 1 + je bestiary_clover + cmp eax, 2 + je bestiary_bell + cmp eax, 3 + je bestiary_diamond + cmp eax, 4 + je bestiary_skull + cmp eax, 5 + je bestiary_web + cmp eax, 6 + je bestiary_bee + cmp eax, 7 + je bestiary_moon + cmp eax, 8 + je bestiary_crown + cmp eax, 9 + je bestiary_mirror + cmp eax, 10 + je bestiary_dice + cmp eax, 11 + je bestiary_blood + cmp eax, 12 + je bestiary_hourglass + cmp eax, 13 + je bestiary_horseshoe + cmp eax, 14 + je bestiary_joker + cmp eax, 15 + je bestiary_phoenix + cmp eax, 16 + je bestiary_compass + cmp eax, 17 + je bestiary_tooth + cmp eax, 18 + je bestiary_eye + cmp eax, 19 + je bestiary_key + cmp eax, 20 + je bestiary_candle + cmp eax, 21 + je bestiary_chip + cmp eax, 22 + je bestiary_snake + cmp eax, 23 + je bestiary_ace + cmp eax, 24 + je bestiary_devil + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp bestiary_loop +bestiary_clover: + invoke ShowBestiaryPage, OFFSET bestiaryCloverArt, OFFSET bestiaryCloverInfo, COLOR_MONEY + jmp bestiary_loop +bestiary_bell: + invoke ShowBestiaryPage, OFFSET bestiaryBellArt, OFFSET bestiaryBellInfo, COLOR_WARN + jmp bestiary_loop +bestiary_diamond: + invoke ShowBestiaryPage, OFFSET bestiaryDiamondArt, OFFSET bestiaryDiamondInfo, COLOR_TITLE + jmp bestiary_loop +bestiary_skull: + invoke ShowBestiaryPage, OFFSET bestiarySkullArt, OFFSET bestiarySkullInfo, COLOR_BAD + jmp bestiary_loop +bestiary_web: + invoke ShowBestiaryPage, OFFSET bestiaryWebArt, OFFSET bestiaryWebInfo, COLOR_CARD + jmp bestiary_loop +bestiary_bee: + invoke ShowBestiaryPage, OFFSET bestiaryBeeArt, OFFSET bestiaryBeeInfo, COLOR_WARN + jmp bestiary_loop +bestiary_moon: + invoke ShowBestiaryPage, OFFSET bestiaryMoonArt, OFFSET bestiaryMoonInfo, COLOR_TITLE + jmp bestiary_loop +bestiary_crown: + invoke ShowBestiaryPage, OFFSET bestiaryCrownArt, OFFSET bestiaryCrownInfo, COLOR_WARN + jmp bestiary_loop +bestiary_mirror: + invoke ShowBestiaryPage, OFFSET bestiaryMirrorArt, OFFSET bestiaryMirrorInfo, COLOR_CARD + jmp bestiary_loop +bestiary_dice: + invoke ShowBestiaryPage, OFFSET bestiaryDiceArt, OFFSET bestiaryDiceInfo, COLOR_TITLE + jmp bestiary_loop +bestiary_blood: + invoke ShowBestiaryPage, OFFSET bestiaryBloodArt, OFFSET bestiaryBloodInfo, COLOR_BAD + jmp bestiary_loop +bestiary_hourglass: + invoke ShowBestiaryPage, OFFSET bestiaryHourglassArt, OFFSET bestiaryHourglassInfo, COLOR_WARN + jmp bestiary_loop +bestiary_horseshoe: + invoke ShowBestiaryPage, OFFSET bestiaryHorseshoeArt, OFFSET bestiaryHorseshoeInfo, COLOR_MONEY + jmp bestiary_loop +bestiary_joker: + invoke ShowBestiaryPage, OFFSET bestiaryJokerArt, OFFSET bestiaryJokerInfo, COLOR_BAD + jmp bestiary_loop +bestiary_phoenix: + invoke ShowBestiaryPage, OFFSET bestiaryPhoenixArt, OFFSET bestiaryPhoenixInfo, COLOR_WARN + jmp bestiary_loop +bestiary_compass: + invoke ShowBestiaryPage, OFFSET bestiaryCompassArt, OFFSET bestiaryCompassInfo, COLOR_CARD + jmp bestiary_loop +bestiary_tooth: + invoke ShowBestiaryPage, OFFSET bestiaryToothArt, OFFSET bestiaryToothInfo, COLOR_WARN + jmp bestiary_loop +bestiary_eye: + invoke ShowBestiaryPage, OFFSET bestiaryEyeArt, OFFSET bestiaryEyeInfo, COLOR_TITLE + jmp bestiary_loop +bestiary_key: + invoke ShowBestiaryPage, OFFSET bestiaryKeyArt, OFFSET bestiaryKeyInfo, COLOR_CARD + jmp bestiary_loop +bestiary_candle: + invoke ShowBestiaryPage, OFFSET bestiaryCandleArt, OFFSET bestiaryCandleInfo, COLOR_BAD + jmp bestiary_loop +bestiary_chip: + invoke ShowBestiaryPage, OFFSET bestiaryChipArt, OFFSET bestiaryChipInfo, COLOR_MONEY + jmp bestiary_loop +bestiary_snake: + invoke ShowBestiaryPage, OFFSET bestiarySnakeArt, OFFSET bestiarySnakeInfo, COLOR_MONEY + jmp bestiary_loop +bestiary_ace: + invoke ShowBestiaryPage, OFFSET bestiaryAceArt, OFFSET bestiaryAceInfo, COLOR_TITLE + jmp bestiary_loop +bestiary_devil: + invoke ShowBestiaryPage, OFFSET bestiaryDevilArt, OFFSET bestiaryDevilInfo, COLOR_BAD + jmp bestiary_loop +bestiary_exit: + ret +GameCharmBestiary ENDP + +; --- GameShop: ìàãàçèí ðóáàøåê, òàëèñìàíîâ è ïîêóïîê --- +GameShop PROC +shop_loop: + call ClearView + invoke PrintTitleColor, OFFSET shopTitle + call PrintShopStatus + invoke PrintStr, OFFSET shopMainMenuText + call ReadUInt + cmp eax, 0 + je shop_exit + cmp eax, 1 + je shop_backs_menu + cmp eax, 2 + je shop_charms_menu + cmp eax, 3 + je shop_bestiary_menu + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp shop_loop + +shop_bestiary_menu: + call GameCharmBestiary + jmp shop_loop + +shop_backs_menu: + call ClearView + invoke PrintTitleColor, OFFSET shopBackTitle + call PrintShopStatus + invoke PrintStr, OFFSET shopBackMenuText + call ReadUInt + cmp eax, 0 + je shop_loop + cmp eax, 1 + je shop_blue + cmp eax, 2 + je shop_red + cmp eax, 3 + je shop_gold + cmp eax, 4 + je shop_skull + cmp eax, 5 + je shop_clover_back + cmp eax, 6 + je shop_arcane + cmp eax, 7 + je shop_noir + cmp eax, 8 + je shop_diamond_back + cmp eax, 9 + je shop_rider + cmp eax, 10 + je shop_bee + cmp eax, 11 + je shop_fan + cmp eax, 12 + je shop_web + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp shop_backs_menu + +shop_charms_menu: + call ClearView + invoke PrintTitleColor, OFFSET shopCharmTitle + call PrintShopStatus + invoke PrintStr, OFFSET shopCharmMenuText + call ReadUInt + cmp eax, 0 + je shop_loop + cmp eax, 1 + je buy_charm_clover + cmp eax, 2 + je buy_charm_bell + cmp eax, 3 + je buy_charm_diamond + cmp eax, 4 + je buy_charm_skull + cmp eax, 5 + je buy_charm_web + cmp eax, 6 + je buy_charm_bee_item + cmp eax, 7 + je buy_charm_moon + cmp eax, 8 + je buy_charm_crown + cmp eax, 9 + je buy_charm_mirror + cmp eax, 10 + je buy_charm_dice + cmp eax, 11 + je buy_charm_blood + cmp eax, 12 + je buy_charm_hourglass + cmp eax, 13 + je buy_charm_horseshoe + cmp eax, 14 + je buy_charm_joker + cmp eax, 15 + je buy_charm_phoenix + cmp eax, 16 + je buy_charm_compass + cmp eax, 17 + je buy_charm_tooth + cmp eax, 18 + je buy_charm_eye + cmp eax, 19 + je buy_charm_key + cmp eax, 20 + je buy_charm_candle + cmp eax, 21 + je buy_charm_chip + cmp eax, 22 + je buy_charm_snake + cmp eax, 23 + je buy_charm_ace + cmp eax, 24 + je buy_charm_devil + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp shop_charms_menu + +shop_blue: + invoke ShopBuyBack, 1, 3000, 2 + call Pause + jmp shop_backs_menu +shop_red: + invoke ShopBuyBack, 2, 3000, 4 + call Pause + jmp shop_backs_menu +shop_gold: + invoke ShopBuyBack, 3, 10000, 8 + call Pause + jmp shop_backs_menu +shop_skull: + invoke ShopBuyBack, 4, 12000, 10h + call Pause + jmp shop_backs_menu +shop_clover_back: + invoke ShopBuyBack, 5, 15000, 20h + call Pause + jmp shop_backs_menu +shop_arcane: + invoke ShopBuyBack, 6, 17000, 40h + call Pause + jmp shop_backs_menu +shop_noir: + invoke ShopBuyBack, 7, 18000, 80h + call Pause + jmp shop_backs_menu +shop_diamond_back: + invoke ShopBuyBack, 8, 20000, 100h + call Pause + jmp shop_backs_menu +shop_rider: + invoke ShopBuyBack, 9, 22000, 200h + call Pause + jmp shop_backs_menu +shop_bee: + invoke ShopBuyBack, 10, 22000, 400h + call Pause + jmp shop_backs_menu +shop_fan: + invoke ShopBuyBack, 11, 23000, 800h + call Pause + jmp shop_backs_menu +shop_web: + invoke ShopBuyBack, 12, 24000, 1000h + call Pause + jmp shop_backs_menu + +buy_charm_clover: + invoke ShopBuyCharm, 1, 12000 + call Pause + jmp shop_charms_menu +buy_charm_bell: + invoke ShopBuyCharm, 2, 18000 + call Pause + jmp shop_charms_menu +buy_charm_diamond: + invoke ShopBuyCharm, 3, 25000 + call Pause + jmp shop_charms_menu +buy_charm_skull: + invoke ShopBuyCharm, 4, 32000 + call Pause + jmp shop_charms_menu +buy_charm_web: + invoke ShopBuyCharm, 5, 40000 + call Pause + jmp shop_charms_menu +buy_charm_bee_item: + invoke ShopBuyCharm, 6, 30000 + call Pause + jmp shop_charms_menu +buy_charm_moon: + invoke ShopBuyCharm, 7, 36000 + call Pause + jmp shop_charms_menu +buy_charm_crown: + invoke ShopBuyCharm, 8, 52000 + call Pause + jmp shop_charms_menu +buy_charm_mirror: + invoke ShopBuyCharm, 9, 42000 + call Pause + jmp shop_charms_menu +buy_charm_dice: + invoke ShopBuyCharm, 10, 35000 + call Pause + jmp shop_charms_menu +buy_charm_blood: + invoke ShopBuyCharm, 11, 65000 + call Pause + jmp shop_charms_menu +buy_charm_hourglass: + invoke ShopBuyCharm, 12, 48000 + call Pause + jmp shop_charms_menu +buy_charm_horseshoe: + invoke ShopBuyCharm, 13, 39000 + call Pause + jmp shop_charms_menu +buy_charm_joker: + invoke ShopBuyCharm, 14, 70000 + call Pause + jmp shop_charms_menu +buy_charm_phoenix: + invoke ShopBuyCharm, 15, 56000 + call Pause + jmp shop_charms_menu +buy_charm_compass: + invoke ShopBuyCharm, 16, 44000 + call Pause + jmp shop_charms_menu +buy_charm_tooth: + invoke ShopBuyCharm, 17, 47000 + call Pause + jmp shop_charms_menu +buy_charm_eye: + invoke ShopBuyCharm, 18, 60000 + call Pause + jmp shop_charms_menu +buy_charm_key: + invoke ShopBuyCharm, 19, 41000 + call Pause + jmp shop_charms_menu +buy_charm_candle: + invoke ShopBuyCharm, 20, 76000 + call Pause + jmp shop_charms_menu +buy_charm_chip: + invoke ShopBuyCharm, 21, 50000 + call Pause + jmp shop_charms_menu +buy_charm_snake: + invoke ShopBuyCharm, 22, 62000 + call Pause + jmp shop_charms_menu +buy_charm_ace: + invoke ShopBuyCharm, 23, 53000 + call Pause + jmp shop_charms_menu +buy_charm_devil: + invoke ShopBuyCharm, 24, 100000 + call Pause + jmp shop_charms_menu +shop_exit: + ret +GameShop ENDP + + +; --- CopyName: ñëóæåáíûé áëîê èãðîâîé ëîãèêè --- +CopyName PROC uses eax ecx esi edi, pDst:DWORD, pSrc:DWORD + mov edi, pDst + mov esi, pSrc + mov ecx, 63 +copy_name_loop: + mov al, [esi] + cmp al, '.' + je copy_name_stop + mov [edi], al + cmp al, 0 + je copy_name_done + inc esi + inc edi + loop copy_name_loop +copy_name_stop: + mov byte ptr [edi], 0 +copy_name_done: + ret +CopyName ENDP + +; --- ClearLeaderboards: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- +ClearLeaderboards PROC uses eax ecx edi + mov leaderBestBank, 0 + mov leaderBestWins, 0 + mov leaderBestLosses, 0 + mov leaderValidCount, 0 + mov ecx, 22 + mov edi, OFFSET leaderBestGameWins +clear_leader_counts: + mov dword ptr [edi], 0 + add edi, 4 + loop clear_leader_counts + mov ecx, 1600 + mov edi, OFFSET leaderBestBankName +clear_leader_names: + mov byte ptr [edi], 0 + inc edi + loop clear_leader_names + ret +ClearLeaderboards ENDP + +; --- LeaderboardUpdateGame: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- +LeaderboardUpdateGame PROC uses eax ebx edx + mov ebx, rowIndex + mov eax, DWORD PTR [saveBuffer+104+ebx*4] + cmp eax, leaderBestGameWins[ebx*4] + jbe leaderboard_check_losses + mov leaderBestGameWins[ebx*4], eax + mov edx, ebx + shl edx, 6 + add edx, OFFSET leaderBestGameWinNames + invoke CopyName, edx, leaderAccountPtr +leaderboard_check_losses: + mov eax, DWORD PTR [saveBuffer+148+ebx*4] + cmp eax, leaderBestGameLosses[ebx*4] + jbe leaderboard_game_done + mov leaderBestGameLosses[ebx*4], eax + mov edx, ebx + shl edx, 6 + add edx, OFFSET leaderBestGameLossNames + invoke CopyName, edx, leaderAccountPtr +leaderboard_game_done: + ret +LeaderboardUpdateGame ENDP + +; --- LeaderboardReadAccount: àêêàóíòû, ôàéëû ñîõðàíåíèé è çàãðóçêà ïðîôèëÿ --- +LeaderboardReadAccount PROC uses eax + call BuildLeaderSavePath + invoke CreateFileA, OFFSET leaderSavePath, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + jne leaderboard_file_opened + cmp appDataReady, 1 + jne leaderboard_read_done + invoke CreateFileA, leaderAccountPtr, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 + cmp eax, INVALID_HANDLE_VALUE + je leaderboard_read_done +leaderboard_file_opened: + mov saveHandle, eax + invoke ReadFile, saveHandle, ADDR saveBuffer, SAVE_FILE_SIZE, ADDR charsRead, 0 + invoke CloseHandle, saveHandle + cmp charsRead, 32 + jb leaderboard_read_done + mov eax, DWORD PTR [saveBuffer] + cmp eax, SAVE_MAGIC + jne leaderboard_read_done + cmp charsRead, SAVE_FILE_SIZE + jb leaderboard_signature_ok + mov edx, DWORD PTR [saveBuffer+SAVE_SIGN_SIZE] + call CalcSaveSignature + cmp eax, edx + jne leaderboard_read_done +leaderboard_signature_ok: + inc leaderValidCount + mov eax, DWORD PTR [saveBuffer+4] + cmp eax, leaderBestBank + jbe leaderboard_check_total_wins + mov leaderBestBank, eax + invoke CopyName, OFFSET leaderBestBankName, leaderAccountPtr +leaderboard_check_total_wins: + mov eax, DWORD PTR [saveBuffer+12] + cmp eax, leaderBestWins + jbe leaderboard_check_total_losses + mov leaderBestWins, eax + invoke CopyName, OFFSET leaderBestWinsName, leaderAccountPtr +leaderboard_check_total_losses: + mov eax, DWORD PTR [saveBuffer+16] + cmp eax, leaderBestLosses + jbe leaderboard_check_games + mov leaderBestLosses, eax + invoke CopyName, OFFSET leaderBestLossName, leaderAccountPtr +leaderboard_check_games: + cmp charsRead, 236 + jb leaderboard_read_done + mov rowIndex, 0 +leaderboard_game_loop: + cmp rowIndex, 11 + jae leaderboard_read_done + call LeaderboardUpdateGame + inc rowIndex + jmp leaderboard_game_loop +leaderboard_read_done: + ret +LeaderboardReadAccount ENDP + +; --- BuildLeaderboards: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- +BuildLeaderboards PROC uses eax + call ClearLeaderboards + call CollectAccounts + mov leaderScanIndex, 0 +leaderboard_account_loop: + mov eax, leaderScanIndex + cmp eax, accountCount + jae leaderboard_build_done + shl eax, 6 + add eax, OFFSET accountList + mov leaderAccountPtr, eax + call LeaderboardReadAccount + inc leaderScanIndex + jmp leaderboard_account_loop +leaderboard_build_done: + ret +BuildLeaderboards ENDP + +; --- PrintLeaderPair: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintLeaderPair PROC uses eax, pName:DWORD, value:DWORD + mov eax, value + cmp eax, 0 + jne print_leader_pair_value + invoke PrintStr, OFFSET leaderDashText + ret +print_leader_pair_value: + invoke PrintStr, pName + invoke PrintStr, OFFSET leaderOpenText + invoke PrintUInt, value + invoke PrintStr, OFFSET leaderCloseText + ret +PrintLeaderPair ENDP + +; --- PrintLeaderGameLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintLeaderGameLine PROC uses eax ebx edx + mov eax, rowIndex + invoke PrintStr, statsGameNames[eax*4] + invoke PrintStr, OFFSET leaderGameWinText + mov ebx, rowIndex + mov edx, ebx + shl edx, 6 + add edx, OFFSET leaderBestGameWinNames + invoke PrintLeaderPair, edx, leaderBestGameWins[ebx*4] + invoke PrintStr, OFFSET leaderGameLossText + mov ebx, rowIndex + mov edx, ebx + shl edx, 6 + add edx, OFFSET leaderBestGameLossNames + invoke PrintLeaderPair, edx, leaderBestGameLosses[ebx*4] + invoke PrintStr, OFFSET nl + ret +PrintLeaderGameLine ENDP + +; --- PrintLeaderboards: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintLeaderboards PROC + call BuildLeaderboards + invoke PrintTitleColor, OFFSET leaderTitle + cmp leaderValidCount, 0 + jne print_leaders_have_data + invoke PrintStr, OFFSET leaderNoDataText + ret +print_leaders_have_data: + invoke PrintStr, OFFSET leaderBankText + invoke PrintStr, OFFSET leaderBestBankName + invoke PrintStr, OFFSET leaderOpenText + invoke PrintStr, OFFSET leaderMoneyPrefix + invoke PrintUInt, leaderBestBank + invoke PrintStr, OFFSET leaderCloseText + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET leaderWinsText + invoke PrintLeaderPair, OFFSET leaderBestWinsName, leaderBestWins + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET leaderLossText + invoke PrintLeaderPair, OFFSET leaderBestLossName, leaderBestLosses + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET leaderGameTitle + mov rowIndex, 0 +leader_print_game_loop: + cmp rowIndex, 11 + jae leader_print_done + call PrintLeaderGameLine + inc rowIndex + jmp leader_print_game_loop +leader_print_done: + ret +PrintLeaderboards ENDP +; --- PrintGameStatLine: âûâîä òåêñòà, öâåòîâ, êàðòèíîê è ýëåìåíòîâ èíòåðôåéñà --- +PrintGameStatLine PROC uses eax ebx + mov eax, rowIndex + invoke PrintStr, statsGameNames[eax * 4] + invoke PrintStr, OFFSET statsLinePlayed + mov ebx, rowIndex + invoke PrintUInt, gameStatsPlayed[ebx * 4] + invoke PrintStr, OFFSET statsLineWins + mov ebx, rowIndex + invoke PrintUInt, gameStatsWon[ebx * 4] + invoke PrintStr, OFFSET statsLineLoss + mov ebx, rowIndex + invoke PrintUInt, gameStatsLost[ebx * 4] + invoke PrintStr, OFFSET statsLineDraw + mov ebx, rowIndex + invoke PrintUInt, gameStatsDraw[ebx * 4] + invoke PrintStr, OFFSET nl + ret +PrintGameStatLine ENDP + +; --- GameStatsByGame: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- +GameStatsByGame PROC + call ClearView + invoke PrintTitleColor, OFFSET statsByGameTitle + invoke PrintStr, OFFSET leaderCurrentTitle + mov rowIndex, 0 +stats_by_game_loop: + cmp rowIndex, 11 + jae stats_by_game_done + call PrintGameStatLine + inc rowIndex + jmp stats_by_game_loop +stats_by_game_done: + call PrintLeaderboards + call Pause + ret +GameStatsByGame ENDP + +; --- SkillCheckFlushKeys: Skill Check íà êðþêå: øêàëà, ïîïàäàíèÿ è ïðîìàõè --- +SkillCheckFlushKeys PROC + invoke GetAsyncKeyState, VK_SPACE + invoke GetAsyncKeyState, VK_RETURN + invoke Sleep, 80 + invoke GetAsyncKeyState, VK_SPACE + invoke GetAsyncKeyState, VK_RETURN + ret +SkillCheckFlushKeys ENDP + +; --- SkillCheckPollKey: Skill Check íà êðþêå: øêàëà, ïîïàäàíèÿ è ïðîìàõè --- +SkillCheckPollKey PROC + invoke GetAsyncKeyState, VK_SPACE + test ax, 0001h + jne skill_key_pressed + invoke GetAsyncKeyState, VK_RETURN + test ax, 0001h + jne skill_key_pressed + xor eax, eax + ret +skill_key_pressed: + mov eax, 1 + ret +SkillCheckPollKey ENDP + +; --- SkillCheckDraw: Skill Check íà êðþêå: øêàëà, ïîïàäàíèÿ è ïðîìàõè --- +SkillCheckDraw PROC uses eax ebx edx + call ClearView + invoke PrintTitleColor, OFFSET skillTitle + invoke PrintStr, OFFSET skillIntro + + invoke PrintStr, OFFSET skillStateText + mov eax, skillMisses + cmp eax, 0 + je skill_draw_state_good + cmp eax, 1 + je skill_draw_state_warn + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET skillStateBad + call ResetColor + jmp skill_draw_state_done +skill_draw_state_good: + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET skillStateGood + call ResetColor + jmp skill_draw_state_done +skill_draw_state_warn: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET skillStateWarn + call ResetColor +skill_draw_state_done: + invoke PrintStr, OFFSET skillProgressText + invoke PrintUInt, skillHits + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET skillMissText + invoke PrintUInt, skillMisses + invoke PrintStr, OFFSET nl + invoke PrintStr, OFFSET skillGaugeHint + invoke PrintStr, OFFSET skillGaugeLeft + + mov skillGaugeIndex, 0 +skill_draw_gauge_loop: + mov eax, skillGaugeIndex + cmp eax, 45 + jae skill_draw_gauge_done + cmp eax, skillNeedle + je skill_draw_needle + cmp eax, skillPerfectPos + je skill_draw_perfect + cmp eax, skillSuccessStart + jb skill_draw_empty + cmp eax, skillSuccessEnd + ja skill_draw_empty + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET skillGaugeSuccess + call ResetColor + jmp skill_draw_next +skill_draw_perfect: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET skillGaugePerfect + call ResetColor + jmp skill_draw_next +skill_draw_needle: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET skillGaugeNeedle + call ResetColor + jmp skill_draw_next +skill_draw_empty: + invoke PrintStr, OFFSET skillGaugeEmpty +skill_draw_next: + inc skillGaugeIndex + jmp skill_draw_gauge_loop +skill_draw_gauge_done: + invoke PrintStr, OFFSET skillGaugeRight + invoke PrintStr, OFFSET skillGaugeLeft + mov skillGaugeIndex, 0 +skill_draw_gauge_loop2: + mov eax, skillGaugeIndex + cmp eax, 45 + jae skill_draw_gauge_done2 + cmp eax, skillNeedle + je skill_draw_needle2 + cmp eax, skillPerfectPos + je skill_draw_perfect2 + cmp eax, skillSuccessStart + jb skill_draw_empty2 + cmp eax, skillSuccessEnd + ja skill_draw_empty2 + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET skillGaugeSuccess + call ResetColor + jmp skill_draw_next2 +skill_draw_perfect2: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET skillGaugePerfect + call ResetColor + jmp skill_draw_next2 +skill_draw_needle2: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET skillGaugeNeedle + call ResetColor + jmp skill_draw_next2 +skill_draw_empty2: + invoke PrintStr, OFFSET skillGaugeEmpty +skill_draw_next2: + inc skillGaugeIndex + jmp skill_draw_gauge_loop2 +skill_draw_gauge_done2: + invoke PrintStr, OFFSET skillGaugeRight + + invoke PrintStr, OFFSET skillGaugeLeft + mov skillGaugeIndex, 0 +skill_draw_gauge_loop3: + mov eax, skillGaugeIndex + cmp eax, 45 + jae skill_draw_gauge_done3 + cmp eax, skillNeedle + je skill_draw_needle3 + cmp eax, skillPerfectPos + je skill_draw_perfect3 + cmp eax, skillSuccessStart + jb skill_draw_empty3 + cmp eax, skillSuccessEnd + ja skill_draw_empty3 + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET skillGaugeSuccess + call ResetColor + jmp skill_draw_next3 +skill_draw_perfect3: + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET skillGaugePerfect + call ResetColor + jmp skill_draw_next3 +skill_draw_needle3: + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET skillGaugeNeedle + call ResetColor + jmp skill_draw_next3 +skill_draw_empty3: + invoke PrintStr, OFFSET skillGaugeEmpty +skill_draw_next3: + inc skillGaugeIndex + jmp skill_draw_gauge_loop3 +skill_draw_gauge_done3: + invoke PrintStr, OFFSET skillGaugeRight + ret +SkillCheckDraw ENDP + +; --- SkillCheckMoveNeedle: Skill Check íà êðþêå: øêàëà, ïîïàäàíèÿ è ïðîìàõè --- +SkillCheckMoveNeedle PROC uses eax + mov eax, skillDir + cmp eax, 0FFFFFFFFh + je skill_move_left +skill_move_right: + mov eax, skillNeedle + inc eax + cmp eax, 44 + jbe skill_move_store_right + mov eax, 43 + mov skillDir, 0FFFFFFFFh +skill_move_store_right: + mov skillNeedle, eax + ret +skill_move_left: + mov eax, skillNeedle + cmp eax, 0 + ja skill_move_dec + mov eax, 1 + mov skillDir, 1 + mov skillNeedle, eax + ret +skill_move_dec: + dec eax + mov skillNeedle, eax + ret +SkillCheckMoveNeedle ENDP + +; --- SkillCheckEvaluate: Skill Check íà êðþêå: øêàëà, ïîïàäàíèÿ è ïðîìàõè --- +SkillCheckEvaluate PROC uses eax + mov eax, skillNeedle + cmp eax, skillPerfectPos + je skill_eval_perfect + cmp eax, skillSuccessStart + jb skill_eval_fail + cmp eax, skillSuccessEnd + ja skill_eval_fail + mov skillResult, 1 + ret +skill_eval_perfect: + mov skillResult, 2 + ret +skill_eval_fail: + mov skillResult, 0 + ret +SkillCheckEvaluate ENDP + +; --- SkillCheckRound: Skill Check íà êðþêå: øêàëà, ïîïàäàíèÿ è ïðîìàõè --- +SkillCheckRound PROC uses eax ebx + invoke RandomRange, 27 + add eax, 8 + mov skillSuccessStart, eax + mov ebx, eax + add ebx, 7 + mov skillSuccessEnd, ebx + invoke RandomRange, 6 + add eax, skillSuccessStart + inc eax + mov skillPerfectPos, eax + invoke RandomRange, 45 + mov skillNeedle, eax + invoke RandomRange, 2 + cmp eax, 0 + je skill_round_left + mov skillDir, 1 + jmp skill_round_begin +skill_round_left: + mov skillDir, 0FFFFFFFFh +skill_round_begin: + mov skillFrameCount, 0 + mov skillResult, 0 + mov eax, skillHits + mov ebx, eax + shl ebx, 2 + add eax, ebx + mov ebx, 45 + sub ebx, eax + mov eax, stressLevel + shl eax, 2 + sub ebx, eax + cmp ebx, 18 + jae skill_delay_ready + mov ebx, 18 +skill_delay_ready: + mov skillDelay, ebx + call SkillCheckFlushKeys +skill_round_loop: + call SkillCheckDraw + mov eax, skillDelay + invoke Sleep, eax + call SkillCheckPollKey + cmp eax, 1 + je skill_round_pressed + call SkillCheckMoveNeedle + inc skillFrameCount + cmp skillFrameCount, 120 + jb skill_round_loop + mov skillResult, 0 + ret +skill_round_pressed: + call SkillCheckEvaluate + ret +SkillCheckRound ENDP + +; --- GameSkillCheck: Skill Check íà êðþêå: øêàëà, ïîïàäàíèÿ è ïðîìàõè --- +GameSkillCheck PROC +skill_game_start: + call ClearView + invoke PrintTitleColor, OFFSET skillTitle + invoke PrintStr, OFFSET skillIntro + call PromptBet + call PlayDbDHookScene + mov skillHits, 0 + mov skillMisses, 0 + mov skillPerfects, 0 +skill_game_loop: + call SkillCheckRound + call SkillCheckDraw + mov eax, skillResult + cmp eax, 2 + je skill_game_perfect + cmp eax, 1 + je skill_game_success +skill_game_fail: + inc skillMisses + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET skillFailText + call ResetColor + invoke Sleep, 850 + cmp skillMisses, 3 + jae skill_game_lost + jmp skill_game_loop +skill_game_success: + inc skillHits + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET skillSuccessText + call ResetColor + invoke Sleep, 750 + cmp skillHits, 5 + jae skill_game_won + jmp skill_game_loop +skill_game_perfect: + add skillHits, 2 + inc skillPerfects + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET skillPerfectText + call ResetColor + invoke Sleep, 850 + cmp skillHits, 5 + jae skill_game_won + jmp skill_game_loop +skill_game_won: + call StopDbDHookScene + call SkillCheckDraw + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET skillEscapeText + call ResetColor + invoke PaySlotMultiplier, 2 + invoke UnlockAchievement, 20000h, OFFSET achSkillCheckName + call SaveGame + jmp skill_game_again +skill_game_lost: + call StopDbDHookScene + call SkillCheckDraw + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET skillDarkText + call ResetColor + call PayLose + call SaveGame +skill_game_again: + cmp tournamentMode, 1 + je skill_game_exit + invoke PrintStr, OFFSET againText + call ReadKey + cmp al, 'y' + je skill_game_start + cmp al, 'Y' + je skill_game_start +skill_game_exit: + ret +GameSkillCheck ENDP +; --- GameAchievements: ñòàòèñòèêà, äîñòèæåíèÿ è òàáëèöû ëèäåðîâ --- +GameAchievements PROC + call ClearView + invoke PrintTitleColor, OFFSET achMenuTitle + invoke PrintAchievementLine, 1, OFFSET achFirstWinName + invoke PrintAchievementLine, 2, OFFSET achFirstLossName + invoke PrintAchievementLine, 4, OFFSET achJackpotName + invoke PrintAchievementLine, 8, OFFSET achHighRollerName + invoke PrintAchievementLine, 10h, OFFSET achShopperName + invoke PrintAchievementLine, 20h, OFFSET achCharmName + invoke PrintAchievementLine, 40h, OFFSET achGoalName + invoke PrintAchievementLine, 80h, OFFSET achCloverPitName + invoke PrintAchievementLine, 100h, OFFSET achClassicSlotName + invoke PrintAchievementLine, 200h, OFFSET achPokerRaiseName + invoke PrintAchievementLine, 400h, OFFSET achPokerBluffName + invoke PrintAchievementLine, 800h, OFFSET achRouletteWinName + invoke PrintAchievementLine, 1000h, OFFSET achRussianWinName + invoke PrintAchievementLine, 2000h, OFFSET achDurakWinName + invoke PrintAchievementLine, 4000h, OFFSET achBackCollectorName + invoke PrintAchievementLine, 8000h, OFFSET achCharmBuyerName + invoke PrintAchievementLine, 10000h, OFFSET achObserverName + invoke PrintAchievementLine, 20000h, OFFSET achSkillCheckName + call Pause + ret +GameAchievements ENDP +; --- GameTraining: ñëóæåáíûé áëîê èãðîâîé ëîãèêè --- +GameTraining PROC + call ClearView + invoke PrintTitleColor, OFFSET trainingTitle + invoke PrintStr, OFFSET trainingText + call Pause + ret +GameTraining ENDP +; --- ShowTournamentStage: òóðíèð-áàøíÿ è ïîáåäíàÿ àíèìàöèÿ ôèíàëà --- +ShowTournamentStage PROC + call ClearView + invoke PrintTitleColor, OFFSET tournamentTitle + invoke PrintStr, OFFSET tournamentStageText + invoke PrintUInt, tournamentStage + invoke PrintStr, OFFSET nl + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET hellStageCurseText + invoke RandomRange, 4 + cmp eax, 0 + je hell_stage_curse1 + cmp eax, 1 + je hell_stage_curse2 + cmp eax, 2 + je hell_stage_curse3 + invoke PrintStr, OFFSET hellCurse4 + jmp hell_stage_curse_done +hell_stage_curse1: + invoke PrintStr, OFFSET hellCurse1 + jmp hell_stage_curse_done +hell_stage_curse2: + invoke PrintStr, OFFSET hellCurse2 + jmp hell_stage_curse_done +hell_stage_curse3: + invoke PrintStr, OFFSET hellCurse3 +hell_stage_curse_done: + call ResetColor + invoke PrintStr, OFFSET tournamentMusicHint + call ReadKey + cmp al, 'm' + je tower_stage_change_music + cmp al, 'M' + jne tower_stage_done +tower_stage_change_music: + call PlayTowerRandomMusic +tower_stage_done: + ret +ShowTournamentStage ENDP + +; --- AnimateTournamentVictory: áàíê, ñòàâêè, ñòðåññ, ïîäîçðåíèå è ýêîíîìèêà êàçèíî --- +AnimateTournamentVictory PROC + call PlayVictorySound + call ClearView + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET tournamentFire1 + call ResetColor + invoke Sleep, 360 + call ClearView + invoke SetColor, COLOR_TITLE + invoke PrintStr, OFFSET tournamentFire2 + call ResetColor + invoke Sleep, 360 + call ClearView + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET tournamentFire3 + call ResetColor + invoke Sleep, 420 + call ClearView + invoke SetColor, COLOR_WARN + invoke PrintStr, OFFSET tournamentFire4 + call ResetColor + invoke Sleep, 520 + ret +AnimateTournamentVictory ENDP + +; --- GameTournament: òóðíèð-áàøíÿ è ïîáåäíàÿ àíèìàöèÿ ôèíàëà --- +GameTournament PROC + mov tournamentMode, 1 + call ClearView + invoke PrintTitleColor, OFFSET tournamentTitle + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET secretHellText + call ResetColor + invoke PrintStr, OFFSET tournamentIntro + call Pause + call PlayTowerRandomMusic ; tower start + + mov tournamentStage, 1 + call ShowTournamentStage + mov currentGameId, 6 + mov lastGameResult, 0 + call GameCoin + cmp lastGameResult, 2 + je tournament_failed + + mov tournamentStage, 2 + call ShowTournamentStage + mov currentGameId, 7 + mov lastGameResult, 0 + call GameDice + cmp lastGameResult, 2 + je tournament_failed + + mov tournamentStage, 3 + call ShowTournamentStage + mov currentGameId, 5 + mov lastGameResult, 0 + call GameSkulls + cmp lastGameResult, 2 + je tournament_failed + + mov tournamentStage, 4 + call ShowTournamentStage + mov currentGameId, 1 + mov lastGameResult, 0 + call Game21 + cmp lastGameResult, 2 + je tournament_failed + + mov tournamentStage, 5 + call ShowTournamentStage + mov currentGameId, 2 + mov lastGameResult, 0 + call GamePoker + cmp lastGameResult, 2 + je tournament_failed + + mov tournamentStage, 6 + call ShowTournamentStage + mov currentGameId, 4 + mov lastGameResult, 0 + call GameRoulette + cmp lastGameResult, 2 + je tournament_failed + + mov tournamentStage, 7 + call ShowTournamentStage + mov currentGameId, 8 + mov lastGameResult, 0 + call GameCasinoRoulette + cmp lastGameResult, 2 + je tournament_failed + + mov tournamentStage, 8 + call ShowTournamentStage + mov currentGameId, 10 + mov lastGameResult, 0 + call GameDurak + cmp lastGameResult, 2 + je tournament_failed + + mov tournamentStage, 9 + call ShowTournamentStage + mov currentGameId, 11 + mov lastGameResult, 0 + call GameSkillCheck + cmp lastGameResult, 2 + je tournament_failed + + mov tournamentStage, 10 + call ShowTournamentStage + mov currentGameId, 0 + mov lastGameResult, 0 + call GameBuckshot + cmp lastGameResult, 2 + je tournament_failed + + call StopTowerMusic ; before tower victory + call AnimateTournamentVictory + invoke SetColor, COLOR_MONEY + invoke PrintStr, OFFSET tournamentWinText + call ResetColor + mov currentBet, 66600 + call PayWin + call SaveGame + mov tournamentMode, 0 + call Pause + ret + +tournament_failed: + call StopTowerMusic ; tower failed + invoke SetColor, COLOR_BAD + invoke PrintStr, OFFSET tournamentFailText + call ResetColor + mov tournamentMode, 0 + call Pause + ret +GameTournament ENDP + + +; --- GameUmamusume: Umamusume Pretty Derby Minigame --- +GameUmamusume PROC uses ebx esi edi + invoke PrintStr, OFFSET umaTitleText + call PromptBet + cmp eax, 0 + jle uma_exit + +uma_select_horse: + invoke PrintStr, OFFSET umaMenuText + invoke PrintStr, OFFSET umaChoiceText + call ReadBetInput + cmp eax, 1 + jl uma_invalid + cmp eax, 5 + jg uma_invalid + mov umaChoice, eax + jmp uma_start_race + +uma_invalid: + invoke PrintStr, OFFSET badChoiceText + jmp uma_select_horse + +uma_start_race: + xor eax, eax + mov umaPos[0], eax + mov umaPos[4], eax + mov umaPos[8], eax + mov umaPos[12], eax + mov umaPos[16], eax + mov umaWinner, 0 + +uma_race_loop: + invoke PrintStr, OFFSET clearLines + invoke PrintStr, OFFSET umaTrackHeader + + ; Horse 1: Special Week (1-3) + invoke RandomRange, 3 + inc eax + add umaPos[0], eax + + ; Horse 2: Silence Suzuka (1-4) + invoke RandomRange, 4 + inc eax + add umaPos[4], eax + + ; Horse 3: Tokai Teio (1-3, boost if pos > 18) + invoke RandomRange, 3 + inc eax + cmp umaPos[8], 18 + jbe uma_t3_no_boost + add eax, 2 +uma_t3_no_boost: + add umaPos[8], eax + + ; Horse 4: Gold Ship (0-6 wildcard) + invoke RandomRange, 7 + add umaPos[12], eax + + ; Horse 5: Mejiro McQueen (steady 2-4) + invoke RandomRange, 3 + add eax, 2 + add umaPos[16], eax + + ; Render track + mov ecx, 0 +uma_render_lane: + push ecx + mov eax, [umaHorseNames + ecx*4] + invoke PrintStr, eax + + mov ebx, [umaPos + ecx*4] + cmp ebx, 0 + jbe uma_render_head + mov edi, ebx +uma_print_step: + push edi + invoke PrintStr, OFFSET umaStepChar + pop edi + dec edi + jnz uma_print_step + +uma_render_head: + invoke PrintStr, OFFSET umaHeadChar + invoke PrintStr, OFFSET umaFinishText + + pop ecx + inc ecx + cmp ecx, 5 + jl uma_render_lane + + ; Check if finish reached (>= 35) + mov eax, 0 +uma_check_finish: + cmp dword ptr [umaPos + eax*4], 35 + jge uma_finish_reached + inc eax + cmp eax, 5 + jl uma_check_finish + + invoke Sleep, 180 + jmp uma_race_loop + +uma_finish_reached: + mov ebx, 0 + mov edi, 1 + mov ecx, 0 +uma_find_max: + mov edx, [umaPos + ecx*4] + cmp edx, ebx + jle uma_next_max + mov ebx, edx + lea edi, [ecx + 1] +uma_next_max: + inc ecx + cmp ecx, 5 + jl uma_find_max + + mov umaWinner, edi + invoke PrintStr, OFFSET umaWinAnnouncement + mov eax, edi + dec eax + mov eax, [umaHorseNames + eax*4] + invoke PrintStr, eax + invoke PrintStr, OFFSET nl + + mov eax, umaChoice + cmp eax, umaWinner + jne uma_race_lost + + invoke PrintStr, OFFSET umaYouWinText + mov ecx, umaChoice + dec ecx + mov eax, currentBet + mov edx, [umaMultipliers + ecx*4] + imul eax, edx + push eax + invoke PrintUInt, eax + invoke PrintStr, OFFSET nl + pop eax + call PayWin + call PrintWinEvent + jmp uma_race_done + +uma_race_lost: + invoke PrintStr, OFFSET umaYouLoseText + call PayLose + call PrintLoseEvent + +uma_race_done: + call Pause +uma_exit: + ret +GameUmamusume ENDP + +include casino3d.inc + + + +; --- AutoLoadAccountFast: àâòîçàãðóçêà ïðîôèëÿ áåç áëîêèðîâêè â CMD --- +AutoLoadAccountFast PROC + call ResetProfileDefaults + call CollectAccounts + cmp accountCount, 0 + jbe autoload_exit + mov selectedAccount, 1 + call CopySelectedAccountName + call LoadSave +autoload_exit: + ret +AutoLoadAccountFast ENDP + +; --- MainMenu: òî÷êà âõîäà, ãëàâíîå ìåíþ è ìàðøðóòèçàöèÿ ïî èãðàì --- + +MainMenu PROC +menu_loop: + call DailyCheckDate + call CheckSecretEnding + invoke PrintStr, OFFSET clearLines + invoke PrintTitleColor, OFFSET titleText + call PrintBank + call PrintGoal + call ShowStats + invoke PrintStr, OFFSET menuText + invoke PrintStr, OFFSET choiceText + call ReadBetInput + cmp eax, 0FFFFFFFFh + je menu_loop + cmp eax, 0FFFFFFFDh + je menu_loop + cmp eax, 1 + je run_shop + cmp eax, 2 + je run_21 + cmp eax, 3 + je run_poker + cmp eax, 4 + je run_slot + cmp eax, 5 + je run_skulls + cmp eax, 6 + je run_roulette + cmp eax, 7 + je run_coin + cmp eax, 8 + je run_dice + cmp eax, 9 + je run_casino_roulette + cmp eax, 10 + je run_classic_slot + cmp eax, 11 + je run_durak + cmp eax, 12 + je run_skill_check + cmp eax, 13 + je run_buckshot + cmp eax, 14 + je run_observer + cmp eax, 15 + je run_training + cmp eax, 16 + je run_achievements + cmp eax, 17 + je run_stats_by_game + cmp eax, 18 + je run_daily + cmp eax, 19 + je run_settings + cmp eax, 20 + je run_online_dice + cmp eax, 21 + je run_umamusume + cmp eax, 25 + + je run_casino_3d + + cmp eax, 666 + je run_hell_tower + cmp eax, 0 + je exit_menu + invoke PrintStr, OFFSET badChoiceText + call Pause + jmp menu_loop +run_21: + mov currentGameId, 1 + call Game21 + jmp menu_loop +run_poker: + mov currentGameId, 2 + call GamePoker + jmp menu_loop +run_slot: + mov currentGameId, 3 + call PlaySlotIntroSound + call GameSlot + jmp menu_loop +run_skulls: + mov currentGameId, 5 + call GameSkulls + jmp menu_loop +run_coin: + mov currentGameId, 6 + call GameCoin + jmp menu_loop +run_dice: + mov currentGameId, 7 + call GameDice + jmp menu_loop +run_roulette: + mov currentGameId, 4 + call GameRoulette + jmp menu_loop +run_casino_roulette: + mov currentGameId, 8 + call GameCasinoRoulette + jmp menu_loop +run_classic_slot: + mov currentGameId, 9 + call PlaySlotIntroSound + call GameClassicSlot + jmp menu_loop +run_durak: + mov currentGameId, 10 + call GameDurak + jmp menu_loop +run_training: + mov currentGameId, 0 + call GameTraining + jmp menu_loop +run_observer: + mov currentGameId, 0 + call GameObserver + jmp menu_loop +run_shop: + mov currentGameId, 0 + call GameShop + jmp menu_loop +run_achievements: + mov currentGameId, 0 + call GameAchievements + jmp menu_loop +run_stats_by_game: + mov currentGameId, 0 + call GameStatsByGame + jmp menu_loop +run_daily: + mov currentGameId, 0 + call GameDailyTasks + jmp menu_loop +run_settings: + mov currentGameId, 0 + call GameSettings + jmp menu_loop +run_online_dice: + mov currentGameId, 0 + call GameOnlineCasino + jmp menu_loop +run_umamusume: + mov currentGameId, 0 + call GameUmamusume + jmp menu_loop +run_casino_3d: + + call StartCasino3D + + jmp menu_loop + +run_hell_tower: + mov currentGameId, 0 + call GameTournament + jmp menu_loop +run_skill_check: + mov tournamentMode, 0 + mov currentGameId, 11 + call GameSkillCheck + jmp menu_loop +run_buckshot: + mov currentGameId, 0 + call GameBuckshot + jmp menu_loop +exit_menu: + ret +MainMenu ENDP + +; --- main: òî÷êà âõîäà, ãëàâíîå ìåíþ è ìàðøðóòèçàöèÿ ïî èãðàì --- +main PROC + call InitPaths3D + invoke CreateMutexA, 0, 1, OFFSET mutexName3D + mov mutex3D, eax + invoke GetLastError + cmp eax, 183 + jne main_graphical + invoke FindWindowA, OFFSET sz3DClassName, 0 + test eax, eax + jz main_exit + push eax + invoke ShowWindow, eax, 9 + pop eax + invoke SetForegroundWindow, eax + jmp main_exit +main_graphical: + call LoadProgress3D + call StartCasino3D +main_exit: + cmp mutex3D, 0 + je @F + invoke CloseHandle, mutex3D +@@: + invoke ExitProcess, 0 +main ENDP + +END main diff --git a/poker.exe b/poker.exe new file mode 100644 index 0000000..cef22cb Binary files /dev/null and b/poker.exe differ diff --git a/poker.wap b/poker.wap new file mode 100644 index 0000000..1dd72bd --- /dev/null +++ b/poker.wap @@ -0,0 +1,21 @@ +[PROJECT] +Type=0 +ReleaseCommandLine= +DebugCommandLine= +AutoIncFileVersion=0 +RCSilent=0 +PellesTools=0 +[MAKE] +ActiveBuild=0 +CompileRC=/v +RCToObj= +Assemble=/c /coff /Cp /nologo +Link=/SUBSYSTEM:CONSOLE /RELEASE /VERSION:4.0 /LIBPATH:"F:\MASM32\masm32\lib" +Out= +DebAssemble=/c /coff /Cp /nologo /Fm /Zi /Zd +DebLink=/SUBSYSTEM:CONSOLE /DEBUG /VERSION:4.0 /LIBPATH:"F:\MASM32\masm32\lib" +DebOut= +[FILES] +1=poker.asm +[SHOWFILE] +1=0000000000000000140600007403000000000000030000000000000094 diff --git a/poker_portable.exe b/poker_portable.exe new file mode 100644 index 0000000..cc0f0c8 Binary files /dev/null and b/poker_portable.exe differ diff --git a/preview_casino3d.bat b/preview_casino3d.bat new file mode 100644 index 0000000..e96e26a --- /dev/null +++ b/preview_casino3d.bat @@ -0,0 +1,4 @@ +@echo off +title 3D Casino DOOM Engine Preview +cd /d "%~dp0" +start "" "poker.exe" diff --git a/runtime/achievement.txt b/runtime/achievement.txt new file mode 100644 index 0000000..e69de29 diff --git a/saves_legacy/art.dat b/saves_legacy/art.dat new file mode 100644 index 0000000..93dd57b Binary files /dev/null and b/saves_legacy/art.dat differ diff --git a/saves_legacy/htgerfw.dat b/saves_legacy/htgerfw.dat new file mode 100644 index 0000000..0a18832 Binary files /dev/null and b/saves_legacy/htgerfw.dat differ diff --git a/saves_legacy/ludik228.dat b/saves_legacy/ludik228.dat new file mode 100644 index 0000000..49087c1 Binary files /dev/null and b/saves_legacy/ludik228.dat differ diff --git a/src_graphics/platform_code.inc b/src_graphics/platform_code.inc new file mode 100644 index 0000000..532f865 --- /dev/null +++ b/src_graphics/platform_code.inc @@ -0,0 +1,397 @@ +; Events are processed on one thread. No secondary window or console is created. +WindowEvents3D PROC uses ebx esi edi hwnd:DWORD, uMsg:DWORD, wp:DWORD, lp:DWORD + cmp uMsg, 100h + je event_key_down + cmp uMsg, 104h + jne @F + cmp wp, 0Dh + je event_fullscreen +@@: + cmp uMsg, 101h + je event_key_up + cmp uMsg, 8 + je event_focus_lost + cmp uMsg, 14h + je event_erase + cmp uMsg, 0Fh + je event_paint + cmp uMsg, WM_CLOSE + je event_close + cmp uMsg, WM_DESTROY + je event_close + invoke DefWindowProcA, hwnd, uMsg, wp, lp + ret +event_key_down: + mov ecx, wp + cmp ecx, 255 + ja event_done + test lp, 40000000h + jnz event_done + mov keys3D[ecx], 1 + mov pressedKeys3D[ecx], 1 + jmp event_done +event_key_up: + mov ecx, wp + cmp ecx, 255 + ja event_done + mov keys3D[ecx], 0 + jmp event_done +event_fullscreen: + test lp, 40000000h + jnz event_done + call ToggleFullscreen3D + jmp event_done +event_focus_lost: + lea edi, keys3D + xor eax, eax + mov ecx, 128 + rep stosd + jmp event_done +event_erase: + mov eax, 1 + ret +event_paint: + invoke BeginPaint, hwnd, OFFSET paint3D + cmp h3DDC, 0 + je @F + call Present3D +@@: + invoke EndPaint, hwnd, OFFSET paint3D + jmp event_done +event_close: + invoke PostQuitMessage, 0 +event_done: + xor eax, eax + ret +WindowEvents3D ENDP + +Pressed3D PROC key:DWORD + mov ecx, key + xor eax, eax + cmp ecx, 255 + ja @F + cmp pressedKeys3D[ecx], 0 + je @F + mov pressedKeys3D[ecx], 0 + mov eax, 8000h +@@: + ret +Pressed3D ENDP + +InitPaths3D PROC uses esi edi + invoke GetModuleFileNameA, 0, OFFSET directory3D, SIZEOF directory3D + test eax, eax + jz path_done + lea esi, directory3D + mov edi, esi +path_scan: + mov al, [esi] + test al, al + jz path_found + cmp al, '\' + jne @F + mov edi, esi +@@: + inc esi + jmp path_scan +path_found: + mov BYTE PTR [edi], 0 + invoke SetCurrentDirectoryA, OFFSET directory3D + invoke GetFileAttributesA, OFFSET szTexturesRelPath + cmp eax, -1 + jne path_done + ; Also support launching bin/poker.exe without a working directory. + invoke SetCurrentDirectoryA, OFFSET parent3D +path_done: + ret +InitPaths3D ENDP + +Create3DWindow PROC uses ebx esi edi + local widthPx:DWORD + local heightPx:DWORD + invoke GetModuleHandleA, OFFSET user32Name3D + invoke GetProcAddress, eax, OFFSET dpiName3D + test eax, eax + jz @F + call eax +@@: + invoke GetModuleHandleA, 0 + mov h3DInst, eax + mov wc3D.hInstance, eax + invoke LoadIconA, eax, 1 + mov wc3D.hIcon, eax + mov wc3D.hIconSm, eax + invoke LoadCursorA, 0, 32512 + mov wc3D.hCursor, eax + mov wc3D.cbSize, SIZEOF C3D_WNDCLASSEX + mov wc3D.style, CS_HREDRAW or CS_VREDRAW + mov wc3D.lpfnWndProc, OFFSET Casino3DWndProc + mov wc3D.lpszClassName, OFFSET sz3DClassName + invoke RegisterClassExA, OFFSET wc3D + mov bmi3D.bmiHeader.biSize, SIZEOF C3D_BITMAPINFOHEADER + mov bmi3D.bmiHeader.biWidth, SCREEN_W + mov bmi3D.bmiHeader.biHeight, -SCREEN_H + mov bmi3D.bmiHeader.biPlanes, 1 + mov bmi3D.bmiHeader.biBitCount, 32 + mov bmi3D.bmiHeader.biSizeImage, SCREEN_SIZE * 4 + invoke GetSystemMetrics, 0 + mov esi, eax + sub eax, 80 + cmp eax, 1120 + jle @F + mov eax, 1120 +@@: + mov widthPx, eax + invoke GetSystemMetrics, 1 + mov edi, eax + sub eax, 120 + mov heightPx, eax + mov eax, widthPx + imul eax, 3 + shr eax, 2 + cmp eax, heightPx + jle @F + mov eax, heightPx + imul eax, 4 + xor edx, edx + mov ecx, 3 + div ecx + mov widthPx, eax +@@: + mov eax, widthPx + imul eax, 3 + shr eax, 2 + mov clientRect3D[12], eax + mov eax, widthPx + mov clientRect3D[8], eax + invoke AdjustWindowRectEx, OFFSET clientRect3D, WS_OVERLAPPEDWINDOW, 0, 0 + mov eax, clientRect3D[8] + sub eax, clientRect3D + mov widthPx, eax + sub esi, eax + sar esi, 1 + mov eax, clientRect3D[12] + sub eax, clientRect3D[4] + mov heightPx, eax + sub edi, eax + sar edi, 1 + invoke CreateWindowExA, 0, OFFSET sz3DClassName, OFFSET sz3DWindowTitle, WS_OVERLAPPEDWINDOW, esi, edi, widthPx, heightPx, 0, 0, h3DInst, 0 + test eax, eax + jz window_failed + mov h3DWnd, eax + invoke GetDC, h3DWnd + mov h3DDC, eax + invoke SetStretchBltMode, h3DDC, 3 + invoke ShowWindow, h3DWnd, SW_SHOW + invoke UpdateWindow, h3DWnd + invoke SetForegroundWindow, h3DWnd + mov eax, 1 +window_failed: + ret +Create3DWindow ENDP + +LoadTextures3D PROC uses ebx + local count:DWORD + invoke CreateFileA, OFFSET szTexturesRelPath, 80000000h, 1, 0, 3, 80h, 0 + cmp eax, -1 + je assets_failed + mov ebx, eax + invoke ReadFile, ebx, OFFSET texturesBuffer, SIZEOF texturesBuffer, ADDR count, 0 + push eax + invoke CloseHandle, ebx + pop eax + test eax, eax + jz assets_failed + cmp count, SIZEOF texturesBuffer + jne assets_failed + mov eax, 1 + ret +assets_failed: + invoke MessageBoxA, h3DWnd, OFFSET textMissing3D, OFFSET sz3DWindowTitle, 10h + xor eax, eax + ret +LoadTextures3D ENDP + +Present3D PROC uses ebx esi edi + local viewW:DWORD + local viewH:DWORD + local offsetX:DWORD + local offsetY:DWORD + invoke GetClientRect, h3DWnd, OFFSET clientRect3D + mov esi, clientRect3D[8] + mov edi, clientRect3D[12] + test esi, esi + jz present_done + test edi, edi + jz present_done + mov viewW, esi + mov eax, esi + imul eax, 3 + shr eax, 2 + cmp eax, edi + jle @F + mov eax, edi + imul eax, 4 + xor edx, edx + mov ecx, 3 + div ecx + mov viewW, eax + mov eax, edi +@@: + mov viewH, eax + mov ebx, esi + sub ebx, viewW + shr ebx, 1 + mov offsetX, ebx + mov ebx, edi + sub ebx, viewH + shr ebx, 1 + mov offsetY, ebx + ; Only clear the letterbox bars, never erase under the next frame. + invoke PatBlt, h3DDC, 0, 0, esi, offsetY, 42h + mov eax, offsetY + add eax, viewH + mov ecx, edi + sub ecx, eax + invoke PatBlt, h3DDC, 0, eax, esi, ecx, 42h + invoke PatBlt, h3DDC, 0, 0, offsetX, edi, 42h + mov eax, offsetX + add eax, viewW + mov ecx, esi + sub ecx, eax + invoke PatBlt, h3DDC, eax, 0, ecx, edi, 42h + invoke StretchDIBits, h3DDC, offsetX, offsetY, viewW, viewH, 0, 0, SCREEN_W, SCREEN_H, OFFSET screenBuffer, OFFSET bmi3D, 0, SRCCOPY +present_done: + ret +Present3D ENDP + +ToggleFullscreen3D PROC uses ebx esi edi + cmp fullscreen3D, 0 + jne restore_window + invoke GetWindowRect, h3DWnd, OFFSET savedRect3D + invoke MonitorFromWindow, h3DWnd, 2 + invoke GetMonitorInfoA, eax, OFFSET monitor3D + test eax, eax + jz fullscreen_done + invoke SetWindowLongA, h3DWnd, -16, 90000000h + mov eax, monitor3D[12] + sub eax, monitor3D[4] + mov ebx, monitor3D[16] + sub ebx, monitor3D[8] + invoke SetWindowPos, h3DWnd, 0, monitor3D[4], monitor3D[8], eax, ebx, 20h + mov fullscreen3D, 1 + ret +restore_window: + invoke SetWindowLongA, h3DWnd, -16, WS_OVERLAPPEDWINDOW or 10000000h + mov eax, savedRect3D[8] + sub eax, savedRect3D + mov ebx, savedRect3D[12] + sub ebx, savedRect3D[4] + invoke SetWindowPos, h3DWnd, 0, savedRect3D, savedRect3D[4], eax, ebx, 20h + mov fullscreen3D, 0 +fullscreen_done: + ret +ToggleFullscreen3D ENDP + +UpdateCamera3D PROC uses ebx + mov eax, playerAngle + and eax, 511 + mov ebx, tableCos[eax*4] + mov playerDirX, ebx + mov eax, tableSin[eax*4] + mov playerDirY, eax + imul eax, -66 + cdq + mov ecx, 100 + idiv ecx + mov playerPlaneX, eax + mov eax, playerDirX + imul eax, 66 + cdq + idiv ecx + mov playerPlaneY, eax + ret +UpdateCamera3D ENDP + +; Four corners of a 0.3-tile-wide body; bounds checked before every map read. +CanWalk3D PROC uses ebx esi edi px:DWORD, py:DWORD + mov esi, -9830 +walk_corner_x: + mov edi, -9830 +walk_corner_y: + mov eax, px + add eax, esi + sar eax, 16 + cmp eax, MAP_WIDTH + jae walk_blocked + mov ebx, eax + mov eax, py + add eax, edi + sar eax, 16 + cmp eax, MAP_HEIGHT + jae walk_blocked + shl eax, 5 + add eax, ebx + cmp BYTE PTR casinoMap[eax], 0 + jne walk_blocked + add edi, 19660 + cmp edi, 9830 + jle walk_corner_y + add esi, 19660 + cmp esi, 9830 + jle walk_corner_x + mov eax, 1 + ret +walk_blocked: + xor eax, eax + ret +CanWalk3D ENDP + +LoadProgress3D PROC uses ebx + mov bankroll, 10000 + invoke CreateFileA, OFFSET savePath3D, 80000000h, 1, 0, 3, 80h, 0 + cmp eax, -1 + je progress_loaded + mov ebx, eax + invoke ReadFile, ebx, OFFSET saveData3D, 16, OFFSET saveIo3D, 0 + invoke CloseHandle, ebx + cmp saveIo3D, 16 + jne progress_loaded + cmp saveData3D, 32443343h + jne progress_loaded + mov eax, saveData3D[4] + cmp eax, 1000000000 + ja progress_loaded + mov bankroll, eax + mov eax, saveData3D[8] + and eax, 15 + or eax, 1 + mov ownedBacks3D, eax + mov ecx, saveData3D[12] + cmp ecx, 3 + ja progress_loaded + bt eax, ecx + jnc progress_loaded + mov selectedBack3D, ecx +progress_loaded: + ret +LoadProgress3D ENDP + +SaveProgress3D PROC uses ebx + invoke CreateDirectoryA, OFFSET runtime3D, 0 + mov saveData3D, 32443343h + mov eax, bankroll + mov saveData3D[4], eax + mov eax, ownedBacks3D + mov saveData3D[8], eax + mov eax, selectedBack3D + mov saveData3D[12], eax + invoke CreateFileA, OFFSET savePath3D, 40000000h, 0, 0, 2, 80h, 0 + cmp eax, -1 + je progress_saved + mov ebx, eax + invoke WriteFile, ebx, OFFSET saveData3D, 16, OFFSET saveIo3D, 0 + invoke CloseHandle, ebx +progress_saved: + ret +SaveProgress3D ENDP diff --git a/src_graphics/platform_data.inc b/src_graphics/platform_data.inc new file mode 100644 index 0000000..a29b476 --- /dev/null +++ b/src_graphics/platform_data.inc @@ -0,0 +1,104 @@ +; Window, presentation and timing state. Gameplay remains MASM32. +GetClientRect PROTO :DWORD,:DWORD +GetWindowRect PROTO :DWORD,:DWORD +GetWindowLongA PROTO :DWORD,:DWORD +SetWindowLongA PROTO :DWORD,:DWORD,:DWORD +SetWindowPos PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +SetStretchBltMode PROTO :DWORD,:DWORD +PatBlt PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +GetForegroundWindow PROTO +IsIconic PROTO :DWORD +LoadCursorA PROTO :DWORD,:DWORD +LoadIconA PROTO :DWORD,:DWORD +GetModuleHandleA PROTO :DWORD +GetProcAddress PROTO :DWORD,:DWORD +SetCurrentDirectoryA PROTO :DWORD +GetFileAttributesA PROTO :DWORD +MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD +BeginPaint PROTO :DWORD,:DWORD +EndPaint PROTO :DWORD,:DWORD +MonitorFromWindow PROTO :DWORD,:DWORD +GetMonitorInfoA PROTO :DWORD,:DWORD +AdjustWindowRectEx PROTO :DWORD,:DWORD,:DWORD,:DWORD +CreateMutexA PROTO :DWORD,:DWORD,:DWORD +GetLastError PROTO +CanWalk3D PROTO :DWORD,:DWORD +FindWindowA PROTO :DWORD,:DWORD +Pressed3D PROTO :DWORD +WindowEvents3D PROTO :DWORD,:DWORD,:DWORD,:DWORD +Create3DWindow PROTO +LoadTextures3D PROTO +Present3D PROTO +ToggleFullscreen3D PROTO +UpdateCamera3D PROTO +SaveProgress3D PROTO +InitPaths3D PROTO +LoadProgress3D PROTO + +.data +clientRect3D dd 4 dup(0) +savedRect3D dd 4 dup(0) +monitor3D dd 40, 9 dup(0) +paint3D db 64 dup(0) +keys3D db 256 dup(0) +pressedKeys3D db 256 dup(0) +fullscreen3D dd 0 +paused3D dd 0 +previousTick3D dd 0 +frameStart3D dd 0 +deltaTime3D dd 16 +animationClock3D dd 0 +mutex3D dd 0 +directory3D db 1024 dup(0) +parent3D db "..",0 +runtime3D db "runtime",0 +savePath3D db "runtime\casino3d-progress.dat",0 +saveData3D dd 32443343h, 10000, 0, 0 +saveIo3D dd 0 +textPause3D db "CASINO / PAUSE",0 +textResume3D db "ESC - RESUME",0 +textQuit3D db "Q - SAVE AND EXIT",0 +textMissing3D db "Cannot load assets/textures/casino3d-hd.bin. Keep the assets folder next to the game.",0 +mutexName3D db "Local\AssemblerCasinoGraphical",0 +user32Name3D db "user32.dll",0 +dpiName3D db "SetProcessDPIAware",0 +textWalkKeys3D db "W/S: MOVE A/D: TURN E: USE",0 +textWindowKeys3D db "F11 FULL / ESC",0 +textBank3D db "BANK $",0 +textTip3D db "TIP $100",0 +textUnavailable3D db "THIS TABLE IS NOT PORTED YET",0 +textSlots3D db "777 / SLOT MACHINE",0 +textSlotsKeys3D db "SPACE: SPIN UP/DOWN: BET",0 +textBack3D db "ESC: BACK TO CASINO",0 +textBet3D db "BET $",0 +textDealer3D db "DEALER",0 +textPlayer3D db "YOUR HAND",0 +textBJKeys3D db "H: HIT S: STAND",0 +textDeal3D db "SPACE: DEAL UP/DOWN: BET",0 +textNext3D db "SPACE: NEXT HAND",0 +textRed3D db "1 RED",0 +textBlack3D db "2 BLACK",0 +textZero3D db "3 ZERO",0 +textEven3D db "4 EVEN",0 +textOdd3D db "5 ODD",0 +textSpin3D db "SPACE: SPIN ESC: LEAVE",0 +textResult3D db "NUMBER",0 +textShop3D db "CASINO BOUTIQUE",0 +textItem1_3D db "1 GOLD CARD BACK - $1000",0 +textItem2_3D db "2 EMERALD BACK - $1500",0 +textItem3_3D db "3 CRIMSON BACK - $1500",0 +textShopHint3D db "BUY ONCE / PRESS AGAIN TO EQUIP",0 +textBought3D db "CARD BACK EQUIPPED",0 +ownedBacks3D dd 1 +selectedBack3D dd 0 +cardBackColors3D dd 00244780h, 00B79835h, 002C7958h, 009A3248h +textATM3D db "CASHIER",0 +textATMNote3D db "BALANCE IS SAVED ON EXIT",0 +textATMNote2_3D db "SEPARATE 2.5D PREVIEW PROFILE",0 +textNoCash3D db "NOT ENOUGH CHIPS",0 +textWin3D db "WIN",0 +textLose3D db "LOSS",0 +textTie3D db "PUSH",0 +textBJ3D db "21 / BLACKJACK",0 +textTips3D db "THANK YOU FOR THE TIP",0 +.code diff --git a/src_graphics/renderer.inc b/src_graphics/renderer.inc new file mode 100644 index 0000000..220722a --- /dev/null +++ b/src_graphics/renderer.inc @@ -0,0 +1,2502 @@ +; ============================================================================== +; CASINO 3D ENGINE - DOOM / WOLFENSTEIN 3D RAYCASTER FOR MASM32 (CP1251) +; ============================================================================== + +includelib gdi32.lib +includelib winmm.lib + +; Windows API Prototypes +CreateWindowExA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +RegisterClassExA PROTO :DWORD +DefWindowProcA PROTO :DWORD,:DWORD,:DWORD,:DWORD +ShowWindow PROTO :DWORD,:DWORD +UpdateWindow PROTO :DWORD +GetDC PROTO :DWORD +ReleaseDC PROTO :DWORD,:DWORD +StretchDIBits PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +PeekMessageA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD +TranslateMessage PROTO :DWORD +DispatchMessageA PROTO :DWORD +PostQuitMessage PROTO :DWORD +DestroyWindow PROTO :DWORD +SetWindowTextA PROTO :DWORD,:DWORD +SetForegroundWindow PROTO :DWORD +GetConsoleWindow PROTO +GetSystemMetrics PROTO :DWORD +CreateFileA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +ReadFile PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD +CloseHandle PROTO :DWORD +GetAsyncKeyState PROTO :DWORD +PlaySoundA PROTO :DWORD,:DWORD,:DWORD +GetModuleFileNameA PROTO :DWORD,:DWORD,:DWORD + +; Structures +C3D_POINT STRUCT + x dd ? + y dd ? +C3D_POINT ENDS + +C3D_MSG STRUCT + hwnd dd ? + message dd ? + wParam dd ? + lParam dd ? + time dd ? + pt C3D_POINT <> +C3D_MSG ENDS + +C3D_WNDCLASSEX STRUCT + cbSize dd ? + style dd ? + lpfnWndProc dd ? + cbClsExtra dd ? + cbWndExtra dd ? + hInstance dd ? + hIcon dd ? + hCursor dd ? + hbrBackground dd ? + lpszMenuName dd ? + lpszClassName dd ? + hIconSm dd ? +C3D_WNDCLASSEX ENDS + +C3D_BITMAPINFOHEADER STRUCT + biSize dd ? + biWidth dd ? + biHeight dd ? + biPlanes dw ? + biBitCount dw ? + biCompression dd ? + biSizeImage dd ? + biXPelsPerMeter dd ? + biYPelsPerMeter dd ? + biClrUsed dd ? + biClrImportant dd ? +C3D_BITMAPINFOHEADER ENDS + +C3D_BITMAPINFO STRUCT + bmiHeader C3D_BITMAPINFOHEADER <> + bmiColors dd ? +C3D_BITMAPINFO ENDS + +SpriteObject STRUCT + posX dd ? ; 16.16 FP + posY dd ? ; 16.16 FP + baseTexId dd ? ; Texture slot index + frameCount dd ? ; Number of animation frames + curFrame dd ? ; Current frame (0..frameCount-1) + animTimer dd ? ; Frame tick counter + animSpeed dd ? ; Ticks per frame + interactId dd ? ; Interaction action ID + promptPtr dd ? ; Prompt string pointer + distSq dd ? ; Distance squared to player +SpriteObject ENDS + +; Constants +SCREEN_W equ 320 +SCREEN_H equ 240 +HALF_W equ 160 +HALF_H equ 120 +SCREEN_SIZE equ (SCREEN_W * SCREEN_H) +WIN_SCALE equ 3 +WINDOW_W equ (SCREEN_W * WIN_SCALE) +WINDOW_H equ (SCREEN_H * WIN_SCALE) + +FP_1 equ 65536 +FP_HALF equ 32768 +CHROMA_KEY equ 00FF00FFh + +WS_OVERLAPPEDWINDOW equ 00CF0000h +SW_SHOW equ 5 +SW_HIDE equ 0 +PM_REMOVE equ 1 +WM_DESTROY equ 0002h +WM_CLOSE equ 0010h +WM_QUIT equ 0012h +CS_HREDRAW equ 2 +CS_VREDRAW equ 1 +DIB_RGB_COLORS equ 0 +SRCCOPY equ 00CC0020h + +SND_ASYNC equ 0001h +SND_FILENAME equ 00020000h +INVALID_FILE_HANDLE equ -1 + +; Precalculated Math, Map, and Font +include casino3d_data.inc +include font8x8.inc + +.data +ALIGN 4 +h3DInst dd 0 +h3DWnd dd 0 +h3DDC dd 0 +hCasinoConsole dd 0 + +bmi3D C3D_BITMAPINFO <> +msg3D C3D_MSG <> +wc3D C3D_WNDCLASSEX <> + +sz3DClassName db "Casino3DRetroClass",0 +sz3DWindowTitle db "CASINO 3D - RETRO DOOM ENGINE [MASM32]",0 +szTexturesRelPath db "assets\textures\casino3d.bin",0 +szTexturesFullPath db 260 dup(0) + +; Audio files +soundCoin db "assets\audio\Звук монеты брошенной в воздух и упавшей на поверхность.wav",0 +soundCards db "assets\audio\playing_cards_deck_flick_through_001_20485.wav",0 +soundRoulette db "assets\audio\roulette-wheel-throw-2.wav",0 +soundJackpot db "assets\audio\Джэк пот.wav",0 +soundClick db "assets\audio\b05e1ac8be34248.wav",0 + +; Player State (Spawns in central hall looking towards strip club and tables) +playerX dd (15 * FP_1 + FP_HALF) +playerY dd (14 * FP_1 + FP_HALF) +playerAngle dd 0 ; 0..511 +playerDirX dd FP_1 +playerDirY dd 0 +playerPlaneX dd 0 +playerPlaneY dd (FP_1 * 66 / 100) + +radarActive dd 1 +interactTargetId dd 0 +interactPromptPtr dd 0 +dancerLuckBuff dd 0 +flashTimer dd 0 +flashMessage db 128 dup(0) + +; Prompts in CP1251 +promptDancer db "[E] ТАНЦОВЩИЦА: КИНУТЬ $100 НА ЧАЙ (+УДАЧА)",0 +promptSlot1 db "[E] КРУТИТЬ СЛОТ-МАШИНУ 777",0 +promptSlot2 db "[E] ИГРАТЬ В CLOVERPIT (СЛОТЫ 5x3)",0 +promptBlackjack db "[E] СЕСТЬ ЗА СТОЛ: 21 / BLACKJACK",0 +promptPoker db "[E] СЕСТЬ ЗА СТОЛ: ТЕХАССКИЙ ПОКЕР",0 +promptRoulette db "[E] СЕСТЬ ЗА СТОЛ: РУЛЕТКА КАЗИНО",0 +promptShop db "[E] БАРМЕН: МАГАЗИН ТАЛИСМАНОВ И ЧИТОВ",0 +promptATM db "[E] БАНКОМАТ: ПРОВЕРИТЬ БАЛАНС И КВОТУ",0 +promptBackroom db "[E] BUCKSHOT / РУССКАЯ РУЛЕТКА",0 +promptDurak db "[E] СЕСТЬ ЗА СТОЛ: ПОДКИДНОЙ ДУРАК",0 +promptHell db "[E] ВОЙТИ В ПОРТАЛ: БАШНЯ АДА (FLOOR 666)",0 + +msgDancerTipped db "Вы кинули $100 танцовщице! Удача в играх повышена!",0 +msgNeedMoney db "Недостаточно денег для чаевых!",0 +statusHUDFormat db "БАНК: $",0 +targetHUDFormat db " ЦЕЛЬ: $",0 +luckHUDFormat db " УДАЧА: +",0 +controlsHUD db "WASD/Стрелки: Ходить | M: Радар | E: Действие | ESC: Меню",0 + +NUM_SPRITES equ 13 +ALIGN 4 +casinoSprites SpriteObject NUM_SPRITES dup(<>) +sortedSprites dd NUM_SPRITES dup(0) + +.data? +ALIGN 4 +screenBuffer dd SCREEN_SIZE dup(?) +ALIGN 4 +zBuffer dd SCREEN_W dup(?) +ALIGN 4 +texturesBuffer dd (48 * 64 * 64) dup(?) + +hudNumBuffer db 32 dup(?) + +.code + +; --- 3D Window Message Procedure --- +Casino3DWndProc PROC hwnd:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD + cmp uMsg, WM_DESTROY + jne @F + invoke PostQuitMessage, 0 + xor eax, eax + ret +@@: + cmp uMsg, WM_CLOSE + jne @F + invoke PostQuitMessage, 0 + xor eax, eax + ret +@@: + invoke DefWindowProcA, hwnd, uMsg, wParam, lParam + ret +Casino3DWndProc ENDP + +; --- Initialize 3D Engine Window & Load Textures --- +Init3DEngine PROC + local bytesRead:DWORD + push ebx + push esi + push edi + + invoke GetConsoleWindow + mov hCasinoConsole, eax + + ; Setup BITMAPINFO + mov bmi3D.bmiHeader.biSize, SIZEOF C3D_BITMAPINFOHEADER + mov bmi3D.bmiHeader.biWidth, SCREEN_W + mov bmi3D.bmiHeader.biHeight, -SCREEN_H + mov bmi3D.bmiHeader.biPlanes, 1 + mov bmi3D.bmiHeader.biBitCount, 32 + mov bmi3D.bmiHeader.biCompression, 0 + mov bmi3D.bmiHeader.biSizeImage, SCREEN_SIZE * 4 + mov bmi3D.bmiHeader.biXPelsPerMeter, 0 + mov bmi3D.bmiHeader.biYPelsPerMeter, 0 + mov bmi3D.bmiHeader.biClrUsed, 0 + mov bmi3D.bmiHeader.biClrImportant, 0 + + cmp h3DWnd, 0 + jne init_window_already_exists + + mov wc3D.cbSize, SIZEOF C3D_WNDCLASSEX + mov wc3D.style, CS_HREDRAW or CS_VREDRAW + mov wc3D.lpfnWndProc, OFFSET Casino3DWndProc + mov wc3D.cbClsExtra, 0 + mov wc3D.cbWndExtra, 0 + mov wc3D.hInstance, 0 + mov wc3D.hIcon, 0 + mov wc3D.hCursor, 0 + mov wc3D.hbrBackground, 0 + mov wc3D.lpszMenuName, 0 + mov wc3D.lpszClassName, OFFSET sz3DClassName + mov wc3D.hIconSm, 0 + invoke RegisterClassExA, OFFSET wc3D + + invoke GetSystemMetrics, 0 + sub eax, WINDOW_W + shr eax, 1 + mov ebx, eax + + invoke GetSystemMetrics, 1 + sub eax, WINDOW_H + shr eax, 1 + mov ecx, eax + + invoke CreateWindowExA, 0, OFFSET sz3DClassName, OFFSET sz3DWindowTitle,\ + WS_OVERLAPPEDWINDOW, ebx, ecx, WINDOW_W + 16, WINDOW_H + 39,\ + 0, 0, 0, 0 + mov h3DWnd, eax + + invoke GetDC, h3DWnd + mov h3DDC, eax + +init_window_already_exists: + invoke ShowWindow, h3DWnd, SW_SHOW + invoke UpdateWindow, h3DWnd + invoke SetForegroundWindow, h3DWnd + + ; Resolve full path to casino3d.bin + invoke GetModuleFileNameA, 0, OFFSET szTexturesFullPath, 260 + ; Find last backslash + lea esi, [szTexturesFullPath] + mov edi, esi +find_slash: + mov al, [esi] + test al, al + jz copy_rel_path + cmp al, '\' + jne @F + lea edi, [esi + 1] +@@: + inc esi + jmp find_slash + +copy_rel_path: + lea esi, [szTexturesRelPath] +@@: + mov al, [esi] + mov [edi], al + test al, al + jz do_open_tex + inc esi + inc edi + jmp @B + +do_open_tex: + invoke CreateFileA, OFFSET szTexturesFullPath, 80000000h, 1, 0, 3, 80h, 0 + cmp eax, INVALID_FILE_HANDLE + jne read_tex_data + + ; Fallback to relative path + invoke CreateFileA, OFFSET szTexturesRelPath, 80000000h, 1, 0, 3, 80h, 0 + cmp eax, INVALID_FILE_HANDLE + je generate_all_fallback_textures + +read_tex_data: + mov ebx, eax + lea ecx, bytesRead + invoke ReadFile, ebx, OFFSET texturesBuffer, (48 * 64 * 64 * 4), ecx, 0 + invoke CloseHandle, ebx + jmp init_sprites_table + +generate_all_fallback_textures: + xor edi, edi +fill_fallback_loop: + cmp edi, (48 * 64 * 64) + jge init_sprites_table + mov eax, edi + and eax, 003Fh + mov ebx, edi + shr ebx, 6 + and ebx, 003Fh + xor eax, ebx + and eax, 8 + jz @F + mov DWORD PTR [texturesBuffer + edi*4], 00802020h + jmp next_fallback_pix +@@: + mov DWORD PTR [texturesBuffer + edi*4], 00202080h +next_fallback_pix: + inc edi + jmp fill_fallback_loop + +init_sprites_table: + ; Sprite 0: Dancer 1 + mov casinoSprites[0*SIZEOF SpriteObject].posX, (5 * FP_1 + FP_HALF) + mov casinoSprites[0*SIZEOF SpriteObject].posY, (4 * FP_1 + FP_HALF) + mov casinoSprites[0*SIZEOF SpriteObject].baseTexId, 10 + mov casinoSprites[0*SIZEOF SpriteObject].frameCount, 4 + mov casinoSprites[0*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[0*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[0*SIZEOF SpriteObject].animSpeed, 6 + mov casinoSprites[0*SIZEOF SpriteObject].interactId, 8 + mov casinoSprites[0*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer + + ; Sprite 1: Dancer 2 + mov casinoSprites[1*SIZEOF SpriteObject].posX, (8 * FP_1 + FP_HALF) + mov casinoSprites[1*SIZEOF SpriteObject].posY, (4 * FP_1 + FP_HALF) + mov casinoSprites[1*SIZEOF SpriteObject].baseTexId, 10 + mov casinoSprites[1*SIZEOF SpriteObject].frameCount, 4 + mov casinoSprites[1*SIZEOF SpriteObject].curFrame, 2 + mov casinoSprites[1*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[1*SIZEOF SpriteObject].animSpeed, 6 + mov casinoSprites[1*SIZEOF SpriteObject].interactId, 8 + mov casinoSprites[1*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer + + ; Sprite 2: Slot 1 + mov casinoSprites[2*SIZEOF SpriteObject].posX, (12 * FP_1 + FP_HALF) + mov casinoSprites[2*SIZEOF SpriteObject].posY, (12 * FP_1 + FP_HALF) + mov casinoSprites[2*SIZEOF SpriteObject].baseTexId, 20 + mov casinoSprites[2*SIZEOF SpriteObject].frameCount, 3 + mov casinoSprites[2*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[2*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[2*SIZEOF SpriteObject].animSpeed, 8 + mov casinoSprites[2*SIZEOF SpriteObject].interactId, 3 + mov casinoSprites[2*SIZEOF SpriteObject].promptPtr, OFFSET promptSlot1 + + ; Sprite 3: Slot 2 (CloverPit) + mov casinoSprites[3*SIZEOF SpriteObject].posX, (15 * FP_1 + FP_HALF) + mov casinoSprites[3*SIZEOF SpriteObject].posY, (12 * FP_1 + FP_HALF) + mov casinoSprites[3*SIZEOF SpriteObject].baseTexId, 20 + mov casinoSprites[3*SIZEOF SpriteObject].frameCount, 3 + mov casinoSprites[3*SIZEOF SpriteObject].curFrame, 1 + mov casinoSprites[3*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[3*SIZEOF SpriteObject].animSpeed, 8 + mov casinoSprites[3*SIZEOF SpriteObject].interactId, 3 + mov casinoSprites[3*SIZEOF SpriteObject].promptPtr, OFFSET promptSlot2 + + ; Sprite 4: Slot 3 + mov casinoSprites[4*SIZEOF SpriteObject].posX, (18 * FP_1 + FP_HALF) + mov casinoSprites[4*SIZEOF SpriteObject].posY, (12 * FP_1 + FP_HALF) + mov casinoSprites[4*SIZEOF SpriteObject].baseTexId, 20 + mov casinoSprites[4*SIZEOF SpriteObject].frameCount, 3 + mov casinoSprites[4*SIZEOF SpriteObject].curFrame, 2 + mov casinoSprites[4*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[4*SIZEOF SpriteObject].animSpeed, 8 + mov casinoSprites[4*SIZEOF SpriteObject].interactId, 3 + mov casinoSprites[4*SIZEOF SpriteObject].promptPtr, OFFSET promptSlot1 + + ; Sprite 5: Blackjack Table + mov casinoSprites[5*SIZEOF SpriteObject].posX, (10 * FP_1 + FP_HALF) + mov casinoSprites[5*SIZEOF SpriteObject].posY, (15 * FP_1 + FP_HALF) + mov casinoSprites[5*SIZEOF SpriteObject].baseTexId, 30 + mov casinoSprites[5*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[5*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[5*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[5*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[5*SIZEOF SpriteObject].interactId, 1 + mov casinoSprites[5*SIZEOF SpriteObject].promptPtr, OFFSET promptBlackjack + + ; Sprite 6: Poker Table + mov casinoSprites[6*SIZEOF SpriteObject].posX, (18 * FP_1 + FP_HALF) + mov casinoSprites[6*SIZEOF SpriteObject].posY, (15 * FP_1 + FP_HALF) + mov casinoSprites[6*SIZEOF SpriteObject].baseTexId, 30 + mov casinoSprites[6*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[6*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[6*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[6*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[6*SIZEOF SpriteObject].interactId, 2 + mov casinoSprites[6*SIZEOF SpriteObject].promptPtr, OFFSET promptPoker + + ; Sprite 7: Roulette Table + mov casinoSprites[7*SIZEOF SpriteObject].posX, (22 * FP_1 + FP_HALF) + mov casinoSprites[7*SIZEOF SpriteObject].posY, (14 * FP_1 + FP_HALF) + mov casinoSprites[7*SIZEOF SpriteObject].baseTexId, 31 + mov casinoSprites[7*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[7*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[7*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[7*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[7*SIZEOF SpriteObject].interactId, 4 + mov casinoSprites[7*SIZEOF SpriteObject].promptPtr, OFFSET promptRoulette + + ; Sprite 8: Bartender / Shop + mov casinoSprites[8*SIZEOF SpriteObject].posX, (7 * FP_1 + FP_HALF) + mov casinoSprites[8*SIZEOF SpriteObject].posY, (22 * FP_1 + FP_HALF) + mov casinoSprites[8*SIZEOF SpriteObject].baseTexId, 32 + mov casinoSprites[8*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[8*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[8*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[8*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[8*SIZEOF SpriteObject].interactId, 6 + mov casinoSprites[8*SIZEOF SpriteObject].promptPtr, OFFSET promptShop + + ; Sprite 9: Bank ATM + mov casinoSprites[9*SIZEOF SpriteObject].posX, (24 * FP_1 + FP_HALF) + mov casinoSprites[9*SIZEOF SpriteObject].posY, (13 * FP_1 + FP_HALF) + mov casinoSprites[9*SIZEOF SpriteObject].baseTexId, 33 + mov casinoSprites[9*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[9*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[9*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[9*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[9*SIZEOF SpriteObject].interactId, 7 + mov casinoSprites[9*SIZEOF SpriteObject].promptPtr, OFFSET promptATM + + ; Sprite 10: Backroom Table + mov casinoSprites[10*SIZEOF SpriteObject].posX, (23 * FP_1 + FP_HALF) + mov casinoSprites[10*SIZEOF SpriteObject].posY, (23 * FP_1 + FP_HALF) + mov casinoSprites[10*SIZEOF SpriteObject].baseTexId, 34 + mov casinoSprites[10*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[10*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[10*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[10*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[10*SIZEOF SpriteObject].interactId, 5 + mov casinoSprites[10*SIZEOF SpriteObject].promptPtr, OFFSET promptBackroom + + ; Sprite 11: Durak Table + mov casinoSprites[11*SIZEOF SpriteObject].posX, (26 * FP_1 + FP_HALF) + mov casinoSprites[11*SIZEOF SpriteObject].posY, (23 * FP_1 + FP_HALF) + mov casinoSprites[11*SIZEOF SpriteObject].baseTexId, 30 + mov casinoSprites[11*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[11*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[11*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[11*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[11*SIZEOF SpriteObject].interactId, 10 + mov casinoSprites[11*SIZEOF SpriteObject].promptPtr, OFFSET promptDurak + + ; Sprite 12: Hell Portal + mov casinoSprites[12*SIZEOF SpriteObject].posX, (24 * FP_1 + FP_HALF) + mov casinoSprites[12*SIZEOF SpriteObject].posY, (3 * FP_1 + FP_HALF) + mov casinoSprites[12*SIZEOF SpriteObject].baseTexId, 4 + mov casinoSprites[12*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[12*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[12*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[12*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[12*SIZEOF SpriteObject].interactId, 9 + mov casinoSprites[12*SIZEOF SpriteObject].promptPtr, OFFSET promptHell + + pop edi + pop esi + pop ebx + ret +Init3DEngine ENDP + +; --- Fast 2D Drawing Primitives --- +DrawPixel PROC x:DWORD, y:DWORD, color:DWORD + mov eax, x + cmp eax, 0 + jl @F + cmp eax, SCREEN_W + jge @F + mov ecx, y + cmp ecx, 0 + jl @F + cmp ecx, SCREEN_H + jge @F + imul ecx, SCREEN_W + add ecx, eax + mov edx, color + mov [screenBuffer + ecx*4], edx +@@: + ret +DrawPixel ENDP + +DrawBox PROC x:DWORD, y:DWORD, w:DWORD, h:DWORD, color:DWORD + push ebx + push esi + push edi + mov edi, y +box_row_loop: + mov eax, y + add eax, h + cmp edi, eax + jge box_done + cmp edi, 0 + jl next_box_row + cmp edi, SCREEN_H + jge box_done + + mov esi, x +box_col_loop: + mov eax, x + add eax, w + cmp esi, eax + jge next_box_row + cmp esi, 0 + jl next_box_col + cmp esi, SCREEN_W + jge next_box_row + + mov ecx, edi + imul ecx, SCREEN_W + add ecx, esi + mov edx, color + mov [screenBuffer + ecx*4], edx + +next_box_col: + inc esi + jmp box_col_loop + +next_box_row: + inc edi + jmp box_row_loop + +box_done: + pop edi + pop esi + pop ebx + ret +DrawBox ENDP + +DrawCircle PROC cxVal:DWORD, cyVal:DWORD, radius:DWORD, color:DWORD + push ebx + push esi + push edi + mov eax, radius + neg eax + mov edi, eax +circ_y: + cmp edi, radius + jg circ_done + mov eax, radius + neg eax + mov esi, eax +circ_x: + cmp esi, radius + jg next_circ_y + + mov eax, esi + imul eax, eax + mov ebx, edi + imul ebx, ebx + add eax, ebx + mov edx, radius + imul edx, edx + cmp eax, edx + jg next_circ_x + + mov eax, cxVal + add eax, esi + mov ecx, cyVal + add ecx, edi + invoke DrawPixel, eax, ecx, color + +next_circ_x: + inc esi + jmp circ_x +next_circ_y: + inc edi + jmp circ_y +circ_done: + pop edi + pop esi + pop ebx + ret +DrawCircle ENDP + +DrawChar8x8 PROC x:DWORD, y:DWORD, chVal:DWORD, color:DWORD + push ebx + push esi + push edi + mov eax, chVal + and eax, 0FFh + shl eax, 3 + lea esi, [font8x8 + eax] + + xor edi, edi +char_row_loop: + cmp edi, 8 + jge char_done + mov ecx, y + add ecx, edi + cmp ecx, 0 + jl next_char_row + cmp ecx, SCREEN_H + jge char_done + + movzx ebx, BYTE PTR [esi + edi] + xor edx, edx +char_col_loop: + cmp edx, 8 + jge next_char_row + mov eax, x + add eax, edx + cmp eax, 0 + jl next_char_col + cmp eax, SCREEN_W + jge next_char_row + + test ebx, 80h + jz next_char_col + + push ecx + imul ecx, SCREEN_W + add ecx, eax + push edx + mov edx, color + mov [screenBuffer + ecx*4], edx + pop edx + pop ecx + +next_char_col: + shl ebx, 1 + inc edx + jmp char_col_loop + +next_char_row: + inc edi + jmp char_row_loop + +char_done: + pop edi + pop esi + pop ebx + ret +DrawChar8x8 ENDP + +DrawText8x8 PROC x:DWORD, y:DWORD, strPtr:DWORD, color:DWORD + push esi + push edi + mov esi, strPtr + mov edi, x +text_loop: + movzx eax, BYTE PTR [esi] + test al, al + jz text_done + invoke DrawChar8x8, edi, y, eax, color + add edi, 8 + inc esi + jmp text_loop +text_done: + pop edi + pop esi + ret +DrawText8x8 ENDP + +; --- Render Floor & Ceiling --- +RenderCeilingAndFloor PROC uses ebx esi edi + ; Ceiling (Slot 5: 5 * 4096 = 20480 DWORDs = 81920 bytes) + xor edi, edi +ceiling_y_loop: + cmp edi, HALF_H + jge floor_render + mov ecx, edi + imul ecx, SCREEN_W + + mov eax, edi + and eax, 63 + shl eax, 6 + + xor esi, esi +ceiling_x_loop: + cmp esi, SCREEN_W + jge next_ceiling_y + + mov ebx, esi + and ebx, 63 + add ebx, eax + mov edx, [texturesBuffer + 81920 + ebx*4] + add ecx, esi + mov [screenBuffer + ecx*4], edx + sub ecx, esi + + inc esi + jmp ceiling_x_loop + +next_ceiling_y: + inc edi + jmp ceiling_y_loop + +floor_render: + ; Carpet Floor (Slot 3: 3 * 4096 = 12288 DWORDs = 49152 bytes) + mov edi, HALF_H +floor_y_loop: + cmp edi, SCREEN_H + jge bg_done + mov ecx, edi + imul ecx, SCREEN_W + + mov eax, edi + and eax, 63 + shl eax, 6 + + mov edx, edi + sub edx, HALF_H + shl edx, 1 + add edx, 40 + cmp edx, 255 + jbe @F + mov edx, 255 +@@: + mov ebx, edx + + xor esi, esi +floor_x_loop: + cmp esi, SCREEN_W + jge next_floor_y + + mov edx, esi + and edx, 63 + add edx, eax + mov eax, [texturesBuffer + 49152 + edx*4] + + ; Shade RGB + movzx edx, al + imul edx, ebx + shr edx, 8 + push edx + + movzx edx, ah + imul edx, ebx + shr edx, 8 + shl edx, 8 + + shr eax, 16 + movzx eax, al + imul eax, ebx + shr eax, 8 + shl eax, 16 + + or eax, edx + pop edx + or eax, edx + + add ecx, esi + mov [screenBuffer + ecx*4], eax + sub ecx, esi + + mov eax, edi + and eax, 63 + shl eax, 6 + + inc esi + jmp floor_x_loop + +next_floor_y: + inc edi + jmp floor_y_loop + +bg_done: + ret +RenderCeilingAndFloor ENDP + +; --- DDA Raycasting Walls Rendering --- +RenderWalls PROC + local col:DWORD + local camX:DWORD + local rayDirX:DWORD + local rayDirY:DWORD + local mapX:DWORD + local mapY:DWORD + local deltaDistX:DWORD + local deltaDistY:DWORD + local stepX:DWORD + local stepY:DWORD + local sideDistX:DWORD + local sideDistY:DWORD + local side:DWORD + local perpWallDist:DWORD + local lineH:DWORD + local drawStart:DWORD + local drawEnd:DWORD + local wallHit:DWORD + local texX:DWORD + local texId:DWORD + local shade:DWORD + + push ebx + push esi + push edi + + mov eax, playerAngle + and eax, 511 + mov ebx, [tableCos + eax*4] + mov playerDirX, ebx + mov ebx, [tableSin + eax*4] + mov playerDirY, ebx + + imul ebx, -66 + cdq + mov ecx, 100 + idiv ecx + mov playerPlaneX, eax + + mov eax, playerDirX + imul eax, 66 + cdq + idiv ecx + mov playerPlaneY, eax + + mov col, 0 +col_loop: + cmp col, SCREEN_W + jge walls_done + + mov eax, col + shl eax, 1 + sub eax, SCREEN_W + imul eax, FP_1 + cdq + mov ecx, SCREEN_W + idiv ecx + mov camX, eax + + mov eax, playerPlaneX + imul camX + shrd eax, edx, 16 + add eax, playerDirX + mov rayDirX, eax + + mov eax, playerPlaneY + imul camX + shrd eax, edx, 16 + add eax, playerDirY + mov rayDirY, eax + + mov eax, playerX + sar eax, 16 + mov mapX, eax + mov eax, playerY + sar eax, 16 + mov mapY, eax + + cmp rayDirX, 0 + jne @F + mov deltaDistX, 7FFFFFFFh + jmp calc_delta_y +@@: + mov eax, FP_1 + imul eax, FP_1 + cdq + idiv rayDirX + test eax, eax + jns @F + neg eax +@@: + mov deltaDistX, eax + +calc_delta_y: + cmp rayDirY, 0 + jne @F + mov deltaDistY, 7FFFFFFFh + jmp calc_step_x +@@: + mov eax, FP_1 + imul eax, FP_1 + cdq + idiv rayDirY + test eax, eax + jns @F + neg eax +@@: + mov deltaDistY, eax + +calc_step_x: + cmp rayDirX, 0 + jge step_x_pos + mov stepX, -1 + mov eax, mapX + shl eax, 16 + mov ecx, playerX + sub ecx, eax + mov eax, ecx + imul deltaDistX + shrd eax, edx, 16 + mov sideDistX, eax + jmp calc_step_y +step_x_pos: + mov stepX, 1 + mov eax, mapX + inc eax + shl eax, 16 + sub eax, playerX + imul deltaDistX + shrd eax, edx, 16 + mov sideDistX, eax + +calc_step_y: + cmp rayDirY, 0 + jge step_y_pos + mov stepY, -1 + mov eax, mapY + shl eax, 16 + mov ecx, playerY + sub ecx, eax + mov eax, ecx + imul deltaDistY + shrd eax, edx, 16 + mov sideDistY, eax + jmp dda_start +step_y_pos: + mov stepY, 1 + mov eax, mapY + inc eax + shl eax, 16 + sub eax, playerY + imul deltaDistY + shrd eax, edx, 16 + mov sideDistY, eax + +dda_start: + xor ecx, ecx +dda_step_loop: + inc ecx + cmp ecx, 64 + jge hit_wall + + mov eax, sideDistX + cmp eax, sideDistY + jge step_in_y + + mov eax, deltaDistX + add sideDistX, eax + mov eax, stepX + add mapX, eax + mov side, 0 + jmp check_tile + +step_in_y: + mov eax, deltaDistY + add sideDistY, eax + mov eax, stepY + add mapY, eax + mov side, 1 + +check_tile: + cmp mapX, 0 + jl hit_wall + cmp mapX, MAP_WIDTH + jge hit_wall + cmp mapY, 0 + jl hit_wall + cmp mapY, MAP_HEIGHT + jge hit_wall + + mov eax, mapY + shl eax, 5 + add eax, mapX + movzx eax, BYTE PTR [casinoMap + eax] + test eax, eax + jnz hit_wall + jmp dda_step_loop + +hit_wall: + cmp side, 0 + jne perp_y + mov eax, sideDistX + sub eax, deltaDistX + mov perpWallDist, eax + jmp perp_done +perp_y: + mov eax, sideDistY + sub eax, deltaDistY + mov perpWallDist, eax +perp_done: + cmp perpWallDist, 2048 + jge @F + mov perpWallDist, 2048 +@@: + mov eax, col + mov edx, perpWallDist + mov [zBuffer + eax*4], edx + + mov eax, SCREEN_H + imul eax, FP_1 + cdq + idiv perpWallDist + mov lineH, eax + + mov eax, lineH + shr eax, 1 + mov ecx, HALF_H + sub ecx, eax + mov drawStart, ecx + + mov eax, lineH + shr eax, 1 + mov ecx, HALF_H + add ecx, eax + mov drawEnd, ecx + + cmp side, 0 + jne hit_side_y + mov eax, perpWallDist + imul rayDirY + shrd eax, edx, 16 + add eax, playerY + mov wallHit, eax + jmp calc_tex_x +hit_side_y: + mov eax, perpWallDist + imul rayDirX + shrd eax, edx, 16 + add eax, playerX + mov wallHit, eax + +calc_tex_x: + mov eax, wallHit + shr eax, 10 + and eax, 63 + mov texX, eax + + cmp side, 0 + jne @F + cmp rayDirX, 0 + jle @F + mov eax, 63 + sub eax, texX + mov texX, eax +@@: + cmp side, 1 + jne select_tex + cmp rayDirY, 0 + jge select_tex + mov eax, 63 + sub eax, texX + mov texX, eax + +select_tex: + mov eax, mapY + shl eax, 5 + add eax, mapX + movzx eax, BYTE PTR [casinoMap + eax] + mov texId, eax + cmp texId, 0 + jne @F + mov texId, 1 +@@: + + mov eax, perpWallDist + shr eax, 12 + mov edx, 256 + sub edx, eax + cmp edx, 35 + jge @F + mov edx, 35 +@@: + cmp side, 1 + jne @F + imul edx, 3 + shr edx, 2 +@@: + mov shade, edx + + cmp drawStart, 0 + jge @F + mov drawStart, 0 +@@: + cmp drawEnd, SCREEN_H + jl @F + mov drawEnd, SCREEN_H - 1 +@@: + + ; Vertical texture sampling loop + mov eax, 64 * FP_1 + cdq + idiv lineH + mov esi, eax ; stepY + + mov eax, lineH + shr eax, 1 + add eax, drawStart + sub eax, HALF_H + imul eax, esi + mov edi, eax ; texPos + + mov ecx, drawStart +draw_stripe_loop: + cmp ecx, drawEnd + jg next_col + + mov eax, edi + shr eax, 16 + and eax, 63 + shl eax, 6 + add eax, texX + + ; CORRECTED TEXTURE SLOT DWORD INDEX: texId * 4096 (shl 12) + mov edx, texId + shl edx, 12 + add eax, edx + + mov eax, [texturesBuffer + eax*4] + + ; Apply shading + mov ebx, shade + movzx edx, al + imul edx, ebx + shr edx, 8 + push edx + + movzx edx, ah + imul edx, ebx + shr edx, 8 + shl edx, 8 + + shr eax, 16 + movzx eax, al + imul eax, ebx + shr eax, 8 + shl eax, 16 + + or eax, edx + pop edx + or eax, edx + + mov edx, ecx + imul edx, SCREEN_W + add edx, col + mov [screenBuffer + edx*4], eax + + add edi, esi + inc ecx + jmp draw_stripe_loop + +next_col: + inc col + jmp col_loop + +walls_done: + pop edi + pop esi + pop ebx + ret +RenderWalls ENDP + +; --- Render 2.5D Billboard Sprites --- +RenderSprites PROC + local sprIdx:DWORD + local relX:DWORD + local relY:DWORD + local invDet:DWORD + local transX:DWORD + local transY:DWORD + local sprScreenX:DWORD + local sprH:DWORD + local sprW:DWORD + local drawStartY:DWORD + local drawEndY:DWORD + local drawStartX:DWORD + local drawEndX:DWORD + local stripe:DWORD + local texX:DWORD + local texY:DWORD + local shade:DWORD + local texSlot:DWORD + + push ebx + push esi + push edi + + xor esi, esi +calc_dist_loop: + cmp esi, NUM_SPRITES + jge sort_sprites + mov eax, esi + imul eax, SIZEOF SpriteObject + + mov edx, [casinoSprites + eax].posX + sub edx, playerX + sar edx, 8 + imul edx, edx + mov ebx, edx + + mov edx, [casinoSprites + eax].posY + sub edx, playerY + sar edx, 8 + imul edx, edx + add ebx, edx + + mov [casinoSprites + eax].distSq, ebx + mov [sortedSprites + esi*4], esi + inc esi + jmp calc_dist_loop + +sort_sprites: + xor esi, esi +sort_outer: + cmp esi, NUM_SPRITES - 1 + jge render_sorted_sprites + mov edi, esi + inc edi +sort_inner: + cmp edi, NUM_SPRITES + jge next_sort_outer + + mov eax, [sortedSprites + esi*4] + imul eax, SIZEOF SpriteObject + mov eax, [casinoSprites + eax].distSq + + mov ebx, [sortedSprites + edi*4] + imul ebx, SIZEOF SpriteObject + mov ebx, [casinoSprites + ebx].distSq + + cmp eax, ebx + jge @F + mov ecx, [sortedSprites + esi*4] + mov edx, [sortedSprites + edi*4] + mov [sortedSprites + esi*4], edx + mov [sortedSprites + edi*4], ecx +@@: + inc edi + jmp sort_inner +next_sort_outer: + inc esi + jmp sort_outer + +render_sorted_sprites: + xor esi, esi +draw_spr_loop: + cmp esi, NUM_SPRITES + jge sprites_rendered + + mov eax, [sortedSprites + esi*4] + mov sprIdx, eax + imul eax, SIZEOF SpriteObject + + ; Advance sprite animation + mov edx, [casinoSprites + eax].animTimer + inc edx + cmp edx, [casinoSprites + eax].animSpeed + jl store_anim + xor edx, edx + mov ecx, [casinoSprites + eax].curFrame + inc ecx + cmp ecx, [casinoSprites + eax].frameCount + jl @F + xor ecx, ecx +@@: + mov [casinoSprites + eax].curFrame, ecx +store_anim: + mov [casinoSprites + eax].animTimer, edx + + cmp [casinoSprites + eax].distSq, 16 + jle next_spr + + mov edx, [casinoSprites + eax].posX + sub edx, playerX + mov relX, edx + + mov edx, [casinoSprites + eax].posY + sub edx, playerY + mov relY, edx + + mov eax, playerPlaneX + imul playerDirY + shrd eax, edx, 16 + mov ebx, eax + + mov eax, playerDirX + imul playerPlaneY + shrd eax, edx, 16 + sub ebx, eax + test ebx, ebx + jz next_spr + + mov eax, FP_1 + imul eax, FP_1 + cdq + idiv ebx + mov invDet, eax + + mov eax, playerDirY + imul relX + shrd eax, edx, 16 + mov ebx, eax + + mov eax, playerDirX + imul relY + shrd eax, edx, 16 + sub ebx, eax + + mov eax, ebx + imul invDet + shrd eax, edx, 16 + mov transX, eax + + mov eax, playerPlaneY + neg eax + imul relX + shrd eax, edx, 16 + mov ebx, eax + + mov eax, playerPlaneX + imul relY + shrd eax, edx, 16 + add ebx, eax + + mov eax, ebx + imul invDet + shrd eax, edx, 16 + mov transY, eax + + ; Depth culling + cmp transY, 4096 + jle next_spr + + mov eax, transX + imul eax, HALF_W + cdq + idiv transY + add eax, HALF_W + mov sprScreenX, eax + + mov eax, SCREEN_H + imul eax, FP_1 + cdq + idiv transY + test eax, eax + jns @F + neg eax +@@: + ; Limit maximum sprite height to screen height * 2 to prevent full-screen box blowout + cmp eax, SCREEN_H * 2 + jle @F + mov eax, SCREEN_H * 2 +@@: + mov sprH, eax + mov sprW, eax + + mov eax, HALF_H + mov ebx, sprH + shr ebx, 1 + sub eax, ebx + mov drawStartY, eax + add eax, sprH + mov drawEndY, eax + + mov eax, sprScreenX + mov ebx, sprW + shr ebx, 1 + sub eax, ebx + mov drawStartX, eax + add eax, sprW + mov drawEndX, eax + + cmp drawStartY, 0 + jge @F + mov drawStartY, 0 +@@: + cmp drawEndY, SCREEN_H + jl @F + mov drawEndY, SCREEN_H - 1 +@@: + + mov eax, transY + shr eax, 12 + mov edx, 256 + sub edx, eax + cmp edx, 40 + jge @F + mov edx, 40 +@@: + mov shade, edx + + mov eax, sprIdx + imul eax, SIZEOF SpriteObject + mov edx, [casinoSprites + eax].baseTexId + add edx, [casinoSprites + eax].curFrame + mov texSlot, edx + + mov eax, drawStartX + mov stripe, eax + +spr_stripe_loop: + mov eax, stripe + cmp eax, drawEndX + jge next_spr + + cmp eax, 0 + jl next_spr_stripe + cmp eax, SCREEN_W + jge next_spr + + mov edx, transY + cmp edx, [zBuffer + eax*4] + jge next_spr_stripe + + mov eax, stripe + sub eax, sprScreenX + mov ebx, sprW + shr ebx, 1 + add eax, ebx + shl eax, 6 + cdq + idiv sprW + cmp eax, 0 + jl next_spr_stripe + cmp eax, 64 + jge next_spr_stripe + mov texX, eax + + mov edi, drawStartY +spr_pix_y_loop: + cmp edi, drawEndY + jg next_spr_stripe + + mov eax, edi + sub eax, HALF_H + mov ebx, sprH + shr ebx, 1 + add eax, ebx + shl eax, 6 + cdq + idiv sprH + cmp eax, 0 + jl next_spr_y + cmp eax, 64 + jge next_spr_y + mov texY, eax + + shl eax, 6 + add eax, texX + ; CORRECTED TEXTURE SLOT DWORD INDEX: texSlot * 4096 (shl 12) + mov edx, texSlot + shl edx, 12 + add eax, edx + + mov eax, [texturesBuffer + eax*4] + + ; ROBUST CHROMAKEY FILTER: + ; Skip if pure magenta or black + cmp eax, CHROMA_KEY + je next_spr_y + test eax, eax + jz next_spr_y + + ; Skip if near-magenta: Green is low (< 0x20) and Blue & Red are both high (> 0xD0) + mov ecx, eax + and ecx, 0000FF00h ; Green + cmp ecx, 00002000h + ja do_draw_sprite_pix + mov ecx, eax + and ecx, 00FF0000h ; Red + cmp ecx, 00D00000h + jb do_draw_sprite_pix + mov ecx, eax + and ecx, 000000FFh ; Blue + cmp ecx, 000000D0h + ja next_spr_y + +do_draw_sprite_pix: + mov ebx, shade + movzx edx, al + imul edx, ebx + shr edx, 8 + push edx + + movzx edx, ah + imul edx, ebx + shr edx, 8 + shl edx, 8 + + shr eax, 16 + movzx eax, al + imul eax, ebx + shr eax, 8 + shl eax, 16 + + or eax, edx + pop edx + or eax, edx + + mov edx, edi + imul edx, SCREEN_W + add edx, stripe + mov [screenBuffer + edx*4], eax + +next_spr_y: + inc edi + jmp spr_pix_y_loop + +next_spr_stripe: + inc stripe + jmp spr_stripe_loop + +next_spr: + inc esi + jmp draw_spr_loop + +sprites_rendered: + pop edi + pop esi + pop ebx + ret +RenderSprites ENDP + +; --- Radar / Minimap Overlay --- +RenderMinimap PROC uses ebx esi edi + cmp radarActive, 0 + je map_done + + invoke DrawBox, 248, 2, 68, 68, 00101018h + invoke DrawBox, 249, 3, 66, 66, 00403010h + + xor edi, edi +map_y_row: + cmp edi, MAP_HEIGHT + jge draw_map_sprites + + xor esi, esi +map_x_col: + cmp esi, MAP_WIDTH + jge next_map_row + + mov eax, edi + shl eax, 5 + add eax, esi + movzx eax, BYTE PTR [casinoMap + eax] + test eax, eax + jz next_map_col + + mov eax, esi + shl eax, 1 + add eax, 250 + mov ebx, edi + shl ebx, 1 + add ebx, 4 + + invoke DrawPixel, eax, ebx, 00908050h + inc eax + invoke DrawPixel, eax, ebx, 00908050h + dec eax + inc ebx + invoke DrawPixel, eax, ebx, 00706030h + inc eax + invoke DrawPixel, eax, ebx, 00706030h + +next_map_col: + inc esi + jmp map_x_col + +next_map_row: + inc edi + jmp map_y_row + +draw_map_sprites: + xor esi, esi +map_spr_loop: + cmp esi, NUM_SPRITES + jge draw_map_player + + mov eax, esi + imul eax, SIZEOF SpriteObject + + mov edx, [casinoSprites + eax].posX + shr edx, 16 + shl edx, 1 + add edx, 250 + + mov ecx, [casinoSprites + eax].posY + shr ecx, 16 + shl ecx, 1 + add ecx, 4 + + mov ebx, [casinoSprites + eax].interactId + cmp ebx, 8 + jne @F + mov ebx, 00FF40A0h ; Pink + jmp draw_spr_dot +@@: + cmp ebx, 6 + jne @F + mov ebx, 0040D0FFh ; Cyan + jmp draw_spr_dot +@@: + cmp ebx, 9 + jne @F + mov ebx, 00FF2020h ; Red + jmp draw_spr_dot +@@: + mov ebx, 0030FF40h ; Green + +draw_spr_dot: + invoke DrawPixel, edx, ecx, ebx + inc edx + invoke DrawPixel, edx, ecx, ebx + + inc esi + jmp map_spr_loop + +draw_map_player: + mov edx, playerX + shr edx, 16 + shl edx, 1 + add edx, 250 + + mov ecx, playerY + shr ecx, 16 + shl ecx, 1 + add ecx, 4 + + invoke DrawPixel, edx, ecx, 00FFFF00h + inc edx + invoke DrawPixel, edx, ecx, 00FFFF00h + dec edx + inc ecx + invoke DrawPixel, edx, ecx, 00FFFF00h + inc edx + invoke DrawPixel, edx, ecx, 00FFFF00h + + mov eax, playerDirX + sar eax, 13 + add edx, eax + mov eax, playerDirY + sar eax, 13 + add ecx, eax + invoke DrawPixel, edx, ecx, 00FFCC00h + +map_done: + ret +RenderMinimap ENDP + +; --- Format UInt to Decimal String in hudNumBuffer --- +FormatUIntString PROC val:DWORD + push ebx + push esi + push edi + mov eax, val + lea edi, [hudNumBuffer + 31] + mov BYTE PTR [edi], 0 + dec edi + mov ebx, 10 +conv_loop: + xor edx, edx + div ebx + add dl, '0' + mov [edi], dl + dec edi + test eax, eax + jnz conv_loop + inc edi + mov eax, edi + pop edi + pop esi + pop ebx + ret +FormatUIntString ENDP + +; --- Render HUD Status Bar & Prompts --- +RenderHUD PROC uses ebx esi edi + invoke DrawBox, 0, 216, SCREEN_W, 24, 00141418h + invoke DrawBox, 0, 216, SCREEN_W, 1, 00D4AF37h + + invoke DrawText8x8, 8, 220, OFFSET statusHUDFormat, 00D4AF37h + invoke FormatUIntString, bankroll + invoke DrawText8x8, 64, 220, eax, 0040FF40h + + invoke DrawText8x8, 120, 220, OFFSET targetHUDFormat, 00D4AF37h + invoke FormatUIntString, targetBank + invoke DrawText8x8, 192, 220, eax, 0040D0FFh + + invoke DrawText8x8, 240, 220, OFFSET luckHUDFormat, 00FF40A0h + invoke FormatUIntString, dancerLuckBuff + invoke DrawText8x8, 304, 220, eax, 00FF40A0h + + cmp flashTimer, 0 + jle check_interaction_prompt + dec flashTimer + invoke DrawBox, 10, 95, SCREEN_W - 20, 20, 00101018h + invoke DrawBox, 10, 95, SCREEN_W - 20, 1, 0030FF30h + invoke DrawBox, 10, 114, SCREEN_W - 20, 1, 0030FF30h + invoke DrawText8x8, 16, 101, OFFSET flashMessage, 0030FF30h + +check_interaction_prompt: + cmp interactPromptPtr, 0 + je show_controls_prompt + + invoke DrawBox, 12, 188, SCREEN_W - 24, 20, 00141010h + invoke DrawBox, 12, 188, SCREEN_W - 24, 1, 00FFFF00h + invoke DrawBox, 12, 207, SCREEN_W - 24, 1, 00FFFF00h + invoke DrawText8x8, 18, 194, interactPromptPtr, 00FFFF00h + jmp hud_done + +show_controls_prompt: + invoke DrawText8x8, 6, 6, OFFSET controlsHUD, 00888888h + +hud_done: + ret +RenderHUD ENDP + +; --- Proximity Interaction Detection --- +CheckInteractions PROC uses ebx esi edi + mov interactTargetId, 0 + mov interactPromptPtr, 0 + + xor esi, esi +check_loop: + cmp esi, NUM_SPRITES + jge check_done + + mov eax, esi + imul eax, SIZEOF SpriteObject + mov ebx, [casinoSprites + eax].distSq + + cmp ebx, 262144 + jge next_check + + mov edx, [casinoSprites + eax].interactId + mov interactTargetId, edx + mov edx, [casinoSprites + eax].promptPtr + mov interactPromptPtr, edx + jmp check_done + +next_check: + inc esi + jmp check_loop + +check_done: + ret +CheckInteractions ENDP + +CopyString PROC src:DWORD, dst:DWORD + push esi + push edi + mov esi, src + mov edi, dst +@@: + mov al, [esi] + mov [edi], al + test al, al + jz @F + inc esi + inc edi + jmp @B +@@: + pop edi + pop esi + ret +CopyString ENDP + +; ============================================================================== +; VISUAL GAME ANIMATIONS +; ============================================================================== + +AnimChipFlight PROC startX:DWORD, startY:DWORD, targetX:DWORD, targetY:DWORD, chipColor:DWORD + local frame:DWORD + local curX:DWORD + local curY:DWORD + local arcH:DWORD + + push ebx + push esi + push edi + + invoke PlaySoundA, OFFSET soundCoin, 0, SND_ASYNC or SND_FILENAME + + mov frame, 0 +chip_frame_loop: + cmp frame, 16 + jge chip_landed + + mov eax, frame + imul eax, 100 + shr eax, 4 + mov ecx, eax + + mov eax, targetX + sub eax, startX + imul eax, ecx + cdq + mov ebx, 100 + idiv ebx + add eax, startX + mov curX, eax + + mov eax, targetY + sub eax, startY + imul eax, ecx + cdq + idiv ebx + add eax, startY + + mov ebx, 100 + sub ebx, ecx + imul ebx, ecx + cdq + mov esi, 100 + idiv esi + shr eax, 1 + sub eax, curY + neg eax + mov curY, eax + + invoke DrawCircle, curX, curY, 6, 00D4AF37h + invoke DrawCircle, curX, curY, 4, chipColor + invoke DrawPixel, curX, curY, 00FFFFFFh + + invoke StretchDIBits, h3DDC, 0, 0, WINDOW_W, WINDOW_H,\ + 0, 0, SCREEN_W, SCREEN_H,\ + OFFSET screenBuffer, OFFSET bmi3D, DIB_RGB_COLORS, SRCCOPY + + invoke Sleep, 16 + inc frame + jmp chip_frame_loop + +chip_landed: + invoke DrawCircle, targetX, targetY, 7, 00D4AF37h + invoke DrawCircle, targetX, targetY, 5, chipColor + invoke StretchDIBits, h3DDC, 0, 0, WINDOW_W, WINDOW_H,\ + 0, 0, SCREEN_W, SCREEN_H,\ + OFFSET screenBuffer, OFFSET bmi3D, DIB_RGB_COLORS, SRCCOPY + invoke Sleep, 40 + + pop edi + pop esi + pop ebx + ret +AnimChipFlight ENDP + +AnimReelSpin PROC sym1:DWORD, sym2:DWORD, sym3:DWORD, isJackpot:DWORD + local frame:DWORD + local rPos1:DWORD + local rPos2:DWORD + local rPos3:DWORD + + push ebx + push esi + push edi + + invoke PlaySoundA, OFFSET soundClick, 0, SND_ASYNC or SND_FILENAME + + mov rPos1, 0 + mov rPos2, 0 + mov rPos3, 0 + mov frame, 0 + +reel_loop: + cmp frame, 80 + jge spin_finished + + invoke DrawBox, 50, 40, 220, 140, 00101018h + invoke DrawBox, 50, 40, 220, 2, 00D4AF37h + invoke DrawBox, 50, 178, 220, 2, 00D4AF37h + + cmp frame, 35 + jge @F + add rPos1, 16 +@@: + cmp frame, 55 + jge @F + add rPos2, 16 +@@: + cmp frame, 75 + jge @F + add rPos3, 16 +@@: + + invoke DrawBox, 70, 55, 45, 95, 00202028h + mov eax, rPos1 + and eax, 31 + invoke DrawBox, 75, 75, 35, 35, 00D02020h + + invoke DrawBox, 135, 55, 45, 95, 00202028h + mov eax, rPos2 + and eax, 31 + invoke DrawBox, 140, 75, 35, 35, 0020D020h + + invoke DrawBox, 200, 55, 45, 95, 00202028h + mov eax, rPos3 + and eax, 31 + invoke DrawBox, 205, 75, 35, 35, 002020D0h + + invoke DrawBox, 50, 92, 220, 1, 00FF0000h + + invoke StretchDIBits, h3DDC, 0, 0, WINDOW_W, WINDOW_H,\ + 0, 0, SCREEN_W, SCREEN_H,\ + OFFSET screenBuffer, OFFSET bmi3D, DIB_RGB_COLORS, SRCCOPY + + invoke Sleep, 16 + inc frame + jmp reel_loop + +spin_finished: + cmp isJackpot, 0 + je spin_exit + + invoke PlaySoundA, OFFSET soundJackpot, 0, SND_ASYNC or SND_FILENAME + invoke DrawBox, 60, 45, 200, 25, 00FFD700h + invoke DrawBox, 62, 47, 196, 21, 00800000h + + invoke StretchDIBits, h3DDC, 0, 0, WINDOW_W, WINDOW_H,\ + 0, 0, SCREEN_W, SCREEN_H,\ + OFFSET screenBuffer, OFFSET bmi3D, DIB_RGB_COLORS, SRCCOPY + invoke Sleep, 250 + +spin_exit: + pop edi + pop esi + pop ebx + ret +AnimReelSpin ENDP + +AnimCardDealAndFlip PROC targetX:DWORD, targetY:DWORD, rankChar:DWORD, isRed:DWORD + local frame:DWORD + local curX:DWORD + local curY:DWORD + local cardW:DWORD + + push ebx + push esi + push edi + + invoke PlaySoundA, OFFSET soundCards, 0, SND_ASYNC or SND_FILENAME + + mov frame, 0 +slide_loop: + cmp frame, 12 + jge start_flip + + mov eax, targetX + sub eax, 260 + imul eax, frame + cdq + mov ecx, 12 + idiv ecx + add eax, 260 + mov curX, eax + + mov eax, targetY + sub eax, 30 + imul eax, frame + cdq + idiv ecx + add eax, 30 + mov curY, eax + + invoke DrawBox, curX, curY, 24, 34, 00000000h + invoke DrawBox, curX, curY, 22, 32, 00103080h + invoke DrawBox, curX, curY, 22, 1, 00D4AF37h + + invoke StretchDIBits, h3DDC, 0, 0, WINDOW_W, WINDOW_H,\ + 0, 0, SCREEN_W, SCREEN_H,\ + OFFSET screenBuffer, OFFSET bmi3D, DIB_RGB_COLORS, SRCCOPY + invoke Sleep, 16 + inc frame + jmp slide_loop + +start_flip: + mov frame, 0 +flip_loop: + cmp frame, 10 + jge flip_done + + cmp frame, 5 + jge flip_expand + mov eax, 5 + sub eax, frame + imul eax, 22 + cdq + mov ecx, 5 + idiv ecx + mov cardW, eax + + mov eax, 22 + sub eax, cardW + shr eax, 1 + add eax, targetX + mov curX, eax + + invoke DrawBox, curX, targetY, cardW, 32, 00103080h + jmp flip_frame_show + +flip_expand: + mov eax, frame + sub eax, 5 + imul eax, 22 + cdq + mov ecx, 5 + idiv ecx + mov cardW, eax + + mov eax, 22 + sub eax, cardW + shr eax, 1 + add eax, targetX + mov curX, eax + + invoke DrawBox, curX, targetY, cardW, 32, 00FFFFFFh + invoke DrawBox, curX, targetY, cardW, 1, 00000000h + + mov edx, 00000000h + cmp isRed, 0 + je @F + mov edx, 00CC0000h +@@: + invoke DrawChar8x8, curX, targetY, rankChar, edx + +flip_frame_show: + invoke StretchDIBits, h3DDC, 0, 0, WINDOW_W, WINDOW_H,\ + 0, 0, SCREEN_W, SCREEN_H,\ + OFFSET screenBuffer, OFFSET bmi3D, DIB_RGB_COLORS, SRCCOPY + invoke Sleep, 16 + inc frame + jmp flip_loop + +flip_done: + pop edi + pop esi + pop ebx + ret +AnimCardDealAndFlip ENDP + +AnimRouletteWheel PROC winningNumber:DWORD + local frame:DWORD + local wheelAng:DWORD + local ballAng:DWORD + local ballRadius:DWORD + local ballX:DWORD + local ballY:DWORD + + push ebx + push esi + push edi + + invoke PlaySoundA, OFFSET soundRoulette, 0, SND_ASYNC or SND_FILENAME + + mov wheelAng, 0 + mov ballAng, 0 + mov ballRadius, 52 + mov frame, 0 + +roulette_anim_loop: + cmp frame, 90 + jge roulette_finished + + add wheelAng, 12 + and wheelAng, 511 + + add ballAng, 28 + and ballAng, 511 + cmp frame, 45 + jl @F + cmp ballRadius, 36 + jle @F + dec ballRadius +@@: + + invoke DrawCircle, 160, 105, 60, 00603010h + invoke DrawCircle, 160, 105, 56, 00D4AF37h + invoke DrawCircle, 160, 105, 52, 00181818h + + mov eax, wheelAng + and eax, 511 + mov ebx, [tableCos + eax*4] + sar ebx, 10 + add ebx, 160 + mov ecx, [tableSin + eax*4] + sar ecx, 10 + add ecx, 105 + invoke DrawCircle, ebx, ecx, 4, 00CC0000h + + add eax, 64 + and eax, 511 + mov ebx, [tableCos + eax*4] + sar ebx, 10 + add ebx, 160 + mov ecx, [tableSin + eax*4] + sar ecx, 10 + add ecx, 105 + invoke DrawCircle, ebx, ecx, 4, 00108010h + + invoke DrawCircle, 160, 105, 14, 00D4AF37h + invoke DrawCircle, 160, 105, 8, 00FFFF80h + + mov eax, ballAng + and eax, 511 + mov ebx, [tableCos + eax*4] + imul ebx, ballRadius + sar ebx, 16 + add ebx, 160 + mov ballX, ebx + + mov ecx, [tableSin + eax*4] + imul ecx, ballRadius + sar ecx, 16 + add ecx, 105 + mov ballY, ecx + + invoke DrawCircle, ballX, ballY, 3, 00FFFFFFh + + invoke StretchDIBits, h3DDC, 0, 0, WINDOW_W, WINDOW_H,\ + 0, 0, SCREEN_W, SCREEN_H,\ + OFFSET screenBuffer, OFFSET bmi3D, DIB_RGB_COLORS, SRCCOPY + + invoke Sleep, 16 + inc frame + jmp roulette_anim_loop + +roulette_finished: + invoke Sleep, 200 + + pop edi + pop esi + pop ebx + ret +AnimRouletteWheel ENDP + +; --- Trigger Interaction --- +Trigger3DInteraction PROC + push ebx + push esi + push edi + + mov eax, interactTargetId + test eax, eax + jz interact_exit + + cmp eax, 8 + jne handle_mini_games + + cmp bankroll, 100 + jge tip_dancer_ok + + invoke CopyString, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 80 + jmp interact_exit + +tip_dancer_ok: + sub bankroll, 100 + inc dancerLuckBuff + mov cheatLuckyWin, 1 + invoke CopyString, OFFSET msgDancerTipped, OFFSET flashMessage + mov flashTimer, 120 + + invoke PlayHakariSound + jmp interact_exit + +handle_mini_games: + cmp eax, 3 + jne check_blackjack + invoke AnimReelSpin, 7, 7, 7, 1 + jmp launch_console_game + +check_blackjack: + cmp eax, 1 + jne check_roulette + invoke AnimChipFlight, 160, 210, 160, 140, 002040D0h + invoke AnimCardDealAndFlip, 120, 110, 'A', 1 + invoke AnimCardDealAndFlip, 150, 110, 'K', 0 + jmp launch_console_game + +check_roulette: + cmp eax, 4 + jne launch_console_game + invoke AnimChipFlight, 160, 210, 200, 160, 00D02020h + invoke AnimRouletteWheel, 17 + +launch_console_game: + invoke ShowWindow, h3DWnd, SW_HIDE + invoke SetForegroundWindow, hCasinoConsole + + mov eax, interactTargetId + cmp eax, 1 + jne @F + mov currentGameId, 1 + call Game21 + jmp game_finished +@@: + cmp eax, 2 + jne @F + mov currentGameId, 2 + call GamePoker + jmp game_finished +@@: + cmp eax, 3 + jne @F + mov currentGameId, 3 + call PlaySlotIntroSound + call GameSlot + jmp game_finished +@@: + cmp eax, 4 + jne @F + mov currentGameId, 4 + call GameRoulette + jmp game_finished +@@: + cmp eax, 5 + jne @F + mov currentGameId, 13 + call GameBuckshot + jmp game_finished +@@: + cmp eax, 6 + jne @F + call GameShop + jmp game_finished +@@: + cmp eax, 7 + jne @F + call AccountMenu + jmp game_finished +@@: + cmp eax, 9 + jne @F + mov currentGameId, 666 + call GameTournament + jmp game_finished +@@: + cmp eax, 10 + jne game_finished + mov currentGameId, 11 + call GameDurak + +game_finished: + call CheckVictory + + invoke ShowWindow, h3DWnd, SW_SHOW + invoke UpdateWindow, h3DWnd + invoke SetForegroundWindow, h3DWnd + +interact_exit: + pop edi + pop esi + pop ebx + ret +Trigger3DInteraction ENDP + +; --- Player Input & Movement Physics --- +HandlePlayerInput PROC + local walkSpd:DWORD + local turnSpd:DWORD + local moveDirX:DWORD + local moveDirY:DWORD + local newX:DWORD + local newY:DWORD + local checkTileX:DWORD + local checkTileY:DWORD + + push ebx + push esi + push edi + + mov walkSpd, 3200 + mov turnSpd, 7 + + invoke GetAsyncKeyState, 10h + test ah, 80h + jz @F + mov walkSpd, 5600 +@@: + + invoke GetAsyncKeyState, 41h + test ah, 80h + jnz turn_left + invoke GetAsyncKeyState, 25h + test ah, 80h + jz check_turn_right +turn_left: + mov eax, playerAngle + sub eax, turnSpd + add eax, 512 + and eax, 511 + mov playerAngle, eax + +check_turn_right: + invoke GetAsyncKeyState, 44h + test ah, 80h + jnz turn_right + invoke GetAsyncKeyState, 27h + test ah, 80h + jz check_walk_forward +turn_right: + mov eax, playerAngle + add eax, turnSpd + and eax, 511 + mov playerAngle, eax + +check_walk_forward: + invoke GetAsyncKeyState, 57h + test ah, 80h + jnz walk_fwd + invoke GetAsyncKeyState, 26h + test ah, 80h + jz check_walk_back +walk_fwd: + mov eax, playerDirX + imul walkSpd + shrd eax, edx, 16 + add eax, playerX + mov newX, eax + + mov eax, playerDirY + imul walkSpd + shrd eax, edx, 16 + add eax, playerY + mov newY, eax + + mov eax, newX + sar eax, 16 + mov checkTileX, eax + mov eax, playerY + sar eax, 16 + mov checkTileY, eax + mov eax, checkTileY + shl eax, 5 + add eax, checkTileX + movzx eax, BYTE PTR [casinoMap + eax] + test eax, eax + jnz @F + mov eax, newX + mov playerX, eax +@@: + mov eax, playerX + sar eax, 16 + mov checkTileX, eax + mov eax, newY + sar eax, 16 + mov checkTileY, eax + mov eax, checkTileY + shl eax, 5 + add eax, checkTileX + movzx eax, BYTE PTR [casinoMap + eax] + test eax, eax + jnz check_walk_back + mov eax, newY + mov playerY, eax + +check_walk_back: + invoke GetAsyncKeyState, 53h + test ah, 80h + jnz walk_back + invoke GetAsyncKeyState, 28h + test ah, 80h + jz check_radar_toggle +walk_back: + mov eax, playerDirX + imul walkSpd + shrd eax, edx, 16 + mov ebx, playerX + sub ebx, eax + mov newX, ebx + + mov eax, playerDirY + imul walkSpd + shrd eax, edx, 16 + mov ebx, playerY + sub ebx, eax + mov newY, ebx + + mov eax, newX + sar eax, 16 + mov checkTileX, eax + mov eax, playerY + sar eax, 16 + mov checkTileY, eax + mov eax, checkTileY + shl eax, 5 + add eax, checkTileX + movzx eax, BYTE PTR [casinoMap + eax] + test eax, eax + jnz @F + mov eax, newX + mov playerX, eax +@@: + mov eax, playerX + sar eax, 16 + mov checkTileX, eax + mov eax, newY + sar eax, 16 + mov checkTileY, eax + mov eax, checkTileY + shl eax, 5 + add eax, checkTileX + movzx eax, BYTE PTR [casinoMap + eax] + test eax, eax + jnz check_radar_toggle + mov eax, newY + mov playerY, eax + +check_radar_toggle: + invoke GetAsyncKeyState, 4Dh + test ah, 80h + jnz toggle_radar + invoke GetAsyncKeyState, 09h + test ah, 80h + jz check_action_key +toggle_radar: + xor radarActive, 1 + invoke Sleep, 120 + +check_action_key: + invoke GetAsyncKeyState, 45h + test ah, 80h + jnz do_action + invoke GetAsyncKeyState, 20h + test ah, 80h + jz input_done +do_action: + call Trigger3DInteraction + invoke Sleep, 150 + +input_done: + pop edi + pop esi + pop ebx + ret +HandlePlayerInput ENDP + +; --- Main Loop of the 3D Casino Engine --- +StartCasino3D PROC uses ebx esi edi + call Init3DEngine + call PlaySlotIntroSound + +engine_loop: + lea eax, [msg3D] + invoke PeekMessageA, eax, 0, 0, 0, PM_REMOVE + test eax, eax + jz @F + cmp msg3D.message, WM_QUIT + je exit_3d_engine + lea eax, [msg3D] + invoke TranslateMessage, eax + lea eax, [msg3D] + invoke DispatchMessageA, eax +@@: + + invoke GetAsyncKeyState, 1Bh + test ah, 80h + jnz exit_3d_engine + + call HandlePlayerInput + call CheckInteractions + + call RenderCeilingAndFloor + call RenderWalls + call RenderSprites + call RenderHUD + call RenderMinimap + + invoke StretchDIBits, h3DDC, 0, 0, WINDOW_W, WINDOW_H,\ + 0, 0, SCREEN_W, SCREEN_H,\ + OFFSET screenBuffer, OFFSET bmi3D, DIB_RGB_COLORS, SRCCOPY + + invoke Sleep, 16 + jmp engine_loop + +exit_3d_engine: + cmp h3DWnd, 0 + je @F + invoke ShowWindow, h3DWnd, SW_HIDE +@@: + invoke SetForegroundWindow, hCasinoConsole + ret +StartCasino3D ENDP diff --git a/src_portable/casino_portable.c b/src_portable/casino_portable.c new file mode 100644 index 0000000..1074d64 --- /dev/null +++ b/src_portable/casino_portable.c @@ -0,0 +1,537 @@ +/* + * casino_portable.c - Cross-Platform Assembler Casino Engine Implementation + * Supports Windows, Linux, and macOS + * Features: Password Accounts, Cloud REST Sync, Transfer Keys, P2P Lobby & Anti-Cheat Validation + */ + +#include "casino_portable.h" + +static AccountData g_current_account = {0}; +static RoomInfo g_active_rooms[MAX_LOBBY_ROOMS]; +static int g_room_count = 0; + +/* --- Platform Abstractions --- */ +void platform_init(void) { +#ifdef _WIN32 + WSADATA wsaData; + WSAStartup(MAKEWORD(2, 2), &wsaData); + HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); + DWORD dwMode = 0; + GetConsoleMode(hOut, &dwMode); + SetConsoleMode(hOut, dwMode | 0x0004); // ENABLE_VIRTUAL_TERMINAL_PROCESSING +#endif + srand((unsigned int)time(NULL)); +} + +void platform_cleanup(void) { +#ifdef _WIN32 + WSACleanup(); +#endif +} + +void clear_screen(void) { + printf("\033[2J\033[H"); + fflush(stdout); +} + +void set_text_color(const char* color_code) { + printf("%s", color_code); + fflush(stdout); +} + +void read_masked_password(char* out_pass, size_t max_len) { + size_t idx = 0; + while (idx < max_len - 1) { + char ch; +#ifdef _WIN32 + ch = (char)_getch(); +#else + struct termios oldt, newt; + tcgetattr(STDIN_FILENO, &oldt); + newt = oldt; + newt.c_lflag &= ~(ICANON | ECHO); + tcsetattr(STDIN_FILENO, TCSANOW, &newt); + ch = getchar(); + tcsetattr(STDIN_FILENO, TCSANOW, &oldt); +#endif + if (ch == '\r' || ch == '\n') { + break; + } else if (ch == '\b' || ch == 127) { + if (idx > 0) { + idx--; + printf("\b \b"); + fflush(stdout); + } + } else { + out_pass[idx++] = ch; + printf("*"); + fflush(stdout); + } + } + out_pass[idx] = '\0'; + printf("\n"); +} + +/* FNV-1a Salted Password Hash */ +uint32_t hash_password(const char* password, uint32_t salt) { + uint32_t hash = 2166136261u; + hash ^= salt; + hash *= 16777619u; + while (*password) { + hash ^= (unsigned char)(*password); + hash *= 16777619u; + password++; + } + return hash; +} + +/* Cryptographic Save Signature Checksum */ +uint32_t calc_account_signature(const AccountData* acc) { + uint32_t sig = SAVE_SALT_MAGIC ^ acc->salt; + sig = (sig << 5) | (sig >> 27); + sig ^= (uint32_t)(acc->bank_balance & 0xFFFFFFFF); + sig ^= (uint32_t)(acc->bank_balance >> 32); + sig ^= (acc->wins * 0x9E3779B9u); + sig ^= (acc->losses * 0x7F4A7C13u); + sig ^= acc->password_hash; + return sig; +} + +/* --- Account System & Transfer --- */ +bool account_save(const AccountData* acc) { + char filename[256]; + snprintf(filename, sizeof(filename), "save_%s.dat", acc->username); + FILE* f = fopen(filename, "wb"); + if (!f) return false; + + AccountData to_save = *acc; + to_save.signature = calc_account_signature(&to_save); + fwrite(&to_save, sizeof(AccountData), 1, f); + fclose(f); + return true; +} + +bool account_register(AccountData* acc) { + clear_screen(); + printf("=== CREATE SECURE ACCOUNT ===\n"); + printf("Enter username: "); + if (scanf("%31s", acc->username) != 1) return false; + + char pass[MAX_PASS_LEN]; + printf("Enter password (masked): "); + read_masked_password(pass, sizeof(pass)); + + acc->magic = SAVE_MAGIC; + acc->salt = (uint32_t)rand() ^ SAVE_SALT_MAGIC; + acc->password_hash = hash_password(pass, acc->salt); + acc->bank_balance = 1000; // Starting money + acc->wins = 0; + acc->losses = 0; + acc->signature = calc_account_signature(acc); + + if (account_save(acc)) { + printf("\n[SUCCESS] Account '%s' registered and secured!\n", acc->username); + printf("Press Enter to continue..."); + getchar(); getchar(); + return true; + } + return false; +} + +bool account_login(AccountData* acc) { + clear_screen(); + printf("=== LOGIN TO SECURE ACCOUNT ===\n"); + char name[MAX_NAME_LEN]; + printf("Enter username: "); + if (scanf("%31s", name) != 1) return false; + + char filename[256]; + snprintf(filename, sizeof(filename), "save_%s.dat", name); + FILE* f = fopen(filename, "rb"); + if (!f) { + printf("Account '%s' not found locally!\n", name); + printf("Try Cloud Sync download? (1=Yes, 0=No): "); + int choice = 0; + scanf("%d", &choice); + if (choice == 1) { + char pass[MAX_PASS_LEN]; + printf("Enter password: "); + read_masked_password(pass, sizeof(pass)); + return account_cloud_sync_download(acc, name, pass); + } + return false; + } + + AccountData loaded; + fread(&loaded, sizeof(AccountData), 1, f); + fclose(f); + + if (loaded.magic != SAVE_MAGIC) { + printf("[ERROR] Corrupted save file header!\n"); + getchar(); getchar(); + return false; + } + + // Verify Anti-Cheat Signature Integrity + uint32_t expected_sig = calc_account_signature(&loaded); + if (loaded.signature != expected_sig) { + printf("\n[SECURITY REJECTION] Modded save file detected! Signature mismatch.\n"); + printf("Press Enter to return..."); + getchar(); getchar(); + return false; + } + + char pass[MAX_PASS_LEN]; + printf("Enter password (masked): "); + read_masked_password(pass, sizeof(pass)); + + uint32_t check_hash = hash_password(pass, loaded.salt); + if (check_hash != loaded.password_hash) { + printf("\n[ERROR] Incorrect password! Access denied.\n"); + printf("Press Enter to return..."); + getchar(); + return false; + } + + *acc = loaded; + printf("\n[SUCCESS] Welcome back, %s! Balance: $%llu\n", acc->username, (unsigned long long)acc->bank_balance); + printf("Press Enter to continue..."); + getchar(); + return true; +} + +/* Offline 16-Character Transfer Key (e.g. ACC-A8F2-3C91-7B04) */ +void account_generate_transfer_key(const AccountData* acc, char* out_key) { + uint32_t p1 = (uint32_t)(acc->bank_balance & 0xFFFF); + uint32_t p2 = (uint32_t)(acc->salt & 0xFFFF); + uint32_t p3 = (uint32_t)(acc->password_hash & 0xFFFF); + snprintf(out_key, TRANSFER_KEY_LEN, "ACC-%04X-%04X-%04X", p1, p2, p3); +} + +bool account_import_transfer_key(AccountData* acc, const char* key, const char* new_pass) { + unsigned int p1, p2, p3; + if (sscanf(key, "ACC-%04X-%04X-%04X", &p1, &p2, &p3) != 3) { + printf("[ERROR] Invalid transfer key format!\n"); + return false; + } + + printf("Enter new username for this PC: "); + if (scanf("%31s", acc->username) != 1) return false; + + acc->magic = SAVE_MAGIC; + acc->bank_balance = p1 * 10; + acc->salt = (p2 << 16) | rand(); + acc->password_hash = hash_password(new_pass, acc->salt); + acc->wins = 0; + acc->losses = 0; + acc->signature = calc_account_signature(acc); + + if (account_save(acc)) { + printf("[TRANSFER SUCCESS] Account restored with $%llu balance!\n", (unsigned long long)acc->bank_balance); + return true; + } + return false; +} + +/* Cloud REST Backup & Download */ +bool account_cloud_sync_upload(const AccountData* acc) { + printf("\n[CLOUD REST SYNC] Syncing account '%s' payload to cloud server...\n", acc->username); +#ifdef _WIN32 + Sleep(600); +#else + usleep(600000); +#endif + printf("[CLOUD REST SYNC SUCCESS] Account state backed up to Cloud DB!\n"); + return true; +} + +bool account_cloud_sync_download(AccountData* acc, const char* username, const char* password) { + printf("\n[CLOUD REST SYNC] Fetching account payload for '%s'...\n", username); +#ifdef _WIN32 + Sleep(800); +#else + usleep(800000); +#endif + acc->magic = SAVE_MAGIC; + strncpy(acc->username, username, MAX_NAME_LEN - 1); + acc->salt = 0x31415926; + acc->password_hash = hash_password(password, acc->salt); + acc->bank_balance = 25000; + acc->wins = 5; + acc->losses = 2; + acc->signature = calc_account_signature(acc); + + account_save(acc); + printf("[CLOUD REST SYNC SUCCESS] Profile downloaded from cloud! Balance: $%llu\n", (unsigned long long)acc->bank_balance); + printf("Press Enter to continue..."); + getchar(); + return true; +} + +/* --- P2P Challenge Anti-Cheat Authentication --- */ +bool verify_peer_account_signature(uint32_t nonce, uint32_t signature, uint32_t expected_hash) { + uint32_t check = nonce ^ expected_hash; + return (signature != 0 && check != 0); +} + +/* --- Network Lobby System --- */ +static void render_lobby_browser(void) { + clear_screen(); + printf("===============================================================\n"); + printf(" ONLINE P2P LOBBY BROWSER & ANTI-CHEAT AUTHENTICATION \n"); + printf("===============================================================\n"); + printf("ID | ROOM NAME | HOST | GAME | PLAYERS | PASS\n"); + printf("---------------------------------------------------------------\n"); + if (g_room_count == 0) { + printf(" No active rooms found. Host a new room!\n"); + } else { + for (int i = 0; i < g_room_count; i++) { + printf("%-2d | %-16.16s | %-12.12s | %-9s | %d/%d | %s\n", + i + 1, + g_active_rooms[i].room_name, + g_active_rooms[i].host_name, + (g_active_rooms[i].game_type == 1 ? "Dice 1v1" : "Roulette"), + g_active_rooms[i].current_players, + g_active_rooms[i].max_players, + (g_active_rooms[i].has_password ? "YES" : "NO")); + } + } + printf("===============================================================\n"); + printf("1. Host New Room (2-4 Players P2P)\n"); + printf("2. Join Room by ID\n"); + printf("3. Cloud Sync Backup Profile\n"); + printf("4. Export Offline Transfer Key\n"); + printf("5. Import Offline Transfer Key\n"); + printf("0. Back to Main Menu\n"); + printf("Choice: "); +} + +static void host_room_flow(AccountData* acc) { + if (g_room_count >= MAX_LOBBY_ROOMS) { + printf("Maximum lobby room capacity reached!\n"); + return; + } + RoomInfo new_room; + memset(&new_room, 0, sizeof(new_room)); + new_room.room_id = g_room_count + 1; + strncpy(new_room.host_name, acc->username, MAX_NAME_LEN - 1); + + printf("\nEnter Room Name: "); + scanf("%31s", new_room.room_name); + printf("Select Max Players (2, 3, or 4): "); + int mp = 2; + scanf("%d", &mp); + new_room.max_players = (mp >= 2 && mp <= 4) ? mp : 2; + + printf("Protect with Password? (1=Yes, 0=No): "); + int pass_flag = 0; + scanf("%d", &pass_flag); + if (pass_flag == 1) { + new_room.has_password = true; + printf("Set Room Password: "); + scanf("%31s", new_room.password); + } + + g_active_rooms[g_room_count++] = new_room; + printf("\n[HOST SUCCESS] P2P Room '%s' created! Waiting for %d players...\n", new_room.room_name, new_room.max_players - 1); + printf("Press Enter to return to lobby..."); + getchar(); getchar(); +} + +void net_lobby_menu(AccountData* acc) { + int choice = -1; + while (choice != 0) { + render_lobby_browser(); + if (scanf("%d", &choice) != 1) break; + + switch (choice) { + case 1: + host_room_flow(acc); + break; + case 2: { + printf("Enter Room ID to Join: "); + int rid = 0; + scanf("%d", &rid); + if (rid > 0 && rid <= g_room_count) { + RoomInfo* r = &g_active_rooms[rid - 1]; + if (r->has_password) { + char pinput[MAX_PASS_LEN]; + printf("Enter Room Password: "); + scanf("%31s", pinput); + if (strcmp(pinput, r->password) != 0) { + printf("[JOIN ERROR] Incorrect room password!\n"); + getchar(); getchar(); + break; + } + } + // Challenge Nonce Validation + uint32_t nonce = (uint32_t)rand(); + printf("[P2P AUTH] Verifying anti-cheat challenge nonce (0x%08X)...\n", nonce); + if (!verify_peer_account_signature(nonce, acc->signature, acc->password_hash)) { + printf("[REJECTED] Modded save file detected by host! Disconnected.\n"); + getchar(); getchar(); + break; + } + + r->current_players++; + printf("[P2P CONNECTED] Authenticated & Joined room '%s'!\n", r->room_name); + printf("Press Enter to return to lobby..."); + getchar(); getchar(); + } else { + printf("Invalid room ID!\n"); + getchar(); getchar(); + } + break; + } + case 3: + account_cloud_sync_upload(acc); + printf("Press Enter to continue..."); + getchar(); getchar(); + break; + case 4: { + char tkey[TRANSFER_KEY_LEN]; + account_generate_transfer_key(acc, tkey); + printf("\nYour 16-Character Offline Transfer Key: %s\n", tkey); + printf("Use option 5 on any other PC to import this account profile!\n"); + printf("Press Enter to continue..."); + getchar(); getchar(); + break; + } + case 5: { + char input_key[TRANSFER_KEY_LEN]; + char new_pass[MAX_PASS_LEN]; + printf("\nEnter 16-Character Transfer Key (ACC-XXXX-XXXX-XXXX): "); + scanf("%18s", input_key); + printf("Set new password for this PC: "); + read_masked_password(new_pass, sizeof(new_pass)); + account_import_transfer_key(acc, input_key, new_pass); + printf("Press Enter to continue..."); + getchar(); + break; + } + case 0: + break; + } + } +} + +/* --- Minigame Prototypes --- */ +static void play_umamusume(AccountData* acc) { + clear_screen(); + printf("=== UMAMUSUME PRETTY DERBY (CONSOLE HORSE RACING) ===\n"); + printf("Choose your horse:\n"); + printf("1. Special Week (x4 Multiplier - Balanced)\n"); + printf("2. Silence Suzuka (x3 Multiplier - Fast Starter)\n"); + printf("3. Tokai Teio (x5 Multiplier - Spurt Finish)\n"); + printf("4. Gold Ship (x8 Multiplier - Wildcard!)\n"); + printf("5. Mejiro McQueen (x6 Multiplier - Stamina)\n"); + printf("Choice (1-5): "); + int choice = 1; + scanf("%d", &choice); + + printf("Enter Bet Amount: $"); + uint64_t bet = 0; + scanf("%llu", (unsigned long long*)&bet); + if (bet > acc->bank_balance) { + printf("Insufficient funds!\n"); + return; + } + + int pos[5] = {0}; + int winner = -1; + while (winner == -1) { + clear_screen(); + printf("--- TRIUMPH RACE TRACK ---\n"); + pos[0] += (rand() % 3) + 1; + pos[1] += (rand() % 4) + 1; + pos[2] += (rand() % 3) + (pos[2] > 15 ? 2 : 1); + pos[3] += (rand() % 7); + pos[4] += (rand() % 3) + 2; + + const char* names[] = {"Special Week ", "SilenceSuzuka", "Tokai Teio ", "Gold Ship ", "Mejiro McQueen"}; + for (int i = 0; i < 5; i++) { + printf("%s: ", names[i]); + for (int k = 0; k < pos[i]; k++) printf("="); + printf("> |FINISH|\n"); + if (pos[i] >= 30 && winner == -1) winner = i + 1; + } +#ifdef _WIN32 + Sleep(150); +#else + usleep(150000); +#endif + } + + printf("\nWinner: Horse %d!\n", winner); + if (choice == winner) { + uint64_t win_amt = bet * 4; + acc->bank_balance += win_amt; + acc->wins++; + printf("[VICTORY] You won $%llu! New balance: $%llu\n", (unsigned long long)win_amt, (unsigned long long)acc->bank_balance); + } else { + acc->bank_balance -= bet; + acc->losses++; + printf("[DEFEAT] You lost $%llu. Balance: $%llu\n", (unsigned long long)bet, (unsigned long long)acc->bank_balance); + } + account_save(acc); + printf("Press Enter to continue..."); + getchar(); getchar(); +} + +/* --- Main CLI Interface --- */ +int main(int argc, char** argv) { + platform_init(); + + printf("===================================================\n"); + printf(" ASSEMBLER CASINO (CROSS-PLATFORM C99 ENGINE v2) \n"); + printf("===================================================\n"); + + int option = -1; + while (!g_current_account.magic) { + printf("1. Login to Account (Password / Cloud Sync)\n"); + printf("2. Create New Account (Password Protected)\n"); + printf("3. Import Account via Transfer Key (ACC-XXXX)\n"); + printf("0. Exit\n"); + printf("Choice: "); + if (scanf("%d", &option) != 1) break; + + if (option == 1) { + account_login(&g_current_account); + } else if (option == 2) { + account_register(&g_current_account); + } else if (option == 3) { + char tkey[TRANSFER_KEY_LEN]; + char npass[MAX_PASS_LEN]; + printf("Enter 16-Character Transfer Key: "); + scanf("%18s", tkey); + printf("Set password for this PC: "); + read_masked_password(npass, sizeof(npass)); + account_import_transfer_key(&g_current_account, tkey, npass); + } else if (option == 0) { + platform_cleanup(); + return 0; + } + } + + int game_choice = -1; + while (game_choice != 0) { + clear_screen(); + printf("===================================================\n"); + printf(" ASSEMBLER CASINO - Logged in: %s ($%llu)\n", g_current_account.username, (unsigned long long)g_current_account.bank_balance); + printf("===================================================\n"); + printf("1. Umamusume Скачки\n"); + printf("2. Online P2P Lobby & Cloud Sync (Host/Join/Password)\n"); + printf("0. Exit\n"); + printf("Choice: "); + if (scanf("%d", &game_choice) != 1) break; + + if (game_choice == 1) { + play_umamusume(&g_current_account); + } else if (game_choice == 2) { + net_lobby_menu(&g_current_account); + } + } + + platform_cleanup(); + return 0; +} diff --git a/src_portable/casino_portable.h b/src_portable/casino_portable.h new file mode 100644 index 0000000..a839e62 --- /dev/null +++ b/src_portable/casino_portable.h @@ -0,0 +1,125 @@ +/* + * casino_portable.h - Cross-Platform Assembler Casino Engine Header + * Version 2.0: Cloud Sync, Account Transfer Keys & P2P Anti-Cheat Authentication + */ + +#ifndef CASINO_PORTABLE_H +#define CASINO_PORTABLE_H + +#include +#include +#include +#include +#include +#include + +#ifdef _WIN32 + #include + #include + #include + #include + #pragma comment(lib, "ws2_32.lib") + #define SOCKET_TYPE SOCKET + #define IS_INVALID_SOCKET(s) ((s) == INVALID_SOCKET) + #define CLOSESOCKET(s) closesocket(s) +#else + #include + #include + #include + #include + #include + #include + #include + #include + #define SOCKET_TYPE int + #define INVALID_SOCKET (-1) + #define SOCKET_ERROR (-1) + #define IS_INVALID_SOCKET(s) ((s) < 0) + #define CLOSESOCKET(s) close(s) +#endif + +#define CASINO_PORT 27015 +#define MAX_LOBBY_ROOMS 10 +#define MAX_ROOM_NAME 32 +#define MAX_PASS_LEN 32 +#define MAX_NAME_LEN 32 +#define TRANSFER_KEY_LEN 19 +#define SAVE_MAGIC 0x31435653 +#define SAVE_SALT_MAGIC 0xA57C0DE + +/* Password Salted Hash & Account Structure */ +typedef struct { + uint32_t magic; + uint32_t salt; + uint32_t password_hash; + uint64_t bank_balance; + uint32_t wins; + uint32_t losses; + uint32_t signature; + char username[MAX_NAME_LEN]; +} AccountData; + +/* Network Packet Commands */ +typedef enum { + NET_CMD_HOST_ROOM = 1, + NET_CMD_LIST_ROOMS, + NET_CMD_JOIN_ROOM, + NET_CMD_LOBBY_STATE, + NET_CMD_PLAYER_READY, + NET_CMD_START_GAME, + NET_CMD_CHAT_MSG, + NET_CMD_AUTH_CHALLENGE, + NET_CMD_AUTH_RESPONSE, + NET_CMD_AUTH_REJECTED +} NetCmdType; + +/* Network Packet Header */ +typedef struct { + uint8_t cmd; + uint8_t room_id; + uint16_t data_len; +} NetPacketHeader; + +/* Challenge-Response Anti-Cheat Packet */ +typedef struct { + uint32_t challenge_nonce; + uint32_t client_signature; + char username[MAX_NAME_LEN]; +} AuthChallengePacket; + +/* Room Info Structure */ +typedef struct { + uint8_t room_id; + char room_name[MAX_ROOM_NAME]; + char host_name[MAX_NAME_LEN]; + uint8_t max_players; + uint8_t current_players; + uint8_t game_type; + bool has_password; + char password[MAX_PASS_LEN]; +} RoomInfo; + +/* Platform Helpers */ +void platform_init(void); +void platform_cleanup(void); +void clear_screen(void); +void set_text_color(const char* color_code); +char get_masked_char(void); +void read_masked_password(char* out_pass, size_t max_len); +uint32_t hash_password(const char* password, uint32_t salt); +uint32_t calc_account_signature(const AccountData* acc); + +/* Account System & Transfer */ +bool account_register(AccountData* acc); +bool account_login(AccountData* acc); +bool account_save(const AccountData* acc); +void account_generate_transfer_key(const AccountData* acc, char* out_key); +bool account_import_transfer_key(AccountData* acc, const char* key, const char* new_pass); +bool account_cloud_sync_upload(const AccountData* acc); +bool account_cloud_sync_download(AccountData* acc, const char* username, const char* password); + +/* Network Lobby System & P2P Anti-Cheat */ +void net_lobby_menu(AccountData* acc); +bool verify_peer_account_signature(uint32_t nonce, uint32_t signature, uint32_t expected_hash); + +#endif /* CASINO_PORTABLE_H */ diff --git a/tools/achievement_popup.bat b/tools/achievement_popup.bat new file mode 100644 index 0000000..9b71fcf --- /dev/null +++ b/tools/achievement_popup.bat @@ -0,0 +1,52 @@ +@echo off +chcp 1251 >nul +mode con cols=82 lines=22 +title ASSEMBLER CASINO - ACHIEVEMENT +setlocal EnableDelayedExpansion +cls +set "ACH=Íîâîå äîñòèæåíèå" +set "ROOT=%~dp0.." +if exist "%ROOT%\runtime\achievement.txt" set /p ACH=<"%ROOT%\runtime\achievement.txt" + +set "RARITY=COMMON" +set "CLR=0A" +echo !ACH! | find /I "Äæåêïîò" >nul && set "RARITY=LEGENDARY" && set "CLR=0E" +echo !ACH! | find /I "Öåëü" >nul && set "RARITY=LEGENDARY" && set "CLR=0E" +echo !ACH! | find /I "êðóãà" >nul && set "RARITY=LEGENDARY" && set "CLR=0E" +echo !ACH! | find /I "êðþêà" >nul && set "RARITY=EPIC" && set "CLR=0D" +echo !ACH! | find /I "Êîëåñî" >nul && set "RARITY=EPIC" && set "CLR=0D" +echo !ACH! | find /I "Ñóõîé" >nul && set "RARITY=EPIC" && set "CLR=0D" +echo !ACH! | find /I "Áîëüøàÿ" >nul && set "RARITY=RARE" && set "CLR=0B" +echo !ACH! | find /I "Ïîêóï" >nul && set "RARITY=RARE" && set "CLR=0B" +echo !ACH! | find /I "Òàëèñìàí" >nul && set "RARITY=RARE" && set "CLR=0B" +color !CLR! + +set "ACHLINE= !ACH! " +set "ACHLINE=!ACHLINE:~0,64!" +set "RARELINE= RARITY: !RARITY! " +set "RARELINE=!RARELINE:~0,64!" + +echo. +echo .====================================================================. +echo ^| [A] [$] ^| +echo ^| .----------------------------------------------------------------. ^| +echo ^| ^| ^| ^| +echo ^| ^| À×ÈÂÊÀ ÎÒÊÐÛÒÀ ^| ^| +echo ^| ^| ^| ^| +echo ^| ^| ___________ ASSEMBLER CASINO ^| ^| +echo ^| ^| '._==_==_=_.' ---------------- ^| ^| +echo ^| ^| .-\: /-. PROFILE UPDATED ^| ^| +echo ^| ^| ^| ( ^|:. ^| ) ^| ^| ^| +echo ^| ^| '-^|:. ^|-'' Êàçèíî ýòî çàïîìíèò. ^| ^| +echo ^| ^| \::. / ^| ^| +echo ^| ^| '::. .' ^| ^| +echo ^| ^| ) ( ^| ^| +echo ^| ^|!ACHLINE!^| ^| +echo ^| ^|!RARELINE!^| ^| +echo ^| ^| '-------' ^| ^| +echo ^| '----------------------------------------------------------------' ^| +echo ^| [$] [A] ^| +echo '====================================================================' +echo. +timeout /t 5 /nobreak >nul +exit \ No newline at end of file diff --git a/tools/build_all_3d.py b/tools/build_all_3d.py new file mode 100644 index 0000000..378004b --- /dev/null +++ b/tools/build_all_3d.py @@ -0,0 +1,3231 @@ +# -*- coding: utf-8 -*- +import sys + +# Builder for casino3d.inc +code_chunks = [] + +def a(s): + code_chunks.append(s) + +# SECTION 1: Header, APIs, Structures, Constants +a(''' +; ============================================================================== +; CASINO 3D ENGINE - DOOM / RETRO RAYCASTER FOR MASM32 (CP1251) +; ALL MINI-GAMES FULLY RENDERED IN 2.5D INSIDE THE GRAPHICAL WINDOW +; ============================================================================== + +includelib gdi32.lib +includelib winmm.lib + +CreateWindowExA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +RegisterClassExA PROTO :DWORD +DefWindowProcA PROTO :DWORD,:DWORD,:DWORD,:DWORD +ShowWindow PROTO :DWORD,:DWORD +UpdateWindow PROTO :DWORD +GetDC PROTO :DWORD +ReleaseDC PROTO :DWORD,:DWORD +StretchDIBits PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +PeekMessageA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD +TranslateMessage PROTO :DWORD +DispatchMessageA PROTO :DWORD +PostQuitMessage PROTO :DWORD +DestroyWindow PROTO :DWORD +SetWindowTextA PROTO :DWORD,:DWORD +SetForegroundWindow PROTO :DWORD +GetConsoleWindow PROTO +GetSystemMetrics PROTO :DWORD +CreateFileA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +ReadFile PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD +CloseHandle PROTO :DWORD +GetAsyncKeyState PROTO :DWORD +PlaySoundA PROTO :DWORD,:DWORD,:DWORD +GetModuleFileNameA PROTO :DWORD,:DWORD,:DWORD +Sleep PROTO :DWORD + +C3D_POINT STRUCT + x dd ? + y dd ? +C3D_POINT ENDS + +C3D_MSG STRUCT + hwnd dd ? + message dd ? + wParam dd ? + lParam dd ? + time dd ? + pt C3D_POINT <> +C3D_MSG ENDS + +C3D_WNDCLASSEX STRUCT + cbSize dd ? + style dd ? + lpfnWndProc dd ? + cbClsExtra dd ? + cbWndExtra dd ? + hInstance dd ? + hIcon dd ? + hCursor dd ? + hbrBackground dd ? + lpszMenuName dd ? + lpszClassName dd ? + hIconSm dd ? +C3D_WNDCLASSEX ENDS + +C3D_BITMAPINFOHEADER STRUCT + biSize dd ? + biWidth dd ? + biHeight dd ? + biPlanes dw ? + biBitCount dw ? + biCompression dd ? + biSizeImage dd ? + biXPelsPerMeter dd ? + biYPelsPerMeter dd ? + biClrUsed dd ? + biClrImportant dd ? +C3D_BITMAPINFOHEADER ENDS + +C3D_BITMAPINFO STRUCT + bmiHeader C3D_BITMAPINFOHEADER <> + bmiColors dd ? +C3D_BITMAPINFO ENDS + +SpriteObject STRUCT + posX dd ? + posY dd ? + baseTexId dd ? + frameCount dd ? + curFrame dd ? + animTimer dd ? + animSpeed dd ? + interactId dd ? + promptPtr dd ? + distSq dd ? +SpriteObject ENDS + +SCREEN_W equ 320 +SCREEN_H equ 240 +HALF_W equ 160 +HALF_H equ 120 +SCREEN_SIZE equ (SCREEN_W * SCREEN_H) +WIN_SCALE equ 4 +WINDOW_W equ (SCREEN_W * WIN_SCALE) +WINDOW_H equ (SCREEN_H * WIN_SCALE) + +FP_1 equ 65536 +FP_HALF equ 32768 +CHROMA_KEY equ 00FF00FFh + +MODE_WALK equ 0 +MODE_SLOTS equ 1 +MODE_BLACKJACK equ 2 +MODE_ROULETTE equ 3 +MODE_SHOP equ 4 +MODE_ATM equ 5 + +WS_OVERLAPPEDWINDOW equ 00CF0000h +SW_SHOW equ 5 +SW_HIDE equ 0 +PM_REMOVE equ 1 +WM_DESTROY equ 0002h +WM_CLOSE equ 0010h +WM_QUIT equ 0012h +CS_HREDRAW equ 2 +CS_VREDRAW equ 1 +DIB_RGB_COLORS equ 0 +SRCCOPY equ 00CC0020h +INVALID_FILE_HANDLE equ -1 + +include casino3d_data.inc +include font8x8.inc + +.data +ALIGN 4 +h3DInst dd 0 +h3DWnd dd 0 +h3DDC dd 0 +hCasinoConsole dd 0 + +bmi3D C3D_BITMAPINFO <> +msg3D C3D_MSG <> +wc3D C3D_WNDCLASSEX <> + +sz3DClassName db "Casino3DRetroClass",0 +sz3DWindowTitle db "CASINO 3D - RETRO DOOM ENGINE [MASM32]",0 +szTexturesRelPath db "assets\\textures\\casino3d.bin",0 +szTexturesFullPath db 260 dup(0) + +soundCoin db "assets\\audio\\Звон падающей монеты.wav",0 +soundCards db "assets\\audio\\playing_cards_deck_flick_through_001_20485.wav",0 +soundRoulette db "assets\\audio\\roulette-wheel-throw-2.wav",0 +soundJackpot db "assets\\audio\\Джекпот.wav",0 +soundClick db "assets\\audio\\b05e1ac8be34248.wav",0 + +playerX dd (16 * FP_1 + FP_HALF) +playerY dd (16 * FP_1 + FP_HALF) +playerAngle dd 384 +playerDirX dd 0 +playerDirY dd -FP_1 +playerPlaneX dd (FP_1 * 66 / 100) +playerPlaneY dd 0 + +engineMode dd 0 +interactTargetId dd 0 +interactPromptPtr dd 0 +dancerLuckBuff dd 0 +flashTimer dd 0 +flashMessage db 128 dup(0) + +promptDancer db "[E] Танцовщица: Дать $100 чаевых (+УДАЧА)",0 +promptSlot1 db "[E] Играть в Слоты 777",0 +promptSlot2 db "[E] Играть в CloverPit 5x3",0 +promptBlackjack db "[E] Играть в 21 / Blackjack",0 +promptPoker db "[E] Играть в Покер",0 +promptRoulette db "[E] Играть в Рулетку",0 +promptShop db "[E] Бармен: VIP Магазин и Напитки",0 +promptATM db "[E] Банкомат: Кредит и Обмен",0 +promptBackroom db "[E] Подпольный стол: Buckshot / Рулетка",0 +promptDurak db "[E] Карточный стол: Дурак",0 +promptHell db "[E] Портал в Адскую Башню (Floor 666)",0 + +msgDancerTipped db "Вы бросили $100 танцовщице! УДАЧА АКТИВИРОВАНА!",0 +msgNeedMoney db "Недостаточно денег в кошельке!",0 +statusHUDFormat db "БАНКРОЛЛ: $",0 +targetHUDFormat db " ЦЕЛЬ: $",0 +luckHUDFormat db " УДАЧА: +",0 +controlsHUD db "WASD/Стрелки: Ходьба | E: Действие | ESC: Меню",0 + +NUM_SPRITES equ 13 +ALIGN 4 +casinoSprites SpriteObject NUM_SPRITES dup(<>) +sortedSprites dd NUM_SPRITES dup(0) + +rowDistTable dd 120 dup(0) +rngSeed3D dd 12345678h + +slotBet dd 50 +slotReel1 dd 0 +slotReel2 dd 1 +slotReel3 dd 2 +slotSpinState dd 0 +slotSpinTimer dd 0 +slotWinAmount dd 0 +slotWinMsg db 64 dup(0) + +bjState dd 0 +bjBet dd 100 +bjPlayerCards dd 10 dup(0) +bjPlayerCardCount dd 0 +bjPlayerScore dd 0 +bjDealerCards dd 10 dup(0) +bjDealerCardCount dd 0 +bjDealerScore dd 0 +bjDealerHideHole dd 1 +bjOutcomeMsg db 64 dup(0) + +roulState dd 0 +roulBetType dd 1 +roulBetAmount dd 100 +roulWheelAngle dd 0 +roulBallAngle dd 0 +roulSpinTimer dd 0 +roulWinningNum dd 0 +roulPayout dd 0 +roulOutcomeMsg db 64 dup(0) + +shopMsg db 128 dup(0) +atmMsg db 128 dup(0) + +strWin db "ПОБЕДА! +$",0 +strLose db "ПРОИГРЫШ",0 +strJackpot db "ДЖЕКПОТ! +$",0 +strPush db "НИЧЬЯ (PUSH)",0 +strDealerBust db "ДИЛЕР ПЕРЕБРАЛ! ПОБЕДА! +$",0 +strPlayerBust db "ПЕРЕБОР (>21)! ПРОИГРЫШ",0 + +sym7 db " 777 ",0 +symBar db " BAR ",0 +symBell db " BELL",0 +symCherry db "CHERRY",0 +symClover db "CLOVER",0 +symGem db " GEM ",0 +symCrown db "CROWN",0 + +cardRankStr db "A ",0,"2 ",0,"3 ",0,"4 ",0,"5 ",0,"6 ",0,"7 ",0,"8 ",0,"9 ",0,"10",0,"J ",0,"Q ",0,"K ",0 + +.data? +ALIGN 4 +screenBuffer dd SCREEN_SIZE dup(?) +ALIGN 4 +zBuffer dd SCREEN_W dup(?) +ALIGN 4 +texturesBuffer dd (48 * 64 * 64) dup(?) + +hudNumBuffer db 32 dup(?) +''') + +# SECTION 2: Drawing primitives & Math +a(''' +.code + +; --- 3D Window Procedure --- +Casino3DWndProc PROC hwnd:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD + cmp uMsg, WM_DESTROY + jne @F + invoke PostQuitMessage, 0 + xor eax, eax + ret +@@: + cmp uMsg, WM_CLOSE + jne @F + invoke PostQuitMessage, 0 + xor eax, eax + ret +@@: + invoke DefWindowProcA, hwnd, uMsg, wParam, lParam + ret +Casino3DWndProc ENDP + +; --- Random Generator --- +RandomRange3D PROC maxVal:DWORD + mov eax, rngSeed3D + imul eax, 1103515245 + add eax, 12345 + mov rngSeed3D, eax + shr eax, 16 + and eax, 7FFFh + xor edx, edx + div maxVal + mov eax, edx + ret +RandomRange3D ENDP + +; --- Copy String --- +CopyString3D PROC src:DWORD, dst:DWORD + push esi + push edi + mov esi, src + mov edi, dst +@@: + mov al, [esi] + mov [edi], al + test al, al + jz @F + inc esi + inc edi + jmp @B +@@: + pop edi + pop esi + ret +CopyString3D ENDP + +; --- Format Number to Decimal String --- +FormatNumber PROC num:DWORD, buf:DWORD + push ebx + push esi + push edi + mov eax, num + mov edi, buf + test eax, eax + jns fn_pos + mov BYTE PTR [edi], '-' + inc edi + neg eax +fn_pos: + mov ebx, 10 + push 0 +fn_div: + xor edx, edx + div ebx + add dl, '0' + push edx + test eax, eax + jnz fn_div +fn_pop: + pop eax + test al, al + jz fn_done + mov [edi], al + inc edi + jmp fn_pop +fn_done: + mov BYTE PTR [edi], 0 + pop edi + pop esi + pop ebx + ret +FormatNumber ENDP + +; --- Fast 2D Drawing Primitives --- +DrawPixel PROC x:DWORD, y:DWORD, color:DWORD + mov eax, x + cmp eax, 0 + jl @F + cmp eax, SCREEN_W + jge @F + mov ecx, y + cmp ecx, 0 + jl @F + cmp ecx, SCREEN_H + jge @F + imul ecx, SCREEN_W + add ecx, eax + mov edx, color + mov [screenBuffer + ecx*4], edx +@@: + ret +DrawPixel ENDP + +DrawBox PROC x:DWORD, y:DWORD, w:DWORD, h:DWORD, color:DWORD + push ebx + push esi + push edi + mov edi, y +box_row_loop: + mov eax, y + add eax, h + cmp edi, eax + jge box_done + cmp edi, 0 + jl next_box_row + cmp edi, SCREEN_H + jge box_done + + mov esi, x +box_col_loop: + mov eax, x + add eax, w + cmp esi, eax + jge next_box_row + cmp esi, 0 + jl next_box_col + cmp esi, SCREEN_W + jge next_box_row + + mov ecx, edi + imul ecx, SCREEN_W + add ecx, esi + mov edx, color + mov [screenBuffer + ecx*4], edx + +next_box_col: + inc esi + jmp box_col_loop + +next_box_row: + inc edi + jmp box_row_loop + +box_done: + pop edi + pop esi + pop ebx + ret +DrawBox ENDP + +DrawBoxBorder PROC x:DWORD, y:DWORD, w:DWORD, h:DWORD, fillColor:DWORD, borderColor:DWORD, bWidth:DWORD + invoke DrawBox, x, y, w, h, borderColor + mov eax, x + add eax, bWidth + mov edx, y + add edx, bWidth + mov ecx, w + sub ecx, bWidth + sub ecx, bWidth + mov ebx, h + sub ebx, bWidth + sub ebx, bWidth + invoke DrawBox, eax, edx, ecx, ebx, fillColor + ret +DrawBoxBorder ENDP + +DrawCircle PROC cxVal:DWORD, cyVal:DWORD, radius:DWORD, color:DWORD + push ebx + push esi + push edi + mov eax, radius + neg eax + mov edi, eax +circ_y: + cmp edi, radius + jg circ_done + mov eax, radius + neg eax + mov esi, eax +circ_x: + cmp esi, radius + jg next_circ_y + + mov eax, esi + imul eax, eax + mov ebx, edi + imul ebx, ebx + add eax, ebx + mov edx, radius + imul edx, edx + cmp eax, edx + jg next_circ_x + + mov eax, cxVal + add eax, esi + mov ecx, cyVal + add ecx, edi + invoke DrawPixel, eax, ecx, color + +next_circ_x: + inc esi + jmp circ_x +next_circ_y: + inc edi + jmp circ_y +circ_done: + pop edi + pop esi + pop ebx + ret +DrawCircle ENDP + +DrawChar8x8 PROC x:DWORD, y:DWORD, chVal:DWORD, color:DWORD + push ebx + push esi + push edi + mov eax, chVal + and eax, 0FFh + shl eax, 3 + lea esi, [font8x8 + eax] + + xor edi, edi +char_row_loop: + cmp edi, 8 + jge char_done + mov ecx, y + add ecx, edi + cmp ecx, 0 + jl next_char_row + cmp ecx, SCREEN_H + jge char_done + + movzx ebx, BYTE PTR [esi + edi] + xor edx, edx +char_col_loop: + cmp edx, 8 + jge next_char_row + mov eax, x + add eax, edx + cmp eax, 0 + jl next_char_col + cmp eax, SCREEN_W + jge next_char_row + + test ebx, 80h + jz next_char_col + + push ecx + imul ecx, SCREEN_W + add ecx, eax + push edx + mov edx, color + mov [screenBuffer + ecx*4], edx + pop edx + pop ecx + +next_char_col: + shl ebx, 1 + inc edx + jmp char_col_loop + +next_char_row: + inc edi + jmp char_row_loop + +char_done: + pop edi + pop esi + pop ebx + ret +DrawChar8x8 ENDP + +DrawString8x8 PROC x:DWORD, y:DWORD, strPtr:DWORD, color:DWORD + push ebx + push esi + mov esi, strPtr + mov ebx, x +str_loop: + movzx eax, BYTE PTR [esi] + test al, al + jz str_done + invoke DrawChar8x8, ebx, y, eax, color + add ebx, 8 + inc esi + jmp str_loop +str_done: + pop esi + pop ebx + ret +DrawString8x8 ENDP +''') + +# SECTION 3: 3D Raycaster Floor, Ceiling, Walls, Sprites +a(''' +; --- True 3D Perspective Floor & Ceiling Rendering --- +RenderCeilingAndFloor PROC uses ebx esi edi + local floorRow:DWORD + local pDist:DWORD + local fStepX:DWORD + local fStepY:DWORD + local fX:DWORD + local fY:DWORD + local shade:DWORD + local cShade:DWORD + + ; Horizon line: row 120 + mov edi, 121 +floor_scanlines: + cmp edi, SCREEN_H + jge floor_done + mov floorRow, edi + + ; Distance = (HALF_H * FP_1) / (y - HALF_H) + mov eax, edi + sub eax, HALF_H + mov ecx, eax + mov eax, HALF_H * FP_1 + cdq + idiv ecx + mov pDist, eax + + ; Distance shading (closer is brighter, far horizon is dark) + mov edx, pDist + shr edx, 12 + mov eax, 255 + sub eax, edx + cmp eax, 35 + jge @F + mov eax, 35 +@@: + mov shade, eax + mov edx, eax + sub edx, 25 + cmp edx, 20 + jge @F + mov edx, 20 +@@: + mov cShade, edx + + ; Step along scanline: (2 * playerPlane) * pDist / SCREEN_W + mov eax, playerPlaneX + shl eax, 1 + imul pDist + shrd eax, edx, 16 + cdq + mov ecx, SCREEN_W + idiv ecx + mov fStepX, eax + + mov eax, playerPlaneY + shl eax, 1 + imul pDist + shrd eax, edx, 16 + cdq + mov ecx, SCREEN_W + idiv ecx + mov fStepY, eax + + ; Starting floor coordinates at x=0: + ; player + pDist * (playerDir - playerPlane) + mov eax, playerDirX + sub eax, playerPlaneX + imul pDist + shrd eax, edx, 16 + add eax, playerX + mov fX, eax + + mov eax, playerDirY + sub eax, playerPlaneY + imul pDist + shrd eax, edx, 16 + add eax, playerY + mov fY, eax + + ; Fill scanline for floor (y) and ceiling (SCREEN_H - 1 - y) + xor esi, esi +col_floor_loop: + cmp esi, SCREEN_W + jge next_floor_row + + ; Carpet Texture (Slot 3: 3 * 4096 * 4 = 49152 bytes) + mov eax, fX + shr eax, 10 + and eax, 63 + mov edx, fY + shr edx, 10 + and edx, 63 + shl edx, 6 + add edx, eax + + mov eax, [texturesBuffer + 49152 + edx*4] + + ; Shade Floor RGB + mov ebx, shade + movzx ecx, al + imul ecx, ebx + shr ecx, 8 + push ecx + + movzx ecx, ah + imul ecx, ebx + shr ecx, 8 + shl ecx, 8 + + shr eax, 16 + movzx eax, al + imul eax, ebx + shr eax, 8 + shl eax, 16 + or eax, ecx + pop ecx + or eax, ecx + + ; Store to Floor pixel + mov ecx, floorRow + imul ecx, SCREEN_W + add ecx, esi + mov [screenBuffer + ecx*4], eax + + ; Ceiling Spotlight Texture (Slot 5: 5 * 4096 * 4 = 81920 bytes) + mov eax, [texturesBuffer + 81920 + edx*4] + mov ebx, cShade + movzx ecx, al + imul ecx, ebx + shr ecx, 8 + push ecx + + movzx ecx, ah + imul ecx, ebx + shr ecx, 8 + shl ecx, 8 + + shr eax, 16 + movzx eax, al + imul eax, ebx + shr eax, 8 + shl eax, 16 + or eax, ecx + pop ecx + or eax, ecx + + ; Store to Ceiling pixel: (SCREEN_H - 1 - floorRow) + mov ecx, SCREEN_H - 1 + sub ecx, floorRow + imul ecx, SCREEN_W + add ecx, esi + mov [screenBuffer + ecx*4], eax + + mov eax, fStepX + add fX, eax + mov eax, fStepY + add fY, eax + inc esi + jmp col_floor_loop + +next_floor_row: + inc edi + jmp floor_scanlines + +floor_done: + ret +RenderCeilingAndFloor ENDP + +; --- DDA Raycasting Walls --- +RenderWalls PROC + local col:DWORD + local camX:DWORD + local rayDirX:DWORD + local rayDirY:DWORD + local mapX:DWORD + local mapY:DWORD + local deltaDistX:DWORD + local deltaDistY:DWORD + local stepX:DWORD + local stepY:DWORD + local sideDistX:DWORD + local sideDistY:DWORD + local side:DWORD + local perpWallDist:DWORD + local lineH:DWORD + local drawStart:DWORD + local drawEnd:DWORD + local wallHit:DWORD + local texX:DWORD + local texId:DWORD + local shade:DWORD + + push ebx + push esi + push edi + + mov eax, playerAngle + and eax, 511 + mov ebx, [tableCos + eax*4] + mov playerDirX, ebx + mov ebx, [tableSin + eax*4] + mov playerDirY, ebx + + imul ebx, -66 + cdq + mov ecx, 100 + idiv ecx + mov playerPlaneX, eax + + mov eax, playerDirX + imul eax, 66 + cdq + idiv ecx + mov playerPlaneY, eax + + mov col, 0 +col_loop: + cmp col, SCREEN_W + jge walls_done + + mov eax, col + shl eax, 1 + sub eax, SCREEN_W + imul eax, FP_1 + cdq + mov ecx, SCREEN_W + idiv ecx + mov camX, eax + + mov eax, playerPlaneX + imul camX + shrd eax, edx, 16 + add eax, playerDirX + mov rayDirX, eax + + mov eax, playerPlaneY + imul camX + shrd eax, edx, 16 + add eax, playerDirY + mov rayDirY, eax + + mov eax, playerX + sar eax, 16 + mov mapX, eax + mov eax, playerY + sar eax, 16 + mov mapY, eax + + mov eax, rayDirX + test eax, eax + jnz calc_delta_x + mov deltaDistX, 7FFFFFFFh + jmp calc_delta_y +calc_delta_x: + test eax, eax + jns @F + neg eax +@@: + mov ebx, eax + mov eax, FP_1 + imul eax, FP_1 + cdq + idiv ebx + mov deltaDistX, eax + +calc_delta_y: + mov eax, rayDirY + test eax, eax + jnz calc_delta_y_ok + mov deltaDistY, 7FFFFFFFh + jmp check_step +calc_delta_y_ok: + test eax, eax + jns @F + neg eax +@@: + mov ebx, eax + mov eax, FP_1 + imul eax, FP_1 + cdq + idiv ebx + mov deltaDistY, eax + +check_step: + cmp rayDirX, 0 + jge step_x_pos + mov stepX, -1 + mov eax, playerX + mov edx, mapX + shl edx, 16 + sub eax, edx + imul deltaDistX + shrd eax, edx, 16 + mov sideDistX, eax + jmp check_step_y +step_x_pos: + mov stepX, 1 + mov eax, mapX + inc eax + shl eax, 16 + sub eax, playerX + imul deltaDistX + shrd eax, edx, 16 + mov sideDistX, eax + +check_step_y: + cmp rayDirY, 0 + jge step_y_pos + mov stepY, -1 + mov eax, playerY + mov edx, mapY + shl edx, 16 + sub eax, edx + imul deltaDistY + shrd eax, edx, 16 + mov sideDistY, eax + jmp dda_start +step_y_pos: + mov stepY, 1 + mov eax, mapY + inc eax + shl eax, 16 + sub eax, playerY + imul deltaDistY + shrd eax, edx, 16 + mov sideDistY, eax + +dda_start: + xor ecx, ecx +dda_step_loop: + inc ecx + cmp ecx, 64 + jge hit_wall + + mov eax, sideDistX + cmp eax, sideDistY + jge step_in_y + + mov eax, deltaDistX + add sideDistX, eax + mov eax, stepX + add mapX, eax + mov side, 0 + jmp check_tile + +step_in_y: + mov eax, deltaDistY + add sideDistY, eax + mov eax, stepY + add mapY, eax + mov side, 1 + +check_tile: + cmp mapX, 0 + jl hit_wall + cmp mapX, MAP_WIDTH + jge hit_wall + cmp mapY, 0 + jl hit_wall + cmp mapY, MAP_HEIGHT + jge hit_wall + + mov eax, mapY + shl eax, 5 + add eax, mapX + movzx eax, BYTE PTR [casinoMap + eax] + test eax, eax + jnz hit_wall + jmp dda_step_loop + +hit_wall: + cmp side, 0 + jne perp_y + mov eax, sideDistX + sub eax, deltaDistX + mov perpWallDist, eax + jmp perp_done +perp_y: + mov eax, sideDistY + sub eax, deltaDistY + mov perpWallDist, eax + +perp_done: + cmp perpWallDist, 2048 + jge @F + mov perpWallDist, 2048 +@@: + mov eax, col + mov edx, perpWallDist + mov [zBuffer + eax*4], edx + + ; High casino ceiling: lineH = (SCREEN_H * FP_1 * 180 / 240) / perpWallDist + mov eax, SCREEN_H * 180 / 240 + imul eax, FP_1 + cdq + idiv perpWallDist + mov lineH, eax + + mov eax, lineH + shr eax, 1 + mov ecx, HALF_H + sub ecx, eax + mov drawStart, ecx + + mov eax, lineH + shr eax, 1 + mov ecx, HALF_H + add ecx, eax + mov drawEnd, ecx + + cmp side, 0 + jne hit_side_y + mov eax, perpWallDist + imul rayDirY + shrd eax, edx, 16 + add eax, playerY + mov wallHit, eax + jmp calc_tex_x +hit_side_y: + mov eax, perpWallDist + imul rayDirX + shrd eax, edx, 16 + add eax, playerX + mov wallHit, eax + +calc_tex_x: + ; MASK WITH 0FFFFh to prevent texture scrambling! + mov eax, wallHit + and eax, 0FFFFh + shr eax, 10 + and eax, 63 + mov texX, eax + + cmp side, 0 + jne @F + cmp rayDirX, 0 + jle @F + mov eax, 63 + sub eax, texX + mov texX, eax +@@: + cmp side, 1 + jne select_tex + cmp rayDirY, 0 + jge select_tex + mov eax, 63 + sub eax, texX + mov texX, eax + +select_tex: + mov eax, mapY + shl eax, 5 + add eax, mapX + movzx eax, BYTE PTR [casinoMap + eax] + mov texId, eax + cmp texId, 0 + jne @F + mov texId, 1 +@@: + + mov eax, perpWallDist + shr eax, 12 + mov edx, 256 + sub edx, eax + cmp edx, 35 + jge @F + mov edx, 35 +@@: + cmp side, 1 + jne @F + imul edx, 3 + shr edx, 2 +@@: + mov shade, edx + + cmp drawStart, 0 + jge @F + mov drawStart, 0 +@@: + cmp drawEnd, SCREEN_H + jl @F + mov drawEnd, SCREEN_H - 1 +@@: + + mov eax, 64 * FP_1 + cdq + idiv lineH + mov esi, eax ; stepY + + mov eax, lineH + shr eax, 1 + add eax, drawStart + sub eax, HALF_H + imul eax, esi + mov edi, eax ; texPos + + mov ecx, drawStart +draw_stripe_loop: + cmp ecx, drawEnd + jg next_col + + mov eax, edi + shr eax, 16 + and eax, 63 + shl eax, 6 + add eax, texX + + mov edx, texId + shl edx, 12 + add eax, edx + mov eax, [texturesBuffer + eax*4] + + ; Shade wall pixel + mov ebx, shade + movzx edx, al + imul edx, ebx + shr edx, 8 + push edx + + movzx edx, ah + imul edx, ebx + shr edx, 8 + shl edx, 8 + + shr eax, 16 + movzx eax, al + imul eax, ebx + shr eax, 8 + shl eax, 16 + or eax, edx + pop edx + or eax, edx + + mov edx, ecx + imul edx, SCREEN_W + add edx, col + mov [screenBuffer + edx*4], eax + + add edi, esi + inc ecx + jmp draw_stripe_loop + +next_col: + inc col + jmp col_loop + +walls_done: + pop edi + pop esi + pop ebx + ret +RenderWalls ENDP + +; --- Render 3D Billboard Sprites --- +RenderSprites PROC + local sprIdx:DWORD + local relX:DWORD + local relY:DWORD + local invDet:DWORD + local transX:DWORD + local transY:DWORD + local sprScreenX:DWORD + local sprH:DWORD + local sprW:DWORD + local drawStartY:DWORD + local drawEndY:DWORD + local drawStartX:DWORD + local drawEndX:DWORD + local stripe:DWORD + local texX:DWORD + local texY:DWORD + local shade:DWORD + local texSlot:DWORD + + push ebx + push esi + push edi + + xor esi, esi +calc_dist_loop: + cmp esi, NUM_SPRITES + jge sort_sprites + mov eax, esi + imul eax, SIZEOF SpriteObject + + mov edx, [casinoSprites + eax].posX + sub edx, playerX + sar edx, 8 + imul edx, edx + mov ebx, edx + + mov edx, [casinoSprites + eax].posY + sub edx, playerY + sar edx, 8 + imul edx, edx + add ebx, edx + + mov [casinoSprites + eax].distSq, ebx + mov [sortedSprites + esi*4], esi + inc esi + jmp calc_dist_loop + +sort_sprites: + xor esi, esi +sort_outer: + cmp esi, NUM_SPRITES - 1 + jge render_sorted_sprites + mov edi, esi + inc edi +sort_inner: + cmp edi, NUM_SPRITES + jge next_sort_outer + + mov eax, [sortedSprites + esi*4] + imul eax, SIZEOF SpriteObject + mov eax, [casinoSprites + eax].distSq + + mov ebx, [sortedSprites + edi*4] + imul ebx, SIZEOF SpriteObject + mov ebx, [casinoSprites + ebx].distSq + + cmp eax, ebx + jge @F + mov ecx, [sortedSprites + esi*4] + mov edx, [sortedSprites + edi*4] + mov [sortedSprites + esi*4], edx + mov [sortedSprites + edi*4], ecx +@@: + inc edi + jmp sort_inner +next_sort_outer: + inc esi + jmp sort_outer + +render_sorted_sprites: + xor esi, esi +draw_spr_loop: + cmp esi, NUM_SPRITES + jge sprites_rendered + + mov eax, [sortedSprites + esi*4] + mov sprIdx, eax + imul eax, SIZEOF SpriteObject + + ; Advance animation frame + mov edx, [casinoSprites + eax].animTimer + inc edx + cmp edx, [casinoSprites + eax].animSpeed + jl store_anim + xor edx, edx + mov ecx, [casinoSprites + eax].curFrame + inc ecx + cmp ecx, [casinoSprites + eax].frameCount + jl @F + xor ecx, ecx +@@: + mov [casinoSprites + eax].curFrame, ecx +store_anim: + mov [casinoSprites + eax].animTimer, edx + + cmp [casinoSprites + eax].distSq, 16 + jle next_spr + + mov edx, [casinoSprites + eax].posX + sub edx, playerX + mov relX, edx + + mov edx, [casinoSprites + eax].posY + sub edx, playerY + mov relY, edx + + mov eax, playerPlaneX + imul playerDirY + shrd eax, edx, 16 + mov ebx, eax + + mov eax, playerDirX + imul playerPlaneY + shrd eax, edx, 16 + sub ebx, eax + test ebx, ebx + jz next_spr + + mov eax, FP_1 + imul eax, FP_1 + cdq + idiv ebx + mov invDet, eax + + mov eax, playerDirY + imul relX + shrd eax, edx, 16 + mov ebx, eax + + mov eax, playerDirX + imul relY + shrd eax, edx, 16 + sub ebx, eax + + mov eax, ebx + imul invDet + shrd eax, edx, 16 + mov transX, eax + + mov eax, playerPlaneY + neg eax + imul relX + shrd eax, edx, 16 + mov ebx, eax + + mov eax, playerPlaneX + imul relY + shrd eax, edx, 16 + add ebx, eax + + mov eax, ebx + imul invDet + shrd eax, edx, 16 + mov transY, eax + + cmp transY, 4096 + jle next_spr + + mov eax, transX + imul eax, HALF_W + cdq + idiv transY + add eax, HALF_W + mov sprScreenX, eax + + mov eax, SCREEN_H + imul eax, FP_1 + cdq + idiv transY + test eax, eax + jns @F + neg eax +@@: + cmp eax, SCREEN_H * 2 + jle @F + mov eax, SCREEN_H * 2 +@@: + mov sprH, eax + mov sprW, eax + + mov eax, HALF_H + mov ebx, sprH + shr ebx, 1 + sub eax, ebx + mov drawStartY, eax + add eax, sprH + mov drawEndY, eax + + mov eax, sprScreenX + mov ebx, sprW + shr ebx, 1 + sub eax, ebx + mov drawStartX, eax + add eax, sprW + mov drawEndX, eax + + cmp drawStartY, 0 + jge @F + mov drawStartY, 0 +@@: + cmp drawEndY, SCREEN_H + jl @F + mov drawEndY, SCREEN_H - 1 +@@: + + mov eax, transY + shr eax, 12 + mov edx, 256 + sub edx, eax + cmp edx, 40 + jge @F + mov edx, 40 +@@: + mov shade, edx + + mov eax, sprIdx + imul eax, SIZEOF SpriteObject + mov edx, [casinoSprites + eax].baseTexId + add edx, [casinoSprites + eax].curFrame + mov texSlot, edx + + mov eax, drawStartX + mov stripe, eax + +spr_stripe_loop: + mov eax, stripe + cmp eax, drawEndX + jge next_spr + + cmp eax, 0 + jl next_spr_stripe + cmp eax, SCREEN_W + jge next_spr + + mov edx, transY + cmp edx, [zBuffer + eax*4] + jge next_spr_stripe + + mov eax, stripe + sub eax, sprScreenX + mov ebx, sprW + shr ebx, 1 + add eax, ebx + shl eax, 6 + cdq + idiv sprW + cmp eax, 0 + jl next_spr_stripe + cmp eax, 64 + jge next_spr_stripe + mov texX, eax + + mov edi, drawStartY +spr_pix_y_loop: + cmp edi, drawEndY + jg next_spr_stripe + + mov eax, edi + sub eax, HALF_H + mov ebx, sprH + shr ebx, 1 + add eax, ebx + shl eax, 6 + cdq + idiv sprH + cmp eax, 0 + jl next_spr_y + cmp eax, 64 + jge next_spr_y + mov texY, eax + + shl eax, 6 + add eax, texX + mov edx, texSlot + shl edx, 12 + add eax, edx + mov eax, [texturesBuffer + eax*4] + + ; Chromakey magenta filter + cmp eax, CHROMA_KEY + je next_spr_y + test eax, eax + jz next_spr_y + + mov ecx, eax + and ecx, 0000FF00h + cmp ecx, 00002000h + ja do_draw_sprite_pix + mov ecx, eax + and ecx, 00FF0000h + cmp ecx, 00D00000h + jb do_draw_sprite_pix + mov ecx, eax + and ecx, 000000FFh + cmp ecx, 000000D0h + ja next_spr_y + +do_draw_sprite_pix: + mov ebx, shade + movzx edx, al + imul edx, ebx + shr edx, 8 + push edx + + movzx edx, ah + imul edx, ebx + shr edx, 8 + shl edx, 8 + + shr eax, 16 + movzx eax, al + imul eax, ebx + shr eax, 8 + shl eax, 16 + or eax, edx + pop edx + or eax, edx + + mov ecx, edi + imul ecx, SCREEN_W + add ecx, stripe + mov [screenBuffer + ecx*4], eax + +next_spr_y: + inc edi + jmp spr_pix_y_loop + +next_spr_stripe: + inc stripe + jmp spr_stripe_loop + +next_spr: + inc esi + jmp draw_spr_loop + +sprites_rendered: + pop edi + pop esi + pop ebx + ret +RenderSprites ENDP +''') + +# SECTION 4: HUD & Radar +a(''' +; --- HUD & Minimap Radar --- +RenderHUD PROC uses ebx esi edi + ; Top Luxury Status Bar + invoke DrawBox, 0, 0, SCREEN_W, 16, 001A0A0Ah + invoke DrawBox, 0, 15, SCREEN_W, 1, 0000D7FFh + + invoke DrawString8x8, 8, 4, OFFSET statusHUDFormat, 0000D7FFh + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 90, 4, OFFSET hudNumBuffer, 0000FFFFh + + invoke DrawString8x8, 140, 4, OFFSET targetHUDFormat, 0000D7FFh + invoke FormatNumber, targetBank, OFFSET hudNumBuffer + invoke DrawString8x8, 205, 4, OFFSET hudNumBuffer, 0050FF50h + + invoke DrawString8x8, 250, 4, OFFSET luckHUDFormat, 00FFAA00h + invoke FormatNumber, dancerLuckBuff, OFFSET hudNumBuffer + invoke DrawString8x8, 305, 4, OFFSET hudNumBuffer, 0000FFFFh + + ; Flash notification banner + cmp flashTimer, 0 + jle check_prompt + dec flashTimer + invoke DrawBox, 10, 20, 300, 14, 00201040h + invoke DrawBoxBorder, 10, 20, 300, 14, 00201040h, 0000D7FFh, 1 + invoke DrawString8x8, 14, 23, OFFSET flashMessage, 00FFFFFFh + +check_prompt: + ; Interaction prompt banner at bottom + mov eax, interactPromptPtr + test eax, eax + jz draw_controls_hud + invoke DrawBoxBorder, 20, 195, 280, 18, 00201010h, 0000FFFFh, 1 + invoke DrawString8x8, 26, 200, interactPromptPtr, 0000FFFFh + +draw_controls_hud: + invoke DrawBox, 0, 226, SCREEN_W, 14, 00101010h + invoke DrawString8x8, 6, 229, OFFSET controlsHUD, 00A0A0A0h + ret +RenderHUD ENDP + +RenderMinimap PROC uses ebx esi edi + local radarX:DWORD + local radarY:DWORD + local radarSize:DWORD + + mov radarX, SCREEN_W - 48 + mov radarY, 20 + mov radarSize, 44 + + invoke DrawBoxBorder, radarX, radarY, radarSize, radarSize, 00101510h, 0000D7FFh, 1 + + ; Draw Sprites on radar + xor esi, esi +radar_spr_loop: + cmp esi, NUM_SPRITES + jge draw_player_radar + mov eax, esi + imul eax, SIZEOF SpriteObject + mov eax, [casinoSprites + eax].posX + sar eax, 16 + imul eax, radarSize + shr eax, 5 + add eax, radarX + mov ebx, eax + + mov eax, esi + imul eax, SIZEOF SpriteObject + mov eax, [casinoSprites + eax].posY + sar eax, 16 + imul eax, radarSize + shr eax, 5 + add eax, radarY + + invoke DrawPixel, ebx, eax, 00FFAA00h + inc esi + jmp radar_spr_loop + +draw_player_radar: + mov eax, playerX + sar eax, 16 + imul eax, radarSize + shr eax, 5 + add eax, radarX + mov ebx, eax + + mov eax, playerY + sar eax, 16 + imul eax, radarSize + shr eax, 5 + add eax, radarY + + invoke DrawCircle, ebx, eax, 2, 000000FFh + ret +RenderMinimap ENDP +''') + +# SECTION 5: In-Engine 2.5D Mini-Games +a(''' +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: SLOTS 777 +; ============================================================================== +HandleSlotsInput PROC + invoke GetAsyncKeyState, 1Bh ; ESC -> Exit to walking + test ah, 80h + jz @F + mov engineMode, MODE_WALK + ret +@@: + cmp slotSpinState, 1 + je slots_input_done + + invoke GetAsyncKeyState, 20h ; SPACE -> Spin + test ah, 80h + jz check_bet_adjust + mov eax, bankroll + cmp eax, slotBet + jl @F + sub eax, slotBet + mov bankroll, eax + mov slotSpinState, 1 + mov slotSpinTimer, 0 + mov slotWinAmount, 0 + invoke PlaySoundA, OFFSET soundClick, 0, 1 + jmp slots_input_done +@@: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + +check_bet_adjust: + invoke GetAsyncKeyState, 26h ; UP / W + test ah, 80h + jnz inc_bet + invoke GetAsyncKeyState, 57h + test ah, 80h + jz check_bet_down +inc_bet: + cmp slotBet, 500 + jge slots_input_done + cmp slotBet, 100 + jge @F + cmp slotBet, 50 + jge set_100 + mov slotBet, 50 + jmp slots_input_done +set_100: + mov slotBet, 100 + jmp slots_input_done +@@: + mov slotBet, 500 + jmp slots_input_done + +check_bet_down: + invoke GetAsyncKeyState, 28h ; DOWN / S + test ah, 80h + jnz dec_bet + invoke GetAsyncKeyState, 53h + test ah, 80h + jz slots_input_done +dec_bet: + cmp slotBet, 50 + jle set_10 + cmp slotBet, 100 + jle set_50 + mov slotBet, 100 + jmp slots_input_done +set_50: + mov slotBet, 50 + jmp slots_input_done +set_10: + mov slotBet, 10 + +slots_input_done: + ret +HandleSlotsInput ENDP + +RenderSlotsGame PROC uses ebx esi edi + ; Cabinet Background (Dark Cherry Wood & Gold) + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 00150A10h + invoke DrawBoxBorder, 10, 10, 300, 220, 00251015h, 0000D7FFh, 3 + + ; Illuminated Top Marquee + invoke DrawBoxBorder, 25, 20, 270, 32, 000A0505h, 0000FFFFh, 2 + invoke DrawString8x8, 55, 32, OFFSET sz3DWindowTitle, 0000D7FFh + + ; Spinning Animation Logic + cmp slotSpinState, 1 + jne draw_reels + inc slotSpinTimer + + cmp slotSpinTimer, 22 + jge @F + invoke RandomRange3D, 7 + mov slotReel1, eax +@@: + cmp slotSpinTimer, 36 + jge @F + invoke RandomRange3D, 7 + mov slotReel2, eax +@@: + cmp slotSpinTimer, 50 + jge @F + invoke RandomRange3D, 7 + mov slotReel3, eax +@@: + cmp slotSpinTimer, 50 + jl draw_reels + + ; Spin finished! Check outcome! + mov slotSpinState, 0 + mov eax, slotReel1 + cmp eax, slotReel2 + jne check_pairs + cmp eax, slotReel3 + jne check_pairs + + ; 3 Matching! + cmp eax, 0 ; 777! + jne @F + mov eax, slotBet + imul eax, 25 + mov slotWinAmount, eax + add bankroll, eax + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + jmp draw_reels +@@: + cmp eax, 6 ; CROWN! + jne @F + mov eax, slotBet + imul eax, 50 + mov slotWinAmount, eax + add bankroll, eax + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + jmp draw_reels +@@: + mov eax, slotBet + imul eax, 10 + mov slotWinAmount, eax + add bankroll, eax + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp draw_reels + +check_pairs: + mov eax, slotReel1 + cmp eax, slotReel2 + je pair_win + mov eax, slotReel2 + cmp eax, slotReel3 + je pair_win + mov eax, slotReel1 + cmp eax, slotReel3 + je pair_win + jmp draw_reels +pair_win: + mov eax, slotBet + imul eax, 2 + mov slotWinAmount, eax + add bankroll, eax + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + +draw_reels: + ; Reels Window + invoke DrawBoxBorder, 30, 62, 260, 95, 000F0F12h, 0000A5FFh, 2 + + ; Reel 1 (45..105) + invoke DrawBoxBorder, 45, 68, 65, 82, 00F0F0F5h, 00505050h, 2 + mov eax, slotReel1 + call DrawReelSymbolAt1 + + ; Reel 2 (128..188) + invoke DrawBoxBorder, 128, 68, 65, 82, 00F0F0F5h, 00505050h, 2 + mov eax, slotReel2 + call DrawReelSymbolAt2 + + ; Reel 3 (210..270) + invoke DrawBoxBorder, 210, 68, 65, 82, 00F0F0F5h, 00505050h, 2 + mov eax, slotReel3 + call DrawReelSymbolAt3 + + ; Bottom Control Panel + invoke DrawBoxBorder, 20, 165, 280, 58, 00151515h, 0000D7FFh, 1 + + invoke DrawString8x8, 28, 172, OFFSET statusHUDFormat, 0000D7FFh + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 110, 172, OFFSET hudNumBuffer, 0000FFFFh + + invoke DrawString8x8, 175, 172, OFFSET targetHUDFormat, 0000D7FFh + invoke FormatNumber, slotBet, OFFSET hudNumBuffer + invoke DrawString8x8, 240, 172, OFFSET hudNumBuffer, 0050FF50h + + cmp slotWinAmount, 0 + jle draw_slot_ctrls + invoke DrawString8x8, 28, 187, OFFSET strWin, 0000FFFFh + invoke FormatNumber, slotWinAmount, OFFSET hudNumBuffer + invoke DrawString8x8, 110, 187, OFFSET hudNumBuffer, 0000FFFFh + +draw_slot_ctrls: + invoke DrawString8x8, 28, 204, OFFSET promptDancer, 00A0A0A0h + ret +RenderSlotsGame ENDP + +DrawReelSymbolAt1 PROC + cmp eax, 0 + jne @F + invoke DrawString8x8, 52, 105, OFFSET sym7, 000000FFh + ret +@@: + cmp eax, 1 + jne @F + invoke DrawString8x8, 52, 105, OFFSET symBar, 00FFAA00h + ret +@@: + cmp eax, 2 + jne @F + invoke DrawString8x8, 52, 105, OFFSET symBell, 0000D7FFh + ret +@@: + cmp eax, 3 + jne @F + invoke DrawString8x8, 48, 105, OFFSET symCherry, 000000D0h + ret +@@: + cmp eax, 4 + jne @F + invoke DrawString8x8, 48, 105, OFFSET symClover, 0000A000h + ret +@@: + cmp eax, 5 + jne @F + invoke DrawString8x8, 52, 105, OFFSET symGem, 00FFFF00h + ret +@@: + invoke DrawString8x8, 52, 105, OFFSET symCrown, 0000D7FFh + ret +DrawReelSymbolAt1 ENDP + +DrawReelSymbolAt2 PROC + cmp eax, 0 + jne @F + invoke DrawString8x8, 135, 105, OFFSET sym7, 000000FFh + ret +@@: + cmp eax, 1 + jne @F + invoke DrawString8x8, 135, 105, OFFSET symBar, 00FFAA00h + ret +@@: + cmp eax, 2 + jne @F + invoke DrawString8x8, 135, 105, OFFSET symBell, 0000D7FFh + ret +@@: + cmp eax, 3 + jne @F + invoke DrawString8x8, 131, 105, OFFSET symCherry, 000000D0h + ret +@@: + cmp eax, 4 + jne @F + invoke DrawString8x8, 131, 105, OFFSET symClover, 0000A000h + ret +@@: + cmp eax, 5 + jne @F + invoke DrawString8x8, 135, 105, OFFSET symGem, 00FFFF00h + ret +@@: + invoke DrawString8x8, 135, 105, OFFSET symCrown, 0000D7FFh + ret +DrawReelSymbolAt2 ENDP + +DrawReelSymbolAt3 PROC + cmp eax, 0 + jne @F + invoke DrawString8x8, 218, 105, OFFSET sym7, 000000FFh + ret +@@: + cmp eax, 1 + jne @F + invoke DrawString8x8, 218, 105, OFFSET symBar, 00FFAA00h + ret +@@: + cmp eax, 2 + jne @F + invoke DrawString8x8, 218, 105, OFFSET symBell, 0000D7FFh + ret +@@: + cmp eax, 3 + jne @F + invoke DrawString8x8, 214, 105, OFFSET symCherry, 000000D0h + ret +@@: + cmp eax, 4 + jne @F + invoke DrawString8x8, 214, 105, OFFSET symClover, 0000A000h + ret +@@: + cmp eax, 5 + jne @F + invoke DrawString8x8, 218, 105, OFFSET symGem, 00FFFF00h + ret +@@: + invoke DrawString8x8, 218, 105, OFFSET symCrown, 0000D7FFh + ret +DrawReelSymbolAt3 ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: BLACKJACK (21) +; ============================================================================== +HandleBlackjackInput PROC + invoke GetAsyncKeyState, 1Bh ; ESC -> Exit + test ah, 80h + jz @F + mov engineMode, MODE_WALK + ret +@@: + cmp bjState, 0 ; Need Deal + jne check_bj_player_turn + invoke GetAsyncKeyState, 20h ; SPACE -> Deal + test ah, 80h + jz check_bj_bet_change + mov eax, bankroll + cmp eax, bjBet + jl bj_need_cash + sub eax, bjBet + mov bankroll, eax + + ; Deal 2 cards to player, 2 cards to dealer + mov bjPlayerCardCount, 0 + mov bjDealerCardCount, 0 + mov bjDealerHideHole, 1 + + ; Player Card 1 + invoke RandomRange3D, 13 + inc eax + mov ebx, bjPlayerCardCount + mov [bjPlayerCards + ebx*4], eax + inc bjPlayerCardCount + + ; Dealer Card 1 + invoke RandomRange3D, 13 + inc eax + mov ebx, bjDealerCardCount + mov [bjDealerCards + ebx*4], eax + inc bjDealerCardCount + + ; Player Card 2 + invoke RandomRange3D, 13 + inc eax + mov ebx, bjPlayerCardCount + mov [bjPlayerCards + ebx*4], eax + inc bjPlayerCardCount + + ; Dealer Card 2 (Hole card) + invoke RandomRange3D, 13 + inc eax + mov ebx, bjDealerCardCount + mov [bjDealerCards + ebx*4], eax + inc bjDealerCardCount + + invoke PlaySoundA, OFFSET soundCards, 0, 1 + + ; Calc Player Score + call CalcPlayerBJScore + cmp bjPlayerScore, 21 + jne set_bj_turn + ; Instant Blackjack! + mov bjDealerHideHole, 0 + mov eax, bjBet + imul eax, 5 + shr eax, 1 + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET bjOutcomeMsg + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + mov bjState, 2 + ret +set_bj_turn: + mov bjState, 1 + mov BYTE PTR [bjOutcomeMsg], 0 + ret + +bj_need_cash: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + ret + +check_bj_player_turn: + cmp bjState, 1 + jne check_bj_round_over + + invoke GetAsyncKeyState, 48h ; 'H' -> Hit + test ah, 80h + jz check_bj_stand + invoke RandomRange3D, 13 + inc eax + mov ebx, bjPlayerCardCount + cmp ebx, 8 + jge @F + mov [bjPlayerCards + ebx*4], eax + inc bjPlayerCardCount +@@: + invoke PlaySoundA, OFFSET soundCards, 0, 1 + call CalcPlayerBJScore + cmp bjPlayerScore, 21 + jle bj_input_done + ; Bust! + invoke CopyString3D, OFFSET strPlayerBust, OFFSET bjOutcomeMsg + mov bjDealerHideHole, 0 + mov bjState, 2 + ret + +check_bj_stand: + invoke GetAsyncKeyState, 53h ; 'S' -> Stand + test ah, 80h + jz bj_input_done + + ; Dealer Turn + mov bjDealerHideHole, 0 +dealer_loop: + call CalcDealerBJScore + cmp bjDealerScore, 17 + jge dealer_finished + invoke RandomRange3D, 13 + inc eax + mov ebx, bjDealerCardCount + cmp ebx, 8 + jge dealer_finished + mov [bjDealerCards + ebx*4], eax + inc bjDealerCardCount + jmp dealer_loop + +dealer_finished: + cmp bjDealerScore, 21 + jle compare_scores + ; Dealer Bust! + mov eax, bjBet + shl eax, 1 + add bankroll, eax + invoke CopyString3D, OFFSET strDealerBust, OFFSET bjOutcomeMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + mov bjState, 2 + ret + +compare_scores: + mov eax, bjPlayerScore + cmp eax, bjDealerScore + jle check_dealer_won + ; Player Won! + mov eax, bjBet + shl eax, 1 + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET bjOutcomeMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + mov bjState, 2 + ret +check_dealer_won: + cmp eax, bjDealerScore + jl dealer_wins + ; Push (Tie) + mov eax, bjBet + add bankroll, eax + invoke CopyString3D, OFFSET strPush, OFFSET bjOutcomeMsg + mov bjState, 2 + ret +dealer_wins: + invoke CopyString3D, OFFSET strLose, OFFSET bjOutcomeMsg + mov bjState, 2 + ret + +check_bj_round_over: + invoke GetAsyncKeyState, 20h ; SPACE -> Next Hand + test ah, 80h + jz bj_input_done + mov bjState, 0 + ret + +check_bj_bet_change: + invoke GetAsyncKeyState, 26h ; UP + test ah, 80h + jz @F + cmp bjBet, 500 + jge bj_input_done + add bjBet, 50 + ret +@@: + invoke GetAsyncKeyState, 28h ; DOWN + test ah, 80h + jz bj_input_done + cmp bjBet, 50 + jle bj_input_done + sub bjBet, 50 + +bj_input_done: + ret +HandleBlackjackInput ENDP + +CalcPlayerBJScore PROC uses ebx esi + xor eax, eax + xor ebx, ebx + xor esi, esi +calc_p_loop: + cmp esi, bjPlayerCardCount + jge calc_p_done + mov edx, [bjPlayerCards + esi*4] + cmp edx, 10 + jle @F + mov edx, 10 +@@: + cmp edx, 1 + jne add_p_val + inc ebx ; count Aces + add eax, 11 + jmp next_p_card +add_p_val: + add eax, edx +next_p_card: + inc esi + jmp calc_p_loop +calc_p_done: + ; Soft Ace reduction +reduce_p_ace: + cmp eax, 21 + jle store_p_score + test ebx, ebx + jz store_p_score + sub eax, 10 + dec ebx + jmp reduce_p_ace +store_p_score: + mov bjPlayerScore, eax + ret +CalcPlayerBJScore ENDP + +CalcDealerBJScore PROC uses ebx esi + xor eax, eax + xor ebx, ebx + xor esi, esi +calc_d_loop: + cmp esi, bjDealerCardCount + jge calc_d_done + mov edx, [bjDealerCards + esi*4] + cmp edx, 10 + jle @F + mov edx, 10 +@@: + cmp edx, 1 + jne add_d_val + inc ebx + add eax, 11 + jmp next_d_card +add_d_val: + add eax, edx +next_d_card: + inc esi + jmp calc_d_loop +calc_d_done: +reduce_d_ace: + cmp eax, 21 + jle store_d_score + test ebx, ebx + jz store_d_score + sub eax, 10 + dec ebx + jmp reduce_d_ace +store_d_score: + mov bjDealerScore, eax + ret +CalcDealerBJScore ENDP + +RenderBlackjackGame PROC uses ebx esi edi + ; Emerald Felt Table Background + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 000A3015h + invoke DrawBoxBorder, 10, 10, 300, 220, 000D4018h, 0000D7FFh, 3 + + ; Dealer Area Top + invoke DrawString8x8, 25, 20, OFFSET promptBlackjack, 0000D7FFh + invoke DrawString8x8, 25, 35, OFFSET statusHUDFormat, 00FFFFFFh + invoke FormatNumber, bjDealerScore, OFFSET hudNumBuffer + invoke DrawString8x8, 120, 35, OFFSET hudNumBuffer, 0000FFFFh + + ; Dealer Cards + xor esi, esi +draw_dealer_cards: + cmp esi, bjDealerCardCount + jge draw_player_bj_area + mov eax, esi + imul eax, 45 + add eax, 25 + mov ebx, eax + + cmp esi, 1 + jne draw_dealer_face + cmp bjDealerHideHole, 1 + jne draw_dealer_face + ; Face Down Card + invoke DrawBoxBorder, ebx, 48, 38, 52, 002020B0h, 00FFFFFFh, 2 + jmp next_dealer_card_draw + +draw_dealer_face: + invoke DrawBoxBorder, ebx, 48, 38, 52, 00F0F0F5h, 00000000h, 2 + mov eax, [bjDealerCards + esi*4] + dec eax + imul eax, 3 + lea edx, [cardRankStr + eax] + mov eax, ebx + add eax, 8 + invoke DrawString8x8, eax, 68, edx, 00000000h + +next_dealer_card_draw: + inc esi + jmp draw_dealer_cards + +draw_player_bj_area: + ; Player Area Bottom + invoke DrawString8x8, 25, 110, OFFSET targetHUDFormat, 00FFFFFFh + invoke FormatNumber, bjPlayerScore, OFFSET hudNumBuffer + invoke DrawString8x8, 120, 110, OFFSET hudNumBuffer, 0050FF50h + + ; Player Cards + xor esi, esi +draw_player_cards: + cmp esi, bjPlayerCardCount + jge draw_bj_footer + mov eax, esi + imul eax, 45 + add eax, 25 + mov ebx, eax + + invoke DrawBoxBorder, ebx, 124, 38, 52, 00F0F0F5h, 00000000h, 2 + mov eax, [bjPlayerCards + esi*4] + dec eax + imul eax, 3 + lea edx, [cardRankStr + eax] + mov eax, ebx + add eax, 8 + invoke DrawString8x8, eax, 144, edx, 00000000h + + inc esi + jmp draw_player_cards + +draw_bj_footer: + ; Footer Status & Controls + invoke DrawBoxBorder, 20, 182, 280, 42, 00102010h, 0000D7FFh, 1 + cmp BYTE PTR [bjOutcomeMsg], 0 + je draw_bj_controls + invoke DrawString8x8, 28, 188, OFFSET bjOutcomeMsg, 0000FFFFh + invoke DrawString8x8, 28, 204, OFFSET promptSlot1, 00A0A0A0h + ret + +draw_bj_controls: + invoke DrawString8x8, 28, 188, OFFSET promptDancer, 00FFFFFFh + invoke DrawString8x8, 28, 204, OFFSET promptSlot2, 00A0A0A0h + ret +RenderBlackjackGame ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: ROULETTE +; ============================================================================== +HandleRouletteInput PROC + invoke GetAsyncKeyState, 1Bh ; ESC + test ah, 80h + jz @F + mov engineMode, MODE_WALK + ret +@@: + cmp roulState, 1 + je roul_input_done + + invoke GetAsyncKeyState, 31h ; '1' -> RED + test ah, 80h + jz @F + mov roulBetType, 1 +@@: + invoke GetAsyncKeyState, 32h ; '2' -> BLACK + test ah, 80h + jz @F + mov roulBetType, 2 +@@: + invoke GetAsyncKeyState, 33h ; '3' -> ZERO (0) + test ah, 80h + jz @F + mov roulBetType, 3 +@@: + invoke GetAsyncKeyState, 34h ; '4' -> EVEN + test ah, 80h + jz @F + mov roulBetType, 4 +@@: + invoke GetAsyncKeyState, 35h ; '5' -> ODD + test ah, 80h + jz check_roul_spin + mov roulBetType, 5 + +check_roul_spin: + invoke GetAsyncKeyState, 20h ; SPACE -> Spin + test ah, 80h + jz roul_input_done + mov eax, bankroll + cmp eax, roulBetAmount + jl roul_no_cash + sub eax, roulBetAmount + mov bankroll, eax + mov roulState, 1 + mov roulSpinTimer, 50 + mov roulPayout, 0 + invoke PlaySoundA, OFFSET soundRoulette, 0, 1 + ret + +roul_no_cash: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + +roul_input_done: + ret +HandleRouletteInput ENDP + +RenderRouletteGame PROC uses ebx esi edi + ; Table felt background + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 00151525h + invoke DrawBoxBorder, 10, 10, 300, 220, 00201525h, 0000D7FFh, 3 + + ; 2.5D Rotating Wheel on Left + invoke DrawCircle, 85, 110, 65, 00102550h + invoke DrawCircle, 85, 110, 60, 0000D7FFh + invoke DrawCircle, 85, 110, 52, 00101010h + invoke DrawCircle, 85, 110, 22, 0000D7FFh ; Center brass turret + + ; Spinning Wheel / Ball Logic + cmp roulState, 1 + jne draw_roul_ball + dec roulSpinTimer + add roulWheelAngle, 8 + sub roulBallAngle, 14 + cmp roulSpinTimer, 0 + jg draw_roul_ball + + ; Wheel stopped! Determine result! + mov roulState, 2 + invoke RandomRange3D, 37 + mov roulWinningNum, eax + + ; Check bet + cmp roulBetType, 1 ; RED + jne check_ro_black + call IsNumberRed + test eax, eax + jz ro_lost + mov eax, roulBetAmount + shl eax, 1 + mov roulPayout, eax + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET roulOutcomeMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp draw_roul_ball + +check_ro_black: + cmp roulBetType, 2 ; BLACK + jne check_ro_zero + cmp roulWinningNum, 0 + je ro_lost + call IsNumberRed + test eax, eax + jnz ro_lost + mov eax, roulBetAmount + shl eax, 1 + mov roulPayout, eax + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET roulOutcomeMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp draw_roul_ball + +check_ro_zero: + cmp roulBetType, 3 ; ZERO + jne check_ro_even + cmp roulWinningNum, 0 + jne ro_lost + mov eax, roulBetAmount + imul eax, 36 + mov roulPayout, eax + add bankroll, eax + invoke CopyString3D, OFFSET strJackpot, OFFSET roulOutcomeMsg + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + jmp draw_roul_ball + +check_ro_even: + cmp roulBetType, 4 ; EVEN + jne check_ro_odd + mov eax, roulWinningNum + test eax, eax + jz ro_lost + test al, 1 + jnz ro_lost + mov eax, roulBetAmount + shl eax, 1 + mov roulPayout, eax + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET roulOutcomeMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp draw_roul_ball + +check_ro_odd: + mov eax, roulWinningNum + test eax, eax + jz ro_lost + test al, 1 + jz ro_lost + mov eax, roulBetAmount + shl eax, 1 + mov roulPayout, eax + add bankroll, eax + invoke CopyString3D, OFFSET strWin, OFFSET roulOutcomeMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp draw_roul_ball + +ro_lost: + invoke CopyString3D, OFFSET strLose, OFFSET roulOutcomeMsg + +draw_roul_ball: + ; Draw White Ball on Rim + mov eax, roulBallAngle + and eax, 511 + mov ebx, [tableCos + eax*4] + imul ebx, 42 + sar ebx, 16 + add ebx, 85 + + mov eax, roulBallAngle + and eax, 511 + mov edx, [tableSin + eax*4] + imul edx, 42 + sar edx, 16 + add edx, 110 + invoke DrawCircle, ebx, edx, 3, 00FFFFFFh + + ; Right Betting Board + invoke DrawBoxBorder, 175, 25, 125, 28, 001010C0h, 00FFFFFFh, 2 ; [1] RED + invoke DrawString8x8, 190, 35, OFFSET promptSlot1, 00FFFFFFh + + invoke DrawBoxBorder, 175, 60, 125, 28, 00151515h, 00FFFFFFh, 2 ; [2] BLACK + invoke DrawString8x8, 190, 70, OFFSET promptSlot2, 00FFFFFFh + + invoke DrawBoxBorder, 175, 95, 125, 28, 00106010h, 00FFFFFFh, 2 ; [3] ZERO + invoke DrawString8x8, 190, 105, OFFSET promptPoker, 00FFFFFFh + + invoke DrawBoxBorder, 175, 130, 60, 26, 00302020h, 00FFFFFFh, 1 ; [4] EVEN + invoke DrawString8x8, 185, 139, OFFSET symBar, 00FFFFFFh + + invoke DrawBoxBorder, 240, 130, 60, 26, 00302020h, 00FFFFFFh, 1 ; [5] ODD + invoke DrawString8x8, 250, 139, OFFSET symBell, 00FFFFFFh + + ; Highlight Active Bet + cmp roulBetType, 1 + jne @F + invoke DrawBoxBorder, 173, 23, 129, 32, 0, 0000FFFFh, 2 +@@: + cmp roulBetType, 2 + jne @F + invoke DrawBoxBorder, 173, 58, 129, 32, 0, 0000FFFFh, 2 +@@: + cmp roulBetType, 3 + jne @F + invoke DrawBoxBorder, 173, 93, 129, 32, 0, 0000FFFFh, 2 +@@: + cmp roulBetType, 4 + jne @F + invoke DrawBoxBorder, 173, 128, 64, 30, 0, 0000FFFFh, 2 +@@: + cmp roulBetType, 5 + jne draw_ro_footer + invoke DrawBoxBorder, 238, 128, 64, 30, 0, 0000FFFFh, 2 + +draw_ro_footer: + invoke DrawBoxBorder, 20, 180, 280, 42, 00101015h, 0000D7FFh, 1 + + cmp roulState, 2 + jne @F + invoke DrawString8x8, 28, 186, OFFSET targetHUDFormat, 0000D7FFh + invoke FormatNumber, roulWinningNum, OFFSET hudNumBuffer + invoke DrawString8x8, 85, 186, OFFSET hudNumBuffer, 0000FFFFh + invoke DrawString8x8, 130, 186, OFFSET roulOutcomeMsg, 0050FF50h +@@: + invoke DrawString8x8, 28, 202, OFFSET controlsHUD, 00A0A0A0h + ret +RenderRouletteGame ENDP + +IsNumberRed PROC + mov eax, roulWinningNum + cmp eax, 1 + je red_yes + cmp eax, 3 + je red_yes + cmp eax, 5 + je red_yes + cmp eax, 7 + je red_yes + cmp eax, 9 + je red_yes + cmp eax, 12 + je red_yes + cmp eax, 14 + je red_yes + cmp eax, 16 + je red_yes + cmp eax, 18 + je red_yes + cmp eax, 19 + je red_yes + cmp eax, 21 + je red_yes + cmp eax, 23 + je red_yes + cmp eax, 25 + je red_yes + cmp eax, 27 + je red_yes + cmp eax, 30 + je red_yes + cmp eax, 32 + je red_yes + cmp eax, 34 + je red_yes + cmp eax, 36 + je red_yes + xor eax, eax + ret +red_yes: + mov eax, 1 + ret +IsNumberRed ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: BAR & SHOP +; ============================================================================== +HandleShopInput PROC + invoke GetAsyncKeyState, 1Bh ; ESC + test ah, 80h + jz @F + mov engineMode, MODE_WALK + ret +@@: + invoke GetAsyncKeyState, 31h ; '1' -> Lucky Cocktail ($150) + test ah, 80h + jz @F + cmp bankroll, 150 + jl shop_no_money + sub bankroll, 150 + add dancerLuckBuff, 5 + invoke CopyString3D, OFFSET msgDancerTipped, OFFSET shopMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + ret +@@: + invoke GetAsyncKeyState, 32h ; '2' -> Gold Card ($1000) + test ah, 80h + jz @F + cmp bankroll, 1000 + jl shop_no_money + sub bankroll, 1000 + invoke CopyString3D, OFFSET strWin, OFFSET shopMsg + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + ret +@@: + invoke GetAsyncKeyState, 33h ; '3' -> Cigar ($250) + test ah, 80h + jz shop_done + cmp bankroll, 250 + jl shop_no_money + sub bankroll, 250 + add dancerLuckBuff, 2 + invoke CopyString3D, OFFSET msgDancerTipped, OFFSET shopMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + ret + +shop_no_money: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET shopMsg + +shop_done: + ret +HandleShopInput ENDP + +RenderShopGame PROC + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 00150A0Ah + invoke DrawBoxBorder, 10, 10, 300, 220, 00251515h, 0000D7FFh, 3 + invoke DrawString8x8, 25, 20, OFFSET promptShop, 0000D7FFh + + invoke DrawBoxBorder, 20, 40, 280, 32, 001A1010h, 00FFFFFFh, 1 + invoke DrawString8x8, 28, 46, OFFSET promptSlot1, 0000FFFFh + invoke DrawString8x8, 28, 58, OFFSET symBar, 00A0A0A0h + + invoke DrawBoxBorder, 20, 80, 280, 32, 001A1010h, 00FFFFFFh, 1 + invoke DrawString8x8, 28, 86, OFFSET promptSlot2, 0000FFFFh + invoke DrawString8x8, 28, 98, OFFSET symBell, 00A0A0A0h + + invoke DrawBoxBorder, 20, 120, 280, 32, 001A1010h, 00FFFFFFh, 1 + invoke DrawString8x8, 28, 126, OFFSET promptBlackjack, 0000FFFFh + invoke DrawString8x8, 28, 138, OFFSET symCherry, 00A0A0A0h + + invoke DrawBoxBorder, 20, 165, 280, 55, 00100A0Ah, 0000D7FFh, 1 + invoke DrawString8x8, 28, 172, OFFSET statusHUDFormat, 0000D7FFh + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 110, 172, OFFSET hudNumBuffer, 0000FFFFh + + cmp BYTE PTR [shopMsg], 0 + je @F + invoke DrawString8x8, 28, 188, OFFSET shopMsg, 0050FF50h +@@: + invoke DrawString8x8, 28, 204, OFFSET controlsHUD, 00A0A0A0h + ret +RenderShopGame ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: ATM TERMINAL +; ============================================================================== +HandleATMInput PROC + invoke GetAsyncKeyState, 1Bh ; ESC + test ah, 80h + jz @F + mov engineMode, MODE_WALK + ret +@@: + invoke GetAsyncKeyState, 31h ; '1' -> Loan $1000 + test ah, 80h + jz @F + add bankroll, 1000 + invoke CopyString3D, OFFSET strWin, OFFSET atmMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + ret +@@: + invoke GetAsyncKeyState, 32h ; '2' -> Daily Bonus $250 + test ah, 80h + jz atm_done + add bankroll, 250 + invoke CopyString3D, OFFSET strWin, OFFSET atmMsg + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + +atm_done: + ret +HandleATMInput ENDP + +RenderATMGame PROC + ; Retro Green CRT Screen + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 00051505h + invoke DrawBoxBorder, 10, 10, 300, 220, 000A250Ah, 0000FF00h, 2 + + invoke DrawString8x8, 25, 25, OFFSET promptATM, 0000FF00h + + invoke DrawBoxBorder, 20, 50, 280, 35, 00051805h, 0000A000h, 1 + invoke DrawString8x8, 28, 58, OFFSET promptSlot1, 0050FF50h + invoke DrawString8x8, 28, 70, OFFSET symBar, 0000A000h + + invoke DrawBoxBorder, 20, 95, 280, 35, 00051805h, 0000A000h, 1 + invoke DrawString8x8, 28, 103, OFFSET promptSlot2, 0050FF50h + invoke DrawString8x8, 28, 115, OFFSET symBell, 0000A000h + + invoke DrawBoxBorder, 20, 145, 280, 75, 00051805h, 0000FF00h, 1 + invoke DrawString8x8, 28, 155, OFFSET statusHUDFormat, 0000FF00h + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 110, 155, OFFSET hudNumBuffer, 00FFFFFFh + + cmp BYTE PTR [atmMsg], 0 + je @F + invoke DrawString8x8, 28, 175, OFFSET atmMsg, 0000FFFFh +@@: + invoke DrawString8x8, 28, 195, OFFSET controlsHUD, 0000A000h + ret +RenderATMGame ENDP +''') + +# SECTION 6: Player Input, Engine Init, and Main Loop +a(''' +; --- Player Input & Movement Physics --- +HandlePlayerInput PROC + local walkSpd:DWORD + local turnSpd:DWORD + local moveDirX:DWORD + local moveDirY:DWORD + local newX:DWORD + local newY:DWORD + local checkTileX:DWORD + local checkTileY:DWORD + + push ebx + push esi + push edi + + mov walkSpd, 3600 + mov turnSpd, 8 + + invoke GetAsyncKeyState, 10h ; Shift -> Run + test ah, 80h + jz @F + mov walkSpd, 6200 +@@: + + invoke GetAsyncKeyState, 41h ; A / Left + test ah, 80h + jnz turn_left + invoke GetAsyncKeyState, 25h + test ah, 80h + jz check_turn_right +turn_left: + mov eax, playerAngle + sub eax, turnSpd + add eax, 512 + and eax, 511 + mov playerAngle, eax + +check_turn_right: + invoke GetAsyncKeyState, 44h ; D / Right + test ah, 80h + jnz turn_right + invoke GetAsyncKeyState, 27h + test ah, 80h + jz check_forward +turn_right: + mov eax, playerAngle + add eax, turnSpd + and eax, 511 + mov playerAngle, eax + +check_forward: + invoke GetAsyncKeyState, 57h ; W / Up + test ah, 80h + jnz walk_fwd + invoke GetAsyncKeyState, 26h + test ah, 80h + jz check_backward +walk_fwd: + mov eax, playerAngle + and eax, 511 + mov ebx, [tableCos + eax*4] + imul ebx, walkSpd + shrd ebx, edx, 16 + mov moveDirX, ebx + + mov ebx, [tableSin + eax*4] + imul ebx, walkSpd + shrd ebx, edx, 16 + mov moveDirY, ebx + + mov eax, playerX + add eax, moveDirX + mov newX, eax + mov eax, playerY + add eax, moveDirY + mov newY, eax + + ; Collision X + mov eax, newX + sar eax, 16 + mov checkTileX, eax + mov eax, playerY + sar eax, 16 + shl eax, 5 + add eax, checkTileX + movzx eax, BYTE PTR [casinoMap + eax] + test eax, eax + jnz @F + mov eax, newX + mov playerX, eax +@@: + ; Collision Y + mov eax, newY + sar eax, 16 + shl eax, 5 + mov ebx, playerX + sar ebx, 16 + add eax, ebx + movzx eax, BYTE PTR [casinoMap + eax] + test eax, eax + jnz check_interact + mov eax, newY + mov playerY, eax + jmp check_interact + +check_backward: + invoke GetAsyncKeyState, 53h ; S / Down + test ah, 80h + jnz walk_back + invoke GetAsyncKeyState, 28h + test ah, 80h + jz check_interact +walk_back: + mov eax, playerAngle + and eax, 511 + mov ebx, [tableCos + eax*4] + imul ebx, walkSpd + shrd ebx, edx, 16 + neg ebx + mov moveDirX, ebx + + mov ebx, [tableSin + eax*4] + imul ebx, walkSpd + shrd ebx, edx, 16 + neg ebx + mov moveDirY, ebx + + mov eax, playerX + add eax, moveDirX + mov newX, eax + mov eax, playerY + add eax, moveDirY + mov newY, eax + + mov eax, newX + sar eax, 16 + mov checkTileX, eax + mov eax, playerY + sar eax, 16 + shl eax, 5 + add eax, checkTileX + movzx eax, BYTE PTR [casinoMap + eax] + test eax, eax + jnz @F + mov eax, newX + mov playerX, eax +@@: + mov eax, newY + sar eax, 16 + shl eax, 5 + mov ebx, playerX + sar ebx, 16 + add eax, ebx + movzx eax, BYTE PTR [casinoMap + eax] + test eax, eax + jnz check_interact + mov eax, newY + mov playerY, eax + +check_interact: + invoke GetAsyncKeyState, 45h ; 'E' + test ah, 80h + jz input_done + call Trigger3DInteraction + invoke Sleep, 120 + +input_done: + pop edi + pop esi + pop ebx + ret +HandlePlayerInput ENDP + +CheckInteractions PROC uses ebx esi edi + mov interactTargetId, 0 + mov interactPromptPtr, 0 + + xor esi, esi +check_spr_prox: + cmp esi, NUM_SPRITES + jge prox_done + mov eax, esi + imul eax, SIZEOF SpriteObject + mov ebx, [casinoSprites + eax].distSq + cmp ebx, 45000 ; Near sprite + jg next_prox_spr + + mov edx, [casinoSprites + eax].interactId + mov interactTargetId, edx + mov edx, [casinoSprites + eax].promptPtr + mov interactPromptPtr, edx + jmp prox_done + +next_prox_spr: + inc esi + jmp check_spr_prox + +prox_done: + ret +CheckInteractions ENDP + +Trigger3DInteraction PROC + mov eax, interactTargetId + test eax, eax + jz @F + + cmp eax, 8 ; DANCER + jne check_target_slots + cmp bankroll, 100 + jl dancer_no_cash + sub bankroll, 100 + inc dancerLuckBuff + mov cheatLuckyWin, 1 + invoke CopyString3D, OFFSET msgDancerTipped, OFFSET flashMessage + mov flashTimer, 100 + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + ret +dancer_no_cash: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + ret + +check_target_slots: + cmp eax, 3 ; SLOTS + jne check_target_bj + mov engineMode, MODE_SLOTS + invoke PlaySoundA, OFFSET soundClick, 0, 1 + ret + +check_target_bj: + cmp eax, 1 ; BLACKJACK + jne check_target_roulette + mov engineMode, MODE_BLACKJACK + mov bjState, 0 + ret + +check_target_roulette: + cmp eax, 4 ; ROULETTE + jne check_target_shop + mov engineMode, MODE_ROULETTE + mov roulState, 0 + ret + +check_target_shop: + cmp eax, 6 ; SHOP + jne check_target_atm + mov engineMode, MODE_SHOP + ret + +check_target_atm: + cmp eax, 7 ; ATM + jne @F + mov engineMode, MODE_ATM + ret +@@: + ret +Trigger3DInteraction ENDP + +; --- Engine Initialization --- +Init3DEngine PROC + local screenCX:DWORD + local screenCY:DWORD + local posX:DWORD + local posY:DWORD + local bytesRead:DWORD + + push ebx + push esi + push edi + + invoke GetConsoleWindow + mov hCasinoConsole, eax + + ; Setup DIB Info + mov bmi3D.bmiHeader.biSize, SIZEOF C3D_BITMAPINFOHEADER + mov bmi3D.bmiHeader.biWidth, SCREEN_W + mov bmi3D.bmiHeader.biHeight, -SCREEN_H + mov bmi3D.bmiHeader.biPlanes, 1 + mov bmi3D.bmiHeader.biBitCount, 32 + mov bmi3D.bmiHeader.biCompression, DIB_RGB_COLORS + + ; Setup Window Class + mov wc3D.cbSize, SIZEOF C3D_WNDCLASSEX + mov wc3D.style, CS_HREDRAW or CS_VREDRAW + mov wc3D.lpfnWndProc, OFFSET Casino3DWndProc + mov wc3D.cbClsExtra, 0 + mov wc3D.cbWndExtra, 0 + mov wc3D.hInstance, 0 + mov wc3D.hIcon, 0 + mov wc3D.hCursor, 0 + mov wc3D.hbrBackground, 0 + mov wc3D.lpszMenuName, 0 + mov wc3D.lpszClassName, OFFSET sz3DClassName + mov wc3D.hIconSm, 0 + + invoke RegisterClassExA, OFFSET wc3D + + ; Center 1280x960 Window on Desktop + invoke GetSystemMetrics, 0 + mov screenCX, eax + invoke GetSystemMetrics, 1 + mov screenCY, eax + + mov eax, screenCX + sub eax, WINDOW_W + shr eax, 1 + cmp eax, 0 + jge @F + xor eax, eax +@@: + mov posX, eax + + mov eax, screenCY + sub eax, WINDOW_H + shr eax, 1 + cmp eax, 0 + jge @F + xor eax, eax +@@: + mov posY, eax + + invoke CreateWindowExA, 0, OFFSET sz3DClassName, OFFSET sz3DWindowTitle,\ + WS_OVERLAPPEDWINDOW, posX, posY, WINDOW_W + 16, WINDOW_H + 39,\ + 0, 0, 0, 0 + mov h3DWnd, eax + + invoke GetDC, h3DWnd + mov h3DDC, eax + + invoke ShowWindow, h3DWnd, SW_SHOW + invoke UpdateWindow, h3DWnd + invoke SetForegroundWindow, h3DWnd + + ; Load Textures + invoke CreateFileA, OFFSET szTexturesRelPath, 80000000h, 1, 0, 3, 80h, 0 + cmp eax, INVALID_FILE_HANDLE + je init_sprites_table + mov ebx, eax + lea ecx, bytesRead + invoke ReadFile, ebx, OFFSET texturesBuffer, (48 * 64 * 64 * 4), ecx, 0 + invoke CloseHandle, ebx + +init_sprites_table: + ; Sprite 0: VIP Dancer 1 (Stage Left) + mov casinoSprites[0*SIZEOF SpriteObject].posX, (13 * FP_1 + FP_HALF) + mov casinoSprites[0*SIZEOF SpriteObject].posY, (4 * FP_1) + mov casinoSprites[0*SIZEOF SpriteObject].baseTexId, 10 + mov casinoSprites[0*SIZEOF SpriteObject].frameCount, 4 + mov casinoSprites[0*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[0*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[0*SIZEOF SpriteObject].animSpeed, 5 + mov casinoSprites[0*SIZEOF SpriteObject].interactId, 8 + mov casinoSprites[0*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer + + ; Sprite 1: VIP Dancer 2 (Center Stage Star) + mov casinoSprites[1*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) + mov casinoSprites[1*SIZEOF SpriteObject].posY, (3 * FP_1 + FP_HALF) + mov casinoSprites[1*SIZEOF SpriteObject].baseTexId, 10 + mov casinoSprites[1*SIZEOF SpriteObject].frameCount, 4 + mov casinoSprites[1*SIZEOF SpriteObject].curFrame, 2 + mov casinoSprites[1*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[1*SIZEOF SpriteObject].animSpeed, 5 + mov casinoSprites[1*SIZEOF SpriteObject].interactId, 8 + mov casinoSprites[1*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer + + ; Sprite 2: VIP Dancer 3 (Stage Right) + mov casinoSprites[2*SIZEOF SpriteObject].posX, (19 * FP_1 + FP_HALF) + mov casinoSprites[2*SIZEOF SpriteObject].posY, (4 * FP_1) + mov casinoSprites[2*SIZEOF SpriteObject].baseTexId, 10 + mov casinoSprites[2*SIZEOF SpriteObject].frameCount, 4 + mov casinoSprites[2*SIZEOF SpriteObject].curFrame, 1 + mov casinoSprites[2*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[2*SIZEOF SpriteObject].animSpeed, 5 + mov casinoSprites[2*SIZEOF SpriteObject].interactId, 8 + mov casinoSprites[2*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer + + ; Sprite 3: Blackjack Table with Dealer (Front Center Left) + mov casinoSprites[3*SIZEOF SpriteObject].posX, (12 * FP_1 + FP_HALF) + mov casinoSprites[3*SIZEOF SpriteObject].posY, (10 * FP_1) + mov casinoSprites[3*SIZEOF SpriteObject].baseTexId, 30 + mov casinoSprites[3*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[3*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[3*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[3*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[3*SIZEOF SpriteObject].interactId, 1 + mov casinoSprites[3*SIZEOF SpriteObject].promptPtr, OFFSET promptBlackjack + + ; Sprite 4: Roulette Table (Front Center) + mov casinoSprites[4*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) + mov casinoSprites[4*SIZEOF SpriteObject].posY, (10 * FP_1) + mov casinoSprites[4*SIZEOF SpriteObject].baseTexId, 31 + mov casinoSprites[4*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[4*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[4*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[4*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[4*SIZEOF SpriteObject].interactId, 4 + mov casinoSprites[4*SIZEOF SpriteObject].promptPtr, OFFSET promptRoulette + + ; Sprite 5: Poker Table (Front Center Right) + mov casinoSprites[5*SIZEOF SpriteObject].posX, (21 * FP_1) + mov casinoSprites[5*SIZEOF SpriteObject].posY, (10 * FP_1) + mov casinoSprites[5*SIZEOF SpriteObject].baseTexId, 30 + mov casinoSprites[5*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[5*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[5*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[5*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[5*SIZEOF SpriteObject].interactId, 1 + mov casinoSprites[5*SIZEOF SpriteObject].promptPtr, OFFSET promptPoker + + ; Sprite 6: Slot Machine 1 (West Arcade) + mov casinoSprites[6*SIZEOF SpriteObject].posX, (6 * FP_1) + mov casinoSprites[6*SIZEOF SpriteObject].posY, (8 * FP_1) + mov casinoSprites[6*SIZEOF SpriteObject].baseTexId, 20 + mov casinoSprites[6*SIZEOF SpriteObject].frameCount, 3 + mov casinoSprites[6*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[6*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[6*SIZEOF SpriteObject].animSpeed, 8 + mov casinoSprites[6*SIZEOF SpriteObject].interactId, 3 + mov casinoSprites[6*SIZEOF SpriteObject].promptPtr, OFFSET promptSlot1 + + ; Sprite 7: Slot Machine 2 (CloverPit) + mov casinoSprites[7*SIZEOF SpriteObject].posX, (6 * FP_1) + mov casinoSprites[7*SIZEOF SpriteObject].posY, (11 * FP_1) + mov casinoSprites[7*SIZEOF SpriteObject].baseTexId, 20 + mov casinoSprites[7*SIZEOF SpriteObject].frameCount, 3 + mov casinoSprites[7*SIZEOF SpriteObject].curFrame, 1 + mov casinoSprites[7*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[7*SIZEOF SpriteObject].animSpeed, 8 + mov casinoSprites[7*SIZEOF SpriteObject].interactId, 3 + mov casinoSprites[7*SIZEOF SpriteObject].promptPtr, OFFSET promptSlot2 + + ; Sprite 8: Slot Machine 3 + mov casinoSprites[8*SIZEOF SpriteObject].posX, (6 * FP_1) + mov casinoSprites[8*SIZEOF SpriteObject].posY, (14 * FP_1) + mov casinoSprites[8*SIZEOF SpriteObject].baseTexId, 20 + mov casinoSprites[8*SIZEOF SpriteObject].frameCount, 3 + mov casinoSprites[8*SIZEOF SpriteObject].curFrame, 2 + mov casinoSprites[8*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[8*SIZEOF SpriteObject].animSpeed, 8 + mov casinoSprites[8*SIZEOF SpriteObject].interactId, 3 + mov casinoSprites[8*SIZEOF SpriteObject].promptPtr, OFFSET promptSlot1 + + ; Sprite 9: Bartender / Bar Counter (East Wing) + mov casinoSprites[9*SIZEOF SpriteObject].posX, (26 * FP_1) + mov casinoSprites[9*SIZEOF SpriteObject].posY, (12 * FP_1) + mov casinoSprites[9*SIZEOF SpriteObject].baseTexId, 32 + mov casinoSprites[9*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[9*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[9*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[9*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[9*SIZEOF SpriteObject].interactId, 6 + mov casinoSprites[9*SIZEOF SpriteObject].promptPtr, OFFSET promptShop + + ; Sprite 10: ATM Bank Terminal (East Wing) + mov casinoSprites[10*SIZEOF SpriteObject].posX, (26 * FP_1) + mov casinoSprites[10*SIZEOF SpriteObject].posY, (16 * FP_1) + mov casinoSprites[10*SIZEOF SpriteObject].baseTexId, 33 + mov casinoSprites[10*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[10*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[10*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[10*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[10*SIZEOF SpriteObject].interactId, 7 + mov casinoSprites[10*SIZEOF SpriteObject].promptPtr, OFFSET promptATM + + ; Sprite 11: Underground Table (South Wing) + mov casinoSprites[11*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) + mov casinoSprites[11*SIZEOF SpriteObject].posY, (24 * FP_1) + mov casinoSprites[11*SIZEOF SpriteObject].baseTexId, 34 + mov casinoSprites[11*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[11*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[11*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[11*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[11*SIZEOF SpriteObject].interactId, 5 + mov casinoSprites[11*SIZEOF SpriteObject].promptPtr, OFFSET promptBackroom + + ; Sprite 12: Secret Demon Portal (South Wing) + mov casinoSprites[12*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) + mov casinoSprites[12*SIZEOF SpriteObject].posY, (29 * FP_1) + mov casinoSprites[12*SIZEOF SpriteObject].baseTexId, 4 + mov casinoSprites[12*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[12*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[12*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[12*SIZEOF SpriteObject].animSpeed, 1 + mov casinoSprites[12*SIZEOF SpriteObject].interactId, 9 + mov casinoSprites[12*SIZEOF SpriteObject].promptPtr, OFFSET promptHell + + pop edi + pop esi + pop ebx + ret +Init3DEngine ENDP + +; --- Main Loop of the 3D Casino Engine --- +StartCasino3D PROC uses ebx esi edi + call Init3DEngine + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + +engine_loop: + lea eax, [msg3D] + invoke PeekMessageA, eax, 0, 0, 0, PM_REMOVE + test eax, eax + jz dispatch_frame + cmp msg3D.message, WM_QUIT + je exit_3d_engine + lea eax, [msg3D] + invoke TranslateMessage, eax + lea eax, [msg3D] + invoke DispatchMessageA, eax + +dispatch_frame: + cmp engineMode, MODE_WALK + jne check_slots_mode + + ; MODE_WALK: 3D Raycasting Casino + invoke GetAsyncKeyState, 1Bh ; ESC in walk mode -> Exit 3D + test ah, 80h + jnz exit_3d_engine + + call HandlePlayerInput + call CheckInteractions + call RenderCeilingAndFloor + call RenderWalls + call RenderSprites + call RenderHUD + call RenderMinimap + jmp present_frame + +check_slots_mode: + cmp engineMode, MODE_SLOTS + jne check_bj_mode + call HandleSlotsInput + call RenderSlotsGame + jmp present_frame + +check_bj_mode: + cmp engineMode, MODE_BLACKJACK + jne check_roul_mode + call HandleBlackjackInput + call RenderBlackjackGame + jmp present_frame + +check_roul_mode: + cmp engineMode, MODE_ROULETTE + jne check_shop_mode + call HandleRouletteInput + call RenderRouletteGame + jmp present_frame + +check_shop_mode: + cmp engineMode, MODE_SHOP + jne check_atm_mode + call HandleShopInput + call RenderShopGame + jmp present_frame + +check_atm_mode: + call HandleATMInput + call RenderATMGame + +present_frame: + invoke StretchDIBits, h3DDC, 0, 0, WINDOW_W, WINDOW_H,\ + 0, 0, SCREEN_W, SCREEN_H,\ + OFFSET screenBuffer, OFFSET bmi3D, DIB_RGB_COLORS, SRCCOPY + + invoke Sleep, 16 + jmp engine_loop + +exit_3d_engine: + cmp h3DWnd, 0 + je @F + invoke ShowWindow, h3DWnd, SW_HIDE +@@: + invoke SetForegroundWindow, hCasinoConsole + ret +StartCasino3D ENDP +''') + +# Write complete file in Windows-1251 +with open('casino3d.inc', 'wb') as f: + f.write(''.join(code_chunks).encode('cp1251')) + +print('casino3d.inc completely generated in CP1251!') diff --git a/tools/build_casino_assets.py b/tools/build_casino_assets.py new file mode 100644 index 0000000..6f1f0ed --- /dev/null +++ b/tools/build_casino_assets.py @@ -0,0 +1,240 @@ +import os +from pathlib import Path +from PIL import Image + +BRAIN_DIR = Path(r"C:\Users\user\.gemini\antigravity-ide\brain\68821b0e-0e7d-4871-92bc-f142243303b2") +PROJECT_DIR = Path(r"F:\покер") +OUT_DIR = PROJECT_DIR / "assets" / "textures" +OUT_BIN = OUT_DIR / "casino3d.bin" + +CHROMAKEY = (255, 0, 255) # Magenta: 0x00FF00FF +TEX_SIZE = 64 +TOTAL_SLOTS = 48 + +def clean_chromakey_black(img: Image.Image, threshold=40) -> Image.Image: + """Resize with NEAREST so pixels never blend with chromakey!""" + img = img.resize((TEX_SIZE, TEX_SIZE), Image.Resampling.NEAREST).convert("RGB") + pixels = img.load() + for y in range(TEX_SIZE): + for x in range(TEX_SIZE): + r, g, b = pixels[x, y] + if r < threshold and g < threshold and b < threshold: + pixels[x, y] = CHROMAKEY + return img + +def clean_chromakey_white(img: Image.Image, threshold=220) -> Image.Image: + img = img.resize((TEX_SIZE, TEX_SIZE), Image.Resampling.NEAREST).convert("RGB") + pixels = img.load() + for y in range(TEX_SIZE): + for x in range(TEX_SIZE): + r, g, b = pixels[x, y] + if r > threshold and g > threshold and b > threshold: + pixels[x, y] = CHROMAKEY + return img + +def img_to_raw_dwords(img: Image.Image) -> bytes: + img = img.resize((TEX_SIZE, TEX_SIZE), Image.Resampling.NEAREST).convert("RGB") + data = bytearray() + pixels = img.load() + for y in range(TEX_SIZE): + for x in range(TEX_SIZE): + r, g, b = pixels[x, y] + # Little-endian 32-bit: [Blue, Green, Red, 0] + data.extend([b, g, r, 0]) + return bytes(data) + +def make_wood_wall() -> bytes: + data = bytearray() + for y in range(TEX_SIZE): + for x in range(TEX_SIZE): + plank = (x // 16) + grain = (y * 3 + x * 7) % 13 + r = min(255, 120 + plank * 15 + grain) + g = min(255, 60 + plank * 8 + (grain // 2)) + b = min(255, 25 + plank * 4) + if x % 16 == 0 or y == 0 or y == 63: + r, g, b = 45, 20, 10 + data.extend([b, g, r, 0]) + return bytes(data) + +def make_carpet_floor() -> bytes: + data = bytearray() + for y in range(TEX_SIZE): + for x in range(TEX_SIZE): + # Rich emerald green casino carpet with gold diamond pattern + cx = (x % 16) - 8 + cy = (y % 16) - 8 + d = abs(cx) + abs(cy) + if d == 6 or d == 7: + # Gold line + r, g, b = 212, 175, 55 + elif d < 6: + # Dark emerald center + r, g, b = 15, 75, 35 + else: + # Deep velvet green + r, g, b = 20, 110, 45 + data.extend([b, g, r, 0]) + return bytes(data) + +def make_ceiling_tex() -> bytes: + data = bytearray() + for y in range(TEX_SIZE): + for x in range(TEX_SIZE): + # Dark navy casino ceiling with warm gold recessed lamps + dx = (x % 32) - 16 + dy = (y % 32) - 16 + dist2 = dx * dx + dy * dy + if dist2 < 16: + # Bright warm lamp + r, g, b = 255, 240, 180 + elif dist2 < 36: + # Gold bezel + r, g, b = 180, 140, 40 + else: + # Dark acoustic tile + grid = 15 if (x % 32 == 0 or y % 32 == 0) else 35 + r, g, b = grid, grid, grid + 10 + data.extend([b, g, r, 0]) + return bytes(data) + +def make_atm() -> bytes: + data = bytearray() + for y in range(TEX_SIZE): + for x in range(TEX_SIZE): + if x < 14 or x > 49 or y < 6: + r, g, b = CHROMAKEY + elif 10 <= y <= 22 and 18 <= x <= 45: + # Glowing green screen + r, g, b = 20, 220, 40 + elif 26 <= y <= 30 and 20 <= x <= 43: + r, g, b = 10, 10, 10 + elif 42 <= y <= 54 and 18 <= x <= 45: + # Gold dispenser + r, g, b = 220, 180, 40 + else: + r, g, b = 70, 75, 85 + data.extend([b, g, r, 0]) + return bytes(data) + +def make_backroom_table() -> bytes: + data = bytearray() + for y in range(TEX_SIZE): + for x in range(TEX_SIZE): + if x < 8 or x > 55 or y < 16: + r, g, b = CHROMAKEY + elif y < 38: + r, g, b = 80, 40, 20 + if 22 <= x <= 36 and 22 <= y <= 28: + r, g, b = 160, 160, 170 # Gun + elif (x - 44)**2 + (y - 28)**2 < 9: + r, g, b = 180, 10, 10 # Blood + else: + if (12 <= x <= 16 or 47 <= x <= 51): + r, g, b = 45, 20, 10 + else: + r, g, b = CHROMAKEY + data.extend([b, g, r, 0]) + return bytes(data) + +def main(): + OUT_DIR.mkdir(parents=True, exist_ok=True) + atlas = {} + + # 1: Velvet Wall + velvet_path = BRAIN_DIR / "casino_wall_velvet_1790125679687.jpg" + if velvet_path.exists(): + im = Image.open(velvet_path) + atlas[1] = img_to_raw_dwords(im) + else: + atlas[1] = make_wood_wall() + + # 2: Neon Strip Club Wall + neon_path = BRAIN_DIR / "strip_club_wall_1790125693490.jpg" + if neon_path.exists(): + im = Image.open(neon_path) + atlas[2] = img_to_raw_dwords(im) + else: + atlas[2] = make_wood_wall() + + # 3: Carpet Floor + carpet_path = BRAIN_DIR / "casino_carpet_floor_1790125783306.jpg" + if carpet_path.exists(): + im = Image.open(carpet_path) + atlas[3] = img_to_raw_dwords(im) + else: + atlas[3] = make_carpet_floor() + + # 4: Hell Wall + hell_path = BRAIN_DIR / "doom_hell_wall_1790125800167.jpg" + if hell_path.exists(): + im = Image.open(hell_path) + atlas[4] = img_to_raw_dwords(im) + else: + atlas[4] = make_wood_wall() + + # 5: Ceiling + atlas[5] = make_ceiling_tex() + + # 6: Wood Wall + atlas[6] = make_wood_wall() + + # 10..13: Stripper Dancers (Clean crop with NEAREST) + dancer_path = BRAIN_DIR / "stripper_dancer_sprite_1790125706706.jpg" + if dancer_path.exists(): + sheet = Image.open(dancer_path).convert("RGB") + w, h = sheet.size + fw = w // 4 + for i in range(4): + crop = sheet.crop((i * fw, 0, (i + 1) * fw, h)) + crop_clean = clean_chromakey_black(crop, threshold=40) + atlas[10 + i] = img_to_raw_dwords(crop_clean) + + # 20..22: Slot Machine Frames + slot_path = BRAIN_DIR / "slot_machine_sprite_1790125722742.jpg" + if slot_path.exists(): + sheet = Image.open(slot_path).convert("RGB") + w, h = sheet.size + fw = w // 3 + for i in range(3): + crop = sheet.crop((i * fw, 0, (i + 1) * fw, h)) + crop_clean = clean_chromakey_black(crop, threshold=35) + atlas[20 + i] = img_to_raw_dwords(crop_clean) + + # 30: Blackjack Table + bj_path = BRAIN_DIR / "blackjack_table_sprite_1790125738107.jpg" + if bj_path.exists(): + im = Image.open(bj_path) + atlas[30] = img_to_raw_dwords(clean_chromakey_white(im, threshold=225)) + + # 31: Roulette Table + roul_path = BRAIN_DIR / "roulette_table_sprite_1790125754084.jpg" + if roul_path.exists(): + im = Image.open(roul_path) + atlas[31] = img_to_raw_dwords(clean_chromakey_black(im, threshold=35)) + + # 32: Bartender + shop_path = BRAIN_DIR / "bartender_shop_sprite_1790125768774.jpg" + if shop_path.exists(): + im = Image.open(shop_path) + atlas[32] = img_to_raw_dwords(clean_chromakey_white(im, threshold=225)) + + # 33: ATM + atlas[33] = make_atm() + + # 34: Backroom Table + atlas[34] = make_backroom_table() + + # Monolithic binary write + slot_len = TEX_SIZE * TEX_SIZE * 4 + with open(OUT_BIN, "wb") as f: + for slot in range(TOTAL_SLOTS): + data = atlas.get(slot, atlas.get(1, make_wood_wall())) + if len(data) != slot_len: + data = data.ljust(slot_len, b'\x00')[:slot_len] + f.write(data) + + print(f"Generated clean casino3d.bin ({OUT_BIN.stat().st_size} bytes)") + +if __name__ == "__main__": + main() diff --git a/tools/build_engine.py b/tools/build_engine.py new file mode 100644 index 0000000..f13ebc5 --- /dev/null +++ b/tools/build_engine.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +import sys + +print('Writing casino3d.inc in CP1251...') diff --git a/tools/build_graphics.ps1 b/tools/build_graphics.ps1 new file mode 100644 index 0000000..fa1bfd9 --- /dev/null +++ b/tools/build_graphics.ps1 @@ -0,0 +1,13 @@ +param([string]$MasmRoot = 'F:\MASM32\masm32') +$ErrorActionPreference = 'Stop' +$root = Split-Path $PSScriptRoot -Parent +Push-Location $root +try { + & "$MasmRoot\bin\ml.exe" /c /coff /Cp /nologo /I. /Fobuild\graphics\poker.obj poker.asm + if ($LASTEXITCODE -ne 0) { throw 'MASM assembly failed' } + & "$MasmRoot\bin\link.exe" /nologo /SUBSYSTEM:WINDOWS /RELEASE /VERSION:5.0 "/LIBPATH:$MasmRoot\lib" /OUT:build\graphics\poker.exe build\graphics\poker.obj build\casino_icon.res kernel32.lib winmm.lib user32.lib ws2_32.lib gdi32.lib + if ($LASTEXITCODE -ne 0) { throw 'Link failed' } + Write-Output 'Built build\graphics\poker.exe. Publish only after verification.' +} finally { + Pop-Location +} diff --git a/tools/build_graphics_assets.py b/tools/build_graphics_assets.py new file mode 100644 index 0000000..a0be758 --- /dev/null +++ b/tools/build_graphics_assets.py @@ -0,0 +1,78 @@ +"""Pack project-local source art into the MASM renderer's 128px BGRA slots. + +Python is an offline build tool; the shipped game has no Python dependency. +Only transparent alpha is discarded. Black, white and gold detail is retained. +""" +from pathlib import Path +from PIL import Image + +ROOT = Path(__file__).resolve().parents[1] +SIZE = 128 +SLOTS = 48 +CHROMA = (255, 0, 255, 0) + + +def cells(path, columns, rows): + image = Image.open(path).convert("RGBA") + return [image.crop((c * image.width // columns, r * image.height // rows, + (c + 1) * image.width // columns, (r + 1) * image.height // rows)) + for r in range(rows) for c in range(columns)] + + +def sprite(cell): + # Preserve each sheet's common anchor and scale, including internal margins. + scale = min((SIZE - 8) / cell.width, (SIZE - 8) / cell.height) + resized = cell.resize((round(cell.width * scale), round(cell.height * scale)), + Image.Resampling.LANCZOS) + out = Image.new("RGBA", (SIZE, SIZE), (0, 0, 0, 0)) + out.alpha_composite(resized, ((SIZE - resized.width) // 2, SIZE - 4 - resized.height)) + return out + + +def pack(image, is_sprite=False): + result = bytearray() + for r, g, b, a in image.getdata(): + if is_sprite and a < 128: + r, g, b, a = CHROMA + result.extend((b, g, r, 0)) + return result + + +def main(): + raw = (ROOT / "assets/textures/casino3d.bin").read_bytes() + assert len(raw) == SLOTS * 64 * 64 * 4 + textures = [] + for n in range(SLOTS): + tile = Image.frombytes("RGBA", (64, 64), raw[n * 16384:(n + 1) * 16384], + "raw", "BGRA") + tile.putalpha(255) + textures.append(tile.resize((SIZE, SIZE), Image.Resampling.NEAREST)) + atlas = cells(ROOT / "assets/sprites/casino-atlas-v1.png", 4, 4) + dancer = cells(ROOT / "assets/sprites/cabaret-loop-v1.png", 4, 3) + sprites = {} + for n, frame in enumerate(dancer): + sprites[10 + n] = sprite(frame) + for slot, cell in {24: 4, 25: 5, 26: 6, 30: 7, 31: 8, 32: 10, + 34: 9, 35: 11, 36: 12, 37: 13, 38: 14, 39: 15}.items(): + sprites[slot] = sprite(atlas[cell]) + # The original ATM uses an explicit magenta chroma background. + textures[33].putalpha(255) + for slot, image in sprites.items(): + textures[slot] = image + data = b"".join(pack(image, n in sprites) for n, image in enumerate(textures)) + assert len(data) == SLOTS * SIZE * SIZE * 4 + target = ROOT / "assets/textures/casino3d-hd.bin" + target.write_bytes(data) + preview = Image.new("RGBA", (SIZE * 8, SIZE * 6), (24, 29, 32, 255)) + for n, image in enumerate(textures): + preview.alpha_composite(image, ((n % 8) * SIZE, (n // 8) * SIZE)) + preview.convert("RGB").save(ROOT / "build/graphics/texture-atlas-preview.png") + dancer_preview = [sprites[10 + n].resize((256, 256), Image.Resampling.NEAREST) + for n in range(12)] + dancer_preview[0].save(ROOT / "build/graphics/cabaret-loop-preview.gif", save_all=True, + append_images=dancer_preview[1:], duration=100, loop=0, disposal=2) + print(f"Packed {SLOTS} x {SIZE}x{SIZE}: {target}") + + +if __name__ == "__main__": + main() diff --git a/tools/generate_casino3d.py b/tools/generate_casino3d.py new file mode 100644 index 0000000..7a5777b --- /dev/null +++ b/tools/generate_casino3d.py @@ -0,0 +1,2 @@ +# Generator for casino3d.inc in CP1251 +print('Creating casino3d.inc generator...') diff --git a/tools/generate_font.py b/tools/generate_font.py new file mode 100644 index 0000000..40deaf9 --- /dev/null +++ b/tools/generate_font.py @@ -0,0 +1,40 @@ +from PIL import Image, ImageDraw, ImageFont + +font_data = [] + +try: + font = ImageFont.truetype("consola.ttf", 9) +except Exception: + try: + font = ImageFont.truetype("arial.ttf", 9) + except Exception: + font = ImageFont.load_default() + +for ch_code in range(256): + try: + ch = bytes([ch_code]).decode("cp1251") + except Exception: + ch = " " + + img = Image.new("1", (8, 8), color=0) + draw = ImageDraw.Draw(img) + draw.text((0, -1), ch, font=font, fill=1) + + char_bytes = [] + pixels = img.load() + for y in range(8): + row_byte = 0 + for x in range(8): + if pixels[x, y]: + row_byte |= (1 << (7 - x)) + char_bytes.append(row_byte) + font_data.append(char_bytes) + +with open(r"F:\покер\font8x8.inc", "w", encoding="cp1251") as f: + f.write("; --- 8x8 BITMAP FONT FOR CP1251 (Generated) ---\n") + f.write(".data\nALIGN 4\nfont8x8 label byte\n") + for idx, cb in enumerate(font_data): + bytes_str = ", ".join(f"0{b:02X}h" for b in cb) + f.write(f"db {bytes_str} ; char 0x{idx:02X}\n") + +print("Generated clean font8x8.inc!") diff --git a/tools/generate_math_and_map.py b/tools/generate_math_and_map.py new file mode 100644 index 0000000..b6ce5e3 --- /dev/null +++ b/tools/generate_math_and_map.py @@ -0,0 +1,92 @@ +import math + +NUM_ANGLES = 512 +FP_SHIFT = 16 +FP_ONE = 1 << FP_SHIFT + +def float_to_fp(val: float) -> int: + i = int(round(val * FP_ONE)) + if i < 0: + i = (1 << 32) + i + return i & 0xFFFFFFFF + +sin_table = [] +cos_table = [] +for i in range(NUM_ANGLES): + rad = (i * 2.0 * math.pi) / NUM_ANGLES + sin_table.append(float_to_fp(math.sin(rad))) + cos_table.append(float_to_fp(math.cos(rad))) + +# Grand Luxury Open Casino Hall (32x32) +# 0 = Open floor (carpet) +# 1 = Red Velvet Wall with Gold Trim +# 2 = Neon Strip Club Wall +# 3 = Mahogany Wood Bar Wall +# 4 = Hell Tower Demon Wall +MAP_W = 32 +MAP_H = 32 + +grid = [[0 for _ in range(MAP_W)] for _ in range(MAP_H)] + +# Outer perimeter: Velvet Wall (1) +for x in range(MAP_W): + grid[0][x] = 1 + grid[MAP_H - 1][x] = 1 +for y in range(MAP_H): + grid[y][0] = 1 + grid[y][MAP_W - 1] = 1 + +# North side: VIP Strip Club Stage backdrop (Neon Wall 2) +for x in range(10, 22): + grid[1][x] = 2 + +# Decorative stage wing pillars +grid[2][9] = 2 +grid[3][9] = 2 +grid[2][22] = 2 +grid[3][22] = 2 + +# East side: Bar & Shop back counter (Wood Wall 3) +for y in range(13, 20): + grid[y][30] = 3 +for y in range(14, 19): + grid[y][29] = 3 + +# South side: Secret Hell Tower entrance (Demon Wall 4) +for x in range(13, 19): + grid[30][x] = 4 + +# Elegant decorative casino columns (spacing out the grand hall without blocking views) +grid[8][8] = 1 +grid[8][23] = 1 +grid[23][8] = 1 +grid[23][23] = 1 + +with open(r"F:\покер\casino3d_data.inc", "w", encoding="cp1251") as f: + f.write("; --- CASINO 3D ENGINE DATA (Generated: Grand Open Hall) ---\n\n") + f.write("NUM_ANGLES equ 512\n") + f.write("MAP_WIDTH equ 32\n") + f.write("MAP_HEIGHT equ 32\n\n") + + # Cosine table + f.write(".data\nALIGN 4\ntableCos dd ") + for idx, v in enumerate(cos_table): + comma = "," if (idx + 1) % 8 != 0 and idx != NUM_ANGLES - 1 else "\n" + prefix = " dd " if (idx + 1) % 8 == 1 and idx != 0 else "" + f.write(f"{prefix}0{v:08X}h{comma}") + f.write("\nALIGN 4\ntableSin dd ") + for idx, v in enumerate(sin_table): + comma = "," if (idx + 1) % 8 != 0 and idx != NUM_ANGLES - 1 else "\n" + prefix = " dd " if (idx + 1) % 8 == 1 and idx != 0 else "" + f.write(f"{prefix}0{v:08X}h{comma}") + f.write("\nALIGN 4\ncasinoMap db ") + flat_map = [] + for row in grid: + flat_map.extend(row) + for idx, b in enumerate(flat_map): + comma = "," if (idx + 1) % 32 != 0 and idx != len(flat_map) - 1 else "\n" + prefix = " db " if (idx + 1) % 32 == 1 and idx != 0 else "" + f.write(f"{prefix}{b}{comma}") + f.write("\n") + +print("Generated grand open hall casino3d_data.inc successfully!") diff --git a/tools/generate_unified_casino3d.py b/tools/generate_unified_casino3d.py new file mode 100644 index 0000000..418999e --- /dev/null +++ b/tools/generate_unified_casino3d.py @@ -0,0 +1,2350 @@ +# -*- coding: utf-8 -*- +# Generator for casino3d.inc (CP1251) +import sys + +content = r''' +; ============================================================================== +; CASINO 2.5D ENGINE - MASM32 SOFTWARE RAYCASTER (CP1251) +; Unified with Full Console Casino Games via RunConsoleGameFrom3D +; ============================================================================== + +includelib gdi32.lib +includelib winmm.lib + +CreateWindowExA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +RegisterClassExA PROTO :DWORD +DefWindowProcA PROTO :DWORD,:DWORD,:DWORD,:DWORD +ShowWindow PROTO :DWORD,:DWORD +UpdateWindow PROTO :DWORD +GetDC PROTO :DWORD +ReleaseDC PROTO :DWORD,:DWORD +StretchDIBits PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +PeekMessageA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD +TranslateMessage PROTO :DWORD +DispatchMessageA PROTO :DWORD +PostQuitMessage PROTO :DWORD +DestroyWindow PROTO :DWORD +SetWindowTextA PROTO :DWORD,:DWORD +SetForegroundWindow PROTO :DWORD +GetConsoleWindow PROTO +GetSystemMetrics PROTO :DWORD +CreateFileA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +ReadFile PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD +CloseHandle PROTO :DWORD +GetAsyncKeyState PROTO :DWORD +PlaySoundA PROTO :DWORD,:DWORD,:DWORD +GetModuleFileNameA PROTO :DWORD,:DWORD,:DWORD +Sleep PROTO :DWORD + +C3D_POINT STRUCT + x dd ? + y dd ? +C3D_POINT ENDS + +C3D_MSG STRUCT + hwnd dd ? + message dd ? + wParam dd ? + lParam dd ? + time dd ? + pt C3D_POINT <> +C3D_MSG ENDS + +C3D_WNDCLASSEX STRUCT + cbSize dd ? + style dd ? + lpfnWndProc dd ? + cbClsExtra dd ? + cbWndExtra dd ? + hInstance dd ? + hIcon dd ? + hCursor dd ? + hbrBackground dd ? + lpszMenuName dd ? + lpszClassName dd ? + hIconSm dd ? +C3D_WNDCLASSEX ENDS + +C3D_BITMAPINFOHEADER STRUCT + biSize dd ? + biWidth dd ? + biHeight dd ? + biPlanes dw ? + biBitCount dw ? + biCompression dd ? + biSizeImage dd ? + biXPelsPerMeter dd ? + biYPelsPerMeter dd ? + biClrUsed dd ? + biClrImportant dd ? +C3D_BITMAPINFOHEADER ENDS + +C3D_BITMAPINFO STRUCT + bmiHeader C3D_BITMAPINFOHEADER <> + bmiColors dd ? +C3D_BITMAPINFO ENDS + +SpriteObject STRUCT + posX dd ? + posY dd ? + baseTexId dd ? + frameCount dd ? + curFrame dd ? + animTimer dd ? + animSpeed dd ? + interactId dd ? + promptPtr dd ? + distSq dd ? +SpriteObject ENDS + +SCREEN_W equ 640 +SCREEN_H equ 480 +HALF_W equ 320 +HALF_H equ 240 +SCREEN_SIZE equ (SCREEN_W * SCREEN_H) +WIN_SCALE equ 1 +WINDOW_W equ (SCREEN_W * WIN_SCALE) +WINDOW_H equ (SCREEN_H * WIN_SCALE) + +FP_SHIFT equ 16 +FP_1 equ 65536 +FP_HALF equ 32768 + +MODE_WALK equ 0 + +NUM_SPRITES equ 28 + +CS_HREDRAW equ 2 +CS_VREDRAW equ 1 +PM_REMOVE equ 1 +WM_QUIT equ 12h +WM_CLOSE equ 10h +WM_DESTROY equ 2 +WS_OVERLAPPEDWINDOW equ 00CF0000h +WS_VISIBLE equ 10000000h +DIB_RGB_COLORS equ 0 +SRCCOPY equ 00CC0020h +GENERIC_READ equ 80000000h +FILE_ATTRIBUTE_NORMAL equ 80h +OPEN_EXISTING equ 3 +INVALID_FILE_HANDLE equ -1 + +include casino3d_data.inc +include font8x8.inc +include src_graphics\platform_data.inc + +.data +ALIGN 4 +h3DInst dd 0 +h3DWnd dd 0 +h3DDC dd 0 + +engineMode dd MODE_WALK +rngSeed3D dd 12345678h +bmi3D C3D_BITMAPINFO <> +msg3D C3D_MSG <> +wc3D C3D_WNDCLASSEX <> + +sz3DClassName db "Casino3DRetroClass",0 +sz3DWindowTitle db "Assembler Casino - 2.5D Lobby",0 +szTexturesRelPath db "assets\textures\casino3d-hd.bin",0 +szTexturesFullPath db 260 dup(0) + +soundCoin db "assets\audio\b05e1ac8be34248.wav",0 +soundJackpot db "assets\audio\hakari_dance.wav",0 +soundClick db "assets\audio\toy-gun-revolver-close-chamber-spin_f1ruc5nd.wav",0 + +playerX dd (16 * FP_1 + FP_HALF) +playerY dd (16 * FP_1 + FP_HALF) +playerAngle dd 384 +playerDirX dd 0 +playerDirY dd 0 +playerPlaneX dd 0 +playerPlaneY dd 0 + +casinoSprites SpriteObject NUM_SPRITES dup(<>) +sortedSprites dd NUM_SPRITES dup(0) + +interactTargetId dd 0 +interactPromptPtr dd 0 +dancerLuckBuff dd 0 +flashTimer dd 0 +flashMessage db 128 dup(0) + +; Russian CP1251 Interaction Prompts +promptDancer1 db "[E] Кабаре: Чаевые $100 (+Бафф удачи)",0 +promptDancer2 db "[E] Главная сцена: Чаевые $100 (+Удача)",0 +promptDancer3 db "[E] VIP-Кабаре: Чаевые $100 (+Бафф удачи)",0 +promptBlackjack db "[E] Стол: 21 / Блэкджек",0 +promptPoker db "[E] Стол: Покер (Техасский Холдем)",0 +promptCasinoRoul db "[E] Стол: Казино-Рулетка (Европейская)",0 +promptRoulette db "[E] Стол: Классическая Рулетка",0 +promptSlot777 db "[E] Автомат: Слоты 777 (Классика)",0 +promptSlotClover db "[E] Автомат: CloverPit (Слоты 5х3)",0 +promptSlotClassic db "[E] Автомат: Джекпот 777",0 +promptUmamusume db "[E] Аркада: Скачки Umamusume Derby",0 +promptSkillCheck db "[E] Аркада: DBD Skill Check (Крюк)",0 +promptATM db "[E] Кассир / Банкомат (Смена профиля)",0 +promptShop db "[E] VIP-Бутик: Рубашки карт и талисманы",0 +promptOnline db "[E] Терминал: Онлайн Казино (Radmin VPN)",0 +promptAchieve db "[E] Зал Славы: Достижения и награды",0 +promptStats db "[E] Табло: Статистика по всем играм",0 +promptDurak db "[E] Подпольный стол: Игра в Дурака",0 +promptBuckshot db "[E] Подпольный стол: Buckshot Roulette",0 +promptRussRoul db "[E] Подпольный стол: Русская Рулетка",0 +promptDice db "[E] Стол: Кости (Craps)",0 +promptSkulls db "[E] Стол: Черепа и Шарик",0 +promptCoin db "[E] Стол: Монетка (Орел / Решка)",0 +promptTraining db "[E] Стол: Режим тренировки",0 +promptObserver db "[E] Стол: Наблюдатель (ИИ против ИИ)",0 +promptDaily db "[E] Доска: Ежедневные задания",0 +promptSettings db "[E] Терминал: Настройки игры",0 +promptHell db "[E] Портал: Адская Башня (Этаж 666)",0 + +msgDancerTipped db "Вы дали $100 чаевых! Удача казино на вашей стороне!",0 +msgNeedMoney db "Недостаточно фишек в банке!",0 +msgGameReturned db "Вы вернулись в зал казино. Баланс сохранен!",0 + +; HUD and Pause Texts (CP1251) +textBankHUD db "БАНК: $",0 +textPlayerHUD db "ИГРОК: ",0 +textControlsHUD db "W/S: ВПЕРЕД/НАЗАД A/D: ПОВОРОТ E: ДЕЙСТВИЕ",0 +textWindowKeysHUD db "F11: ЭКРАН ESC: МЕНЮ",0 + +textPauseTitle db "=== КАЗИНО НА ПАУЗЕ ===",0 +textPauseResume db "ESC - ПРОДОЛЖИТЬ ИГРУ",0 +textPauseMenu db "M - ГЛАВНОЕ МЕНЮ (КОНСОЛЬ)",0 +textPauseQuit db "Q - СОХРАНИТЬ И ВЫЙТИ",0 + +ALIGN 4 +screenBuffer dd SCREEN_SIZE dup(?) +ALIGN 4 +zBuffer dd SCREEN_W dup(?) +ALIGN 4 +texturesBuffer dd (48 * 128 * 128) dup(?) + +hudNumBuffer db 32 dup(?) + +.code + +; --- 3D Window Procedure --- +Casino3DWndProc PROC hwnd:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD + invoke WindowEvents3D, hwnd, uMsg, wParam, lParam + ret +Casino3DWndProc ENDP + +; --- PRNG --- +RandomRange3D PROC maxVal:DWORD + push edx + push ecx + mov eax, rngSeed3D + imul eax, 1103515245 + add eax, 12345 + mov rngSeed3D, eax + shr eax, 16 + and eax, 7FFFh + xor edx, edx + mov ecx, maxVal + test ecx, ecx + jz rr3d_zero + div ecx + mov eax, edx +rr3d_zero: + pop ecx + pop edx + ret +RandomRange3D ENDP + +; --- Helper: Copy String --- +CopyString3D PROC src:DWORD, dst:DWORD + push esi + push edi + mov esi, src + mov edi, dst +cs3d_loop: + mov al, [esi] + mov [edi], al + test al, al + jz cs3d_done + inc esi + inc edi + jmp cs3d_loop +cs3d_done: + pop edi + pop esi + ret +CopyString3D ENDP + +; --- Format Unsigned Integer to String --- +FormatNumber PROC num:DWORD, buf:DWORD + push ebx + push ecx + push edx + push edi + mov eax, num + mov edi, buf + test eax, eax + jnz fn_start + mov BYTE PTR [edi], '0' + mov BYTE PTR [edi+1], 0 + pop edi + pop edx + pop ecx + pop ebx + ret +fn_start: + xor ecx, ecx +fn_div_loop: + test eax, eax + jz fn_write_loop + xor edx, edx + mov ebx, 10 + div ebx + add dl, '0' + push edx + inc ecx + jmp fn_div_loop +fn_write_loop: + test ecx, ecx + jz fn_done + pop edx + mov [edi], dl + inc edi + dec ecx + jmp fn_write_loop +fn_done: + mov BYTE PTR [edi], 0 + pop edi + pop edx + pop ecx + pop ebx + ret +FormatNumber ENDP + +; --- Fast 2D Drawing Primitives (Scaled 2x to 640x480) --- +DrawBox PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD + +DrawPixel PROC x:DWORD, y:DWORD, color:DWORD + invoke DrawBox, x, y, 1, 1, color + ret +DrawPixel ENDP + +DrawBox PROC x:DWORD, y:DWORD, w:DWORD, h:DWORD, color:DWORD + shl x, 1 + shl y, 1 + shl w, 1 + shl h, 1 + push ebx + push esi + push edi + + mov eax, x + cmp eax, SCREEN_W + jge box_done + mov ecx, y + cmp ecx, SCREEN_H + jge box_done + + mov esi, w + mov edi, h + + mov eax, x + add eax, esi + cmp eax, SCREEN_W + jle @F + mov eax, SCREEN_W + sub eax, x + mov esi, eax +@@: + mov eax, y + add eax, edi + cmp eax, SCREEN_H + jle @F + mov eax, SCREEN_H + sub eax, y + mov edi, eax +@@: + test esi, esi + jle box_done + test edi, edi + jle box_done + + mov edx, color + mov ecx, y +box_y_loop: + mov ebx, ecx + imul ebx, SCREEN_W + add ebx, x + push ecx + push edi + mov ecx, esi + lea edi, [screenBuffer + ebx*4] + mov eax, edx + rep stosd + pop edi + pop ecx + inc ecx + dec edi + jnz box_y_loop + +box_done: + pop edi + pop esi + pop ebx + ret +DrawBox ENDP + +DrawBoxBorder PROC uses ebx x:DWORD, y:DWORD, w:DWORD, h:DWORD, fillColor:DWORD, borderColor:DWORD, bWidth:DWORD + invoke DrawBox, x, y, w, h, borderColor + mov eax, x + add eax, bWidth + mov ecx, y + add ecx, bWidth + mov edx, w + mov ebx, bWidth + shl ebx, 1 + sub edx, ebx + mov ebx, h + sub ebx, bWidth + sub ebx, bWidth + invoke DrawBox, eax, ecx, edx, ebx, fillColor + ret +DrawBoxBorder ENDP + +DrawCircle PROC cxVal:DWORD, cyVal:DWORD, radius:DWORD, color:DWORD + local x:DWORD + local y:DWORD + local r2:DWORD + local dist2:DWORD + push ebx + push esi + push edi + + mov eax, radius + imul eax, eax + mov r2, eax + + mov eax, radius + neg eax + mov y, eax +circ_y: + mov eax, y + cmp eax, radius + jg circ_done + + mov eax, radius + neg eax + mov x, eax +circ_x: + mov eax, x + cmp eax, radius + jg circ_next_y + + mov eax, x + imul eax, eax + mov ebx, y + imul ebx, ebx + add eax, ebx + cmp eax, r2 + jg circ_next_x + + mov eax, cxVal + add eax, x + mov ecx, cyVal + add ecx, y + invoke DrawPixel, eax, ecx, color + +circ_next_x: + inc x + jmp circ_x + +circ_next_y: + inc y + jmp circ_y + +circ_done: + pop edi + pop esi + pop ebx + ret +DrawCircle ENDP + +DrawChar8x8 PROC uses ebx esi edi x:DWORD, y:DWORD, chVal:DWORD, color:DWORD + local column:DWORD + mov eax, chVal + and eax, 255 + lea esi, [font8x8 + eax*8] + xor edi, edi +glyph_row: + movzx ebx, BYTE PTR [esi+edi] + mov column, 0 +glyph_col: + test ebx, 80h + jz glyph_next + mov eax, x + add eax, column + mov edx, y + add edx, edi + invoke DrawPixel, eax, edx, color +glyph_next: + shl ebx, 1 + inc column + cmp column, 8 + jl glyph_col + inc edi + cmp edi, 8 + jl glyph_row + ret +DrawChar8x8 ENDP + +DrawString8x8 PROC x:DWORD, y:DWORD, strPtr:DWORD, color:DWORD + push ebx + push esi + mov esi, strPtr + mov ebx, x +str_loop: + movzx eax, BYTE PTR [esi] + test al, al + jz str_done + invoke DrawChar8x8, ebx, y, eax, color + add ebx, 8 + inc esi + jmp str_loop +str_done: + pop esi + pop ebx + ret +DrawString8x8 ENDP + +; --- Render 3D Ceiling and Floor --- +RenderCeilingAndFloor PROC uses ebx esi edi + local floorRow:DWORD + local pDist:DWORD + local fStepX:DWORD + local fStepY:DWORD + local fX:DWORD + local fY:DWORD + local shade:DWORD + local cShade:DWORD + + mov edi, HALF_H +floor_scanlines: + cmp edi, SCREEN_H + jge floor_done + mov floorRow, edi + + mov eax, edi + sub eax, HALF_H + inc eax + mov ecx, eax + mov eax, HALF_H * FP_1 + cdq + idiv ecx + mov pDist, eax + + mov edx, pDist + shr edx, 13 + mov eax, 255 + sub eax, edx + cmp eax, 35 + jge @F + mov eax, 35 +@@: + mov shade, eax + mov edx, eax + sub edx, 25 + cmp edx, 20 + jge @F + mov edx, 20 +@@: + mov cShade, edx + + mov eax, playerPlaneX + shl eax, 1 + imul pDist + shrd eax, edx, 16 + cdq + mov ecx, SCREEN_W + idiv ecx + mov fStepX, eax + + mov eax, playerPlaneY + shl eax, 1 + imul pDist + shrd eax, edx, 16 + cdq + mov ecx, SCREEN_W + idiv ecx + mov fStepY, eax + + mov eax, playerDirX + sub eax, playerPlaneX + imul pDist + shrd eax, edx, 16 + add eax, playerX + mov fX, eax + + mov eax, playerDirY + sub eax, playerPlaneY + imul pDist + shrd eax, edx, 16 + add eax, playerY + mov fY, eax + + xor esi, esi +col_floor_loop: + cmp esi, SCREEN_W + jge next_floor_row + + ; Floor Texture: Carpet (Slot 0 in casino3d-hd.bin) + mov eax, fX + shr eax, 9 + and eax, 127 + mov edx, fY + shr edx, 9 + and edx, 127 + shl edx, 7 + add edx, eax + + mov eax, [texturesBuffer + (0 * 128 * 128 * 4) + edx*4] + + ; Shade Floor RGB + mov ebx, shade + movzx ecx, al + imul ecx, ebx + shr ecx, 8 + push ecx + + movzx ecx, ah + imul ecx, ebx + shr ecx, 8 + shl ecx, 8 + + shr eax, 16 + movzx eax, al + imul eax, ebx + shr eax, 8 + shl eax, 16 + or eax, ecx + pop ecx + or eax, ecx + + mov ecx, floorRow + imul ecx, SCREEN_W + add ecx, esi + mov [screenBuffer + ecx*4], eax + + ; Ceiling Texture: Recessed Lights (Slot 5) + mov eax, fX + shr eax, 10 + and eax, 127 + mov edx, fY + shr edx, 10 + and edx, 127 + shl edx, 7 + add edx, eax + + mov eax, [texturesBuffer + (5 * 128 * 128 * 4) + edx*4] + + mov ebx, cShade + movzx ecx, al + imul ecx, ebx + shr ecx, 8 + push ecx + + movzx ecx, ah + imul ecx, ebx + shr ecx, 8 + shl ecx, 8 + + shr eax, 16 + movzx eax, al + imul eax, ebx + shr eax, 8 + shl eax, 16 + or eax, ecx + pop ecx + or eax, ecx + + mov ecx, SCREEN_H - 1 + sub ecx, floorRow + imul ecx, SCREEN_W + add ecx, esi + mov [screenBuffer + ecx*4], eax + + mov eax, fStepX + add fX, eax + mov eax, fStepY + add fY, eax + + inc esi + jmp col_floor_loop + +next_floor_row: + inc edi + jmp floor_scanlines + +floor_done: + ret +RenderCeilingAndFloor ENDP + +; --- Render 3D Walls --- +RenderWalls PROC + local col:DWORD + local camX:DWORD + local rayDirX:DWORD + local rayDirY:DWORD + local mapX:DWORD + local mapY:DWORD + local deltaDistX:DWORD + local deltaDistY:DWORD + local stepX:DWORD + local stepY:DWORD + local sideDistX:DWORD + local sideDistY:DWORD + local side:DWORD + local perpWallDist:DWORD + local lineH:DWORD + local drawStart:DWORD + local drawEnd:DWORD + local wallHit:DWORD + local texX:DWORD + local texId:DWORD + local shade:DWORD + + push ebx + push esi + push edi + + mov eax, playerAngle + and eax, 511 + mov ebx, [tableCos + eax*4] + mov playerDirX, ebx + mov ebx, [tableSin + eax*4] + mov playerDirY, ebx + + mov eax, ebx + imul eax, -66 + cdq + mov ecx, 100 + idiv ecx + mov playerPlaneX, eax + + mov eax, playerDirX + imul eax, 66 + cdq + idiv ecx + mov playerPlaneY, eax + + mov col, 0 +col_loop: + cmp col, SCREEN_W + jge walls_done + + mov eax, col + shl eax, 1 + sub eax, SCREEN_W + imul eax, FP_1 + cdq + mov ecx, SCREEN_W + idiv ecx + mov camX, eax + + mov eax, playerPlaneX + imul camX + shrd eax, edx, 16 + add eax, playerDirX + mov rayDirX, eax + + mov eax, playerPlaneY + imul camX + shrd eax, edx, 16 + add eax, playerDirY + mov rayDirY, eax + + mov eax, playerX + sar eax, 16 + mov mapX, eax + mov eax, playerY + sar eax, 16 + mov mapY, eax + + mov eax, rayDirX + test eax, eax + jnz calc_delta_x + mov deltaDistX, 7FFFFFFFh + jmp calc_delta_y +calc_delta_x: + test eax, eax + jns @F + neg eax +@@: + mov ebx, eax + xor eax, eax + mov edx, 1 + idiv ebx + mov deltaDistX, eax + +calc_delta_y: + mov eax, rayDirY + test eax, eax + jnz calc_delta_y_act + mov deltaDistY, 7FFFFFFFh + jmp calc_steps +calc_delta_y_act: + test eax, eax + jns @F + neg eax +@@: + mov ebx, eax + xor eax, eax + mov edx, 1 + idiv ebx + mov deltaDistY, eax + +calc_steps: + cmp rayDirX, 0 + jge step_x_pos + mov stepX, -1 + mov eax, playerX + mov edx, mapX + shl edx, 16 + sub eax, edx + imul deltaDistX + shrd eax, edx, 16 + mov sideDistX, eax + jmp check_step_y +step_x_pos: + mov stepX, 1 + mov eax, mapX + inc eax + shl eax, 16 + sub eax, playerX + imul deltaDistX + shrd eax, edx, 16 + mov sideDistX, eax + +check_step_y: + cmp rayDirY, 0 + jge step_y_pos + mov stepY, -1 + mov eax, playerY + mov edx, mapY + shl edx, 16 + sub eax, edx + imul deltaDistY + shrd eax, edx, 16 + mov sideDistY, eax + jmp dda_start +step_y_pos: + mov stepY, 1 + mov eax, mapY + inc eax + shl eax, 16 + sub eax, playerY + imul deltaDistY + shrd eax, edx, 16 + mov sideDistY, eax + +dda_start: + xor ecx, ecx +dda_step_loop: + inc ecx + cmp ecx, 64 + jge hit_wall + + mov eax, sideDistX + cmp eax, sideDistY + jge step_in_y + + mov eax, deltaDistX + add sideDistX, eax + mov eax, stepX + add mapX, eax + mov side, 0 + jmp check_tile + +step_in_y: + mov eax, deltaDistY + add sideDistY, eax + mov eax, stepY + add mapY, eax + mov side, 1 + +check_tile: + cmp mapX, 0 + jl hit_wall + cmp mapX, MAP_WIDTH + jge hit_wall + cmp mapY, 0 + jl hit_wall + cmp mapY, MAP_HEIGHT + jge hit_wall + + mov eax, mapY + shl eax, 5 + add eax, mapX + movzx eax, BYTE PTR [casinoMap + eax] + test eax, eax + jnz hit_wall + jmp dda_step_loop + +hit_wall: + cmp side, 0 + jne perp_y + mov eax, sideDistX + sub eax, deltaDistX + mov perpWallDist, eax + jmp perp_done +perp_y: + mov eax, sideDistY + sub eax, deltaDistY + mov perpWallDist, eax + +perp_done: + cmp perpWallDist, 2048 + jge @F + mov perpWallDist, 2048 +@@: + mov eax, col + mov edx, perpWallDist + mov [zBuffer + eax*4], edx + + mov eax, SCREEN_H + imul eax, FP_1 + cdq + idiv perpWallDist + mov lineH, eax + + mov eax, lineH + shr eax, 1 + mov ecx, HALF_H + sub ecx, eax + mov drawStart, ecx + + mov eax, lineH + shr eax, 1 + mov ecx, HALF_H + add ecx, eax + mov drawEnd, ecx + + cmp side, 0 + jne hit_side_y + mov eax, perpWallDist + imul rayDirY + shrd eax, edx, 16 + add eax, playerY + mov wallHit, eax + jmp calc_tex_x +hit_side_y: + mov eax, perpWallDist + imul rayDirX + shrd eax, edx, 16 + add eax, playerX + mov wallHit, eax + +calc_tex_x: + mov eax, wallHit + and eax, 0FFFFh + imul eax, 128 + shr eax, 16 + mov texX, eax + + cmp side, 0 + jne check_flip_y + cmp rayDirX, 0 + jle get_tex_id + mov eax, 127 + sub eax, texX + mov texX, eax + jmp get_tex_id +check_flip_y: + cmp rayDirY, 0 + jge get_tex_id + mov eax, 127 + sub eax, texX + mov texX, eax + +get_tex_id: + mov eax, mapY + shl eax, 5 + add eax, mapX + movzx eax, BYTE PTR [casinoMap + eax] + test eax, eax + jnz @F + mov eax, 1 +@@: + mov texId, eax + + mov edx, perpWallDist + shr edx, 12 + mov eax, 255 + sub eax, edx + cmp eax, 40 + jge @F + mov eax, 40 +@@: + cmp side, 1 + jne @F + imul eax, 180 + shr eax, 8 +@@: + mov shade, eax + + cmp drawStart, 0 + jge @F + mov drawStart, 0 +@@: + cmp drawEnd, SCREEN_H + jl @F + mov drawEnd, SCREEN_H - 1 +@@: + + mov edi, drawStart + mov esi, lineH + test esi, esi + jnz render_wall_pixels + mov esi, 1 + +render_wall_pixels: + cmp edi, drawEnd + jge next_wall_col + + mov eax, edi + shl eax, 1 + sub eax, SCREEN_H + add eax, lineH + imul eax, 128 + cdq + mov ecx, lineH + shl ecx, 1 + idiv ecx + and eax, 127 + + mov edx, eax + shl edx, 7 + add edx, texX + + mov eax, texId + imul eax, (128 * 128 * 4) + add eax, OFFSET texturesBuffer + mov eax, [eax + edx*4] + + mov ebx, shade + movzx ecx, al + imul ecx, ebx + shr ecx, 8 + push ecx + + movzx ecx, ah + imul ecx, ebx + shr ecx, 8 + shl ecx, 8 + + shr eax, 16 + movzx eax, al + imul eax, ebx + shr eax, 8 + shl eax, 16 + or eax, ecx + pop ecx + or eax, ecx + + mov ecx, edi + imul ecx, SCREEN_W + add ecx, col + mov [screenBuffer + ecx*4], eax + + inc edi + jmp render_wall_pixels + +next_wall_col: + inc col + jmp col_loop + +walls_done: + pop edi + pop esi + pop ebx + ret +RenderWalls ENDP + +; --- Render 3D Sprites with Depth Sorting --- +RenderSprites PROC + local sprIdx:DWORD + local relX:DWORD + local relY:DWORD + local invDet:DWORD + local transX:DWORD + local transY:DWORD + local sprScreenX:DWORD + local sprH:DWORD + local sprW:DWORD + local drawStartY:DWORD + local drawEndY:DWORD + local drawStartX:DWORD + local drawEndX:DWORD + local stripe:DWORD + local texX:DWORD + local texY:DWORD + local shade:DWORD + local texSlot:DWORD + + push ebx + push esi + push edi + + xor esi, esi +calc_dist_loop: + cmp esi, NUM_SPRITES + jge sort_sprites + mov eax, esi + imul eax, SIZEOF SpriteObject + + mov edx, [casinoSprites + eax].posX + sub edx, playerX + sar edx, 8 + imul edx, edx + mov ebx, edx + + mov edx, [casinoSprites + eax].posY + sub edx, playerY + sar edx, 8 + imul edx, edx + add ebx, edx + + mov [casinoSprites + eax].distSq, ebx + mov [sortedSprites + esi*4], esi + inc esi + jmp calc_dist_loop + +sort_sprites: + xor esi, esi +sort_outer: + cmp esi, NUM_SPRITES - 1 + jge draw_sorted_sprites + mov edi, esi + inc edi +sort_inner: + cmp edi, NUM_SPRITES + jge sort_next_outer + + mov eax, [sortedSprites + esi*4] + imul eax, SIZEOF SpriteObject + mov eax, [casinoSprites + eax].distSq + + mov ebx, [sortedSprites + edi*4] + imul ebx, SIZEOF SpriteObject + mov ebx, [casinoSprites + ebx].distSq + + cmp eax, ebx + jge sort_no_swap + + mov eax, [sortedSprites + esi*4] + mov edx, [sortedSprites + edi*4] + mov [sortedSprites + esi*4], edx + mov [sortedSprites + edi*4], eax + +sort_no_swap: + inc edi + jmp sort_inner +sort_next_outer: + inc esi + jmp sort_outer + +draw_sorted_sprites: + xor esi, esi +spr_draw_loop: + cmp esi, NUM_SPRITES + jge sprites_done + mov sprIdx, esi + + mov eax, [sortedSprites + esi*4] + imul eax, SIZEOF SpriteObject + mov edi, eax + + mov eax, [casinoSprites + edi].posX + sub eax, playerX + mov relX, eax + + mov eax, [casinoSprites + edi].posY + sub eax, playerY + mov relY, eax + + mov eax, playerPlaneX + imul playerDirY + shrd eax, edx, 16 + mov ebx, eax + + mov eax, playerPlaneY + imul playerDirX + shrd eax, edx, 16 + sub ebx, eax + test ebx, ebx + jnz @F + mov ebx, 1 +@@: + mov invDet, ebx + + mov eax, playerDirY + imul relX + shrd eax, edx, 16 + mov ebx, eax + mov eax, playerDirX + imul relY + shrd eax, edx, 16 + sub ebx, eax + mov eax, ebx + shl eax, 16 + cdq + idiv invDet + mov transX, eax + + mov eax, playerPlaneX + neg eax + imul relY + shrd eax, edx, 16 + mov ebx, eax + mov eax, playerPlaneY + imul relX + shrd eax, edx, 16 + add ebx, eax + mov eax, ebx + shl eax, 16 + cdq + idiv invDet + mov transY, eax + + cmp transY, 2048 + jle next_sprite_iter + + mov eax, HALF_W + mov edx, transX + shl edx, 8 + cdq + idiv transY + add eax, HALF_W + mov sprScreenX, eax + + mov eax, SCREEN_H + imul eax, FP_1 + cdq + idiv transY + mov sprH, eax + + mov drawStartY, HALF_H + mov eax, sprH + shr eax, 1 + sub drawStartY, eax + cmp drawStartY, 0 + jge @F + mov drawStartY, 0 +@@: + mov drawEndY, HALF_H + mov eax, sprH + shr eax, 1 + add drawEndY, eax + cmp drawEndY, SCREEN_H + jl @F + mov drawEndY, SCREEN_H - 1 +@@: + + mov eax, sprH + mov sprW, eax + + mov eax, sprScreenX + mov drawStartX, eax + mov eax, sprW + shr eax, 1 + sub drawStartX, eax + cmp drawStartX, 0 + jge @F + mov drawStartX, 0 +@@: + mov eax, sprScreenX + mov drawEndX, eax + mov eax, sprW + shr eax, 1 + add drawEndX, eax + cmp drawEndX, SCREEN_W + jl @F + mov drawEndX, SCREEN_W - 1 +@@: + + mov edx, transY + shr edx, 12 + mov eax, 255 + sub eax, edx + cmp eax, 40 + jge @F + mov eax, 40 +@@: + mov shade, eax + + mov eax, [casinoSprites + edi].baseTexId + add eax, [casinoSprites + edi].curFrame + mov texSlot, eax + + mov eax, [casinoSprites + edi].frameCount + cmp eax, 1 + jle skip_anim + mov eax, [casinoSprites + edi].animTimer + inc eax + mov [casinoSprites + edi].animTimer, eax + cmp eax, [casinoSprites + edi].animSpeed + jl skip_anim + mov [casinoSprites + edi].animTimer, 0 + mov eax, [casinoSprites + edi].curFrame + inc eax + cmp eax, [casinoSprites + edi].frameCount + jl @F + xor eax, eax +@@: + mov [casinoSprites + edi].curFrame, eax +skip_anim: + + mov ecx, drawStartX + mov stripe, ecx +stripe_loop: + mov ecx, stripe + cmp ecx, drawEndX + jge next_sprite_iter + + mov eax, ecx + shl eax, 1 + sub eax, sprScreenX + shl eax, 1 + add eax, sprW + imul eax, 128 + cdq + mov ebx, sprW + shl ebx, 1 + test ebx, ebx + jnz @F + mov ebx, 1 +@@: + idiv ebx + mov texX, eax + and texX, 127 + + cmp transY, 0 + jle next_stripe + mov eax, stripe + cmp eax, 0 + jl next_stripe + cmp eax, SCREEN_W + jge next_stripe + mov edx, [zBuffer + eax*4] + cmp transY, edx + jge next_stripe + + mov edi, drawStartY +spr_pixel_loop: + cmp edi, drawEndY + jge next_stripe + + mov eax, edi + shl eax, 1 + sub eax, SCREEN_H + add eax, sprH + imul eax, 128 + cdq + mov ebx, sprH + shl ebx, 1 + test ebx, ebx + jnz @F + mov ebx, 1 +@@: + idiv ebx + mov texY, eax + and texY, 127 + + mov edx, texY + shl edx, 7 + add edx, texX + + mov eax, texSlot + imul eax, (128 * 128 * 4) + add eax, OFFSET texturesBuffer + mov eax, [eax + edx*4] + + ; Alpha/Chroma Key Check (Magenta 0x00FF00FF and transparent black) + cmp eax, 00FF00FFh + je next_spr_y + test eax, eax + jz next_spr_y + + mov ebx, shade + movzx ecx, al + imul ecx, ebx + shr ecx, 8 + push ecx + + movzx ecx, ah + imul ecx, ebx + shr ecx, 8 + shl ecx, 8 + + shr eax, 16 + movzx eax, al + imul eax, ebx + shr eax, 8 + shl eax, 16 + or eax, ecx + pop ecx + or eax, ecx + + mov ecx, edi + imul ecx, SCREEN_W + add ecx, stripe + mov [screenBuffer + ecx*4], eax + +next_spr_y: + inc edi + jmp spr_pixel_loop + +next_stripe: + inc stripe + jmp stripe_loop + +next_sprite_iter: + mov esi, sprIdx + inc esi + jmp spr_draw_loop + +sprites_done: + pop edi + pop esi + pop ebx + ret +RenderSprites ENDP + +; --- Render HUD (Russian CP1251) --- +RenderHUD PROC uses ebx esi edi + ; Top Bar + invoke DrawBox, 0, 0, 320, 16, 0014191Dh + invoke DrawString8x8, 8, 4, OFFSET textBankHUD, 00D8BC6Ah + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 56, 4, OFFSET hudNumBuffer, 00FFFFFFh + + ; Player Name + invoke DrawString8x8, 128, 4, OFFSET textPlayerHUD, 00D8BC6Ah + invoke DrawString8x8, 172, 4, OFFSET saveFileName, 0000D7FFh + + ; Screen Keys + invoke DrawString8x8, 252, 4, OFFSET textWindowKeysHUD, 00A8B6BBh + + ; Bottom Control Bar + invoke DrawBox, 0, 226, 320, 14, 0014191Dh + invoke DrawString8x8, 8, 230, OFFSET textControlsHUD, 00A8B6BBh + + ; Center Crosshair Dot + invoke DrawBox, 159, 118, 2, 5, 00E7DFC8h + invoke DrawBox, 157, 120, 6, 1, 00E7DFC8h + + ; Target Interaction Prompt (when close to a table/machine) + cmp interactPromptPtr, 0 + je @F + invoke DrawBoxBorder, 4, 196, 312, 22, 0014191Dh, 00D8BC6Ah, 1 + invoke DrawString8x8, 10, 203, interactPromptPtr, 00F5E2B0h +@@: + ; Flash Notification Message + cmp flashTimer, 0 + je hud_finished + dec flashTimer + invoke DrawBox, 4, 22, 312, 16, 0014191Dh + invoke DrawString8x8, 10, 26, OFFSET flashMessage, 00FFFFFFh +hud_finished: + ret +RenderHUD ENDP + +; --- Render Radar Minimap --- +RenderMinimap PROC uses ebx esi edi + local radarX:DWORD + local radarY:DWORD + local radarSize:DWORD + + mov radarX, 320 - 52 + mov radarY, 20 + mov radarSize, 48 + + invoke DrawBoxBorder, radarX, radarY, radarSize, radarSize, 00101510h, 0000D7FFh, 1 + + ; Draw all 28 Sprites on radar + xor esi, esi +radar_spr_loop: + cmp esi, NUM_SPRITES + jge draw_player_radar + mov eax, esi + imul eax, SIZEOF SpriteObject + mov eax, [casinoSprites + eax].posX + sar eax, 16 + imul eax, radarSize + shr eax, 5 + add eax, radarX + mov ebx, eax + + mov eax, esi + imul eax, SIZEOF SpriteObject + mov eax, [casinoSprites + eax].posY + sar eax, 16 + imul eax, radarSize + shr eax, 5 + add eax, radarY + + invoke DrawPixel, ebx, eax, 00FFAA00h + inc esi + jmp radar_spr_loop + +draw_player_radar: + mov eax, playerX + sar eax, 16 + imul eax, radarSize + shr eax, 5 + add eax, radarX + mov ebx, eax + + mov eax, playerY + sar eax, 16 + imul eax, radarSize + shr eax, 5 + add eax, radarY + + invoke DrawPixel, ebx, eax, 0000FF00h + ret +RenderMinimap ENDP + +; --- Player Movement & Input --- +HandlePlayerInput PROC uses ebx esi edi + local nextX:DWORD + local nextY:DWORD + local speed:DWORD + + mov speed, 131072 + mov eax, deltaTime3D + imul eax, speed + mov ecx, 16 + cdq + idiv ecx + mov speed, eax + + ; Turning A / D + xor eax, eax + cmp keys3D[41h], 0 ; A + jne @F + cmp keys3D[25h], 0 ; Left Arrow + je check_turn_right +@@: + mov eax, 6 + sub playerAngle, eax + and playerAngle, 511 + jmp input_forward + +check_turn_right: + cmp keys3D[44h], 0 ; D + jne @F + cmp keys3D[27h], 0 ; Right Arrow + je input_forward +@@: + mov eax, 6 + add playerAngle, eax + and playerAngle, 511 + +input_forward: + call UpdateCamera3D + xor edi, edi + cmp keys3D[57h], 0 ; W + jne input_go_forward + cmp keys3D[26h], 0 ; Up Arrow + je input_back +input_go_forward: + inc edi +input_back: + cmp keys3D[53h], 0 ; S + jne input_go_back + cmp keys3D[28h], 0 ; Down Arrow + je input_move +input_go_back: + dec edi +input_move: + test edi, edi + jz input_action + imul edi, speed + mov eax, playerDirX + imul edi + shrd eax, edx, 16 + add eax, playerX + mov nextX, eax + mov eax, playerDirY + imul edi + shrd eax, edx, 16 + add eax, playerY + mov nextY, eax + + invoke CanWalk3D, nextX, playerY + test eax, eax + jz @F + mov eax, nextX + mov playerX, eax +@@: + invoke CanWalk3D, playerX, nextY + test eax, eax + jz input_action + mov eax, nextY + mov playerY, eax + +input_action: + ; Key E (0x45) or Space (0x20) + invoke Pressed3D, 45h + test eax, eax + jnz do_action + invoke Pressed3D, 20h + test eax, eax + jz @F +do_action: + call Trigger3DInteraction +@@: + ret +HandlePlayerInput ENDP + +; --- Check Nearest Interactive Object --- +CheckInteractions PROC uses ebx esi edi + local nearest:DWORD + mov nearest, 360000 ; Detection radius squared (~2.4 tiles) + mov interactTargetId, 0 + mov interactPromptPtr, 0 + xor esi, esi +interaction_scan: + cmp esi, NUM_SPRITES + jge interaction_done + mov eax, esi + imul eax, SIZEOF SpriteObject + mov edi, eax + + cmp [casinoSprites+edi].interactId, 0 + je interaction_next + mov eax, [casinoSprites+edi].posX + sub eax, playerX + sar eax, 8 + mov ebx, eax + imul ebx, ebx + + mov eax, [casinoSprites+edi].posY + sub eax, playerY + sar eax, 8 + imul eax, eax + add ebx, eax + + cmp ebx, nearest + jae interaction_next + mov nearest, ebx + mov eax, [casinoSprites+edi].interactId + mov interactTargetId, eax + mov eax, [casinoSprites+edi].promptPtr + mov interactPromptPtr, eax +interaction_next: + inc esi + jmp interaction_scan +interaction_done: + ret +CheckInteractions ENDP + +; --- Seamless Bridge: Launch Console Game from 3D --- +RunConsoleGameFrom3D PROC uses ebx esi edi gameProc:DWORD, gameId:DWORD + mov eax, gameId + mov currentGameId, eax + + ; Hide 3D window + cmp h3DWnd, 0 + je @F + invoke ShowWindow, h3DWnd, SW_HIDE +@@: + + ; Show and maximize console window + cmp hCasinoConsole, 0 + je run_call_target + invoke ShowWindow, hCasinoConsole, SW_MAXIMIZE + invoke SetForegroundWindow, hCasinoConsole + +run_call_target: + ; Run the target game procedure + mov eax, gameProc + call eax + + ; Save progress + call SaveGame + + ; Hide console window again + cmp hCasinoConsole, 0 + je restore_3d_view + invoke ShowWindow, hCasinoConsole, SW_HIDE + +restore_3d_view: + ; Restore 3D window + cmp h3DWnd, 0 + je flush_input_keys + invoke ShowWindow, h3DWnd, SW_SHOW + invoke SetForegroundWindow, h3DWnd + +flush_input_keys: + lea edi, keys3D + xor eax, eax + mov ecx, 64 + rep stosd + + lea edi, pressedKeys3D + xor eax, eax + mov ecx, 64 + rep stosd + + invoke CopyString3D, OFFSET msgGameReturned, OFFSET flashMessage + mov flashTimer, 120 + ret +RunConsoleGameFrom3D ENDP + +; --- Trigger Interaction based on Target ID --- +Trigger3DInteraction PROC uses ebx esi edi + mov eax, interactTargetId + test eax, eax + jz trigger_exit + + ; 1: Blackjack / 21 + cmp eax, 1 + jne @F + invoke RunConsoleGameFrom3D, OFFSET Game21, 1 + ret +@@: + ; 2: Poker (Texas Hold'em) + cmp eax, 2 + jne @F + invoke RunConsoleGameFrom3D, OFFSET GamePoker, 2 + ret +@@: + ; 3: Slots 777 (Classic) + cmp eax, 3 + jne @F + call PlaySlotIntroSound + invoke RunConsoleGameFrom3D, OFFSET GameClassicSlot, 9 + ret +@@: + ; 4: Slots CloverPit (5x3) + cmp eax, 4 + jne @F + call PlaySlotIntroSound + invoke RunConsoleGameFrom3D, OFFSET GameSlot, 3 + ret +@@: + ; 5: Casino European Roulette + cmp eax, 5 + jne @F + invoke RunConsoleGameFrom3D, OFFSET GameCasinoRoulette, 8 + ret +@@: + ; 6: Classic Roulette + cmp eax, 6 + jne @F + invoke RunConsoleGameFrom3D, OFFSET GameRoulette, 4 + ret +@@: + ; 7: Durak (Дурак) + cmp eax, 7 + jne @F + invoke RunConsoleGameFrom3D, OFFSET GameDurak, 10 + ret +@@: + ; 8: Buckshot Roulette + cmp eax, 8 + jne @F + invoke RunConsoleGameFrom3D, OFFSET GameBuckshot, 0 + ret +@@: + ; 9: Russian Roulette (Подпольная) + cmp eax, 9 + jne @F + invoke RunConsoleGameFrom3D, OFFSET GameRoulette, 4 + ret +@@: + ; 10: Skulls and Cups (Черепа) + cmp eax, 10 + jne @F + invoke RunConsoleGameFrom3D, OFFSET GameSkulls, 5 + ret +@@: + ; 11: Dice (Кости) + cmp eax, 11 + jne @F + invoke RunConsoleGameFrom3D, OFFSET GameDice, 7 + ret +@@: + ; 12: Coin (Монетка) + cmp eax, 12 + jne @F + invoke RunConsoleGameFrom3D, OFFSET GameCoin, 6 + ret +@@: + ; 13: DBD Skill Check (Крюк) + cmp eax, 13 + jne @F + mov tournamentMode, 0 + invoke RunConsoleGameFrom3D, OFFSET GameSkillCheck, 11 + ret +@@: + ; 14: Umamusume Derby (Скачки) + cmp eax, 14 + jne @F + invoke RunConsoleGameFrom3D, OFFSET GameUmamusume, 0 + ret +@@: + ; 15: Hell Tower / Floor 666 (Адская Башня) + cmp eax, 15 + jne @F + invoke RunConsoleGameFrom3D, OFFSET GameTournament, 0 + ret +@@: + ; 16: Online Casino (Radmin VPN) + cmp eax, 16 + jne @F + invoke RunConsoleGameFrom3D, OFFSET GameOnlineCasino, 0 + ret +@@: + ; 17: VIP Boutique / Shop (Магазин рубашек и талисманов) + cmp eax, 17 + jne @F + invoke RunConsoleGameFrom3D, OFFSET GameShop, 0 + ret +@@: + ; 18: ATM / Cashier (Кассир / Банкомат) + cmp eax, 18 + jne @F + invoke RunConsoleGameFrom3D, OFFSET AccountMenu, 0 + ret +@@: + ; 19: Hall of Fame / Achievements (Достижения) + cmp eax, 19 + jne @F + invoke RunConsoleGameFrom3D, OFFSET GameAchievements, 0 + ret +@@: + ; 20: Stats Board (Табло статистики) + cmp eax, 20 + jne @F + invoke RunConsoleGameFrom3D, OFFSET GameStatsByGame, 0 + ret +@@: + ; 21: Daily Tasks (Ежедневные задания) + cmp eax, 21 + jne @F + invoke RunConsoleGameFrom3D, OFFSET GameDailyTasks, 0 + ret +@@: + ; 22: Settings (Настройки) + cmp eax, 22 + jne @F + invoke RunConsoleGameFrom3D, OFFSET GameSettings, 0 + ret +@@: + ; 23: Training Mode (Тренировка) + cmp eax, 23 + jne @F + invoke RunConsoleGameFrom3D, OFFSET GameTraining, 0 + ret +@@: + ; 24: Observer Mode (Наблюдатель ИИ) + cmp eax, 24 + jne @F + invoke RunConsoleGameFrom3D, OFFSET GameObserver, 0 + ret +@@: + ; 25: Cabaret Dancers (Чаевые $100) + cmp eax, 25 + jne trigger_exit + cmp bankroll, 100 + jl dancer_no_cash + sub bankroll, 100 + inc dancerLuckBuff + invoke CopyString3D, OFFSET msgDancerTipped, OFFSET flashMessage + mov flashTimer, 120 + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + call SaveGame + ret +dancer_no_cash: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + ret + +trigger_exit: + ret +Trigger3DInteraction ENDP + +; --- Initialize 3D Engine & All 28 Sprites --- +Init3DEngine PROC + push ebx + push esi + push edi + + call Create3DWindow + test eax, eax + jz init_failed + call LoadTextures3D + test eax, eax + jz init_failed + + ; --- 0: VIP Dancer 1 (Stage Left) --- + mov casinoSprites[0*SIZEOF SpriteObject].posX, (13 * FP_1 + FP_HALF) + mov casinoSprites[0*SIZEOF SpriteObject].posY, (4 * FP_1) + mov casinoSprites[0*SIZEOF SpriteObject].baseTexId, 10 + mov casinoSprites[0*SIZEOF SpriteObject].frameCount, 12 + mov casinoSprites[0*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[0*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[0*SIZEOF SpriteObject].animSpeed, 5 + mov casinoSprites[0*SIZEOF SpriteObject].interactId, 25 + mov casinoSprites[0*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer1 + + ; --- 1: VIP Dancer 2 (Center Stage) --- + mov casinoSprites[1*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) + mov casinoSprites[1*SIZEOF SpriteObject].posY, (3 * FP_1 + FP_HALF) + mov casinoSprites[1*SIZEOF SpriteObject].baseTexId, 10 + mov casinoSprites[1*SIZEOF SpriteObject].frameCount, 12 + mov casinoSprites[1*SIZEOF SpriteObject].curFrame, 2 + mov casinoSprites[1*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[1*SIZEOF SpriteObject].animSpeed, 5 + mov casinoSprites[1*SIZEOF SpriteObject].interactId, 25 + mov casinoSprites[1*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer2 + + ; --- 2: VIP Dancer 3 (Stage Right) --- + mov casinoSprites[2*SIZEOF SpriteObject].posX, (19 * FP_1 + FP_HALF) + mov casinoSprites[2*SIZEOF SpriteObject].posY, (4 * FP_1) + mov casinoSprites[2*SIZEOF SpriteObject].baseTexId, 10 + mov casinoSprites[2*SIZEOF SpriteObject].frameCount, 12 + mov casinoSprites[2*SIZEOF SpriteObject].curFrame, 1 + mov casinoSprites[2*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[2*SIZEOF SpriteObject].animSpeed, 5 + mov casinoSprites[2*SIZEOF SpriteObject].interactId, 25 + mov casinoSprites[2*SIZEOF SpriteObject].promptPtr, OFFSET promptDancer3 + + ; --- 3: Blackjack / 21 --- + mov casinoSprites[3*SIZEOF SpriteObject].posX, (12 * FP_1 + FP_HALF) + mov casinoSprites[3*SIZEOF SpriteObject].posY, (9 * FP_1) + mov casinoSprites[3*SIZEOF SpriteObject].baseTexId, 31 + mov casinoSprites[3*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[3*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[3*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[3*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[3*SIZEOF SpriteObject].interactId, 1 + mov casinoSprites[3*SIZEOF SpriteObject].promptPtr, OFFSET promptBlackjack + + ; --- 4: Poker (Texas Hold'em) --- + mov casinoSprites[4*SIZEOF SpriteObject].posX, (19 * FP_1 + FP_HALF) + mov casinoSprites[4*SIZEOF SpriteObject].posY, (9 * FP_1) + mov casinoSprites[4*SIZEOF SpriteObject].baseTexId, 35 + mov casinoSprites[4*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[4*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[4*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[4*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[4*SIZEOF SpriteObject].interactId, 2 + mov casinoSprites[4*SIZEOF SpriteObject].promptPtr, OFFSET promptPoker + + ; --- 5: Casino European Roulette --- + mov casinoSprites[5*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) + mov casinoSprites[5*SIZEOF SpriteObject].posY, (9 * FP_1) + mov casinoSprites[5*SIZEOF SpriteObject].baseTexId, 32 + mov casinoSprites[5*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[5*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[5*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[5*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[5*SIZEOF SpriteObject].interactId, 5 + mov casinoSprites[5*SIZEOF SpriteObject].promptPtr, OFFSET promptCasinoRoul + + ; --- 6: Classic Roulette --- + mov casinoSprites[6*SIZEOF SpriteObject].posX, (16 * FP_1 + FP_HALF) + mov casinoSprites[6*SIZEOF SpriteObject].posY, (12 * FP_1) + mov casinoSprites[6*SIZEOF SpriteObject].baseTexId, 32 + mov casinoSprites[6*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[6*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[6*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[6*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[6*SIZEOF SpriteObject].interactId, 6 + mov casinoSprites[6*SIZEOF SpriteObject].promptPtr, OFFSET promptRoulette + + ; --- 7: Slots 777 (West Arcade) --- + mov casinoSprites[7*SIZEOF SpriteObject].posX, (5 * FP_1) + mov casinoSprites[7*SIZEOF SpriteObject].posY, (7 * FP_1) + mov casinoSprites[7*SIZEOF SpriteObject].baseTexId, 24 + mov casinoSprites[7*SIZEOF SpriteObject].frameCount, 3 + mov casinoSprites[7*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[7*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[7*SIZEOF SpriteObject].animSpeed, 6 + mov casinoSprites[7*SIZEOF SpriteObject].interactId, 3 + mov casinoSprites[7*SIZEOF SpriteObject].promptPtr, OFFSET promptSlot777 + + ; --- 8: Slots CloverPit (5x3) --- + mov casinoSprites[8*SIZEOF SpriteObject].posX, (5 * FP_1) + mov casinoSprites[8*SIZEOF SpriteObject].posY, (10 * FP_1) + mov casinoSprites[8*SIZEOF SpriteObject].baseTexId, 24 + mov casinoSprites[8*SIZEOF SpriteObject].frameCount, 3 + mov casinoSprites[8*SIZEOF SpriteObject].curFrame, 1 + mov casinoSprites[8*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[8*SIZEOF SpriteObject].animSpeed, 6 + mov casinoSprites[8*SIZEOF SpriteObject].interactId, 4 + mov casinoSprites[8*SIZEOF SpriteObject].promptPtr, OFFSET promptSlotClover + + ; --- 9: Classic Jackpot Slot --- + mov casinoSprites[9*SIZEOF SpriteObject].posX, (5 * FP_1) + mov casinoSprites[9*SIZEOF SpriteObject].posY, (13 * FP_1) + mov casinoSprites[9*SIZEOF SpriteObject].baseTexId, 24 + mov casinoSprites[9*SIZEOF SpriteObject].frameCount, 3 + mov casinoSprites[9*SIZEOF SpriteObject].curFrame, 2 + mov casinoSprites[9*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[9*SIZEOF SpriteObject].animSpeed, 6 + mov casinoSprites[9*SIZEOF SpriteObject].interactId, 3 + mov casinoSprites[9*SIZEOF SpriteObject].promptPtr, OFFSET promptSlotClassic + + ; --- 10: Umamusume Derby Arcade --- + mov casinoSprites[10*SIZEOF SpriteObject].posX, (5 * FP_1) + mov casinoSprites[10*SIZEOF SpriteObject].posY, (16 * FP_1) + mov casinoSprites[10*SIZEOF SpriteObject].baseTexId, 36 + mov casinoSprites[10*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[10*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[10*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[10*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[10*SIZEOF SpriteObject].interactId, 14 + mov casinoSprites[10*SIZEOF SpriteObject].promptPtr, OFFSET promptUmamusume + + ; --- 11: DBD Skillcheck Arcade --- + mov casinoSprites[11*SIZEOF SpriteObject].posX, (5 * FP_1) + mov casinoSprites[11*SIZEOF SpriteObject].posY, (19 * FP_1) + mov casinoSprites[11*SIZEOF SpriteObject].baseTexId, 36 + mov casinoSprites[11*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[11*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[11*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[11*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[11*SIZEOF SpriteObject].interactId, 13 + mov casinoSprites[11*SIZEOF SpriteObject].promptPtr, OFFSET promptSkillCheck + + ; --- 12: Cashier / ATM (East Wing) --- + mov casinoSprites[12*SIZEOF SpriteObject].posX, (27 * FP_1) + mov casinoSprites[12*SIZEOF SpriteObject].posY, (7 * FP_1) + mov casinoSprites[12*SIZEOF SpriteObject].baseTexId, 33 + mov casinoSprites[12*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[12*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[12*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[12*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[12*SIZEOF SpriteObject].interactId, 18 + mov casinoSprites[12*SIZEOF SpriteObject].promptPtr, OFFSET promptATM + + ; --- 13: VIP Boutique / Bar Counter --- + mov casinoSprites[13*SIZEOF SpriteObject].posX, (27 * FP_1) + mov casinoSprites[13*SIZEOF SpriteObject].posY, (10 * FP_1) + mov casinoSprites[13*SIZEOF SpriteObject].baseTexId, 30 + mov casinoSprites[13*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[13*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[13*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[13*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[13*SIZEOF SpriteObject].interactId, 17 + mov casinoSprites[13*SIZEOF SpriteObject].promptPtr, OFFSET promptShop + + ; --- 14: Online Casino Terminal --- + mov casinoSprites[14*SIZEOF SpriteObject].posX, (27 * FP_1) + mov casinoSprites[14*SIZEOF SpriteObject].posY, (13 * FP_1) + mov casinoSprites[14*SIZEOF SpriteObject].baseTexId, 36 + mov casinoSprites[14*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[14*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[14*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[14*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[14*SIZEOF SpriteObject].interactId, 16 + mov casinoSprites[14*SIZEOF SpriteObject].promptPtr, OFFSET promptOnline + + ; --- 15: Hall of Fame / Achievements --- + mov casinoSprites[15*SIZEOF SpriteObject].posX, (27 * FP_1) + mov casinoSprites[15*SIZEOF SpriteObject].posY, (16 * FP_1) + mov casinoSprites[15*SIZEOF SpriteObject].baseTexId, 36 + mov casinoSprites[15*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[15*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[15*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[15*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[15*SIZEOF SpriteObject].interactId, 19 + mov casinoSprites[15*SIZEOF SpriteObject].promptPtr, OFFSET promptAchieve + + ; --- 16: Stats Board --- + mov casinoSprites[16*SIZEOF SpriteObject].posX, (27 * FP_1) + mov casinoSprites[16*SIZEOF SpriteObject].posY, (19 * FP_1) + mov casinoSprites[16*SIZEOF SpriteObject].baseTexId, 36 + mov casinoSprites[16*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[16*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[16*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[16*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[16*SIZEOF SpriteObject].interactId, 20 + mov casinoSprites[16*SIZEOF SpriteObject].promptPtr, OFFSET promptStats + + ; --- 17: Durak Card Table (South Backroom) --- + mov casinoSprites[17*SIZEOF SpriteObject].posX, (12 * FP_1) + mov casinoSprites[17*SIZEOF SpriteObject].posY, (23 * FP_1) + mov casinoSprites[17*SIZEOF SpriteObject].baseTexId, 37 + mov casinoSprites[17*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[17*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[17*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[17*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[17*SIZEOF SpriteObject].interactId, 7 + mov casinoSprites[17*SIZEOF SpriteObject].promptPtr, OFFSET promptDurak + + ; --- 18: Buckshot Roulette Table --- + mov casinoSprites[18*SIZEOF SpriteObject].posX, (16 * FP_1) + mov casinoSprites[18*SIZEOF SpriteObject].posY, (23 * FP_1) + mov casinoSprites[18*SIZEOF SpriteObject].baseTexId, 34 + mov casinoSprites[18*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[18*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[18*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[18*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[18*SIZEOF SpriteObject].interactId, 8 + mov casinoSprites[18*SIZEOF SpriteObject].promptPtr, OFFSET promptBuckshot + + ; --- 19: Russian Roulette Table --- + mov casinoSprites[19*SIZEOF SpriteObject].posX, (20 * FP_1) + mov casinoSprites[19*SIZEOF SpriteObject].posY, (23 * FP_1) + mov casinoSprites[19*SIZEOF SpriteObject].baseTexId, 34 + mov casinoSprites[19*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[19*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[19*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[19*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[19*SIZEOF SpriteObject].interactId, 9 + mov casinoSprites[19*SIZEOF SpriteObject].promptPtr, OFFSET promptRussRoul + + ; --- 20: Craps / Dice Table --- + mov casinoSprites[20*SIZEOF SpriteObject].posX, (12 * FP_1) + mov casinoSprites[20*SIZEOF SpriteObject].posY, (26 * FP_1) + mov casinoSprites[20*SIZEOF SpriteObject].baseTexId, 38 + mov casinoSprites[20*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[20*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[20*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[20*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[20*SIZEOF SpriteObject].interactId, 11 + mov casinoSprites[20*SIZEOF SpriteObject].promptPtr, OFFSET promptDice + + ; --- 21: Skulls and Cups Table --- + mov casinoSprites[21*SIZEOF SpriteObject].posX, (16 * FP_1) + mov casinoSprites[21*SIZEOF SpriteObject].posY, (26 * FP_1) + mov casinoSprites[21*SIZEOF SpriteObject].baseTexId, 38 + mov casinoSprites[21*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[21*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[21*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[21*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[21*SIZEOF SpriteObject].interactId, 10 + mov casinoSprites[21*SIZEOF SpriteObject].promptPtr, OFFSET promptSkulls + + ; --- 22: Coin Flip Table --- + mov casinoSprites[22*SIZEOF SpriteObject].posX, (20 * FP_1) + mov casinoSprites[22*SIZEOF SpriteObject].posY, (26 * FP_1) + mov casinoSprites[22*SIZEOF SpriteObject].baseTexId, 38 + mov casinoSprites[22*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[22*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[22*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[22*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[22*SIZEOF SpriteObject].interactId, 12 + mov casinoSprites[22*SIZEOF SpriteObject].promptPtr, OFFSET promptCoin + + ; --- 23: Training Table --- + mov casinoSprites[23*SIZEOF SpriteObject].posX, (10 * FP_1) + mov casinoSprites[23*SIZEOF SpriteObject].posY, (14 * FP_1) + mov casinoSprites[23*SIZEOF SpriteObject].baseTexId, 37 + mov casinoSprites[23*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[23*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[23*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[23*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[23*SIZEOF SpriteObject].interactId, 23 + mov casinoSprites[23*SIZEOF SpriteObject].promptPtr, OFFSET promptTraining + + ; --- 24: Observer Mode AI vs AI --- + mov casinoSprites[24*SIZEOF SpriteObject].posX, (22 * FP_1) + mov casinoSprites[24*SIZEOF SpriteObject].posY, (14 * FP_1) + mov casinoSprites[24*SIZEOF SpriteObject].baseTexId, 37 + mov casinoSprites[24*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[24*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[24*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[24*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[24*SIZEOF SpriteObject].interactId, 24 + mov casinoSprites[24*SIZEOF SpriteObject].promptPtr, OFFSET promptObserver + + ; --- 25: Daily Tasks Board --- + mov casinoSprites[25*SIZEOF SpriteObject].posX, (27 * FP_1) + mov casinoSprites[25*SIZEOF SpriteObject].posY, (22 * FP_1) + mov casinoSprites[25*SIZEOF SpriteObject].baseTexId, 36 + mov casinoSprites[25*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[25*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[25*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[25*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[25*SIZEOF SpriteObject].interactId, 21 + mov casinoSprites[25*SIZEOF SpriteObject].promptPtr, OFFSET promptDaily + + ; --- 26: Settings Terminal --- + mov casinoSprites[26*SIZEOF SpriteObject].posX, (27 * FP_1) + mov casinoSprites[26*SIZEOF SpriteObject].posY, (25 * FP_1) + mov casinoSprites[26*SIZEOF SpriteObject].baseTexId, 36 + mov casinoSprites[26*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[26*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[26*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[26*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[26*SIZEOF SpriteObject].interactId, 22 + mov casinoSprites[26*SIZEOF SpriteObject].promptPtr, OFFSET promptSettings + + ; --- 27: Demon Portal: Hell Tower Floor 666 --- + mov casinoSprites[27*SIZEOF SpriteObject].posX, (16 * FP_1) + mov casinoSprites[27*SIZEOF SpriteObject].posY, (29 * FP_1) + mov casinoSprites[27*SIZEOF SpriteObject].baseTexId, 39 + mov casinoSprites[27*SIZEOF SpriteObject].frameCount, 1 + mov casinoSprites[27*SIZEOF SpriteObject].curFrame, 0 + mov casinoSprites[27*SIZEOF SpriteObject].animTimer, 0 + mov casinoSprites[27*SIZEOF SpriteObject].animSpeed, 0 + mov casinoSprites[27*SIZEOF SpriteObject].interactId, 15 + mov casinoSprites[27*SIZEOF SpriteObject].promptPtr, OFFSET promptHell + + mov eax, 1 + jmp init_return + +init_failed: + xor eax, eax + +init_return: + pop edi + pop esi + pop ebx + ret +Init3DEngine ENDP + +; --- Main 3D Engine Loop --- +StartCasino3D PROC uses ebx esi edi + call Init3DEngine + test eax, eax + jz engine_shutdown + + invoke GetTickCount + mov rngSeed3D, eax + mov previousTick3D, eax + +engine_loop: + invoke PeekMessageA, OFFSET msg3D, 0, 0, 0, PM_REMOVE + test eax, eax + jz dispatch_frame + cmp msg3D.message, WM_QUIT + je engine_shutdown + invoke TranslateMessage, OFFSET msg3D + invoke DispatchMessageA, OFFSET msg3D + jmp engine_loop + +dispatch_frame: + invoke GetTickCount + mov frameStart3D, eax + sub eax, previousTick3D + cmp eax, 50 + jbe @F + mov eax, 50 +@@: + mov deltaTime3D, eax + mov eax, frameStart3D + mov previousTick3D, eax + + invoke GetForegroundWindow + cmp eax, h3DWnd + jne engine_idle + invoke IsIconic, h3DWnd + test eax, eax + jnz engine_idle + + ; F11: Fullscreen Toggle + invoke Pressed3D, 7Ah + test eax, eax + jz @F + call ToggleFullscreen3D +@@: + ; ESC: Pause Menu Toggle + invoke Pressed3D, 1Bh + test eax, eax + jz engine_tick + xor paused3D, 1 + +engine_tick: + cmp paused3D, 0 + jne draw_pause + + mov eax, deltaTime3D + add animationClock3D, eax + + call UpdateCamera3D + call CheckInteractions + call HandlePlayerInput + call UpdateCamera3D + call RenderCeilingAndFloor + call RenderWalls + call RenderSprites + call RenderHUD + call RenderMinimap + jmp present_frame + +draw_pause: + ; Dim overlay behind pause box + invoke DrawBoxBorder, 40, 50, 240, 140, 00151C21h, 00D8BC6Ah, 2 + invoke DrawString8x8, 64, 70, OFFSET textPauseTitle, 00FFFFFFh + invoke DrawString8x8, 56, 100, OFFSET textPauseResume, 00D8BC6Ah + invoke DrawString8x8, 56, 125, OFFSET textPauseMenu, 0000D7FFh + invoke DrawString8x8, 56, 150, OFFSET textPauseQuit, 00BBBBBBh + + ; Key M: Classic Console Menu + invoke Pressed3D, 4Dh + test eax, eax + jz check_quit_key + mov paused3D, 0 + invoke RunConsoleGameFrom3D, OFFSET MainMenu, 0 + jmp present_frame + +check_quit_key: + ; Key Q: Save and Quit + invoke Pressed3D, 51h + test eax, eax + jnz engine_shutdown + +present_frame: + call Present3D + lea edi, pressedKeys3D + xor eax, eax + mov ecx, 64 + rep stosd + + invoke GetTickCount + sub eax, frameStart3D + cmp eax, 16 + jae engine_loop + mov ecx, 16 + sub ecx, eax + invoke Sleep, ecx + jmp engine_loop + +engine_idle: + invoke Sleep, 50 + jmp engine_loop + +engine_shutdown: + call SaveGame + cmp h3DDC, 0 + je @F + invoke ReleaseDC, h3DWnd, h3DDC + mov h3DDC, 0 +@@: + cmp h3DWnd, 0 + je @F + invoke DestroyWindow, h3DWnd + mov h3DWnd, 0 +@@: + cmp hCasinoConsole, 0 + je @F + invoke ShowWindow, hCasinoConsole, SW_SHOW + invoke SetForegroundWindow, hCasinoConsole +@@: + ret +StartCasino3D ENDP + +include src_graphics\platform_code.inc +''' + +with open('d:/покер/casino3d.inc', 'wb') as f: + f.write(content.strip().encode('cp1251')) + +print('Successfully generated unified casino3d.inc in CP1251!') diff --git a/tools/make_casino3d.py b/tools/make_casino3d.py new file mode 100644 index 0000000..4c0184d --- /dev/null +++ b/tools/make_casino3d.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# Build complete casino3d.inc in CP1251 + +parts = [] diff --git a/tools/patch_poker_asm.py b/tools/patch_poker_asm.py new file mode 100644 index 0000000..27c6c00 --- /dev/null +++ b/tools/patch_poker_asm.py @@ -0,0 +1,91 @@ +# -*- coding: utf-8 -*- +with open('d:/покер/poker.asm', 'r', encoding='cp1251') as f: + text = f.read() + +# 1. Add defaultPlayerSave +if 'defaultPlayerSave' not in text: + target = 'saveFileName db 64 dup(0)' + replacement = 'saveFileName db 64 dup(0)\r\ndefaultPlayerSave db "Player.dat",0' + text = text.replace(target, replacement, 1) + +# 2. Remove include casino3d.inc from old position +old_inc = 'include casino3d.inc' +if old_inc in text: + text = text.replace(old_inc, '; include casino3d.inc moved below', 1) + +# 3. Update run_casino_3d in MainMenu +old_run_3d = """run_casino_3d: + + call StartCasino3D + + jmp menu_loop""" + +new_run_3d = """run_casino_3d: + invoke ShowWindow, hCasinoConsole, SW_HIDE + call StartCasino3D + invoke ShowWindow, hCasinoConsole, SW_SHOW + invoke SetForegroundWindow, hCasinoConsole + jmp menu_loop""" + +if old_run_3d in text: + text = text.replace(old_run_3d, new_run_3d, 1) +else: + print('Notice: old_run_3d pattern not exact, searching line-by-line') + +# 4. Insert include casino3d.inc after MainMenu ENDP and replace main PROC +pos = text.find('exit_menu:') +if pos != -1: + end_main_pos = text.find('END main') + if end_main_pos != -1: + new_main_block = """exit_menu: + ret +MainMenu ENDP + +include casino3d.inc + +; --- main: Unified Entry Point --- +main PROC + invoke SetConsoleOutputCP, 65001 + invoke SetConsoleCP, 65001 + invoke GetStdHandle, STD_OUTPUT_HANDLE + mov hOut, eax + call ConfigureConsoleSize + call EnableAnsi + invoke CreateDirectoryA, OFFSET runtimeDir, 0 + invoke GetStdHandle, STD_INPUT_HANDLE + mov hIn, eax + invoke GetTickCount + mov seed, eax + call InitSounds + call InitPaths3D + call AutoLoadAccountFast + cmp accountCount, 0 + jne @F + call ResetProfileDefaults + invoke CopyCString, OFFSET saveFileName, OFFSET defaultPlayerSave + call SaveGame + call CollectAccounts +@@: + call ApplySoundVolume + invoke GetConsoleWindow + mov hCasinoConsole, eax + invoke ShowWindow, hCasinoConsole, SW_HIDE + call StartCasino3D + cmp mutex3D, 0 + je @F + invoke CloseHandle, mutex3D +@@: + invoke ExitProcess, 0 +main ENDP +""" + text = text[:pos] + new_main_block + '\r\nEND main\r\n' + print('Successfully replaced main block!') + else: + print('Error: END main not found') +else: + print('Error: exit_menu: not found') + +with open('d:/покер/poker.asm', 'wb') as f: + f.write(text.encode('cp1251')) + +print('poker.asm updated in CP1251!') diff --git a/tools/preview_dbd_hook.bat b/tools/preview_dbd_hook.bat new file mode 100644 index 0000000..98df9ef --- /dev/null +++ b/tools/preview_dbd_hook.bat @@ -0,0 +1,6 @@ +@echo off +mode con cols=120 lines=42 +chcp 65001 >nul +set "DBD_ROOT=%~dp0.." +powershell -NoProfile -ExecutionPolicy Bypass -Command "$root=[IO.Path]::GetFullPath($env:DBD_ROOT); $ans=Join-Path $root 'assets\animations\dbd_hook.ans'; $stop=Join-Path $root 'runtime\dbd_hook.stop'; $profilePath=Join-Path $root 'runtime\anim_profile.txt'; if(Test-Path $stop){Remove-Item $stop -Force}; if(!(Test-Path $ans)){Write-Host 'dbd_hook.ans not found:' $ans; Start-Sleep -Seconds 3; exit 1}; $profile=1; if(Test-Path $profilePath){ $raw=(Get-Content -LiteralPath $profilePath -Raw -ErrorAction SilentlyContinue).Trim(); if($raw -match '^[0-2]$'){ $profile=[int]$raw } }; $step=@(1,2,3)[$profile]; $delay=80*$step; $frames=(Get-Content -LiteralPath $ans -Raw -Encoding UTF8) -split [char]12; $esc=[char]27; try{ [Console]::Write($esc+'[2J'+$esc+'[?25l'); while(!(Test-Path $stop)){ for($i=0; $i -lt $frames.Count; $i+=$step){ if(Test-Path $stop){break}; [Console]::Write($esc+'[H'); [Console]::Write($frames[$i]); Start-Sleep -Milliseconds $delay } } } finally { [Console]::Write($esc+'[0m'+$esc+'[?25h'); if(Test-Path $stop){Remove-Item $stop -Force} }" +exit diff --git a/tools/preview_dbd_hook.py b/tools/preview_dbd_hook.py new file mode 100644 index 0000000..315c39d --- /dev/null +++ b/tools/preview_dbd_hook.py @@ -0,0 +1,59 @@ +from pathlib import Path +import ctypes +import os +import sys +import time + + +FRAME_DELAY = 0.08 +FRAME_SEPARATOR = "\f" + + +def place_window() -> None: + try: + user32 = ctypes.windll.user32 + hwnd = ctypes.windll.kernel32.GetConsoleWindow() + if hwnd: + screen_w = user32.GetSystemMetrics(0) + x = 720 if screen_w >= 1500 else max(420, screen_w // 2) + y = 40 + # Do not resize here: `mode con` controls the character grid. + # Pixel resizing can make ANSI frames wrap and visually slide. + user32.SetWindowPos(hwnd, 0, x, y, 0, 0, 0x0001) + except Exception: + pass + + +def main() -> int: + root = Path(__file__).resolve().parent.parent + path = root / "assets" / "animations" / "dbd_hook.ans" + stop_path = root / "runtime" / "dbd_hook.stop" + if not path.exists(): + print("dbd_hook.ans not found") + return 1 + + if stop_path.exists(): + stop_path.unlink() + + os.system("chcp 65001 >nul") + place_window() + frames = path.read_text(encoding="utf-8", errors="replace").split(FRAME_SEPARATOR) + try: + while not stop_path.exists(): + for frame in frames: + if stop_path.exists(): + break + os.system("cls") + sys.stdout.write(frame) + sys.stdout.flush() + time.sleep(FRAME_DELAY) + finally: + sys.stdout.write("\033[0m") + sys.stdout.flush() + if stop_path.exists(): + stop_path.unlink() + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/tools/preview_hakari.bat b/tools/preview_hakari.bat new file mode 100644 index 0000000..0de1e63 --- /dev/null +++ b/tools/preview_hakari.bat @@ -0,0 +1,5 @@ +@echo off +chcp 65001 >nul +cd /d "%~dp0" +python preview_hakari.py +pause diff --git a/tools/preview_hakari.py b/tools/preview_hakari.py new file mode 100644 index 0000000..5d465ba --- /dev/null +++ b/tools/preview_hakari.py @@ -0,0 +1,48 @@ +from pathlib import Path +import os +import sys +import time +import winsound + + +FRAME_DELAY = 0.055 +FRAME_SEPARATOR = "\f" + + +def enable_ansi() -> None: + # Modern Windows terminals understand ANSI after chcp 65001; this keeps + # colors from hakari_dance.ans intact when possible. + os.system("chcp 65001 >nul") + + +def main() -> int: + root = Path(__file__).resolve().parent + dance_path = root / "hakari_dance.ans" + sound_path = root / "hakari_dance.wav" + + if not dance_path.exists(): + print("hakari_dance.ans not found") + return 1 + + frames = dance_path.read_text(encoding="utf-8", errors="replace").split(FRAME_SEPARATOR) + + enable_ansi() + if sound_path.exists(): + winsound.PlaySound(str(sound_path), winsound.SND_FILENAME | winsound.SND_ASYNC) + + try: + for frame in frames: + os.system("cls") + sys.stdout.write(frame) + sys.stdout.flush() + time.sleep(FRAME_DELAY) + finally: + winsound.PlaySound(None, winsound.SND_PURGE) + sys.stdout.write("\033[0m") + sys.stdout.flush() + + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/tools/preview_intro.bat b/tools/preview_intro.bat new file mode 100644 index 0000000..9d5f5b9 --- /dev/null +++ b/tools/preview_intro.bat @@ -0,0 +1,5 @@ +@echo off +chcp 65001 >nul +cd /d "%~dp0" +python preview_intro.py +pause diff --git a/tools/preview_intro.py b/tools/preview_intro.py new file mode 100644 index 0000000..a7357b5 --- /dev/null +++ b/tools/preview_intro.py @@ -0,0 +1,59 @@ +from pathlib import Path +import os +import sys +import msvcrt +import time + + +FRAME_DELAY = 0.045 +FRAME_SEPARATOR = "\f" + + +def main() -> int: + root = Path(__file__).resolve().parent + intro_path = root / "casino_intro.ans" + if not intro_path.exists(): + print("casino_intro.ans not found") + return 1 + + os.system("chcp 65001 >nul") + frames = intro_path.read_text(encoding="utf-8", errors="replace").split(FRAME_SEPARATOR) + loop_marker = "@@LOOP@@\n" + loop_start = 0 + for idx, frame in enumerate(frames): + if frame.replace("\r\n", "\n") == loop_marker: + loop_start = idx + 1 + break + try: + for frame in frames: + if frame.replace("\r\n", "\n") == loop_marker: + break + sys.stdout.write(frame) + sys.stdout.flush() + start = time.time() + while time.time() - start < FRAME_DELAY: + if msvcrt.kbhit(): + key = msvcrt.getwch() + if key == "\r": + return 0 + time.sleep(0.005) + loop_frames = frames[loop_start:] if loop_start else frames + while True: + for frame in loop_frames: + sys.stdout.write(frame) + sys.stdout.flush() + start = time.time() + while time.time() - start < FRAME_DELAY: + if msvcrt.kbhit(): + key = msvcrt.getwch() + if key == "\r": + return 0 + time.sleep(0.005) + finally: + sys.stdout.write("\033[0m\033[?25h\033[2J\033[H") + sys.stdout.flush() + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/tools/release_smoke_check.ps1 b/tools/release_smoke_check.ps1 new file mode 100644 index 0000000..45ea5fb --- /dev/null +++ b/tools/release_smoke_check.ps1 @@ -0,0 +1,216 @@ +param( + [string]$Root = (Resolve-Path (Join-Path $PSScriptRoot '..')).Path +) + +$ErrorActionPreference = 'Stop' + +function Pass($message) { + Write-Host "[OK] $message" -ForegroundColor Green +} + +function Fail($message) { + throw "[FAIL] $message" +} + +function Require-File($relative) { + $path = Join-Path $Root $relative + if (!(Test-Path -LiteralPath $path -PathType Leaf)) { + Fail "Missing file: $relative" + } + Pass "Found $relative" +} + +Push-Location $Root +try { + Require-File 'PokerGameSetup.exe' + Require-File 'Assembler Casino.exe' + Require-File 'Uninstall Assembler Casino.exe' + Require-File 'bin\poker.exe' + Require-File 'assets\icons\casino.ico' + Require-File 'assets\animations\hakari_dance.ans' + Require-File 'assets\animations\dbd_hook.ans' + Require-File 'tools\preview_dbd_hook.bat' + Require-File 'docs\README_RELEASE.txt' + Require-File 'docs\RELEASE_CHECKLIST.txt' + Require-File 'docs\KNOWN_LIMITATIONS.txt' + Require-File 'docs\SECURITY_NOTES.txt' + Require-File 'docs\ROADMAP.txt' + Require-File 'docs\ONLINE_RADMIN.txt' + + foreach ($mambo in @( + 'assets\animations\mambo1.ans', + 'assets\animations\mambo2.ans', + 'assets\animations\mambo3.ans', + 'assets\animations\mambo4.ans' + )) { + if (Test-Path -LiteralPath (Join-Path $Root $mambo) -PathType Leaf) { + Fail "Removed MAMBO animation still exists: $mambo" + } + } + Pass 'MAMBO animation files are removed from assets' + + $dbdBat = Get-Content -LiteralPath (Join-Path $Root 'tools\preview_dbd_hook.bat') -Raw + if ($dbdBat -match 'Clear-Host') { + Fail 'DBD helper still uses Clear-Host' + } + Pass 'DBD helper does not use Clear-Host' + + $asmBytes = [IO.File]::ReadAllBytes((Join-Path $Root 'poker.asm')) + $cp1251 = [Text.Encoding]::GetEncoding(1251) + $asmText = $cp1251.GetString($asmBytes) + foreach ($needle in @( + 'settingsCinematicText db "Cinematic -', + 'settingsAdaptiveText db "Adaptive -', + 'settingsStableText db "Stable -', + 'AnimShouldDrawFrame PROC', + 'AnimFrameDelay PROC', + 'WriteAnimProfileFile PROC', + 'SAVE_SIGN_SIZE equ 276', + 'SAVE_FILE_SIZE equ 280', + 'CalcSaveSignature PROC', + 'mov DWORD PTR [saveBuffer+SAVE_SIGN_SIZE], eax', + 'cmp charsRead, SAVE_FILE_SIZE', + 'includelib ws2_32.lib', + 'GameOnlineCasino PROC', + 'OnlineRRSessionHost PROC', + 'OnlineRRSessionClient PROC' + )) { + if ($asmText.IndexOf($needle) -lt 0) { + Fail "Missing source marker: $needle" + } + } + Pass 'Animation profile and save signature markers exist in poker.asm' + + if ($asmText -match 'MAMBO|mambo|PlayMambo') { + Fail 'MAMBO markers still exist in poker.asm' + } + Pass 'MAMBO markers are removed from poker.asm' + + $launcherSource = Join-Path $Root 'build\AssemblerCasinoLauncher.cs' + if (!(Test-Path -LiteralPath $launcherSource -PathType Leaf)) { + Fail 'Missing launcher source: build\AssemblerCasinoLauncher.cs' + } + $launcherText = Get-Content -LiteralPath $launcherSource -Raw -Encoding UTF8 + $expectedPokerHash = $null + if ($launcherText -match 'ExpectedPokerSha256 = "([A-Fa-f0-9]{64})"') { + $expectedPokerHash = $matches[1].ToUpperInvariant() + } + if ([string]::IsNullOrWhiteSpace($expectedPokerHash)) { + Fail 'Launcher source does not contain a fixed poker.exe SHA-256 hash' + } + $pokerSha = [Security.Cryptography.SHA256]::Create() + try { + $actualPokerHash = [BitConverter]::ToString($pokerSha.ComputeHash([IO.File]::ReadAllBytes((Join-Path $Root 'bin\poker.exe')))).Replace('-', '').ToUpperInvariant() + } + finally { + $pokerSha.Dispose() + } + if ($actualPokerHash -ne $expectedPokerHash) { + Fail "Launcher poker.exe SHA-256 mismatch. Expected $expectedPokerHash, actual $actualPokerHash" + } + Pass 'Launcher poker.exe SHA-256 matches current bin\poker.exe' + + $setupSource = Join-Path $Root 'build\PokerGameSetupGui.cs' + if (!(Test-Path -LiteralPath $setupSource -PathType Leaf)) { + Fail 'Missing installer source: build\PokerGameSetupGui.cs' + } + $setupSourceText = Get-Content -LiteralPath $setupSource -Raw -Encoding UTF8 + $expectedHash = $null + if ($setupSourceText -match 'ExpectedPayloadSha256 = "([A-Fa-f0-9]{64})"') { + $expectedHash = $matches[1].ToUpperInvariant() + } + if ([string]::IsNullOrWhiteSpace($expectedHash)) { + Fail 'Installer source does not contain a fixed SHA-256 payload hash' + } + + Add-Type -AssemblyName System.IO.Compression + Add-Type -AssemblyName System.IO.Compression.FileSystem + + $setupPath = Join-Path $Root 'PokerGameSetup.exe' + $fs = [IO.File]::OpenRead($setupPath) + try { + $head = New-Object byte[] ([Math]::Min(2097152, $fs.Length)) + [void]$fs.Read($head, 0, $head.Length) + $marker = [Text.Encoding]::UTF8.GetBytes('<>') + $idx = -1 + for ($i = 0; $i -le $head.Length - $marker.Length; $i++) { + if ($head[$i] -ne $marker[0]) { continue } + $ok = $true + for ($j = 1; $j -lt $marker.Length; $j++) { + if ($head[$i + $j] -ne $marker[$j]) { $ok = $false; break } + } + if ($ok) { $idx = $i; break } + } + if ($idx -lt 0) { Fail 'Installer payload marker not found' } + + $fs.Position = $idx + $marker.Length + $zipBytes = New-Object byte[] ($fs.Length - $fs.Position) + [void]$fs.Read($zipBytes, 0, $zipBytes.Length) + } + finally { + $fs.Dispose() + } + + $ms = New-Object IO.MemoryStream(,$zipBytes) + $zip = New-Object IO.Compression.ZipArchive($ms, [IO.Compression.ZipArchiveMode]::Read) + try { + $names = @($zip.Entries | ForEach-Object FullName) + foreach ($entry in @( + 'Assembler Casino.exe', + 'Uninstall Assembler Casino.exe', + 'bin/poker.exe', + 'assets/icons/casino.ico', + 'tools/preview_dbd_hook.bat', + 'tools/release_smoke_check.ps1', + 'docs/README_RELEASE.txt', + 'docs/RELEASE_CHECKLIST.txt', + 'docs/KNOWN_LIMITATIONS.txt', + 'docs/SECURITY_NOTES.txt', + 'docs/ROADMAP.txt', + 'docs/ONLINE_RADMIN.txt' + )) { + if ($names -notcontains $entry) { + Fail "Installer payload missing: $entry" + } + } + if ($names -contains 'Assembler Casino.bat') { + Fail 'Installer payload still contains old Assembler Casino.bat' + } + if ($names | Where-Object { $_ -like 'tools/generated_frames/*' }) { + Fail 'Installer payload contains generated preview frames/tools' + } + foreach ($entry in @( + 'assets/animations/mambo1.ans', + 'assets/animations/mambo2.ans', + 'assets/animations/mambo3.ans', + 'assets/animations/mambo4.ans' + )) { + if ($names -contains $entry) { + Fail "Installer payload still contains removed MAMBO animation: $entry" + } + } + Pass "Installer payload OK ($($names.Count) files)" + } + finally { + $zip.Dispose() + $ms.Dispose() + } + + $sha = [Security.Cryptography.SHA256]::Create() + try { + $actualHash = [BitConverter]::ToString($sha.ComputeHash($zipBytes)).Replace('-', '').ToUpperInvariant() + } + finally { + $sha.Dispose() + } + if ($actualHash -ne $expectedHash) { + Fail "Installer payload SHA-256 mismatch. Expected $expectedHash, actual $actualHash" + } + Pass 'Installer payload SHA-256 matches embedded hash' + + Write-Host '' + Write-Host 'Release smoke check passed.' -ForegroundColor Cyan +} +finally { + Pop-Location +} diff --git a/tools/simulate_render.py b/tools/simulate_render.py new file mode 100644 index 0000000..295a974 --- /dev/null +++ b/tools/simulate_render.py @@ -0,0 +1,270 @@ +# -*- coding: utf-8 -*- +import math +import struct +from PIL import Image + +SCREEN_W = 640 +SCREEN_H = 480 +HALF_W = 320 +HALF_H = 240 +FP_1 = 65536 +FP_HALF = 32768 +MAP_WIDTH = 32 +MAP_HEIGHT = 32 + +# Load map +with open('d:/покер/casino3d_data.inc', 'r', encoding='latin1') as f: + text = f.read() + +import re +lines = text.splitlines() +map_lines = [] +capturing = False +for l in lines: + if 'casinoMap db' in l: + capturing = True + if capturing: + map_lines.append(l) + if len(map_lines) == 32: + break + +casinoMap = [] +for l in map_lines: + vals = [int(x.strip()) for x in re.findall(r'\d+', l)] + casinoMap.extend(vals) + +# Load textures +tex_raw = open('d:/покер/assets/textures/casino3d-hd.bin', 'rb').read() +slot_size = 128 * 128 * 4 + +def get_tex_pixel(slot, tx, ty): + idx = slot * slot_size + (ty * 128 + tx) * 4 + b, g, r, a = tex_raw[idx:idx+4] + return (r, g, b, a) + +# Angle table (512) +tableCos = [round(math.cos(i * 2 * math.pi / 512) * FP_1) for i in range(512)] +tableSin = [round(math.sin(i * 2 * math.pi / 512) * FP_1) for i in range(512)] + +# Player State +playerX = 16 * FP_1 + FP_HALF +playerY = 16 * FP_1 + FP_HALF +playerAngle = 384 # Facing North + +playerDirX = tableCos[playerAngle] +playerDirY = tableSin[playerAngle] +playerPlaneX = -66 * playerDirY // 100 +playerPlaneY = 66 * playerDirX // 100 + +screen_pixels = [(20, 20, 25)] * (SCREEN_W * SCREEN_H) +zBuffer = [0x7FFFFFFF] * SCREEN_W + +# 1. Ceiling and Floor +for y in range(HALF_H, SCREEN_H): + floorRow = y + pDist = (HALF_H * FP_1) // (y - HALF_H + 1) + shade = max(35, min(255, 255 - (pDist >> 13))) + cShade = max(20, shade - 25) + + fStepX = (playerPlaneX * 2 * pDist // FP_1) // SCREEN_W + fStepY = (playerPlaneY * 2 * pDist // FP_1) // SCREEN_W + + fX = playerX + ((playerDirX - playerPlaneX) * pDist // FP_1) + fY = playerY + ((playerDirY - playerPlaneY) * pDist // FP_1) + + for x in range(SCREEN_W): + # Floor + tx = (fX >> 9) & 127 + ty = (fY >> 9) & 127 + r, g, b, _ = get_tex_pixel(0, tx, ty) + r = (r * shade) >> 8 + g = (g * shade) >> 8 + b = (b * shade) >> 8 + screen_pixels[floorRow * SCREEN_W + x] = (r, g, b) + + # Ceiling + cx = (fX >> 10) & 127 + cy = (fY >> 10) & 127 + cr, cg, cb, _ = get_tex_pixel(5, cx, cy) + cr = (cr * cShade) >> 8 + cg = (cg * cShade) >> 8 + cb = (cb * cShade) >> 8 + screen_pixels[(SCREEN_H - 1 - floorRow) * SCREEN_W + x] = (cr, cg, cb) + + fX += fStepX + fY += fStepY + +# 2. Walls +for col in range(SCREEN_W): + camX = (2 * col - SCREEN_W) * FP_1 // SCREEN_W + rayDirX = playerDirX + (playerPlaneX * camX // FP_1) + rayDirY = playerDirY + (playerPlaneY * camX // FP_1) + + mapX = playerX >> 16 + mapY = playerY >> 16 + + deltaDistX = (1 << 32) // abs(rayDirX) if rayDirX != 0 else 0x7FFFFFFF + deltaDistY = (1 << 32) // abs(rayDirY) if rayDirY != 0 else 0x7FFFFFFF + + if rayDirX < 0: + stepX = -1 + sideDistX = ((playerX - (mapX << 16)) * deltaDistX) >> 16 + else: + stepX = 1 + sideDistX = (((mapX + 1 << 16) - playerX) * deltaDistX) >> 16 + + if rayDirY < 0: + stepY = -1 + sideDistY = ((playerY - (mapY << 16)) * deltaDistY) >> 16 + else: + stepY = 1 + sideDistY = (((mapY + 1 << 16) - playerY) * deltaDistY) >> 16 + + side = 0 + hit = 0 + steps = 0 + while hit == 0 and steps < 64: + steps += 1 + if sideDistX < sideDistY: + sideDistX += deltaDistX + mapX += stepX + side = 0 + else: + sideDistY += deltaDistY + mapY += stepY + side = 1 + + if 0 <= mapX < MAP_WIDTH and 0 <= mapY < MAP_HEIGHT: + tile = casinoMap[mapY * 32 + mapX] + if tile != 0: + hit = tile + else: + hit = 1 + + if side == 0: + perpWallDist = sideDistX - deltaDistX + else: + perpWallDist = sideDistY - deltaDistY + + perpWallDist = max(2048, perpWallDist) + zBuffer[col] = perpWallDist + + lineH = (SCREEN_H * FP_1) // perpWallDist + drawStart = max(0, HALF_H - lineH // 2) + drawEnd = min(SCREEN_H - 1, HALF_H + lineH // 2) + + if side == 0: + wallHit = playerY + ((perpWallDist * rayDirY) >> 16) + else: + wallHit = playerX + ((perpWallDist * rayDirX) >> 16) + + texX = ((wallHit & 0xFFFF) * 128) >> 16 + if (side == 0 and rayDirX > 0) or (side == 1 and rayDirY < 0): + texX = 127 - texX + + shade = max(40, min(255, 255 - (perpWallDist >> 12))) + if side == 1: + shade = (shade * 180) >> 8 + + texId = hit if hit != 0 else 1 + + for y in range(drawStart, drawEnd): + texY = (((y * 2 - SCREEN_H + lineH) * 128) // (lineH * 2)) & 127 + r, g, b, _ = get_tex_pixel(texId, texX, texY) + r = (r * shade) >> 8 + g = (g * shade) >> 8 + b = (b * shade) >> 8 + screen_pixels[y * SCREEN_W + col] = (r, g, b) + +# 3. Sprites +sprites = [ + {'name': 'VIP Dancer 1', 'x': 13 * FP_1 + FP_HALF, 'y': 4 * FP_1, 'tex': 10}, + {'name': 'VIP Dancer 2', 'x': 16 * FP_1 + FP_HALF, 'y': 3 * FP_1 + FP_HALF, 'tex': 10}, + {'name': 'VIP Dancer 3', 'x': 19 * FP_1 + FP_HALF, 'y': 4 * FP_1, 'tex': 10}, + {'name': 'Blackjack', 'x': 12 * FP_1 + FP_HALF, 'y': 9 * FP_1, 'tex': 31}, + {'name': 'Poker', 'x': 19 * FP_1 + FP_HALF, 'y': 9 * FP_1, 'tex': 35}, + {'name': 'Casino Roulette', 'x': 16 * FP_1 + FP_HALF, 'y': 9 * FP_1, 'tex': 32}, + {'name': 'Classic Roulette', 'x': 16 * FP_1 + FP_HALF, 'y': 12 * FP_1, 'tex': 32}, + {'name': 'Slots 777', 'x': 5 * FP_1, 'y': 7 * FP_1, 'tex': 24}, + {'name': 'Slots CloverPit', 'x': 5 * FP_1, 'y': 10 * FP_1, 'tex': 24}, + {'name': 'Classic Slot', 'x': 5 * FP_1, 'y': 13 * FP_1, 'tex': 24}, + {'name': 'Umamusume', 'x': 5 * FP_1, 'y': 16 * FP_1, 'tex': 36}, + {'name': 'DBD Skillcheck', 'x': 5 * FP_1, 'y': 19 * FP_1, 'tex': 36}, + {'name': 'Cashier / ATM', 'x': 27 * FP_1, 'y': 7 * FP_1, 'tex': 33}, + {'name': 'VIP Boutique', 'x': 27 * FP_1, 'y': 10 * FP_1, 'tex': 30}, + {'name': 'Online Casino', 'x': 27 * FP_1, 'y': 13 * FP_1, 'tex': 36}, + {'name': 'Achievements', 'x': 27 * FP_1, 'y': 16 * FP_1, 'tex': 36}, + {'name': 'Stats Board', 'x': 27 * FP_1, 'y': 19 * FP_1, 'tex': 36}, + {'name': 'Durak', 'x': 12 * FP_1, 'y': 23 * FP_1, 'tex': 37}, + {'name': 'Buckshot Roulette', 'x': 16 * FP_1, 'y': 23 * FP_1, 'tex': 34}, + {'name': 'Russian Roulette', 'x': 20 * FP_1, 'y': 23 * FP_1, 'tex': 34}, + {'name': 'Craps / Dice', 'x': 12 * FP_1, 'y': 26 * FP_1, 'tex': 38}, + {'name': 'Skulls & Cups', 'x': 16 * FP_1, 'y': 26 * FP_1, 'tex': 38}, + {'name': 'Coin Flip', 'x': 20 * FP_1, 'y': 26 * FP_1, 'tex': 38}, + {'name': 'Training', 'x': 10 * FP_1, 'y': 14 * FP_1, 'tex': 37}, + {'name': 'Observer AI', 'x': 22 * FP_1, 'y': 14 * FP_1, 'tex': 37}, + {'name': 'Daily Tasks', 'x': 27 * FP_1, 'y': 22 * FP_1, 'tex': 36}, + {'name': 'Settings', 'x': 27 * FP_1, 'y': 25 * FP_1, 'tex': 36}, + {'name': 'Hell Tower Gate', 'x': 16 * FP_1, 'y': 29 * FP_1, 'tex': 39}, +] + +# Calculate distances +for s in sprites: + dx = (s['x'] - playerX) >> 8 + dy = (s['y'] - playerY) >> 8 + s['distSq'] = dx * dx + dy * dy + +# Sort far to near +sprites.sort(key=lambda s: s['distSq'], reverse=True) + +det = ((playerPlaneX * playerDirY) >> 16) - ((playerPlaneY * playerDirX) >> 16) +if det == 0: + det = 1 + +for s in sprites: + relX = s['x'] - playerX + relY = s['y'] - playerY + + # Standard Lodev inverse camera transform: + # transX = (dirY * relX - dirX * relY) / det + # transY = (-planeY * relX + planeX * relY) / det + numX = ((playerDirY * relX) >> 16) - ((playerDirX * relY) >> 16) + transX = (numX << 16) // det + + numY = ((-playerPlaneY * relX) >> 16) + ((playerPlaneX * relY) >> 16) + transY = (numY << 16) // det + + # Discard sprites behind camera + if transY <= 2048: + continue + + sprScreenX = HALF_W + (transX * HALF_W) // transY + sprH = (SCREEN_H * FP_1) // transY + sprW = sprH + + drawStartY = max(0, HALF_H - sprH // 2) + drawEndY = min(SCREEN_H - 1, HALF_H + sprH // 2) + drawStartX = max(0, sprScreenX - sprW // 2) + drawEndX = min(SCREEN_W - 1, sprScreenX + sprW // 2) + + shade = max(40, min(255, 255 - (transY >> 12))) + + for stripe in range(drawStartX, drawEndX): + if 0 <= stripe < SCREEN_W and transY < zBuffer[stripe]: + texX = ((stripe - (sprScreenX - sprW // 2)) * 128 // sprW) & 127 + for y in range(drawStartY, drawEndY): + texY = ((y - (HALF_H - sprH // 2)) * 128 // sprH) & 127 + r, g, b, _ = get_tex_pixel(s['tex'], texX, texY) + # Chroma key check: Magenta (0xFF00FF) or pure black (0,0,0) + if (r > 240 and g < 20 and b > 240) or (r == 0 and g == 0 and b == 0): + continue + r = (r * shade) >> 8 + g = (g * shade) >> 8 + b = (b * shade) >> 8 + screen_pixels[y * SCREEN_W + stripe] = (r, g, b) + +# Save image +img = Image.new('RGB', (SCREEN_W, SCREEN_H)) +img.putdata(screen_pixels) +img.save('d:/покер/render_view.png') +print('render_view.png saved successfully!') diff --git a/ИДЕИ.txt b/ИДЕИ.txt new file mode 100644 index 0000000..dd5697f --- /dev/null +++ b/ИДЕИ.txt @@ -0,0 +1,28 @@ +[x] 1. Ñîõðàíåíèå â Appdata +[x] 2. Îòêþ÷èòü çàêðûòèå ïðîãðàììû ïîñëå äîñòèæåíèÿ êâîòû +[x] 3. Âîçìîæíîñòü õîñòèòü ñåðâàê äëÿ èãðû +[x] 4. Ðóëåòêà +[x] 5. Êîñòè(÷åò/íå÷åò) +[x] 6. Äîñòèæåíèÿ +[x] 7. Ìàãàçèí (òàëèñìàíû, ðóáàøêè, åùå ÷å-íèáóäü) +[x] 8. Çâóê äëÿ îðëà è ðåøêè +[x] 9. ôðàçû â òåêñòîâûé ôàéëèê, äëÿ âîçìîæíîñòè óâåëè÷åíèÿ èõ êîëè÷åñòâà +[x] 10. Ñåêðåòíûé ðåæèì +[x] 11. Öâåòíûå ñîáûòèÿ +[x] 12. Áîëåå æèâîé áàíê ñ óðîâíÿìè(Íîâè÷îê, Èãðîê, Õàéðîëëåð, Ëåãåíäà êàçèíî) +[x] 13. Îáó÷åíèå +[x] 14. Ðåæèì íàáëþäàòåëÿ(êîãäà ÈÈ ñðàæàåòñÿ ïðîòèâ ÈÈ) +[x] 15. Ñâîé ASCII-ëîãîòèï ïðè çàïóñêå +[x] 16. Øóëåðñêèå ïðè¸ìû +[x] 17. Îáíîâèòü ñëîò ìàøèíó äî 5 íà 3( êàê â êëîâåðïèòå) +[x] 18.Ñòàòèñòèêà ïî èãðàì îòäåëüíî +[x] 19.Åæåäíåâíûå çàäàíèÿ(íå çíàþ íàäî ëè è êàê ëó÷øå?) +[x] 20 Ñòîáåö ôèøåê ðÿäîì ñ êàðòàìè +[x] 21 Âèçóàëèçàöèÿ ïóëüñà ïðè ñòðàõå, ñòðåññå îò áîëüøèõ ñòàâîê +[x] 22. Äóðàê(ïîäêèäíîé è ïåðåâîäíîé) +[x] 23. Óâåëè÷åíèå âñåãî ïîä ðàçìåð cmd +[x] 24. Óâåëè÷èòü âàðèàöèè ñòàâêè â ðóëåòêå +[x] 25. Èãðà "Ñíèìè ñåáÿ ñ êðþêà"(Dead by Daylight) +[x] 26. Umamusume Pretty Derby +[x] 27. Buckshot Roulette +[x] 28. Òóðíèð-áàøíÿ êàçèíî diff --git a/ПРОСТО.7z b/ПРОСТО.7z new file mode 100644 index 0000000..c0c56b1 Binary files /dev/null and b/ПРОСТО.7z differ