]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
imported winuaesrc1460b5.zip
authorToni Wilen <twilen@winuae.net>
Wed, 9 Jan 2008 16:41:49 +0000 (18:41 +0200)
committerToni Wilen <twilen@winuae.net>
Mon, 22 Feb 2010 19:38:09 +0000 (21:38 +0200)
17 files changed:
cfgfile.c
debug.c
expansion.c
filesys.asm
filesys.c
filesys_bootrom.c
include/memory.h
memory.c
od-win32/dinput.c
od-win32/dxwrap.c
od-win32/picasso96_win.c
od-win32/resources/winuae.rc
od-win32/win32.c
od-win32/win32.h
od-win32/win32gfx.c
od-win32/win32gui.c
od-win32/winuaechangelog.txt

index b6ca14d169ffd150ff0593e9fdc65bf5a3c76f93..f785e99ed96d9e982cdbe37a9f6b9588ec957ce4 100644 (file)
--- a/cfgfile.c
+++ b/cfgfile.c
@@ -169,6 +169,14 @@ static const char *obsolete[] = {
 
 #define UNEXPANDED "$(FILE_PATH)"
 
+static void trimws (char *s)
+{
+    /* Delete trailing whitespace.  */
+    int len = strlen (s);
+    while (len > 0 && strcspn (s + len - 1, "\t \r\n") == 0)
+        s[--len] = '\0';
+}
+
 static int match_string (const char *table[], const char *str)
 {
     int i;
@@ -1813,10 +1821,7 @@ static int cfgfile_load_2 (struct uae_prefs *p, const char *filename, int real,
 #endif
 
     while (cfg_fgets (line, sizeof (line), fh) != 0) {
-       int len = strlen (line);
-       /* Delete trailing whitespace.  */
-       while (len > 0 && strcspn (line + len - 1, "\t \r\n") == 0)
-           line[--len] = '\0';
+       trimws (line);
        if (strlen (line) > 0) {
            if (line[0] == '#' || line[0] == ';')
                continue;
@@ -3111,11 +3116,12 @@ static int bip_a3000 (struct uae_prefs *p, int config, int compa, int romcheck)
 {
     int roms[2];
 
-    if (config) {
+    if (config == 2)
        roms[0] = 61;
-    } else {
+    else if (config == 1)
+       roms[0] = 71;
+    else
        roms[0] = 59;
-    }
     roms[1] = -1;
     p->immediate_blits = 1;
     p->bogomem_size = 0;
diff --git a/debug.c b/debug.c
index 0cce4d54316fd2ed51e302bec8fff49451ec3c2a..ab79b96d7741577e5326d14399e792accae37cac 100644 (file)
--- a/debug.c
+++ b/debug.c
@@ -54,8 +54,6 @@ static uaecptr debug_copper_pc;
 extern int audio_channel_mask;
 extern int inputdevice_logging;
 
-static FILE *logfile;
-
 void deactivate_debugger (void)
 {
     debugger_active = 0;
@@ -68,9 +66,6 @@ void deactivate_debugger (void)
 
 void activate_debugger (void)
 {
-    if (logfile)
-       fclose (logfile);
-    logfile = 0;
     do_skip = 0;
     if (debugger_active)
        return;
@@ -123,7 +118,7 @@ static char help[] = {
     "  W <address> <value>   Write into Amiga memory\n"
     "  w <num> <address> <length> <R/W/I/F> [<value>] (read/write/opcode/freeze)\n"
     "                        Add/remove memory watchpoints\n"
-    "  wd                    Enable illegal access logger\n"
+    "  wd [<0-1>]            Enable illegal access logger. 1 = break when detected.\n"
     "  S <file> <addr> <n>   Save a block of Amiga memory\n"
     "  s \"<string>\"/<values> [<addr>] [<length>]\n"
     "                        Search for string/bytes\n"
@@ -135,7 +130,7 @@ static char help[] = {
     "                        Also enables level 1 disk logging\n"
     "  did <log level>       Enable disk logging\n"
     "  dj [<level bitmask>]  Enable joystick/mouse input debugging\n"
-    "  smc                   Enable self-modifying code detector\n"
+    "  smc [<0-1>]           Enable self-modifying code detector. 1 = break when detected.\n"
     "  dm                    Dump current address space map\n"
 #ifdef _WIN32
     "  x                     Close debugger.\n"
@@ -1155,25 +1150,26 @@ struct smc_item {
     uae_u8 cnt;
 };
 
-static int smc_size;
+static int smc_size, smc_mode;
 static struct smc_item *smc_table;
 
-static void smc_reset(void)
+static void smc_free (void)
 {
-    int i;
-    if (!smc_table)
-       return;
-    for (i = 0; i < smc_size; i++) {
-       smc_table[i].addr = 0xffffffff;
-       smc_table[i].cnt = 0;
-    }
+    if (smc_table)
+       console_out("SMCD disabled\n");
+    xfree(smc_table);
+    smc_mode = 0;
+    smc_table = NULL;
 }
 
 static void initialize_memwatch (int mode);
-static void smc_detect_init(void)
+static void smc_detect_init (char **c)
 {
-    xfree(smc_table);
-    smc_table = NULL;
+    int v, i;
+    
+    ignore_ws (c);
+    v = readint (c);
+    smc_free ();
     smc_size = 1 << 24;
     if (currprefs.z3fastmem_size)
        smc_size = currprefs.z3fastmem_start + currprefs.z3fastmem_size;
@@ -1181,14 +1177,19 @@ static void smc_detect_init(void)
     smc_table = (struct smc_item*)xmalloc (smc_size * sizeof (struct smc_item));
     if (!smc_table)
        return;
-    smc_reset();
+    for (i = 0; i < smc_size; i++) {
+       smc_table[i].addr = 0xffffffff;
+       smc_table[i].cnt = 0;
+    }
     if (!memwatch_enabled)
        initialize_memwatch (0);
-    console_out("SMCD enabled\n");
+    if (v)
+       smc_mode = 1;
+    console_out("SMCD enabled. Break=%d\n", smc_mode);
 }
 
 #define SMC_MAXHITS 8
-static void smc_detector(uaecptr addr, int rwi, int size, uae_u32 *valp)
+static void smc_detector (uaecptr addr, int rwi, int size, uae_u32 *valp)
 {
     int i, hitcnt;
     uaecptr hitaddr, hitpc;
@@ -1228,6 +1229,8 @@ static void smc_detector(uaecptr addr, int rwi, int size, uae_u32 *valp)
        smc_table[hitaddr].cnt++;
        console_out("SMC at %08.8X - %08.8X (%d) from %08.8X\n",
            hitaddr, hitaddr + hitcnt, hitcnt, hitpc);
+       if (smc_mode)
+           activate_debugger ();
        if (smc_table[hitaddr].cnt >= SMC_MAXHITS)
            console_out("* hit count >= %d, future hits ignored\n", SMC_MAXHITS);
     }
@@ -1609,11 +1612,11 @@ static void memwatch (char **c)
            }
        } else {
            illg_init ();
-           console_out ("Illegal memory access logging enabled\n");
            ignore_ws (c);
            illgdebug_break = 0;
            if (more_params (c))
                illgdebug_break = 1;
+           console_out ("Illegal memory access logging enabled. Break=%d\n", illgdebug_break);
        }
        return;
     }
@@ -1863,9 +1866,11 @@ static void show_exec_tasks (void)
     }
 }
 
+#if 0
 static int trace_same_insn_count;
 static uae_u8 trace_insn_copy[10];
 static struct regstruct trace_prev_regs;
+#endif
 static uaecptr nextpc;
 
 static int instruction_breakpoint (char **c)
@@ -1944,12 +1949,14 @@ static int instruction_breakpoint (char **c)
            return 0;
        }
     }
+#if 0
     if (skipaddr_start == 0xC0DEDBAD) {
        trace_same_insn_count = 0;
        logfile = fopen ("uae.trace", "w");
        memcpy (trace_insn_copy, regs.pc_p, 10);
        memcpy (&trace_prev_regs, &regs, sizeof regs);
     }
+#endif
     do_skip = 1;
     skipaddr_doskip = -1;
     return 1;
@@ -2286,17 +2293,17 @@ static void debug_1 (void)
                screenshot (1, 1);
            } else if (*inptr == 'm') {
                if (*(inptr + 1) == 'c') {
-                   if (!memwatch_enabled)
-                       initialize_memwatch(0);
+                   next_char (&inptr);
+                   next_char (&inptr);
                    if (!smc_table)
-                       smc_detect_init();
+                       smc_detect_init (&inptr);
                    else
-                       smc_reset();
+                       smc_free ();
                } else {
-                   next_char(&inptr);
-                   if (more_params(&inptr))
-                       debug_sprite_mask = readint(&inptr);
-                   console_out("sprite mask: %02.2X\n", debug_sprite_mask);
+                   next_char (&inptr);
+                   if (more_params (&inptr))
+                       debug_sprite_mask = readint (&inptr);
+                   console_out ("sprite mask: %02.2X\n", debug_sprite_mask);
                }
            } else {
                searchmem (&inptr);
@@ -2509,8 +2516,8 @@ void debug (void)
     bogusframe = 1;
     addhistory();
 
-    if (do_skip && skipaddr_start == 0xC0DEDBAD) {
 #if 0
+    if (do_skip && skipaddr_start == 0xC0DEDBAD) {
        if (trace_same_insn_count > 0) {
            if (memcmp (trace_insn_copy, regs.pc_p, 10) == 0
                && memcmp (trace_prev_regs.regs, regs.regs, sizeof regs.regs) == 0)
@@ -2521,12 +2528,12 @@ void debug (void)
        }
        if (trace_same_insn_count > 1)
            fprintf (logfile, "[ repeated %d times ]\n", trace_same_insn_count);
-#endif
        m68k_dumpstate (logfile, &nextpc);
        trace_same_insn_count = 1;
        memcpy (trace_insn_copy, regs.pc_p, 10);
        memcpy (&trace_prev_regs, &regs, sizeof regs);
     }
+#endif
 
     if (!memwatch_triggered) {
        if (do_skip) {
index 4c3991fdff061efa8ef0b50237e4543fdbeafebf..e9516bac1eff9347ae1b536da93bab41f7ae6da9 100644 (file)
@@ -971,6 +971,13 @@ static void expamem_init_gfxcard (void)
 static size_t fast_filepos, z3_filepos, p96_filepos;
 #endif
 
+void free_fastmemory (void)
+{
+    if (fastmemory)
+        mapped_free (fastmemory);
+    fastmemory = 0;
+}
+
 static void allocate_expamem (void)
 {
     currprefs.fastmem_size = changed_prefs.fastmem_size;
@@ -978,9 +985,7 @@ static void allocate_expamem (void)
     currprefs.gfxmem_size = changed_prefs.gfxmem_size;
 
     if (allocated_fastmem != currprefs.fastmem_size) {
-       if (fastmemory)
-           mapped_free (fastmemory);
-       fastmemory = 0;
+       free_fastmemory ();
        allocated_fastmem = currprefs.fastmem_size;
        fastmem_mask = allocated_fastmem - 1;
 
@@ -991,7 +996,7 @@ static void allocate_expamem (void)
                allocated_fastmem = 0;
            }
        }
-       memory_hardreset();
+       memory_hardreset ();
     }
     if (allocated_z3fastmem != currprefs.z3fastmem_size) {
        if (z3fastmem)
@@ -1008,7 +1013,7 @@ static void allocate_expamem (void)
                allocated_z3fastmem = 0;
            }
        }
-       memory_hardreset();
+       memory_hardreset ();
     }
 #ifdef PICASSO96
     if (allocated_gfxmem != currprefs.gfxmem_size) {
@@ -1026,7 +1031,7 @@ static void allocate_expamem (void)
                allocated_gfxmem = 0;
            }
        }
-       memory_hardreset();
+       memory_hardreset ();
     }
 #endif
 
@@ -1062,12 +1067,19 @@ static void allocate_expamem (void)
 #endif /* SAVESTATE */
 }
 
-uaecptr need_uae_boot_rom(void)
+static uaecptr check_boot_rom (void)
 {
     int i;
     uaecptr b = 0xf00000;
+    addrbank *ab;
+
     if (currprefs.cs_cdtvcd || currprefs.cs_cdtvscsi)
        b = 0xe70000;
+    ab = &get_mem_bank (0xf00000);
+    if (ab) {
+       if (valid_address (0xf00000, 65536))
+           b = 0xe70000;
+    }
     for (i = 0; i < currprefs.mountitems; i++) {
        struct uaedev_config_info *uci = &currprefs.mountconfig[i];
        if (uci->controller == 0)
@@ -1092,7 +1104,18 @@ uaecptr need_uae_boot_rom(void)
     return 0;
 }
 
-void expamem_next(void)
+uaecptr need_uae_boot_rom (void)
+{
+    uaecptr v;
+
+    uae_boot_rom = 0;
+    v = check_boot_rom ();
+    if (v)
+       uae_boot_rom = 1;
+    return v;
+}
+
+void expamem_next (void)
 {
     expamem_init_clear ();
     map_banks (&expamem_bank, 0xE8, 1, 0);
index 7997acd46f1eb69e03e58eac309e803c01732101..270a1bee2ba450e6b2bb2c7ec36da29246ca7b61 100644 (file)
@@ -17,6 +17,7 @@
 ; 2007.08.09 started implementing removable drive support (TW)
 ; 2007.09.01 ACTION_EXAMINE_ALL (TW)
 ; 2007.09.05 fully filesystem device mounting on the fly (TW)
+; 2008.01.09 ACTION_EXAMINE_ALL does not anymore return eac_Entries = 0 with continue (fixes some broken programs)
 
 AllocMem = -198
 FreeMem = -210
@@ -723,10 +724,13 @@ diskchange
        ; exall is complex, need to emulate eac_MatchString and/or eac_MatchFunc
 action_exall
        move.l 36(a4),a0 ; dp_Arg5, struct ExAllControl
+       tst.l (a0)
+       beq.s .ex0
        tst.l 8(a0) ; eac_MatchString
        bne.s .ex1
        tst.l 12(a0) ; eac_MatchFunc
        bne.s .ex1
+.ex0   moveq #1,d0 ; no need to get more entries
        rts ;nothing to do here
 .ex1:  movem.l d2-d7/a2-a6,-(sp)
        move.l a0,a5
@@ -785,6 +789,8 @@ action_exall
        subq.l #1,d7
        bra.s .ex4
 .ex3   movem.l (sp)+,d2-d7/a2-a6
+       move.l 36(a4),a0 ; dp_Arg5, struct ExAllControl
+       tst.l (a0) ; eac_Entries == 0 -> get more
        rts
 
 
@@ -1210,7 +1216,15 @@ ReplyOne:
 FSML_ReplyOne2:
        cmp.l #1033,8(a4) ;ACTION_EXAMINE_ALL
        bne.s FSML_ReplyOne3
+.exaretry:
        bsr.w action_exall
+       bne.s FSML_ReplyOne3
+       ; Arghh.. we need more entries. (some buggy programs fail if eac_Entries = 0 with continue enabled)
+       move.w #$ff58,d0
+       bsr.w getrtbase
+       jsr (a0)
+       bra.s .exaretry
+       
 FSML_ReplyOne3:
        move.l (a4),a1  ; dp_Link
        move.l 4(a4),a0 ; dp_Port
index 6f5ec24d038a0c77b3cdcd01c265a27ac79e29ce..8721a797c492608dd73210732911e425266910df 100644 (file)
--- a/filesys.c
+++ b/filesys.c
@@ -709,6 +709,7 @@ typedef struct exallkey {
     uae_u32 id;
     void *dirhandle;
     char *fn;
+    uaecptr control;
 } ExAllKey;
 
 /* Since ACTION_EXAMINE_NEXT is so braindamaged, we have to keep
@@ -2715,15 +2716,19 @@ int get_native_path(uae_u32 lock, char *out)
 }
 
 #define EXALL_DEBUG 0
+#define EXALL_END 0xde1111ad
 
-static ExAllKey *getexall (Unit *unit, int id)
+static ExAllKey *getexall (Unit *unit, uaecptr control, int id)
 {
     int i;
     if (id < 0) {
        for (i = 0; i < EXALLKEYS; i++) {
            if (unit->exalls[i].id == 0) {
                unit->exallid++;
+               if (unit->exallid == EXALL_END)
+                   unit->exallid++;
                unit->exalls[i].id = unit->exallid;
+               unit->exalls[i].control = control;
                return &unit->exalls[i];
            }
        }
@@ -2897,7 +2902,7 @@ static int action_examine_all_end (Unit *unit, dpacket packet)
     if (kickstart_version < 36)
        return 0;
     id = get_long (control + 4);
-    eak = getexall (unit, id);
+    eak = getexall (unit, control, id);
 #if EXALL_DEBUG > 0
     write_log ("EXALL_END ID=%d %x\n", id, eak);
 #endif
@@ -2958,8 +2963,12 @@ static int action_examine_all (Unit *unit, dpacket packet)
 
     PUT_PCK_RES1 (packet, DOS_TRUE);
     id = get_long (control + 4);
+    if (id == EXALL_END) {
+       write_log ("FILESYS: EXALL called twice with ERROR_NO_MORE_ENTRIES\n");
+       goto fail; /* already ended exall() */
+    }
     if (id) {
-       eak = getexall (unit, id);
+       eak = getexall (unit, control, id);
        if (!eak) {
            write_log ("FILESYS: EXALL non-existing ID %d\n", id);
            doserr = ERROR_OBJECT_WRONG_TYPE;
@@ -2975,7 +2984,7 @@ static int action_examine_all (Unit *unit, dpacket packet)
 
     } else {
 
-       eak = getexall (unit, -1);
+       eak = getexall (unit, control, -1);
        if (!eak)
            goto fail;
        if (lock != 0)
@@ -3028,6 +3037,31 @@ fail:
            xfree (eak->fn);
            eak->fn = NULL;
        }
+       if (doserr == ERROR_NO_MORE_ENTRIES)
+           put_long (control + 4, EXALL_END);
+    }
+    return 1;
+}
+
+static uae_u32 REGPARAM2 exall_helper (TrapContext *context)
+{
+    int i;
+    Unit *u;
+    uaecptr packet = m68k_areg (&context->regs, 4);
+    uaecptr control = get_long (packet + dp_Arg5);
+    uae_u32 id = get_long (control + 4);
+
+#if EXALL_DEBUG > 0
+    write_log ("FILESYS: EXALL extra round ID=%d\n", id);
+#endif
+    if (id == EXALL_END)
+       return 1;
+    for (u = units; u; u = u->next) {
+       for (i = 0; i < EXALLKEYS; i++) {
+           if (u->exalls[i].id == id && u->exalls[i].control == control) {
+               action_examine_all (u, get_real_address (packet));
+           }
+       }
     }
     return 1;
 }
