This is the mail archive of the ecos-patches@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

CSB281 - Add LCD/CRT support


Not the generalized support I had hoped for, but it will do for now.

Index: hal/powerpc/csb281/current/ChangeLog
===================================================================
RCS file: /misc/cvsfiles/ecos/packages/hal/powerpc/csb281/current/ChangeLog,v
retrieving revision 1.4
diff -u -5 -p -r1.4 ChangeLog
--- hal/powerpc/csb281/current/ChangeLog	22 Jan 2003 05:31:16 -0000	1.4
+++ hal/powerpc/csb281/current/ChangeLog	1 Feb 2003 17:55:52 -0000
@@ -1,5 +1,19 @@
+2003-02-01  Gary Thomas  <gary@mlbassoc.com>
+
+	* src/sed135x_16bit.c: 
+	* src/sed1356_16bit.h: 
+	* src/lcd_support.c
+	* src/font.h: 
+	* src/banner.xpm: 
+	* include/lcd_support.h: New file(s).
+
+	* src/hal_aux.c: 
+	* cdl/hal_powerpc_csb281.cdl: Add support for LCD/CRT+PS/2 keyboard
+	as console device.  Hardware support contributed by Mike Kelly of
+	Cogent.
+
 2003-01-22  Jonathan Larmour  <jifl@eCosCentric.com>
 
 	* include/pkgconf/mlt_powerpc_csb281_ram.h (CYGMEM_SECTION_heap1_SIZE): 
 	Make this match the .mlt and .ldi definition.
 
Index: hal/powerpc/csb281/current/cdl/hal_powerpc_csb281.cdl
===================================================================
RCS file: /misc/cvsfiles/ecos/packages/hal/powerpc/csb281/current/cdl/hal_powerpc_csb281.cdl,v
retrieving revision 1.2
diff -u -5 -p -r1.2 hal_powerpc_csb281.cdl
--- hal/powerpc/csb281/current/cdl/hal_powerpc_csb281.cdl	20 Jan 2003 11:11:57 -0000	1.2
+++ hal/powerpc/csb281/current/cdl/hal_powerpc_csb281.cdl	1 Feb 2003 18:14:38 -0000
@@ -114,14 +114,45 @@ cdl_package CYGPKG_HAL_POWERPC_CSB281 {
            depending on the processor fitted.  Select the clock speed
            appropriate for your board so that the system can set the serial
            baud rate correctly, amongst other things."
    }
 