@@ -5426,6 +5460,10 @@ void filesys_install (void)
     calltrap (deftrap2 (exter_int_helper, 0, "exter_int_helper"));
     dw (RTS);
 
+    org (rtarea_base + 0xFF58);
+    calltrap (deftrap2 (exall_helper, 0, "exall_helper"));
+    dw (RTS);
+
     org (loop);
 }
 
index 142343cfd717cf8d23ff7bc098c6c1ea101f3525..298a46ca6d73aab4b90c086d1a022c62b40bd729 100644 (file)
@@ -1,16 +1,16 @@
  db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00);
- db(0x60); db(0x00); db(0x09); db(0x6c); db(0x00); db(0x00); db(0x07); db(0x36);
+ db(0x60); db(0x00); db(0x09); db(0x78); db(0x00); db(0x00); db(0x07); db(0x42);
  db(0x00); db(0x00); db(0x00); db(0x34); db(0x00); db(0x00); db(0x01); db(0x78);
  db(0x00); db(0x00); db(0x00); db(0x20); db(0x00); db(0x00); db(0x02); db(0x34);
- db(0x00); db(0x00); db(0x0b); db(0xa0); db(0x00); db(0x00); db(0x0d); db(0x38);
- db(0x43); db(0xfa); db(0x0f); db(0x0e); db(0x4e); db(0xae); db(0xff); db(0xa0);
+ db(0x00); db(0x00); db(0x0b); db(0xba); db(0x00); db(0x00); db(0x0d); db(0x52);
+ db(0x43); db(0xfa); db(0x0f); db(0x28); db(0x4e); db(0xae); db(0xff); db(0xa0);
  db(0x20); db(0x40); db(0x20); db(0x28); db(0x00); db(0x16); db(0x20); db(0x40);
  db(0x4e); db(0x90); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xff); db(0xfe);
  db(0x2c); db(0x78); db(0x00); db(0x04); db(0x30); db(0x3c); db(0xff); db(0xfc);
- db(0x61); db(0x00); db(0x0b); db(0x4e); db(0x2a); db(0x50); db(0x43); db(0xfa);
- db(0x0f); db(0x06); db(0x70); db(0x24); db(0x7a); db(0x01); db(0x4e); db(0xae);
+ db(0x61); db(0x00); db(0x0b); db(0x68); db(0x2a); db(0x50); db(0x43); db(0xfa);
+ db(0x0f); db(0x20); db(0x70); db(0x24); db(0x7a); db(0x01); db(0x4e); db(0xae);
  db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x66); db(0x0c); db(0x43); db(0xfa);
- db(0x0e); db(0xf6); db(0x70); db(0x00); db(0x7a); db(0x00); db(0x4e); db(0xae);
+ db(0x0f); db(0x10); db(0x70); db(0x00); db(0x7a); db(0x00); db(0x4e); db(0xae);
  db(0xfd); db(0xd8); db(0x28); db(0x40); db(0x4a); db(0xad); db(0x01); db(0x0c);
  db(0x67); db(0x5a); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x2c);
  db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
  db(0x7c); db(0x00); db(0xbc); db(0xad); db(0x01); db(0x0c); db(0x64); db(0x2c);
  db(0x2f); db(0x06); db(0x7e); db(0x01); db(0x4a); db(0x45); db(0x67); db(0x04);
  db(0x08); db(0xc7); db(0x00); db(0x02); db(0x2f); db(0x0b); db(0x20); db(0x4b);
- db(0x61); db(0x00); db(0x06); db(0x9c); db(0x26); db(0x5f); db(0x0c); db(0x80);
+ db(0x61); db(0x00); db(0x06); db(0xa8); db(0x26); db(0x5f); db(0x0c); db(0x80);
  db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x08); db(0x48); db(0x46);
  db(0x52); db(0x46); db(0x48); db(0x46); db(0x60); db(0xdc); db(0x2c); db(0x1f);
  db(0x52); db(0x46); db(0x60); db(0xce); db(0x2c); db(0x78); db(0x00); db(0x04);
  db(0x22); db(0x4b); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x2c);
  db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x2c); db(0x78); db(0x00); db(0x04);
  db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x30); db(0x3c);
- db(0xff); db(0x80); db(0x61); db(0x00); db(0x0a); db(0xbc); db(0x4e); db(0x90);
+ db(0xff); db(0x80); db(0x61); db(0x00); db(0x0a); db(0xd6); db(0x4e); db(0x90);
  db(0x72); db(0x03); db(0x74); db(0xf6); db(0x20); db(0x7c); db(0x00); db(0x20);
  db(0x00); db(0x00); db(0x90); db(0x88); db(0x65); db(0x0a); db(0x67); db(0x08);
  db(0x78); db(0x00); db(0x22); db(0x44); db(0x4e); db(0xae); db(0xfd); db(0x96);
- db(0x41); db(0xfa); db(0x0e); db(0x12); db(0x43); db(0xfa); db(0x00); db(0x1c);
- db(0x70); db(0x0a); db(0x61); db(0x00); db(0x0b); db(0xdc); db(0x22); db(0x40);
+ db(0x41); db(0xfa); db(0x0e); db(0x2c); db(0x43); db(0xfa); db(0x00); db(0x1c);
+ db(0x70); db(0x0a); db(0x61); db(0x00); db(0x0b); db(0xf6); db(0x22); db(0x40);
  db(0x72); db(0x01); db(0x30); db(0x3c); db(0xff); db(0x48); db(0x61); db(0x00);
- db(0x0a); db(0x88); db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x7f); db(0xff);
+ db(0x0a); db(0xa2); db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x7f); db(0xff);
  db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0x00);
  db(0x08); db(0xc0); db(0x00); db(0x11); db(0x4e); db(0xae); db(0xfe); db(0xc2);
- db(0x43); db(0xfa); db(0x0e); db(0x0e); db(0x70); db(0x00); db(0x4e); db(0xae);
+ db(0x43); db(0xfa); db(0x0e); db(0x28); db(0x70); db(0x00); db(0x4e); db(0xae);
  db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x67); db(0xe4); db(0x2c); db(0x40);
- db(0x41); db(0xfa); db(0x0d); db(0xe5); db(0x22); db(0x08); db(0x74); db(0x0f);
+ db(0x41); db(0xfa); db(0x0d); db(0xff); db(0x22); db(0x08); db(0x74); db(0x0f);
  db(0x41); db(0xfa); db(0x00); db(0x22); db(0x26); db(0x08); db(0xe4); db(0x8b);
  db(0x28); db(0x3c); db(0x00); db(0x00); db(0x1f); db(0x40); db(0x4e); db(0xae);
  db(0xff); db(0x76); db(0x22); db(0x4e); db(0x2c); db(0x78); db(0x00); db(0x04);
  db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x60); db(0xbc); db(0x00); db(0x00);
  db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00);
  db(0x72); db(0x02); db(0x30); db(0x3c); db(0xff); db(0x48); db(0x61); db(0x00);
- db(0x0a); db(0x28); db(0x4e); db(0x90); db(0x22); db(0x00); db(0x6b); db(0x04);
- db(0x61); db(0x00); db(0x07); db(0x84); db(0x70); db(0x00); db(0x4e); db(0x75);
+ db(0x0a); db(0x42); db(0x4e); db(0x90); db(0x22); db(0x00); db(0x6b); db(0x04);
+ db(0x61); db(0x00); db(0x07); db(0x90); db(0x70); db(0x00); db(0x4e); db(0x75);
  db(0x48); db(0xe7); db(0x00); db(0x20); db(0x30); db(0x3c); db(0xff); db(0x50);
- db(0x61); db(0x00); db(0x0a); db(0x0e); db(0x70); db(0x00); db(0x4e); db(0x90);
+ db(0x61); db(0x00); db(0x0a); db(0x28); db(0x70); db(0x00); db(0x4e); db(0x90);
  db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0xa2); db(0x2c); db(0x78);
  db(0x00); db(0x04); db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00);
- db(0x09); db(0xf8); db(0x70); db(0x02); db(0x4e); db(0x90); db(0x0c); db(0x40);
+ db(0x0a); db(0x12); db(0x70); db(0x02); db(0x4e); db(0x90); db(0x0c); db(0x40);
  db(0x00); db(0x01); db(0x6d); db(0x00); db(0x00); db(0x7c); db(0x6e); db(0x06);
  db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0xe4); db(0x0c); db(0x40);
  db(0x00); db(0x02); db(0x6e); db(0x08); db(0x20); db(0x01); db(0x4e); db(0xae);
  db(0x35); db(0x7c); db(0x12); db(0x34); db(0x00); db(0x18); db(0x25); db(0x49);
  db(0x00); db(0x1a); db(0x20); db(0x69); db(0x00); db(0x10); db(0x22); db(0x4a);
  db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0x00); db(0xff); db(0x74);
- db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x09); db(0x6a);
+ db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x09); db(0x84);
  db(0x70); db(0x04); db(0x4e); db(0x90); db(0x70); db(0x01); db(0x4c); db(0xdf);
  db(0x04); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xc0); db(0xc0);
  db(0x70); db(0x1a); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
  db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40); db(0x41); db(0xfa);
- db(0x0c); db(0xad); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa);
+ db(0x0c); db(0xc7); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa);
  db(0xff); db(0x28); db(0x23); db(0x48); db(0x00); db(0x0e); db(0x41); db(0xfa);
  db(0xff); db(0x20); db(0x23); db(0x48); db(0x00); db(0x12); db(0x33); db(0x7c);
  db(0x02); db(0x14); db(0x00); db(0x08); db(0x70); db(0x03); db(0x4e); db(0xae);
@@ -84,7 +84,7 @@
  db(0x43); db(0xeb); db(0x01); db(0xa0); db(0x11); db(0xb1); db(0x00); db(0x00);
  db(0x00); db(0x0e); db(0x52); db(0x40); db(0x0c); db(0x40); db(0x00); db(0x8c);
  db(0x66); db(0xf2); db(0x20); db(0x0a); db(0xe4); db(0x88); db(0x21); db(0x40);
- db(0x00); db(0x36); db(0x22); db(0x48); db(0x41); db(0xfa); db(0x0c); db(0x47);
+ db(0x00); db(0x36); db(0x22); db(0x48); db(0x41); db(0xfa); db(0x0c); db(0x61);
  db(0x23); db(0x48); db(0x00); db(0x0a); db(0x20); db(0x6b); db(0x01); db(0x98);
  db(0x41); db(0xe8); db(0x00); db(0x12); db(0x4e); db(0xae); db(0xff); db(0x10);
  db(0x4c); db(0xdf); db(0x4f); db(0x03); db(0x4e); db(0x75); db(0x48); db(0xe7);
  db(0x48); db(0xe7); db(0x40); db(0xe2); db(0x2c); db(0x78); db(0x00); db(0x04);
  db(0x41); db(0xee); db(0x01); db(0x50); db(0x20); db(0x50); db(0x4a); db(0x90);
  db(0x67); db(0x1a); db(0x22); db(0x68); db(0x00); db(0x0a); db(0x45); db(0xfa);
- db(0x0b); db(0x88); db(0x10); db(0x19); db(0x12); db(0x1a); db(0xb0); db(0x01);
+ db(0x0b); db(0xa2); db(0x10); db(0x19); db(0x12); db(0x1a); db(0xb0); db(0x01);
  db(0x66); db(0x06); db(0x4a); db(0x00); db(0x67); db(0x42); db(0x60); db(0xf2);
  db(0x20); db(0x50); db(0x60); db(0xe2); db(0x70); db(0x20); db(0x22); db(0x3c);
  db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
  db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x08); db(0x00); db(0x08);
- db(0x41); db(0xfa); db(0x0b); db(0x5e); db(0x25); db(0x48); db(0x00); db(0x0a);
- db(0x41); db(0xfa); db(0x0a); db(0xeb); db(0x25); db(0x48); db(0x00); db(0x0e);
+ db(0x41); db(0xfa); db(0x0b); db(0x78); db(0x25); db(0x48); db(0x00); db(0x0a);
+ db(0x41); db(0xfa); db(0x0b); db(0x05); db(0x25); db(0x48); db(0x00); db(0x0e);
  db(0x41); db(0xea); db(0x00); db(0x12); db(0x20); db(0x88); db(0x58); db(0x90);
  db(0x21); db(0x48); db(0x00); db(0x08); db(0x41); db(0xee); db(0x01); db(0x50);
  db(0x22); db(0x4a); db(0x4e); db(0xae); db(0xff); db(0x0a); db(0x20); db(0x4a);
  db(0x4e); db(0x75); db(0x72); db(0x01); db(0x0c); db(0x00); db(0x00); db(0xfe);
  db(0x66); db(0x02); db(0x72); db(0x03); db(0x70); db(0x00); db(0x61); db(0x00);
  db(0xff); db(0x86); db(0x4e); db(0x75); db(0x20); db(0x6c); db(0x00); db(0x24);
- db(0x4a); db(0xa8); db(0x00); db(0x08); db(0x66); db(0x08); db(0x4a); db(0xa8);
- db(0x00); db(0x0c); db(0x66); db(0x02); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0x3f); db(0x3e); db(0x2a); db(0x48); db(0x24); db(0x6c); db(0x00); db(0x18);
- db(0x2e); db(0x15); db(0x7a); db(0x00); db(0x4a); db(0x87); db(0x67); db(0x70);
- db(0x20); db(0x0a); db(0x67); db(0x6c); db(0x7c); db(0x00); db(0x22); db(0x2d);
- db(0x00); db(0x08); db(0x67); db(0x12); db(0x24); db(0x2a); db(0x00); db(0x04);
- db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x4e); db(0xae); db(0xfc); db(0x34);
- db(0x4a); db(0x80); db(0x66); db(0x02); db(0x50); db(0xc6); db(0x22); db(0x2d);
- db(0x00); db(0x0c); db(0x67); db(0x1c); db(0x20); db(0x41); db(0x22); db(0x4a);
- db(0x2f); db(0x0a); db(0x45); db(0xec); db(0x00); db(0x20); db(0x48); db(0x7a);
- db(0x00); db(0x08); db(0x2f); db(0x28); db(0x00); db(0x08); db(0x4e); db(0x75);
- db(0x24); db(0x5f); db(0x4a); db(0x80); db(0x66); db(0x02); db(0x50); db(0xc6);
- db(0x4a); db(0x06); db(0x67); db(0x24); db(0x20); db(0x2a); db(0x00); db(0x04);
- db(0x90); db(0x8a); db(0x4a); db(0x92); db(0x66); db(0x0a); db(0x20); db(0x05);
- db(0x67); db(0x10); db(0x20); db(0x40); db(0x42); db(0x90); db(0x60); db(0x0a);
- db(0x20); db(0x52); db(0x22); db(0x4a); db(0x22); db(0xd8); db(0x59); db(0x80);
- db(0x6a); db(0xfa); db(0x53); db(0x95); db(0x53); db(0x87); db(0x60); db(0x94);
- db(0x2a); db(0x0a); db(0x24); db(0x52); db(0x53); db(0x87); db(0x60); db(0x8c);
- db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x4e); db(0x75); db(0x61); db(0x00);
- db(0xfc); db(0x88); db(0x21); db(0x40); db(0x01); db(0x98); db(0x2f); db(0x08);
- db(0x30); db(0x3c); db(0xff); db(0xfc); db(0x61); db(0x00); db(0x04); db(0x4a);
- db(0x2a); db(0x50); db(0x30); db(0x3c); db(0xff); db(0x28); db(0x61); db(0x00);
- db(0x04); db(0x40); db(0x22); db(0x48); db(0x20); db(0x5f); db(0x42); db(0xa8);
- db(0x01); db(0x90); db(0x42); db(0xa8); db(0x01); db(0x94); db(0x4e); db(0x91);
- db(0x26); db(0x00); db(0x0c); db(0x43); db(0xff); db(0xfe); db(0x67); db(0x00);
- db(0xf9); db(0xa8); db(0x0c); db(0x43); db(0x00); db(0x01); db(0x66); db(0x0e);
- db(0x08); db(0x07); db(0x00); db(0x02); db(0x66); db(0x08); db(0x08); db(0x07);
- db(0x00); db(0x01); db(0x66); db(0x00); db(0x00); db(0x02); db(0x20); db(0x28);
- db(0x01); db(0x90); db(0x67); db(0x14); db(0x6b); db(0x12); db(0x2f); db(0x08);
- db(0x72); db(0x01); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x20); db(0x5f); db(0x21); db(0x40); db(0x01); db(0x94);
- db(0x4a); db(0x83); db(0x6a); db(0x0e); db(0x22); db(0x48); db(0x30); db(0x3c);
- db(0xff); db(0x20); db(0x61); db(0x00); db(0x03); db(0xec); db(0x4e); db(0x90);
- db(0x60); db(0x26); db(0x2c); db(0x4c); db(0x2f); db(0x08); db(0x4e); db(0xae);
- db(0xff); db(0x70); db(0x20); db(0x5f); db(0x22); db(0x48); db(0x26); db(0x40);
- db(0x30); db(0x3c); db(0xff); db(0x20); db(0x61); db(0x00); db(0x03); db(0xd2);
- db(0x4e); db(0x90); db(0x70); db(0x00); db(0x27); db(0x40); db(0x00); db(0x08);
- db(0x27); db(0x40); db(0x00); db(0x10); db(0x27); db(0x40); db(0x00); db(0x20);
- db(0x4a); db(0xa9); db(0x01); db(0x94); db(0x67); db(0x28); db(0x20); db(0x69);
- db(0x01); db(0x94); db(0x61); db(0x00); db(0xfa); db(0xea); db(0x48); db(0xe7);
- db(0x80); db(0xc0); db(0x20); db(0x29); db(0x01); db(0x90); db(0x22); db(0x69);
- db(0x01); db(0x94); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae);
- db(0xff); db(0x2e); db(0x4c); db(0xdf); db(0x03); db(0x01); db(0x4a); db(0x80);
- db(0x67); db(0x04); db(0x61); db(0x00); db(0xfa); db(0x74); db(0x4a); db(0x83);
- db(0x6b); db(0x00); db(0xf9); db(0x0e); db(0x30); db(0x3c); db(0xff); db(0x18);
- db(0x61); db(0x00); db(0x03); db(0x86); db(0x4e); db(0x90); db(0x20); db(0x03);
- db(0x16); db(0x29); db(0x00); db(0x4f); db(0x4a); db(0x80); db(0x66); db(0x1a);
- db(0x27); db(0x7c); db(0x00); db(0x00); db(0x17); db(0x70); db(0x00); db(0x14);
- db(0x41); db(0xfa); db(0xf7); db(0xda); db(0x20); db(0x08); db(0xe4); db(0x88);
- db(0x27); db(0x40); db(0x00); db(0x20); db(0x70); db(0xff); db(0x27); db(0x40);
- db(0x00); db(0x24); db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x3a);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0x14); db(0x72); db(0x00);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40); db(0x70); db(0x00);
- db(0x22); db(0x80); db(0x23); db(0x40); db(0x00); db(0x04); db(0x33); db(0x40);
- db(0x00); db(0x0e); db(0x30); db(0x3c); db(0x10); db(0x00); db(0x80); db(0x03);
- db(0x33); db(0x40); db(0x00); db(0x08); db(0x23); db(0x6d); db(0x01); db(0x04);
- db(0x00); db(0x0a); db(0x23); db(0x4b); db(0x00); db(0x10); db(0x41); db(0xec);
- db(0x00); db(0x4a); db(0x4e); db(0xae); db(0xfe); db(0xf2); db(0x70); db(0x00);
- db(0x4e); db(0x75); db(0x24); db(0x49); db(0x20); db(0x4b); db(0x72); db(0x00);
- db(0x22); db(0x41); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x08);
- db(0x08); db(0x07); db(0x00); db(0x02); db(0x67); db(0x02); db(0x72); db(0x01);
- db(0x70); db(0xec); db(0x2c); db(0x4c); db(0x4e); db(0xae); db(0xff); db(0x6a);
- db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x5c); db(0x08); db(0x07);
- db(0x00); db(0x02); db(0x66); db(0x56); db(0x20); db(0x52); db(0x74); db(0x02);
- db(0x52); db(0x82); db(0x4a); db(0x30); db(0x28); db(0xfd); db(0x66); db(0xf8);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x20); db(0x02); db(0x72); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x3a);
- db(0x20); db(0x52); db(0x24); db(0x40); db(0x22); db(0x4a); db(0x12); db(0xd8);
- db(0x66); db(0xfc); db(0x13); db(0x7c); db(0x00); db(0x3a); db(0xff); db(0xff);
- db(0x42); db(0x11); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa);
- db(0x06); db(0x60); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
- db(0x2c); db(0x40); db(0x22); db(0x0a); db(0x4e); db(0xae); db(0xff); db(0x52);
- db(0x22); db(0x4e); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae);
- db(0xfe); db(0x62); db(0x22); db(0x4a); db(0x20); db(0x02); db(0x4e); db(0xae);
- db(0xff); db(0x2e); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0x3f); db(0x3e); db(0x2c); db(0x01); db(0x7e); db(0x06); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x43); db(0xfa); db(0x06); db(0x4a); db(0x70); db(0x24);
- db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x66); db(0x0e);
- db(0x08); db(0x87); db(0x00); db(0x02); db(0x43); db(0xfa); db(0x06); db(0x38);
- db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x28); db(0x40);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x2c); db(0x22); db(0x3c);
- db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x20); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x2c); db(0x21); db(0x4c);
- db(0x01); db(0x9c); db(0x48); db(0xe7); db(0x00); db(0x8a); db(0x61); db(0x00);
- db(0xfd); db(0xf6); db(0x4c); db(0xdf); db(0x51); db(0x00); db(0x0c); db(0x80);
- db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x08); db(0x48); db(0x46);
- db(0x52); db(0x46); db(0x48); db(0x46); db(0x60); db(0xe4); db(0x22); db(0x48);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x2c); db(0x4e); db(0xae);
- db(0xff); db(0x2e); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x62);
- db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x4e); db(0x75); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda);
- db(0x20); db(0x40); db(0x4b); db(0xe8); db(0x00); db(0x5c); db(0x43); db(0xfa);
- db(0x05); db(0xb0); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
- db(0x24); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0xb9);
+ db(0x4a); db(0x90); db(0x67); db(0x0c); db(0x4a); db(0xa8); db(0x00); db(0x08);
+ db(0x66); db(0x0a); db(0x4a); db(0xa8); db(0x00); db(0x0c); db(0x66); db(0x04);
+ db(0x70); db(0x01); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e);
+ db(0x2a); db(0x48); db(0x24); db(0x6c); db(0x00); db(0x18); db(0x2e); db(0x15);
+ db(0x7a); db(0x00); db(0x4a); db(0x87); db(0x67); db(0x70); db(0x20); db(0x0a);
+ db(0x67); db(0x6c); db(0x7c); db(0x00); db(0x22); db(0x2d); db(0x00); db(0x08);
+ db(0x67); db(0x12); db(0x24); db(0x2a); db(0x00); db(0x04); db(0x2c); db(0x6b);
+ db(0x00); db(0xa0); db(0x4e); db(0xae); db(0xfc); db(0x34); db(0x4a); db(0x80);
+ db(0x66); db(0x02); db(0x50); db(0xc6); db(0x22); db(0x2d); db(0x00); db(0x0c);
+ db(0x67); db(0x1c); db(0x20); db(0x41); db(0x22); db(0x4a); db(0x2f); db(0x0a);
+ db(0x45); db(0xec); db(0x00); db(0x20); db(0x48); db(0x7a); db(0x00); db(0x08);
+ db(0x2f); db(0x28); db(0x00); db(0x08); db(0x4e); db(0x75); db(0x24); db(0x5f);
+ db(0x4a); db(0x80); db(0x66); db(0x02); db(0x50); db(0xc6); db(0x4a); db(0x06);
+ db(0x67); db(0x24); db(0x20); db(0x2a); db(0x00); db(0x04); db(0x90); db(0x8a);
+ db(0x4a); db(0x92); db(0x66); db(0x0a); db(0x20); db(0x05); db(0x67); db(0x10);
+ db(0x20); db(0x40); db(0x42); db(0x90); db(0x60); db(0x0a); db(0x20); db(0x52);
+ db(0x22); db(0x4a); db(0x22); db(0xd8); db(0x59); db(0x80); db(0x6a); db(0xfa);
+ db(0x53); db(0x95); db(0x53); db(0x87); db(0x60); db(0x94); db(0x2a); db(0x0a);
+ db(0x24); db(0x52); db(0x53); db(0x87); db(0x60); db(0x8c); db(0x4c); db(0xdf);
+ db(0x7c); db(0xfc); db(0x20); db(0x6c); db(0x00); db(0x24); db(0x4a); db(0x90);
+ db(0x4e); db(0x75); db(0x61); db(0x00); db(0xfc); db(0x7c); db(0x21); db(0x40);
+ db(0x01); db(0x98); db(0x2f); db(0x08); db(0x30); db(0x3c); db(0xff); db(0xfc);
+ db(0x61); db(0x00); db(0x04); db(0x58); db(0x2a); db(0x50); db(0x30); db(0x3c);
+ db(0xff); db(0x28); db(0x61); db(0x00); db(0x04); db(0x4e); db(0x22); db(0x48);
+ db(0x20); db(0x5f); db(0x42); db(0xa8); db(0x01); db(0x90); db(0x42); db(0xa8);
+ db(0x01); db(0x94); db(0x4e); db(0x91); db(0x26); db(0x00); db(0x0c); db(0x43);
+ db(0xff); db(0xfe); db(0x67); db(0x00); db(0xf9); db(0x9c); db(0x0c); db(0x43);
+ db(0x00); db(0x01); db(0x66); db(0x0e); db(0x08); db(0x07); db(0x00); db(0x02);
+ db(0x66); db(0x08); db(0x08); db(0x07); db(0x00); db(0x01); db(0x66); db(0x00);
+ db(0x00); db(0x02); db(0x20); db(0x28); db(0x01); db(0x90); db(0x67); db(0x14);
+ db(0x6b); db(0x12); db(0x2f); db(0x08); db(0x72); db(0x01); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x5f);
+ db(0x21); db(0x40); db(0x01); db(0x94); db(0x4a); db(0x83); db(0x6a); db(0x0e);
+ db(0x22); db(0x48); db(0x30); db(0x3c); db(0xff); db(0x20); db(0x61); db(0x00);
+ db(0x03); db(0xfa); db(0x4e); db(0x90); db(0x60); db(0x26); db(0x2c); db(0x4c);
+ db(0x2f); db(0x08); db(0x4e); db(0xae); db(0xff); db(0x70); db(0x20); db(0x5f);
+ db(0x22); db(0x48); db(0x26); db(0x40); db(0x30); db(0x3c); db(0xff); db(0x20);
+ db(0x61); db(0x00); db(0x03); db(0xe0); db(0x4e); db(0x90); db(0x70); db(0x00);
+ db(0x27); db(0x40); db(0x00); db(0x08); db(0x27); db(0x40); db(0x00); db(0x10);
+ db(0x27); db(0x40); db(0x00); db(0x20); db(0x4a); db(0xa9); db(0x01); db(0x94);
+ db(0x67); db(0x28); db(0x20); db(0x69); db(0x01); db(0x94); db(0x61); db(0x00);
+ db(0xfa); db(0xde); db(0x48); db(0xe7); db(0x80); db(0xc0); db(0x20); db(0x29);
+ db(0x01); db(0x90); db(0x22); db(0x69); db(0x01); db(0x94); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x4c); db(0xdf);
+ db(0x03); db(0x01); db(0x4a); db(0x80); db(0x67); db(0x04); db(0x61); db(0x00);
+ db(0xfa); db(0x68); db(0x4a); db(0x83); db(0x6b); db(0x00); db(0xf9); db(0x02);
+ db(0x30); db(0x3c); db(0xff); db(0x18); db(0x61); db(0x00); db(0x03); db(0x94);
+ db(0x4e); db(0x90); db(0x20); db(0x03); db(0x16); db(0x29); db(0x00); db(0x4f);
+ db(0x4a); db(0x80); db(0x66); db(0x1a); db(0x27); db(0x7c); db(0x00); db(0x00);
+ db(0x17); db(0x70); db(0x00); db(0x14); db(0x41); db(0xfa); db(0xf7); db(0xce);
+ db(0x20); db(0x08); db(0xe4); db(0x88); db(0x27); db(0x40); db(0x00); db(0x20);
+ db(0x70); db(0xff); db(0x27); db(0x40); db(0x00); db(0x24); db(0x08); db(0x07);
+ db(0x00); db(0x00); db(0x67); db(0x3a); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x70); db(0x14); db(0x72); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x22); db(0x40); db(0x70); db(0x00); db(0x22); db(0x80); db(0x23); db(0x40);
+ db(0x00); db(0x04); db(0x33); db(0x40); db(0x00); db(0x0e); db(0x30); db(0x3c);
+ db(0x10); db(0x00); db(0x80); db(0x03); db(0x33); db(0x40); db(0x00); db(0x08);
+ db(0x23); db(0x6d); db(0x01); db(0x04); db(0x00); db(0x0a); db(0x23); db(0x4b);
+ db(0x00); db(0x10); db(0x41); db(0xec); db(0x00); db(0x4a); db(0x4e); db(0xae);
+ db(0xfe); db(0xf2); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x24); db(0x49);
+ db(0x20); db(0x4b); db(0x72); db(0x00); db(0x22); db(0x41); db(0x08); db(0x07);
+ db(0x00); db(0x01); db(0x67); db(0x08); db(0x08); db(0x07); db(0x00); db(0x02);
+ db(0x67); db(0x02); db(0x72); db(0x01); db(0x70); db(0xec); db(0x2c); db(0x4c);
+ db(0x4e); db(0xae); db(0xff); db(0x6a); db(0x08); db(0x07); db(0x00); db(0x01);
+ db(0x67); db(0x5c); db(0x08); db(0x07); db(0x00); db(0x02); db(0x66); db(0x56);
+ db(0x20); db(0x52); db(0x74); db(0x02); db(0x52); db(0x82); db(0x4a); db(0x30);
+ db(0x28); db(0xfd); db(0x66); db(0xf8); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x20); db(0x02); db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x4a); db(0x80); db(0x67); db(0x3a); db(0x20); db(0x52); db(0x24); db(0x40);
+ db(0x22); db(0x4a); db(0x12); db(0xd8); db(0x66); db(0xfc); db(0x13); db(0x7c);
+ db(0x00); db(0x3a); db(0xff); db(0xff); db(0x42); db(0x11); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x43); db(0xfa); db(0x06); db(0x6e); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x2c); db(0x40); db(0x22); db(0x0a);
+ db(0x4e); db(0xae); db(0xff); db(0x52); db(0x22); db(0x4e); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x22); db(0x4a);
+ db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x70); db(0x00);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2c); db(0x01);
+ db(0x7e); db(0x06); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa);
+ db(0x06); db(0x58); db(0x70); db(0x24); db(0x4e); db(0xae); db(0xfd); db(0xd8);
+ db(0x4a); db(0x80); db(0x66); db(0x0e); db(0x08); db(0x87); db(0x00); db(0x02);
+ db(0x43); db(0xfa); db(0x06); db(0x46); db(0x70); db(0x00); db(0x4e); db(0xae);
+ db(0xfd); db(0xd8); db(0x28); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00);
+ db(0x02); db(0x2c); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40); db(0x4a); db(0x80);
+ db(0x67); db(0x2c); db(0x21); db(0x4c); db(0x01); db(0x9c); db(0x48); db(0xe7);
+ db(0x00); db(0x8a); db(0x61); db(0x00); db(0xfd); db(0xf6); db(0x4c); db(0xdf);
+ db(0x51); db(0x00); db(0x0c); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe);
+ db(0x67); db(0x08); db(0x48); db(0x46); db(0x52); db(0x46); db(0x48); db(0x46);
+ db(0x60); db(0xe4); db(0x22); db(0x48); db(0x20); db(0x3c); db(0x00); db(0x00);
+ db(0x02); db(0x2c); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x22); db(0x4c);
+ db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x4c); db(0xdf); db(0x7c); db(0xfc);
+ db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x93); db(0xc9);
+ db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x20); db(0x40); db(0x4b); db(0xe8);
+ db(0x00); db(0x5c); db(0x43); db(0xfa); db(0x05); db(0xbe); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x24); db(0x40); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x00); db(0xb9); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x26); db(0x40);
+ db(0x7c); db(0x00); db(0x26); db(0x86); db(0x27); db(0x46); db(0x00); db(0x04);
+ db(0x27); db(0x46); db(0x00); db(0x08); db(0x27); db(0x4a); db(0x00); db(0xa0);
+ db(0x50); db(0xeb); db(0x00); db(0x9e); db(0x93); db(0xc9); db(0x4e); db(0xae);
+ db(0xfe); db(0xda); db(0x27); db(0x40); db(0x00); db(0xb0); db(0x61); db(0x00);
+ db(0x02); db(0xc2); db(0x27); db(0x40); db(0x00); db(0xa4); db(0x61); db(0x00);
+ db(0x02); db(0xee); db(0x27); db(0x40); db(0x00); db(0xa8); db(0x7a); db(0x00);
+ db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x80); db(0x20); db(0x4d);
+ db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x26); db(0x2c);
+ db(0x00); db(0x0a); db(0x30); db(0x3c); db(0xff); db(0x40); db(0x61); db(0x00);
+ db(0x01); db(0xba); db(0x70); db(0x00); db(0x4e); db(0x90); db(0x24); db(0x00);
+ db(0x70); db(0x01); db(0x61); db(0x00); db(0xfa); db(0x34); db(0x08); db(0x02);
+ db(0x00); db(0x01); db(0x67); db(0x06); db(0x70); db(0x01); db(0x61); db(0x00);
+ db(0xfb); db(0x9c); db(0x61); db(0x00); db(0x03); db(0x4a); db(0x60); db(0x00);
+ db(0x00); db(0xfc); db(0x61); db(0x00); db(0x03); db(0x42); db(0x20); db(0x4d);
+ db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x4a); db(0x80);
+ db(0x66); db(0x10); db(0x70); db(0x00); db(0x12); db(0x2d); db(0x00); db(0x0f);
+ db(0x03); db(0xc0); db(0x08); db(0xc0); db(0x00); db(0x11); db(0x4e); db(0xae);
+ db(0xfe); db(0xc2); db(0x4a); db(0x2b); db(0x00); db(0xac); db(0x67); db(0x08);
+ db(0x61); db(0x00); db(0xfc); db(0x40); db(0x42); db(0x2b); db(0x00); db(0xac);
+ db(0x20); db(0x0c); db(0x67); db(0xce); db(0x0c); db(0x6c); db(0x00); db(0x26);
+ db(0x00); db(0x12); db(0x66); db(0x4c); db(0x0c); db(0xac); db(0x40); db(0x00);
+ db(0x00); db(0x00); db(0x00); db(0x14); db(0x66); db(0x42); db(0x0c); db(0x6c);
+ db(0x12); db(0x34); db(0x00); db(0x18); db(0x66); db(0x3a); db(0x20); db(0x6c);
+ db(0x00); db(0x1a); db(0x20); db(0x28); db(0x00); db(0x0c); db(0x02); db(0x80);
+ db(0x80); db(0x00); db(0x00); db(0x08); db(0x0c); db(0x80); db(0x80); db(0x00);
+ db(0x00); db(0x08); db(0x66); db(0x18); db(0x02); db(0xa8); db(0x7f); db(0xff);
+ db(0xff); db(0xff); db(0x00); db(0x0c); db(0x20); db(0x68); db(0x00); db(0x10);
+ db(0x22); db(0x4c); db(0x12); db(0xbc); db(0x00); db(0x08); db(0x4e); db(0xae);
+ db(0xfe); db(0x92); db(0x60); db(0x86); db(0x22); db(0x4c); db(0x70); db(0x26);
+ db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x60); db(0x00); db(0xff); db(0x7c);
+ db(0x26); db(0x2c); db(0x00); db(0x0a); db(0x66); db(0x3e); db(0x30); db(0x3c);
+ db(0xff); db(0x50); db(0x61); db(0x00); db(0x01); db(0x06); db(0x70); db(0x01);
+ db(0x4e); db(0x90); db(0x45); db(0xeb); db(0x00); db(0x04); db(0x20); db(0x52);
+ db(0x20); db(0x08); db(0x67); db(0x00); db(0xff); db(0x5e); db(0x22); db(0x50);
+ db(0x20); db(0x40); db(0x20); db(0x28); db(0x00); db(0x04); db(0x6a); db(0x16);
+ db(0x48); db(0xe7); db(0x00); db(0xc0); db(0x28); db(0x68); db(0x00); db(0x0a);
+ db(0x61); db(0x4a); db(0x53); db(0x85); db(0x4c); db(0xdf); db(0x03); db(0x00);
+ db(0x24); db(0x89); db(0x20); db(0x49); db(0x60); db(0xda); db(0x24); db(0x48);
+ db(0x20); db(0x49); db(0x60); db(0xd4); db(0x0c); db(0x85); db(0x00); db(0x00);
+ db(0x00); db(0x14); db(0x65); db(0x00); db(0x00); db(0x0a); db(0x70); db(0x01);
+ db(0x29); db(0x40); db(0x00); db(0x04); db(0x60); db(0x12); db(0x61); db(0x5c);
+ db(0x30); db(0x3c); db(0xff); db(0x30); db(0x61); db(0x00); db(0x00); db(0xb4);
+ db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x0e); db(0x52); db(0x85);
+ db(0x28); db(0xab); db(0x00); db(0x04); db(0x27); db(0x4c); db(0x00); db(0x04);
+ db(0x60); db(0x00); db(0xff); db(0x08); db(0x28); db(0x43); db(0x61); db(0x04);
+ db(0x60); db(0x00); db(0xff); db(0x00); db(0x0c); db(0xac); db(0x00); db(0x00);
+ db(0x00); db(0x1f); db(0x00); db(0x08); db(0x66); db(0x04); db(0x61); db(0x00);
+ db(0xfb); db(0x40); db(0x0c); db(0xac); db(0x00); db(0x00); db(0x04); db(0x09);
+ db(0x00); db(0x08); db(0x66); db(0x12); db(0x61); db(0x00); db(0xfb); db(0x6e);
+ db(0x66); db(0x0c); db(0x30); db(0x3c); db(0xff); db(0x58); db(0x61); db(0x00);
+ db(0x00); db(0x72); db(0x4e); db(0x90); db(0x60); db(0xee); db(0x22); db(0x54);
+ db(0x20); db(0x6c); db(0x00); db(0x04); db(0x29); db(0x4d); db(0x00); db(0x04);
+ db(0x4e); db(0xee); db(0xfe); db(0x92); db(0x2f); db(0x05); db(0x7a); db(0xfc);
+ db(0x24); db(0x53); db(0x2e); db(0x0a); db(0x22); db(0x0a); db(0x67); db(0x00);
+ db(0x00); db(0x0c); db(0x52); db(0x85); db(0x67); db(0x1e); db(0x22); db(0x4a);
+ db(0x24); db(0x52); db(0x60); db(0xf0); db(0x52); db(0x85); db(0x67); db(0x3c);
+ db(0x24); db(0x47); db(0x70); db(0x18); db(0x72); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x52); db(0x46); db(0x24); db(0x40); db(0x24); db(0x87);
+ db(0x2e); db(0x0a); db(0x60); db(0xe8); db(0x20); db(0x12); db(0x67); db(0x24);
+ db(0x20); db(0x40); db(0x20); db(0x10); db(0x67); db(0x1e); db(0x20); db(0x40);
+ db(0x20); db(0x10); db(0x67); db(0x18); db(0x70); db(0x00); db(0x22); db(0x80);
+ db(0x22); db(0x4a); db(0x24); db(0x51); db(0x70); db(0x18); db(0x4e); db(0xae);
+ db(0xff); db(0x2e); db(0x06); db(0x86); db(0x00); db(0x01); db(0x00); db(0x00);
+ db(0x20); db(0x0a); db(0x66); db(0xec); db(0x26); db(0x87); db(0x2a); db(0x1f);
+ db(0x4e); db(0x75); db(0x41); db(0xfa); db(0xf4); db(0x48); db(0x02); db(0x80);
+ db(0x00); db(0x00); db(0xff); db(0xff); db(0xd1); db(0xc0); db(0x4e); db(0x75);
+ db(0x00); db(0x00); db(0x0c); db(0xaf); db(0x00); db(0x00); db(0x00); db(0x22);
+ db(0x00); db(0x08); db(0x66); db(0x30); db(0x48); db(0xe7); db(0xc0); db(0xe2);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x93); db(0xc9); db(0x4e); db(0xae);
+ db(0xfe); db(0xda); db(0x24); db(0x40); db(0x22); db(0x4a); db(0x70); db(0xec);
+ db(0x4e); db(0xae); db(0xfe); db(0xd4); db(0x41); db(0xfa); db(0xff); db(0xda);
+ db(0x32); db(0x10); db(0xb2); db(0x50); db(0x67); db(0xfc); db(0x22); db(0x4a);
+ db(0x4e); db(0xae); db(0xfe); db(0xd4); db(0x72); db(0x01); db(0x4c); db(0xdf);
+ db(0x47); db(0x03); db(0x58); db(0x8f); db(0x4e); db(0x75); db(0x20); db(0x88);
+ db(0x58); db(0x90); db(0x42); db(0xa8); db(0x00); db(0x04); db(0x21); db(0x48);
+ db(0x00); db(0x08); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22);
+ db(0x2c); db(0x79); db(0x00); db(0x00); db(0x00); db(0x04); db(0x70); db(0xff);
+ db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x91); db(0xc8); db(0x24); db(0x00);
+ db(0x6b); db(0x32); db(0x70); db(0x22); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x91); db(0xc8);
+ db(0x24); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x1e); db(0x15); db(0x7c);
+ db(0x00); db(0x04); db(0x00); db(0x08); db(0x15); db(0x42); db(0x00); db(0x0f);
+ db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x25); db(0x40);
+ db(0x00); db(0x10); db(0x41); db(0xea); db(0x00); db(0x14); db(0x61); db(0x00);
+ db(0xff); db(0xae); db(0x20); db(0x4a); db(0x20); db(0x08); db(0x4c); db(0xdf);
+ db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22);
+ db(0x2c); db(0x79); db(0x00); db(0x00); db(0x00); db(0x04); db(0x4a); db(0x80);
+ db(0x67); db(0x20); db(0x24); db(0x40); db(0x74); db(0x30); db(0x20); db(0x02);
  db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x26); db(0x40); db(0x7c); db(0x00); db(0x26); db(0x86);