+    cdl_component CYGSEM_CSB281_LCD_SUPPORT {
+        display        "Support LCD"
+        flavor         bool
+        default_value  1
+        compile        lcd_support.c sed135x_16bit.c
+        description    "
+          Enabling this option will enable the use the LCD/CRT as a 
+          simple framebuffer, suitable for use with a windowing
+          package."
+
+        cdl_component CYGSEM_CSB281_LCD_COMM {
+            display        "Support LCD/keyboard for comminication channel"
+            active_if      CYGPKG_REDBOOT
+            flavor         bool
+            default_value  1
+            description    "
+              Enabling this option will use the LCD/CRT and keyboard for a
+              communications channel, suitable for RedBoot, etc."
+
+            cdl_option  CYGOPT_CSB281_LCD_COMM_LOGO {
+                display       "Logo location"
+                flavor        booldata
+                legal_values  { "TOP" "BOTTOM" }
+                default_value { "TOP" }
+                description   "
+                    Use this option to control where the logo is placed
+                    on the LCD/CRT screen."
+            }
+        }
+    }
+
    cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS {
        display      "Number of communication channels on the board"
        flavor       data
-       calculated   1
+       calculated   2+CYGSEM_CSB281_LCD_COMM
    }
 
    cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL {
        display          "Debug serial port"
        active_if        CYGPRI_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_CONFIGURABLE
@@ -295,18 +326,18 @@ cdl_package CYGPKG_HAL_POWERPC_CSB281 {
                 This option modifies the set of compiler flags for
                 building the CSB281 HAL. These flags are removed from
                 the set of global flags if present."
         }
 
-##        cdl_option CYGPKG_HAL_POWERPC_CSB281_TESTS {
-##            display "CSB281 tests"
-##            flavor  data
-##            no_define
-##            calculated { "tests/csb281time" }
-##            description   "
-##                This option specifies the set of tests for the CSB281 HAL."
-##        }
+        cdl_option CYGPKG_HAL_POWERPC_CSB281_TESTS {
+            display "CSB281 tests"
+            flavor  data
+            no_define
+            default_value { "" }
+            description   "
+                This option specifies the set of tests for the CSB281 HAL."
+        }
     }
 
     cdl_component CYGHWR_MEMORY_LAYOUT {
         display "Memory layout"
         flavor data
Index: hal/powerpc/csb281/current/include/lcd_support.h
===================================================================
RCS file: hal/powerpc/csb281/current/include/lcd_support.h
diff -N hal/powerpc/csb281/current/include/lcd_support.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ hal/powerpc/csb281/current/include/lcd_support.h	1 Feb 2003 17:53:01 -0000
@@ -0,0 +1,83 @@
+#ifndef _LCD_SUPPORT_H_
+#define _LCD_SUPPORT_H_
+//==========================================================================
+//
+//        lcd_support.h
+//
+//        LCD support routines
+//
+//==========================================================================
+//####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+// Copyright (C) 2003 Gary Thomas
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later version.
+//
+// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with eCos; if not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+//
+// As a special exception, if other files instantiate templates or use macros
+// or inline functions from this file, or you compile this file and link it
+// with other works to produce a work based on this file, this file does not
+// by itself cause the resulting work to be covered by the GNU General Public
+// License. However the source code for this file must still be made available
+// in accordance with section (3) of the GNU General Public License.
+//
+// This exception does not invalidate any other reasons why a work based on
+// this file might be covered by the GNU General Public License.
+//
+// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
+// at http://sources.redhat.com/ecos/ecos-license/
+// -------------------------------------------
+//####ECOSGPLCOPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):     gthomas
+// Contributors:  gthomas
+// Date:          2001-09-29
+// Description:   Simple LCD support
+//####DESCRIPTIONEND####
+
+struct lcd_info {
+    short height, width;  // Pixels
+    short bpp;            // Depth (bits/pixel)
+    short type;
+    short rlen;           // Length of one raster line in bytes
+    short access_size;    // Data path width to frame buffer
+    short stride;         // Offset (in bytes) between elements
+    void  *fb;            // Frame buffer
+    void  (*off)(void);   // Turn screen off
+    void  (*on)(void);    // Turn screen on
+};
+
+// Frame buffer types - used by MicroWindows
+#define FB_TRUE_RGB565 0x01
+#define FB_TRUE_RGB555 0x02  
+
+// Exported functions
+void lcd_init(int depth);
+void lcd_clear(void);
+int  lcd_getinfo(struct lcd_info *info);
+void lcd_on(bool enable);
+#ifdef CYGSEM_CSB281_LCD_COMM 
+void lcd_screen_clear(void);
+void lcd_moveto(int X, int Y);
+void lcd_putc(cyg_int8 c);
+int  _lcd_printf(char const *fmt, ...);
+void lcd_setbg(int red, int green, int blue);
+void lcd_setfg(int red, int green, int blue);
+void lcd_comm_init(void);
+#endif
+
+#endif //  _LCD_SUPPORT_H_
Index: hal/powerpc/csb281/current/src/banner.xpm
===================================================================
RCS file: hal/powerpc/csb281/current/src/banner.xpm
diff -N hal/powerpc/csb281/current/src/banner.xpm
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ hal/powerpc/csb281/current/src/banner.xpm	1 Feb 2003 17:54:13 -0000
@@ -0,0 +1,488 @@
+//
+// LCD/CRT screen banner/logo
+//
+// Copyright (C) 2003 Gary Thomas
+//
+
+#if 0 // 256 colors
+/* XPM */
+static char * banner_xpm[] = {
+"640 64 256 2",
+"  	c None",
+". 	c #020202",
+"+ 	c #0A3626",
+"@ 	c #045A84",
+"# 	c #48788D",
+"$ 	c #6795A0",
+"% 	c #86B1C5",
+"& 	c #9EC4D2",
+"* 	c #BCD5DB",
+"= 	c #156082",
+"- 	c #CDE0E1",
+"; 	c #082D1F",
+"> 	c #3C393F",
+", 	c #EAEAED",
+"' 	c #042619",
+") 	c #475D5A",
+"! 	c #042216",
+"~ 	c #363736",
+"{ 	c #6D7A78",
+"] 	c #EFEEF0",
+"^ 	c #031E13",
+"/ 	c #0B4355",
+"( 	c #859695",
+"_ 	c #5B5C5B",
+": 	c #021A12",
+"< 	c #F3F2F4",
+"[ 	c #3D5144",
+"} 	c #0F2F25",
+"| 	c #2E365D",
+"1 	c #A2AFB1",
+"2 	c #8E808E",
+"3 	c #04160D",
+"4 	c #EDFDFD",
+"5 	c #03120D",
+"6 	c #A4949A",
+"7 	c #124562",
+"8 	c #73636D",
+"9 	c #163129",
+"0 	c #6D8C98",
+"a 	c #BCC5C4",
+"b 	c #53686D",
+"c 	c #34565B",
+"d 	c #484A49",
+"e 	c #B6AFB2",
+"f 	c #020E0A",
+"g 	c #26403C",
+"h 	c #20607B",
+"i 	c #33525A",
+"j 	c #817887",
+"k 	c #225162",
+"l 	c #FAFAFA",
+"m 	c #0A261D",
+"n 	c #0B4E6A",
+"o 	c #3C3852",
+"p 	c #D0D4D7",
+"q 	c #616261",
+"r 	c #292B42",
+"s 	c #959497",
+"t 	c #0D081D",
+"u 	c #FAFEFD",
+"v 	c #485350",
+"w 	c #496868",
+"x 	c #D6C2C0",
+"y 	c #577882",
+"z 	c #0D221A",
+"A 	c #46465F",
+"B 	c #0B0A0C",
+"C 	c #93A4A9",
+"D 	c #E0E0E0",
+"E 	c #344E50",
+"F 	c #71868D",
+"G 	c #B5B9BA",
+"H 	c #19392E",
+"I 	c #101E17",
+"J 	c #5C6E71",
+"K 	c #628C9B",
+"L 	c #327088",
+"M 	c #789497",
+"N 	c #14261F",
+"O 	c #1E5365",
+"P 	c #061A14",
+"Q 	c #A8BBBF",
+"R 	c #E5D8D5",
+"S 	c #286075",
+"T 	c #BCCCCD",
+"U 	c #04527E",
+"V 	c #413F52",
+"W 	c #0F060F",
+"X 	c #353854",
+"Y 	c #2F2A3F",
+"Z 	c #757C93",
+"` 	c #154153",
+" .	c #4B506A",
+"..	c #A79AA2",
+"+.	c #608696",
+"@.	c #EBE1DB",
+"#.	c #848689",
+"$.	c #848C97",
+"%.	c #8D8A90",
+"&.	c #222222",
+"*.	c #133841",
+"=.	c #41403F",
+"-.	c #09668F",
+";.	c #6A6C6D",
+">.	c #1E312A",
+",.	c #090513",
+"'.	c #272626",
+").	c #90ADB7",
+"!.	c #D9D5D3",
+"~.	c #C8BCBD",
+"{.	c #637977",
+"].	c #336A81",
+"^.	c #294956",
+"/.	c #86A4AE",
+"(.	c #8E9D9E",
+"_.	c #A38D98",
+":.	c #1A160E",
+"<.	c #406A7A",
+"[.	c #1C1A12",
+"}.	c #718280",
+"|.	c #232237",
+"1.	c #CBCCCE",
+"2.	c #10414A",
+"3.	c #070607",
+"4.	c #063244",
+"5.	c #054974",
+"6.	c #7196A8",
+"7.	c #046289",
+"8.	c #334A49",
+"9.	c #27263C",
+"0.	c #1C5259",
+"a.	c #78787B",
+"b.	c #1A5462",
+"c.	c #585C71",
+"d.	c #80809A",
+"e.	c #1E1E1E",
+"f.	c #4A4A62",
+"g.	c #355C67",
+"h.	c #141216",
+"i.	c #B7A4A4",
+"j.	c #313055",
+"k.	c #9BBCCB",
+"l.	c #5D525A",
+"m.	c #666666",
+"n.	c #7A8B86",
+"o.	c #6C6D84",
+"p.	c #A6B6B7",
+"q.	c #3D3F5F",
+"r.	c #A69EA6",
+"s.	c #637C89",
+"t.	c #1A1A1A",
+"u.	c #487283",
+"v.	c #110E25",
+"w.	c #DAD9E0",
+"x.	c #E7E5E9",
+"y.	c #141229",
+"z.	c #174A56",
+"A.	c #F7F6F7",
+"B.	c #7BA3B7",
+"C.	c #828086",
+"D.	c #294844",
+"E.	c #9A8C97",
+"F.	c #C6C4C5",
+"G.	c #FEFEF6",
+"H.	c #2A525D",
+"I.	c #366676",
+"J.	c #0E5D80",
+"K.	c #44606A",
+"L.	c #2E2E44",
+"M.	c #292F57",
+"N.	c #2C1E16",
+"O.	c #06434A",
+"P.	c #064E72",
+"Q.	c #737172",
+"R.	c #180E13",
+"S.	c #908DA1",
+"T.	c #171617",
+"U.	c #135679",
+"V.	c #2F221A",
+"W.	c #547077",
+"X.	c #BDBBBD",
+"Y.	c #3C555A",
+"Z.	c #06303B",
+"`.	c #324640",
+" +	c #4B6B79",
+".+	c #9BB6BE",
+"++	c #334A36",
+"@+	c #55536B",
+"#+	c #666478",
+"$+	c #1D1A2D",
+"%+	c #869BA5",
+"&+	c #9A9C9F",
+"*+	c #201E32",
+"=+	c #C4B0AF",
+"-+	c #0A0205",
+";+	c #2D2C2C",
+">+	c #B2A2A3",
+",+	c #D5CCCC",
+"'+	c #045682",
+")+	c #0A362A",
+"!+	c #9AAEB0",
+"~+	c #1A1629",
+"{+	c #778C97",
+"]+	c #1A4048",
+"^+	c #ACCCDE",
+"/+	c #3C3A5D",
+"(+	c #343147",
+"_+	c #464646",
+":+	c #F3EAE3",
+"<+	c #567D92",
+"[+	c #074A81",
+"}+	c #83869E",
+"|+	c #045E87",
+"1+	c #0C4C57",
+"2+	c #346076",
+"3+	c #677271",
+"4+	c #777082",
+"5+	c #4F4E54",
+"6+	c #504655",
+"7+	c #44415D",
+"8+	c #CEC5C6",
+"9+	c #7B98A8",
+"0+	c #968B93",
+"a+	c #04020E",
+"b+	c #323232",
+"c+	c #615D6F",
+"d+	c #9495A8",
+"e+	c #FEFEFE",
+"f+	c #A7A4A8",
+"g+	c #6C7B88",
+"h+	c #4B424F",
+"i+	c #1E2247",
+"j+	c #272D52",
+"k+	c #5A4A53",
+"l+	c #073A47",
+"m+	c #3A2616",
+"n+	c #E0E6E7",
+"o+	c #6C6B7E",
+"p+	c #FEFAFC",
+"q+	c #1E1219",
+"r+	c #B1C5C8",
+"s+	c #ABADAD",
+"t+	c #044E7C",
+"u+	c #545455",
+"v+	c #9E959E",
+"w+	c #060205",
+"x+	c #092F36",
+"y+	c #CDCDDE",
+"z+	c #78778A",
+"A+	c #63828C",
+"B+	c #204A56",
+"C+	c #0F0E11",
+"D+	c #E1E0E9",
+"E+	c #9EA5A5",
+"F+	c #9C9DAF",
+"G+	c #F5FDFD",
+"u u e+G.G.G.G.G.G.G.G.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+G.G.G.G.G.G.G.G.e+G.e+G.e+G.e+G.e+G.e+G.e+G.e+G.G.G.G.G.G.G.G.G.e+e+e+e+e+e+e+e+u G+G+u G.e+u u e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+D+D+D+D+D+D+D+D+D+D+n+D+n+D+n+D+D+D+D+D D+D+D+D+n+D+n+x.x.x.n+x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.D+x.D+D+D+D+D+D+D+D+D+D+D+w.w.w.w.w.w.w.w.w.w.!.p w.p p y+y+y+y+y+1.1.1.T F.F.a ",
+"e+e+G.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+u u u u u u u u u u u u u u u G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+u u u u u u u u u u u u u u u u e+G.G.G.e+e+u u e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+x.n+n+x.x.x.x., , , , , x., x., , , , x.x., , , x., , , , , x.x.x., , , , , , , , , , , , , , , , , , , , , , x., x., , , x.x.x.x.x.x.D+D+x.x.D+D+D+D+D+D+w.w.w.w.w.w.p p !.p y+y+y+y+y+y+y+y+F.",
+"e+p+e+G.e+u u u u u e+e+e+e+e+e+e+e+e+e+u u u u u u u e+e+e+e+e+e+e+u u u u u u u u G.G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+u u u u u u u u e+e+e+e+e+e+e+e+G.G.G.G.G.e+G.G.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+x.x., , , , x.x., , ] ] , ] , , , , , , , , , ] , , , ] , ] ] ] ] ] ] , ] ] ] ] , ] ] ] ] ] ] ] , , ] ] ] , ] ] ] ] , , ] , , , x.x.x.x.x.x.x.x.D+D+D+D+n+D+D+w.w.w.w.w.w.w.p w.p y+y+y+y+y+y+y+",
+"u e+G.e+u e+e+e+e+e+u e+G.e+G.e+G.e+G.G.e+e+e+e+e+e+u e+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+p+G.G.G.G.e+e+e+G.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+, x.x., , , ] ] , , , , ] , ] , , ] ] ] ] ] ] ] ] ] < ] < ] < < < < ] < ] < ] ] < ] ] < < < < ] ] ] ] ] ] < ] ] ] ] ] ] ] , , , , , , x.x.x.x.x.x.D+D+D+D+D+D+D+D+w.w.w.w.w.w.y+!.p !.p y+y+p y+",
+"u e+u l G+G+G+G+G+G+G+u u u u u u u u G+G+G+G+G+G+G+G+G+G+G+G+G+G+u u u u u u u G+G+u u l l l l l l l l l l l l l l l u G+G+G+u u u G+G+G+G+G+G+u u G+G+G+u G+4 4 G+p+G.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+, , , , ] , , ] ] < < ] ] ] < < ] ] ] ] < < < < < < < < A.A.< < < A.< < < < < < < A.< < < < < A.< < < < < < ] < ] < < ] ] ] ] ] ] , ] , x.x.x.x.x.x.n+x.n+D+D+D+D+D+D+w.w.w.w.w.!.!.!.w.y+p y+p ",
+"A.G+A.!+F F F F F F F F F F F F 0 {+0 0 0 0 0 6.0 M 0 $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 6.M 0 $ K C G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+, ] , ] ] ] ] ] < ] < < < < < < ] < ] < A.< < A.A.< A.A.< A.A.< A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.< < A.< A.< < < < < ] < ] ] ] ] ] ] ] x., x.x.x.x.x.x.D+x.D+D+D+w.w.w.w.w.!.p w.w.!.p p ",
+"l 4 4 F / / / / 7 / 7 / 7 / / 7 7 7 7 7 5.5.7 5./ 5.7 5.5.5.5.5.5.5.5.5.5.5.5.P.P.5.5.n P.n P.n P.n P.n P.n P.n P.P.P.P.P.P.5.5.5.n 5.5.5.5.5.5.5.5.5.P.5.7 [+n n  +A.u e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+, ] ] ] < < < ] A.< A.A.A.< < A.A.G+, < A.G+A.A.l A.A.G+A.G+l A.l l l p+p+l l l A.A.A.l A.l A.l A.A.A.A.A.A.A.A.A.A.A.A.< < < < A.] ] ] ] ] ] ] , , x.x.x.x.x.x.x.D+x.D+D+D+w.w.w.w.w.w.w.w.!.w.",
+"u G+< K / 5.[+/ [+/ 5.5.[+5.5.5.5.[+[+5.5.5.[+[+[+[+5.[+5.5.5.[+[+[+[+[+[+[+t+[+[+[+[+[+t+t+t+t+t+t+t+t+t+t+t+t+[+t+[+[+[+[+[+[+[+[+t+n P.P.[+[+[+[+t+t+[+[+[+t+P.# 4 u e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+< ] ] < < < < A.< A.A.A.A.l l l l A.A.A.l A.A.l l u l l l l l l l l p+l l p+l l l l l l l l l p+A.A.p+p+p+A.p+A.A.A.A.A.l A.< A.< A.< < ] ] x.x.x.x., , , , x.x.x.x.D+x.@.D+D+D+D+w.w.w.w.w.w.!.",
+"u u 4 K 5.5.5.5.5.5.5.5./ [+5.5.5.5.5.5.5.5.[+t+t+t+5.[+[+5.t+P.P.P.t+t+t+[+[+t+t+t+t+t+t+t+t+t+t+t+t+t+t+t+t+U t+U t+t+t+U U U t+t+t+t+t+t+t+t+t+t+t+t+[+n t+U P.# G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+< < < < A.< < A.A.A.l G+A.l l l l l G+l l u u l l u l u l l u l u u p+e+e+e+u u u u l u l e+p+e+p+p+p+p+p+p+p+l l l l A.A.A.A.A.< A.< < y+..2 2 ......>+e ~.x ,+D+D+x.D+@.@.D+R x.D+w.w.w.w.w.w.",
+"p+u G+A+5.5.5.5.5.5.[+5.[+5.5.[+5.5.[+5.5.t+P.t+t+P.U t+t+U t+t+t+t+t+t+P.U U t+U U U U U U U U U U U U U U U t+U t+U U U U U U U U U t+t+U U U U U U U U.n U U 5.u.4 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+< < < A.< A.A.A.l l l l l l l l u u e+l u l l u e+e+e+p+e+u p+e+p+p+u e+u e+p+p+p+e+e+e+e+l u p+e+p+l l l l l p+l l p+p+p+p+A.A.A.A.A., 2 d.S.%.E.6 _.E._._.2 2 2 2 ..X.y+w.w.w.R D+D+w.p w.w.w.",
+"G.u G+0 5.5.5.5.5.5.5.5.[+[+t+5.5.5.5.t+5.t+P.t+U t+U P.t+t+t+U U U U U t+t+U U U U U U U U U U U U t+U U U '+U '+U U U U U U U U U '+U U U U U U U U U U t+U '+n u.G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+< < < A.A.A.p+l l l l e+u e+u p+e+p+e+p+e+e+p+l p+e+e+u e+u e+e+e+e+e+e+l u u e+e+e+p+u e+e+e+p+p+p+p+p+p+e+p+p+p+l l l p+A.A.A.A.< ,+S.j j 4+o.#+o+j E.d.2 2 j E._._._._...i.=+i..._.z+#+S.e G ",
+"l u G++.5.[+[+[+5.[+5.[+5.t+5.t+t+t+t+t+U t+t+t+t+U t+U U U U U U U U U '+'+U U U U U U U U U U U U '+U '+'+U '+U '+'+'+'+'+'+'+'+'+U '+'+'+'+'+U '+U '+U '+U '+n u.4 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+A.A.A.A.A.l l l l e+e+l p+u e+e+e+e+e+e+e+e+u e+e+e+u e+e+e+l p+u e+u p+e+e+e+e+p+e+e+e+e+e+e+e+e+e+e+e+e+p+u l p+p+A.A.A.A.A.A.< f+z+z+4+z+4+#+4+o+8 2 2 j j j >+_.2 2 2 _._._.2 j j _.2 4+c+7+",
+"G.u G+0 [+[+5.[+[+[+[+t+[+t+t+t+t+t+t+t+U U U U t+U U U U U U U U U '+U U '+'+'+'+'+'+'+'+'+'+'+'+U '+'+'+@ '+@ '+'+'+'+'+'+'+'+'+@ '+U U U U '+U '+'+@ '+'+U '+U # G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+A.A.p+p+p+p+p+u l G.e+e+G.e+e+G.e+G.e+G.e+G.e+e+G.l w.p w.!.y+x.p !., A.A.p+e+e+e+e+e+e+G.e+e+G.e+e+e+G.e+G.e+u p+G.p+p+p+p+p+:+e 0+4+4+j z+#+j o.#+c+4+4+8 c+4+4+c+6+8 j =+~.=+>+6 _.2 c+l.o R.",
+"G.u 4 $ [+[+[+[+[+[+t+t+U t+t+t+t+U U U U '+'+U '+'+'+'+'+'+'+'+'+'+'+'+@ '+@ @ @ @ @ '+'+'+'+'+'+@ '+@ @ @ @ @ @ @ @ @ @ @ @ @ @ '+@ @ @ @ @ '+@ '+'+@ @ '+'+@ U.# 4 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+A.A.A.p+l l l p+e+e+e+G.e+e+e+e+e+e+G.e+e+e+e+G.p+w.F+d+f+f+..F+S.d+d+F+F+1.n+D A.u e+e+e+e+G.e+e+e+G.e+e+e+e+G.G.p+G.p+l l , f+E.d.j 2 E.j #+2 4+c+@+@+f.7+f.6+f.7+/+f.c+6 j _.E.2 _.4+q+R.-+w+",
+"G.G.G+0 t+U U U U t+t+t+U U U U U U U U U U '+'+U '+'+'+'+'+'+'+'+'+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ '+'+'+@ '+@ @ @ '+U.U.@ '+U.# 4 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+p+p+p+p+e+e+e+e+e+e+e+e+G.G.e+G.e+e+e+G.e+u u G.e+1.v+F+f+e f+d+S.}+$.S.S.d+&+F+e < e+e+G.e+e+G.e+e+e+G.e+e+e+e+G.p+A.] x.X.d.S.2 j z+j j d._.4+8 4+8 6+7+q.7+/+/+A 7+f.c+8 #+c+4+_.6 k+w+w+w+. ",
+"G.u 4 $ U t+t+t+t+U U U U U U U U U '+'+'+'+'+'+@ @ @ @ |+@ @ @ @ @ '+@ |+@ @ |+|+@ |+@ @ @ @ @ @ |+@ |+@ |+@ |+|+|+|+@ @ @ @ @ |+@ @ @ @ @ @ |+@ @ '+J.U.J.= J.'+<+4 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+A.p+l e+e+e+e+e+e+G.e+e+e+e+e+e+e+e+e+e+e+G.e+e+@.8+F+i.X.>+F+S.}+d.d.d.}+$.d.S.}+8+G.G.e+e+e+e+G.e+e+e+e+e+p+l G+l F.S.Z o.o+S.E.2 d.o.4+2 S.2 4+4+4+ .A /+7+q./+/+/+7+#+k+@+f.k+V :.B . . . . ",
+"G.G.G+0 U U U U U U U '+'+'+'+U U '+U '+'+@ |+@ |+@ @ @ 7.7.|+|+@ @ @ @ |+|+|+|+|+'+= J.-.J.|+J.@ @ @ J.'+7.@ 7.|+|+7.|+|+|+7.|+|+@ @ |+@ |+|+|+|+-.h ].# $ % K U.<+4 G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+A.p+p+p+e+e+e+e+e+e+e+e+e+G.e+G.e+G.e+G.e+e+u G.,+x s+~.8+=+f+S.}+d.Z d.d.}+d.d.}+F+l u G.G.G.e+e+e+e+G.G.e+e+< f+F+v+}+#+o.4+>+E.E.z+c+4+j j 8 o.@+c+@+7+/+/+| /+/+/+7+@+ .@+7+Y ~+. . . . . . ",
+"G.u G+6.U '+'+'+'+'+'+'+@ @ '+@ @ '+@ '+'+@ @ |+7.@ J.U.U.U.J.@ |+7.|+|+|+7.7.7.|+= = L ].S h h S h h L L U.J.@ |+7.7.|+|+7.|+7.|+|+|+|+7.7.@ J.L % % % & ^+^+& <+y 4 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+G.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+G.e+e+e+e+e+e+A.!.=+e x ,+x e F+S.d.d.d.d.}+d.d.Z }+p !.p D+w.D+A.G.G.G.G.G.] !.i.>+..d.o+4+E...2 2 c+#+d.4+j 8 c+#+c+f.A q./+/+/+A 7+A f.6+/+q+,.. . . . . . . ",
+"G.u 4 6.U '+'+'+'+'+'+'+@ |+@ @ @ @ |+|+|+|+|+@ J.b.L $ 6.u.O h J.|+7.7.|+|+7.|+J.h $ * ^+% % & & % % % k.K S h = J.|+7.|+7.7.7.|+@ |+7.7.|+h L <.B.k.).).r+.+9+9+( G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+p+G.G.G.G.G.G.G.e+e+e+e+e+G.e+e+e+G.e+G.e+e+e+:+x ~.x ,+@.x =+F+}+d.Z Z Z d.d.Z Z d.S.S.S.F+d+d+F+y+l G.l !.f+E.0+r._.4+4+2 2 j _.2 #+j 4+j j 8 c+@+A /+/+| /+/+/+q.7+/+Y ~+t . . . . . . . . . ",
+"G.u G+6.'+@ @ @ @ @ @ |+|+|+|+|+|+|+|+|+7.|+|+J.U.<+k.^+r+r+B.+.L I.= = = = J.h h L $ * T - Q p.^+* ^+k.% % B.+.$ L h J.7.7.7.7.7.7.|+J.J.= = 2+<.W.C a G !+p.p.).Q l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+G.p+e+e+e+e+e+e+G.e+e+e+e+e+e+e+e+e+G.e+G.G.p+R x x R x R ~.>+>+}+d.z+Z Z d.Z d.Z j d.d.}+$.d+S.S.S.F.F.}+c.@+c.f.c+4+S.}+S.2 4+4+8 8 E.8 #+8 #+#+#+/+/+/+q./+j.j.i+$+v.B -+. . . . . . . . . . ",
+"G.u 4 6.'+@ @ |+|+|+@ @ |+|+|+|+|+@ |+|+|+|+J.S $ * * * T ^+^+^+^+).$ <+# ].# # <.<+Q 1 G y+1 C E+Q ^+k.% ).6.B.% B.L h ].-.= J.h = = b.1+l+/ 7 <.u.y 1 y+Q $..+Q T G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+l G.G.G.G.e+e+e+e+e+e+e+e+G.e+G.e+e+G.G.G.e+A.R x x R @.@.x i.v+S.S.d.z+z+Z z+Z Z z+z+4+o.o+b #+#+#+#+@+f.7+q.A  .7+@+@+c+8 4+j j 4+4+E.4+c+4+4+j @+/+j+i+i+i+q+t W W a+3.. . . . . . . . . . . ",
+"G.l G+6.@ |+|+@ |+|+|+|+|+7.7.|+|+|+J.J.= U.h u.K Q - r+^+1 M M )./.6.B.B.6.+. +K.F+F+f+p.a y+1 C r+1 ).9+9+s.0 % u.# L L U.b.U.L h / l+4.l+` S g.6.<+6..+r+/.F k.r+l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+G.G.G.e+e+e+G.e+G.e+G.e+G.e+G.e+e+G.G.u !.@.@.R x R @.@.R ,+e }+F+f+d.z+o.4+#+c+c+ .f.f.f.A 7+q./+/+7+@+7+/+/+/+7+7+7+7+/+7+/+/+/+4+4+4+c+@+7+6+/+$+v.t t t t W ,.-+w+. . . . . . . . . . . . . ",
+"G.u 4 6.|+|+|+|+|+|+7.7.|+|+7.7.J.J.J.h ].+.+.$ 6.}.Q n+* T C 9+J A+9+6.+.+.2+<. +$.$.$.C T T r+%+k.r+).s.W.W.K.9+K.I.# 2+/ l+l+O.l+4.4.l+n <.# g.g.g.W.9+C ).W.B.1 G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+p+G.G.G.G.e+e+e+e+e+e+e+e+e+e+e+e+e+x.1.f+f+,+x R x x R x i.E.S.v+..z+#+@+f.A 7+/+q.q./+q.q./+o /+o j.j.j.j.j.7+7+f.k+7+j./+/+/+/+/+8 8 @+/+*+$+q+v.t t W ,.,.,.a+w+w+. . . . . . . . . . . . . ",
+"p+G.G+6.@ |+7.|+7.7.|+7.7.-.|+J.J.I.L K % % 9+0 M Z b G n+- X.d+9+{+6.u.k k K. +s.s.0 $.z+%+p..+9+.+^+9+^.Y.g+y {+# 2+<.2+/ l+4.4.4.2.l+/ h h O k g.]+` W.9+ +^.K.9+l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+D !.p l e+e+G.e+G.e+G.e+e+e+e+G.l w.e f+f+~.,+x x ~.e 6 S.d+r.2 z+c+c.f./+/+/+/+/+o (+X /+/+q.X j.j.j.j.j.Y Y j.7+8 E.c+7+/+7+/+/+/+j.j.Y $+R.R.t W ,.,.-+-+w+w+w+w+. . . . . . . . . . . . . . ",
+"A.G.4 6.|+7.7.7.-.7.7.-.7.-.-.= L B.k.).B.).9+Z F W.K.{+- w.- y+Q ).+.2+^. .u.9+ +s.y J J J d.{+F %+% # H.u.9+9+B.<+ +u.2+k 2.B+)+g.2.Z.l+/ h S ` g.c 2+<.F W.^.y F G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+c.S.G w.u u p+G.G.u G.G.l l G.A.p G s+e e =+~.i.i.>+%.S.E.F+d.c+c.f.7+/+j./+/+/+7+/+/+7+/+/+o (+(+j./+/+j./+j.j./+/+k+7+/+/+/+/+j.$+N.q+N.q+t W W ,.a+a+. a+w+. . . . . . . . . . . . . . . . . ",
+"p+u 4 B.-.7.-.7.7.-.7.7.-.-.= L B.+./.!+/./.9+y F y b g.%+r+D+X.1 1 s.k <.6.}+9+A+A+g+3+J J $.{+s.C 0 2+c <+y 0 /.{+<+g.` g.*.z.I.2+2.l+1+S L b.7 4.B+2+ + +F Z ).d+G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+q. .#+{ d.F+w.p+l A.n+p F.D A.X.f+S.F+y+f+S.d.d.2 }+2 }+z+c+f.A f.f.7+7+/+/+/+7+7+h+7+7+f.h+o o V /+o j.o o /+/+/+/+/+7+7+h+j.q+N.q+q+q+q+W ,.,.w+-+3.. . . w+-+w+. . . . . . . . . . . . . . . ",
+"p+u 4 6.-.7.-.-.-.-.-.-.-.h L $ 0 0 %+).T 1 ).<+B.g.Y.g.y .+- - * ^+B.<+# s.@+s.y g+b z+b g+( .+A+0 <.` 7 2+ +0 /.9+s.B+7 2+k l+# B+)+b.L b.O.l+z.Z.` c i b /.F %+Q l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+| q.f.@+c+#+o+F+s+X.F.X.X.s+s+F+F+S.F+e %.d.d.z+o.o.c+@+ .f.f./+/+/+/+7+/+o o o 7+o o h+h+/+/+7+h+7+A h+7+7+h+7+o V V Y N.v.$+N.q+~+R.t W W ,.w+w+W W . . . w+. . . . . . . . . . . . . . . . . ",
+"p+u G+B.= h -.L L ].h = ].].# s.Z 9+/./..+& %+u.<+2+O B+B+ +%+* y+^+6.2+<.<.o.( d.F g+$.g+b  .b K.<+<.B+B+<.y 6.{+{+s.H.]+H.<.H.<.g.0.S 0.1+l+/ z.l+` B+y K.0 B.s.1 G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+l e+l e+e+e+e+e+l e+l l e+e+l e+l l e+l e+e+l l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+l e+l l e+l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+l e+e+e+e+e+e+e+e+e+e+l e+e+A.e+l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+| | | A  . .c.#+o+4+F+G s+F+d+F+F+d+s S.z+d.Z o.c. .q.A /+7+/+o /+7+/+/+o j.o (+o o o 7+7+7+h+h+V 6+7+h+7+V o o (+o Y v.q+R.q+t R.t t W ,.-+w+w+w+w+. . w+. . w+. . . . . . . . . . . . . . . . ",
+"u G+4 %+S L u.].# # L S ].K 0 g+z+%+E+F d+k.+.<.2+2+k k u.y i 6.* .+<.` H. +g+/.F 9+0 ).Q 0 %+K.b +.<.` ` y ).9+Z Z J /.K.k k # k k 0.l+2./ O O +.<.z.l+7 B+k S g..+G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+l l e+A.D x.D l e+e+e+e+< ] x.D x.A.< D x.< l l l A., D D x.D ] A.l l e+e+e+e+e+e+e+e+A.< D x.l l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+l l < D x.A.l l e+e+e+e+e+e+e+e+e+A.D n+] l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+M.| | | q.f. . .c.c.#+z+$.}+}+}+#.d.S.}+d.z+c.f.A 7+V 7+/+/+o j.(+V o o /+o j.7+o /+/+/+o o q.7+o V /+o o o o m+N.q+q+t t v.W W W ,.W W W W w+. . . . 3.w+. . . . . . . . . . . . . . . . . . . ",
+"u G.G+B.u.$ k ^. +K.y <.# <+s.g+d.d+E+ +s.).6.O n O 7 L # <+g ^.%+^+6.g.H.g+$.9+F A+s.9+r+).9+ +K.F 6.H.2+<+)./.o.s.%+- .+E E A+z.2.l+4.2.S +.2+<+% ` 7 <.2+O B+k W.4 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+l G C+3.B D e+e+e+e+A.u+3.3._+l w.3.h.F.l A.e+G._+3.3.. h.=.e A.e+e+e+e+e+e+e+e+e+l &+3.&.A.l l l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+l !.3.C+F.l l e+e+e+e+e+e+e+e+l A.;+w+%.e+l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+j.M.| | | q.A f. . .c.c.#+4+Z d.d.}+}+z+c.f.7+7+V o /+q.(+(+(+j.j.j.j.(+(+j.(+7+V o > o o (+/+o /+o (+(+V.9.*+~+q+R.W t W ,.,.,.,.-+W B w+. . . . . . . 3.w+w+. . . . . . . . . . . . . . . . . ",
+"u G+G+0 2+c i x+Z #  +^. .<+g+s.J F d+ . .+.K U.O n 7 # <.B+^.g+%+9+6.H.2+C - - ^+/.2+` ^.Y.K.K.K.W. +c 2+b F+B.Z %+^+T * k.K. +]+k Z.7 7 B+<.g.u.0 c 2.k g.b.` I.W.G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+G.p+G B 3.3.#.G.e+e+e+D C+3.3._+u w.. h.F.u l u l d . B T.B f &.p G.e+e+e+e+e+e+e+e+l b+3.3.&+l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+u D t.&.F.e+l e+e+e+e+e+e+e+e+G.l ;+. %.G.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+M.M.| | | | /+f. . . .@+@+@+c.#+o.d.#+5+q.q.X o X V o o (+j.(+j.o o j.(+o o o o (+o Y o (+(+o (+Y $+N.$+*+q+R.W W W W W ,.a+,.a+w+. w+w+. . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+"G.G.G+F +.9+F E ^.g.W.+.q.F F 6.F {+}+ +K.y g.h b.l+0.<+# B+K.A+B.9+s.^.W.Q r+9+6.2+l+7 7 *.^.W. +s.Y.]+i 2+k.Q F g+%+- p * k. +H.u.7 ` k 2+<.<.g.K.H.7 g.y I.S A+F G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+G.G C+3.. b+l l A.l &+. 3.. =.u D . C+F.p+e+e+e+_+. q !.f+T.3.s l e+e+e+e+e+l e+l X.3.3.B _+l l e+e+l A.!.e F.< e+e+A.D X.G D l l e+l A.D G e p < e+l l l e+] 1.s+X.D A.l l < X.X.n+A.A.A.D G G 1.A.x.w.< D &.. C.D+l l e+, F.s+X., l e+e+G.A.1.e F.< l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+j+j+j+| /+q.q.q.A A  . . . .@+ .5+f.V X X (+o X L.L.j.(+j.(+o o o (+(+o (+(+Y (+(+Y Y 9.V.$+*+q+q+$+q+N.$+q+W t W ,.,.a+a+-+w+w+. . . . . . . . . . . w+w+. . . . . . . . . . . . . . . . . . . ",
+"p+p+l F Y. +F+K.` H.4.y K.Y.Y. +K.Y.}+ + .s.i O 1+O.O.z.^.]+i K.$ <+W.s..+* ^+g.l+l+7 / z.7 g.0 6.M y <. +s.$.o.0 y Y.s.- - - {+W.g.4./ h 2+7 2.<. + +i K.E <.# +.y 4 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+X.B . b+. 1.u G.l 5+3.;+3.=.G.D . 5 F.e+e+e+G._+. ;.u < ;+. C.G.e+e+e+e+e+l u l _ 3._+B B 1.l l A.< C.h.f 3.d w.l F.;+3.3.&.e A.A.x.;.h.B 3.C+5+!.A.l A.p =.C+3.B e.Q.x.l D B h.a A.] C.:.3.3.B m.d 3.f+;+3.. B d ] l E+;+C+3.3.;+s+A.l ] ;.C+3.B _ ] e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+9.j+j+j+M.| /+q.q.7+A A A f.f.q.X X o (+X L.L.L.j.(+(+(+(+j.Y (+(+Y (+Y (+Y Y V.$+q+q+~+v.t R.t R.q+q+q+q+R.W W W ,.,.a+a+a+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+"l l l ( g.b s.s. +W.i  .+.Y.g  +K.F 9+#+ +Z W.S 1+O.1+H.H.).C 0 y *.2+6.6.B.<.l+7 z./ S 0.` H.w ( {+K. +9++.u.K.9+J  +H W..+* * y k ` k O 2.7 B+B+F y +.A+<+ +2+g.w G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+G.G B . %.3.Q.p+u D C+'.m.. _+u D . C+F.e+e+e+e+_+. 5+f+Q.h.h.X.A.e+e+e+e+l G.l D h.. X.v . m.l l G+X.C+B =.T.B C.] =.3.~ ;+B b+n+< _ B h.d v &.. ;+D A.p &.B e.u+=.C+B _ A.w.3.C+F.A.C.3.B ~ u+;+B B 3.E+v C+3.t.q < f+h.B =.u+> B B X.l s+B T.d h.B &+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+i+i+j+M.| | | q.A A A A f./+X X X X (+X X o (+(+(+j.j.(+j.(+j.9.Y Y |.9.V.$+~+q+q+t R.t q+v.y.t R.t t R.W t ,.,.a+a+w+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+"e+A.l %+b %+J b y +.2+W.K.g.g K.) g+Z (.G Q o.S b.O.l+O.B+b }+Y. +B+I./ O z.l+/ / n S l+g.c i Y.( C %+s.c c u.u.#  +y c Y.^.s.).).A+^.u.2+z.<.7 g.2+u.y  +^.H.7 *.K.4 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+G C+. p t.'.< l %.B C.;.3.=.e+w.. h.F.e+e+e+l _+. . 3.B 3.u+x.l e+e+e+e+e+e+G.C.3.e.A.f+. t.D A.u #.3.'., G #.s+D t.. s+w.$.0+] E+B C+s+< p+p &.. Q.A._ 3.;+D l A.C.'.;+F.w.3.C+X.p t.B a.] u ] ;.3.B f+l ;+3.%.l ] '.3.q A.l A.C.3.=.A.;.3.~ < E+#.~.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+j+9.j+| /+/+q.| q.q.q.q.| X (+(+(+j.L.(+(+X j.(+Y Y 9.9.~+~+*+~+*+~+*+q+~+y.t v.v.t t t t W t v.t t W t t ,.a+a+a+a+a+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+"p+p+G+C b J o.b s.Y.^.K.^.y ^.K.J b ).r+a T W.H.O.1+b./ 2+B.d+( s.k z.z.l+O.O.1+b.z.K A+F 0 /.}.g+( a 9+i B+k k 2+K.Y.w g.*.B+^.%+/.K.y <.S H.l+*.H.y +.6.+. +B+B+ +4 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+p+G B 3.] d . G l ~ f F.Q.. _+G.D . C+F.e+e+l e+=.. 3 '.&.C+B m.< e+e+e+e+e+l ] '.3.v F.G B 3.%.G.A.X.C+B d &+D l , =.3.;+a.F.] l u+. _ A.p+u p+#.3.'., B B f+u l l G+D D ] w.. h.F.&+3.&.D l A.u w.&.. f+G.'.. #.l G B . s &+E+E+&+3.B !.f+3.T.u+f+D u e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+$+i+*+i+i+i+i+j+i+j+j+Y L.9.j.L.(+(+(+L.L.Y L.j.~+$+y.v.v.t v.v.~+v.v.t t t t t t t ,.,.a+W t W ,.,.t a+a+a+a+3.w+. . . . . . . . . . . . . . -+W . . . . . . . . . . . . . . . . . . . . . . . ",
+"G.A.l p. +) d.$.W.E E  + +i ^.W.{+g+( T 1 y+!+g.0.O.O.<.c Y.Z %+K./ l+1+O.l+5.n O z.% 6.E b Z ).d+F $.}+}+g.g 2+g.g.y y 2+H.*.]+K.9+9+K. +g.B+l+l+g.g.K.s.+.y k ]+b G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+p+X.f w+, f+3.q p 3.b+< ;.. =.e+D . 5 8+u e+e+e+_+w+q D w.C.5 h.1.e+e+e+e+l u s+3.. 3.w+B 3.. b+< G+< #.&.3.3.&.s+A.F.=.C+3.h.;.] b+3.C.A.p+u l e f 3.1.B f ,+l l G.l u G+G.w.. C+a a.. ~ l G.p+G.A.~ . f+G.;+. $.l &+. 3.B 3.3.. B 3.f e ] ;.[.3.3.;+a e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+i+9.~+~+~+i+~+i+$+~+$+Y o (+(+(+V V =.h+h+> 6+f.V.*+v.,.,.a+a+,.y.v.t t v.t t t ,.,.a+a+a+t q+t t -+R.W ,.w+-+B B W 3.W w+w+. . . w+w+w+w+-+-+R.b+-+. . . . . . . . . . . . . . . . . 3.. . . . ",
+"p+e+l Q n.) C.$.}.w K.0  +<.Y.{+A+) g A+Q 1 T .+y B+]+6.c g+9+2+` O.l+l+/ O.7 7 2.*.c y b g+g+}.$.$.{+J 3+r+n.Y.) W.W.y <.*.*.]++.3+).%+u. +H.B+k 7 z.u.y 6./.u.*. +4 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+G.G B . < n+h.h.a.w+#.l Q.. _+u D . C+F.e+e+l e+=.. ;.l l D e.3.e e+e+e+e+e+A._+3.:.;+;+;+;+B 3.s+A.l l !.s ;+3.=.] G+x.s+u+C+C+X.d . _ A.l l u s B [.D C+. s+l u A.l x.x.< - 3.h.F.%.3.;+, A.A.l D '.. s+u '.. #.p+s+B 3.u+;.m.m.q m.q p < A.1.%.&.3.5+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+*+i+~+i+$+*+i+9.$+i+9.L.L.L.;+L.(+(+(+o o Y o 7+~+*+v.,.,.,.,.t y.v.t t v.v.t t a+,.a+a+a+t $+R.v.t ~+h.C+t B C+q+R.R.[.:.h.B C+B 3.B C+R.'.:.m+h+:.N.N.m+N.R.N.R.q+:.R.N.[.3.q+R.N.W R.-+R.[.:.",
+"p+p+u r+!+Q a.&+Q 0 Y.y K.i Y.{.A+{+c H W.%+p.Q y 0.w A+s.9+C k l+O./ / l+/ / 4.l+*.>.K.}.$.$.C %+!+9+g+o+a w.1 {.W.H.]+<+w *.*.i A+{+F F y <.].H.I.z.E 0 +.K k *.K.G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+X.B . , l _ 3.h.C+p l Q.. =.p+w.w+h.e , , , e+=.w+m.x.D s B f ,+e+e+e+e+l 1.h.. &+x.D n+D _+. u+A.a._+a.l s 3.;+E+_+u+w.p &.B s+s 3.T.X.l A.!.;+. q A.d 3.=.D l l f+b+~ ~.D . C+F.F.C+B C.< l < C.3.. f+l ;+. %.l D e.3.#.] A.A.&+;.a.] q _+s A.a.3.b+G.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+i+i+i+i+Y Y j.j.Y j.j.(+L.L.L.Y L.L.Y Y L.Y (+L.~+$+v.v.v.t t v.y.v.t t t t ,.,.a+a+a+a+a+a+t t a+a+a+a+3.a+a+a+. w+w+w+. . . . . w+w+. . . w+W N.-+w+. . w+3.-+-+-+w+-+N.V.w+w+-+W -+B -+-+W B ",
+"l l l X.).E+!+( C .+( [ k ]+Y.F n.y [ H W.Y.y y A+/.{+%+).g.I.7 1+5./ / 4.` ` 4.*.B+*.x+W.( { Z b ( p.C $.p w.n+T {.H.*. +s. +^.*.^.g.H.H.H.<.H.z.g.$ g.c g.c ` Z.K.4 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+G.G.p+G B 3.:+l s+. 3.=.G.l ;.. d u w.3.3.'.;+;+d x._+3.:.;+'.3.3._ A.e+e+e+e+G.m.. t.] e+G.e+G.f+3.C+1.#.3.h.u+;+3._ p e.C+_+v B '.p ] 5+3.[._ q '.. ;+1.A.F.&.C+;+;._ T.3.u+< w.3.h.a < ;.3.h.d m.d C+C+3.s+l ;+3.#.l l #.C+B _+;.u+C+3.C.l ;.3.I m.&.3.a.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+i+i+9.j+M.j.X X /+q.X V o (+(+(+L.Y L.L.(+L.j.Y j+Y i+i+~+~+*+~+*+$+~+y.y.y.t t t t ,.a+t ,.t W -+a+,.a+a+a+. . a+. . . . . . . . . . . . . . w+-+. . . . . . . . . . . . w+. . . w+. . . . . . ",
+"u l u X.g+( !+%+1 C T !+E H E {+}.c J c [ A+g g.y s.{.F ^.` k / O.l+l+l+l+4.` H. + +g.H.) W.w 3+) 4+$.( !+p w.a C %+w K.B.A+F  .i *.x+*.*.7 g.L g.l+k ` ]+x+4.` 4.K.G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+u G.l G B B n+G.] h.B s l l ;.B =.l w.. 3.. 3.. '.D d 3.3.. C+&.m.D A.u e+e+e+x.t.3.C.u G.e+u u , t.3.Q.D _ C+3.C+=.!.A.s :.3.B e.&+< G.D _ h.3.. B =.1.A.l l X.=.3.3.3.3 q D l D 3.h.X.A., m.h.3.3.f u+d 3.f+l ;+3.#.A.l , 0+'.3.3.3.t.a.< l w._+3.3.B 5+D e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+i+i+i+9.j+j+j.X X q.q.q.q.X X L.L.L.L.L.(+L.L.Y Y 9.Y j+j+Y 9.i+9.*+*+i+$+~+v.v.t t t t t W t ,.t B W ,.,.a+w+. . . . . . . . . . . . . . . . . . . . . . w+. . . . . . . . . . . . . . . . . . ",
+"p+e+u D $.{ n.F (.p.T - ).K.`.M {.) i Y.D.K.c D.^.x+i i ]+` l+n O.l+l+` 4.z.i +. +K.g D.J s.b { b b F ).!+T p.{ .+- %+<+2+]+E s.s.K.]+*.k *.7 2.z.Z.2.g.^.]+4.` ]+W.G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+p+G.p+, F.F.l l l p F.] l A.w.F.,+u < F.F.F.F.F.1.A.p F.F.1.F.w.A.A.A.p+e+e+e+< F.F.x.e+e+e+G.l A.p F.1.l , G &+s+x.A.A.A.1.E+E+,+A.l A.G+] F.f+E+F., l A.l l u n+X.&+&+8+A.A.l < F.F.] l < < 1.f+&+X., w.F., l 1.F.D l A.l l D s+&+E+p < A.A.A.:+e &+G ] l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+i+i+i+i+j+j.| X X | q.q.q.q.q.X | (+L.Y Y 9.9.9.i+Y 9.Y 9.Y |.Y Y 9.9.Y 9.9.i+*+*+y.y.v.t ,.,.,.W R.t q+B ,.3.a+w+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+"e+l l , p $.b 3+( C p.- - /.b {.K.Y.g.H D.[ ]+W.i x+*.N *.7 / l+l+l+/ ` ^.K.0 .+s.Y.K.) w b ( ( g+{+F <+M  +Y.`.{.B.y c ]+c. +{+* r+J H.B+]+2.k <.2.)+<.).+.]+4.]+W.G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+u G.l A.l A.u A.l u A.A.l u u l u l u l u u G.l l u l l u u l l l l e+e+e+e+u u l l G.e+p+e+l A.A.G.l A.A.l A.l l l < l A.A.G.l l l l l l < A.l u G.l l A.A.p+G.l l u l l l l l G.l G+l A.G+l G.p+l l l G+l l u l u A.l A.l G.A.p+l l A.G+l l G+A.l A.l l G.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+i+i+i+j+j+j+M.X q.`.q.`.q.8.A f.5+f.X L.L.Y r j+i+9.i+Y i+i+Y Y j.Y 9.j+9.9.9.9.9.i+*+$+$+~+y.R.t R.v.R.v.B a+a+3.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+"e+l l D D a 3+n.!+E+a p - r+#.}.W.c ) D.g.u.)+<+{+Y.x+x+l+` l+l+l+4.k K.g.n.Q G M F ( %+( (.r+r+!+).0 H.} *.g 9+{+b ) g.K.W.{+G - * * /.g.]+B+z.z.]+0.c I.{.^.]+*.Y.G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+l e+A.u l l l G.l A.l l l l l A.l l u l u G.l l l A.l l A.l l A.l l l l l G.l G.l l l A.l l l l l l l l l A.l l l l l l < l l l l G.l l l l u l l p+l l l u G.l l G.l p+l u G.G+l l G.A.l A.G.l l G.l l l p+l l l l A.G.l u A.l p+l l l l l l l A.l l l l e+e+l l e+l l e+l e+l e+l e+l e+e+l l l l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+i+i+j+i+j+Y M.| q.q.A A A  .c.c.#+o.c.V (+j+9.Y j+Y Y 9.i+9.|.i+9.Y |.9.9.j+L.r r 9.9.9.9.*+9.*+~+h.v.h.h.v.3.. w+w+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+"l u u G 1.p a E+E+}.( T p p {.q J )  +c l+O.+ H.+.J j+x+l+)+4.)+2.k g.W.M r+* }.u+3+}.3+b 3+}.(.!+n.c g c  +{.M y W.J %+A+!+^+r+T G r+r+).<.)+*.)+)+H.D.H A+%+^.*.) 4 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+G.l p+u x.&+u+Q.p A.A.u A.A.A.l u l < l l G.l l < l A.l A.e G F.E+D s , A.u A.l l l e+l A.A.l l A.X.E+l A.A.A.A.A.l l G.p+!.f+n+s , < l l l l G.l l l l G.l l u p+l l u l l l A.A.] &+D l l A.l l l l A.l l l l p &+< A.A.l &+1.l l l l A.A.A.l A.E+1.l l l l A.l l l l l l e+l e+l l A.s+F.l A.l x.#.< l l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+i+i+i+i+M.X X X q.q.8.@+c.#+J o+o.4+Q.#+ .o L.j.9.r Y 9.|.9.i+*+*+9.i+9.|.9.9.L.Y r r r r Y Y Y 9.|.*+$+q+q+t B B 3.a+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+"G.l p+1.8+D !.p p.n.m.{ Q - ( v 8.[ M w O.2.]+u.{+u.*.` / l+l+Z.]+g c F !+p.r+3+{.3+_ }.1 r+G C }.) {./.!+.+/.F }.M C C 1 * T r+T Q 1 !+!+/.K.4.; Z.x+; *.) Q /.W.{.G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+p+G.l w._+d f+_+&., A.] D l A.A.p+x., A.A.x.] A.u l A.G+A._ %.C.m.D &+< A., x.G.l l , ] l A.l G.1.'.s+l ] D l l G+l ] < l %._ F.~ 1.n+A.l l , n+l A.u l l l , ] A.l l :+D l , n+A.D ;+1.D A.u l A.D ] G.A.A.n+@.s u+A.A.D < ;+X.l ] D A.l l < D x.> e l l A.A.< A.A.l A.A.< x.A.l l l ] ~ f+A.] D F.'.< l G.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+i+i+i+j+j.X q.q.A  .#+Z Z o.o.z+o.o+Z o+#+c+A (+j.Y 9.Y |.|.|.*+i+r 9.|.9.i+9.Y 9.Y 9.r 9.|.9.Y |.Y 9.9.|.|.*+~+t 3.3.w+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+"l l l D !.!.- p p C }.}.3+C p F g `.) ).M w H D.H.B+z./ l+l+)+*.]+c %+)./.!+( 3+(.E+p.p.T G !+(._ 3+p.1 1 !+n.( C p.(.n.(.G T p.r+!+(.E+!+C M w H.H.} x+D.Y.s.%+).!+G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+u l l ;.q , l < G x.&+;+;+_ < Q.=.b+> n+s+;+> 1.u+1.x.d a ~ a.:.e.#.Q.&+b+> ;+1.] _ ;+b+=.G A.A.=.C+s+%.~ ;+Q.] _ ~ s+l 1.[.e.a.:.> '.X., C.b+;+#.A.l l w._ ~ '.X.D '._+'._ ~ ;+&+F.h.=.;+u+] 1._ ~ b+a ] a.b+;+;+#.!.d ~ > h.D E+b+;+u+A.p =.~ =.e.!.l x.d a f+_ n+5+X.s+~ ;+_ x.#.~ a.e.1.E+;+b+~ u+A.e+l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+i+i+j+| q.A  .c.#+Z d+(.S.d.z+Z z+z+z+4+c.b c. .q.| r L.r 9.r 9.|.9.9.9.|.|.|.9.&.|.|.9.r 9.Y L.9.Y Y r 9.9.|.&.*+~+h.a+w+w+w+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+"e+u G.n+!.p !.T G 1 a.s+{ v !+p (.v [ n.T p.w i B+/ O.O.l+l+4.*.8.J p.M ( n.++v (.a 1.T s+&+s+s (.s+p.(.(.p.Q (.M ( E+(.$.s+!+s+p.C %+1 E+(.%+{+F {.D.]+g 0 A+I.g b G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+p+G.x.e.1.A.A.l l X.'.1.p [.G > a.1.&.G _+m.s X.=.D 1.b+G ;+X.'.G q a._ u+D b+s a._ D E+B ,+u l _ a.E+~ 1.a '.G ~ %.] l , ~ E+a._+w.d a.s =.X.s+&.D A.A.u+q F.#.> G &.D C.'.w.;.5+s b+1.F.;+s+d Q.F.Q.u+s =.p 1.&.s+=.#.D #.;+X.&.e F.&.s+~ C.D %.e.l u < =.v+> =.v+v X.b+X.p ;+s+_+;.X.;+s+;+X.n+=.a.e+l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+i+j+q.A 5+@+v+~.F.X.f+..F+e f+j z+o.C.s o.#+c.@+u+ .7+o X L.9.|.9.9.|.&.i+e.|.i+|.9.*+;+9.|.|.|.9.'.9.|.9.|.|.|.|.|.*+C+,.a+3.w+w+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+"e+u u n+p p 1.p s+C.( G p.a.b s+p E+{ !+T T Q W.D.2.O.1+b.z.8.+.F n.(.{ m.J [ { r+a a E+E+C.Q.G 1.G E+s ( E+W.g ) { ( &+(.s ( (.E+}.n.!+1 ( A+F W.g.H H 9 g w y D.K.l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+u D [.1.A.A.x.D ;.C.A.] '.s+e.D D ;+D s+b+_+e ~ l e =.G ~ F.;+!.=.s+~ G A.~ G '.F.l F.5 A.l < > f+u+%.p+D '.f+;+n+G.l w.b+1.d &+G.d f+b+&.~ ~ ~ , l p C+b+~ b+_ C._ < a.Q.A.m.Q.m.C.G.n+~ %.C+b+~ b+;.=.s G., '.E+;+D A.&+_ q I ~ > ;+E+:.] l s+d l l G.q =.q ~ ~ F.a.m.A.< ~ f+;+F.s+=.C.q l A.v f+u e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+V @+o.v+~.,+x.:+:+:+R ,+~.@.@.e %.4+#.e C.Z o.#+o+;.#+c.u+7+L.Y Y Y 9.i+*+i+&.9.9.r |.9.L.9.&.*+*+*+|.*+*+*+*+*+|.|.9.|.&.$+h.B 3.w+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+"p+G.G.G s+T 1.a p.}.q Q.#.p.n.3+a p T a T p.r+/.) c c w 0. +).1 %+Q (.(.n.J }.p.a r+n.;.&+{ ( E+}.n.E+( ( {.g H H ) }.{ n.}.m.J }.{ C C s.b b w ++9 H + ; ; } + H b G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+A.p+G.d u+1.s+'.&+a.b+p a.=.1.e.A.1.;+X.u+s '.&+;+F._+_ v+v e =.w.'.X.'.w., &.x.'.C.1.=.> l l < [.1.q d 1.m.u+G ;+A.A.l F.;+!.~ F., ~ 1.=._ X.a.f+l A.D :.s s+m.p _ #.A.5+s < =.s d =.1.a.=.F.&.s s+;.!.u+u+1.Q.b+X.[.&+F.b+a.Q.=.F.#.#.w.C+&+1.;+a.G.l u s e.1.~ m.A.%.b+X.#.=.X.~ D #.m.$.b+~.f+C+p p+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+&+v+e D+:+:+:+:+:+] ] :+< :+] @.X.v+C.d.%.s s S.%.C.o.o+o+;.@+V ~ r |.I y.$+*+e.i+*+$+N &.i+$+y.I y.$+t.y.$+~+y.$+*+;+r *+*+*+T.h.3.-+-+-+. . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+"G.l G+n._ }.(.s+(.n.m.[ _ J n.}.p.T a 1.a G a 1 p.!+w W.9+)..+!+Q !+) g ) !+(.( !+n.[ 3+1 &+q [ J { J b }.g + 9 H g W.b { {.[ J {.{.{.D.} + H } z ^ ! ! ^ ; } ' ! v G+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+u l l w._ ~ d s+< < _ ~ m.x.G a.A.X.C.D d _+G w.=.=._ s+s &+p.#.p ;.X.;., w.;.A.G ~ _+=.a.G.u n+_ < D u+~ Q.x.s+#.G.A.G.G a.D ;.D D ;.D 1.d ~ Q., G.l l f+=.=.s < ;.a < ;.1., m.X.m.m.~ _ w.< s ~ =.s+< F._+> _ a.< %.;+_ u+X.] _ ~ q w.l %.~ v _ G l G.l F.C.< C.p l , ;.> ;.w.F.a.:+#.f+D _ ~ q u+] l l l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+,+F.,+:+:+:+:+:+:+:+:+:+< :+:+:+@.8+f+%.j s >+..>+6 0+j j j o+_ u+_+X r *+I i+i+e.*+~+$+*+*+z ~+$+P y.P y.y.5 y.9.o 5+r |.e.i+$+I y.h.R.B 3.. . . . . . . . . . . . . . . . . . . . . . . . . . ",
+"l G.G.a.++[ ) J J q [ [ [ [ ) ( T a r+G a a n.}.r+n.W.y w M .+p.p.( H H n.n.w w w ) ) w {.[ [ J w ) g w +++ + + + H ++c [ [ H g g 9 ' } } } ; m ' ! : ^ ^ } 9 ; ; Y.u e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+G.G.G.l < l G.G.G.A.< G.G.l l u G.l G.A.A.l G.A.A.< l p+A.p+l p+l G.p+l l l 1.e.a.;.~ !.A.G.p+A.G.l l < l G.l p+l G.l p+l l l l l l G.G.A.] l G.u l u G.< ] l G.< p+G.A.G.l l G+l A.< G.l l l A.A.l G.l A.A.A.l l G+A.A.< G.l A.< A.G.l G.< A.l p+e+e+u G.l l l l G.l A.< A.l l A.u l l G.l A.A.A.u e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+R R @.@.@.@.@.@.@.:+:+:+:+:+:+:+:+@.8+>+C...=+i.i.>+i.=+6 C.o+#+m.c+7+X j+9.r i+i+$+$+I $+i+$+y.y.y.y.y.y.y.y.I *+(+~ |.~+~+$+$+~+*+> ;+*+v.w+. . . . . . . . . . . . . . . . . . . . . . . . . ",
+"G.G.G.3+`.++++v [ ++[ [ [ [ J !+r+1 ( C E+}.) 3+}.++++H [ 0 ( M 0 w H ++w D.++++H ) [ g H H H H >.+ } H + ; ; ; + + + + ; } ; m m z ! ' ; ; ; ^ ^ P : ^ P N z m N ) G.G.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+G.G.G.G.l u G.l l u l G.G.G.l u u A.l G.u l G.l G.G.G.p+G.u l G.G.G.G.G.G.X.a.C.n+l l l G.A.G.l G.G.G.G.G.u G.G.G.G.G.G.G.G.G.u G.G.u u u G.G.G.e+l G.l l G.u l G.l G.G.l G.l G.G.u G.u l l G.G.u G.l l G.l G.G.G.l G.l G.G.l G.G.u G.G.p+G.G.e+e+G.u G.G.G.G.u G.u G.u u u G.G.G.G.u l G.G.p+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+@.R @.@.@.@.@.@.@.@.:+:+:+:+:+x.:+:+@.R X.x ~.i.i.i.=+x =+E.4+c+z+;. .f.A q.~ j.j+r j+9.9.i+r i+i+i+M.j.i+y.~+i+|.9.r |.i+9.9.i+9.L.6+6+b+9.*+$+:.,.. . . . . . . . . . . . . . . . . . . . . . ",
+"u G.G.;.>.++g ++[ ++++++++[ ++{.M }.{.{.{.) ++++++D.+++ 2.D.++++H + H + H + + + } g H 9 9 } H 9 ; ; ' ; ; ; ' ; + + + ; ' ; ; ' ; ! ! ' ' ; ; ! ^ : : : P 5 f f 5 _+u e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+G.e+G.G.G.G.G.p+G.l p+e+G.G.G.G.l G.l l u l l G.u G.G.p+G.u e+e+e+G.l < l l p+G.l l l G.G.G.G.u G.l u G.u e+e+u G.l G.e+G.e+p+u G.p+e+p+e+A.u G.l G.G.G.G.G.u l l G.G.l u l l l l G.G.G.l G.G.G.u G.l l l l G.l l l G.G.G.l G.e+G.p+e+u e+e+e+e+e+u l G.e+G.u G.l G.G.e+p+e+p+e+p+G.e+e+u e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+R R R R R R @.@.@.@.@.@.@.@.@.@.@.@.@.!.,+,+x i...6 i.=+i.0+4+#+q c.f.A A q./+`.q.X X X q.q.X q.7+ .o+c+6+o L.9.Y (+L.(+r (+o (+~ o 7+6+> (+9.'.|.T.,.w+a+a+. . . . . . . . . . . . . . . . . . ",
+"G.G.G.;.I >.++g ++++++g ++D.H D.2.D.H D.g 9 } H + + + + + ; ; ' ! ' ; ; ; } ; m ; m m m ! ^ ' ' ! ! ! ' ; ; ; ; ; ; ; ; ' ' } ' ; ^ ! ' m N } ^ : : : P f 3.B f f =.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+p+p+e+e+G.e+G.p+G.l e+p+e+G.e+e+p+u e+e+l e+u p+l l l l G.G.l e+e+l e+e+e+e+e+e+l e+e+e+e+e+e+p+e+e+e+e+e+G.e+e+e+e+e+e+e+e+e+p+e+G.u G.G.e+e+G.e+e+G.e+e+e+e+e+e+e+e+G.u G.G.G.G.G.u G.G.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+G.e+e+e+e+l u e+u e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+!.!.w.R R R R R R R R @.R @.@.R @.@.D R R R ,+i..._.>+>+i.%.a.#+c. .E f. .E A  .A  .v  .5+@+u+@+#+j ..s j l.l.o 6+d h+7+=.f.d h+A _+6+5+> > o (+(+'.y.t B t ,.,.w+w+. . . . . . . . . . . . . . ",
+"G+G+l { I I g H H g `.++H } ; ; + ; 2.H ' } ; ; ; ; + ; ; ; ' ' m ! ! m z 3 : 3 3 : P P P : ^ ! ! ' ' ; ; + ; ' ^ 3 3 ! ! ' + } } ' ; ' ' } } ' ! z ^ P 5 f f B 3.=.l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+G.G.G.e+G.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+!.,+,+,+!.!.!.R !.R w.R D !.!.D w.R R D R D R i.6 2 E.6 >+2 a.c. . .f.f.f. .f.A  .@+z+4+4+j Q.z+2 6 e r.E.j 8 c+k+c+@+d 7+6+5+5+l.6+V 6+h+h+6+> (+Y *+~+y.v.v.t ,.B ,.3.3.w+. . . . . . . . . . ",
+"G+G+l 3+N f N H } N b+>.3 5 z 3 ^ ! ; m P I f : ! ; } ' ' m ! ^ z ! : : 3 5 f 5 5 5 3 P 3 3 3 : ! ' ' ; ' ; } m P f 3 ^ 5 3 >.H ' ; ' } ' } } ^ I z I 3 5 5 C+f B =.A.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+,+,+,+,+,+,+,+!.!.!.!.!.!.R !.!.!.!.!.!.!.!.!.=+..C.2 0+6 Q.Q.@+ .f.f.A  . . .f. .z+r.f+F+f+f+r.f+e x ~.e f+6 %.o+Q.#+u+5+6+6+l.5+6+=.7+=.h+h+(+(+Y |.y.y.v.t v.,.t ,.B h.B 3.. . . . . . . . . ",
+"G+l G+E+a.3+3+}.{ { { Q.m.;.;.;.;.;.3+Q.;.;.m.;.3+3+{.{ Q.{ Q.3+{ Q.{ 3+;.;.J J ;.J J ;.;.3+3+{.{.{ {.{ {.}.}.{ { 3+a.}.a.3+}.n.{ }.{ }.{ }.{ 3+3+{ Q.3+3+;.;.;.;.#.l e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+,+y+,+,+,+,+,+,+,+!.!.!.!.!.,+!.!.p !.!.!.!.!.~.i.C.Q.2 0+j Q.q @+ .@+ . .@+@+@+c.%.e e X.X.X.X.~.8+,+,+x ~.e >+0+0+4+c+u+@+@+c+l.5+=.o h+6+k+> (+b+L.*+$+y.~+y.y.y.y.y.e.$+:.B B B . . . . . . ",
+"u G.G+G+G+G.G+4 4 G.G.G.p+p+G.G.G.G.G.l p+G.G.G.G.G.G.G+p+G.G.p+G.G.G.u G.G.G.G.G.G.G.G+G.u G.G.G+G+G+G.G.G.G.G.G.G+G.G.G.G.G.l G+G+G.4 G+G.G+G.G.u p+G.u u G.l p+p+A.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+F.F.F.8+y+1.1.1.1.8+,+,+1.,+,+1.,+,+8+,+,+,+,+F.i.%.a.0+0+j j ;.#+q #+#+#+3+z+o.C.s+X.~.=+~.~.8+8+8+,+,+8+8+~.e ..f+s C.z+Q.#+8 l.f.V h+h+6+l.h+(+> L.|.$+y.~+$+~+~+T.~+9.V.V.N.[.:.R.w+. . . . ",
+"G.G+G.G.G.G+G.G+G.G+u u G.G.G.u u G.u G.G.u u u u G+G.G.u u G.u G.G.u G.G.G.u u G.G.G.G.G.G.G.G.G.G.G.G.p+G.G.G.G.G.u G.G.G.l G.G.G.G.G.G.G.G.G.G.G.e+G.e+e+e+p+G.p+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+~.~.~.F.F.F.8+8+8+1.8+8+,+1.1.,+8+1.,+1.1.1.,+F.G 0+C.2 2 j j 4+o+o.Q.z+Q.C.C.2 s =+F.F.8+,+8+8+8+,+8+8+8+8+F.~.e e v+%.C.4+8 ;.8 l.V > h+6+k+> > (+(+9.|.*+*+*+|.*+~+|.(+6+> h+(+m+[.C+w+. . . ",
+"G.G.u u G.G.G.G.G.G.G.G.u u u G.u G.u u u u u u u G+G+u u u u u u e+u u e+e+e+e+e+e+e+e+e+e+e+G.G.G.G.G.G.G.e+e+e+e+G.G.p+G.G.G.G.G.G.G.G.e+e+p+e+e+e+e+e+e+e+p+e+p+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+~.X.X.~.~.~.~.F.F.8+F.F.F.8+F.8+8+F.8+8+8+8+8+~.G 6 %.0+E.%.%.j j z+a.C.d.%.s %.r.X.~.F.~.F.F.F.F.F.F.F.F.~.F.F.X.e f+r.v+0+2 j Q.l.5+h+6+6+h+> > > (+b+'.|.*+|.Y |.N.9.> k+k+l.l.l.l.N.w+3.. . ",
+"e+u u G.G.u u u u u u u e+G.e+e+e+e+e+G.e+G.G.G.G.G.G.u G.u e+e+e+u e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+u e+e+e+e+e+u u e+G.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+G X.e e G G G X.X.X.X.~.~.~.F.a ~.F.F.F.F.F.F.X.e &+6 ....v+E.%.2 C.0+E.s r.r.r.e ~.F.~.~.F.~.F.~.~.~.~.~.~.X.X.e e e s+f+E+v+%.C.o+c+c+_ l.l.k+6+> > h+(+Y (+m+o o (+> k+8 8 8 k+k+h+m+q+h.C+C+",
+"e+e+u u u u G.G.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+u u e+e+e+u u u u u u e+e+e+G.u u u u G.e+e+e+e+e+u u u u e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+",
+"e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+u e+e+e+e+e+e+G.e+G.G.e+e+G.e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+
 e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+e+"};