- db(0x27); db(0x46); db(0x00); db(0x04); db(0x27); db(0x46); db(0x00); db(0x08);
- db(0x27); db(0x4a); db(0x00); db(0xa0); db(0x50); db(0xeb); db(0x00); db(0x9e);
- db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x27); db(0x40);
- db(0x00); db(0xb0); db(0x61); db(0x00); db(0x02); db(0xb4); db(0x27); db(0x40);
- db(0x00); db(0xa4); db(0x61); db(0x00); db(0x02); db(0xe0); db(0x27); db(0x40);
- db(0x00); db(0xa8); db(0x7a); db(0x00); db(0x20); db(0x4d); db(0x4e); db(0xae);
- db(0xfe); db(0x80); db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x8c);
- db(0x28); db(0x40); db(0x26); db(0x2c); db(0x00); db(0x0a); db(0x30); db(0x3c);
- db(0xff); db(0x40); db(0x61); db(0x00); db(0x01); db(0xac); db(0x70); db(0x00);
- db(0x4e); db(0x90); db(0x24); db(0x00); db(0x70); db(0x01); db(0x61); db(0x00);
- db(0xfa); db(0x40); db(0x08); db(0x02); db(0x00); db(0x01); db(0x67); db(0x06);
- db(0x70); db(0x01); db(0x61); db(0x00); db(0xfb); db(0xa8); db(0x61); db(0x00);
- db(0x03); db(0x3c); db(0x60); db(0x00); db(0x00); db(0xfc); db(0x61); db(0x00);
- db(0x03); db(0x34); db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x8c);
- db(0x28); db(0x40); db(0x4a); db(0x80); db(0x66); db(0x10); db(0x70); db(0x00);
- db(0x12); db(0x2d); db(0x00); db(0x0f); db(0x03); db(0xc0); db(0x08); db(0xc0);
- db(0x00); db(0x11); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x4a); db(0x2b);
- db(0x00); db(0xac); db(0x67); db(0x08); db(0x61); db(0x00); db(0xfc); db(0x4c);
- db(0x42); db(0x2b); db(0x00); db(0xac); db(0x20); db(0x0c); db(0x67); db(0xce);
- db(0x0c); db(0x6c); db(0x00); db(0x26); db(0x00); db(0x12); db(0x66); db(0x4c);
- db(0x0c); db(0xac); db(0x40); db(0x00); db(0x00); db(0x00); db(0x00); db(0x14);
- db(0x66); db(0x42); db(0x0c); db(0x6c); db(0x12); db(0x34); db(0x00); db(0x18);
- db(0x66); db(0x3a); db(0x20); db(0x6c); db(0x00); db(0x1a); db(0x20); db(0x28);
- db(0x00); db(0x0c); db(0x02); db(0x80); db(0x80); db(0x00); db(0x00); db(0x08);
- db(0x0c); db(0x80); db(0x80); db(0x00); db(0x00); db(0x08); db(0x66); db(0x18);
- db(0x02); db(0xa8); db(0x7f); db(0xff); db(0xff); db(0xff); db(0x00); db(0x0c);
- db(0x20); db(0x68); db(0x00); db(0x10); db(0x22); db(0x4c); db(0x12); db(0xbc);
- db(0x00); db(0x08); db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0x86);
- db(0x22); db(0x4c); db(0x70); db(0x26); db(0x4e); db(0xae); db(0xff); db(0x2e);
- db(0x60); db(0x00); db(0xff); db(0x7c); db(0x26); db(0x2c); db(0x00); db(0x0a);
- db(0x66); db(0x3e); db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00);
- db(0x00); db(0xf8); db(0x70); db(0x01); db(0x4e); db(0x90); db(0x45); db(0xeb);
- db(0x00); db(0x04); db(0x20); db(0x52); db(0x20); db(0x08); db(0x67); db(0x00);
- db(0xff); db(0x5e); db(0x22); db(0x50); db(0x20); db(0x40); db(0x20); db(0x28);
- db(0x00); db(0x04); db(0x6a); db(0x16); db(0x48); db(0xe7); db(0x00); db(0xc0);
- db(0x28); db(0x68); db(0x00); db(0x0a); db(0x61); db(0x4a); db(0x53); db(0x85);
- db(0x4c); db(0xdf); db(0x03); db(0x00); db(0x24); db(0x89); db(0x20); db(0x49);
- db(0x60); db(0xda); db(0x24); db(0x48); db(0x20); db(0x49); db(0x60); db(0xd4);
- db(0x0c); db(0x85); db(0x00); db(0x00); db(0x00); db(0x14); db(0x65); db(0x00);
- db(0x00); db(0x0a); db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x04);
- db(0x60); db(0x12); db(0x61); db(0x4e); db(0x30); db(0x3c); db(0xff); db(0x30);
- db(0x61); db(0x00); db(0x00); db(0xa6); db(0x4e); db(0x90); db(0x4a); db(0x80);
- db(0x67); db(0x0e); db(0x52); db(0x85); db(0x28); db(0xab); db(0x00); db(0x04);
- db(0x27); db(0x4c); db(0x00); db(0x04); db(0x60); db(0x00); db(0xff); db(0x08);
- db(0x28); db(0x43); db(0x61); db(0x04); db(0x60); db(0x00); db(0xff); db(0x00);
- db(0x0c); db(0xac); db(0x00); db(0x00); db(0x00); db(0x1f); db(0x00); db(0x08);
- db(0x66); db(0x04); db(0x61); db(0x00); db(0xfb); db(0x4c); db(0x0c); db(0xac);
- db(0x00); db(0x00); db(0x04); db(0x09); db(0x00); db(0x08); db(0x66); db(0x04);
- db(0x61); db(0x00); db(0xfb); db(0x7a); db(0x22); db(0x54); db(0x20); db(0x6c);
- db(0x00); db(0x04); db(0x29); db(0x4d); db(0x00); db(0x04); db(0x4e); db(0xee);
- db(0xfe); db(0x92); db(0x2f); db(0x05); db(0x7a); db(0xfc); db(0x24); db(0x53);
- db(0x2e); db(0x0a); db(0x22); db(0x0a); db(0x67); db(0x00); db(0x00); db(0x0c);
- db(0x52); db(0x85); db(0x67); db(0x1e); db(0x22); db(0x4a); db(0x24); db(0x52);
- db(0x60); db(0xf0); db(0x52); db(0x85); db(0x67); db(0x3c); db(0x24); db(0x47);
- db(0x70); db(0x18); db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x52); db(0x46); db(0x24); db(0x40); db(0x24); db(0x87); db(0x2e); db(0x0a);
- db(0x60); db(0xe8); db(0x20); db(0x12); db(0x67); db(0x24); db(0x20); db(0x40);
- db(0x20); db(0x10); db(0x67); db(0x1e); db(0x20); db(0x40); db(0x20); db(0x10);
- db(0x67); db(0x18); db(0x70); db(0x00); db(0x22); db(0x80); db(0x22); db(0x4a);
- db(0x24); db(0x51); db(0x70); db(0x18); db(0x4e); db(0xae); db(0xff); db(0x2e);
- db(0x06); db(0x86); db(0x00); db(0x01); db(0x00); db(0x00); db(0x20); db(0x0a);
- db(0x66); db(0xec); db(0x26); db(0x87); db(0x2a); db(0x1f); db(0x4e); db(0x75);
- db(0x41); db(0xfa); db(0xf4); db(0x62); db(0x02); db(0x80); db(0x00); db(0x00);
- db(0xff); db(0xff); db(0xd1); db(0xc0); db(0x4e); db(0x75); db(0x00); db(0x00);
- db(0x0c); db(0xaf); db(0x00); db(0x00); db(0x00); db(0x22); db(0x00); db(0x08);
- db(0x66); db(0x30); db(0x48); db(0xe7); db(0xc0); db(0xe2); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda);
- db(0x24); db(0x40); db(0x22); db(0x4a); db(0x70); db(0xec); db(0x4e); db(0xae);
- db(0xfe); db(0xd4); db(0x41); db(0xfa); db(0xff); db(0xda); db(0x32); db(0x10);
- db(0xb2); db(0x50); db(0x67); db(0xfc); db(0x22); db(0x4a); db(0x4e); db(0xae);
- db(0xfe); db(0xd4); db(0x72); db(0x01); db(0x4c); db(0xdf); db(0x47); db(0x03);
- db(0x58); db(0x8f); db(0x4e); db(0x75); db(0x20); db(0x88); db(0x58); db(0x90);
- db(0x42); db(0xa8); db(0x00); db(0x04); db(0x21); db(0x48); db(0x00); db(0x08);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22); db(0x2c); db(0x79);
- db(0x00); db(0x00); db(0x00); db(0x04); db(0x70); db(0xff); db(0x4e); db(0xae);
- db(0xfe); db(0xb6); db(0x91); db(0xc8); db(0x24); db(0x00); db(0x6b); db(0x32);
- db(0x70); db(0x22); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x91); db(0xc8); db(0x24); db(0x40);
- db(0x4a); db(0x80); db(0x67); db(0x1e); db(0x15); db(0x7c); db(0x00); db(0x04);
- db(0x00); db(0x08); db(0x15); db(0x42); db(0x00); db(0x0f); db(0x93); db(0xc9);
- db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x25); db(0x40); db(0x00); db(0x10);
- db(0x41); db(0xea); db(0x00); db(0x14); db(0x61); db(0x00); db(0xff); db(0xae);
- db(0x20); db(0x4a); db(0x20); db(0x08); db(0x4c); db(0xdf); db(0x44); db(0x04);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22); db(0x2c); db(0x79);
- db(0x00); db(0x00); db(0x00); db(0x04); db(0x4a); db(0x80); db(0x67); db(0x20);
- db(0x24); db(0x40); db(0x74); db(0x30); db(0x20); db(0x02); db(0x22); db(0x3c);
- db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x20); db(0x40); db(0x11); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x08);
- db(0x21); db(0x42); db(0x00); db(0x12); db(0x21); db(0x4a); db(0x00); db(0x0e);
- db(0x4a); db(0x80); db(0x4c); db(0xdf); db(0x44); db(0x04); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0x00); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x61); db(0x00); db(0xff); db(0x70); db(0x61); db(0x00); db(0xff); db(0xbc);
- db(0x67); db(0x1a); db(0x22); db(0x40); db(0x24); db(0x40); db(0x41); db(0xfa);
- db(0x02); db(0x44); db(0x70); db(0x00); db(0x72); db(0x00); db(0x4e); db(0xae);
- db(0xfe); db(0x44); db(0x22); db(0x00); db(0x70); db(0x00); db(0x4a); db(0x81);
- db(0x66); db(0x02); db(0x20); db(0x0a); db(0x4a); db(0x80); db(0x4c); db(0xdf);
- db(0x44); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x00); db(0x22);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x61); db(0x00); db(0xff); db(0x3c);
- db(0x61); db(0x00); db(0xff); db(0x88); db(0x67); db(0x1a); db(0x24); db(0x40);
- db(0x22); db(0x40); db(0x41); db(0xfa); db(0x02); db(0x1d); db(0x70); db(0x00);
- db(0x72); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x22); db(0x00);
- db(0x70); db(0x00); db(0x4a); db(0x81); db(0x66); db(0x02); db(0x20); db(0x0a);
- db(0x4a); db(0x80); db(0x4c); db(0xdf); db(0x44); db(0x00); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0x38); db(0x32); db(0x2c); db(0x79); db(0x00); db(0x00);
- db(0x00); db(0x04); db(0x28); db(0x00); db(0x24); db(0x08); db(0x26); db(0x09);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0x08); db(0x5c); db(0x22); db(0x3c);
- db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0x34); db(0x24); db(0x40);
- db(0x15); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x08); db(0x15); db(0x44);
- db(0x00); db(0x09); db(0x25); db(0x42); db(0x00); db(0x0a); db(0x47); db(0xea);
- db(0x00); db(0x5c); db(0x25); db(0x4b); db(0x00); db(0x3a); db(0x47); db(0xeb);
- db(0x08); db(0x00); db(0x25); db(0x4b); db(0x00); db(0x3e); db(0x25); db(0x4b);
- db(0x00); db(0x36); db(0x22); db(0x4a); db(0x24); db(0x43); db(0x97); db(0xcb);
- db(0x24); db(0x09); db(0x4e); db(0xae); db(0xfe); db(0xe6); db(0x20); db(0x02);
- db(0x4c); db(0xdf); db(0x4c); db(0x1c); db(0x4e); db(0x75); db(0x00); db(0x00);
- db(0x00); db(0x00); db(0x00); db(0x00); db(0x2f); db(0x08); db(0x4a); db(0x2b);
- db(0x00); db(0x9d); db(0x66); db(0x26); db(0x41); db(0xfa); db(0xff); db(0xf0);
- db(0x0c); db(0x10); db(0x00); db(0x01); db(0x66); db(0x1c); db(0x41); db(0xfa);
- db(0x01); db(0x96); db(0x43); db(0xfa); db(0x00); db(0x1a); db(0x70); db(0x05);
- db(0x61); db(0x00); db(0xff); db(0x7e); db(0x50); db(0xeb); db(0x00); db(0x9d);
- db(0x30); db(0x3c); db(0xff); db(0x38); db(0x61); db(0x00); db(0xfe); db(0x2a);
- db(0x4e); db(0x90); db(0x20); db(0x5f); db(0x4e); db(0x75); db(0x2c); db(0x79);
- db(0x00); db(0x00); db(0x00); db(0x04); db(0x70); db(0xff); db(0x4e); db(0xae);
- db(0xfe); db(0xb6); db(0x74); db(0x00); db(0x01); db(0xc2); db(0x93); db(0xc9);
- db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x28); db(0x40); db(0x70); db(0x14);
- db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0xd4); db(0x70); db(0x00);
- db(0x43); db(0xfa); db(0x01); db(0xaa); db(0x4e); db(0xae); db(0xfd); db(0xd8);
- db(0x2e); db(0x00); db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x44);
+ db(0xff); db(0x3a); db(0x20); db(0x40); db(0x11); db(0x7c); db(0x00); db(0x0a);
+ db(0x00); db(0x08); db(0x21); db(0x42); db(0x00); db(0x12); db(0x21); db(0x4a);
+ db(0x00); db(0x0e); db(0x4a); db(0x80); db(0x4c); db(0xdf); db(0x44); db(0x04);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x00); db(0x22); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x61); db(0x00); db(0xff); db(0x70); db(0x61); db(0x00);
+ db(0xff); db(0xbc); db(0x67); db(0x1a); db(0x22); db(0x40); db(0x24); db(0x40);
+ db(0x41); db(0xfa); db(0x02); db(0x44); db(0x70); db(0x00); db(0x72); db(0x00);
+ db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x22); db(0x00); db(0x70); db(0x00);
+ db(0x4a); db(0x81); db(0x66); db(0x02); db(0x20); db(0x0a); db(0x4a); db(0x80);
+ db(0x4c); db(0xdf); db(0x44); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x00); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x61); db(0x00);
+ db(0xff); db(0x3c); db(0x61); db(0x00); db(0xff); db(0x88); db(0x67); db(0x1a);
+ db(0x24); db(0x40); db(0x22); db(0x40); db(0x41); db(0xfa); db(0x02); db(0x1d);
+ db(0x70); db(0x00); db(0x72); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0x44);
+ db(0x22); db(0x00); db(0x70); db(0x00); db(0x4a); db(0x81); db(0x66); db(0x02);
+ db(0x20); db(0x0a); db(0x4a); db(0x80); db(0x4c); db(0xdf); db(0x44); db(0x00);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x32); db(0x2c); db(0x79);
+ db(0x00); db(0x00); db(0x00); db(0x04); db(0x28); db(0x00); db(0x24); db(0x08);
+ db(0x26); db(0x09); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x08); db(0x5c);
  db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x2a); db(0x40); db(0x61); db(0x00); db(0xfe); db(0xc2);
- db(0x2b); db(0x40); db(0x00); db(0x3c); db(0x67); db(0x00); db(0x00); db(0x4e);
- db(0x61); db(0x00); db(0xfe); db(0xea); db(0x2b); db(0x40); db(0x00); db(0x40);
- db(0x67); db(0x00); db(0x00); db(0x42); db(0x47); db(0xed); db(0x00); db(0x16);
- db(0x27); db(0x4c); db(0x00); db(0x0c); db(0x27); db(0x42); db(0x00); db(0x08);
- db(0x70); db(0xff); db(0x26); db(0x80); db(0x27); db(0x40); db(0x00); db(0x04);
- db(0x43); db(0xed); db(0x00); db(0x00); db(0x13); db(0x7c); db(0x00); db(0x02);
- db(0x00); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x05); db(0x00); db(0x09);
- db(0x41); db(0xfa); db(0x00); db(0xfc); db(0x23); db(0x48); db(0x00); db(0x0a);
- db(0x41); db(0xfa); db(0x00); db(0xa0); db(0x23); db(0x48); db(0x00); db(0x12);
- db(0x23); db(0x4b); db(0x00); db(0x0e); db(0x70); db(0x05); db(0x4e); db(0xae);
- db(0xff); db(0x58); db(0x60); db(0x02); db(0x4e); db(0x75); db(0x20); db(0x02);
- db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x22); db(0x6d); db(0x00); db(0x3c);
- db(0x45); db(0xed); db(0x00); db(0x26); db(0x33); db(0x7c); db(0x00); db(0x0b);
- db(0x00); db(0x1c); db(0x23); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x16);
- db(0x00); db(0x24); db(0x23); db(0x4a); db(0x00); db(0x28); db(0x13); db(0x7c);
- db(0x00); db(0x01); db(0x00); db(0x1e); db(0x15); db(0x7c); db(0x00); db(0x04);
- db(0x00); db(0x04); db(0x42); db(0x2a); db(0x00); db(0x05); db(0x42); db(0x6a);
- db(0x00); db(0x06); db(0x42); db(0x6a); db(0x00); db(0x08); db(0x20); db(0x47);
- db(0x20); db(0x2d); db(0x00); db(0x16); db(0x32); db(0x28); db(0x00); db(0x30);
- db(0xd2); db(0x41); db(0x90); db(0x41); db(0x35); db(0x40); db(0x00); db(0x0a);
- db(0x20); db(0x2d); db(0x00); db(0x1a); db(0x32); db(0x28); db(0x00); db(0x2e);
- db(0xd2); db(0x41); db(0x90); db(0x41); db(0x48); db(0xc0); db(0x35); db(0x40);
- db(0x00); db(0x0c); db(0x22); db(0x6d); db(0x00); db(0x40); db(0x33); db(0x7c);
- db(0x00); db(0x0a); db(0x00); db(0x1c); db(0x13); db(0x7c); db(0x00); db(0x01);
- db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x22); db(0x6d);
- db(0x00); db(0x40); db(0x25); db(0x69); db(0x00); db(0x20); db(0x00); db(0x0e);
- db(0x25); db(0x69); db(0x00); db(0x24); db(0x00); db(0x12); db(0x22); db(0x6d);
- db(0x00); db(0x3c); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x60); db(0x00);
- db(0xff); db(0x76); db(0x30); db(0x3a); db(0xfe); db(0xa4); db(0x48); db(0xc0);
- db(0x32); db(0x3a); db(0xfe); db(0xa0); db(0x48); db(0xc1); db(0xb0); db(0x91);
- db(0x66); db(0x00); db(0x00); db(0x0a); db(0xb2); db(0xa9); db(0x00); db(0x04);
- db(0x67); db(0x00); db(0x00); db(0x18); db(0x23); db(0x41); db(0x00); db(0x04);
- db(0x22); db(0x80); db(0x20); db(0x29); db(0x00); db(0x08); db(0x22); db(0x69);
- db(0x00); db(0x0c); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae);
- db(0xfe); db(0xbc); db(0x41); db(0xf9); db(0x00); db(0xdf); db(0xf0); db(0x00);
- db(0x70); db(0x00); db(0x4e); db(0x75); db(0x69); db(0x6e); db(0x70); db(0x75);
- db(0x74); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65);
- db(0x00); db(0x74); db(0x69); db(0x6d); db(0x65); db(0x72); db(0x2e); db(0x64);
- db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x55); db(0x41);
- db(0x45); db(0x20); db(0x6d); db(0x6f); db(0x75); db(0x73); db(0x65); db(0x20);
- db(0x68); db(0x61); db(0x63); db(0x6b); db(0x00); db(0x55); db(0x41); db(0x45);
- db(0x20); db(0x66); db(0x69); db(0x6c); db(0x65); db(0x73); db(0x79); db(0x73);
- db(0x74); db(0x65); db(0x6d); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20);
- db(0x66); db(0x73); db(0x20); db(0x61); db(0x75); db(0x74); db(0x6f); db(0x6d);
- db(0x6f); db(0x75); db(0x6e); db(0x74); db(0x65); db(0x72); db(0x00); db(0x55);
- db(0x41); db(0x45); db(0x20); db(0x66); db(0x73); db(0x20); db(0x61); db(0x75);
- db(0x74); db(0x6f); db(0x6d); db(0x6f); db(0x75); db(0x6e); db(0x74); db(0x20);
- db(0x70); db(0x72); db(0x6f); db(0x63); db(0x65); db(0x73); db(0x73); db(0x00);
- db(0x64); db(0x6f); db(0x73); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72);
- db(0x61); db(0x72); db(0x79); db(0x00); db(0x69); db(0x6e); db(0x74); db(0x75);
- db(0x69); db(0x74); db(0x69); db(0x6f); db(0x6e); db(0x2e); db(0x6c); db(0x69);
- db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x65); db(0x78);
- db(0x70); db(0x61); db(0x6e); db(0x73); db(0x69); db(0x6f); db(0x6e); db(0x2e);
+ db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0x34);
+ db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x08);
+ db(0x15); db(0x44); db(0x00); db(0x09); db(0x25); db(0x42); db(0x00); db(0x0a);
+ db(0x47); db(0xea); db(0x00); db(0x5c); db(0x25); db(0x4b); db(0x00); db(0x3a);
+ db(0x47); db(0xeb); db(0x08); db(0x00); db(0x25); db(0x4b); db(0x00); db(0x3e);
+ db(0x25); db(0x4b); db(0x00); db(0x36); db(0x22); db(0x4a); db(0x24); db(0x43);
+ db(0x97); db(0xcb); db(0x24); db(0x09); db(0x4e); db(0xae); db(0xfe); db(0xe6);
+ db(0x20); db(0x02); db(0x4c); db(0xdf); db(0x4c); db(0x1c); db(0x4e); db(0x75);
+ db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x2f); db(0x08);
+ db(0x4a); db(0x2b); db(0x00); db(0x9d); db(0x66); db(0x26); db(0x41); db(0xfa);
+ db(0xff); db(0xf0); db(0x0c); db(0x10); db(0x00); db(0x01); db(0x66); db(0x1c);
+ db(0x41); db(0xfa); db(0x01); db(0x96); db(0x43); db(0xfa); db(0x00); db(0x1a);
+ db(0x70); db(0x05); db(0x61); db(0x00); db(0xff); db(0x7e); db(0x50); db(0xeb);
+ db(0x00); db(0x9d); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x61); db(0x00);
+ db(0xfe); db(0x2a); db(0x4e); db(0x90); db(0x20); db(0x5f); db(0x4e); db(0x75);
+ db(0x2c); db(0x79); db(0x00); db(0x00); db(0x00); db(0x04); db(0x70); db(0xff);
+ db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x74); db(0x00); db(0x01); db(0xc2);
+ db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x28); db(0x40);
+ db(0x70); db(0x14); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0xd4);
+ db(0x70); db(0x00); db(0x43); db(0xfa); db(0x01); db(0xaa); db(0x4e); db(0xae);
+ db(0xfd); db(0xd8); db(0x2e); db(0x00); db(0x70); db(0x00); db(0x30); db(0x3c);
+ db(0x00); db(0x44); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x2a); db(0x40); db(0x61); db(0x00);
+ db(0xfe); db(0xc2); db(0x2b); db(0x40); db(0x00); db(0x3c); db(0x67); db(0x00);
+ db(0x00); db(0x4e); db(0x61); db(0x00); db(0xfe); db(0xea); db(0x2b); db(0x40);
+ db(0x00); db(0x40); db(0x67); db(0x00); db(0x00); db(0x42); db(0x47); db(0xed);
+ db(0x00); db(0x16); db(0x27); db(0x4c); db(0x00); db(0x0c); db(0x27); db(0x42);
+ db(0x00); db(0x08); db(0x70); db(0xff); db(0x26); db(0x80); db(0x27); db(0x40);
+ db(0x00); db(0x04); db(0x43); db(0xed); db(0x00); db(0x00); db(0x13); db(0x7c);
+ db(0x00); db(0x02); db(0x00); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x05);
+ db(0x00); db(0x09); db(0x41); db(0xfa); db(0x00); db(0xfc); db(0x23); db(0x48);
+ db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x00); db(0xa0); db(0x23); db(0x48);
+ db(0x00); db(0x12); db(0x23); db(0x4b); db(0x00); db(0x0e); db(0x70); db(0x05);
+ db(0x4e); db(0xae); db(0xff); db(0x58); db(0x60); db(0x02); db(0x4e); db(0x75);
+ db(0x20); db(0x02); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x22); db(0x6d);
+ db(0x00); db(0x3c); db(0x45); db(0xed); db(0x00); db(0x26); db(0x33); db(0x7c);
+ db(0x00); db(0x0b); db(0x00); db(0x1c); db(0x23); db(0x7c); db(0x00); db(0x00);
+ db(0x00); db(0x16); db(0x00); db(0x24); db(0x23); db(0x4a); db(0x00); db(0x28);
+ db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); db(0x15); db(0x7c);
+ db(0x00); db(0x04); db(0x00); db(0x04); db(0x42); db(0x2a); db(0x00); db(0x05);
+ db(0x42); db(0x6a); db(0x00); db(0x06); db(0x42); db(0x6a); db(0x00); db(0x08);
+ db(0x20); db(0x47); db(0x20); db(0x2d); db(0x00); db(0x16); db(0x32); db(0x28);
+ db(0x00); db(0x30); db(0xd2); db(0x41); db(0x90); db(0x41); db(0x35); db(0x40);
+ db(0x00); db(0x0a); db(0x20); db(0x2d); db(0x00); db(0x1a); db(0x32); db(0x28);
+ db(0x00); db(0x2e); db(0xd2); db(0x41); db(0x90); db(0x41); db(0x48); db(0xc0);
+ db(0x35); db(0x40); db(0x00); db(0x0c); db(0x22); db(0x6d); db(0x00); db(0x40);
+ db(0x33); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x1c); db(0x13); db(0x7c);
+ db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38);
+ db(0x22); db(0x6d); db(0x00); db(0x40); db(0x25); db(0x69); db(0x00); db(0x20);
+ db(0x00); db(0x0e); db(0x25); db(0x69); db(0x00); db(0x24); db(0x00); db(0x12);
+ db(0x22); db(0x6d); db(0x00); db(0x3c); db(0x4e); db(0xae); db(0xfe); db(0x38);
+ db(0x60); db(0x00); db(0xff); db(0x76); db(0x30); db(0x3a); db(0xfe); db(0xa4);
+ db(0x48); db(0xc0); db(0x32); db(0x3a); db(0xfe); db(0xa0); db(0x48); db(0xc1);
+ db(0xb0); db(0x91); db(0x66); db(0x00); db(0x00); db(0x0a); db(0xb2); db(0xa9);
+ db(0x00); db(0x04); db(0x67); db(0x00); db(0x00); db(0x18); db(0x23); db(0x41);
+ db(0x00); db(0x04); db(0x22); db(0x80); db(0x20); db(0x29); db(0x00); db(0x08);
+ db(0x22); db(0x69); db(0x00); db(0x0c); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x41); db(0xf9); db(0x00); db(0xdf);
+ db(0xf0); db(0x00); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x69); db(0x6e);
+ db(0x70); db(0x75); db(0x74); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69);
+ db(0x63); db(0x65); db(0x00); db(0x74); db(0x69); db(0x6d); db(0x65); db(0x72);
+ db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00);
+ db(0x55); db(0x41); db(0x45); db(0x20); db(0x6d); db(0x6f); db(0x75); db(0x73);
+ db(0x65); db(0x20); db(0x68); db(0x61); db(0x63); db(0x6b); db(0x00); db(0x55);
+ db(0x41); db(0x45); db(0x20); db(0x66); db(0x69); db(0x6c); db(0x65); db(0x73);
+ db(0x79); db(0x73); db(0x74); db(0x65); db(0x6d); db(0x00); db(0x55); db(0x41);
+ db(0x45); db(0x20); db(0x66); db(0x73); db(0x20); db(0x61); db(0x75); db(0x74);
+ db(0x6f); db(0x6d); db(0x6f); db(0x75); db(0x6e); db(0x74); db(0x65); db(0x72);
+ db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x66); db(0x73); db(0x20);
+ db(0x61); db(0x75); db(0x74); db(0x6f); db(0x6d); db(0x6f); db(0x75); db(0x6e);
+ db(0x74); db(0x20); db(0x70); db(0x72); db(0x6f); db(0x63); db(0x65); db(0x73);
+ db(0x73); db(0x00); db(0x64); db(0x6f); db(0x73); db(0x2e); db(0x6c); db(0x69);
+ db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x69); db(0x6e);
+ db(0x74); db(0x75); db(0x69); db(0x74); db(0x69); db(0x6f); db(0x6e); db(0x2e);
  db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00);