+#else
+/* XPM */
+static char * banner_xpm[] = {
+"640 64 89 1",
+" 	c None",
+".	c #030304",
+"+	c #0E3833",
+"@	c #075A83",
+"#	c #32728A",
+"$	c #628E9A",
+"%	c #8AA9B4",
+"&	c #A4BCC4",
+"*	c #AECEDE",
+"=	c #CEE2E2",
+"-	c #3A565A",
+";	c #063243",
+">	c #1A3A2E",
+",	c #E5E6E9",
+"'	c #062418",
+")	c #ECEAEB",
+"!	c #69787A",
+"~	c #48656C",
+"{	c #EEEEF2",
+"]	c #021E12",
+"^	c #363636",
+"/	c #86959C",
+"(	c #021A12",
+"_	c #F2F2F6",
+":	c #083D48",
+"<	c #345057",
+"[	c #0A2E22",
+"}	c #A4AAAC",
+"|	c #F6F6F6",
+"1	c #0E2E26",
+"2	c #74727B",
+"3	c #104555",
+"4	c #5B5C62",
+"5	c #16121C",
+"6	c #EEFEFE",
+"7	c #BABABC",
+"8	c #324A36",
+"9	c #0E251D",
+"0	c #084976",
+"a	c #797A86",
+"b	c #100E16",
+"c	c #526A6E",
+"d	c #BED1D3",
+"e	c #958C98",
+"f	c #2A2F2D",
+"g	c #B9ADAE",
+"h	c #CAC4C4",
+"i	c #9B9AA0",
+"j	c #204244",
+"k	c #FBFAFB",
+"l	c #40423E",
+"m	c #0E0A1E",
+"n	c #48515B",
+"o	c #85828F",
+"p	c #312E41",
+"q	c #222222",
+"r	c #F6FEFE",
+"s	c #D2D2D3",
+"t	c #3B3A56",
+"u	c #527783",
+"v	c #44405A",
+"w	c #67646E",
+"x	c #0A6389",
+"y	c #22627A",
+"z	c #A1B6B9",
+"A	c #211E26",
+"B	c #DDDADF",
+"C	c #181820",
+"D	c #23243B",
+"E	c #6696A2",
+"F	c #254E5A",
+"G	c #376373",
+"H	c #554755",
+"I	c #0E060E",
+"J	c #FEFEF6",
+"K	c #2D3055",
+"L	c #748D93",
+"M	c #06507C",
+"N	c #62828F",
+"O	c #0A0A0E",
+"P	c #585266",
+"Q	c #FEFEFE",
+"R	c #728489",
+"S	c #332418",
+"T	c #474855",
+"U	c #B8C6C8",
+"V	c #7798A6",
+"W	c #686D76",
+"X	c #E4E2E3",
+"rrQJJJJJJJJQQQQQQQQQQQQQQQQQQQQQQQQJJJJJJJJQJQJQJQJQJQJQJQJJJJJJJJJQQQQQQQQrrrrJQrrQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQXXXXXXXXXX,X,X,XXXXXXXXX,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,X,XXXXXXXXXXXBBBBBBBBBBBsBssshsshshsUhhU",
+"QQJQQQQQQQQQQQQQQQQQQQQQQQQQQrrQrrQrrQrrQrrrrrrrrrrrrrrrrrrrrQrrQrrQrrQrrQrQJJJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQX,,XXXX))),),),))))XX),),))))),,,)))))))))))))))))))))),),)))XXXXX,BB,,XBXBXBBBsBBBssBssssdssdsh",
+"QkQJQrrQrrQQQQQQQQQQrrQrrQrQQQQQQQQQrQQrQQJrrrrrrrrrrrrrrrrQrQQrQQrQQQQQQQQJJJJJQJJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQXX))))XX){{{){),),))){){),){){{{{{{){{{{){{{{{{{)){{{){{{{),{))),,,),X,,XXXX,B,BsB=BsBdBshshshsh",
+"QQJQrQQQQQrQJQJQJQJJQQQQQQQQkkkkkkkkkkkkkkkQQQQQQQQQQQQQQQQkkkkkkkkkkkkkkkkJJJJQQQJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ),),)){_,)),{){{)_{{{{{{{__{_{____{_{_{{_{{____{{{{{{_{{{{{_{))))))XX,X,XX=XXXBXXBBBBBBsssssdsss",
+"rQrkrrrrrrrrrQrrQrQrrrrrr6rrrrrrrQQQQQQQrrrrkkkkkkkkkkkkkkkJrrrQQQrrrrrrQQrrrrr66rkJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ)){{{,)_{_|{{{__{{{{________||___|_______|_____|______{_{__{{{{{{){),,,,XXXX,=XBXBBBsBBBBBsBssds",
+"|r|}RRRRRRRRRRRRLL$LL$LELLLEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEVLLE$%rQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ,{,{__{{_{______{_{_|__||_||_||_||||||||||||||||||||__|_|_____{_{{{{{{{,),,,,,,X,XXXBBsBBsssBsss",
+"k66L:3333333333333330030303000000000000M0000000000000000MMM0M0000M000000000M03000c|rQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ)_{{___{|_|||__||6)_|r||k||r|kk|kkkkkkkk|||k|k|k||||||||||||____|{{{{{{{)),,,X,X,X,XBXBBBBBBBBBB",
+"J6_$00030300M000000000000000000000000000M000MMMMMMMMMMMM00000M00000M0M00000M000MMu6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ_{{____|_||||kkkk|||k||kkJkkkkkkkkkkkkkkkkkkkkkk||kkk|k|||||k|_|_k__{{X,,,)))),,,,B,XXBBBBBBBBBs",
+"Qr6$0000000030000000000MMM0000MMMMMMM00M0MMMMMMMMMMMMMMMMMMM0MMMMMMMM0MMMMMM0MMMMu6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ____|__|||kk|kkkkkkkkrrkkJkrkkJkJJkJQJQJJQkJkQkQkkkkkkkkkkk|||||_|__sieoiiigg7hsXX,XXXXBXBBsBsBB",
+"kk6N00000000000000000MMM0MMMMM0M0M0M0@MMMMMMMMMMMMMMMMMMMMMM@M@MMMM00@MMMMMM@MMM0u6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ___|_|||kkkkkkkkrrrkrkkrQQJkJrkQkkQQrQkkkQQQQkQkQkkkkkkkkkkkkkk||k|)ooeeeeeeeeooooi7sBBBBXBBsBBB",
+"Jrk$0000000000M0000M0M0MMMM0MMMMMMMMM0M@MMMMMMMMMMMMMM@M@MMMMMMMMM@MMMMMMMMMMM@M0#kQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ___|||kkkkkrrrrkQkQkQQkkkQQQQQQQQQQQkrQQQQkrQQQkkkkkkQkkkkkkk||||_seaa22w2aeooe2eeeeeigggieaweg&",
+"kJ6N000000000M00MM0MMMMMMM0@MMM@M@M@M@MMMM@M@M@M@M@M@@M@M@@@@@@@@@M@@@@@M@M@M@M@Mu6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ|||||kkkkrQkkQQQQQQQQQJQQQrQQQkkrQQkQQQQkQQQQQQQQQQQQkQkkk|k||||_ia2222w22woo2o2geooeeeeoaoeo24v",
+"JJ6L0M0M000M0MMM0MM0MMMMM@MMMMMMMMM@M@@@@M@M@M@M@M@M@@M@@MMM@M@M@@@MMMM@M@@@M@MMMu6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ||kkkkkrkJQQJQQJQJQJQJQQJkBsBBh,ss)||kQQQQQQJQQJQQQJQJQQkJkkkkk)ge22o2wawwP22ww22wHwaghggeee4Pt5",
+"Jr6E000000MMMM0MMMMMM@@MM@M@@@@@@@@M@M@@@@@@@@M@@@M@@@@@@@@@@@@@@M@@@@@@@MM@@M@@@u6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ|||kkkkkQQQJQQQQQQJQQQQJkBie}}iieiiiih,X|rQQQQJQQQJQQQQJJkJkkkXgeoaoeawe2wPPHvHHHHtHweoeeee25mI.",
+"JJ6$MMM@MM0MMMMMMM@MMM@@M@M@MMMM@M@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M@@@@@@@@M@M@u6rQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQkkkkQQQQQQQQJJQJQQQJQrrJQsiiig}ieo/eeiiig_QQJQQJQQQJQQQQJk|{X7oeo2a2ooe2w2wHHvvttvvHP2wP2eeHIII.",
+"Jk6EMMM0MM@MM@MM@MM@@@M@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@x@@@@@@@@@@@@@@@@@@F@y@@u6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ|kkQQQQQQJQQQQQQQQQQQJQkXhig7gieoaoooLoeohJJQQQQJQQQQQkkrkhea2weeeow2oeo222HvtvttttHwHPHHHAI....",
+"JJk$MM@MMMM@M@@MM@MMM@@@@@@@xx@@@@@@@@xx@@@@x@@@@@@@@x@x@xx@@xxx@@@@@@x@@xy#uE%$@u6rQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ|kkkQQQQQQQQQJQJQJQJQQQJshghhg}eLoaRoooooikrJJJQQQQJJQQ_}iiow22gee2w22owwPwPvttttttvPHPHS5II....",
+"Jk6VMM@M@M@@@@@@@@@@@@@@x@x@@@x@xx@xxxxx@xy##yyyyyy##@@@x@xx@x@xx@@@xx@x#%%%***&Nu6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJQQQQQQQQQQQQQQQJQQQQQQ_BgghhhgieoooooRoResBsXBX|JJJJJ)Bigiow2eeoePwo2owPwwHHvtttHvHHHt5I.......",
+"JQ6E@M@M@@M@@@@@@@@@@x@@@F#EVc@y@x@x@@xx@yEd*%%*&%%%&$yyx@@x@xx@x@xxx@y##%&%%*zVV/rQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQkJJJJJJJQQQQQJQQQJQJQQQ)hhhsXhgiooaNaooaaReeei/eis|JkB}eeie22oooeow2222wwPvttKtttvvtKCmII.......",
+"JrkEMx@@@@@@@@@@@@xxx@@x@uz*UU%N#Gxxxx@yy#Ed*=&&***&%%%NE#y@xxxxxx@@@xxyGu%U7%zz%&kQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJkQQQQQQJQQQQQQQQQJQJk|BhhBhB7g}LaaaRaNoaaaooLieeehho4PPHw2eeeo22w2ewwwwwwtttvtKKDAmIII.........",
+"Jr6V@@@@x@x@x@xx@@@x@xxyEddd*****%EuuGuuGN&z7d}%}&*&%%E%%%#y#xx@yxxFM+33~#u}s&e&&UrQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQkJJJJQQQQQQQQJQJQQJJJJ|BhhBBXhgeeeoaaaaaaaa2WWcwwwwPTvvHPvPPPw22o22e2w22oPtKDDDmmmmmI...........",
+"JkkE@x@@x@x@xxx@x@xxxMyu$&=U*}LV%%E%%E$~~ii}zUd}%*zzVVuE%#u##@F@#y3:;;jyGVNEz&%R&UkQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJJJQQQJQJQJQJQJQQJJkBXBBhBXBBsgoiio2W2w44PTTHTvvttvPvtttvvvHtHvtt222wHvHtDmmmmmmmII.............",
+"Jr6E@@@x@@xxx@xxx@@yGNNEER&X*d%VWNVENNG#~eLoiddU/&*%Nuc~VGGuy3;:3;;;:M~u--GuV%%c%}6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQkJJJJQQQQQQQQQQQQQ,h}ghhBhhBhgeeiiawPvvvtvvtvtttttKKKKKvvHHvKttpvtwwHHA5mmmmmmmmI...............",
+"kQkV@xxxxx@xxx@@@G#$z%VLVa~7,=7eVLV#FF~~N!L/a/zzV%*VF-RuLuy~G3:;;;::3yxF@-jjcVcFGVkQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQXsskQQJQJQJQQQQJkBggihhhhhgeeiioaPwvtvvtttKKttttKKKKKKKKvwePHpHvpHpKSDm5mmmmmII.................",
+"|J6E@xxxxxxxxxxx#%z%%%VaRu~L=B=sz}NGFnuVcNucWcoLLV%uF#/V%uc#GF:F+G:;;3yyj--y~LcFuRrQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ4e7BrQkJJrJJkkJ|s7}ggghggeeeeiowPPvtKtttvvtvvttKKKvtKtKKvtHHtvttp5S5S5mmmmmm..I.................",
+"k6_%xxxxxxxxxxy#VN%%%%VuRu~-/UX7z}NF~EoVNN!WuWLL!%$G-NuN%LN-3->3GG::0y#F0;FGccRa%irQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQvnw!oiBkk|,shX|7}eihgeo2eeoooPHvvPvvtttvvvvvTvttvvtKtttttttvvHK5S5555mmmmII....I................",
+"kr6Exxxxxxxxxx#EE$/%*}%N%--Guz==d*%uuNPNuacac!/&NL~30Gc$%VNF0GF:uF1F#F0;3;:-Fc%R/&kQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQKtnP4wWig7h77}giieigeao22wwHPHPttttvttttvttvvttvvvvHvvvvtvvK55AS55555mmmIII.....................",
+"kr6%xxx###yx##uNaV%%z*/#uGF3F~Vdd*EG#Gw/oRaLacPcGu~jF~uLLR!FjF#FGGFyFM:0F;3Fu~$%N}rQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQkQkQQQQQkQkkQQkQkkQkQQkkQQQQQQQQQQQQQQQkQkkQkQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQkQQQQQQQQQQkQQ|QkQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQttKTnP4wW2i7}iiiiiie2oa2PPvvtvtttvttKKtKtttvvvHvvHvvvvttKtp5555555mmmII.........................",
+"Qk6/y#uyu##yG$RN2/}R/&N#GGFFuu<VdzG3<u!%NVL%&$/~c$#j3u%Voac%~FFuFF@+::FF$G0:3jFyGz6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQkkQ|X,XkQQQQ_{,X,|_X,_kkk|)XX,X{|kkQQQQQQQQ|_X,kkQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQkk_X,|kkQQQQQQQQQ|X,{kQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQKKKKvTnn44wa/ooLooeoo2PHHvvvtttKKvtvttKvtttvttvvtvtttttSSm5m55555mmmmII.........................",
+"rQ6VuEFFu~uGuuNao/}~N%VFMF0#uujFV*VGFNoVLN!VU%VcGRVFGN%%WN/=z<<N33:;3y$GN%j0~GFjFc6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQk7b.OXQQQJ|P..TkB.5hk|JJT...5lg|QQQQQQQQQki.q|kkkQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJkB.bhkkQQQQQQQQk|f.eQkQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQKKttKvTTnn44w2aooooaPPvvvttvKKKKKKKKKKKvvttttKttttppSSA555mmmmmmmmmII.......I...................",
+"rrr$G<<;auuFPuN!uRiTPN$@FM0u#FFa/VVFG%B=*%G3FnG4Gc~-GciVaV**d&GcjF;33FG-u$-3Fy@j#crQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJk7O..oJQQQXbI.TJB.5hrkrkT.OCI(AsJQQQQQQQQr^..ikQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQrXCqhrkQQQQQQQQJkf.erJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQKKKKKttTPnnPPP4wWowPvvKttvttKKtKttKKvtttKtDtKptppCS5Dmmmm5mmmmmmmIIII...........................",
+"JJrRNVR<F<uNvRRVRLouGu-y@:FuujGN%V!FW&UVLG;33;FccN-3<G&&Ra/=dd&cFu3:FGG#-~F3GuGyNRrQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJrJ7bI.^kk|ki...lrB.bhkQJJT.4s}CI/kQQQQQkJk7.IbTkkQQk|Bgh_QQ|X77XkkQk|X7gs_QkkkQ{s}7X|kk_77,|||X77s|,B_BA.oXkkQ)hg7)kQQJ|sgh_kQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQKKK0tttvvvnnnnPnPTvKtKvKKKKKKKtttKKtKKKpKppDSCA5mA5AS5mmmmmmmmIIII..............................",
+"kkkL-ciG3F;uG--~~-o~PN<F0330Fj<G$uu!z**y;:03F0-LVLuGcNL2$unN===Lc-;3yG03Gcc<~<~u$u6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJr7O.f.srJJnOf.lJB.(hrQQJl.Wk{f.oJQQQQQkrk4.TOOskk|_obOOTBkhf..qg||,W5OObnB|k|slbIOAWXkXO5U|{o5..OwTI}f..IT{k}fb..f}|k{Wb.O4{QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQDKKKKttvvvvvnvnttttKtKKKKKKtKKKKKKKpppSSC55C5mmm555555m5mmmmIII.................................",
+"kk|V-cN!cu<PNnjcGRVw~auyM:0FF}%RN;GEE%~:033yF3F~VeGcVNu~/uc>c&dduF0FF:3jFLuNNN~G-~kQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJ7O.e.2krBbqw.TJX.bhQQJJT.H}2557|QQQQkJkXC.7n.wkkr7bOlCba{lI^fO^,_4Obnnq.fB|sqOAPlbb4|B.bh|o.O^PfOO.}nb.Cw{}bOlPtOb7k}ICn5OiQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQDCKKKKKvTvnvPtttKtKKttKptKKKKtKDSpDDSAA55mmm555mmmm5mmmIIIII....................................",
+"Q|k/c/W~uNGuG-j~GaR%7zWGF3:33co-cFG0F0:330G;--<-/%/N<-#cu~u--FN%zNFuGFG0-G#ucFF0>G6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJ7b.sCq_JeOoW.lrB.bhQQQkT...I.P,kJQQQQQJo.A|}.CX|JoOq)7L}XC.}BLe{}Ib}_ksq.2k4.fXk|afShB.b7sCOa_J{WIO}|fOek{q.w|J|oIl|W.^_}ohkQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQKDKKtv0tvtvvKKKKKKKKptKppSDp55A5D5A55mmmmmmmmmmmmmmmmIIIII......................................",
+"kQk%~WWcN-tGFutGW~%UUdcF3MF0GVi/NF33:3:0F3$NLL%Ra/UV<FMFGG-~-;FF/%GuGy-;:<uNVNcjFc6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQrk7O._T.7k^Oh2.TJB.bhQQkJl.(SqbOw_QQQQJk{q.nh7O.eJ|7bOTiXk,lIfah)kP.4|kJko.q)OO}rkkrBX{B.5hiOqXk|rBA.}Jq.ok7b.ei}ii.IB}ICn}XrQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQCDCKDDDKDKKKKKKKtppKpppK5A5mmm5m5mmmmmmmmmmIImmmImmIIIII................I.......................",
+"J|kzunoou<<~c<FcLa/d}s%GF3:~--aV~3:0::0MF0%VFca%/LeooGjGGGuuGF;jG/V~c-F::-GG!$uF3~rQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQk7O.{}.wsOf_W.lJB.(hrQJQT.wBBo(bsJQQQkJ}O....O.f_6_LqI.qg|hlOI5W{f.o|kJJg(.hOOhkkJJr6JB.bU2.^kJkJ|^.}kf.Lki.OO.O.b.Og{WCI.fUJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQDDC55D5DC5CKKKKpvvvHvtHHSDmmmmmm55mmmmmmmIIIIm5mmI5III.mmI.m..........Im^.......................",
+"kQk&LGoeR~GLc#nLNnjN&}dzuF3E-NVG33;:3:333:-u~NaReoLuWUo<4cuu#>:jN2%/#c<3F03uuE%u+c6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJrJ7O.{,5ba.o|2.TrX.OhQJkkl.WrJBA.gQQQQJ|TICpfffO.g|k|Bef.l{rXgnbb7n.4|kkkiOCXb.gkr|k,,_=.5he.f)||kXq.}rS.ok}O.PWwW4Wws{|heAInQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQDD5DCDDDCDDKKppppppttptv5Dmmmmmm5mmmmmmmIIIIImA5mm55mmIm5m5CC5ObOIObmS5Sv5ASSAbAb5CbAC.5bAI5.bCC",
+"kkkU}&2i&L-u~<-!NL<>u/z&uF~NN/iF;033:30;:>K~aeL%VzVaWUB}uc<juc;><NLLRu##<GFFLN$F+~krQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJr7O.)k4.5bsk2.lkB.5g)))Jl.wXXebOhQQQQksb.iXXXBT.P|alaki.fiTPBsqO}iIC7k|sf.w|n.lBJk}p^7X.bhhb.o_k_oI.}kf.eJXqOL)||iW!{wTek2I^JQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQDDDDKKKKKKKKppKppppSpDKK5Ammmmmm55mmmmmmI.I.IImmIIII...I..I............ISI...IIIII.ISS.IIIIIIIIO",
+"kkk7%}z/%z/nFj-RLu->c-uuN%L/%-#3M0:3;3j;+3+;c/aac/z%LsB)du-+cNcF+FGF<<~<0-$G--<3;G6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJJk7O.)J}..lJkW.TQsI.DffTXT.Cff.O4|QQQJJw.C{JJJJ}.OsoO5PfI4sqbTnOSs)n.C4wS.fh|hqbfW4COP_B.5U|WO5TwTbOIg|f.okkoIOlWnb.okWO]wq.2QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQDDDDKKtKKvtvtppppDKpKpKDKKDD55D5DA555mmmmmmImImIIII.....................I.......................",
+"Qkr7a/%/}%U%<><LR-W--Nj-uN!LF3F::::;:;3<ccGF~c~2-2e/}sBU%i~GVNRP<+;::0-#G:F33;;j;-rQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQrJk7bO,J_COi|kWOlJB.I...SBTI..bqWX|rQQJ,CIoJJJrJ)A.2B4b.bls|/COOAi_JX45..Ols|kJ7l...bwXkXOb7|)w5..OPT.}|fOo|r{eSIOOCa_ksTOOOPBJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQDDDDKKKttvttvttpKppppKpppDKKKKDDDDADA5mmmm.mmImIm.III...........................................",
+"kQQXL!LRizd=%GlV!-<-j~-8F;<<j3:M3:;3;3<Nc~>FcNcaccR%%dz!z=/NGj<N!~jKF+3:3;:-<:;3jurQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQkJJ,hhkk|sh{k_Bhsr_hhhhhdkshhhhB|||kQrJ_hhXJQJJk|shsJ)7i},k|kh}iskk|k{h}}h,k|kkJ,7iih||k{hh{k__s}i7{Bh)JhhXk|kkX}i}s_||k)gi7{JQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQDDDDKKKttKvvvtvKtppppDDDDDDDDKDDKDDKDDDCDm5mmIIImmm5m.I.........................................",
+"Qkk)BecW/%z==%c!~-G>8<jc<;+9;3::;:3:F~$zu-~4~~//aLLNV~-8u%u<3P~LdUcFFj3F~3;G%Nj;>crQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQrJk|k|r|kr||kkk|Jk6krrJkJrrrrrkkkkJQQQrrkkJQkJk||J|||Jkkkk_J|kJkkkkkk__|rJkk||kJJJrrkkrkJk6k||kJJkk|rkJrk6|k|kJ|kkk|Jkkr|k|kkJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQDDDDKKKKvFtFvvTTHPtppppKDDDKDDDpKpDKDDDKDDD5C55mmmmm5m..........................................",
+"QkkBBUWL}}hs=UoRc<~j-c;NL-1;:j:::;F~-L&7VR//ViU&z%LF1:tVLc-G~uL7=dd%yjFMFjF-G!Fj>-rQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQkJ|rkkkJk|kkkkk|kkJkrJkkk|kk|kk|kkkkkJkJkkk|kkkkkkkkk|kkkkkk_|kkkJkkkkJkkkkkkrJkkJkkkrJ6kkJ|k|JkkJkkJkkkkk|JkJ|kkkkkkkkk|kkkkQQkkQkkQkQkQkQkQQkkkkQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQCDKDKKKKvvvTTn44wWPvpKDDKpDDDDDDDDAKDKKDKDDKDDDDC5555mI.........................................",
+"krr7ssU}iR/Uss!4W~c-:3+FNWK;;;;+3F-uLUdaPWR2cWR/}L-j-cu/uuW/N}*&d7UU%~;+;+FF>N/F+~6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJkkJXiP2s||J|||krk_kkJkk_k|k|g7h}Bi,|r|kkkrk||kk|7}||||||kkJJs}X/)_kkkkJkkkkJkkrkkkJkkk||{iBkk|kk|k|kkkksi_||kihkkkk|||k|}hkkkk|kkkkkkQkQkk|}hk|k,o_kkQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQDDDCKKtKvvFP4wuwW22wHKKKDppDDDDADDDDDDDKDKKDKDpDDDDC55mIO.......................................",
+"JkkdhXBszLw!&=/n<8L#::j#Lc;33:;;jj-R}zU!!!4N}*7%N4u%}z%RaVi%zdUU*&}%}%~;[;;1;4z%c!kQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQkJkBln}lq)|{Bk||k,)||,{|Jk|k|4oawXi_|),Jkk){k|krsq}J{Bkkkk{_|e4h^h,|kk),k|rkkk){|kk)Bk),kBfdX|rk|X{J||,X/P||X|f7k_B|kk|B,^gkk||_||k||_,|kkk{^}|_Bhf_kJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQDDDKKtvvvPwaaW2aWWa2wwHKKSDpDDDADKDDDDDpDpDpDDSpDDpDDDACII......................................",
+"kkkXss=ss%RRW%sRj84%V~>8FFF:::++:-Vz%%/!/}z&U7}i4Wz}z%L/%ziL/7dzUzi}%iL~<F1;j-!/%z6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQrkkW4)J|7,iff4_2l^^,}f^hPh)nU^aCAo2i^^fs)4f^l7||lb}e^f2{4^}khCAaC^f7)offo|kkB4^q7XSTq4^fih5lfn{s4^fU)2fffosT^^CX}ffn|sl^lqsr,TU}4,n7g^f4,o^aAh}f^^P|JkQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQDD;Ktv-~wa/%eaaaa2a2PwPPvKKKDDKDADDDDDDDAADDpDppDpDpDDDDAC5.....................................",
+"QrkXBssU7}a}!nzsin-LU&~<F0:::;;+luzL/L8n/UsUzi}/i}&/iz&iL/%i/}}}z%V}}%/LL!8jjLNGj~kQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQkJXAs||kk7qssC7^ahq7Twi7lXhf7f7q7wa4PXfea4XiOhJk42}fsUq7^e_J)^}alBT!el7}qB||P4ho^7qXoqBWne^hhf}TWh2nilBhqgloXof7qghq}^oXeAJJ_li^lin7f7sf}TW7f}f7XlaQkQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQDKtvPPi7h7}iig}aawoiWwwPPHvttpDDDDDADADDDDApDADDDSDDDADADDAmI...................................",
+"QQr,sBss}o/7z2c}s}!zUd&cj33M@j<NRLi!wc-aUUU}io27s7}i/iuj~!/i/i/iiRL}}/NRu-+>1jcu8~kQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJJXCh||XXWo|{S}AXXfX}fTg^rgl7^hfsl}^7|^7qhJh(_k_^}Pe|Xq}fXJrBfhniJT}fq^^^)ksb^^^4o4_aW|w2woJ,^eb^^^WleJ{f}fB|i4w]^^f}5{|}TkkJwl4^^haw|_^}Shglo4k|n}kJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQtPWi7sX)))BhhXXge2ogoaWwW2wPPvKpppDDADADDKDDKDDAADDADADADADDAAbO................................",
+"kJJ7}*hUzRw2ozLWUsUUdzU%~<-~Fc%z/z%iLWRzUULWi!/%RLi//!j>>-R!LNwuRa%%Ncc~81>+[[1++c6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ|kJTPs}qiafsalsAkhf7Pefifhl4inglBq7fs)qXfohl^kk|Ahwlswn7f||khfs^h)^hl47a}k|XC/}ws4o|ni_liTlhalhqe}WsPPsWf7Cih^22lheosbisfaJkkeAs^w|e^7ol7^XowL^hibskQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQiigB))))){{){))X7eooeeeeoo2w2wHvpKDCmAAADACADDA5C5CC5CCmAAppAAAC5I..............................",
+"Jk6L4RiziLw-4WLRzdhhU7U}z}~uV%zz&}~>~}//}L82ziw8W!ucRj11>luca!8W!!!8[+>19]''][1']nrQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQrkJB4^ng__4^wX72|7oXnl7Bll4}iizosW7W)BW|7^TlaJJ,4|Xn^2X}oJ|J7aXWXXWXsT^2)Jkk}ll/_WU_wh)w7ww^4B|/^lg_hl^4a|ef4P7{4^wBJe^n47|JJha_osk)W^2Bh!{o}B4^wn_kkkQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQshs)))))))))_))))hieaigigeeaao2PPHtKACDDCD5AAACCCC5Cm555DtTpAADAC555I...........................",
+"kJJa8--Wc4-8-84/dUU7UULRULuucVzzz/>>RLc~~4~~!n<W~~>c8++++>8<-->jj1'11[[[''(]]11[1-rQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJJJJ|_kJJJk_JJkrJJkJ|kkJ||_kk|kJJkJkkkrhAaW^s|Jk|JkJ|kJkJkJ|kk|J|kJJJk_kJrkJJ_{JJ_JJkJJk6J||JkkJk||JJkk|kk6|||Jk|_|r|J_|kkJJJJJkkrJk|_|kJ|kkkJk||krJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQBBXXXXXXX))))))))Xhioegggiggeo2wwPvKKDKDDCAC5DD55555C559Ap^DCCCCCA^fAb..........................",
+"JJJW888n-88n--c}U}/i}!~WR88>8L/LL~>8c888>--j>>>>f[1>+[['++++[[[9[]''[[[](((](1C[94JJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJJJJJJJkJJkkrkJJJkrJ|kJJkJkJJJkJJkJJJJJJ72o,kkkJ|JkJJJJJJJJJJJJJJJJJJJrrJJJJkJkkJJkJkJJkJJJJJJJkkJJJJkkJkJJJkJkJJkJJJJJkJJJrJJJJJJJJJJJrJJJJJJkJJkJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQXBXXXXXXXX)))))X){)B7hhgigghge2wawPTvvKKKKKDDDDDDDKKDmCDDDKADDDDDpHHpDACC.......................",
+"JJJWf8j8n888888!LRu!u4888j8+3F88>+>++[++1j>11[>[[['['['[[[+''[[][''''[['](((((OO(lrQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQrJJJJJJJJJJJkJkkJJJJJkJkkJkkJJJJkJJJJJJk_JkJJk|kJJJJJJkrJJJJJJkJJJJkrJkJkJ|JJkJJJJJJkkJJ|J|kk|JJJkJJJJJkkkkJkkkJJJkJJJkJJQJJJJrkJJJJJkJJJkJkJkJJJJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQBBBBBBBXXXXXXXXXXXBBshgggeggge2ww4TTTvtttKttvvKtvnW4HtKDDpKpKKtK^tvHt^DDAC......................",
+"JJJW]f8j888888>838>8j1[>++[+[[[']'[[[[['[999']'''']'[[[[[[[[''['[('''9[](((CO.OOOlJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQrJJJJJJJJJJJJJJJkkJJJJJkJkJkJJJJkrJJkJJkkkkkJJkJJ|JJJJJJkJJJJJJkJJJJJJJJJJJJJJJkJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJrQQQJJJJJrJrJJJJJkJJJJJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQBsBBBBBBBBBXBXXBXXXBBBhgeegggo2w4PFPT<TnTnnnnPPPwaiiaPPtHTvvvTTHvvHn^tt^pS5mII..................",
+"krk!A]8>>j88>[[[+[:>'1[[[[+[[['''''''(](((]](]]''''[[+[']((]''+[['[''119]9](((OO.lkQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJJJrJrJJJJQQJJJJJJJJJJJJJJJJJJJQQJrJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJrJJQQQQQQQQQQJQQJQQQQQJQJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQsshhsssBsBBBBsBBBBBBBBsgeoeegoa4nPTTTPTvPPa22a2aoegieawwHwPTvHnnPHtHHvHtpKAC5m5mIO..............",
+"krkW9O9>1qff((](]'[']]O(][['''']']]((OO(O(b](((('''['[['(O(]((f>'['['11]C'C(O(O(Il|QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJQQQQQQQQQQQQrQrJQJJJQQQQQQQQQQJJJJJJJJJJJJJJQJQQQQQQQQQQQQQQQQQQQQQQJJJJJJJJJJJJJrJrJJQQJJrJJJJJJJJJJJJJJJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQshssshsBsssBBBsBssBBBBsgg2eee22PPvPvnnnPTai}i}iigghhggeew2wPnHHPnHlvlvv^pDD5CmmmImIO5O..........",
+"6kJ}a!2R!!!WwWWWWWW2WWwW!W!!2!2!!2!WWWWcWcWWWWWu!!!!uRR!!!2R2WRL!R!R!R!!W!2WWWWWWokQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJQJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQJJrJrQJQQQQQQQQQQQQQJrJJJJJJJJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQshshshhhhBsssBhBBssssBsgg22oeaWwPnPPnPPP4egg77h7hhshhhggee24PPPwPHl^HHHt^KKAC5C55555ACCOOI......",
+"JJ6|6J|66JJJkkJJJJJkkJJkJJJ6JJJJJJJJJJJJJJJkJJJJ66rJJJJJJrJJJJJJ6rJ6rJ6JJJJJrkJkJk|QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQrQQrQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQhhhhssshshhshshshhhhshhhge2ee2aWwwcwWuaWo}7hgh7hhhhshh7gigeo22wwPHvvvHPHptpDC5CCCCC5DSSACCI.....",
+"J6JJJ6JJJrJJJJJJJJJJJrJJr6JJrJJJJJrJJJrJJJJJJJJJJJJJkJJJJJJJJJkJJJJJJJJJJJJJJJJkJkQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQhhhhhhhhhshhhshBhhsshshhgeooeaa2WW222oaoighhhshhhshhhhh7ggioo2wWwPv^vHH^tpKDDADADACD^H^v^SAb....",
+"JJJJJJJJJJJJJJrJrJJJJrrJJ6rJrrrJJJJrJJJJJJJJJJJJJJJJJJJJJJJJkJJJJJJJJJJkJJJJJJJkJkQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQgghghhhhhhhhhhhhhhhhhhhhgeeeeee2aaaooeeei7hh7hhhhhhhhhhh7g}iieoa2PHHHHH^tt^pDDADKAADtHHPPPPS....",
+"JJrJJJrJrJrJJJJJJJJJJJJJJJJJJJJJJrJJJJJJJJJJJJJJJJJJJJJJJJJrJJJJJJJJQJJJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ7hgggghghghhhhhhhhhhhhhhgieiieeeoaeeiiiig7hh7hhhhghh7777ggggigeeoW444PPHHttHKDKSttp^Hw2wHHvS55bb",
+"JJJrJrJJJJJJJJJJJJJJJJJJJJJJJJQrJQQQQQQQQQQQJrJJJJJrJJrrJJJJJrJJJJQQQQrrrrQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ",
+"rJJJJJJJJJrQQQQQQQQJJJJJJQJQQQQQQQQQQQQQQQQQQQQQJJrJrrJQQQQJJJJJQQJQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ"};
+#endif
\ No newline at end of file
Index: hal/powerpc/csb281/current/src/font.h
===================================================================
RCS file: hal/powerpc/csb281/current/src/font.h
diff -N hal/powerpc/csb281/current/src/font.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ hal/powerpc/csb281/current/src/font.h	1 Feb 2003 17:54:26 -0000
@@ -0,0 +1,161 @@
+//==========================================================================
+//
+//        font.h
+//
+//        LCD display font
+//
+//==========================================================================
+//####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+// Copyright (C) 2003 Gary Thomas
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later version.
+//
+// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with eCos; if not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+//
+// As a special exception, if other files instantiate templates or use macros
+// or inline functions from this file, or you compile this file and link it
+// with other works to produce a work based on this file, this file does not
+// by itself cause the resulting work to be covered by the GNU General Public
+// License. However the source code for this file must still be made available
+// in accordance with section (3) of the GNU General Public License.
+//
+// This exception does not invalidate any other reasons why a work based on
+// this file might be covered by the GNU General Public License.
+//
+// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
+// at http://sources.redhat.com/ecos/ecos-license/
+// -------------------------------------------
+//####ECOSGPLCOPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):     gthomas
+// Contributors:  gthomas
+// Date:          2001-02-25
+// Description:   Simple LCD font
+//####DESCRIPTIONEND####
+
+#ifndef _LCD_FONT_H_
+#define _LCD_FONT_H_
+
+// 8x8 Font - from Helios
+
+#define FIRST_CHAR 0x20
+#define LAST_CHAR  0x7F
+#define FONT_HEIGHT 8
+#define FONT_WIDTH  8
+#define CURSOR_ON  0x7F
+#define CURSOR_OFF 0x20
+static char font_table[LAST_CHAR-FIRST_CHAR+1][8] =
+{
+        {        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /*   */
+        {        0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x00 }, /* ! */
+        {        0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* " */
+        {        0x6C, 0x6C, 0xFE, 0x6C, 0xFE, 0x6C, 0x6C, 0x00 }, /* # */
+        {        0x30, 0xFC, 0x16, 0x7C, 0xD0, 0x7E, 0x18, 0x00 }, /* $ */
+        {        0x06, 0x66, 0x30, 0x18, 0x0C, 0x66, 0x60, 0x00 }, /* % */
+        {        0x1C, 0x36, 0x36, 0x1C, 0xB6, 0x66, 0xDC, 0x00 }, /* & */
+        {        0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* ' */
+        {        0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x18, 0x30, 0x00 }, /* ( */
+        {        0x0C, 0x18, 0x30, 0x30, 0x30, 0x18, 0x0C, 0x00 }, /* ) */
+        {        0x00, 0x18, 0x7E, 0x3C, 0x7E, 0x18, 0x00, 0x00 }, /* * */
+        {        0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00 }, /* + */
+        {        0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x0C }, /* , */
+        {        0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00 }, /* - */
+        {        0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00 }, /* . */
+        {        0x00, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x00, 0x00 }, /* / */
+        {        0x3C, 0x66, 0x76, 0x7E, 0x6E, 0x66, 0x3C, 0x00 }, /* 0 */
+        {        0x18, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00 }, /* 1 */
+        {        0x3C, 0x66, 0x60, 0x30, 0x18, 0x0C, 0x7E, 0x00 }, /* 2 */
+        {        0x3C, 0x66, 0x60, 0x38, 0x60, 0x66, 0x3C, 0x00 }, /* 3 */
+        {        0x30, 0x38, 0x3C, 0x36, 0x7E, 0x30, 0x30, 0x00 }, /* 4 */
+        {        0x7E, 0x06, 0x3E, 0x60, 0x60, 0x66, 0x3C, 0x00 }, /* 5 */
+        {        0x38, 0x0C, 0x06, 0x3E, 0x66, 0x66, 0x3C, 0x00 }, /* 6 */
+        {        0x7E, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00 }, /* 7 */
+        {        0x3C, 0x66, 0x66, 0x3C, 0x66, 0x66, 0x3C, 0x00 }, /* 8 */
+        {        0x3C, 0x66, 0x66, 0x7C, 0x60, 0x30, 0x1C, 0x00 }, /* 9 */
+        {        0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00 }, /* : */
+        {        0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x0C }, /* ; */
+        {        0x30, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, 0x00 }, /* < */
+        {        0x00, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x00, 0x00 }, /* = */
+        {        0x0C, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0C, 0x00 }, /* > */
+        {        0x3C, 0x66, 0x30, 0x18, 0x18, 0x00, 0x18, 0x00 }, /* ? */
+        {        0x3C, 0x66, 0x76, 0x56, 0x76, 0x06, 0x3C, 0x00 }, /* @ */
+        {        0x3C, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66, 0x00 }, /* A */
+        {        0x3E, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3E, 0x00 }, /* B */
+        {        0x3C, 0x66, 0x06, 0x06, 0x06, 0x66, 0x3C, 0x00 }, /* C */
+        {        0x1E, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1E, 0x00 }, /* D */
+        {        0x7E, 0x06, 0x06, 0x3E, 0x06, 0x06, 0x7E, 0x00 }, /* E */
+        {        0x7E, 0x06, 0x06, 0x3E, 0x06, 0x06, 0x06, 0x00 }, /* F */
+        {        0x3C, 0x66, 0x06, 0x76, 0x66, 0x66, 0x3C, 0x00 }, /* G */
+        {        0x66, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66, 0x00 }, /* H */
+        {        0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00 }, /* I */
+        {        0x7C, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1C, 0x00 }, /* J */
+        {        0x66, 0x36, 0x1E, 0x0E, 0x1E, 0x36, 0x66, 0x00 }, /* K */
+        {        0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x7E, 0x00 }, /* L */
+        {        0xC6, 0xEE, 0xFE, 0xD6, 0xD6, 0xC6, 0xC6, 0x00 }, /* M */
+        {        0x66, 0x66, 0x6E, 0x7E, 0x76, 0x66, 0x66, 0x00 }, /* N */
+        {        0x3C, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00 }, /* O */
+        {        0x3E, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x06, 0x00 }, /* P */
+        {        0x3C, 0x66, 0x66, 0x66, 0x56, 0x36, 0x6C, 0x00 }, /* Q */
+        {        0x3E, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x66, 0x00 }, /* R */
+        {        0x3C, 0x66, 0x06, 0x3C, 0x60, 0x66, 0x3C, 0x00 }, /* S */
+        {        0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00 }, /* T */
+        {        0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00 }, /* U */
+        {        0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x00 }, /* V */
+        {        0xC6, 0xC6, 0xD6, 0xD6, 0xFE, 0xEE, 0xC6, 0x00 }, /* W */
+        {        0x66, 0x66, 0x3C, 0x18, 0x3C, 0x66, 0x66, 0x00 }, /* X */
+        {        0x66, 0x66, 0x66, 0x3C, 0x18, 0x18, 0x18, 0x00 }, /* Y */
+        {        0x7E, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x7E, 0x00 }, /* Z */
+        {        0x3E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x3E, 0x00 }, /* [ */
+        {        0x00, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x00, 0x00 }, /* \ */
+        {        0x7C, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7C, 0x00 }, /* ] */ 
+        {        0x3C, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* ^ */
+        {        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF }, /* _ */
+        {        0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* ` */
+        {        0x00, 0x00, 0x3C, 0x60, 0x7C, 0x66, 0x7C, 0x00 }, /* a */
+        {        0x06, 0x06, 0x3E, 0x66, 0x66, 0x66, 0x3E, 0x00 }, /* b */
+        {        0x00, 0x00, 0x3C, 0x66, 0x06, 0x66, 0x3C, 0x00 }, /* c */
+        {        0x60, 0x60, 0x7C, 0x66, 0x66, 0x66, 0x7C, 0x00 }, /* d */
+        {        0x00, 0x00, 0x3C, 0x66, 0x7E, 0x06, 0x3C, 0x00 }, /* e */
+        {        0x38, 0x0C, 0x0C, 0x3E, 0x0C, 0x0C, 0x0C, 0x00 }, /* f */
+        {        0x00, 0x00, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x3C }, /* g */
+        {        0x06, 0x06, 0x3E, 0x66, 0x66, 0x66, 0x66, 0x00 }, /* h */
+        {        0x18, 0x00, 0x1C, 0x18, 0x18, 0x18, 0x3C, 0x00 }, /* i */
+        {        0x18, 0x00, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x0E }, /* j */
+        {        0x06, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x00 }, /* k */
+        {        0x1C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00 }, /* l */
+        {        0x00, 0x00, 0x6C, 0xFE, 0xD6, 0xD6, 0xC6, 0x00 }, /* m */
+        {        0x00, 0x00, 0x3E, 0x66, 0x66, 0x66, 0x66, 0x00 }, /* n */
+        {        0x00, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00 }, /* o */
+        {        0x00, 0x00, 0x3E, 0x66, 0x66, 0x3E, 0x06, 0x06 }, /* p */
+        {        0x00, 0x00, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0xE0 }, /* q */
+        {        0x00, 0x00, 0x36, 0x6E, 0x06, 0x06, 0x06, 0x00 }, /* r */
+        {        0x00, 0x00, 0x7C, 0x06, 0x3C, 0x60, 0x3E, 0x00 }, /* s */
+        {        0x0C, 0x0C, 0x3E, 0x0C, 0x0C, 0x0C, 0x38, 0x00 }, /* t */
+        {        0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x00 }, /* u */
+        {        0x00, 0x00, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x00 }, /* v */
+        {        0x00, 0x00, 0xC6, 0xD6, 0xD6, 0xFE, 0x6C, 0x00 }, /* w */
+        {        0x00, 0x00, 0x66, 0x3C, 0x18, 0x3C, 0x66, 0x00 }, /* x */
+        {        0x00, 0x00, 0x66, 0x66, 0x66, 0x7C, 0x60, 0x3C }, /* y */
+        {        0x00, 0x00, 0x7E, 0x30, 0x18, 0x0C, 0x7E, 0x00 }, /* z */
+        {        0x30, 0x18, 0x18, 0x0E, 0x18, 0x18, 0x30, 0x00 }, /* { */
+        {        0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00 }, /* | */
+        {        0x0C, 0x18, 0x18, 0x70, 0x18, 0x18, 0x0C, 0x00 }, /* } */
+        {        0x8C, 0xD6, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* ~ */
+        {        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }  /* Block cursor */
+};
+
+#endif // _LCD_FONT_H_
Index: hal/powerpc/csb281/current/src/hal_aux.c
===================================================================
RCS file: /misc/cvsfiles/ecos/packages/hal/powerpc/csb281/current/src/hal_aux.c,v
retrieving revision 1.2
diff -u -5 -p -r1.2 hal_aux.c
--- hal/powerpc/csb281/current/src/hal_aux.c	4 Jan 2003 03:38:40 -0000	1.2
+++ hal/powerpc/csb281/current/src/hal_aux.c	31 Jan 2003 23:15:56 -0000
@@ -53,20 +53,25 @@
 
 #include <pkgconf/hal.h>
 #include <pkgconf/io_pci.h>
 
 #include <cyg/infra/cyg_type.h>
+#include <cyg/infra/diag.h>
 #include <cyg/hal/hal_mem.h>            // HAL memory definitions
 #include <cyg/hal/ppc_regs.h>           // Platform registers
 #include <cyg/hal/hal_if.h>             // hal_if_init
 #include <cyg/hal/hal_intr.h>           // interrupt definitions
 #include <cyg/hal/hal_cache.h>
 #include <cyg/infra/cyg_ass.h>          // assertion macros
 #include <cyg/io/pci.h>
 #include <cyg/hal/hal_io.h>             // I/O macros
 #include CYGHWR_MEMORY_LAYOUT_H
 
+// Functions defined in this module
+void _csb281_fs6377_init(int mode);
+static void _csb281_i2c_init(void);
+
 // The memory map is weakly defined, allowing the application to redefine
 // it if necessary. The regions defined below are the minimum requirements.
 CYGARC_MEMDESC_TABLE CYGBLD_ATTRIB_WEAK = {
     // Mapping for the Cogent CSB281 development boards
     CYGARC_MEMDESC_NOCACHE( 0x70000000, 0x10000000 ), // FLASH region, LCD, PS/2
@@ -115,11 +120,14 @@ hal_platform_init(void)
     // Reset peripherals
     HAL_READ_UINT32(_CSB281_BCSR, bcsr);
     HAL_WRITE_UINT32(_CSB281_BCSR, _zero_bit(bcsr, _CSB281_BCSR_PRESET));
     HAL_WRITE_UINT32(_CSB281_BCSR, _one_bit(bcsr, _CSB281_BCSR_PRESET));
     _csb281_i2c_init();
-    _csb281_fs6377_init();
+    _csb281_fs6377_init(0);
+#endif
+#ifdef CYGSEM_CSB281_LCD_COMM
+    lcd_comm_init();
 #endif
     _csb281_pci_init();
 }
 
 //--------------------------------------------------------------------------
@@ -605,17 +613,29 @@ _csb281_i2c_read_reg(int addr, int reg)
 static unsigned char _fs6377_init_data[] = {
     0x28, 0xEF, 0x53, 0x03, 0x4B, 0x80, 0x32, 0x80,
     0x94, 0x32, 0x80, 0xD4, 0x56, 0xF6, 0xF6, 0xE0
 };
 
-static void
-_csb281_fs6377_init(void)
+// Setup for CRT mode 640x480 @75Hz
+static unsigned char _fs6377_init_data_CRT[] = {
+    0x10, 0x3b, 0x49, 0x03, 0x4B, 0x80, 0x32, 0x80,
+    0x94, 0x32, 0x80, 0xD4, 0x66, 0xF6, 0xF6, 0xE0 
+};
+
+void
+_csb281_fs6377_init(int mode)
 {
     int reg;
+    unsigned char *data;
 
+    if (mode) {
+        data = _fs6377_init_data_CRT;
+    } else {
+        data = _fs6377_init_data;
+    }
     for (reg = 0;  reg < 16;  reg++) {
-        if (_csb281_i2c_write_reg(_CSB281_FS6377_DEV, reg, _fs6377_init_data[reg]) < 0) {
+        if (_csb281_i2c_write_reg(_CSB281_FS6377_DEV, reg, *data++) < 0) {
             diag_printf("** Can't write FS6377 register %d\n", reg);
             return;
         }
     }
 }
@@ -635,10 +655,11 @@ _set_leds(int led0, int led1)
     if (led0) bcsr = _zero_bit(bcsr, _CSB281_BCSR_LED0);
     if (led1) bcsr = _zero_bit(bcsr, _CSB281_BCSR_LED1);
     HAL_WRITE_UINT32(_CSB281_BCSR, bcsr);
 }
 
+static void
 _led_delay(int len)
 {
     int ctr, limit;
     int cache_state;
 
@@ -647,10 +668,11 @@ _led_delay(int len)
     while (len--) {
         for (ctr = 0;  ctr < limit;  ctr++);
     }
 }
 
+void
 _csb281_led(int val)
 {
     int bit, ctr;
 
     for (ctr = 0;  ctr < 8;  ctr++) {
Index: hal/powerpc/csb281/current/src/lcd_support.c
===================================================================
RCS file: hal/powerpc/csb281/current/src/lcd_support.c
diff -N hal/powerpc/csb281/current/src/lcd_support.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ hal/powerpc/csb281/current/src/lcd_support.c	1 Feb 2003 18:00:41 -0000
@@ -0,0 +1,1396 @@
+//==========================================================================
+//
+//        Lcd_support.c
+//
+//        Cogent CSB281 - LCD/CRT support routines
+//
+//==========================================================================
+//####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+// Copyright (C) 2003 Gary Thomas
+//
+// eCos is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 2 or (at your option) any later version.
+//
+// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with eCos; if not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+//
+// As a special exception, if other files instantiate templates or use macros
+// or inline functions from this file, or you compile this file and link it
+// with other works to produce a work based on this file, this file does not
+// by itself cause the resulting work to be covered by the GNU General Public
+// License. However the source code for this file must still be made available
+// in accordance with section (3) of the GNU General Public License.
+//
+// This exception does not invalidate any other reasons why a work based on
+// this file might be covered by the GNU General Public License.
+//
+// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
+// at http://sources.redhat.com/ecos/ecos-license/
+// -------------------------------------------
+//####ECOSGPLCOPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):     gthomas
+// Contributors:  gthomas
+// Date:          2001-11-03
+// Description:   Simple LCD support
+//####DESCRIPTIONEND####
+
+#include <pkgconf/hal.h>
+
+#include <cyg/infra/diag.h>
+#include <cyg/hal/hal_io.h>       // IO macros
+#include <cyg/hal/hal_if.h>       // Virtual vector support
+#include <cyg/hal/hal_arch.h>     // Register state info
+#include <cyg/hal/hal_intr.h>     // HAL interrupt macros
+
+#include <cyg/hal/lcd_support.h>
+#include <cyg/hal/hal_cache.h>
+
+#include <string.h>
+
+#ifdef CYGPKG_ISOINFRA
+# include <pkgconf/isoinfra.h>
+# ifdef CYGINT_ISO_STDIO_FORMATTED_IO
+#  include <stdio.h>  // sscanf
+# endif
+#endif
+
+#ifndef FALSE
+#define FALSE 0
+#define TRUE  1
+#endif
+
+// Logical layout
+#define LCD_WIDTH  640
+#define LCD_HEIGHT 480
+#define LCD_DEPTH   16
+
+#define RGB_RED(x)   (((x)&0x1F)<<11)
+#define RGB_GREEN(x) (((x)&0x3F)<<5)
+#define RGB_BLUE(x)  (((x)&0x1F)<<0)
+
+// Black on light blue
+static int bg = RGB_RED(0x1F) | RGB_GREEN(0x3F) | RGB_BLUE(0x1F);
+static int fg = RGB_RED(0) | RGB_GREEN(0) | RGB_BLUE(0);
+
+static struct lcd_info lcd;
+
+int sed135x_init(int depth, struct lcd_info *info);
+
+// Compute the location for a pixel within the framebuffer
+static cyg_uint16 *
+lcd_fb(int row, int col)
+{
+    cyg_uint16 *res = (cyg_uint16 *)((char *)lcd.fb+(row*lcd.rlen)+(col*lcd.stride));
+    return res;
+}
+
+void
+lcd_on(bool enable)
+{
+    static bool on = false;
+
+    if (enable) {
+        if (!on) {
+            (*lcd.on)();
+        }
+        on = true;
+    } else {
+//        (*lcd.off)();
+    }
+}
+
+// Initialize LCD hardware
+
+void
+lcd_init(int depth)
+{
+    sed135x_init(depth, &lcd);
+}
+
+// Get information about the frame buffer
+int
+lcd_getinfo(struct lcd_info *info)
+{
+    if (lcd.bpp == 0) {
+        return 0;  // LCD not initialized
+    }
+    *info = lcd;
+    return 1; // Information valid
+}
+
+// Clear screen
+void
+lcd_clear(void)
+{
+#if 0
+    cyg_uint32 *fb_row0, *fb_rown;
+    cyg_uint32 _bg = (bg<<16)|bg;
+
+    fb_row0 = lcd_fb(0, 0);
+    fb_rown = lcd_fb(lcd_height, 0);
+    while (fb_row0 != fb_rown) {
+        *fb_row0++ = _bg;
+    }
+#endif
+}
+
+#ifdef CYGSEM_CSB281_LCD_COMM
+
+//
+// Additional support for LCD/Keyboard as 'console' device
+//
+
+#ifdef CYGOPT_CSB281_LCD_COMM_LOGO
+#include "banner.xpm"
+#endif
+#include "font.h"
+
+// Virtual screen info
+static int curX = 0;  // Last used position
+static int curY = 0;
+//static int width = LCD_WIDTH / (FONT_WIDTH*NIBBLES_PER_PIXEL);
+//static int height = LCD_HEIGHT / (FONT_HEIGHT*SCREEN_SCALE);
+
+#define SCREEN_PAN            20
+#define SCREEN_WIDTH          80
+#define SCREEN_HEIGHT         (LCD_HEIGHT/FONT_HEIGHT)
+#define VISIBLE_SCREEN_WIDTH  (LCD_WIDTH/FONT_WIDTH)
+#define VISIBLE_SCREEN_HEIGHT (LCD_HEIGHT/FONT_HEIGHT)
+static char screen[SCREEN_HEIGHT][SCREEN_WIDTH];
+static int screen_height = SCREEN_HEIGHT;
+static int screen_width = SCREEN_WIDTH;
+static int screen_pan = 0;
+
+// Usable area on screen [logical pixel rows]
+static int screen_start = 0;                       
+static int screen_end = LCD_HEIGHT/FONT_HEIGHT;
+
+static bool cursor_enable = true;
+
+// Functions
+static void lcd_drawc(cyg_int8 c, int x, int y);
+
+// Note: val is a 16 bit, RGB555 value which must be mapped
+// onto a 12 bit value.
+#define RED(v)   ((v>>12) & 0x0F)
+#define GREEN(v) ((v>>7) & 0x0F)
+#define BLUE(v)  ((v>>1) & 0x0F)
+
+static void
+set_pixel(int row, int col, unsigned short val)
+{
+    unsigned short *pix = (unsigned short *)lcd_fb(row, col);
+    *pix = _le16(val);
+}
+
+static int
+_hexdigit(char c)
+{
+    if ((c >= '0') && (c <= '9')) {
+        return c - '0';
+    } else {
+        if ((c >= 'A') && (c <= 'F')) {
+            return (c - 'A') + 0x0A;
+        } else {
+            if ((c >= 'a') && (c <= 'f')) {
+                return (c - 'a') + 0x0a;
+            }
+        }
+    }
+
+    return 0;
+}
+
+static int
+_hex(char *cp)
+{
+    return (_hexdigit(*cp)<<4) | _hexdigit(*(cp+1));
+}
+
+static unsigned short
+parse_color(char *cp)
+{
+    int red, green, blue;
+
+    while (*cp && (*cp != 'c')) cp++;
+    if (cp) {
+        cp += 2;
+        if (*cp == '#') {
+            red = _hex(cp+1);
+            green = _hex(cp+3);
+            blue = _hex(cp+5);
+#define USE_RGB565
+#ifdef USE_RGB565
+            return RGB_RED(red>>3) | RGB_GREEN(green>>2) | RGB_BLUE(blue>>3);
+#else
+            return RGB_RED(red>>3) | RGB_GREEN(green>>3) | RGB_BLUE(blue>>3);
+#endif
+        } else {
+            // Should be "None"
+            return 0xFFFF;
+        }
+    } else {
+        return 0xFFFF;
+    }
+}
+
+#ifndef CYGINT_ISO_STDIO_FORMATTED_IO
+static int
+get_int(unsigned char **_cp)
+{
+    char *cp = *_cp;
+    char c;
+    int val = 0;
+    
+    while ((c = *cp++) && (c != ' ')) {
+        if ((c >= '0') && (c <= '9')) {
+            val = val * 10 + (c - '0');
+        } else {
+            return -1;
+        }
+    }
+    *_cp = cp;
+    return val;
+}
+#endif
+
+#ifdef CYGOPT_CSB281_LCD_COMM_LOGO
+static int
+show_xpm(char *xpm[], int screen_pos)
+{
+    int i, row, col, offset;
+    unsigned char *cp;
+    int nrows, ncols, nclrs, cwid;
+    unsigned short colors[256];  // Mapped by character index
+    short color_value, color_index;
+//#define HORRIBLY_SLOW_COLOR_MAPPING
+#ifdef HORRIBLY_SLOW_COLOR_MAPPING
+    bool color_match;
+    short cmap[256][2];
+    int j;
+#else
+    // Caution - this is very GIMP specific
+    short cmap[256][3];  // Enough room for 256 colors
+    short cmap_col, cmap_row;
+    unsigned char std_cmap[] = " .+";
+#endif
+
+    cp = xpm[0];
+#ifdef CYGINT_ISO_STDIO_FORMATTED_IO
+    if (sscanf(cp, "%d %d %d %d", &ncols, &nrows, &nclrs, &cwid) != 4) {
+#else
+    if (((ncols = get_int(&cp)) < 0) ||
+        ((nrows = get_int(&cp)) < 0) ||
+        ((nclrs = get_int(&cp)) < 0) ||
+        ((cwid = get_int(&cp)) < 0)) {
+
+#endif
+        diag_printf("Can't parse XPM data, sorry\n");
+        return 0;
+    }
+//    diag_printf("%d rows, %d cols, %d colors %d chars/pixel\n", nrows, ncols, nclrs, cwid);
+    if (cwid > 2) {
+        diag_printf("Color map is too wide - %d\n", cwid);
+        return 0;
+    }
+
+    for (i = 0;  i < 256;  i++) {
+        colors[i] = 0x0000;
+#ifdef HORRIBLY_SLOW_COLOR_MAPPING
+        cmap[i][0] = 0;  cmap[i][1] = 0;
+#else
+        cmap[i][0] = 0;  cmap[i][1] = 0;  cmap[i][2] = 0;
+#endif
+    }
+    color_index = 0;
+    for (i = 0;  i < nclrs;  i++) {
+        cp = xpm[i+1];
+#ifdef HORRIBLY_SLOW_COLOR_MAPPING
+        for (j = 0;  j < cwid;  j++) {
+            cmap[color_index][j] = cp[j];
+        }
+#else
+        if (cwid == 1) {
+            cmap_col = 0;
+        } else {
+            for (cmap_col = 0;  cmap_col < 3;  cmap_col++) {
+                if (cp[1] == std_cmap[cmap_col]) {
+                    break;
+                }
+            }
+        }
+        cmap_row = *cp;
+        cmap[cmap_row][cmap_col] = color_index;
+#endif
+        color_value = parse_color(cp+cwid);
+        colors[color_index++] = color_value;
+//        diag_printf("Color[%d] = %04x\n", color_index-1, colors[color_index-1]);
+    }
+
+#ifdef CYGOPT_CSB281_LCD_COMM_LOGO_TOP
+    offset = screen_pos;
+#else
+    offset = screen_pos-nrows;
+#endif
+    for (row = 0;  row < nrows;  row++) {            
+        cp = xpm[nclrs+1+row];        
+        for (col = 0;  col < ncols;  col++) {
+#ifdef HORRIBLY_SLOW_COLOR_MAPPING
+            // Horrible, but portable, way to map colors
+            for (color_index = 0;  color_index < nclrs;  color_index++) {
+                color_match = true;
+                for (j = 0;  j < cwid;  j++) {
+                    if (cmap[color_index][j] != cp[j]) {
+                        color_match = false;
+                    }
+                }
+                if (color_match) {
+                    break;
+                }
+            }
+#else
+            if (cwid == 1) {
+                cmap_col = 0;
+            } else {
+                for (cmap_col = 0;  cmap_col < 3;  cmap_col++) {
+                    if (cp[1] == std_cmap[cmap_col]) {
+                        break;
+                    }
+                }
+            }
+            cmap_row = *cp;
+            color_index = cmap[cmap_row][cmap_col];
+#endif
+            set_pixel(row+offset, col, colors[color_index]);
+            cp += cwid;
+        }
+    }
+#ifdef CYGOPT_CSB281_LCD_COMM_LOGO_TOP
+    screen_start = (nrows + (FONT_HEIGHT-1))/FONT_HEIGHT;
+    screen_end = LCD_HEIGHT/FONT_HEIGHT;
+    return offset+nrows;
+#else    
+    screen_start = 0;
+    screen_height = offset / FONT_HEIGHT;
+    screen_end = screen_height;
+    return offset;
+#endif
+}
+#endif
+
+void
+lcd_screen_clear(void)
+{
+    int row, col, pos;
+
+    for (row = 0;  row < screen_height;  row++) {
+        for (col = 0;  col < screen_width;  col++) {
+            screen[row][col] = ' ';
+            lcd_drawc(' ', col, row);
+        }
+    }
+#ifdef CYGOPT_CSB281_LCD_COMM_LOGO
+    // Note: Row 0 seems to wrap incorrectly
+#ifdef CYGOPT_CSB281_LCD_COMM_LOGO_TOP
+    pos = 0;
+#else
+    pos = (LCD_HEIGHT-1);
+#endif
+    show_xpm(banner_xpm, pos);
+#endif // CYGOPT_CSB281_LCD_COMM_LOGO
+    curX = 0;  curY = screen_start;
+    if (cursor_enable) {
+        lcd_drawc(CURSOR_ON, curX-screen_pan, curY);
+    }
+}
+
+// Position cursor
+void
+lcd_moveto(int X, int Y)
+{
+    if (cursor_enable) {
+        lcd_drawc(screen[curY][curX], curX-screen_pan, curY);
+    }
+    if (X < 0) X = 0;
+    if (X >= screen_width) X = screen_width-1;
+    curX = X;
+    if (Y < screen_start) Y = screen_start;
+    if (Y >= screen_height) Y = screen_height-1;
+    curY = Y;
+    if (cursor_enable) {
+        lcd_drawc(CURSOR_ON, curX-screen_pan, curY);
+    }
+}
+
+// Render a character at position (X,Y) with current background/foreground
+static void
+lcd_drawc(cyg_int8 c, int x, int y)
+{
+    cyg_uint8 bits;
+    int l, p;
+    int xoff, yoff;
+
+    if ((x < 0) || (x >= VISIBLE_SCREEN_WIDTH) || 
+        (y < 0) || (y >= screen_height)) return;  
+    for (l = 0;  l < FONT_HEIGHT;  l++) {
+        bits = font_table[c-FIRST_CHAR][l]; 
+        yoff = y*FONT_HEIGHT + l;
+        xoff = x*FONT_HEIGHT;
+        for (p = 0;  p < FONT_WIDTH;  p++) {
+            set_pixel(yoff, xoff + p, (bits & 0x01) ? fg : bg);
+            bits >>= 1;
+        }
+    }
+}
+
+static void
+lcd_refresh(void)
+{
+    int row, col;
+
+    for (row = screen_start;  row < screen_height;  row++) {
+        for (col = 0;  col < VISIBLE_SCREEN_WIDTH;  col++) {
+            if ((col+screen_pan) < screen_width) {
+                lcd_drawc(screen[row][col+screen_pan], col, row);
+            } else {
+                lcd_drawc(' ', col, row);
+            }
+        }
+    }
+    if (cursor_enable) {
+        lcd_drawc(CURSOR_ON, curX-screen_pan, curY);
+    }
+}
+
+static void
+lcd_scroll(void)
+{
+    int col;
+    cyg_uint8 *c1;
+    cyg_uint32 *lc0, *lc1, *lcn;
+    cyg_uint16 *fb_row0, *fb_row1, *fb_rown;
+
+    // First scroll up the virtual screen
+#if ((SCREEN_WIDTH%4) != 0)
+#error Scroll code optimized for screen with multiple of 4 columns
+#endif
+    lc0 = (cyg_uint32 *)&screen[0][0];
+    lc1 = (cyg_uint32 *)&screen[1][0];
+    lcn = (cyg_uint32 *)&screen[screen_height][0];
+    while (lc1 != lcn) {
+        *lc0++ = *lc1++;
+    }
+    c1 = &screen[screen_height-1][0];
+    for (col = 0;  col < screen_width;  col++) {
+        *c1++ = 0x20;
+    }
+    fb_row0 = lcd_fb(screen_start*FONT_HEIGHT, 0);
+    fb_row1 = lcd_fb((screen_start+1)*FONT_HEIGHT, 0);
+    fb_rown = lcd_fb(screen_end*FONT_HEIGHT, 0);
+    while (fb_row1 != fb_rown) {
+        *fb_row0 = *fb_row1;
+        fb_row0 = (cyg_uint16 *)((char *)fb_row0 + lcd.stride);
+        fb_row1 = (cyg_uint16 *)((char *)fb_row1 + lcd.stride);
+    }
+    // Erase bottom line
+    for (col = 0;  col < screen_width;  col++) {
+        lcd_drawc(' ', col, screen_end-1);
+    }
+}
+
+// Draw one character at the current position
+void
+lcd_putc(cyg_int8 c)
+{
+// TEMP
+    int cache_on;
+    HAL_DCACHE_IS_ENABLED(cache_on);
+    if (cache_on) {
+        HAL_DCACHE_SYNC();
+        HAL_DCACHE_DISABLE();
+    }
+// TEMP
+    if (cursor_enable) {
+        lcd_drawc(screen[curY][curX], curX-screen_pan, curY);
+    }
+    switch (c) {
+    case '\r':
+        curX = 0;
+        break;
+    case '\n':
+        curY++;
+        break;
+    case '\b':
+        curX--;
+        if (curX < 0) {
+            curY--;
+            if (curY < 0) curY = 0;
+            curX = screen_width-1;
+        }
+        break;
+    default:
+        if (((cyg_uint8)c < FIRST_CHAR) || ((cyg_uint8)c > LAST_CHAR)) c = '.';
+        screen[curY][curX] = c;
+        lcd_drawc(c, curX-screen_pan, curY);
+        curX++;
+        if (curX == screen_width) {
+            curY++;
+            curX = 0;
+        }
+    } 
+    if (curY >= screen_height) {
+        lcd_scroll();
+        curY = (screen_height-1);
+    }
+    if (cursor_enable) {
+        lcd_drawc(CURSOR_ON, curX-screen_pan, curY);
+    }
+// TEMP
+    if (cache_on) {
+        HAL_DCACHE_ENABLE();
+    }
+// TEMP
+}
+
+// Basic LCD 'printf()' support
+
+#include <stdarg.h>
+
+#define is_digit(c) ((c >= '0') && (c <= '9'))
+
+static int
+_cvt(unsigned long val, char *buf, long radix, char *digits)
+{
+    char temp[80];
+    char *cp = temp;
+    int length = 0;
+
+    if (val == 0) {
+        /* Special case */
+        *cp++ = '0';
+    } else {
+        while (val) {
+            *cp++ = digits[val % radix];
+            val /= radix;
+        }
+    }
+    while (cp != temp) {
+        *buf++ = *--cp;
+        length++;
+    }
+    *buf = '\0';
+    return (length);
+}
+
+static int
+lcd_vprintf(void (*putc)(cyg_int8), const char *fmt0, va_list ap)
+{
+    char c, sign, *cp;
+    int left_prec, right_prec, zero_fill, length, pad, pad_on_right;
+    char buf[32];
+    long val;
+
+    while ((c = *fmt0++)) {
+        cp = buf;
+        length = 0;
+        if (c == '%') {
+            c = *fmt0++;
+            left_prec = right_prec = pad_on_right = 0;
+            if (c == '-') {
+                c = *fmt0++;
+                pad_on_right++;
+            }
+            if (c == '0') {
+                zero_fill = TRUE;
+                c = *fmt0++;
+            } else {
+                zero_fill = FALSE;
+            }
+            while (is_digit(c)) {
+                left_prec = (left_prec * 10) + (c - '0');
+                c = *fmt0++;
+            }
+            if (c == '.') {
+                c = *fmt0++;
+                zero_fill++;
+                while (is_digit(c)) {
+                    right_prec = (right_prec * 10) + (c - '0');
+                    c = *fmt0++;
+                }
+            } else {
+                right_prec = left_prec;
+            }
+            sign = '\0';
+            switch (c) {
+            case 'd':
+            case 'x':
+            case 'X':
+                val = va_arg(ap, long);
+                switch (c) {
+                case 'd':
+                    if (val < 0) {
+                        sign = '-';
+                        val = -val;
+                    }
+                    length = _cvt(val, buf, 10, "0123456789");
+                    break;
+                case 'x':
+                    length = _cvt(val, buf, 16, "0123456789abcdef");
+                    break;
+                case 'X':
+                    length = _cvt(val, buf, 16, "0123456789ABCDEF");
+                    break;
+                }
+                break;
+            case 's':
+                cp = va_arg(ap, char *);
+                length = strlen(cp);
+                break;
+            case 'c':
+                c = va_arg(ap, long /*char*/);
+                (*putc)(c);
+                continue;
+            default:
+                (*putc)('?');
+            }
+            pad = left_prec - length;
+            if (sign != '\0') {
+                pad--;
+            }
+            if (zero_fill) {
+                c = '0';
+                if (sign != '\0') {
+                    (*putc)(sign);
+                    sign = '\0';
+                }
+            } else {
+                c = ' ';
+            }
+            if (!pad_on_right) {
+                while (pad-- > 0) {
+                    (*putc)(c);
+                }
+            }
+            if (sign != '\0') {
+                (*putc)(sign);
+            }
+            while (length-- > 0) {
+                (*putc)(c = *cp++);
+                if (c == '\n') {
+                    (*putc)('\r');
+                }
+            }
+            if (pad_on_right) {
+                while (pad-- > 0) {
+                    (*putc)(' ');
+                }
+            }
+        } else {
+            (*putc)(c);
+            if (c == '\n') {
+                (*putc)('\r');
+            }
+        }
+    }
+
+    // FIXME
+    return 0;
+}
+
+int
+_lcd_printf(char const *fmt, ...)
+{
+    int ret;
+    va_list ap;
+
+    va_start(ap, fmt);
+    ret = lcd_vprintf(lcd_putc, fmt, ap);
+    va_end(ap);
+    return (ret);
+}
+
+void
+lcd_setbg(int red, int green, int blue)
+{
+    bg = RGB_RED(red) | RGB_GREEN(green) | RGB_BLUE(blue);
+}
+
+void
+lcd_setfg(int red, int green, int blue)
+{
+    fg = RGB_RED(red) | RGB_GREEN(green) | RGB_BLUE(blue);
+}
+
+//
+// Support LCD/keyboard (PS2) as a virtual I/O channel
+//   Adapted from i386/pcmb_screen.c
+//
+
+
+//-----------------------------------------------------------------------------
+// Keyboard definitions
+
+#define KBDATAPORT      0x79000003    // data I/O port
+#define KBCMDPORT       0x79000007    // command port (write)
+#define KBSTATPORT      0x79000007    // status port  (read)
+#define KBINRDY         0x01
+#define KBOUTRDY        0x02
+#define KBTXTO          0x40          // Transmit timeout - nothing there
+#define KBTEST          0xAB
+
+// Scan codes
+
+#define LSHIFT    0x2a
+#define RSHIFT    0x36
+#define CTRL      0x1d
+#define ALT       0x38
+#define CAPS      0x3a
+#define NUMS      0x45
+
+#define BREAK     0x80
+
+// Bits for KBFlags
+
+#define KBNormal  0x0000
+#define KBShift   0x0001
+#define KBCtrl    0x0002
+#define KBAlt     0x0004
+#define KBIndex   0x0007  // mask for the above
+
+#define KBExtend   0x0010
+#define KBAck      0x0020
+#define KBResend   0x0040
+#define KBShiftL   (0x0080 | KBShift)
+#define KBShiftR   (0x0100 | KBShift)
+#define KBCtrlL    (0x0200 | KBCtrl)
+#define KBCtrlR    (0x0400 | KBCtrl)
+#define KBAltL     (0x0800 | KBAlt)
+#define KBAltR     (0x1000 | KBAlt)
+#define KBCapsLock 0x2000
+#define KBNumLock  0x4000
+
+#define KBArrowUp       0x48
+#define KBArrowRight    0x4D
+#define KBArrowLeft     0x4B
+#define KBArrowDown     0x50
+
+//-----------------------------------------------------------------------------
+// Keyboard Variables
+
+static  int  KBFlags = 0;
+
+static  CYG_BYTE  KBPending = 0xFF;
+
+static  CYG_BYTE  KBScanTable[128][4] = {
+//  Normal    Shift    Control    Alt
+// 0x00
+    {  0xFF,    0xFF,    0xFF,    0xFF,   },
+    {  0x1b,    0x1b,    0x1b,    0xFF,  },
+    {  '1',    '!',    0xFF,    0xFF,  },
+    {  '2',    '"',    0xFF,    0xFF,  },
+    {  '3',    '#',    0xFF,    0xFF,  },
+    {  '4',    '$',    0xFF,    0xFF,  },
+    {  '5',    '%',    0xFF,    0xFF,  },
+    {  '6',    '^',    0xFF,    0xFF,  },
+    {  '7',    '&',    0xFF,    0xFF,  },
+    {  '8',    '*',    0xFF,    0xFF,  },
+    {  '9',    '(',    0xFF,    0xFF,  },
+    {  '0',    ')',    0xFF,    0xFF,  },
+    {  '-',    '_',    0xFF,    0xFF,  },
+    {  '=',    '+',    0xFF,    0xFF,  },
+    {  '\b',    '\b',    0xFF,    0xFF,  },
+    {  '\t',    '\t',    0xFF,    0xFF,  },
+// 0x10
+    {  'q',    'Q',    0x11,    0xFF,  },
+    {  'w',    'W',    0x17,    0xFF,  },
+    {  'e',    'E',    0x05,    0xFF,  },
+    {  'r',    'R',    0x12,    0xFF,  },
+    {  't',    'T',    0x14,    0xFF,  },
+    {  'y',    'Y',    0x19,    0xFF,  },
+    {  'u',    'U',    0x15,    0xFF,  },
+    {  'i',    'I',    0x09,    0xFF,  },
+    {  'o',    'O',    0x0F,    0xFF,  },
+    {  'p',    'P',    0x10,    0xFF,  },
+    {  '[',    '{',    0x1b,    0xFF,  },
+    {  ']',    '}',    0x1d,    0xFF,  },
+    {  '\r',    '\r',    '\n',    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  'a',    'A',    0x01,    0xFF,  },
+    {  's',    'S',    0x13,    0xFF,  },
+// 0x20
+    {  'd',    'D',    0x04,    0xFF,  },
+    {  'f',    'F',    0x06,    0xFF,  },
+    {  'g',    'G',    0x07,    0xFF,  },
+    {  'h',    'H',    0x08,    0xFF,  },
+    {  'j',    'J',    0x0a,    0xFF,  },
+    {  'k',    'K',    0x0b,    0xFF,  },
+    {  'l',    'L',    0x0c,    0xFF,  },
+    {  ';',    ':',    0xFF,    0xFF,  },
+    {  0x27,    '@',    0xFF,    0xFF,  },
+    {  '#',    '~',    0xFF,    0xFF,  },
+    {  '`',    '~',    0xFF,    0xFF,  },
+    {  '\\',    '|',    0x1C,    0xFF,  },
+    {  'z',    'Z',    0x1A,    0xFF,  },
+    {  'x',    'X',    0x18,    0xFF,  },
+    {  'c',    'C',    0x03,    0xFF,  },
+    {  'v',    'V',    0x16,    0xFF,  },
+// 0x30
+    {  'b',    'B',    0x02,    0xFF,  },
+    {  'n',    'N',    0x0E,    0xFF,  },
+    {  'm',    'M',    0x0D,    0xFF,  },
+    {  ',',    '<',    0xFF,    0xFF,  },
+    {  '.',    '>',    0xFF,    0xFF,  },
+    {  '/',    '?',    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  ' ',    ' ',    ' ',    ' ',  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xF1,    0xE1,    0xFF,    0xFF,  },
+    {  0xF2,    0xE2,    0xFF,    0xFF,  },
+    {  0xF3,    0xE3,    0xFF,    0xFF,  },
+    {  0xF4,    0xE4,    0xFF,    0xFF,  },
+    {  0xF5,    0xE5,    0xFF,    0xFF,  },
+// 0x40
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+
+    {  0x15,    0x15,    0x15,    0x15,  },
+    {  0x10,    0x10,    0x10,    0x10,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+// 0x50
+    {  0x04,    0x04,    0x04,    0x04,  },
+    {  0x0e,    0x0e,    0x0e,    0x0e,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+// 0x60
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+// 0x70
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+    {  0xFF,    0xFF,    0xFF,    0xFF,  },
+};
+
+static int KBIndexTab[8] = { 0, 1, 2, 2, 3, 3, 3, 3 };
+
+//-----------------------------------------------------------------------------
+
+static __inline__ cyg_uint8
+inb(cyg_uint32 port)
+{
+    cyg_uint8 val;
+    HAL_READ_UINT8(port, val);
+    return val;
+}
+
+static __inline__ void
+outb(cyg_uint32 port, cyg_uint8 val)
+{
+    HAL_WRITE_UINT8(port, val);
+}
+
+static cyg_bool
+KeyboardInit(void)
+{
+    unsigned char c, s;
+
+    /* flush input queue */
+    while ((inb(KBSTATPORT) & KBINRDY)) {
+        (void)inb(KBDATAPORT);
+    }
+
+    /* Send self-test - controller local */
+    while (inb(KBSTATPORT) & KBOUTRDY) ;
+    outb(KBCMDPORT,0xAA);
+    while ((inb(KBSTATPORT) & KBINRDY) == 0) ; /* wait input ready */
+    if ((c = inb(KBDATAPORT)) != 0x55) {
+#ifdef DEBUG_KBD_INIT
+        diag_printf("Keyboard self test failed - result: %x\n", c);
+#endif
+        return false;
+    }
+
+    /* Enable interrupts and keyboard controller */
+    while (inb(KBSTATPORT) & KBOUTRDY) ;
+    outb(KBCMDPORT,0x60);     
+    while (inb(KBSTATPORT) & KBOUTRDY) ;
+    outb(KBCMDPORT,0x45);
+    CYGACC_CALL_IF_DELAY_US(10000);  // 10ms
+        
+    while (inb(KBSTATPORT) & KBOUTRDY) ;
+    outb(KBCMDPORT,0xAE);  // Enable keyboard
+
+    /* See if a keyboard is connected */
+    while (inb(KBSTATPORT) & KBOUTRDY) ;
+    outb(KBDATAPORT,0xFF);     
+    while (((s = inb(KBSTATPORT)) & (KBINRDY|KBTXTO)) == 0) ; /* wait input ready */
+    if ((s & KBTXTO) || ((c = inb(KBDATAPORT)) != 0xFA)) {
+#ifdef DEBUG_KBD_INIT
+        diag_printf("Keyboard reset failed - no ACK: %x, stat: %x\n", c, s);
+#endif
+        return false;
+    }
+    while (((s = inb(KBSTATPORT)) & KBINRDY) == 0) ; /* wait input ready */
+    if ((s & KBTXTO) || ((c = inb(KBDATAPORT)) != 0xAA)) {
+#ifdef DEBUG_KBD_INIT
+        diag_printf("Keyboard reset failed - bad code: %x, stat: %x\n", c, s);
+#endif
+        return false;
+    }
+
+    // Set scan mode
+    while (inb(KBSTATPORT) & KBOUTRDY) ;
+    outb(KBCMDPORT,0x20);
+    while ((inb(KBSTATPORT) & KBINRDY) == 0) ; /* wait input ready */
+    if (! (inb(KBDATAPORT) & 0x40)) {
+        /*
+         * Quote from PS/2 System Reference Manual:
+         *
+         * "Address hex 0060 and address hex 0064 should be
+         * written only when the input-buffer-full bit and
+         * output-buffer-full bit in the Controller Status
+         * register are set 0." (KBINRDY and KBOUTRDY)
+         */
+                
+        while (inb(KBSTATPORT) & (KBINRDY | KBOUTRDY)) ;
+        outb(KBDATAPORT,0xF0);
+        while (inb(KBSTATPORT) & (KBINRDY | KBOUTRDY)) ;
+        outb(KBDATAPORT,0x01);
+    }
+        
+    KBFlags = 0;
+    return true;
+} /* KeyboardInit */
+
+//-----------------------------------------------------------------------------
+
+static CYG_BYTE 
+KeyboardAscii(CYG_BYTE scancode)
+{
+    CYG_BYTE ascii = 0xFF;
+
+    // Start by handling all shift/ctl keys:
+
+    switch( scancode ) {
+    case 0xe0:
+        KBFlags |= KBExtend;
+        return 0xFF;
+
+    case 0xfa:
+        KBFlags |= KBAck;
+        return 0xFF;
+
+    case 0xfe:
+        KBFlags |= KBResend;
+        return 0xFF;
+
+    case LSHIFT:
+        KBFlags |= KBShiftL;
+        return 0xFF;
+
+    case LSHIFT | BREAK:
+        KBFlags &= ~KBShiftL;
+        return 0xFF;
+
+    case RSHIFT:
+        KBFlags |= KBShiftR;
+        return 0xFF;
+
+    case RSHIFT | BREAK:
+        KBFlags &= ~KBShiftR;
+        return 0xFF;
+
+    case CTRL:
+        if( KBFlags & KBExtend )
+        {
+            KBFlags |= KBCtrlR;
+            KBFlags &= ~KBExtend;
+        }
+        else  KBFlags |= KBCtrlL;
+        return 0xFF;
+
+    case CTRL | BREAK:
+        if( KBFlags & KBExtend )
+        {
+            KBFlags &= ~KBCtrlR;
+            KBFlags &= ~KBExtend;
+        }
+        else  KBFlags &= ~KBCtrlL;
+        return 0xFF;
+
+
+    case ALT:
+        if( KBFlags & KBExtend )
+        {
+            KBFlags |= KBAltR;
+            KBFlags &= ~KBExtend;
+        }
+        else  KBFlags |= KBAltL;
+        return 0xFF;
+
+    case ALT | BREAK:
+        if( KBFlags & KBExtend )
+        {
+            KBFlags &= ~KBAltR;
+            KBFlags &= ~KBExtend;
+        }
+        else  KBFlags &= ~KBAltL;
+        return 0xFF;
+
+    case CAPS:
+        KBFlags ^= KBCapsLock;
+    case CAPS | BREAK:
+        return 0xFF;
+
+    case NUMS:
+        KBFlags ^= KBNumLock;
+    case NUMS | BREAK:
+        return 0xFF;
+
+    case KBArrowUp:
+    case KBArrowDown:
+        screen_pan = 0;
+        lcd_refresh();
+        break;
+    case KBArrowLeft:
+        screen_pan -= SCREEN_PAN;
+        if (screen_pan < 0) screen_pan = 0;
+        lcd_refresh();
+        break;
+    case KBArrowRight:
+        screen_pan += SCREEN_PAN;
+        if (screen_pan > (SCREEN_WIDTH-SCREEN_PAN)) 
+            screen_pan = SCREEN_WIDTH-SCREEN_PAN;
+        lcd_refresh();
+        break;
+
+    }
+
+    // Clear Extend flag if set
+    KBFlags &= ~KBExtend;
+
+    // Ignore all other BREAK codes
+    if( scancode & 0x80 ) return 0xFF;
+
+    // Here the scancode is for something we can turn
+    // into an ASCII value
+
+    ascii = KBScanTable[scancode & 0x7F][KBIndexTab[KBFlags & KBIndex]];
+
+    return ascii;
+
+} /* KeyboardAscii */
+
+//-----------------------------------------------------------------------------
+
+static int 
+KeyboardTest(void)
+{
+    // If there is a pending character, return True
+    if( KBPending != 0xFF ) return true;
+
+    // If there is something waiting at the port, get it
+    for(;;) {
+        CYG_BYTE stat, code;
+        CYG_BYTE c;
+        
+        HAL_READ_UINT8( KBSTATPORT, stat );
+
+        if( (stat & KBINRDY) == 0 )
+            break;
+
+        HAL_READ_UINT8( KBDATAPORT, code );
+
+        // Translate to ASCII
+        c = KeyboardAscii(code);
+    
+        // if it is a real ASCII char, save it and
+        // return True.
+        if( c != 0xFF ) {
+            KBPending = c;
+            return true;
+        }
+    }
+
+    // Otherwise return False
+    return false;
+  
+} /* KeyboardTest */
+
+char 
+KeyboardChar(void)
+{
+    char c = KBPending;
+    KBPending = 0xFF;
+    return c;
+}
+
+static int  _timeout = 500;
+
+static cyg_bool
+lcd_comm_getc_nonblock(void* __ch_data, cyg_uint8* ch)
+{
+    if( !KeyboardTest() )
+        return false;
+    *ch = KBPending;
+    KBPending = 0xFF;
+    return true;
+}
+
+static cyg_uint8
+lcd_comm_getc(void* __ch_data)
+{
+    cyg_uint8 ch;
+
+    while (!lcd_comm_getc_nonblock(__ch_data, &ch)) ;
+    return ch;
+}
+
+static void
+lcd_comm_putc(void* __ch_data, cyg_uint8 c)
+{
+    lcd_putc(c);
+}
+
+static void
+lcd_comm_write(void* __ch_data, const cyg_uint8* __buf, cyg_uint32 __len)
+{
+#if 0
+    CYGARC_HAL_SAVE_GP();
+
+    while(__len-- > 0)
+        lcd_comm_putc(__ch_data, *__buf++);
+
+    CYGARC_HAL_RESTORE_GP();
+#endif
+}
+
+static void
+lcd_comm_read(void* __ch_data, cyg_uint8* __buf, cyg_uint32 __len)
+{
+#if 0
+    CYGARC_HAL_SAVE_GP();
+
+    while(__len-- > 0)
+        *__buf++ = lcd_comm_getc(__ch_data);
+
+    CYGARC_HAL_RESTORE_GP();
+#endif
+}
+
+static cyg_bool
+lcd_comm_getc_timeout(void* __ch_data, cyg_uint8* ch)
+{
+    int delay_count;
+    cyg_bool res;
+
+    delay_count = _timeout * 2; // delay in .5 ms steps
+    for(;;) {
+        res = lcd_comm_getc_nonblock(__ch_data, ch);
+        if (res || 0 == delay_count--)
+            break;
+        CYGACC_CALL_IF_DELAY_US(500);
+    }
+    return res;
+}
+
+static int
+lcd_comm_control(void *__ch_data, __comm_control_cmd_t __func, ...)
+{
+    static int vector = 0;
+    int ret = -1;
+    static int irq_state = 0;
+
+    CYGARC_HAL_SAVE_GP();
+
+    switch (__func) {
+    case __COMMCTL_IRQ_ENABLE:
+        ret = irq_state;
+        irq_state = 1;
+        break;
+    case __COMMCTL_IRQ_DISABLE:
+        ret = irq_state;
+        irq_state = 0;
+        break;
+    case __COMMCTL_DBG_ISR_VECTOR:
+        ret = vector;
+        break;
+    case __COMMCTL_SET_TIMEOUT:
+    {
+        va_list ap;
+
+        va_start(ap, __func);
+
+        ret = _timeout;
+        _timeout = va_arg(ap, cyg_uint32);
+
+        va_end(ap);
+        break;
+    }
+    case __COMMCTL_FLUSH_OUTPUT:
+        ret = 0;
+        break;
+    default:
+        break;
+    }
+    CYGARC_HAL_RESTORE_GP();
+    return ret;
+}
+
+static int
+lcd_comm_isr(void *__ch_data, int* __ctrlc, 
+           CYG_ADDRWORD __vector, CYG_ADDRWORD __data)
+{
+#if 0
+    char ch;
+
+    cyg_drv_interrupt_acknowledge(__vector);
+    *__ctrlc = 0;
+    if (lcd_comm_getc_nonblock(__ch_data, &ch)) {
+        if (ch == 0x03) {
+            *__ctrlc = 1;
+        }
+    }
+    return CYG_ISR_HANDLED;
+#else
+    return 0;
+#endif
+}
+
+void
+lcd_comm_init(void)
+{
+    static int init = 0;
+
+    if (!init) {
+        hal_virtual_comm_table_t* comm;
+        int cur = CYGACC_CALL_IF_SET_CONSOLE_COMM(CYGNUM_CALL_IF_SET_COMM_ID_QUERY_CURRENT);
+
+        init = 1;
+        if (!KeyboardInit()) {
+            // No keyboard - no LCD/CRT display
+            return;
+        }
+
+        // Initialize screen
+        cursor_enable = true;
+        lcd_init(16);
+        lcd_on(true);
+        lcd_screen_clear();
+
+        // Setup procs in the vector table
+        CYGACC_CALL_IF_SET_CONSOLE_COMM(2);  // FIXME - should be controlled by CDL
+        comm = CYGACC_CALL_IF_CONSOLE_PROCS();
+        //CYGACC_COMM_IF_CH_DATA_SET(*comm, chan);
+        CYGACC_COMM_IF_WRITE_SET(*comm, lcd_comm_write);
+        CYGACC_COMM_IF_READ_SET(*comm, lcd_comm_read);
+        CYGACC_COMM_IF_PUTC_SET(*comm, lcd_comm_putc);
+        CYGACC_COMM_IF_GETC_SET(*comm, lcd_comm_getc);
+        CYGACC_COMM_IF_CONTROL_SET(*comm, lcd_comm_control);
+        CYGACC_COMM_IF_DBG_ISR_SET(*comm, lcd_comm_isr);
+        CYGACC_COMM_IF_GETC_TIMEOUT_SET(*comm, lcd_comm_getc_timeout);
+
+        // Restore original console
+        CYGACC_CALL_IF_SET_CONSOLE_COMM(cur);
+    }
+}
+
+#ifdef CYGPKG_REDBOOT
+#include <redboot.h>
+
+// Get here when RedBoot is idle.  If it's been long enough, then
+// dim the LCD.  The problem is - how to determine other activities
+// so at this doesn't get in the way.  In the default case, this will
+// be called from RedBoot every 10ms (CYGNUM_REDBOOT_CLI_IDLE_TIMEOUT)
+
+#define MAX_IDLE_TIME (30*100)
+
+static void
+idle(bool is_idle)
+{
+    static int idle_time = 0;
+    static bool was_idled = false;
+
+    if (is_idle) {
+        if (!was_idled) {
+            if (++idle_time == MAX_IDLE_TIME) {
+                was_idled = true;
+                lcd_on(false);
+            }
+        }
+    } else {        
+        idle_time = 0;
+        if (was_idled) {
+            was_idled = false;
+                lcd_on(true);
+        }
+    }
+}
+
+RedBoot_idle(idle, RedBoot_AFTER_NETIO);
+#endif
+#endif
Index: hal/powerpc/csb281/current/src/sed1356_16bit.h
===================================================================
RCS file: hal/powerpc/csb281/current/src/sed1356_16bit.h
diff -N hal/powerpc/csb281/current/src/sed1356_16bit.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ hal/powerpc/csb281/current/src/sed1356_16bit.h	1 Feb 2003 18:08:56 -0000
@@ -0,0 +1,651 @@
+//------------------------------------------------------------------------
+// sed1356.h: SED1356 LCD/CRT Controllers - 16-Bit access mode
+//
+// Copyright (C) 2003 Gary Thomas
+
+//------------------------------------------------
+// Bit position defines
+#define BIT0     0x00000001
+#define BIT1     0x00000002
+#define BIT2     0x00000004
+#define BIT3     0x00000008
+#define BIT4     0x00000010
+#define BIT5     0x00000020
+#define BIT6     0x00000040
+#define BIT7     0x00000080
+#define BIT8     0x00000100
+#define BIT9     0x00000200
+#define BIT10    0x00000400
+#define BIT11    0x00000800
+#define BIT12    0x00001000
+#define BIT13    0x00002000
+#define BIT14    0x00004000
+#define BIT15    0x00008000
+#define BIT16    0x00010000
+#define BIT17    0x00020000
+#define BIT18    0x00040000
+#define BIT19    0x00080000
+#define BIT20    0x00100000
+#define BIT21    0x00200000
+#define BIT22    0x00400000
+#define BIT23    0x00800000
+#define BIT24    0x01000000
+#define BIT25    0x02000000
+#define BIT26    0x04000000
+#define BIT27    0x08000000
+#define BIT28    0x10000000
+#define BIT29    0x20000000
+#define BIT30    0x40000000
+#define BIT31    0x80000000
+
+
+//------------------------------------------------------------------------
+// cpu specific code must define the following board specific macros.
+// in cpuio.h.  These examples assume the SED135x has been placed in 
+// the correct endian mode via hardware.
+// #define SED_MEM_BASE   0xf0600000 <-- just example addresses, 
+// #define SED_REG_BASE    0xf0400000 <-- define for each board
+// #define SED_STEP      1 <-- 1 = device is on 16-bit boundry, 2 = 32-bit boundry, 4 = 64-bit boundry
+// #define SED_REG16(_x_)    *(vushortr *)(SED_REG_BASE + (_x_ * SED_STEP))  // Control/Status Registers
+// #define RD_FB16(_reg_,_val_) ((_val_) = *((vushort *)((SED_MEM_BASE + (_reg_ * SED_STEP)))))
+// #define WR_FB16(_reg_,_val_) (*((vushort *)((SED_MEM_BASE + (_reg_ * 2)))) = (_val_))
+// Big endian processors
+// #define H2SED(_x_)  ((((x) & 0xff00U) >> 8) | (((x) & 0x00ffU) << 8))
+// Little endian
+// #define H2SED(_x_)  (_x_)
+    
+
+// ----------------------------------------------------------
+// SED1356 registers - 16-Bit Access Mode.  The first register
+// referenced is the even addressed register.  The byte offsets
+// of the odd registers are shown in the comments
+#define SED1356_REG_REV_and_MISC         SED_REG16(0x00) 
+//  #define SED1356_REG_MISC                    SED_REG(0x01)
+#define SED1356_REG_GPIO_CFG             SED_REG16(0x04)
+#define SED1356_REG_GPIO_CTL             SED_REG16(0x08)
+#define SED1356_REG_MD_CFG_RD_LO_and_HI  SED_REG16(0x0c) 
+//  #define SED1356_REG_MD_CFG_RD_HI          SED_REG(0x0d)
+#define SED1356_REG_MCLK_CFG             SED_REG16(0x10)
+#define SED1356_REG_LCD_PCLK_CFG         SED_REG16(0x14)
+#define SED1356_REG_CRT_PCLK_CFG         SED_REG16(0x18)
+#define SED1356_REG_MEDIA_PCLK_CFG       SED_REG16(0x1c)
+#define SED1356_REG_WAIT_STATE           SED_REG16(0x1e)
+#define SED1356_REG_MEM_CFG_and_REF_RATE SED_REG16(0x20) 
+//  #define SED1356_REG_REF_RATE                SED_REG(0x21)
+#define SED1356_REG_MEM_TMG0_and_1       SED_REG16(0x2a) 
+//  #define SED1356_REG_MEM_TMG1               SED_REG(0x2b)
+#define SED1356_REG_PANEL_TYPE_and_MOD_RATE SED_REG16(0x30) 
+//  #define SED1356_REG_MOD_RATE                SED_REG(0x31)
+// LCD Control registers
+#define SED1356_REG_LCD_HOR_DISP              SED_REG16(0x32)
+#define SED1356_REG_LCD_HOR_NONDISP_and_START SED_REG16(0x34) 
+//  #define SED1356_REG_LCD_HOR_START         SED_REG(0x35)
+#define SED1356_REG_LCD_HOR_PULSE             SED_REG16(0x36)
+#define SED1356_REG_LCD_VER_DISP_HT_LO_and_HI SED_REG16(0x38) 
+//  #define SED1356_REG_LCD_VER_DISP_HT_HI      SED_REG(0x39)
+#define SED1356_REG_LCD_VER_NONDISP_and_START SED_REG16(0x3a) 
+//  #define SED1356_REG_LCD_VER_START          SED_REG(0x3b)
+#define SED1356_REG_LCD_VER_PULSE             SED_REG16(0x3c)
+#define SED1356_REG_LCD_DISP_MODE_and_MISC    SED_REG16(0x40) 
+//  #define SED1356_REG_LCD_MISC        SED_REG(0x41)
+#define SED1356_REG_LCD_DISP_START_LO_and_MID SED_REG16(0x42) 
+//  #define SED1356_REG_LCD_DISP_START_MID     SED_REG(0x43)
+#define SED1356_REG_LCD_DISP_START_HI         SED_REG16(0x44)
+#define SED1356_REG_LCD_ADD_OFFSET_LO_and_HI  SED_REG16(0x46) 
+//  #define SED1356_REG_LCD_ADD_OFFSET_HI       SED_REG(0x47)
+#define SED1356_REG_LCD_PIXEL_PAN             SED_REG16(0x48)  
+#define SED1356_REG_LCD_FIFO_THRESH_LO_and_HI SED_REG16(0x4a) 
+//  #define SED1356_REG_LCD_FIFO_LO_THRES      SED_REG(0x4b)
+// CRT/TV Control registers
+#define SED1356_REG_CRT_HOR_DISP              SED_REG16(0x50)
+#define SED1356_REG_CRT_HOR_NONDISP_and_START SED_REG16(0x52) 
+//  #define SED1356_REG_CRT_HOR_START         SED_REG(0x53)
+#define SED1356_REG_CRT_HOR_PULSE             SED_REG16(0x54)
+#define SED1356_REG_CRT_VER_DISP_HT_LO_and_HI SED_REG16(0x56) 
+//  #define SED1356_REG_CRT_VER_DISP_HT_HI      SED_REG(0x57)
+#define SED1356_REG_CRT_VER_NONDISP_and_START SED_REG16(0x58) 
+
+//  #define SED1356_REG_CRT_VER_START          SED_REG(0x59)
+#define SED1356_REG_CRT_VER_PULSE_and_OUT_CTL    SED_REG16(0x5a) 
+//  #define SED1356_REG_CRT_OUT_CTL        SED_REG(0x5b)
+#define SED1356_REG_CRT_DISP_MODE          SED_REG16(0x60)
+#define SED1356_REG_CRT_DISP_START_LO_and_MID       SED_REG16(0x62) 
+//  #define SED1356_REG_CRT_DISP_START_MID     SED_REG(0x63)
+#define SED1356_REG_CRT_DISP_START_HI           SED_REG16(0x64)
+#define SED1356_REG_CRT_ADD_OFFSET_LO_and_HI       SED_REG16(0x66) 
+//  #define SED1356_REG_CRT_ADD_OFFSET_HI       SED_REG(0x67)
+#define SED1356_REG_CRT_PIXEL_PAN             SED_REG16(0x68)
+#define SED1356_REG_CRT_FIFO_THRESH_LO_and_HI      SED_REG16(0x6a) 
+//  #define SED1356_REG_CRT_FIFO_LO_THRES      SED_REG(0x6b)
+
+// LCD Cursor Control Registers
+#define SED1356_REG_LCD_CURSOR_CTL_and_START_ADD  SED_REG16(0x70) 
+//  #define SED1356_REG_LCD_CURSOR_START_ADD  SED_REG(0x71)
+#define SED1356_REG_LCD_CURSOR_X_POS_LO_and_HI     SED_REG16(0x72) 
+//  #define SED1356_REG_LCD_CURSOR_X_POS_HI   SED_REG(0x73)
+#define SED1356_REG_LCD_CURSOR_Y_POS_LO_and_HI    SED_REG16(0x74) 
+//  #define SED1356_REG_LCD_CURSOR_Y_POS_HI    SED_REG(0x75)
+#define SED1356_REG_LCD_CURSOR_BLUE_and_GREEN_CLR_0  SED_REG16(0x76) 
+//  #define SED1356_REG_LCD_CURSOR_GREEN_CLR_0  SED_REG(0x77)
+#define SED1356_REG_LCD_CURSOR_RED_CLR_0      SED_REG16(0x78)  
+#define SED1356_REG_LCD_CURSOR_BLUE_and_GREEN_CLR_1  SED_REG16(0x7a) 
+//  #define SED1356_REG_LCD_CURSOR_GREEN_CLR_1  SED_REG(0x7b)
+#define SED1356_REG_LCD_CURSOR_RED_CLR_1      SED_REG16(0x7c)
+#define SED1356_REG_LCD_CURSOR_FIFO_THRESH      SED_REG16(0x7e)
+
+// CRT Cursor Control Registers
+#define SED1356_REG_CRT_CURSOR_CTL_and_START_ADD  SED_REG16(0x80) 
+//  #define SED1356_REG_CRT_CURSOR_START_ADD  SED_REG(0x81)
+#define SED1356_REG_CRT_CURSOR_X_POS_LO_and_HI     SED_REG16(0x82) 
+//  #define SED1356_REG_CRT_CURSOR_X_POS_HI   SED_REG(0x83)
+#define SED1356_REG_CRT_CURSOR_Y_POS_LO_and_HI    SED_REG16(0x84) 
+//  #define SED1356_REG_CRT_CURSOR_Y_POS_HI    SED_REG(0x85)
+#define SED1356_REG_CRT_CURSOR_BLUE_and_GREEN_CLR_0  SED_REG16(0x86) 
+//  #define SED1356_REG_CRT_CURSOR_GREEN_CLR_0  SED_REG(0x87)
+#define SED1356_REG_CRT_CURSOR_RED_CLR_0      SED_REG16(0x88)
+#define SED1356_REG_CRT_CURSOR_BLUE_and_GREEN_CLR_1  SED_REG16(0x8a) 
+//  #define SED1356_REG_CRT_CURSOR_GREEN_CLR_1  SED_REG(0x8b)
+#define SED1356_REG_CRT_CURSOR_RED_CLR_1      SED_REG16(0x8c)
+#define SED1356_REG_CRT_CURSOR_FIFO_THRESH      SED_REG16(0x8e)
+
+// BitBlt Control Registers
+#define SED1356_REG_BLT_CTL_0_and_1          SED_REG16(0x100) 
+//  #define SED1356_REG_BLT_CTL_1        SED_REG(0x101)
+#define SED1356_REG_BLT_ROP_CODE_and_BLT_OP      SED_REG16(0x102) 
+//  #define SED1356_REG_BLT_OP          SED_REG(0x103)
+#define SED1356_REG_BLT_SRC_START_LO_and_MID    SED_REG16(0x104) 
+//  #define SED1356_REG_BLT_SRC_START_MID    SED_REG(0x105)
+#define SED1356_REG_BLT_SRC_START_HI        SED_REG16(0x106)
+#define SED1356_REG_BLT_DEST_START_LO_and_MID    SED_REG16(0x108) 
+//  #define SED1356_REG_BLT_DEST_START_MID    SED_REG(0x109)
+#define SED1356_REG_BLT_DEST_START_HI        SED_REG16(0x10a)
+#define SED1356_REG_BLT_ADD_OFFSET_LO_and_HI    SED_REG16(0x10c) 
+//  #define SED1356_REG_BLT_ADD_OFFSET_HI    SED_REG(0x10d)
+#define SED1356_REG_BLT_WID_LO_and_HI        SED_REG16(0x110) 
+//  #define SED1356_REG_BLT_WID_HI        SED_REG(0x111)
+#define SED1356_REG_BLT_HGT_LO_and_HI        SED_REG16(0x112) 
+//  #define SED1356_REG_BLT_HGT_HI        SED_REG(0x113)
+#define SED1356_REG_BLT_BG_CLR_LO_and_HI      SED_REG16(0x114) 
+//  #define SED1356_REG_BLT_BG_CLR_HI      SED_REG(0x115)
+#define SED1356_REG_BLT_FG_CLR_LO_and_HI      SED_REG16(0x118) 
+//  #define SED1356_REG_BLT_FG_CLR_HI      SED_REG(0x119)
+
+// Look-Up Table Control Registers
+#define SED1356_REG_LUT_MODE            SED_REG16(0x1e0)
+#define SED1356_REG_LUT_ADD              SED_REG16(0x1e2)
+#define SED1356_REG_LUT_DATA            SED_REG16(0x1e4)
+
+// Power and Miscellaneous Control Registers
+#define SED1356_REG_PWR_CFG_and_STAT        SED_REG16(0x1f0) 
+//  #define SED1356_REG_PWR_STAT        SED_REG(0x1f1)
+#define SED1356_REG_WATCHDOG_CTL          SED_REG16(0x1f4)
+#define SED1356_REG_DISP_MODE            SED_REG16(0x1fc)
+
+
+//------------------------------------------------------------------------------------------------------------
+
+// Bit Assignments - Little Endian, Use H2SED() macro to access
+
+//
+
+// SED1356_REG_REV_and_MISC - even
+#define SED1356_REV_ID_MASK          0xfc    
+// ID bits - masks off the rev bits
+#define SED1356_REV_ID_1356          BIT4
+#define SED1356_REV_ID_1355          BIT3
+
+
+// SED1356_REG_REV_and_MISC - odd
+#define SED1356_MISC_HOST_DIS        BIT7 << 8  
+// 0 = enable host access, 1 = disable
+
+
+// SED1356_REG_GPIO_CFG and SED1356_REG_GPIO_STAT
+#define SED1356_GPIO_GPIO3           BIT3    
+// 0 = input, 1 = output, if configured as GPIO
+#define SED1356_GPIO_GPIO2           BIT2
+#define SED1356_GPIO_GPIO1           BIT1
+
+
+// SED1356_REG_MCLK_CFG
+#define SED1356_MCLK_DIV2            BIT4 
+#define SED1356_MCLK_SRC_BCLK        BIT0 
+#define SED1356_MCLK_SRC_CLKI        0x00
+
+
+// SED1356_REG_LCD_PCLK_CFG, SED1356_REG_CRT_PCLK_CFG 
+
+// and SED1356_REG_MEDIA_PCLK_CFG
+#define SED1356_PCLK_X2            BIT7    
+// SED1356_REG_CRT_PCLK_CFG only
+#define SED1356_PCLK_DIV1          0x00 << 4
+#define SED1356_PCLK_DIV2          0x01 << 4
+#define SED1356_PCLK_DIV3          0x02 << 4
+#define SED1356_PCLK_DIV4          0x03 << 4
+#define SED1356_PCLK_SRC_CLKI      0x00
+#define SED1356_PCLK_SRC_BCLK      0x01
+#define SED1356_PCLK_SRC_CLKI2     0x02
+#define SED1356_PCLK_SRC_MCLK      0x03
+
+
+// SED1356_REG_MEM_CFG_and_REF_RATE - even
+#define SED1356_MEM_CFG_2CAS_EDO   0x00   
+#define SED1356_MEM_CFG_2CAS_FPM   0x01   
+#define SED1356_MEM_CFG_2WE_EDO    0x02   
+#define SED1356_MEM_CFG_2WE_FPM    0x03   
+#define SED1356_MEM_CFG_MASK       0x03   
+
+
+// SED1356_REG_MEM_CFG_and_REF_RATE - odd
+#define SED1356_REF_TYPE_CBR       0x00 << 6 << 8
+#define SED1356_REF_TYPE_SELF      0x01 << 6 << 8
+#define SED1356_REF_TYPE_NONE      0x02 << 6 << 8
+#define SED1356_REF_TYPE_MASK      0x03 << 6 << 8
+#define SED1356_REF_RATE_64        0x00 << 0 << 8  
+// MCLK / 64
+#define SED1356_REF_RATE_128       0x01 << 0 << 8  
+// MCLK / 128
+#define SED1356_REF_RATE_256       0x02 << 0 << 8  
+// MCLK / 256
+#define SED1356_REF_RATE_512       0x03 << 0 << 8  
+// MCLK / 512
+#define SED1356_REF_RATE_1024      0x04 << 0 << 8  
+// MCLK / 1024
+#define SED1356_REF_RATE_2048      0x05 << 0 << 8  
+// MCLK / 2048
+#define SED1356_REF_RATE_4096      0x06 << 0 << 8  
+// MCLK / 4096
+#define SED1356_REF_RATE_8192      0x07 << 0 << 8  
+// MCLK / 8192
+#define SED1356_REF_RATE_MASK      0x07 << 0 << 8  
+// MCLK / 8192
+
+
+// SED1356_REG_MEM_TMG0_and_1 - even
+#define SED1356_MEM_TMG0_EDO50_MCLK40    0x01
+#define SED1356_MEM_TMG0_EDO50_MCLK33    0x01
+#define SED1356_MEM_TMG0_EDO60_MCLK33    0x01
+#define SED1356_MEM_TMG0_EDO50_MCLK30    0x12
+#define SED1356_MEM_TMG0_EDO60_MCLK30    0x01
+#define SED1356_MEM_TMG0_EDO70_MCLK30    0x00
+#define SED1356_MEM_TMG0_EDO50_MCLK25    0x12
+#define SED1356_MEM_TMG0_EDO60_MCLK25    0x12
+#define SED1356_MEM_TMG0_EDO70_MCLK25    0x01
+#define SED1356_MEM_TMG0_EDO80_MCLK25    0x00
+#define SED1356_MEM_TMG0_EDO50_MCLK20    0x12
+#define SED1356_MEM_TMG0_EDO60_MCLK20    0x12
+#define SED1356_MEM_TMG0_EDO70_MCLK20    0x12
+#define SED1356_MEM_TMG0_EDO80_MCLK20    0x01
+#define SED1356_MEM_TMG0_FPM50_MCLK25    0x12
+#define SED1356_MEM_TMG0_FPM60_MCLK25    0x01
+#define SED1356_MEM_TMG0_FPM50_MCLK20    0x12
+#define SED1356_MEM_TMG0_FPM60_MCLK20    0x12
+#define SED1356_MEM_TMG0_FPM70_MCLK20    0x11
+#define SED1356_MEM_TMG0_FPM80_MCLK20    0x01
+
+
+// SED1356_REG_MEM_TMG0_and_1 - odd
+#define SED1356_MEM_TMG1_EDO50_MCLK40    0x01 << 8
+#define SED1356_MEM_TMG1_EDO50_MCLK33    0x01 << 8
+#define SED1356_MEM_TMG1_EDO60_MCLK33    0x01 << 8
+#define SED1356_MEM_TMG1_EDO50_MCLK30    0x02 << 8
+#define SED1356_MEM_TMG1_EDO60_MCLK30    0x01 << 8
+#define SED1356_MEM_TMG1_EDO70_MCLK30    0x00 << 8
+#define SED1356_MEM_TMG1_EDO50_MCLK25    0x02 << 8
+#define SED1356_MEM_TMG1_EDO60_MCLK25    0x02 << 8
+#define SED1356_MEM_TMG1_EDO70_MCLK25    0x01 << 8
+#define SED1356_MEM_TMG1_EDO80_MCLK25    0x01 << 8
+#define SED1356_MEM_TMG1_EDO50_MCLK20    0x02 << 8
+#define SED1356_MEM_TMG1_EDO60_MCLK20    0x02 << 8
+#define SED1356_MEM_TMG1_EDO70_MCLK20    0x02 << 8
+#define SED1356_MEM_TMG1_EDO80_MCLK20    0x01 << 8
+#define SED1356_MEM_TMG1_FPM50_MCLK25    0x02 << 8
+#define SED1356_MEM_TMG1_FPM60_MCLK25    0x01 << 8
+#define SED1356_MEM_TMG1_FPM50_MCLK20    0x02 << 8
+#define SED1356_MEM_TMG1_FPM60_MCLK20    0x02 << 8
+#define SED1356_MEM_TMG1_FPM70_MCLK20    0x02 << 8
+#define SED1356_MEM_TMG1_FPM80_MCLK20    0x01 << 8
+
+
+
+// Bit definitions                         
+
+//
+
+// SED1356_REG_PANEL_TYPE_AND_MOD_RATE - even
+#define SED1356_PANEL_TYPE_EL      BIT7
+#define SED1356_PANEL_TYPE_4_9     (0x00 << 4)    
+// Passive 4-Bit, TFT 9-Bit
+#define SED1356_PANEL_TYPE_8_12    (0x01 << 4)    
+// Passive 8-Bit, TFT 12-Bit
+#define SED1356_PANEL_TYPE_16      (0x02 << 4)    
+// Passive 16-Bit, or TFT 18-Bit
+#define SED1356_PANEL_TYPE_MASK    (0x03 << 4)
+#define SED1356_PANEL_TYPE_FMT     BIT3      
+// 0 = Passive Format 1, 1 = Passive Format 2
+#define SED1356_PANEL_TYPE_CLR     BIT2      
+// 0 = Passive Mono, 1 = Passive Color
+#define SED1356_PANEL_TYPE_DUAL    BIT1      
+// 0 = Passive Single, 1 = Passive Dual
+#define SED1356_PANEL_TYPE_TFT     BIT0      
+// 0 = Passive, 1 = TFT (DUAL, FMT & CLR are don't cares)
+
+
+// SED1356_REG_CRT_HOR_PULSE, SED1356_REG_CRT_VER_PULSE,
+
+// SED1356_REG_LCD_HOR_PULSE and SED1356_REG_LCD_VER_PULSE
+#define SED1356_PULSE_POL_HIGH     BIT7      
+// 0 = CRT/TFT Pulse is Low, Passive is High, 1 = CRT/TFT Pulse is High, Passive is Low
+#define SED1356_PULSE_POL_LOW      0x00      
+// 0 = CRT/TFT Pulse is Low, Passive is High, 1 = CRT/TFT Pulse is High, Passive is Low
+#define SED1356_PULSE_WID(_x_)     (_x_ & 0x0f)  
+// Pulse Width in Pixels
+
+
+// SED1356_LCD_DISP_MODE_and_MISC - even        
+#define SED1356_LCD_DISP_BLANK     BIT7      
+// 1 = Blank LCD Display
+#define SED1356_LCD_DISP_SWIV_NORM (0x00 << 4)    
+// Used with SED1356_REG_DISP_MODE Bit 6
+#define SED1356_LCD_DISP_SWIV_90   (0x00 << 4)
+#define SED1356_LCD_DISP_SWIV_180  (0x01 << 4)
+#define SED1356_LCD_DISP_SWIV_270  (0x01 << 4)
+#define SED1356_LCD_DISP_SWIV_MASK (0x01 << 4)
+#define SED1356_LCD_DISP_16BPP     0x05      
+// Bit Per Pixel Selection
+#define SED1356_LCD_DISP_15BPP     0x04
+#define SED1356_LCD_DISP_8BPP      0x03
+#define SED1356_LCD_DISP_4BPP      0x02
+#define SED1356_LCD_DISP_BPP_MASK  0x07
+
+
+// SED1356_LCD_DISP_MODE_and_MISC - odd
+#define SED1356_LCD_MISC_DITH      BIT1 << 8    
+// 1 = Dither Disable, Passive Panel Only
+#define SED1356_LCD_MISC_DUAL      BIT0 << 8    
+// 1 = Dual Panel Disable, Passive Panel Only
+
+
+// SED1356_REG_CRT_VER_PULSE_and_OUT_CTL - odd
+#define SED1356_CRT_OUT_CHROM      BIT5 << 8    
+// 1 = TV Chrominance Filter Enable
+#define SED1356_CRT_OUT_LUM        BIT4 << 8    
+// 1 = TV Luminance Filter Enable
+#define SED1356_CRT_OUT_DAC_LVL    BIT3 << 8    
+// 1 = 4.6ma IREF, 0 = 9.2 IREF
+#define SED1356_CRT_OUT_SVIDEO     BIT1 << 8    
+// 1 = S-Video Output, 0 = Composite Video Output
+#define SED1356_CRT_OUT_PAL        BIT0 << 8    
+// 1 = PAL Format Output, 0 = NTSC Format Output
+
+
+// SED1356_REG_CRT_DISP_MODE
+#define SED1356_CRT_DISP_BLANK     BIT7      
+// 1 = Blank CRT Display
+#define SED1356_CRT_DISP_16BPP     0x05      
+// Bit Per Pixel Selection
+#define SED1356_CRT_DISP_15BPP     0x04
+#define SED1356_CRT_DISP_8BPP      0x03
+#define SED1356_CRT_DISP_4BPP      0x02
+#define SED1356_CRT_DISP_BPP_MASK  0x07
+
+
+// SED1356_DISP_MODE        
+#define SED1356_DISP_SWIV_NORM     (0x00 << 6)    
+// Used with SED1356_LCD_DISP_MODE Bit 4
+#define SED1356_DISP_SWIV_90       (0x01 << 6)
+#define SED1356_DISP_SWIV_180      (0x00 << 6)
+#define SED1356_DISP_SWIV_270      (0x01 << 6)
+#define SED1356_DISP_MODE_OFF      0x00      
+// All Displays Off
+#define SED1356_DISP_MODE_LCD      0x01      
+// LCD Only
+#define SED1356_DISP_MODE_CRT      0x02      
+// CRT Only
+#define SED1356_DISP_MODE_LCD_CRT  0x03      
+// Simultaneous LCD and CRT
+#define SED1356_DISP_MODE_TV       0x04      
+// TV Only, Flicker Filter Off
+#define SED1356_DISP_MODE_TV_LCD   0x05      
+// Simultaneous LCD and TV, Flicker Filter Off
+#define SED1356_DISP_MODE_TV_FLICK 0x06      
+// TV Only, Flicker Filter On
+#define SED1356_DISP_MODE_TV_LCD_FLICK  0x07      
+// Simultaneous LCD and TV, Flicker Filter On
+
+
+// SED1356_REG_PWR_CFG and SED1356_REG_PWR_STAT
+#define SED1356_PWR_PCLK        BIT1      
+// SED1356_REG_PWR_STAT only
+#define SED1356_PWR_MCLK        BIT0
+
+
+// SED1356_REG_VER_NONDISP
+#define SED1356_VER_NONDISP        BIT7      
+// vertical retrace status 1 = in retrace
+
+
+// Display size defines
+#define PIXELS_PER_ROW     640
+#define PIXELS_PER_COL     480
+#define BYTES_PER_PIXEL    2
+#define COLS_PER_SCREEN    80
+#define ROWS_PER_SCREEN    30
+
+
+// 16-bit pixels are RGB 565 - LSB of RED and BLUE are tied low at the 
+
+// LCD Interface, while the LSB of GREEN is loaded as 0
+#define RED_SUBPIXEL(n)    ((n & 0x1f) << 11)
+#define GREEN_SUBPIXEL(n)  ((n & 0x1f) << 5)
+#define BLUE_SUBPIXEL(n)  ((n & 0x1f) << 0)
+
+
+// define a simple VGA style 16-color pallette
+#define  LU_BLACK    (RED_SUBPIXEL(0x00) | GREEN_SUBPIXEL(0x00) | BLUE_SUBPIXEL(0x00))
+#define  LU_BLUE      (RED_SUBPIXEL(0x00) | GREEN_SUBPIXEL(0x00) | BLUE_SUBPIXEL(0x0f))
+#define  LU_GREEN    (RED_SUBPIXEL(0x00) | GREEN_SUBPIXEL(0x0f) | BLUE_SUBPIXEL(0x00))
+#define  LU_CYAN      (RED_SUBPIXEL(0x00) | GREEN_SUBPIXEL(0x0f) | BLUE_SUBPIXEL(0x0f))
+#define  LU_RED      (RED_SUBPIXEL(0x0f) | GREEN_SUBPIXEL(0x00) | BLUE_SUBPIXEL(0x00))
+#define  LU_VIOLET    (RED_SUBPIXEL(0x0f) | GREEN_SUBPIXEL(0x00) | BLUE_SUBPIXEL(0x0f))
+#define  LU_YELLOW    (RED_SUBPIXEL(0x0f) | GREEN_SUBPIXEL(0x0f) | BLUE_SUBPIXEL(0x00))
+#define  LU_GREY      (RED_SUBPIXEL(0x0f) | GREEN_SUBPIXEL(0x0f) | BLUE_SUBPIXEL(0x0f))
+#define  LU_WHITE    (RED_SUBPIXEL(0x17) | GREEN_SUBPIXEL(0x17) | BLUE_SUBPIXEL(0x17))
+#define  LU_BRT_BLUE    (RED_SUBPIXEL(0x00) | GREEN_SUBPIXEL(0x00) | BLUE_SUBPIXEL(0x1f))
+#define  LU_BRT_GREEN  (RED_SUBPIXEL(0x00) | GREEN_SUBPIXEL(0x1f) | BLUE_SUBPIXEL(0x00))
+#define  LU_BRT_CYAN    (RED_SUBPIXEL(0x00) | GREEN_SUBPIXEL(0x1f) | BLUE_SUBPIXEL(0x1f))
+#define  LU_BRT_RED    (RED_SUBPIXEL(0x1f) | GREEN_SUBPIXEL(0x00) | BLUE_SUBPIXEL(0x00))
+#define  LU_BRT_VIOLET  (RED_SUBPIXEL(0x1f) | GREEN_SUBPIXEL(0x00) | BLUE_SUBPIXEL(0x1f))
+#define  LU_BRT_YELLOW  (RED_SUBPIXEL(0x1f) | GREEN_SUBPIXEL(0x1f) | BLUE_SUBPIXEL(0x00))
+#define  LU_BRT_WHITE  (RED_SUBPIXEL(0x1f) | GREEN_SUBPIXEL(0x1f) | BLUE_SUBPIXEL(0x1f))
+
+static const ushort vga_lookup[] = {
+LU_BLACK,        
+// 0
+LU_BLUE,        
+// 1
+LU_GREEN,        
+// 2
+LU_CYAN,        
+// 3
+LU_RED,          
+// 4
+LU_GREY,        
+// 5
+LU_VIOLET,        
+// 6
+LU_YELLOW,        
+// 7
+LU_WHITE,        
+// 8
+LU_BRT_BLUE,      
+// 9
+LU_BRT_GREEN,      
+// 10
+LU_BRT_CYAN,      
+// 11
+LU_BRT_RED,        
+// 12
+LU_BRT_VIOLET,      
+// 13
+LU_BRT_YELLOW,      
+// 14
+LU_BRT_WHITE      
+// 15
+};
+
+
+// default foreground and background colors
+#define SED_BG_DEF      1
+#define SED_FG_DEF      14
+
+
+// Vertical and Horizontal Pulse, Start and Non-Display values vary depending
+
+// upon the mode.  The following section gives some insight into how the
+
+// values are arrived at.
+
+// ms = milliseconds, us = microseconds, ns = nanoseconds    
+
+// Mhz = Megaherz, Khz = Kiloherz, Hz = Herz   
+
+//
+
+// ***************************************************************************************************   
+
+// CRT Mode is 640x480 @ 72Hz VESA compatible timing.  PCLK = 31.5Mhz (31.75ns)
+
+// ***************************************************************************************************   
+
+//
+
+//                               CRT MODE HORIZONTAL TIMING PARAMETERS   
+
+//
+
+//                                       |<-------Tha------->|   
+
+//                                       |___________________|                     ______   
+
+// Display Enable   _____________________|                   |____________________|      
+
+//                                       |                   |   
+
+// Horizontal Pulse __           ________|___________________|________          __________   
+
+//                    |_________|        |                   |        |________|   
+
+//                    |<- Thp ->|        |                   |        |   
+
+//                    |         |<-Thbp->|                   |        |   
+
+//                    |                                      |<-Thfp->|   
+
+//                    |<----------------------Tht-------------------->|    
+
+//
+
+// Tha  - Active Display Time                      = 640 pixels   
+
+// Thp  - Horizontal Pulse       = 1.27us/31.75ns  =  40 pixels   
+
+// Thbp - Horizontal Front Porch = 1.016us/31.75ns =  32 pixels   
+
+// Thfp - Horizontal Back Porch  = 3.8us/31.75ns   = 120 pixels   
+
+// Tht  - Total Horizontal Time                    = 832 pixels x 32.75ns/pixel = 26.416us or 38.785Khz   
+
+//
+
+// Correlation between horizontal timing parameters and SED registers   
+#define SED_HOR_PULSE_WIDTH_CRT 0x07 
+// Horizontal Pulse Width Register           = (Thp/8) - 1
+#define SED_HOR_PULSE_START_CRT  0x02 
+// Horizontal Pulse Start Position Register    = ((Thfp + 2)/8) - 1
+#define SED_HOR_NONDISP_CRT    0x17 
+// Horizontal Non-Display Period Register     = ((Thp + Thfp + Thbp)/8) - 1
+//
+//                                CRT MODE VERTICAL TIMING PARAMTERS   
+//
+//                                       |<-------Tva------->|   
+//                                       |___________________|                     ______   
+// Display Enable   _____________________|                   |_____________________|      
+//                                       |                   |   
+// Vertical Pulse   __           ________|___________________|________          __________   
+//                    |_________|        |                   |        |________|   
+//                    |<- Tvp ->|        |                   |        |   
+//                    |         |<-Tvbp->|                   |        |   
+//                    |                                      |<-Tvfp->|   
+//                    |<----------------------Tvt-------------------->|    
+//
+// Tva  - Active Display Time   = 480 lines   
+// Tvp  - Vertical Pulse        =  3 lines   
+// Tvfp - Vertical Front Porch  =   9 lines   
+// Tvbp - Vertical Back Porch   =  28 lines   
+// Tvt  - Total Horizontal Time = 520 lines x 26.416us/line = 13.73632ms or 72.8Hz   
+
+//
+
+// Correlation between vertical timing parameters and SED registers   
+#define SED_VER_PULSE_WIDTH_CRT 0x02 // VRTC/FPFRAME Pulse Width Register    = Tvp - 1
+#define SED_VER_PULSE_START_CRT 0x08 // VRTC/FPFRAME Start Position Register = Tvfp - 1            
+#define SED_VER_NONDISP_CRT    0x27 // Vertical Non-Display Period Register = (Tvp + Tvfp + Tvbp) - 1
+
+//
+
+// ***************************************************************************************************   
+// DUAL LCD Mode is 640x480 @ 60Hz VGA compatible timing.   PCLK = 25.175Mhz (39.722ns)
+// ***************************************************************************************************   
+//
+//                              LCD MODE HORIZONTAL TIMING PARAMTERS   
+//
+//                                       |<-------Tha------->|   
+//                                       |___________________|                     ______   
+// Display Enable   _____________________|                   |____________________|      
+//                                       |                   |   
+// Horizontal Pulse __           ________|___________________|________          __________   
+//                    |_________|        |                   |        |________|   
+//                    |<- Thp ->|        |                   |        |   
+//                    |         |<-Thbp->|                   |        |   
+//                    |                                      |<-Thfp->|   
+//                    |<----------------------Tht-------------------->|    
+//
+// Tha  - Active Display Time                     = 640 pixels   
+// Thp  - Horizontal Pulse       = 3.8us/39.72ns  =  96 pixels   
+// Thfp - Horizontal Front Porch = .595us/39.72ns =  16 pixels   
+// Thbp - Horizontal Backporch   = 1.9us/39.72ns  =  48 pixels   
+// Tht  - Total Horizontal Time  =                = 800 pixels @ 39.72ns/pixel = 31.776us or 31.47Khz   
+
+//
+
+// Correlation between horizontal timing parameters and SED registers   
+#define SED_HOR_PULSE_WIDTH_LCD 0x0b  // HRTC/FPLINE Pulse Width Register       = (Thp/8) - 1
+#define SED_HOR_PULSE_START_LCD  0x02 // HRTC/FPLINE Start Position Register    = (Thfp/8) - 2
+#define SED_HOR_NONDISP_LCD   0x13    // Horizontal Non-Display Period Register = ((Thp + Thfp + Thbp)/8) - 1
+
+//
+//                              LCD MODE VERTICAL TIMING PARAMTERS   
+//
+//                                       |<-------Tva------->|   
+//                                       |___________________|                     ______   
+// Display Enable   _____________________|                   |_____________________|      
+//                                       |                   |   
+// Vertical Pulse   __           ________|___________________|________          __________   
+//                    |_________|        |                   |        |________|   
+//                    |<- Tvp ->|        |                   |        |   
+//                    |         |<-Tvbp->|                   |        |   
+//                    |                                      |<-Tvfp->|   
+//                    |<----------------------Tvt-------------------->|    
+//
+// Tva  - Active Display Time   = 480 lines   
+// Tvp  - Vertical Pulse        = 2 lines   
+// Tvfp - Vertical Front Porch  = 10 lines   
+// Tvbp - Vertical Backporch    = 33 lines   
+// Tvt  - Total Horizontal Time = 525 lines @ 31.776us/line = 16.682ms or 60Hz   
+
+//
+// Correlation between vertical timing parameters and SED registers   
+#define SED_VER_PULSE_WIDTH_LCD 0x01 // VRTC/FPFRAME Pulse Width Register    = Tvp - 1
+#define SED_VER_PULSE_START_LCD 0x09 // VRTC/FPFRAME Start Position Register = Tvfp - 1            
+#define SED_VER_NONDISP_LCD   0x2c   // Vertical Non-Display Period Register = (Tvp + Tvfp + Tvbp) - 1
Index: hal/powerpc/csb281/current/src/sed135x_16bit.c
===================================================================
RCS file: hal/powerpc/csb281/current/src/sed135x_16bit.c
diff -N hal/powerpc/csb281/current/src/sed135x_16bit.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ hal/powerpc/csb281/current/src/sed135x_16bit.c	1 Feb 2003 18:11:34 -0000
@@ -0,0 +1,618 @@
+//==========================================================================
+//
+//      sed135x_16bit.c
+//
+// Author(s):   Michael Kelly - Cogent Computer Systems, Inc.
+// Date:        05-24-2002
+// Description: Init Code for SED135x Display Controller
+//
+//==========================================================================
+// Copyright (C) 2003 Gary Thomas
+
+#include <pkgconf/hal.h>
+#include <cyg/infra/cyg_type.h>
+#include <cyg/hal/lcd_support.h>
+#include <cyg/hal/hal_io.h>
+
+typedef unsigned char  uchar;
+typedef unsigned short ushort;
+typedef volatile unsigned short vushort;
+typedef unsigned long  ulong;
+typedef volatile unsigned long  vulong;
+
+// board specific defines needed by sed135x
+#define SED_REG_BASE             0x78000000      // *RCE3
+#define SED_MEM_BASE             0x78400000
+#define SED_STEP                 2               // 16-bit port on 32-bit boundary
+
+// Control/Status Registers, 16-bit mode
+#define SED_REG16(_x_)           *(vushort *)((ulong)SED_REG_BASE + (((ulong)_x_ * SED_STEP) ^ 2))   
+#define H2SED(_x_)               _le16(_x_)
+#define SED_GET_PHYS_ADD(_reg_)  (SED_MEM_BASE + ((_reg_ * SED_STEP) ^ 2))
+#define RD_FB16(_reg_,_val_)     ((_val_) = *(vushort *)SED_GET_PHYS_ADD(_reg_))
+#define WR_FB16(_reg_,_val_)     (*(vushort *)SED_GET_PHYS_ADD(_reg_) = (_val_))
+
+#define SED_DISP_MODE_CRT        1
+#define SED_DISP_MODE_LCD        0
+
+#include "sed1356_16bit.h"
+
+//------------------------------------------------------------------------
+// Color Lookup Table Values
+//
+
+static ushort sed_lut_16bit[256][3] = {
+//    RED,  GREEN, BLUE    // Entry
+  { 0x0000,  0x0000, 0x0000, },  // 00  
+  { 0x0000,  0x0000, 0x00A0, },  // 01 
+  { 0x0000,  0x00A0, 0x0000, },  // 02 
+  { 0x0000,  0x00A0, 0x00A0, },  // 03 
+  { 0x00A0,  0x0000, 0x0000, },  // 04 
+  { 0x00A0,  0x0000, 0x00A0, },  // 05 
+  { 0x00A0,  0x00A0, 0x0000, },  // 06 
+  { 0x00A0,  0x00A0, 0x00A0, },  // 07 
+  { 0x0050,  0x0050, 0x0050, },  // 08 
+  { 0x0050,  0x0050, 0x00F0, },  // 09 
+  { 0x0050,  0x00F0, 0x0050, },  // 0A 
+  { 0x0050,  0x00F0, 0x00F0, },  // 0B 
+  { 0x00F0,  0x0050, 0x0050, },  // 0C 
+  { 0x00F0,  0x0050, 0x00F0, },  // 0D 
+  { 0x00F0,  0x00F0, 0x0050, },  // 0E 
+  { 0x00F0,  0x00F0, 0x00F0, },  // 0F 
+  { 0x0000,  0x0000, 0x0000, },  // 10 
+  { 0x0010,  0x0010, 0x0010, },  // 11 
+  { 0x0020,  0x0020, 0x0020, },  // 12 
+  { 0x0020,  0x0020, 0x0020, },  // 13 
+  { 0x0030,  0x0030, 0x0030, },  // 14 
+  { 0x0040,  0x0040, 0x0040, },  // 15 
+  { 0x0050,  0x0050, 0x0050, },  // 16 
+  { 0x0060,  0x0060, 0x0060, },  // 17 
+  { 0x0070,  0x0070, 0x0070, },  // 18 
+  { 0x0080,  0x0080, 0x0080, },  // 19 
+  { 0x0090,  0x0090, 0x0090, },  // 1A 
+  { 0x00A0,  0x00A0, 0x00A0, },  // 1B 
+  { 0x00B0,  0x00B0, 0x00B0, },  // 1C 
+  { 0x00C0,  0x00C0, 0x00C0, },  // 1D 
+  { 0x00E0,  0x00E0, 0x00E0, },  // 1E 
+  { 0x00F0,  0x00F0, 0x00F0, },  // 1F 
+  { 0x0000,  0x0000, 0x00F0, },  // 20 
+  { 0x0040,  0x0000, 0x00F0, },  // 21 
+  { 0x0070,  0x0000, 0x00F0, },  // 22 
+  { 0x00B0,  0x0000, 0x00F0, },  // 23 
+  { 0x00F0,  0x0000, 0x00F0, },  // 24 
+  { 0x00F0,  0x0000, 0x00B0, },  // 25 
+  { 0x00F0,  0x0000, 0x0070, },  // 26 
+  { 0x00F0,  0x0000, 0x0040, },  // 27 
+  { 0x00F0,  0x0000, 0x0000, },  // 28 
+  { 0x00F0,  0x0040, 0x0000, },  // 29 
+  { 0x00F0,  0x0070, 0x0000, },  // 2A 
+  { 0x00F0,  0x00B0, 0x0000, },  // 2B 
+  { 0x00F0,  0x00F0, 0x0000, },  // 2C 
+  { 0x00B0,  0x00F0, 0x0000, },  // 2D 
+  { 0x0070,  0x00F0, 0x0000, },  // 2E 
+  { 0x0040,  0x00F0, 0x0000, },  // 2F 
+  { 0x0000,  0x00F0, 0x0000, },  // 30 
+  { 0x0000,  0x00F0, 0x0040, },  // 31 
+  { 0x0000,  0x00F0, 0x0070, },  // 32 
+  { 0x0000,  0x00F0, 0x00B0, },  // 33 
+  { 0x0000,  0x00F0, 0x00F0, },  // 34 
+  { 0x0000,  0x00B0, 0x00F0, },  // 35 
+  { 0x0000,  0x0070, 0x00F0, },  // 36 
+  { 0x0000,  0x0040, 0x00F0, },  // 37 
+  { 0x0070,  0x0070, 0x00F0, },  // 38 
+  { 0x0090,  0x0070, 0x00F0, },  // 39 
+  { 0x00B0,  0x0070, 0x00F0, },  // 3A 
+  { 0x00D0,  0x0070, 0x00F0, },  // 3B 
+  { 0x00F0,  0x0070, 0x00F0, },  // 3C 
+  { 0x00F0,  0x0070, 0x00D0, },  // 3D 
+  { 0x00F0,  0x0070, 0x00B0, },  // 3E 
+  { 0x00F0,  0x0070, 0x0090, },  // 3F 
+  { 0x00F0,  0x0070, 0x0070, },  // 40 
+  { 0x00F0,  0x0090, 0x0070, },  // 41 
+  { 0x00F0,  0x00B0, 0x0070, },  // 42 
+  { 0x00F0,  0x00D0, 0x0070, },  // 43 
+  { 0x00F0,  0x00F0, 0x0070, },  // 44 
+  { 0x00D0,  0x00F0, 0x0070, },  // 45 
+  { 0x00B0,  0x00F0, 0x0070, },  // 46 
+  { 0x0090,  0x00F0, 0x0070, },  // 47 
+  { 0x0070,  0x00F0, 0x0070, },  // 48 
+  { 0x0070,  0x00F0, 0x0090, },  // 49 
+  { 0x0070,  0x00F0, 0x00B0, },  // 4A 
+  { 0x0070,  0x00F0, 0x00D0, },  // 4B 
+  { 0x0070,  0x00F0, 0x00F0, },  // 4C 
+  { 0x0070,  0x00D0, 0x00F0, },  // 4D 
+  { 0x0070,  0x00B0, 0x00F0, },  // 4E 
+  { 0x0070,  0x0090, 0x00F0, },  // 4F 
+  { 0x00B0,  0x00B0, 0x00F0, },  // 50 
+  { 0x00C0,  0x00B0, 0x00F0, },  // 51 
+  { 0x00D0,  0x00B0, 0x00F0, },  // 52 
+  { 0x00E0,  0x00B0, 0x00F0, },  // 53 
+  { 0x00F0,  0x00B0, 0x00F0, },  // 54 
+  { 0x00F0,  0x00B0, 0x00E0, },  // 55 
+  { 0x00F0,  0x00B0, 0x00D0, },  // 56 
+  { 0x00F0,  0x00B0, 0x00C0, },  // 57 
+  { 0x00F0,  0x00B0, 0x00B0, },  // 58 
+  { 0x00F0,  0x00C0, 0x00B0, },  // 59 
+  { 0x00F0,  0x00D0, 0x00B0, },  // 5A 
+  { 0x00F0,  0x00E0, 0x00B0, },  // 5B 
+  { 0x00F0,  0x00F0, 0x00B0, },  // 5C 
+  { 0x00E0,  0x00F0, 0x00B0, },  // 5D 
+  { 0x00D0,  0x00F0, 0x00B0, },  // 5E 
+  { 0x00C0,  0x00F0, 0x00B0, },  // 5F 
+  { 0x00B0,  0x00F0, 0x00B0, },  // 60 
+  { 0x00B0,  0x00F0, 0x00C0, },  // 61 
+  { 0x00B0,  0x00F0, 0x00D0, },  // 62 
+  { 0x00B0,  0x00F0, 0x00E0, },  // 63 
+  { 0x00B0,  0x00F0, 0x00F0, },  // 64 
+  { 0x00B0,  0x00E0, 0x00F0, },  // 65 
+  { 0x00B0,  0x00D0, 0x00F0, },  // 66 
+  { 0x00B0,  0x00C0, 0x00F0, },  // 67 
+  { 0x0000,  0x0000, 0x0070, },  // 68 
+  { 0x0010,  0x0000, 0x0070, },  // 69 
+  { 0x0030,  0x0000, 0x0070, },  // 6A 
+  { 0x0050,  0x0000, 0x0070, },  // 6B 
+  { 0x0070,  0x0000, 0x0070, },  // 6C 
+  { 0x0070,  0x0000, 0x0050, },  // 6D 
+  { 0x0070,  0x0000, 0x0030, },  // 6E 
+  { 0x0070,  0x0000, 0x0010, },  // 6F 
+  { 0x0070,  0x0000, 0x0000, },  // 70 
+  { 0x0070,  0x0010, 0x0000, },  // 71 
+  { 0x0070,  0x0030, 0x0000, },  // 72 
+  { 0x0070,  0x0050, 0x0000, },  // 73 
+  { 0x0070,  0x0070, 0x0000, },  // 74 
+  { 0x0050,  0x0070, 0x0000, },  // 75 
+  { 0x0030,  0x0070, 0x0000, },  // 76 
+  { 0x0010,  0x0070, 0x0000, },  // 77 
+  { 0x0000,  0x0070, 0x0000, },  // 78 
+  { 0x0000,  0x0070, 0x0010, },  // 79 
+  { 0x0000,  0x0070, 0x0030, },  // 7A 
+  { 0x0000,  0x0070, 0x0050, },  // 7B 
+  { 0x0000,  0x0070, 0x0070, },  // 7C 
+  { 0x0000,  0x0050, 0x0070, },  // 7D 
+  { 0x0000,  0x0030, 0x0070, },  // 7E 
+  { 0x0000,  0x0010, 0x0070, },  // 7F 
+  { 0x0030,  0x0030, 0x0070, },  // 80 
+  { 0x0040,  0x0030, 0x0070, },  // 81 
+  { 0x0050,  0x0030, 0x0070, },  // 82 
+  { 0x0060,  0x0030, 0x0070, },  // 83 
+  { 0x0070,  0x0030, 0x0070, },  // 84 
+  { 0x0070,  0x0030, 0x0060, },  // 85 
+  { 0x0070,  0x0030, 0x0050, },  // 86 
+  { 0x0070,  0x0030, 0x0040, },  // 87 
+  { 0x0070,  0x0030, 0x0030, },  // 88 
+  { 0x0070,  0x0040, 0x0030, },  // 89 
+  { 0x0070,  0x0050, 0x0030, },  // 8A 
+  { 0x0070,  0x0060, 0x0030, },  // 8B 
+  { 0x0070,  0x0070, 0x0030, },  // 8C 
+  { 0x0060,  0x0070, 0x0030, },  // 8D 
+  { 0x0050,  0x0070, 0x0030, },  // 8E 
+  { 0x0040,  0x0070, 0x0030, },  // 8F 
+  { 0x0030,  0x0070, 0x0030, },  // 90 
+  { 0x0030,  0x0070, 0x0040, },  // 91 
+  { 0x0030,  0x0070, 0x0050, },  // 92 
+  { 0x0030,  0x0070, 0x0060, },  // 93 
+  { 0x0030,  0x0070, 0x0070, },  // 94 
+  { 0x0030,  0x0060, 0x0070, },  // 95 
+  { 0x0030,  0x0050, 0x0070, },  // 96 
+  { 0x0030,  0x0040, 0x0070, },  // 97 
+  { 0x0050,  0x0050, 0x0070, },  // 98 
+  { 0x0050,  0x0050, 0x0070, },  // 99 
+  { 0x0060,  0x0050, 0x0070, },  // 9A 
+  { 0x0060,  0x0050, 0x0070, },  // 9B 
+  { 0x0070,  0x0050, 0x0070, },  // 9C 
+  { 0x0070,  0x0050, 0x0060, },  // 9D 
+  { 0x0070,  0x0050, 0x0060, },  // 9E 
+  { 0x0070,  0x0050, 0x0050, },  // 9F 
+  { 0x0070,  0x0050, 0x0050, },  // A0 
+  { 0x0070,  0x0050, 0x0050, },  // A1 
+  { 0x0070,  0x0060, 0x0050, },  // A2 
+  { 0x0070,  0x0060, 0x0050, },  // A3 
+  { 0x0070,  0x0070, 0x0050, },  // A4 
+  { 0x0060,  0x0070, 0x0050, },  // A5 
+  { 0x0060,  0x0070, 0x0050, },  // A6 
+  { 0x0050,  0x0070, 0x0050, },  // A7 
+  { 0x0050,  0x0070, 0x0050, },  // A8 
+  { 0x0050,  0x0070, 0x0050, },  // A9 
+  { 0x0050,  0x0070, 0x0060, },  // AA 
+  { 0x0050,  0x0070, 0x0060, },  // AB 
+  { 0x0050,  0x0070, 0x0070, },  // AC 
+  { 0x0050,  0x0060, 0x0070, },  // AD 
+  { 0x0050,  0x0060, 0x0070, },  // AE 
+  { 0x0050,  0x0050, 0x0070, },  // AF 
+  { 0x0000,  0x0000, 0x0040, },  // B0 
+  { 0x0010,  0x0000, 0x0040, },  // B1 
+  { 0x0020,  0x0000, 0x0040, },  // B2 
+  { 0x0030,  0x0000, 0x0040, },  // B3 
+  { 0x0040,  0x0000, 0x0040, },  // B4 
+  { 0x0040,  0x0000, 0x0030, },  // B5 
+  { 0x0040,  0x0000, 0x0020, },  // B6 
+  { 0x0040,  0x0000, 0x0010, },  // B7 
+  { 0x0040,  0x0000, 0x0000, },  // B8 
+  { 0x0040,  0x0010, 0x0000, },  // B9 
+  { 0x0040,  0x0020, 0x0000, },  // BA 
+  { 0x0040,  0x0030, 0x0000, },  // BB 
+  { 0x0040,  0x0040, 0x0000, },  // BC 
+  { 0x0030,  0x0040, 0x0000, },  // BD 
+  { 0x0020,  0x0040, 0x0000, },  // BE 
+  { 0x0010,  0x0040, 0x0000, },  // BF 
+  { 0x0000,  0x0040, 0x0000, },  // C0 
+  { 0x0000,  0x0040, 0x0010, },  // C1 
+  { 0x0000,  0x0040, 0x0020, },  // C2 
+  { 0x0000,  0x0040, 0x0030, },  // C3 
+  { 0x0000,  0x0040, 0x0040, },  // C4 
+  { 0x0000,  0x0030, 0x0040, },  // C5 
+  { 0x0000,  0x0020, 0x0040, },  // C6 
+  { 0x0000,  0x0010, 0x0040, },  // C7 
+  { 0x0020,  0x0020, 0x0040, },  // C8 
+  { 0x0020,  0x0020, 0x0040, },  // C9 
+  { 0x0030,  0x0020, 0x0040, },  // CA 
+  { 0x0030,  0x0020, 0x0040, },  // CB 
+  { 0x0040,  0x0020, 0x0040, },  // CC 
+  { 0x0040,  0x0020, 0x0030, },  // CD 
+  { 0x0040,  0x0020, 0x0030, },  // CE 
+  { 0x0040,  0x0020, 0x0020, },  // CF 
+  { 0x0040,  0x0020, 0x0020, },  // D0 
+  { 0x0040,  0x0020, 0x0020, },  // D1 
+  { 0x0040,  0x0030, 0x0020, },  // D2 
+  { 0x0040,  0x0030, 0x0020, },  // D3 
+  { 0x0040,  0x0040, 0x0020, },  // D4 
+  { 0x0030,  0x0040, 0x0020, },  // D5 
+  { 0x0030,  0x0040, 0x0020, },  // D6 
+  { 0x0020,  0x0040, 0x0020, },  // D7 
+  { 0x0020,  0x0040, 0x0020, },  // D8 
+  { 0x0020,  0x0040, 0x0020, },  // D9 
+  { 0x0020,  0x0040, 0x0030, },  // DA 
+  { 0x0020,  0x0040, 0x0030, },  // DB 
+  { 0x0020,  0x0040, 0x0040, },  // DC 
+  { 0x0020,  0x0030, 0x0040, },  // DD 
+  { 0x0020,  0x0030, 0x0040, },  // DE 
+  { 0x0020,  0x0020, 0x0040, },  // DF 
+  { 0x0020,  0x0020, 0x0040, },  // E0 
+  { 0x0030,  0x0020, 0x0040, },  // E1 
+  { 0x0030,  0x0020, 0x0040, },  // E2 
+  { 0x0030,  0x0020, 0x0040, },  // E3 
+  { 0x0040,  0x0020, 0x0040, },  // E4 
+  { 0x0040,  0x0020, 0x0030, },  // E5 
+  { 0x0040,  0x0020, 0x0030, },  // E6 
+  { 0x0040,  0x0020, 0x0030, },  // E7 
+  { 0x0040,  0x0020, 0x0020, },  // E8 
+  { 0x0040,  0x0030, 0x0020, },  // E9 
+  { 0x0040,  0x0030, 0x0020, },  // EA 
+  { 0x0040,  0x0030, 0x0020, },  // EB 
+  { 0x0040,  0x0040, 0x0020, },  // EC 
+  { 0x0030,  0x0040, 0x0020, },  // ED 
+  { 0x0030,  0x0040, 0x0020, },  // EE 
+  { 0x0030,  0x0040, 0x0020, },  // EF 
+  { 0x0020,  0x0040, 0x0020, },  // F0 
+  { 0x0020,  0x0040, 0x0030, },  // F1 
+  { 0x0020,  0x0040, 0x0030, },  // F2 
+  { 0x0020,  0x0040, 0x0030, },  // F3 
+  { 0x0020,  0x0040, 0x0040, },  // F4 
+  { 0x0020,  0x0030, 0x0040, },  // F5 
+  { 0x0020,  0x0030, 0x0040, },  // F6 
+  { 0x0020,  0x0030, 0x0040, },  // F7 
+  { 0x0000,  0x0000, 0x0000, },  // F8 
+  { 0x0000,  0x0000, 0x0000, },  // F9 
+  { 0x0000,  0x0000, 0x0000, },  // FA 
+  { 0x0000,  0x0000, 0x0000, },  // FB 
+  { 0x0000,  0x0000, 0x0000, },  // FC 
+  { 0x0000,  0x0000, 0x0000, },  // FD 
+  { 0x0000,  0x0000, 0x0000, },  // FE 
+  { 0x0000,  0x0000, 0x0000, },  // FF 
+};
+
+//--------------------------------------------------------------------------
+// function prototypes
+//
+int         sed135x_init(int depth, struct lcd_info *lcd);
+static void sed135x_on(void);
+static void sed135x_off(void);
+static void sed_lcd_bkl(uchar bright);
+
+extern void fs6377_init(int);
+// Why doesn't the real mode work?
+#define fs6377_init(mode) _csb281_fs6377_init(0)
+
+// global flags to determine what, if anything, was found
+static int sed135x_ok;
+static int sed_disp_mode_crt;
+
+// GPIO1 is used to control the LCD backlight on many CSB's
+#define SED1356_BKL_ON          SED1356_REG_GPIO_CTL |= H2SED(SED1356_GPIO_GPIO1)   // GPIO1 = 1 
+#define SED1356_BKL_OFF         SED1356_REG_GPIO_CTL &= H2SED(~SED1356_GPIO_GPIO1)  // GPIO1 = 0
+
+// GPIO2 is used to sense the presence of a monitor.  0 = monitor connected, 1 = no monitor
+// we invert the sense to make it easier to test and more logical.
+#define SED1356_CRT             SED1356_REG_GPIO_CTL & H2SED(SED1356_GPIO_GPIO2)
+
+#define SED_ROW_SIZE(_depth_)   ((PIXELS_PER_ROW * _depth_) / 8)
+
+//--------------------------------------------------------------------------
+// sed135x_on
+//
+// This function turns on the SED1355 or SED1356 LCD and/or CRT
+//
+static void 
+sed135x_on(void)
+{
+    uchar temp8;
+    int i;
+
+    sed135x_off();
+
+    // Turn on the LCD and/or CRT
+    // The SED1356 supports seperate LCD and CRT timing registers
+    // that have already been setup.  We just blank the side we 
+    // aren't using and enable the other.
+    if (sed_disp_mode_crt) {  // 1 = CRT Mode
+        // Blank the LCD and CRT
+        SED1356_REG_LCD_DISP_MODE_and_MISC |= H2SED(SED1356_LCD_DISP_BLANK);
+        SED1356_REG_CRT_DISP_MODE |= H2SED(SED1356_CRT_DISP_BLANK);
+
+        // turn the LCD backlight off
+        sed_lcd_bkl(0);
+
+        // Set the SED1356 to CRT Mode
+        SED1356_REG_DISP_MODE = H2SED(SED1356_DISP_SWIV_NORM | 
+                                      SED1356_DISP_MODE_CRT);
+
+        // Turn on the CRT
+        SED1356_REG_CRT_DISP_MODE &= ~H2SED(SED1356_CRT_DISP_BLANK);
+    } // if CRT mode
+    else {  // 0 = LCD Mode
+        // Blank the LCD and CRT
+        SED1356_REG_LCD_DISP_MODE_and_MISC |= H2SED(SED1356_LCD_DISP_BLANK);
+        SED1356_REG_CRT_DISP_MODE |= H2SED(SED1356_CRT_DISP_BLANK);
+
+        // Set the SED1356 to LCD Mode
+        SED1356_REG_DISP_MODE = H2SED(SED1356_DISP_SWIV_NORM | 
+                                      SED1356_DISP_MODE_LCD);
+
+        // Turn on the LCD
+        SED1356_REG_LCD_DISP_MODE_and_MISC &= ~H2SED(SED1356_LCD_DISP_BLANK);
+        sed_lcd_bkl(0xff);    // turn the LCD backlight on/full brightness
+    } // else LCD Mode
+}
+
+//--------------------------------------------------------------------------
+// sed_lcd_bkl()
+//
+// This function turns on the LCD backlight connected to GPIO1.  This is
+// not used if the board has a different method of controlling the
+// backlight.  Since the Sed has only a single GPIO bit and no way
+// to modulate it, we use any non-zero value of bright to turn it on.
+//
+static void 
+sed_lcd_bkl(uchar bright)
+{
+    // Any non-zero value for bright means on
+    if (bright) 
+        SED1356_BKL_ON;
+    else 
+        SED1356_BKL_OFF;
+
+}
+
+//--------------------------------------------------------------------------
+// sed135x_off
+//
+// This function turns off the SED1356 LCD and/or CRT and the display
+// fifo.  It can also turn off the clocks if mode is true, thus allowing
+// the programmable clock generator to be changed.
+//
+static void 
+sed135x_off(void)
+{
+    SED1356_REG_DISP_MODE = H2SED(SED1356_DISP_SWIV_NORM | 
+                                  SED1356_DISP_MODE_OFF);
+    sed_lcd_bkl(0);  // turn the LCD backlight off
+}
+
+//--------------------------------------------------------------------------
+// sed135x_init
+//
+// This function sets up the sed1355 or sed1356 whichever is found
+//
+int 
+sed135x_init(int depth, struct lcd_info *lcd)
+{
+    vushort temp16;
+    int i;
+  
+    sed135x_ok = 0;
+    sed_disp_mode_crt = 0;  // assume LCD
+
+    if ((depth != 4) && (depth != 8) && (depth != 16)) {
+        diag_printf("Invalid depth: %d\n", depth);
+        return -1;
+    }
+
+    // enable host access
+    SED1356_REG_REV_and_MISC = 0x0000;
+
+    // Check the ID to make sure we even have a SED1356 installed
+    temp16 = SED1356_REG_REV_and_MISC & H2SED(SED1356_REV_ID_MASK);
+
+    if (temp16 != H2SED(SED1356_REV_ID_1356)){
+        diag_printf("SED1356 Not Found! SED_REG_REV = %04x.\n", temp16);
+        return -1;
+    }
+
+    // Disable the display
+    SED1356_REG_DISP_MODE = H2SED(SED1356_DISP_SWIV_NORM | 
+                                  SED1356_DISP_MODE_OFF);
+
+    // Test for the presence of a CRT
+    SED1356_REG_GPIO_CTL = 0x0000;                      // Disable Backlight 
+    SED1356_REG_GPIO_CFG = H2SED(SED1356_GPIO_GPIO1);  // GPIO1 Out, GPIO2 In
+    if (SED1356_CRT) sed_disp_mode_crt = 0; 
+    else sed_disp_mode_crt = 1;
+
+    // Enable Power Save Mode before we mess with the clocks
+    SED1356_REG_MEM_CFG_and_REF_RATE = H2SED(SED1356_REF_TYPE_SELF); // set dram to self refresh first
+    // shut off MCLK
+    SED1356_REG_PWR_CFG_and_STAT = H2SED(SED1356_PWR_MCLK);
+
+    // Wait until power is down - when MCLK bit goes true
+    while ((SED1356_REG_PWR_CFG_and_STAT & H2SED(SED1356_PWR_MCLK)) == 0){}
+
+    // Change the programmable clock generator to the desired timing
+    if (sed_disp_mode_crt) fs6377_init(SED_DISP_MODE_CRT);
+    else fs6377_init(SED_DISP_MODE_LCD);
+
+    // Re-enable Power
+    SED1356_REG_PWR_CFG_and_STAT = 0x0000;
+
+    // Common Control Registers
+    SED1356_REG_MCLK_CFG = H2SED(SED1356_MCLK_SRC_BCLK);
+    SED1356_REG_LCD_PCLK_CFG = H2SED(SED1356_PCLK_SRC_CLKI);
+    SED1356_REG_CRT_PCLK_CFG = H2SED(SED1356_PCLK_SRC_CLKI);
+    SED1356_REG_MEDIA_PCLK_CFG = 0x0000;
+    SED1356_REG_WAIT_STATE = H2SED(0x0001);
+    SED1356_REG_MEM_CFG_and_REF_RATE = H2SED(SED1356_MEM_CFG_2CAS_EDO | 
+                                             SED1356_REF_RATE_2048);
+    SED1356_REG_MEM_TMG0_and_1 = H2SED(SED1356_MEM_TMG0_EDO50_MCLK33 | 
+                                       SED1356_MEM_TMG1_EDO50_MCLK33);
+    SED1356_REG_PANEL_TYPE_and_MOD_RATE = H2SED(SED1356_PANEL_TYPE_16 | 
+                                                SED1356_PANEL_TYPE_CLR | 
+                                                SED1356_PANEL_TYPE_TFT);
+
+    // LCD Specific Registers
+    SED1356_REG_LCD_HOR_DISP = H2SED((PIXELS_PER_ROW/8) - 1);
+    SED1356_REG_LCD_HOR_NONDISP_and_START = H2SED(SED_HOR_NONDISP_LCD | 
+                                                  (SED_HOR_PULSE_START_LCD << 8));
+    SED1356_REG_LCD_HOR_PULSE = H2SED(SED1356_PULSE_WID(SED_HOR_PULSE_WIDTH_LCD) | 
+                                      SED1356_PULSE_POL_LOW);
+    SED1356_REG_LCD_VER_DISP_HT_LO_and_HI = H2SED((PIXELS_PER_COL - 1) & 0x3ff);
+    SED1356_REG_LCD_VER_NONDISP_and_START = H2SED(SED_VER_NONDISP_LCD | 
+                                                  (SED_VER_PULSE_START_LCD << 8));
+    SED1356_REG_LCD_VER_PULSE = H2SED(SED1356_PULSE_WID(SED_VER_PULSE_WIDTH_LCD) | 
+                                      SED1356_PULSE_POL_LOW);
+    switch (depth) {
+    case 4:  SED1356_REG_LCD_DISP_MODE_and_MISC = H2SED(SED1356_LCD_DISP_BLANK | 
+                                                        SED1356_LCD_DISP_SWIV_NORM | 
+                                                        SED1356_LCD_DISP_4BPP);  
+        break;
+    case 8:  SED1356_REG_LCD_DISP_MODE_and_MISC = H2SED(SED1356_LCD_DISP_BLANK | 
+                                                        SED1356_LCD_DISP_SWIV_NORM | 
+                                                        SED1356_LCD_DISP_8BPP);  
+        break;
+    default: SED1356_REG_LCD_DISP_MODE_and_MISC = H2SED(SED1356_LCD_DISP_BLANK | 
+                                                        SED1356_LCD_DISP_SWIV_NORM | 
+                                                        SED1356_LCD_DISP_16BPP); break;
+    }
+
+    SED1356_REG_LCD_DISP_START_LO_and_MID = 0x0000;
+    SED1356_REG_LCD_DISP_START_HI = 0x0000;
+    SED1356_REG_LCD_ADD_OFFSET_LO_and_HI = H2SED((SED_ROW_SIZE(depth) / 2) & 0x7ff);
+    SED1356_REG_LCD_PIXEL_PAN = 0x0000;
+    SED1356_REG_LCD_FIFO_THRESH_LO_and_HI = 0x0000;  // auto mode
+
+    // LCD Specific Registers
+    SED1356_REG_CRT_HOR_DISP = H2SED((PIXELS_PER_ROW/8) - 1);
+    SED1356_REG_CRT_HOR_NONDISP_and_START = H2SED(SED_HOR_NONDISP_CRT | 
+                                                  (SED_HOR_PULSE_START_CRT << 8));
+    SED1356_REG_CRT_HOR_PULSE = H2SED(SED1356_PULSE_WID(SED_HOR_PULSE_WIDTH_CRT) | 
+                                      SED1356_PULSE_POL_LOW);
+    SED1356_REG_CRT_VER_DISP_HT_LO_and_HI = H2SED((PIXELS_PER_COL - 1) & 0x3ff);
+    SED1356_REG_CRT_VER_NONDISP_and_START = H2SED(SED_VER_NONDISP_CRT | 
+                                                  (SED_VER_PULSE_START_CRT << 8));
+    SED1356_REG_CRT_VER_PULSE_and_OUT_CTL = H2SED(SED1356_PULSE_WID(SED_VER_PULSE_WIDTH_CRT) | 
+                                                  SED1356_PULSE_POL_LOW | SED1356_CRT_OUT_DAC_LVL);
+    switch (depth) {
+    case 4:  SED1356_REG_CRT_DISP_MODE = H2SED(SED1356_CRT_DISP_BLANK | 
+                                               SED1356_CRT_DISP_4BPP);  
+        break;
+    case 8:  SED1356_REG_CRT_DISP_MODE = H2SED(SED1356_CRT_DISP_BLANK | 
+                                               SED1356_CRT_DISP_8BPP);  
+        break;
+    default: SED1356_REG_CRT_DISP_MODE = H2SED(SED1356_CRT_DISP_BLANK | 
+                                               SED1356_CRT_DISP_16BPP); 
+        break;
+    }
+
+
+    SED1356_REG_CRT_DISP_START_LO_and_MID = 0x0000;
+    SED1356_REG_CRT_DISP_START_HI = 0x0000;
+    SED1356_REG_CRT_ADD_OFFSET_LO_and_HI = H2SED((SED_ROW_SIZE(depth) / 2) & 0x7ff);
+    SED1356_REG_CRT_PIXEL_PAN = 0x0000;
+    SED1356_REG_CRT_FIFO_THRESH_LO_and_HI = 0x0000;  // auto mode
+
+    // Disable Cursor
+    SED1356_REG_LCD_CURSOR_CTL_and_START_ADD = 0x0000;
+    SED1356_REG_CRT_CURSOR_CTL_and_START_ADD = 0x0000;
+
+    // Disable BitBlt
+    SED1356_REG_BLT_CTL_0_and_1 = 0x0000;
+    SED1356_REG_BLT_ROP_CODE_and_BLT_OP = 0x0000;
+    SED1356_REG_BLT_SRC_START_LO_and_MID = 0x0000;
+    SED1356_REG_BLT_SRC_START_HI = 0x0000;
+    SED1356_REG_BLT_DEST_START_LO_and_MID = 0x0000;
+    SED1356_REG_BLT_DEST_START_HI = 0x0000;
+    SED1356_REG_BLT_ADD_OFFSET_LO_and_HI = 0x0000;
+    SED1356_REG_BLT_WID_LO_and_HI = 0x0000;
+    SED1356_REG_BLT_HGT_LO_and_HI = 0x0000;
+    SED1356_REG_BLT_BG_CLR_LO_and_HI = 0x0000;
+    SED1356_REG_BLT_FG_CLR_LO_and_HI = 0x0000;
+
+    // Fill the LUT, write to both LCD and CRT luts simultaneously
+    SED1356_REG_LUT_MODE = 0x0000;
+    for (i = 0; i < 256; i++){
+
+        SED1356_REG_LUT_ADD = H2SED(i);
+        SED1356_REG_LUT_DATA = H2SED(sed_lut_16bit[i][0]);  // red
+        SED1356_REG_LUT_DATA = H2SED(sed_lut_16bit[i][1]);  // green
+        SED1356_REG_LUT_DATA = H2SED(sed_lut_16bit[i][2]);  // blue
+    }
+
+    // Disable Power Save Mode
+    SED1356_REG_PWR_CFG_and_STAT = 0x0000;
+
+    // Set Watchdog               
+//  SED1356_REG_WATCHDOG_CTL = 0x0000;
+
+    // Device found & initialized
+    sed135x_ok = 1;
+
+    // turn on the display
+    sed135x_on();
+
+    // Fill in the info structure
+    lcd->height = 480;            // FIXME
+    lcd->width = 640;             // FIXME
+    lcd->bpp = depth;
+    lcd->type = FB_TRUE_RGB565;
+    lcd->rlen = (640*2*2);        // FIXME
+    lcd->access_size = 2;         // Framebuffer fixed at 16 bit access
+    lcd->stride = 4;              // Only on "odd" 16 byte chunks
+    lcd->fb = SED_GET_PHYS_ADD(0);
+    lcd->on = sed135x_on;
+    lcd->off = sed135x_off;
+
+    return 0;
+}
+
+//--------------------------------------------------------------------------
+// sed_pwr_dn()
+static void 
+sed_pwr_dn(void)
+{
+
+    // Enable Host Access
+    SED1356_REG_REV_and_MISC = 0x0000;
+
+    // Disable the display
+    SED1356_REG_DISP_MODE = H2SED(SED1356_DISP_MODE_OFF);
+
+    // Enable Power Save Mode
+    // set dram to self refresh first
+    SED1356_REG_MEM_CFG_and_REF_RATE = H2SED(SED1356_REF_TYPE_SELF);
+
+    // shut off MCLK
+    SED1356_REG_PWR_CFG_and_STAT = H2SED(SED1356_PWR_MCLK);
+
+    // Wait until power is down - when MCLK bit goes true
+    while ((SED1356_REG_PWR_CFG_and_STAT & H2SED(SED1356_PWR_MCLK)) == 0){}
+}
+
+


-- 
------------------------------------------------------------
Gary Thomas                 |
MLB Associates              |  Consulting for the
+1 (970) 229-1963           |    Embedded world
http://www.mlbassoc.com/    |
email: <gary@mlbassoc.com>  |
gpg: http://www.chez-thomas.org/gary/gpg_key.asc
------------------------------------------------------------


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]