- db(0x46); db(0x69); db(0x6c); db(0x65); db(0x53); db(0x79); db(0x73); db(0x74);
- db(0x65); db(0x6d); db(0x2e); db(0x72); db(0x65); db(0x73); db(0x6f); db(0x75);
- db(0x72); db(0x63); db(0x65); db(0x00); db(0x00); db(0x00); db(0x03); db(0xf2);
+ db(0x65); db(0x78); db(0x70); db(0x61); db(0x6e); db(0x73); db(0x69); db(0x6f);
+ db(0x6e); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72);
+ db(0x79); db(0x00); db(0x46); db(0x69); db(0x6c); db(0x65); db(0x53); db(0x79);
+ db(0x73); db(0x74); db(0x65); db(0x6d); db(0x2e); db(0x72); db(0x65); db(0x73);
+ db(0x6f); db(0x75); db(0x72); db(0x63); db(0x65); db(0x00); db(0x00); db(0x00);
+ db(0x00); db(0x00); db(0x03); db(0xf2);
 
index b9920667733a85f6ef4e0c2e15a7d84dd67b3471..4b41a57220548f28457e2c04abe1bb4ba7c3b7ae 100644 (file)
@@ -165,6 +165,7 @@ extern void memory_cleanup (void);
 extern void map_banks (addrbank *bank, int first, int count, int realsize);
 extern void map_overlay (int chip);
 extern void memory_hardreset (void);
+extern void free_fastmemory (void);
 
 #define longget(addr) (call_mem_get_func(get_mem_bank(addr).lget, addr))
 #define wordget(addr) (call_mem_get_func(get_mem_bank(addr).wget, addr))
index 49410e3f74ef4c8407d277eb2b50dace6651c8b9..8b831527e8d411f32d9374a9bf5ca315e5a67777 100644 (file)
--- a/memory.c
+++ b/memory.c
@@ -117,7 +117,7 @@ struct romdata *getromdatabypath(char *path)
     return NULL;
 }
 
-#define NEXT_ROM_ID 71
+#define NEXT_ROM_ID 72
 
 static struct romheader romheaders[] = {
     { "Freezer Cartridges", 1 },
@@ -159,6 +159,10 @@ static struct romdata roms[] = {
        0x64466c2a, 0xF72D8914,0x8DAC39C6,0x96E30B10,0x859EBC85,0x9226637B },
     { "KS ROM v2.05 (A600HD)", 2, 5, 37, 350, "A600HD\0A600\0", 524288, 10, 0, 0, ROMTYPE_KICK, 0, 0,
        0x43b0df7b, 0x02843C42,0x53BBD29A,0xBA535B0A,0xA3BD9A85,0x034ECDE4 },
+    { "KS ROM v2.04 (A3000)", 2, 4, 37, 132, "A3000\0", 524288, 71, 3, 0, ROMTYPE_KICK, 0, 0,
+       0x234a7233, 0xd82ebb59,0xafc53540,0xddf2d718,0x7ecf239b,0x7ea91590 },
+    ALTROM(71, 1, 1, 262144, ROMTYPE_EVEN, 0x7db1332b,0x48f14b31,0x279da675,0x7848df6f,0xeb531881,0x8f8f576c)
+    ALTROM(71, 1, 2, 262144, ROMTYPE_ODD , 0xa245dbdf,0x83bab8e9,0x5d378b55,0xb0c6ae65,0x61385a96,0xf638598f)
 
     { "KS ROM v3.0 (A1200)", 3, 0, 39, 106, "A1200\0", 524288, 11, 0, 0, ROMTYPE_KICK, 0, 0,
        0x6c9b07d2, 0x70033828,0x182FFFC7,0xED106E53,0x73A8B89D,0xDA76FAA5 },
@@ -839,7 +843,7 @@ __inline__ void byteput (uaecptr addr, uae_u32 b)
 int addr_valid(char *txt, uaecptr addr, uae_u32 len)
 {
     addrbank *ab = &get_mem_bank(addr);
-    if (ab == 0 || !(ab->flags & ABFLAG_RAM) || addr < 0x100 || len < 0 || len > 16777215 || !valid_address(addr, len)) {
+    if (ab == 0 || !(ab->flags & ABFLAG_RAM) || addr < 0x100 || len < 0 || len > 16777215 || !valid_address (addr, len)) {
        write_log ("corrupt %s pointer %x (%d) detected!\n", txt, addr, len);
        return 0;
     }
@@ -2312,6 +2316,10 @@ static int load_kickstart (void)
            filesize = 262144;
            maxsize = 262144;
        }
+       if (filesize == 524288 + 8) {
+           /* GVP 0xf0 kickstart */
+           zfile_fseek (f, 8, SEEK_SET);
+       }
        if (filesize >= 524288 * 2) {
            struct romdata *rd = getromdatabyzfile(f);
            if (rd && rd->id == 64) {
@@ -2519,6 +2527,8 @@ static void allocate_memory (void)
        if (chipmemory)
            mapped_free (chipmemory);
        chipmemory = 0;
+       if (currprefs.chipmem_size > 2 * 1024 * 1024)
+           free_fastmemory ();
 
        memsize = allocated_chipmem = currprefs.chipmem_size;
        chipmem_full_mask = chipmem_mask = allocated_chipmem - 1;
@@ -2763,11 +2773,11 @@ void memory_reset (void)
        /* D80000 - DDFFFF not mapped (A1000 = custom chips) */
        map_banks (&dummy_bank, 0xD8, 6, 0);
 
-    /* map "nothing" to 0x200000 - 0x9FFFFF (0xBEFFFF if PCMCIA or AGA) */
+    /* map "nothing" to 0x200000 - 0x9FFFFF (0xBEFFFF if Gayle) */
     bnk = allocated_chipmem >> 16;
     if (bnk < 0x20 + (currprefs.fastmem_size >> 16))
        bnk = 0x20 + (currprefs.fastmem_size >> 16);
-    bnk_end = (((currprefs.chipset_mask & CSMASK_AGA) || currprefs.cs_pcmcia) ? 0xBF : 0xA0);
+    bnk_end = (((currprefs.chipset_mask & CSMASK_AGA) || currprefs.cs_pcmcia || currprefs.cs_ide > 0) ? 0xBF : 0xA0);
     map_banks (&dummy_bank, bnk, bnk_end - bnk, 0);
     if (currprefs.chipset_mask & CSMASK_AGA)
        map_banks (&dummy_bank, 0xc0, 0xd8 - 0xc0, 0);
@@ -2787,7 +2797,7 @@ void memory_reset (void)
        }
        if (currprefs.cs_pcmcia) {
            map_banks (&gayle_attr_bank, 0xA0, 8, 0);
-           if (currprefs.chipmem_size <= 4 * 1024 * 1024 || currprefs.fastmem_size <= 4 * 1024 * 1024)
+           if (currprefs.chipmem_size <= 4 * 1024 * 1024 && currprefs.fastmem_size <= 4 * 1024 * 1024)
                map_banks (&gayle_common_bank, PCMCIA_COMMON_START >> 16, PCMCIA_COMMON_SIZE >> 16, 0);
        }
        if (currprefs.cs_ide == 2 || currprefs.cs_mbdmac == 2)
@@ -2813,23 +2823,25 @@ void memory_reset (void)
     if (cardmemory != 0)
        map_banks (&cardmem_bank, cardmem_start >> 16, allocated_cardmem >> 16, 0);
 
-#ifdef AUTOCONFIG
-    if (need_uae_boot_rom ()) {
-       uae_boot_rom = 1;
-       map_banks (&rtarea_bank, rtarea_base >> 16, 1, 0);
-    }
-#endif
-
     map_banks (&kickmem_bank, 0xF8, 8, 0);
     if (currprefs.maprom)
        map_banks (&kickram_bank, currprefs.maprom >> 16, 8, 0);
-    /* map beta Kickstarts at 0x200000 */
-    if (kickmemory[2] == 0x4e && kickmemory[3] == 0xf9 && kickmemory[4] == 0x00) {
+    /* map beta Kickstarts at 0x200000/0xC00000/0xF00000 */
+    if (kickmemory[0] == 0x11 && kickmemory[2] == 0x4e && kickmemory[3] == 0xf9 && kickmemory[4] == 0x00) {
        uae_u32 addr = kickmemory[5];
        if (addr == 0x20 && currprefs.chipmem_size <= 0x200000 && currprefs.fastmem_size == 0)
            map_banks (&kickmem_bank, addr, 8, 0);
+       if (addr == 0xC0 && currprefs.bogomem_size == 0)
+           map_banks (&kickmem_bank, addr, 8, 0);
+       if (addr == 0xF0)
+           map_banks (&kickmem_bank, addr, 8, 0);
     }
 
+#ifdef AUTOCONFIG
+    if (need_uae_boot_rom ())
+       map_banks (&rtarea_bank, rtarea_base >> 16, 1, 0);
+#endif
+
     if (a1000_bootrom)
        a1000_handle_kickstart (1);
 #ifdef AUTOCONFIG
index 41ebae20fd14774dc718479bdb84d7c942320b7a..3bb6f4923ce1f4ea20fa4c519b6dba5a5c17e8a8 100644 (file)
@@ -825,6 +825,14 @@ static BOOL CALLBACK EnumObjectsCallback (const DIDEVICEOBJECTINSTANCE* pdidoi,
     return DIENUM_CONTINUE;
 }
 
+static void trimws (char *s)
+{
+    /* Delete trailing whitespace.  */
+    int len = strlen (s);
+    while (len > 0 && strcspn (s + len - 1, "\t \r\n") == 0)
+        s[--len] = '\0';
+}
+
 static BOOL CALLBACK di_enumcallback (LPCDIDEVICEINSTANCE lpddi, LPVOID *dd)
 {
     struct didata *did;
@@ -849,7 +857,7 @@ static BOOL CALLBACK di_enumcallback (LPCDIDEVICEINSTANCE lpddi, LPVOID *dd)
     }
 
 #ifdef DI_DEBUG
-    write_log ("GUID=%08.8X-%04.8X-%04.8X-%02.2X%02.2X%02.2X%02.2X%02.2X%02.2X%02.2X%02.2X:\n",
+    write_log ("GUID=%08X-%04X-%04X-%02X%02X%02X%02X%02X%02X%02X%02X:\n",
        lpddi->guidInstance.Data1, lpddi->guidInstance.Data2, lpddi->guidInstance.Data3,
        lpddi->guidInstance.Data4[0], lpddi->guidInstance.Data4[1], lpddi->guidInstance.Data4[2], lpddi->guidInstance.Data4[3],
        lpddi->guidInstance.Data4[4], lpddi->guidInstance.Data4[5], lpddi->guidInstance.Data4[6], lpddi->guidInstance.Data4[7]);
@@ -883,11 +891,13 @@ static BOOL CALLBACK di_enumcallback (LPCDIDEVICEINSTANCE lpddi, LPVOID *dd)
        did->name = malloc (100);
        sprintf(did->name, "[no name]");
     }
-    sprintf (tmp, "%08.8X-%04.8X-%04.8X-%02.2X%02.2X%02.2X%02.2X%02.2X%02.2X%02.2X%02.2X",
+    trimws (did->name);
+    sprintf (tmp, "%08X-%04X-%04X-%02X%02X%02X%02X%02X%02X%02X%02X",
        lpddi->guidProduct.Data1, lpddi->guidProduct.Data2, lpddi->guidProduct.Data3,
        lpddi->guidProduct.Data4[0], lpddi->guidProduct.Data4[1], lpddi->guidProduct.Data4[2], lpddi->guidProduct.Data4[3],
        lpddi->guidProduct.Data4[4], lpddi->guidProduct.Data4[5], lpddi->guidProduct.Data4[6], lpddi->guidProduct.Data4[7]);
     did->configname = my_strdup (tmp);
+    trimws (did->configname);
     did->guid = lpddi->guidInstance;
     did->sortname = my_strdup (did->name);
     did->connection = DIDC_DX;
index 1278f494db6e742c0c9e1766817da592868f7330..50b6f8ac310355611c9fdfeb8933c200e4253e3b 100644 (file)
@@ -730,8 +730,8 @@ void DirectDraw_Release(void)
     releaser(DirectDrawState.lpDDP, IDirectDrawPalette_Release);
 
     if (DirectDrawState.directdraw.dd && DirectDrawState.modeset) {
-       IDirectDraw7_SetCooperativeLevel(DirectDrawState.directdraw.dd, hAmigaWnd, DDSCL_NORMAL);
        IDirectDraw7_RestoreDisplayMode(DirectDrawState.directdraw.dd);
+       IDirectDraw7_SetCooperativeLevel(DirectDrawState.directdraw.dd, hAmigaWnd, DDSCL_NORMAL);
     }
     DirectDrawState.modeset = 0;
 
@@ -1923,7 +1923,7 @@ char *outGUID (GUID *guid)
     static char gb[64];
     if (guid == NULL)
        return "NULL";
-    sprintf(gb, "%08.8X-%04.8X-%04.8X-%02.2X%02.2X%02.2X%02.2X%02.2X%02.2X%02.2X%02.2X",
+    sprintf(gb, "%08X-%04X-%04X-%02X%02X%02X%02X%02X%02X%02X%02X",
        guid->Data1, guid->Data2, guid->Data3,
        guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
        guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7]);
index 07d170ee8102bdc6157b6c327bf433a5eeb1210d..fcbf03b41afb47c3a99cdad538e1073afe40a3f9 100644 (file)
@@ -1897,8 +1897,8 @@ uae_u32 REGPARAM2 picasso_InitCard (struct regstruct *regs)
        AmigaListAddTail (AmigaBoardInfo + PSSO_BoardInfo_ResolutionsList, amem);
        amem += PSSO_LibResolution_sizeof;
     }
-    if (amem != picasso96_amemend)
-       write_log ("P96: display resolution list corruption %08x<>%08x", amem, picasso96_amemend);
+    if (amem > picasso96_amemend)
+       write_log ("P96: display resolution list corruption %08x<>%08x (%d)\n", amem, picasso96_amemend, i);
 
     return -1;
 }
index 16e09b706e4993ad9248a2f728cf4ab52913f007..07a9d13b236f947736dde4f115fe61a00c22d5f6 100644 (file)
@@ -185,7 +185,7 @@ BEGIN
     CONTROL         "After RTG",IDC_TRUST2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,235,169,52,10
     CONTROL         "More compatible [] More compatible but slower FPU emulation.",IDC_COMPATIBLE_FPU,
                     "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,9,210,73,10
-    GROUPBOX        "FPU",IDC_STATIC,6,146,81,79,BS_LEFT
+    GROUPBOX        "FPU",IDC_STATIC,6,146,81,80,BS_LEFT
     CONTROL         "24-bit addressing",IDC_COMPATIBLE24,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,10,100,73,8
     CONTROL         "None",IDC_FPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,14,157,63,10
     CONTROL         "68881",IDC_FPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,171,63,10
@@ -426,46 +426,45 @@ BEGIN
     CONTROL         "Magic Mouse",IDC_MOUSETRICK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,161,79,119,10
     CONTROL         "uaenet.device",IDC_SANA2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,161,92,94,10
 END
-
 IDD_HARDFILE DIALOGEX 0, 0, 299, 249
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 CAPTION "Hardfile Settings"
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
     GROUPBOX        "Settings",IDC_STATIC,10,5,280,146
-    RTEXT           "Path:",IDC_HARDFILE_DIR_TEXT,26,18,22,10
+    RTEXT           "Path:",IDC_HARDFILE_DIR_TEXT,25,18,22,10
     EDITTEXT        IDC_PATH_NAME,52,15,213,15,ES_AUTOHSCROLL
     PUSHBUTTON      "...",IDC_SELECTOR,271,15,11,15
-    RTEXT           "FileSys:",IDC_HARDFILE_FILESYS_TEXT,14,37,34,10
-    EDITTEXT        IDC_PATH_FILESYS,52,34,213,15,ES_AUTOHSCROLL
-    PUSHBUTTON      "...",IDC_FILESYS_SELECTOR,271,34,11,15
-    RTEXT           "Device:",IDC_HARDFILE_DEVICE_TEXT,17,58,31,10
-    EDITTEXT        IDC_HARDFILE_DEVICE,52,54,66,15,ES_AUTOHSCROLL
-    RTEXT           "Boot priority:",IDC_HARDFILE_BOOTPRI_TEXT,13,94,55,8
-    EDITTEXT        IDC_HARDFILE_BOOTPRI,74,90,40,15
+    RTEXT           "FileSys:",IDC_HARDFILE_FILESYS_TEXT,13,38,34,10
+    EDITTEXT        IDC_PATH_FILESYS,52,35,213,15,ES_AUTOHSCROLL
+    PUSHBUTTON      "...",IDC_FILESYS_SELECTOR,271,35,11,15
+    RTEXT           "Device:",IDC_HARDFILE_DEVICE_TEXT,16,58,31,10
+    EDITTEXT        IDC_HARDFILE_DEVICE,52,55,66,15,ES_AUTOHSCROLL
+    RTEXT           "Boot priority:",IDC_HARDFILE_BOOTPRI_TEXT,24,94,44,8
+    EDITTEXT        IDC_HARDFILE_BOOTPRI,73,90,40,15
     CONTROL         "Read/write",IDC_HDF_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,53,74,64,10
     PUSHBUTTON      "Enable RDB mode",IDC_HDF_RDB,174,55,92,14
-    RTEXT           "Surfaces:",IDC_SURFACES_TEXT,120,94,30,10
-    EDITTEXT        IDC_HEADS,155,90,35,15,ES_NUMBER
+    RTEXT           "Surfaces:",IDC_SURFACES_TEXT,118,94,32,10
+    EDITTEXT        IDC_HEADS,155,90,40,15,ES_NUMBER
     RTEXT           "Reserved:",IDC_RESERVED_TEXT,197,94,35,10
-    EDITTEXT        IDC_RESERVED,237,90,35,15,ES_NUMBER
-    RTEXT           "Sectors:",IDC_SECTORS_TEXT,120,116,30,10
-    EDITTEXT        IDC_SECTORS,155,111,35,15,ES_NUMBER
-    RTEXT           "Block size:",IDC_BLOCKSIZE_TEXT,197,116,35,10
-    EDITTEXT        IDC_BLOCKSIZE,237,111,35,15,ES_NUMBER
+    EDITTEXT        IDC_RESERVED,237,90,40,15,ES_NUMBER
+    RTEXT           "Sectors:",IDC_SECTORS_TEXT,120,113,30,10
+    EDITTEXT        IDC_SECTORS,155,111,40,15,ES_NUMBER
+    RTEXT           "Block size:",IDC_BLOCKSIZE_TEXT,197,113,35,10
+    EDITTEXT        IDC_BLOCKSIZE,237,111,40,15,ES_NUMBER
     GROUPBOX        "New hard disk image file",IDC_STATIC,10,156,280,62
-    PUSHBUTTON      "Create",IDC_HF_CREATE,50,171,80,14
-    EDITTEXT        IDC_HF_SIZE,146,171,61,15,ES_NUMBER
+    PUSHBUTTON      "Create",IDC_HF_CREATE,60,171,80,14
+    EDITTEXT        IDC_HF_SIZE,156,171,61,15,ES_NUMBER
     PUSHBUTTON      "OK",IDOK,102,226,50,14
     PUSHBUTTON      "Cancel",IDCANCEL,158,226,50,14
-    EDITTEXT        IDC_HF_DOSTYPE,146,194,61,15
-    COMBOBOX        IDC_HF_TYPE,50,194,80,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    COMBOBOX        IDC_HDF_CONTROLLER,73,112,41,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "DOS type",IDC_STATIC,214,196,32,10,SS_CENTERIMAGE
-    RTEXT           "MB",IDC_STATIC,214,174,13,10,SS_CENTERIMAGE
-    RTEXT           "Type:",IDC_STATIC,18,182,25,10,SS_CENTERIMAGE
-    RTEXT           "HD Controller:",IDC_STATIC,13,113,52,10,SS_CENTERIMAGE
-    CONTROL         "Bootable",IDC_HDF_AUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,136,73,53,10
+    EDITTEXT        IDC_HF_DOSTYPE,156,194,61,15
+    COMBOBOX        IDC_HF_TYPE,60,195,80,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_HDF_CONTROLLER,73,112,40,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "DOS type",IDC_STATIC,224,196,32,10,SS_CENTERIMAGE
+    RTEXT           "MB",IDC_STATIC,222,174,13,10,SS_CENTERIMAGE
+    RTEXT           "Type:",IDC_STATIC,28,183,25,10,SS_CENTERIMAGE
+    RTEXT           "HD Controller:",IDC_STATIC,16,113,52,10,SS_CENTERIMAGE
+    CONTROL         "Bootable",IDC_HDF_AUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,136,74,53,10
     CONTROL         "Do not mount",IDC_HDF_DONOTMOUNT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,217,74,67,10
     EDITTEXT        IDC_HDFINFO,16,131,268,12,ES_CENTER | ES_READONLY
 END
@@ -475,19 +474,19 @@ STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK |
 CAPTION "Volume Settings"
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
-    LTEXT           "Device name:",-1,5,9,54,10
+    LTEXT           "Device name:",-1,11,7,54,10
     EDITTEXT        IDC_VOLUME_DEVICE,65,5,104,15,ES_AUTOHSCROLL
-    LTEXT           "Volume label:",-1,5,31,54,10
-    EDITTEXT        IDC_VOLUME_NAME,65,25,103,15,ES_AUTOHSCROLL
-    LTEXT           "Path:",-1,5,51,44,10
+    LTEXT           "Volume label:",-1,13,28,54,10
+    EDITTEXT        IDC_VOLUME_NAME,65,25,104,15,ES_AUTOHSCROLL
+    LTEXT           "Path:",-1,38,49,44,10
     EDITTEXT        IDC_PATH_NAME,65,46,227,15,ES_AUTOHSCROLL
-    PUSHBUTTON      "Select Directory",IDC_FS_SELECT_DIR,64,66,103,15
+    PUSHBUTTON      "Select Directory",IDC_FS_SELECT_DIR,65,66,103,15
     CONTROL         "Read/write",IDC_FS_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,174,7,55,10
     RTEXT           "Boot priority:",IDC_VOLUME_BOOTPRI_TEXT,178,28,49,8
-    EDITTEXT        IDC_VOLUME_BOOTPRI,237,24,30,15
+    EDITTEXT        IDC_VOLUME_BOOTPRI,236,25,30,15
     PUSHBUTTON      "OK",IDOK,65,91,48,15
     PUSHBUTTON      "Cancel",IDCANCEL,120,91,48,15
-    PUSHBUTTON      "Select Archive or Plain File",IDC_FS_SELECT_FILE,189,66,103,15
+    PUSHBUTTON      "Select Archive or Plain File",IDC_FS_SELECT_FILE,190,66,103,15
     PUSHBUTTON      "Eject",IDC_FS_SELECT_EJECT,230,91,62,15
     CONTROL         "Bootable",IDC_FS_AUTOBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,236,7,53,10
 END
@@ -551,13 +550,13 @@ FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
     GROUPBOX        "Battery Backed Up Real Time Clock",IDC_STATIC,11,24,275,29
     CONTROL         "None",IDC_CS_RTC1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,19,36,55,10
-    CONTROL         "MSM6242B",IDC_CS_RTC2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,88,36,52,10
-    CONTROL         "RF5C01A",IDC_CS_RTC3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,157,36,46,10
+    CONTROL         "MSM6242B",IDC_CS_RTC2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,90,36,52,10
+    CONTROL         "RF5C01A",IDC_CS_RTC3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,159,36,46,10
     EDITTEXT        IDC_CS_RTCADJUST,215,34,64,13,ES_AUTOHSCROLL
-    GROUPBOX        "CIA-A TOD Clock Source",IDC_STATIC,9,56,275,29
-    CONTROL         "Vertical Sync",IDC_CS_CIAA_TOD1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,22,68,63,10
-    CONTROL         "Power Supply 50Hz",IDC_CS_CIAA_TOD2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,93,68,85,10
-    CONTROL         "Power Supply 60Hz",IDC_CS_CIAA_TOD3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,189,68,88,10
+    GROUPBOX        "CIA-A TOD Clock Source",IDC_STATIC,11,56,275,29
+    CONTROL         "Vertical Sync",IDC_CS_CIAA_TOD1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,19,68,63,10
+    CONTROL         "Power Supply 50Hz",IDC_CS_CIAA_TOD2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,90,68,85,10
+    CONTROL         "Power Supply 60Hz",IDC_CS_CIAA_TOD3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,186,68,88,10
     CONTROL         "Boot ROM Mirror",IDC_CS_KSMIRROR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,95,80,10
     CONTROL         "A1000 Boot RAM/ROM",IDC_CS_A1000RAM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,95,88,10
     CONTROL         "CD32 CD",IDC_CS_CD32CD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,108,76,10
@@ -680,12 +679,12 @@ BEGIN
     COMBOBOX        IDC_FILTERXTRA,105,130,138,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
 END
 
-IDD_HARDDRIVE DIALOGEX 0, 0, 380, 66
+IDD_HARDDRIVE DIALOGEX 0, 0, 380, 76
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | DS_CENTERMOUSE | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 CAPTION "Harddrive Settings"
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
-    LTEXT           "Hard drive:",IDC_STATIC,7,11,35,10
+    LTEXT           "Hard drive:",IDC_STATIC,7,11,80,10
     COMBOBOX        IDC_HARDDRIVE,49,9,325,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
     CONTROL         "Read/write",IDC_HDF_RW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,161,51,55,10
     DEFPUSHBUTTON   "Add hard drive",IDOK,231,48,65,14
@@ -693,7 +692,7 @@ BEGIN
     DEFPUSHBUTTON   "Create hard disk image file",IDC_HARDDRIVE_IMAGE,49,30,115,14
     EDITTEXT        IDC_PATH_NAME,183,27,97,15,ES_AUTOHSCROLL | NOT WS_VISIBLE
     COMBOBOX        IDC_HDF_CONTROLLER,102,50,41,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "HD Controller:",IDC_STATIC,42,52,52,10,SS_CENTERIMAGE
+    RTEXT           "HD Controller:",IDC_STATIC,42,51,52,10,SS_CENTERIMAGE
 END
 
 IDD_MISC2 DIALOGEX 0, 0, 300, 92
@@ -1296,7 +1295,7 @@ STRINGTABLE
 BEGIN
     IDS_QS_MODEL_UAE        "High-end expanded configuration"
     IDS_QS_MODEL_ARCADIA    "Arcadia\nArcadia Multi Select system is arcade platform developed by Arcadia and  Mastertronic. It is based on an A500 mainboard with ROM cage attached to expansion port. Arcadia ROM files go to ""Cartridge ROM File"" in ROM-panel."
-    IDS_QS_MODEL_A3000      "1.4 ROM, 2MB Chip + 8MB Fast\n\n3.1 ROM, 2MB Chip + 8MB Fast\n"
+    IDS_QS_MODEL_A3000      "1.4 ROM, 2MB Chip + 8MB Fast\n\n2.04 ROM, 2MB Chip + 8MB Fast\n\n3.1 ROM, 2MB Chip + 8MB Fast\n"
     IDS_QS_MODEL_A4000      "68030, 3.1 ROM, 2MB Chip + 8MB Fast\n\n68040, 3.1 ROM, 2MB Chip + 8MB Fast\n"
     IDS_QS_MODEL_A4000T     "A4000T (test)\nA4000T"
 END
index 59b594b7fa4d0f06a57a3517e0b7a61d743fb362..01197b6c39eb3cc4db4e8f57e9b836af915f670f 100644 (file)
@@ -93,7 +93,7 @@ HWND hAmigaWnd, hMainWnd, hHiddenWnd;
 RECT amigawin_rect;
 static int mouseposx, mouseposy;
 static UINT TaskbarRestart;
-static int TaskbarRestartOk;
+static HWND TaskbarRestartHWND;
 static int forceroms;
 static int start_data = 0;
 
@@ -1228,8 +1228,10 @@ static LRESULT CALLBACK AmigaWindowProc (HWND hWnd, UINT message, WPARAM wParam,
        break;
 
      default:
-        if (TaskbarRestartOk && message == TaskbarRestart)
-            systray (hWnd, FALSE);
+        if (TaskbarRestart != 0 && TaskbarRestartHWND == hWnd && message == TaskbarRestart) {
+            //write_log ("notif: taskbarrestart\n");
+            systray (TaskbarRestartHWND, FALSE);
+        }
     break;
     }
 
@@ -1346,7 +1348,7 @@ static LRESULT CALLBACK MainWindowProc (HWND hWnd, UINT message, WPARAM wParam,
 
 
     default:
-       if (TaskbarRestartOk && message == TaskbarRestart)
+       if (TaskbarRestart != 0 && TaskbarRestartHWND == hWnd && message == TaskbarRestart)
            return AmigaWindowProc (hWnd, message, wParam, lParam);
        break;
 
@@ -3426,20 +3428,34 @@ void addnotifications (HWND hwnd, int remove)
 void systray (HWND hwnd, int remove)
 {
     NOTIFYICONDATA nid;
+    BOOL v;
 
-    if (hwnd == NULL)
-       return;
-    if (!TaskbarRestartOk) {
+    //write_log ("notif: systray(%x,%d)\n", hwnd, remove);
+    if (!remove) {
        TaskbarRestart = RegisterWindowMessage(TEXT("TaskbarCreated"));
-       TaskbarRestartOk = 1;
+       TaskbarRestartHWND = hwnd;
+       //write_log ("notif: taskbarrestart = %d\n", TaskbarRestart);
+    } else {
+       TaskbarRestart = 0;
+       hwnd = TaskbarRestartHWND;
     }
+    if (!hwnd)
+       return;
     memset (&nid, 0, sizeof (nid));
     nid.cbSize = sizeof (nid);
     nid.hWnd = hwnd;
     nid.hIcon = LoadIcon (hInst, (LPCSTR)MAKEINTRESOURCE(IDI_APPICON));
     nid.uFlags = NIF_ICON | NIF_MESSAGE;
     nid.uCallbackMessage = WM_USER + 1;
-    Shell_NotifyIcon (remove ? NIM_DELETE : NIM_ADD, &nid);
+    v = Shell_NotifyIcon (remove ? NIM_DELETE : NIM_ADD, &nid);
+    //write_log ("notif: Shell_NotifyIcon returned %d\n", v);
+    if (v) {
+       if (remove)
+           TaskbarRestartHWND = NULL;
+    } else {
+       DWORD err = GetLastError ();
+       write_log ("Notify error code = %x (%d)\n",  err, err);
+    }
 }
 
 void systraymenu (HWND hwnd)
@@ -3451,7 +3467,7 @@ void systraymenu (HWND hwnd)
     char text[100];
 
     winuae_inactive (hwnd, FALSE);
-    WIN32GUI_LoadUIStringIDS_STMENUNOFLOPPY, text, sizeof (text));
+    WIN32GUI_LoadUIString (IDS_STMENUNOFLOPPY, text, sizeof (text));
     GetCursorPos (&pt);
     menu = LoadMenu (hUIDLL ? hUIDLL : hInst, MAKEINTRESOURCE (IDM_SYSTRAY));
     if (!menu)
index dc4da8d99699a4c3ef864fe19f7a2bca813b0ab2..811b25da5f56532b99ddadbc75d14f7f2d9cba9a 100644 (file)
@@ -15,9 +15,9 @@
 #define GETBDM(x) (((x) - ((x / 10000) * 10000)) / 100)
 #define GETBDD(x) ((x) % 100)
 
-#define WINUAEBETA 4
+#define WINUAEBETA 5
 #define WINUAEPUBLICBETA 1
-#define WINUAEDATE MAKEBD(2008, 1, 1)
+#define WINUAEDATE MAKEBD(2008, 1, 9)
 #define WINUAEEXTRA ""
 #define WINUAEREV ""
 
index 2e80de25434dd9c89e0fac71b3a7f51c5d8b2ebd..72b58a399d00cddea34ac8a4cb0ed6ef86ecd428 100644 (file)
@@ -346,7 +346,7 @@ static int set_ddraw (void)
     dd = (currentmode->flags & DM_DDRAW) ? TRUE : FALSE;
     overlay = (currentmode->flags & DM_OVERLAY) ? TRUE : FALSE;
 
-    ddrval = DirectDraw_SetCooperativeLevel(hAmigaWnd, dxfullscreen);
+    ddrval = DirectDraw_SetCooperativeLevel (hAmigaWnd, dxfullscreen);
     if (FAILED(ddrval))
        goto oops;
 
@@ -357,13 +357,13 @@ static int set_ddraw (void)
            write_log ("set_ddraw: failed, trying without forced refresh rate\n");
            ddrval = DirectDraw_SetDisplayMode (width, height, bits, 0);
            if (FAILED(ddrval)) {
-               write_log ( "set_ddraw: Couldn't SetDisplayMode()\n");
+               write_log ("set_ddraw: Couldn't SetDisplayMode()\n");
                goto oops;
            }
        }
        ddrval = DirectDraw_GetDisplayMode ();
        if (FAILED(ddrval)) {
-           write_log ( "set_ddraw: Couldn't GetDisplayMode()\n" );
+           write_log ("set_ddraw: Couldn't GetDisplayMode()\n" );
            goto oops;
        }
     }
@@ -1017,7 +1017,8 @@ static void close_hwnds( void )
     }
     if (hAmigaWnd) {
        addnotifications (hAmigaWnd, TRUE);
-       systray (hAmigaWnd, TRUE);
+       //write_log ("notif: close_hwnds\n");
+       systray (NULL, TRUE);
 #ifdef OPENGL
        OGL_free ();
 #endif
@@ -1874,6 +1875,7 @@ uae_u32 OSDEP_minimize_uae( void )
 
 void close_windows (void)
 {
+    systray (NULL, TRUE);
     reset_sound();
 #if defined (GFXFILTER)
     S2X_free ();
@@ -2105,7 +2107,8 @@ static int create_windows (void)
        close_hwnds();
        return 0;
     }
-
+    systray (NULL, TRUE);
+    //write_log ("notif: open_windows()\n");
     systray (hAmigaWnd, FALSE);
     addnotifications (hAmigaWnd, FALSE);
     if (hMainWnd != hAmigaWnd) {
index f07b965dbf1360d277834c645a7390ef9c8f0b1b..5f48b806ea807dd1ab0157d5723e0c6954db0cb4 100644 (file)
@@ -574,7 +574,7 @@ static void show_rom_list (void)
        8, 9, 10, -1, -1, // A600
        23, 24, -1, -1, // A1000
        11, 31, 15, -1, -1, // A1200
-       61, 59, -1, -1, // A3000
+       59, 71, 61, -1, -1, // A3000
        16, 46, 31, 13, 12, -1, -1, // A4000
        18, -1, 19, -1, -1, // CD32
        20, 21, 22, -1, 6, 32, -1, -1, // CDTV
index 99b867bff943e46407b17cdeb70d3ea66b12c35b..148997338b60a2669b46e3efe373bd300f70709c 100644 (file)
@@ -3,13 +3,33 @@
 1.4.6 will be the last Windows 98/ME compatible version. 1.5.0
 will require Windows 2000 or newer.
 
+Beta 5:
+
+- fixed wrong input device GUID format in config files
+- 'friendlyname' mapping didn't work if device name had trailing
+  whitespace (like USB ProComp 'USB 2A4K  GamePad          ')
+- C00000 and F00000 relocated beta/special KS roms supported
+  (200000 already supported long time ago)
+- A3000 official confirmed 2.04 ROM added (37.132 internal rom version,
+  37.175 shown in "insert disk" screen..)
+- possible crash when switching >2M chip setting from/to <=2M Chip
+  and >0M Fast RAM configuration
+- removed bogus "P96: display resolution list corruption" log message
+  if biggest available resolution required more RTG RAM than available
+- directory filesystem ACTION_EXAMINE_ALL is now "compatible" with
+  FFS implementation. (workaround for older Scalos ExAll bugs that
+  caused missing icons. Probably fixes other bad programs too..)
+  - eac_Entries is now always at least 1 if continuation flag is set
+  - keep returning ERROR_NO_MORE_ENTRIES even if previous call already
+  returned ERROR_NO_MORE_ENTRIES
+
 Beta 4:
 
 - A600/A1200/A4000 IDE emulation 4G wrap around bug fixed
-- "Add PC drives at startup" drive device name creation tries to
-  detect already mounted device, prevents ugly looking 'DHx_0' names
-  due to name conflicts. (note that this only affects name generation
-  of "Add PC drives at startup"-drives)
+- "Add PC drives at startup" drive device name creation tries to detect
+  already mounted device names, prevents ugly looking 'DHx_0'-style
+  names. (note that this only affects name generation of "Add PC drives
+  at startup"-drives)
 - renamed GUI "autoboot" -> "bootable"
 - rom scan duplicate path detection improved