]> Dogcows Code - chaz/openbox/commitdiff
Merge branch 'backport' into work
authorMikael Magnusson <mikachu@comhem.se>
Thu, 14 Feb 2008 09:51:35 +0000 (10:51 +0100)
committerMikael Magnusson <mikachu@comhem.se>
Thu, 14 Feb 2008 18:43:02 +0000 (19:43 +0100)
Diffing against the old work branch where most of the changes
in backport were cherry-picked from indicates this should be
alright. (0de9097017d4d1991388a35e380a57dc1135b431)

21 files changed:
HACKING
data/autostart.sh
data/rc.xml
data/rc.xsd
m4/openbox.m4
openbox/actions.c
openbox/client.c
openbox/config.c
openbox/config.h
openbox/event.c
openbox/geom.h
openbox/menuframe.c
openbox/mouse.c
po/nl.po
render/font.c
render/gradient.c
render/icon.h
render/test.c
render/theme.c
render/theme.h
tools/xdg-autostart/xdg-autostart

diff --git a/HACKING b/HACKING
index dab0aad826eb392054232170d5b3bc1553d17b66..e450bba39e8f5a0a3b351b1e09bf1197c1d8e914 100644 (file)
--- a/HACKING
+++ b/HACKING
@@ -27,8 +27,7 @@ not all, guidelines:
    lines
  * most other constructs should have braces on the same line as the
    statement
+ * else appears on a new line, just like an if
  * when in doubt look at the rest of the source
  * vim users can use "set expandtab tabstop=4 shiftwidth=4
    softtabstop=4" for some of this
-
-
index ab5428417cd1394a5729d6f7a00876935b592360..5306326258b9b087109afbfb8c2037a88eb0905e 100644 (file)
@@ -22,7 +22,9 @@ if which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS"; then
 fi
 
 # Make GTK apps look and behave how they were set up in the gnome config tools
-if which gnome-settings-daemon >/dev/null; then
+if which /usr/libexec/gnome-settings-daemon >/dev/null; then
+  /usr/libexec/gnome-settings-daemon &
+elif which gnome-settings-daemon >/dev/null; then
   gnome-settings-daemon &
 fi
 
@@ -34,6 +36,6 @@ fi
 # Run XDG autostart things.  By default don't run anything desktop-specific
 # See xdg-autostart --help more info
 DESKTOP_ENV=""
-if which xdg-autostart; then
+if which xdg-autostart >/dev/null; then
   xdg-autostart $DESKTOP_ENV
 fi
index ef3d9bdc9f3efe8979b6a92ed6c7ba9764c9a64d..f223f67889522ec7894268f8fc7919d5e41960f7 100644 (file)
 
   <application name="first element of window's WM_CLASS property (see xprop)"
               class="second element of window's WM_CLASS property (see xprop)"
-               role="the window's WM_WINDOW_ROLE property (see xprop)">
+               role="the window's WM_WINDOW_ROLE property (see xprop)"
+               type="the window's _NET_WM_WINDOW_TYPE (if unspecified, then
+                       it is dialog for child windows)">
   # the name or the class can be set, or both. this is used to match
   # windows when they appear. role can optionally be set as well, to
   # further restrict your matches.
   # used by a shell. you can use * to match any characters and ? to match
   # any single character.
 
+  # the type is one of: normal, dialog, splash, utility, menu, toolbar, dock,
+  #    or desktop
+
   # when multiple rules match a window, they will all be applied, in the
   # order that they appear in this list
 
index 47eeed12958d87a1e9580765dc399866c9417c89..de227ea174b928403f2035ec2526902919c73384 100644 (file)
         <xsd:element minOccurs="0" name="skip_taskbar" type="ob:bool"/>
         <xsd:element minOccurs="0" name="fullscreen" type="ob:bool"/>
         <xsd:element minOccurs="0" name="maximized" type="ob:maximization"/>
+        <xsd:attribute name="role" type="xsd:string"/>
+        <xsd:attribute name="type" type="ob:clienttype"/>
         <!-- at least one of these must be present -->
         <xsd:attribute name="name" type="xsd:string"/>
         <xsd:attribute name="class" type="xsd:string"/>
-        <xsd:attribute name="role" type="xsd:string"/>
     </xsd:complexType>
     <xsd:complexType name="applications">
         <xsd:element minOccurs="0" maxOccurs="unbounded" name="application" type="ob:application"/>
             <xsd:enumeration value="Unshade"/>
         </xsd:restriction>
     </xsd:simpleType>
+    <xsd:simpleType name="clienttype">
+        <xsd:restriction base="xsd:string">
+            <xsd:enumeration value="desktop"/>
+            <xsd:enumeration value="dock"/>
+            <xsd:enumeration value="toolbar"/>
+            <xsd:enumeration value="menu"/>
+            <xsd:enumeration value="splash"/>
+            <xsd:enumeration value="utility"/>
+            <xsd:enumeration value="dialog"/>
+            <xsd:enumeration value="normal"/>
+        </xsd:restriction>
+    </xsd:simpleType>
     <xsd:simpleType name="bool">
         <!-- this is copied to maximization.  Keep that in sync. -->
         <xsd:restriction base="xsd:string">
index 18e271788a1d969da9d7ce5380a7a33c66a4df10..5a95e8465bcf0f296148ad1c9e7cafe5f5ac8d41 100644 (file)
@@ -10,14 +10,23 @@ AC_DEFUN([OB_DEBUG],
     AC_ARG_ENABLE([strict-ansi],
     AC_HELP_STRING([--enable-strict-ansi],[Enable strict ANSI compliance build [[default=no]]]),
     [STRICT=$enableval], [STRICT="no"])
-    if test "$GCC" = "yes" && test "$STRICT" = "yes"; then
-       CFLAGS="$CFLAGS -ansi -pedantic -D_XOPEN_SOURCE"
-    fi
 
     AC_ARG_ENABLE([debug],
     AC_HELP_STRING([--enable-debug],[build a debug version [[default=no]]]),
     [DEBUG=$enableval], [DEBUG="no"])
 
+    AC_ARG_ENABLE([gprof],
+    AC_HELP_STRING([--enable-gprof],[Enable gprof profiling output [[default=no]]]),
+    [PROF=$enableval], [PROF="no"])
+
+    AC_ARG_ENABLE([gprof-libc],
+    AC_HELP_STRING([--enable-gprof-libc],[Link against libc with profiling support [[default=no]]]),
+    [PROFLC=$enableval], [PROFLC="no"])
+
+    if test "$PROFLC" = "yes"; then
+        PROF="yes" # always enable profiling then
+    fi
+
     TEST=""
     test "${PACKAGE_VERSION%*alpha*}" != "$PACKAGE_VERSION" && TEST="yes"
     test "${PACKAGE_VERSION%*beta*}" != "$PACKAGE_VERSION" && TEST="yes"
@@ -52,6 +61,7 @@ AC_DEFUN([OB_COMPILER_FLAGS],
     AC_REQUIRE([AC_PROG_CC])
 
     FLAGS=""
+    L=""
 
     if test "$DEBUG" = "yes"; then
         FLAGS="-DDEBUG"
@@ -73,11 +83,18 @@ AC_DEFUN([OB_COMPILER_FLAGS],
        if test "$STRICT" = "yes"; then
            FLAGS="$FLAGS -ansi -pedantic -D_XOPEN_SOURCE"
        fi
+       if test "$PROF" = "yes"; then
+           FLAGS="$FLAGS -pg -fno-inline"
+       fi
+       if test "$PROFLC" = "yes"; then
+           L="$L -lc_p -lm_p"
+       fi
        FLAGS="$FLAGS -fno-strict-aliasing"
     fi
     AC_MSG_CHECKING([for compiler specific flags])
     AC_MSG_RESULT([$FLAGS])
     CFLAGS="$CFLAGS $FLAGS"
+    LIBS="$LIBS $L"
 ])
 
 AC_DEFUN([OB_NLS],
index 11581af6b199d94900b082cf739de86b9a964253..5bd70139d735aed9738c7af26c55e69e2f1ec14d 100644 (file)
@@ -345,8 +345,14 @@ void actions_client_move(ObActionsData *data, gboolean start)
                that moves windows our from under the cursor, the enter
                event will come as a GrabNotify which is ignored, so this
                makes a fake enter event
+
+               don't do this if there is a grab on the pointer.  enter events
+               are ignored during a grab, so don't force fake ones when they
+               should be ignored
             */
-            if ((c = client_under_pointer()) && c != data->client) {
+            if ((c = client_under_pointer()) && c != data->client &&
+                !grab_on_pointer())
+            {
                 ob_debug_type(OB_DEBUG_FOCUS,
                               "Generating fake enter because we did a "
                               "mouse-event action");
index c7a82d16e8c1969b00bce69f7f60bb06c0275f5a..946e80d33dabdbe6e6e3f27343e0bca38d14f179 100644 (file)
@@ -779,13 +779,15 @@ static ObAppSettings *client_get_settings_state(ObClient *self)
             !g_pattern_match(app->name, strlen(self->name), self->name, NULL))
             match = FALSE;
         else if (app->class &&
-                !g_pattern_match(app->class,
-                                 strlen(self->class), self->class, NULL))
+                 !g_pattern_match(app->class,
+                                  strlen(self->class), self->class, NULL))
             match = FALSE;
         else if (app->role &&
                  !g_pattern_match(app->role,
                                   strlen(self->role), self->role, NULL))
             match = FALSE;
+        else if ((signed)app->type >= 0 && app->type != self->type)
+            match = FALSE;
 
         if (match) {
             ob_debug("Window matching: %s", app->name);
index a268eb5b82e003144764f51c070fe389f363efd5..b5b4ef4e2dad4dbbd86241e82312c8b1233fe5b5 100644 (file)
@@ -100,6 +100,7 @@ GSList *config_per_app_settings;
 ObAppSettings* config_create_app_settings(void)
 {
     ObAppSettings *settings = g_new0(ObAppSettings, 1);
+    settings->type = -1;
     settings->decor = -1;
     settings->shade = -1;
     settings->monitor = -1;
@@ -123,6 +124,7 @@ void config_app_settings_copy_non_defaults(const ObAppSettings *src,
     g_assert(src != NULL);
     g_assert(dst != NULL);
 
+    copy_if(type, -1);
     copy_if(decor, -1);
     copy_if(shade, -1);
     copy_if(focus, -1);
@@ -190,15 +192,16 @@ static void config_parse_gravity_coord(xmlNodePtr node, GravityCoord *c)
 static void parse_per_app_settings(xmlNodePtr node, gpointer d)
 {
     xmlNodePtr app = obt_parse_find_node(node->children, "application");
-    gchar *name = NULL, *class = NULL, *role = NULL;
-    gboolean name_set, class_set;
+    gchar *name = NULL, *class = NULL, *role = NULL, *type = NULL;
+    gboolean name_set, class_set, type_set;
     gboolean x_pos_given;
 
     while (app) {
-        name_set = class_set = x_pos_given = FALSE;
+        name_set = class_set = type_set = x_pos_given = FALSE;
 
         class_set = obt_parse_attr_string(app, "class", &class);
         name_set = obt_parse_attr_string(app, "name", &name);
+        type_set = obt_parse_attr_string(app, "type", &type);
         if (class_set || name_set) {
             xmlNodePtr n, c;
             ObAppSettings *settings = config_create_app_settings();;
@@ -209,6 +212,25 @@ static void parse_per_app_settings(xmlNodePtr node, gpointer d)
             if (class_set)
                 settings->class = g_pattern_spec_new(class);
 
+            if (type_set) {
+                if (!g_ascii_strcasecmp(type, "normal"))
+                    settings->type = OB_CLIENT_TYPE_NORMAL;
+                else if (!g_ascii_strcasecmp(type, "dialog"))
+                    settings->type = OB_CLIENT_TYPE_DIALOG;
+                else if (!g_ascii_strcasecmp(type, "splash"))
+                    settings->type = OB_CLIENT_TYPE_SPLASH;
+                else if (!g_ascii_strcasecmp(type, "utility"))
+                    settings->type = OB_CLIENT_TYPE_UTILITY;
+                else if (!g_ascii_strcasecmp(type, "menu"))
+                    settings->type = OB_CLIENT_TYPE_MENU;
+                else if (!g_ascii_strcasecmp(type, "toolbar"))
+                    settings->type = OB_CLIENT_TYPE_TOOLBAR;
+                else if (!g_ascii_strcasecmp(type, "dock"))
+                    settings->type = OB_CLIENT_TYPE_DOCK;
+                else if (!g_ascii_strcasecmp(type, "desktop"))
+                    settings->type = OB_CLIENT_TYPE_DESKTOP;
+            }
+
             if (obt_parse_attr_string(app, "role", &role))
                 settings->role = g_pattern_spec_new(role);
 
@@ -662,6 +684,11 @@ static void parse_resize(xmlNodePtr node, gpointer d)
                 if ((n2 = obt_parse_find_node(n->children, "y")))
                     config_parse_gravity_coord(n2,
                                                &config_resize_popup_fixed.y);
+
+                config_resize_popup_fixed.x.pos =
+                    MAX(config_resize_popup_fixed.x.pos, 0);
+                config_resize_popup_fixed.y.pos =
+                    MAX(config_resize_popup_fixed.y.pos, 0);
             }
         }
     }
index cf9eb43efb2489e45148922ba2a6af3824a8494e..1f4ae326d3e1d0f41670ab9b30bf6605c1a5ddaa 100644 (file)
@@ -23,6 +23,7 @@
 #include "misc.h"
 #include "stacking.h"
 #include "place.h"
+#include "client.h"
 #include "geom.h"
 #include "moveresize.h"
 #include "render/render.h"
@@ -37,6 +38,7 @@ struct _ObAppSettings
     GPatternSpec *class;
     GPatternSpec *name;
     GPatternSpec *role;
+    ObClientType  type;
 
     GravityPoint position;
     gboolean pos_given;
index cedac2e3f29e28d758494f8bc197e3e7905239f4..9502edf51e43e806ab5794428992799b2d2b0d3c 100644 (file)
@@ -1369,7 +1369,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
                 ob_debug_type(OB_DEBUG_APP_BUGS,
                               "_NET_ACTIVE_WINDOW message for window %s is "
                               "missing source indication");
-            client_activate(client, FALSE, TRUE, TRUE,
+            client_activate(client, TRUE, TRUE, TRUE,
                             (e->xclient.data.l[0] == 0 ||
                              e->xclient.data.l[0] == 2));
         } else if (msgtype == OBT_PROP_ATOM(NET_WM_MOVERESIZE)) {
index bdcd3c55ba416a417e64187ff76cbddf2157be64..7c5ee32e31047643cbe0544072f0f419d3874967 100644 (file)
@@ -23,7 +23,7 @@
 #include <glib.h>
 
 typedef struct _GravityCoord {
-    int pos;
+    gint pos;
     gboolean center;
     gboolean opposite;
 } GravityCoord;
index c25e485f06c6c94d5eab803de7d213fe8f61e1cd..730f23f7c00307567e19dcf0650d6776d5236793 100644 (file)
@@ -254,23 +254,24 @@ static void menu_frame_place_topmenu(ObMenuFrame *self, gint *x, gint *y)
 
 static void menu_frame_place_submenu(ObMenuFrame *self, gint *x, gint *y)
 {
-    gint overlap;
+    gint overlapx, overlapy;
     gint bwidth;
 
-    overlap = ob_rr_theme->menu_overlap;
+    overlapx = ob_rr_theme->menu_overlap_x;
+    overlapy = ob_rr_theme->menu_overlap_y;
     bwidth = ob_rr_theme->mbwidth;
 
     if (self->direction_right)
         *x = self->parent->area.x + self->parent->area.width -
-            overlap - bwidth;
+            overlapx - bwidth;
     else
-        *x = self->parent->area.x - self->area.width + overlap + bwidth;
+        *x = self->parent->area.x - self->area.width + overlapx + bwidth;
 
     *y = self->parent->area.y + self->parent_entry->area.y;
     if (config_menu_middle)
         *y -= (self->area.height - (bwidth * 2) - ITEM_HEIGHT) / 2;
     else
-        *y += overlap;
+        *y += overlapy;
 }
 
 void menu_frame_move_on_screen(ObMenuFrame *self, gint x, gint y,
index 071a23b2ecb5e146e003a415572d4ea88559eac8..ae9a6fc299b88a6877e53efeb470e504dab711c5 100644 (file)
@@ -45,7 +45,7 @@ typedef struct {
 
 /* Array of GSList*s of ObMouseBinding*s. */
 static GSList *bound_contexts[OB_FRAME_NUM_CONTEXTS];
-/* TRUE when we have a grab on the pointer and need to reply the pointer event
+/* TRUE when we have a grab on the pointer and need to replay the pointer event
    to send it to other applications */
 static gboolean replay_pointer_needed;
 
index ec779726c5379e2bbcbca0a0216ff31f822a0d46..70ec7014434a35a69325faecd5b064d30bd4afae 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -3,14 +3,15 @@
 # This file is distributed under the same license as the openbox package.
 # Mark Pustjens <pustjens@dds.nl>, 2007.
 # Jochem Kossen <jkossen@xs4all.nl>, 2007.
+# Marvin Vek, 2008
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Openbox 3.4.3\n"
+"Project-Id-Version: Openbox 3.4.6.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n"
 "POT-Creation-Date: 2008-02-02 11:51-0500\n"
 "PO-Revision-Date: 2007-07-12 13:01+0200\n"
-"Last-Translator: Jochem Kossen <jkossen@xs4all.nl>\n"
+"Last-Translator: Marvin Vek\n"
 "Language-Team: Dutch <nl@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -33,11 +34,11 @@ msgstr "Uitvoeren van '%s' mislukt: %s"
 
 #: openbox/client.c:1988 openbox/client.c:2020
 msgid "Killing..."
-msgstr ""
+msgstr "Termineren..."
 
 #: openbox/client.c:1990 openbox/client.c:2022
 msgid "Not Responding"
-msgstr ""
+msgstr "Reageert Niet"
 
 #: openbox/client_list_combined_menu.c:91 openbox/client_list_menu.c:94
 msgid "Go there..."
@@ -232,7 +233,7 @@ msgstr "  --replace           Vervang de huidig draaiende window manager\n"
 
 #: openbox/openbox.c:502
 msgid "  --config-file FILE  Specify the path to the config file to use\n"
-msgstr ""
+msgstr "  --config-file FILE  Specificeer het pad naar het te gebruiken configuratiebestand\n"
 
 #: openbox/openbox.c:503
 msgid "  --sm-disable        Disable connection to the session manager\n"
@@ -256,7 +257,7 @@ msgstr "  --restart           Herstart Openbox\n"
 
 #: openbox/openbox.c:507
 msgid "  --exit              Exit Openbox\n"
-msgstr ""
+msgstr "  --exit              Openbox afsluiten\n"
 
 #: openbox/openbox.c:508
 msgid ""
@@ -293,7 +294,7 @@ msgstr ""
 
 #: openbox/openbox.c:583
 msgid "--config-file requires an argument\n"
-msgstr ""
+msgstr "--config-file vereist een argument\n"
 
 #: openbox/openbox.c:626
 #, c-format
@@ -321,6 +322,8 @@ msgid ""
 "Openbox is configured for %d desktops, but the current session has %d.  "
 "Overriding the Openbox configuration."
 msgstr ""
+"Openbox is geconfigureerd voor %d bureaubladen, maar de huidige sessie heeft %d.  "
+"Overnemen van de Openbox configuratie."
 
 #: openbox/screen.c:1169
 #, c-format
index 5ccfb8fd2850f6267025b58f57c0a2ec69a5f0ec..583c9f7d7af277b2986429a4036fabc38500f907 100644 (file)
@@ -285,9 +285,20 @@ void RrFontDraw(XftDraw *d, RrTextureText *t, RrRect *area)
     }
 
     if (t->shadow_offset_x || t->shadow_offset_y) {
-        c.color.red = t->shadow_color->r | t->shadow_color->r << 8;
-        c.color.green = t->shadow_color->g | t->shadow_color->g << 8;
-        c.color.blue = t->shadow_color->b | t->shadow_color->b << 8;
+        /* From nvidia's readme (chapter 23):
+
+           When rendering to a 32-bit window, keep in mind that the X RENDER
+           extension, used by most composite managers, expects "premultiplied
+           alpha" colors. This means that if your color has components (r,g,b)
+           and alpha value a, then you must render (a*r, a*g, a*b, a) into the
+           target window.
+        */
+        c.color.red = (t->shadow_color->r | t->shadow_color->r << 8) *
+            t->shadow_alpha / 255;
+        c.color.green = (t->shadow_color->g | t->shadow_color->g << 8) *
+            t->shadow_alpha / 255;
+        c.color.blue = (t->shadow_color->b | t->shadow_color->b << 8) *
+            t->shadow_alpha / 255;
         c.color.alpha = 0xffff * t->shadow_alpha / 255;
         c.pixel = t->shadow_color->pixel;
 
index 6439b301b9bd1d32b4494cdeb1bb7a86698be51d..fc75047f3a570b3f266025fb1c30206893bac1bc 100644 (file)
@@ -197,6 +197,74 @@ static void create_bevel_colors(RrAppearance *l)
     l->surface.bevel_dark = RrColorNew(l->inst, r, g, b);
 }
 
+/*! Repeat the first pixel over the entire block of memory
+  @param start The block of memory. start[0] will be copied
+         to the rest of the block.
+  @param w The width of the block of memory (including the already-set first
+           element
+*/
+static inline void repeat_pixel(RrPixel32 *start, gint w)
+{
+    gint x;
+    RrPixel32 *dest;
+
+    dest = start + 1;
+
+    /* for really small things, just copy ourselves */
+    if (w < 8) {
+        for (x = w-1; x > 0; --x)
+            *(dest++) = *start;
+    }
+
+    /* for >= 8, then use O(log n) memcpy's... */
+    else {
+        gchar *cdest;
+        gint lenbytes;
+
+        /* copy the first 3 * 32 bits (3 words) ourselves - then we have
+           3 + the original 1 = 4 words to make copies of at a time
+
+           this is faster than doing memcpy for 1 or 2 words at a time
+        */
+        for (x = 3; x > 0; --x)
+            *(dest++) = *start;
+
+        /* cdest is a pointer to the pixel data that is typed char* so that
+           adding 1 to its position moves it only one byte
+
+           lenbytes is the amount of bytes that we will be copying each
+           iteration.  this doubles each time through the loop.
+
+           x is the number of bytes left to copy into.  lenbytes will alwaysa
+           be bounded by x
+
+           this loop will run O(log n) times (n is the number of bytes we
+           need to copy into), since the size of the copy is doubled each
+           iteration.  it seems that gcc does some nice optimizations to make
+           this memcpy very fast on hardware with support for vector operations
+           such as mmx or see.  here is an idea of the kind of speed up we are
+           getting by doing this (splitvertical3 switches from doing
+           "*(data++) = color" n times to doing this memcpy thing log n times:
+
+           %   cumulative   self              self     total           
+           time   seconds   seconds    calls  ms/call  ms/call  name    
+           49.44      0.88     0.88     1063     0.83     0.83  splitvertical1
+           47.19      1.72     0.84     1063     0.79     0.79  splitvertical2
+            2.81      1.77     0.05     1063     0.05     0.05  splitvertical3
+        */
+        cdest = (gchar*)dest;
+        lenbytes = 4 * sizeof(RrPixel32);
+        for (x = (w - 4) * sizeof(RrPixel32); x > 0;) {
+            memcpy(cdest, start, lenbytes);
+            x -= lenbytes;
+            cdest += lenbytes;
+            lenbytes <<= 1;
+            if (lenbytes > x)
+                lenbytes = x;
+        }
+    }
+}
+
 static void gradient_parentrelative(RrAppearance *a, gint w, gint h)
 {
     RrPixel32 *source, *dest;
@@ -423,10 +491,9 @@ static void gradient_solid(RrAppearance *l, gint w, gint h)
 
 static void gradient_splitvertical(RrAppearance *a, gint w, gint h)
 {
-    gint x, y1, y2, y3;
+    gint y1, y2, y3;
     RrSurface *sf = &a->surface;
-    RrPixel32 *data = sf->pixel_data;
-    RrPixel32 current;
+    RrPixel32 *data;
     gint y1sz, y2sz, y3sz;
 
     VARS(y1);
@@ -455,39 +522,48 @@ static void gradient_splitvertical(RrAppearance *a, gint w, gint h)
     }
     SETUP(y3, sf->secondary, sf->split_secondary,  y3sz);
 
-    for (y1 = y1sz; y1 > 0; --y1) {
-        current = COLOR(y1);
-        for (x = w - 1; x >= 0; --x)
-            *(data++) = current;
+    /* find the color for the first pixel of each row first */
+    data = sf->pixel_data;
 
+    for (y1 = y1sz-1; y1 > 0; --y1) {
+        *data = COLOR(y1);
+        data += w;
         NEXT(y1);
     }
-
-    for (y2 = y2sz; y2 > 0; --y2) {
-        current = COLOR(y2);
-        for (x = w - 1; x >= 0; --x)
-            *(data++) = current;
-
+    *data = COLOR(y1);
+    data += w;
+    for (y2 = y2sz-1; y2 > 0; --y2) {
+        *data = COLOR(y2);
+        data += w;
         NEXT(y2);
     }
-
-    for (y3 = y3sz; y3 > 0; --y3) {
-        current = COLOR(y3);
-        for (x = w - 1; x >= 0; --x)
-            *(data++) = current;
-
+    *data = COLOR(y2);
+    data += w;
+    for (y3 = y3sz-1; y3 > 0; --y3) {
+        *data = COLOR(y3);
+        data += w;
         NEXT(y3);
     }
+    *data = COLOR(y3);
+
+    /* copy the first pixels into the whole rows */
+    data = sf->pixel_data;
+    for (y1 = h; y1 > 0; --y1) {
+        repeat_pixel(data, w);
+        data += w;
+    }
 }
 
 static void gradient_horizontal(RrSurface *sf, gint w, gint h)
 {
-    gint x, y;
+    gint x, y, cpbytes;
     RrPixel32 *data = sf->pixel_data, *datav;
+    gchar *datac;
 
     VARS(x);
     SETUP(x, sf->primary, sf->secondary, w);
 
+    /* set the color values for the first row */
     datav = data;
     for (x = w - 1; x > 0; --x) {  /* 0 -> w - 1 */
         *datav = COLOR(x);
@@ -497,22 +573,32 @@ static void gradient_horizontal(RrSurface *sf, gint w, gint h)
     *datav = COLOR(x);
     ++datav;
 
-    for (y = h - 1; y > 0; --y) { /* 1 -> h */
-        memcpy(datav, data, w * sizeof(RrPixel32));
-        datav += w;
+    /* copy the first row to the rest in O(logn) copies */
+    datac = (gchar*)datav;
+    cpbytes = 1 * w * sizeof(RrPixel32);
+    for (y = (h - 1) * w * sizeof(RrPixel32); y > 0;) {
+        memcpy(datac, data, cpbytes);
+        y -= cpbytes;
+        datac += cpbytes;
+        cpbytes <<= 1;
+        if (cpbytes > y)
+            cpbytes = y;
     }
 }
 
 static void gradient_mirrorhorizontal(RrSurface *sf, gint w, gint h)
 {
-    gint x, y, half1, half2;
+    gint x, y, half1, half2, cpbytes;
     RrPixel32 *data = sf->pixel_data, *datav;
+    gchar *datac;
 
     VARS(x);
 
     half1 = (w + 1) / 2;
     half2 = w / 2;
 
+    /* set the color values for the first row */
+
     SETUP(x, sf->primary, sf->secondary, half1);
     datav = data;
     for (x = half1 - 1; x > 0; --x) {  /* 0 -> half1 - 1 */
@@ -534,31 +620,43 @@ static void gradient_mirrorhorizontal(RrSurface *sf, gint w, gint h)
         ++datav;
     }
 
-    for (y = h - 1; y > 0; --y) {  /* 1 -> h */
-        memcpy(datav, data, w * sizeof(RrPixel32));
-        datav += w;
+    /* copy the first row to the rest in O(logn) copies */
+    datac = (gchar*)datav;
+    cpbytes = 1 * w * sizeof(RrPixel32);
+    for (y = (h - 1) * w * sizeof(RrPixel32); y > 0;) {
+        memcpy(datac, data, cpbytes);
+        y -= cpbytes;
+        datac += cpbytes;
+        cpbytes <<= 1;
+        if (cpbytes > y)
+            cpbytes = y;
     }
 }
 
 static void gradient_vertical(RrSurface *sf, gint w, gint h)
 {
-    gint x, y;
-    RrPixel32 *data = sf->pixel_data;
-    RrPixel32 current;
+    gint y;
+    RrPixel32 *data;
 
     VARS(y);
     SETUP(y, sf->primary, sf->secondary, h);
 
-    for (y = h - 1; y > 0; --y) {  /* 0 -> h-1 */
-        current = COLOR(y);
-        for (x = w - 1; x >= 0; --x)  /* 0 -> w */
-            *(data++) = current;
+    /* find the color for the first pixel of each row first */
+    data = sf->pixel_data;
 
+    for (y = h - 1; y > 0; --y) {  /* 0 -> h-1 */
+        *data = COLOR(y);
+        data += w;
         NEXT(y);
     }
-    current = COLOR(y);
-    for (x = w - 1; x >= 0; --x)  /* 0 -> w */
-        *(data++) = current;
+    *data = COLOR(y);
+
+    /* copy the first pixels into the whole rows */
+    data = sf->pixel_data;
+    for (y = h; y > 0; --y) {
+        repeat_pixel(data, w);
+        data += w;
+    }
 }
 
 
@@ -656,14 +754,13 @@ static void gradient_crossdiagonal(RrSurface *sf, gint w, gint h)
     *data = COLOR(x);
 }
 
-static void gradient_pyramid(RrSurface *sf, gint inw, gint inh)
+static void gradient_pyramid(RrSurface *sf, gint w, gint h)
 {
-    gint x, y, w = (inw >> 1) + 1, h = (inh >> 1) + 1;
-    RrPixel32 *data = sf->pixel_data;
-    RrPixel32 *end = data + inw*inh - 1;
-    RrPixel32 current;
+    RrPixel32 *ldata, *rdata;
+    RrPixel32 *cp;
     RrColor left, right;
     RrColor extracorner;
+    gint x, y, halfw, halfh, midx, midy;
 
     VARS(lefty);
     VARS(righty);
@@ -673,54 +770,64 @@ static void gradient_pyramid(RrSurface *sf, gint inw, gint inh)
     extracorner.g = (sf->primary->g + sf->secondary->g) / 2;
     extracorner.b = (sf->primary->b + sf->secondary->b) / 2;
 
-    SETUP(lefty, (&extracorner), sf->secondary, h);
-    SETUP(righty, sf->primary, (&extracorner), h);
+    halfw = w >> 1;
+    halfh = h >> 1;
+    midx = w - halfw - halfw; /* 0 or 1, depending if w is even or odd */
+    midy = h - halfh - halfh;   /* 0 or 1, depending if h is even or odd */
+
+    SETUP(lefty, sf->primary, (&extracorner), halfh + midy);
+    SETUP(righty, (&extracorner), sf->secondary, halfh + midy);
+
+    /* draw the top half
+
+       it is faster to draw both top quarters together than to draw one and
+       then copy it over to the other side.
+    */
+
+    ldata = sf->pixel_data;
+    rdata = ldata + w - 1;
+    for (y = halfh + midy; y > 0; --y) {  /* 0 -> (h+1)/2 */
+        RrPixel32 c;
 
-    for (y = h - 1; y > 0; --y) {  /* 0 -> h-1 */
         COLOR_RR(lefty, (&left));
         COLOR_RR(righty, (&right));
 
-        SETUP(x, (&left), (&right), w);
+        SETUP(x, (&left), (&right), halfw + midx);
 
-        for (x = w - 1; x > 0; --x) {  /* 0 -> w-1 */
-            current = COLOR(x);
-            *(data+x) = current;
-            *(data+inw-x) = current;
-            *(end-x) = current;
-            *(end-(inw-x)) = current;
+        for (x = halfw + midx - 1; x > 0; --x) {  /* 0 -> (w+1)/2 */
+            c = COLOR(x);
+            *(ldata++) = *(rdata--) = c;
 
             NEXT(x);
         }
-        current = COLOR(x);
-        *(data+x) = current;
-        *(data+inw-x) = current;
-        *(end-x) = current;
-        *(end-(inw-x)) = current;
-
-        data+=inw;
-        end-=inw;
+        c = COLOR(x);
+        *ldata = *rdata = c;
+        ldata += halfw + 1;
+        rdata += halfw - 1 + midx + w;
 
         NEXT(lefty);
         NEXT(righty);
     }
-    COLOR_RR(lefty, (&left));
-    COLOR_RR(righty, (&right));
 
-    SETUP(x, (&left), (&right), w);
+    /* copy the top half into the bottom half, mirroring it, so we can only
+       copy one row at a time
 
-    for (x = w - 1; x > 0; --x) {  /* 0 -> w-1 */
-        current = COLOR(x);
-        *(data+x) = current;
-        *(data+inw-x) = current;
-        *(end-x) = current;
-        *(end-(inw-x)) = current;
+       it is faster, to move the writing pointer forward, and the reading
+       pointer backward
 
-        NEXT(x);
+       this is the current code, moving the write pointer forward and read
+       pointer backward
+       41.78      4.26     1.78      504     3.53     3.53  gradient_pyramid2
+       this is the opposite, moving the read pointer forward and the write
+       pointer backward
+       42.27      4.40     1.86      504     3.69     3.69  gradient_pyramid2
+       
+    */
+    ldata = sf->pixel_data + (halfh - 1) * w;
+    cp = ldata + (midy + 1) * w;
+    for (y = halfh; y > 0; --y) {
+        memcpy(cp, ldata, w * sizeof(RrPixel32));
+        ldata -= w;
+        cp += w;
     }
-    current = COLOR(x);
-    *(data+x) = current;
-    *(data+inw-x) = current;
-    *(end-x) = current;
-    *(end-(inw-x)) = current;
 }
-
index 13eff8470419169975976fe6bd670baa5b676f35..f0b2d26799d19900f931f350a3ccdc474524edf6 100644 (file)
@@ -1,3 +1,5 @@
+/* GIMP RGBA C-Source image dump (icon.h) */
+
 /* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
 
    icon.h for the Openbox window manager
    See the COPYING file for a copy of the GNU General Public License.
 */
 
-/* GIMP RGBA C-Source image dump (icon.h) */
-
 #define OB_DEFAULT_ICON_WIDTH (48)
 #define OB_DEFAULT_ICON_HEIGHT (48)
 #define OB_DEFAULT_ICON_BYTES_PER_PIXEL (4) /* 3:RGB, 4:RGBA */
 #define OB_DEFAULT_ICON_COMMENT \
-  "To recreate this file, save an image as \"C-Source\" in The Gimp. " \
-   "Use \"ob_default_icon\" as the Prefixed Name. Enable Glib Types. " \
-   "Enable Save Alpha Channel. Enable Use Macros instead of Struct."
+  "To recreate this file, save an image as \"C-Source\" in The Gimp. Use \"ob_default_icon\" as the Prefixed Name. Enable Glib Types. Enable Save Alpha Channel. Enable Use Macros instead of Struct."
 #define OB_DEFAULT_ICON_PIXEL_DATA ((guint8*) OB_DEFAULT_ICON_pixel_data)
 static const guint8 OB_DEFAULT_ICON_pixel_data[48 * 48 * 4 + 1] =
+("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
@@ -36,406 +35,388 @@ static const guint8 OB_DEFAULT_ICON_pixel_data[48 * 48 * 4 + 1] =
  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\10"
- "\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373"
- "\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10"
- "\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10"
- "\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10"
- "\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373"
- "\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10"
- "\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10"
- "\10\373\10\10\10\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10"
- "\373\10\10\10\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22"
- "\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20"
- "\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373"
- "\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24"
- "\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22"
- "\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20"
- "\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373\20\22\24\373"
- "\20\22\24\373\23\26\32\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\20\22\24\373\277\324\347\373\277\325\347\373\277\324\347\373\277"
- "\324\347\373\277\324\347\373\277\324\347\373\277\324\347\373\277\324\347\373"
- "\277\324\347\373\277\324\347\373\277\324\347\373\277\324\347\373\277\324\347"
- "\373\277\325\347\373\277\324\347\373\300\324\347\373\277\324\347\373\277\324"
- "\347\373\277\324\347\373\277\324\347\373\300\324\347\373\277\324\347\373\277"
- "\324\347\373\277\324\347\373\277\324\347\373\277\324\347\373\277\324\347\373"
- "\277\324\347\373\277\324\347\373\277\324\347\373\277\324\347\373\300\324\347"
- "\373\277\324\347\373\277\324\347\373\277\324\347\373\277\324\347\373\277\325"
- "\347\373\277\324\347\373\277\324\347\373\277\324\347\373\20\22\24\373\10\10"
- "\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\20\22\24\373\277\323"
- "\347\373l\232\277\373n\232\277\373n\232\300\373n\232\300\373o\233\300\373"
- "o\233\300\373o\233\301\373o\235\301\373q\235\303\373q\235\303\373q\235\303"
- "\373r\236\304\373r\236\304\373t\236\304\373t\237\304\373t\237\305\373t\237"
- "\305\373u\237\305\373u\237\306\373u\241\306\373u\241\306\373w\241\307\373"
- "w\242\307\373y\242\307\373y\242\307\373y\242\310\373y\245\310\373z\245\311"
- "\373z\244\311\373z\245\311\373|\245\311\373|\245\313\373|\245\313\373}\247"
- "\313\373}\247\314\373}\247\314\373}\250\314\373\177\251\315\373t\232\277\373"
- "\20\22\24\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\20"
- "\22\24\373\277\323\346\373l\232\276\373l\230\277\373l\230\277\373n\232\277"
- "\373n\232\300\373n\233\300\373o\233\300\373o\233\301\373o\233\301\373o\233"
- "\301\373q\235\301\373q\235\303\373q\236\303\373r\236\303\373r\236\304\373"
- "r\237\304\373t\236\304\373t\237\305\373t\237\305\373t\241\305\373u\241\306"
- "\373u\241\306\373u\242\306\373w\241\306\373w\241\307\373w\242\307\373y\244"
- "\307\373y\244\310\373y\244\310\373y\245\310\373z\245\311\373z\244\311\373"
- "z\245\311\373|\247\313\373|\247\313\373|\245\313\373}\250\313\373}\250\314"
- "\373q\230\276\373\20\22\24\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\10\10\10\373\20\22\24\373\275\322\345\373l\227\276\373k\230\276\373l\230"
- "\276\373l\232\277\373l\230\277\373n\232\277\373n\233\300\373n\232\300\373"
- "n\232\300\373o\233\300\373o\233\301\373o\233\301\373q\233\301\373q\235\303"
- "\373q\235\303\373r\235\303\373r\236\304\373r\237\304\373r\237\304\373t\236"
- "\304\373t\237\305\373t\237\305\373u\237\305\373u\241\306\373u\241\306\373"
- "u\241\306\373w\242\307\373y\241\307\373w\244\307\373y\242\307\373y\244\310"
- "\373z\244\310\373y\244\310\373z\244\311\373z\245\311\373z\245\311\373|\245"
- "\313\373|\245\313\373o\230\275\373\20\22\24\373\10\10\10\373\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\10\10\10\373\17\22\24\373\273\322\344\373k\227\275\373"
- "k\227\275\373k\230\276\373k\227\276\373l\230\276\373l\232\277\373l\232\277"
- "\373n\232\277\373n\232\277\373n\232\300\373n\233\300\373o\232\300\373o\233"
- "\301\373o\233\301\373o\233\301\373q\235\303\373r\236\303\373q\235\303\373"
- "r\235\303\373r\236\304\373r\237\304\373r\237\304\373u\237\305\373t\237\305"
- "\373t\241\305\373u\237\306\373u\237\306\373w\241\306\373w\241\306\373w\242"
- "\307\373w\242\307\373w\242\307\373z\242\310\373y\244\310\373z\244\310\373"
- "y\244\310\373|\244\311\373z\245\311\373n\225\273\373\17\22\24\373\10\10\10"
- "\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\17\22\24\373\273\321\344"
- "\373k\227\275\373i\227\275\373k\227\275\373k\230\276\373k\227\276\373l\230"
- "\276\373l\230\276\373l\232\277\373l\232\277\373l\230\277\373n\232\277\373"
- "n\232\300\373n\233\300\373o\233\300\373o\233\301\373o\235\301\373o\235\301"
- "\373q\235\301\373r\235\303\373q\236\303\373r\235\303\373r\236\304\373r\236"
- "\304\373r\236\304\373t\237\304\373t\236\305\373t\237\305\373t\237\305\373"
- "w\241\306\373u\241\306\373u\241\306\373w\242\306\373w\242\307\373w\242\307"
- "\373w\244\307\373y\244\310\373y\244\310\373z\244\310\373l\225\272\373\17\22"
- "\24\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\17\22\24"
- "\373\272\321\343\373i\225\273\373i\225\273\373i\227\275\373k\225\275\373i"
- "\227\275\373k\227\275\373k\230\276\373l\230\276\373l\230\276\373l\230\276"
- "\373n\232\277\373l\230\277\373n\232\277\373n\232\300\373o\233\300\373o\233"
- "\300\373o\233\300\373o\233\301\373o\235\301\373o\233\301\373q\235\303\373"
- "r\235\303\373q\236\303\373r\236\303\373t\236\304\373r\236\304\373r\237\304"
- "\373t\237\304\373u\237\305\373t\237\305\373t\241\305\373u\241\306\373u\241"
- "\306\373w\241\306\373u\242\306\373w\242\307\373w\242\307\373w\242\307\373"
- "k\224\271\373\17\22\24\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\17\22\24\373\271\320\343\373h\224\272\373_\212\260\373_\212\260"
- "\373`\212\261\373`\212\261\373`\212\261\373`\212\261\373`\212\261\373`\214"
- "\261\373b\214\263\373b\214\263\373b\214\263\373b\214\263\373b\214\263\373"
- "c\214\263\373c\216\264\373e\216\264\373e\216\264\373c\216\264\373e\216\264"
- "\373e\216\264\373f\217\265\373f\217\265\373e\217\265\373f\217\265\373f\217"
- "\265\373f\217\265\373f\221\265\373f\217\266\373f\221\266\373h\221\266\373"
- "i\221\266\373h\221\266\373h\222\266\373h\222\270\373i\221\270\373i\222\270"
- "\373i\222\270\373i\222\270\373\17\22\24\373\10\10\10\373\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\10\10\10\373\17\21\24\373T\201\250\373T\201\250\373T\201\250"
- "\373T\201\250\373T\201\250\373T\201\250\373T\201\250\373T\201\250\373T\201"
- "\250\373T\201\250\373T\201\250\373T\201\250\373T\201\250\373T\201\250\373"
- "T\201\250\373T\201\250\373T\201\250\373T\201\250\373T\201\250\373T\201\250"
- "\373T\201\250\373T\201\250\373T\201\250\373T\201\250\373T\201\250\373T\201"
- "\250\373T\201\250\373T\201\250\373T\201\250\373T\201\250\373T\201\250\373"
- "T\201\250\373T\201\250\373T\201\250\373T\201\250\373T\201\250\373T\201\250"
- "\373T\201\250\373T\201\250\373T\201\250\373\17\21\24\373\10\10\10\373\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\17\21\24\373T\201\250\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373T\201"
- "\250\373\17\21\24\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10"
- "\373\17\21\24\373T\201\250\373\375\376\376\373\375\376\376\373\375\376\376"
- "\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376"
- "\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375"
- "\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373"
- "\375\376\376\373\375\376\376\373\375\375\376\373\375\375\376\373\375\375\376"
- "\373\375\376\376\373\375\375\376\373\375\375\376\373\375\376\376\373\375\375"
- "\376\373\375\375\376\373\375\376\376\373\375\375\376\373\375\375\376\373\375"
- "\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373"
- "\375\375\376\373\375\375\376\373T\201\250\373\17\21\24\373\10\10\10\373\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\17\21\24\373T\201\250\373\373"
- "\375\376\373\373\375\376\373\373\375\376\373\373\375\376\373\373\375\376\373"
- "\373\375\376\373\373\375\376\373\373\375\376\373\373\375\376\373\373\375\376"
- "\373\373\375\376\373\373\375\376\373\373\375\376\373\373\375\376\373\373\375"
- "\376\373\373\375\376\373\373\375\376\373\373\375\376\373\373\375\376\373\373"
- "\375\376\373\373\375\376\373\373\375\376\373\373\375\376\373\373\375\376\373"
- "\373\375\376\373\373\375\376\373\373\375\376\373\373\375\376\373\373\375\376"
- "\373\373\375\376\373\373\375\376\373\373\375\376\373\373\375\376\373\373\375"
- "\376\373\373\375\376\373\373\375\376\373\373\375\376\373\373\375\376\373T"
- "\201\250\373\17\21\24\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\17\21\24\373T\201\250\373\375\376\376\373\375\376\376\373\375\376"
- "\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375"
- "\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373"
- "\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376"
- "\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376"
- "\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375"
- "\376\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373"
- "\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373T\201\250\373\17\21\24\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\17\21\23\373T\201\250\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373T"
- "\201\250\373\17\21\23\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\17\21\23\373T\201\250\373\375\376\376\373\375\376\376\373\375\376"
- "\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375"
- "\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373"
- "\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376"
- "\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376"
- "\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\375\376\373\375"
- "\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373"
- "\375\375\376\373\375\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373T\201\250\373\17\21\23\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\17\21\23\373T\201\250\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373T"
- "\201\250\373\17\21\23\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\17\21\23\373T\201\250\373\375\376\376\373\375\376\376\373\375\376"
- "\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375"
- "\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373"
- "\375\376\376\373\375\376\376\373\375\375\376\373\375\375\376\373\375\376\376"
- "\373\375\375\376\373\375\376\376\373\375\375\376\373\375\376\376\373\375\375"
- "\376\373\375\376\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375"
- "\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373T\201\250\373\17\21\23\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\17\20\23\373T\201\250\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373T"
- "\201\250\373\17\20\23\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\17\20\23\373T\201\250\373\375\376\376\373\375\376\376\373\375\376"
- "\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375"
- "\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\375\376\373"
- "\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376"
- "\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375"
- "\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375"
- "\375\376\373\375\375\376\373\375\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373T\201\250\373\17\20\23\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\17\20\23\373T\201\250\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373T"
- "\201\250\373\17\20\23\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\16\20\23\373T\201\250\373\375\376\376\373\375\376\376\373\375\376"
- "\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375"
- "\376\376\373\375\376\376\373\375\375\376\373\375\375\376\373\375\375\376\373"
- "\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376"
- "\373\375\375\376\373\375\375\376\373\375\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\375\375\376\373\374\375\376\373\375\375\376\373\375"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373T\201\250\373\17\20\23\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\16\20\22\373T\201\250\373\373"
- "\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373"
- "\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375"
- "\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375"
- "\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373"
- "\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373"
- "\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375"
- "\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375"
- "\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373T"
- "\201\250\373\16\20\22\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\16\20\22\373T\201\250\373\375\376\376\373\375\376\376\373\375\376"
- "\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375\376\376\373\375"
- "\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373"
- "\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373T\201\250\373\16\20\22\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\16\20\22\373T\201\250\373\373"
- "\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373"
- "\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375"
- "\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375"
- "\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373"
- "\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373"
- "\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375"
- "\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375"
- "\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373T"
- "\201\250\373\16\20\22\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\16\20\22\373T\201\250\373\375\376\376\373\375\376\376\373\375\376"
- "\376\373\375\376\376\373\375\376\376\373\375\375\376\373\375\375\376\373\375"
- "\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373"
- "\375\375\376\373\375\375\376\373\375\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373T\201\250\373\16\20\22\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\16\20\22\373T\201\250\373\373"
- "\375\375\373\373\374\375\373\373\374\375\373\373\375\375\373\373\375\375\373"
- "\373\374\375\373\373\375\375\373\373\374\375\373\373\374\375\373\373\374\375"
- "\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374"
- "\375\373\373\375\375\373\373\374\375\373\373\375\375\373\373\374\375\373\373"
- "\375\375\373\373\374\375\373\373\374\375\373\373\375\375\373\373\375\375\373"
- "\373\374\375\373\373\374\375\373\373\375\375\373\373\375\375\373\373\374\375"
- "\373\373\374\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375"
- "\375\373\373\375\375\373\373\375\375\373\373\374\375\373\373\374\375\373T"
- "\201\250\373\16\20\22\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\16\20\22\373T\201\250\373\375\375\376\373\375\375\376\373\375\375"
- "\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375"
- "\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373"
- "\375\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373T\201\250\373\16\20\22\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\16\20\22\373T\201\250\373\373"
- "\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373"
- "\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375"
- "\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374"
- "\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373"
- "\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373"
- "\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375"
- "\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374"
- "\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373]"
- "\211\261\373\16\20\22\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\16\20\22\373T\201\250\373\375\375\376\373\375\375\376\373\375\375"
- "\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\375"
- "\375\376\373\375\375\376\373\375\375\376\373\375\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\373\375\375\373\\\211\260\373\15\20\22\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\15\20\22\373T\201\250\373\373"
- "\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373"
- "\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375"
- "\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374"
- "\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373"
- "\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373"
- "\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375"
- "\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374"
- "\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373["
- "\207\257\373\15\20\22\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\15\20\22\373T\201\250\373\375\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\375\373\374\375\375\373\374\375\375\373\374\375\375\373\374"
- "\375\375\373\374\375\375\373\374\375\375\373\374\375\375\373\374\375\375\373"
- "\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375"
- "\373\373\375\375\373\373\375\375\373Y\206\255\373\15\20\22\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\15\20\22\373T\201\250\373\373"
- "\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373"
- "\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375"
- "\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374"
- "\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373"
- "\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373"
- "\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375"
- "\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374"
- "\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373V"
- "\204\254\373\15\20\22\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\15\20\22\373T\201\250\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\375\373\374\375"
- "\375\373\374\375\375\373\374\375\375\373\374\375\375\373\374\375\375\373\374"
- "\375\375\373\374\375\375\373\374\375\375\373\373\375\375\373\373\375\375\373"
- "\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375"
- "\373\373\375\375\373\373\374\375\373V\202\253\373\15\20\22\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\15\20\22\373T\201\250\373\373"
- "\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373"
- "\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375"
- "\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374"
- "\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373"
- "\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373"
- "\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375"
- "\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374"
- "\375\373\373\374\375\373\373\374\375\373\373\374\375\373\373\374\375\373V"
- "\202\253\373\15\20\22\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10"
- "\10\10\373\15\17\22\373T\201\250\373\374\375\376\373\374\375\376\373\374\375"
- "\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374"
- "\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373"
- "\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376\373\374\375\376"
- "\373\374\375\376\373\374\375\375\373\374\375\375\373\374\375\375\373\374\375"
- "\375\373\374\375\375\373\374\375\375\373\374\375\375\373\374\375\375\373\374"
- "\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373"
- "\373\375\375\373\373\375\375\373\373\375\375\373\373\375\375\373\373\374\375"
- "\373\373\374\375\373\373\374\375\373U\201\251\373\15\20\22\373\10\10\10\373"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\15\17\22\373T\201\250\373T\201"
- "\250\373T\177\250\373T\177\250\373T\177\250\373T\177\250\373T\177\250\373"
- "T\177\250\373T\177\250\373T\201\250\373T\177\250\373T\201\250\373T\177\250"
- "\373R\177\250\373T\201\250\373R\177\250\373T\177\250\373T\201\250\373T\177"
- "\250\373R\177\250\373T\201\250\373T\177\250\373T\177\250\373T\177\250\373"
- "T\177\250\373T\201\250\373T\177\250\373T\177\250\373T\201\250\373T\177\250"
- "\373T\177\250\373T\177\250\373T\177\250\373R\177\250\373R\177\250\373T\177"
- "\250\373T\177\250\373T\177\250\373T\177\250\373T\177\250\373\15\17\22\373"
- "\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\15\17\22\373\202"
- "\247\300\373\201\244\300\373}\242\277\373\177\244\277\373\201\245\300\373"
- "\202\247\301\373\204\247\303\373\206\250\303\373Ju\236\373\212\254\305\373"
- "\214\255\306\373\216\257\307\373\217\260\307\373\221\261\310\373\222\261\311"
- "\373\224\263\311\373\225\264\313\373\227\265\314\373\230\266\315\373\233\266"
- "\315\373\235\270\316\373\236\272\317\373\237\273\320\373\237\272\320\373\237"
- "\272\320\373\237\273\320\373\237\273\320\373\237\273\320\373\237\273\320\373"
- "\237\273\320\373\237\273\320\373Ju\236\373\236\273\320\373\237\272\320\373"
- "\237\272\320\373\237\272\320\373\237\273\320\373\236\272\320\373\237\273\320"
- "\373\237\273\320\373\15\17\22\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\10\10\10\373\15\17\21\373\201\245\277\373My\241\373My\241\373Ly\241\373"
- "My\241\373My\241\373My\241\373My\241\3733V\202\373Ny\242\373Nz\242\373Ny\242"
- "\373Nz\242\373Mz\242\373Ny\242\373Nz\242\373Mz\242\373Nz\242\373Nz\242\373"
- "Nz\242\373Nz\242\373Nz\242\373P|\244\373Pz\244\373N|\244\373Pz\244\373P|\244"
- "\373Pz\244\373Pz\244\373P|\244\373P|\244\373-Nz\373Nz\244\373P|\244\373P|"
- "\244\373P|\244\373P|\244\373P|\244\373P|\244\373P|\244\373\15\17\21\373\10"
- "\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\10\10\10\373\15\17"
- "\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15"
- "\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373"
- "\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21"
- "\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17"
- "\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15"
- "\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373"
- "\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\15\17\21\373\10\10\10"
- "\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10\373\10\10\10\373"
- "\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10"
- "\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10"
- "\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10"
- "\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373"
- "\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10"
- "\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10"
- "\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10\10\10\373\10"
- "\10\10\373\10\10\10\373\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
- "\0\0\0\0";
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\40J\207\15\40J\207\23\40J\207"
+ "\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J"
+ "\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23"
+ "\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207"
+ "\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J"
+ "\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23"
+ "\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207\23\40J\207"
+ "\23\40J\207\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'P\213\267'Q\214\275'Q\214\275"
+ "'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214"
+ "\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275"
+ "'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275(R\215\275'Q\214\275'Q\214"
+ "\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275"
+ "'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275'Q\214\275(R\215"
+ "\275(R\215\275(R\215\275&P\213\267\40J\207\20\0\0\0\0\0\0\0\0\40J\207+Y{\252"
+ "\377\216\253\320\377\204\243\314\377\204\243\314\377\204\243\314\377\204\243"
+ "\314\377\204\243\314\377\204\243\314\377\204\243\314\377\204\243\314\377\204"
+ "\243\314\377\204\243\314\377\204\243\314\377\204\243\314\377\204\243\314\377"
+ "\204\243\314\377\204\243\314\377\204\243\314\377\204\243\314\377\204\243\314"
+ "\377\204\243\314\377\204\243\314\377\204\243\314\377\204\243\314\377\204\243"
+ "\314\377\204\243\314\377\203\243\314\377\203\243\313\377\203\243\313\377\203"
+ "\243\313\377\203\242\313\377\202\242\313\377\202\242\313\377\202\241\313\377"
+ "\201\241\312\377\201\241\312\377\201\240\312\377\201\240\312\377\200\240\312"
+ "\377\200\240\312\377\200\240\312\377\200\240\312\377\211\247\316\377Jn\241"
+ "\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+Wy\251\377]\207\275\377>o\260\377>o"
+ "\260\377>o\260\377>o\260\377>o\260\377>o\260\377>o\260\377>o\260\377>o\260"
+ "\377>o\260\377>o\260\377>o\260\377>o\260\377>o\260\377>o\260\377>o\260\377"
+ ">o\260\377>o\260\377>o\260\377>o\260\377>o\260\377>o\260\377>o\260\377>o\260"
+ "\377>o\260\377>o\260\377>o\260\377>o\260\377=o\260\377=o\260\377=o\260\377"
+ "=o\260\377=o\260\377=o\260\377=o\260\377=o\260\377=o\260\377=o\260\377=o\260"
+ "\377=o\260\377_\210\275\377Hm\241\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+Tw"
+ "\251\377]\207\276\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r"
+ "\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263"
+ "\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377"
+ "?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263"
+ "\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377"
+ "?r\263\377?r\263\377?r\263\377?r\263\377?r\263\377]\210\277\377Fl\241\377"
+ "\40J\207+\0\0\0\0\0\0\0\0\40J\207+Rv\250\377\\\210\300\377At\265\377At\265"
+ "\377At\265\377At\265\377At\265\377At\265\377At\265\377At\265\377At\265\377"
+ "At\265\377At\265\377At\265\377At\265\377At\265\377At\265\377At\265\377At\265"
+ "\377At\265\377At\265\377At\265\377At\265\377At\265\377At\265\377At\265\377"
+ "At\265\377At\265\377At\265\377At\265\377At\265\377At\265\377At\265\377At\265"
+ "\377At\265\377At\265\377At\265\377At\265\377At\265\377At\265\377At\265\377"
+ "At\265\377\\\210\300\377Dj\240\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+Ot\247"
+ "\377\\\211\302\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271"
+ "\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377"
+ "Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271"
+ "\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377"
+ "Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377Dw\271"
+ "\377Dw\271\377Dw\271\377Dw\271\377Dw\271\377[\211\302\377Bi\240\377\40J\207"
+ "+\0\0\0\0\0\0\0\0\40J\207+Ls\247\377\\\211\303\377Fy\273\377Fy\273\377Fy\273"
+ "\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377"
+ "Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273"
+ "\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377"
+ "Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273"
+ "\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377Fy\273\377"
+ "\\\211\303\377Ah\240\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+Jq\246\377\\\212"
+ "\305\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277"
+ "\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377"
+ "I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277"
+ "\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377"
+ "I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277"
+ "\377I}\277\377I}\277\377I}\277\377[\212\305\377?g\237\377\40J\207+\0\0\0\0"
+ "\0\0\0\0\40J\207+Jq\246\377\\\212\305\377I}\277\377I}\277\377I}\277\377I}"
+ "\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277"
+ "\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377I}\277\377"
+ "I}\277\377I}\277\377I}\277\377J~\300\377K\177\301\377K\177\301\377K\177\301"
+ "\377K\177\301\377K\177\301\377K\177\301\377K\177\301\377K\177\301\377K\177"
+ "\301\377K\177\301\377K\177\301\377K\177\301\377K\177\301\377K\177\301\377"
+ "K\177\301\377K\177\301\377K\177\301\377K\177\301\377Z\212\307\377=f\237\377"
+ "\40J\207+\0\0\0\0\0\0\0\0\40J\207+Ip\247\377\\\213\307\377J\177\301\377J\177"
+ "\301\377J\177\301\377J\177\301\377J\177\301\377J\177\301\377J\177\301\377"
+ "J\177\301\377J\177\301\377J\177\301\377J\177\301\377J\177\301\377J\177\301"
+ "\377J\177\301\377J\177\301\377J\177\301\377J\177\301\377J\177\301\377J\177"
+ "\301\377J\177\301\377J\177\301\377K\200\302\377K\200\302\377K\200\302\377"
+ "K\200\302\377K\200\302\377K\200\302\377K\200\302\377K\200\302\377K\200\302"
+ "\377K\200\302\377K\200\302\377K\200\302\377K\200\302\377K\200\302\377K\200"
+ "\302\377K\200\302\377K\200\302\377K\200\302\377K\200\302\377Z\212\307\377"
+ "=f\237\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+Ho\247\377e\223\314\377Z\213\310"
+ "\377Z\213\310\377Z\213\310\377Z\213\310\377Z\213\307\377Z\213\307\377Z\213"
+ "\307\377Z\213\307\377Z\213\307\377Y\212\307\377Y\212\307\377Y\212\307\377"
+ "Y\212\307\377Y\212\307\377X\212\307\377X\212\307\377X\212\307\377X\211\307"
+ "\377X\212\307\377X\212\307\377X\211\307\377X\211\307\377X\211\307\377X\211"
+ "\307\377X\211\307\377X\211\307\377X\211\307\377X\211\307\377X\211\307\377"
+ "X\211\307\377W\211\307\377W\211\307\377W\211\307\377W\211\307\377W\211\307"
+ "\377W\211\307\377V\211\307\377V\211\307\377V\210\307\377V\210\307\377`\217"
+ "\312\377<e\237\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+<b\231\377i\212\267\377"
+ "i\211\266\377i\211\266\377i\211\266\377i\211\266\377i\211\266\377h\211\266"
+ "\377h\211\266\377h\211\266\377h\211\266\377h\211\266\377h\211\266\377h\211"
+ "\266\377g\211\266\377g\211\266\377g\211\266\377g\211\266\377g\210\266\377"
+ "g\210\266\377g\211\266\377g\211\266\377g\210\266\377g\210\266\377g\210\265"
+ "\377g\210\265\377g\210\265\377g\210\265\377g\210\265\377g\210\265\377g\210"
+ "\265\377g\210\265\377g\210\265\377f\210\265\377f\210\264\377f\210\264\377"
+ "f\210\264\377f\210\264\377f\210\264\377f\210\264\377f\210\264\377f\207\264"
+ "\377f\207\264\3778^\226\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+b\177\251\377"
+ "\340\344\351\377\337\342\350\377\337\342\350\377\336\342\350\377\336\342\347"
+ "\377\336\342\347\377\336\342\347\377\336\342\347\377\335\341\347\377\335\341"
+ "\346\377\335\341\346\377\335\341\346\377\335\341\346\377\335\341\346\377\335"
+ "\341\346\377\335\341\346\377\335\341\346\377\334\340\346\377\334\340\346\377"
+ "\335\341\346\377\335\341\346\377\334\340\346\377\334\340\346\377\334\340\345"
+ "\377\334\340\345\377\334\340\345\377\333\337\345\377\333\337\345\377\333\337"
+ "\344\377\333\337\344\377\333\337\344\377\333\336\344\377\332\336\344\377\332"
+ "\336\344\377\332\336\344\377\332\336\343\377\332\336\343\377\332\336\343\377"
+ "\332\336\343\377\332\336\343\377\332\336\343\377\333\337\345\377a}\247\377"
+ "\40J\207+\0\0\0\0\0\0\0\0\40J\207+h\204\254\377\355\355\355\377\351\351\351"
+ "\377\351\351\352\377\351\351\351\377\351\351\351\377\351\351\351\377\351\351"
+ "\350\377\351\350\350\377\351\351\351\377\350\350\350\377\350\350\350\377\350"
+ "\350\350\377\350\350\350\377\350\350\350\377\350\350\350\377\350\350\350\377"
+ "\350\347\350\377\350\347\347\377\347\347\347\377\347\347\347\377\347\347\347"
+ "\377\347\347\347\377\347\347\347\377\347\347\347\377\346\347\347\377\347\346"
+ "\347\377\347\346\347\377\346\346\347\377\346\346\346\377\346\346\346\377\346"
+ "\346\346\377\346\346\346\377\346\346\346\377\346\346\346\377\346\346\346\377"
+ "\346\345\345\377\345\345\346\377\345\346\345\377\345\346\345\377\345\346\345"
+ "\377\345\345\345\377\351\351\351\377g\202\252\377\40J\207+\0\0\0\0\0\0\0\0"
+ "\40J\207+h\203\253\377\354\354\354\377\350\350\350\377\347\350\350\377\347"
+ "\347\350\377\347\347\350\377\347\347\347\377\347\347\347\377\347\347\347\377"
+ "\347\347\347\377\347\346\347\377\347\346\346\377\347\346\346\377\347\347\347"
+ "\377\346\346\346\377\346\346\346\377\346\346\346\377\346\346\346\377\346\346"
+ "\346\377\346\346\346\377\345\345\346\377\345\345\345\377\345\345\346\377\345"
+ "\346\346\377\345\345\345\377\345\345\345\377\345\345\345\377\345\345\345\377"
+ "\345\345\345\377\345\344\344\377\345\345\344\377\345\345\345\377\345\344\344"
+ "\377\344\344\344\377\344\344\344\377\344\344\344\377\344\344\344\377\343\344"
+ "\344\377\343\344\344\377\344\344\344\377\344\344\343\377\344\343\343\377\350"
+ "\350\350\377g\202\252\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+h\203\253\377\353"
+ "\352\352\377\346\346\346\377\346\345\345\377\345\346\346\377\345\346\345\377"
+ "\345\345\345\377\345\345\345\377\345\345\345\377\345\345\346\377\345\345\345"
+ "\377\345\345\345\377\345\345\345\377\345\345\345\377\345\345\345\377\345\345"
+ "\345\377\344\345\345\377\344\344\344\377\344\345\344\377\344\344\344\377\344"
+ "\344\344\377\344\344\344\377\344\344\344\377\344\344\344\377\343\343\344\377"
+ "\343\343\343\377\344\343\343\377\343\343\343\377\343\343\343\377\343\343\343"
+ "\377\343\343\343\377\343\343\343\377\342\343\343\377\342\343\343\377\343\342"
+ "\343\377\343\342\342\377\342\342\342\377\342\342\342\377\342\342\342\377\342"
+ "\342\342\377\342\342\342\377\342\342\342\377\346\346\346\377g\202\252\377"
+ "\40J\207+\0\0\0\0\0\0\0\0\40J\207+h\203\253\377\351\351\351\377\345\344\344"
+ "\377\344\344\344\377\344\344\344\377\344\344\344\377\344\344\344\377\343\344"
+ "\344\377\343\344\344\377\343\343\344\377\343\343\343\377\343\343\343\377\343"
+ "\343\343\377\343\343\343\377\343\343\343\377\343\343\343\377\343\343\343\377"
+ "\343\343\343\377\343\343\343\377\343\342\342\377\342\342\342\377\342\342\342"
+ "\377\342\342\342\377\342\342\342\377\342\341\342\377\342\342\342\377\342\342"
+ "\341\377\342\341\342\377\341\341\342\377\341\341\341\377\341\341\341\377\341"
+ "\341\341\377\341\341\341\377\341\341\341\377\341\340\341\377\341\341\341\377"
+ "\340\341\341\377\341\341\341\377\340\340\340\377\340\340\340\377\340\340\340"
+ "\377\340\340\340\377\346\345\346\377g\202\252\377\40J\207+\0\0\0\0\0\0\0\0"
+ "\40J\207+h\203\253\377\350\350\350\377\342\342\343\377\342\342\342\377\342"
+ "\342\342\377\342\342\342\377\342\342\342\377\342\342\342\377\342\342\342\377"
+ "\342\342\342\377\342\342\341\377\342\341\342\377\341\341\341\377\341\341\341"
+ "\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341"
+ "\341\377\340\341\341\377\341\340\340\377\341\340\340\377\340\340\340\377\340"
+ "\340\340\377\340\340\340\377\340\340\340\377\340\340\340\377\340\340\340\377"
+ "\340\340\337\377\340\340\340\377\337\337\337\377\340\340\337\377\337\337\337"
+ "\377\337\337\337\377\337\337\337\377\337\337\337\377\337\337\337\377\337\337"
+ "\337\377\337\337\337\377\337\337\336\377\336\337\336\377\336\336\336\377\344"
+ "\344\344\377g\202\252\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+h\203\253\377\347"
+ "\347\347\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341\341\377"
+ "\341\341\341\377\340\341\340\377\340\340\340\377\340\340\340\377\340\340\337"
+ "\377\340\340\340\377\340\340\340\377\340\340\337\377\337\340\337\377\337\340"
+ "\337\377\337\337\340\377\337\337\337\377\337\337\337\377\337\337\337\377\337"
+ "\337\337\377\337\337\337\377\337\337\337\377\336\337\337\377\336\337\336\377"
+ "\337\336\336\377\336\336\336\377\336\336\336\377\336\336\336\377\336\336\336"
+ "\377\336\336\336\377\336\336\336\377\336\336\335\377\336\335\335\377\336\335"
+ "\335\377\336\335\335\377\335\335\335\377\335\335\335\377\335\335\335\377\335"
+ "\335\335\377\335\335\335\377\335\335\335\377\343\343\343\377g\202\252\377"
+ "\40J\207+\0\0\0\0\0\0\0\0\40J\207+h\203\253\377\345\346\346\377\337\337\340"
+ "\377\340\337\337\377\337\337\337\377\337\337\337\377\337\337\337\377\337\337"
+ "\337\377\337\337\336\377\337\336\336\377\336\336\337\377\336\336\337\377\336"
+ "\336\336\377\336\336\336\377\336\336\336\377\336\336\335\377\336\336\336\377"
+ "\336\335\336\377\336\336\336\377\335\335\336\377\335\335\335\377\335\335\335"
+ "\377\335\335\335\377\335\335\335\377\335\335\335\377\335\335\335\377\335\335"
+ "\334\377\334\335\335\377\334\334\334\377\334\334\334\377\334\334\334\377\334"
+ "\334\334\377\334\334\334\377\334\334\334\377\334\334\334\377\334\334\334\377"
+ "\334\333\334\377\333\333\333\377\333\333\333\377\333\333\333\377\333\333\333"
+ "\377\333\333\333\377\341\341\342\377f\202\252\377\40J\207+\0\0\0\0\0\0\0\0"
+ "\40J\207+h\203\253\377\345\345\345\377\336\335\336\377\336\335\335\377\335"
+ "\335\335\377\336\335\335\377\335\335\335\377\335\335\335\377\335\335\335\377"
+ "\335\334\335\377\335\335\335\377\335\335\335\377\334\335\334\377\334\334\335"
+ "\377\334\335\334\377\334\334\334\377\334\334\334\377\334\334\334\377\334\334"
+ "\334\377\334\334\334\377\334\334\334\377\334\333\334\377\334\333\333\377\333"
+ "\333\333\377\333\333\333\377\333\333\333\377\333\333\333\377\333\333\333\377"
+ "\333\332\333\377\333\333\333\377\333\333\333\377\332\333\333\377\332\333\332"
+ "\377\332\332\332\377\332\332\332\377\332\332\332\377\332\332\332\377\332\332"
+ "\332\377\332\332\332\377\331\332\331\377\331\332\331\377\331\331\332\377\341"
+ "\341\341\377f\202\252\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+g\203\253\377\343"
+ "\343\344\377\334\334\334\377\334\333\334\377\334\334\334\377\333\333\334\377"
+ "\333\333\333\377\333\334\333\377\333\333\333\377\333\333\333\377\333\333\333"
+ "\377\333\333\333\377\333\333\333\377\333\332\333\377\333\332\333\377\333\332"
+ "\332\377\332\332\333\377\332\332\333\377\332\332\332\377\333\332\332\377\332"
+ "\332\332\377\332\332\332\377\331\332\332\377\331\332\331\377\331\332\331\377"
+ "\331\332\331\377\331\331\331\377\331\331\331\377\332\331\331\377\331\331\331"
+ "\377\331\331\331\377\331\331\331\377\330\330\331\377\330\330\330\377\331\330"
+ "\330\377\330\330\330\377\330\330\330\377\331\330\330\377\330\330\330\377\330"
+ "\330\330\377\330\330\330\377\330\330\330\377\337\337\337\377f\202\252\377"
+ "\40J\207+\0\0\0\0\0\0\0\0\40J\207+g\203\253\377\342\342\343\377\332\332\332"
+ "\377\332\332\332\377\332\332\332\377\332\332\332\377\331\332\332\377\331\332"
+ "\332\377\332\332\331\377\332\331\331\377\331\331\331\377\331\331\331\377\331"
+ "\331\331\377\331\331\331\377\331\331\331\377\331\331\331\377\331\331\331\377"
+ "\331\331\331\377\330\330\330\377\331\330\331\377\330\331\330\377\330\330\330"
+ "\377\330\330\330\377\330\330\330\377\330\330\327\377\327\330\330\377\330\330"
+ "\327\377\327\330\330\377\330\330\327\377\327\327\327\377\327\327\327\377\327"
+ "\327\327\377\327\327\327\377\327\327\327\377\327\327\327\377\327\327\327\377"
+ "\326\327\327\377\327\326\326\377\326\327\326\377\326\326\326\377\326\326\326"
+ "\377\326\326\326\377\336\336\337\377f\202\252\377\40J\207+\0\0\0\0\0\0\0\0"
+ "\40J\207+g\203\253\377\341\341\341\377\331\331\331\377\330\331\331\377\330"
+ "\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377"
+ "\327\330\330\377\330\330\327\377\330\330\330\377\330\327\330\377\327\327\327"
+ "\377\327\330\327\377\327\330\327\377\327\327\327\377\327\327\327\377\327\327"
+ "\327\377\327\327\327\377\326\327\326\377\326\327\326\377\326\326\326\377\326"
+ "\326\326\377\326\326\326\377\326\326\326\377\326\326\326\377\326\326\326\377"
+ "\326\326\326\377\325\325\326\377\325\326\326\377\326\325\325\377\325\325\325"
+ "\377\325\326\325\377\325\325\325\377\325\325\325\377\325\325\325\377\325\325"
+ "\325\377\325\325\325\377\325\324\325\377\324\324\324\377\324\324\324\377\335"
+ "\335\335\377f\202\252\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+g\203\253\377\340"
+ "\340\340\377\327\327\327\377\327\327\327\377\326\327\327\377\327\326\327\377"
+ "\326\326\326\377\326\326\327\377\326\326\326\377\326\326\326\377\326\326\326"
+ "\377\326\326\326\377\326\326\326\377\326\326\325\377\325\326\325\377\325\326"
+ "\326\377\325\325\325\377\325\325\325\377\325\325\325\377\325\325\325\377\325"
+ "\325\325\377\325\325\325\377\324\325\325\377\325\325\325\377\324\325\325\377"
+ "\324\324\324\377\325\324\324\377\324\324\324\377\324\324\324\377\324\324\324"
+ "\377\323\324\324\377\324\323\324\377\323\324\324\377\323\324\324\377\323\324"
+ "\323\377\323\323\324\377\323\323\323\377\323\323\323\377\323\323\323\377\323"
+ "\323\323\377\323\323\323\377\323\323\323\377\334\334\334\377f\202\252\377"
+ "\40J\207+\0\0\0\0\0\0\0\0\40J\207+g\203\253\377\337\336\337\377\325\325\325"
+ "\377\325\325\325\377\325\325\325\377\325\325\325\377\325\325\325\377\325\325"
+ "\325\377\325\325\324\377\325\325\325\377\324\325\324\377\324\324\324\377\324"
+ "\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377"
+ "\324\324\324\377\324\323\323\377\323\323\323\377\324\323\323\377\323\323\323"
+ "\377\323\323\323\377\324\323\323\377\323\323\323\377\323\323\323\377\323\322"
+ "\323\377\323\322\322\377\322\322\322\377\322\322\322\377\322\322\322\377\322"
+ "\322\322\377\322\322\322\377\322\322\322\377\322\322\322\377\321\322\321\377"
+ "\321\321\322\377\321\321\321\377\321\321\321\377\321\321\321\377\321\321\321"
+ "\377\321\321\321\377\334\333\334\377g\202\252\377\40J\207+\0\0\0\0\0\0\0\0"
+ "\40J\207+h\203\253\377\336\336\336\377\323\324\323\377\324\323\324\377\324"
+ "\323\323\377\323\324\323\377\323\323\323\377\323\323\323\377\323\323\323\377"
+ "\323\323\323\377\323\323\323\377\323\323\323\377\322\323\323\377\323\322\323"
+ "\377\322\322\323\377\322\322\322\377\322\322\322\377\322\322\322\377\322\322"
+ "\322\377\322\322\322\377\322\322\322\377\322\322\322\377\321\321\321\377\322"
+ "\321\321\377\321\321\321\377\321\321\321\377\321\321\321\377\321\321\321\377"
+ "\321\321\320\377\321\321\321\377\321\321\321\377\321\321\321\377\320\320\320"
+ "\377\320\320\320\377\320\320\320\377\320\320\320\377\320\317\320\377\317\320"
+ "\320\377\320\320\320\377\320\320\320\377\320\320\320\377\320\317\317\377\332"
+ "\332\332\377g\202\252\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+h\203\253\377\335"
+ "\335\335\377\322\322\322\377\322\322\322\377\322\322\322\377\321\322\322\377"
+ "\321\321\321\377\321\321\321\377\322\321\321\377\321\321\321\377\321\321\321"
+ "\377\321\321\321\377\321\321\321\377\321\320\321\377\320\321\320\377\320\320"
+ "\320\377\320\320\320\377\320\320\320\377\320\320\320\377\320\320\320\377\320"
+ "\320\320\377\320\320\320\377\320\320\320\377\320\320\320\377\317\320\320\377"
+ "\317\320\317\377\317\317\317\377\317\317\317\377\317\317\317\377\317\317\317"
+ "\377\317\317\317\377\316\317\317\377\317\317\317\377\317\316\316\377\316\316"
+ "\316\377\317\316\316\377\316\316\316\377\316\316\316\377\316\316\316\377\316"
+ "\316\316\377\316\316\316\377\316\316\316\377\331\331\331\377f\202\252\377"
+ "\40J\207+\0\0\0\0\0\0\0\0\40J\207+h\203\253\377\334\334\334\377\320\320\320"
+ "\377\320\320\320\377\320\320\320\377\320\320\320\377\320\320\320\377\320\320"
+ "\320\377\320\320\317\377\317\317\320\377\320\317\317\377\317\317\317\377\317"
+ "\317\317\377\317\317\317\377\317\317\317\377\317\317\317\377\317\317\317\377"
+ "\317\316\317\377\317\317\316\377\316\317\317\377\316\316\316\377\316\316\316"
+ "\377\316\316\316\377\316\316\316\377\316\316\316\377\316\316\316\377\316\315"
+ "\315\377\316\316\315\377\315\316\315\377\315\316\316\377\315\315\315\377\315"
+ "\315\315\377\315\315\315\377\315\315\315\377\315\314\315\377\315\315\315\377"
+ "\315\315\314\377\314\314\314\377\314\314\314\377\314\314\314\377\314\314\314"
+ "\377\314\314\314\377\331\330\331\377f\202\252\377\40J\207+\0\0\0\0\0\0\0\0"
+ "\40J\207+h\203\253\377\333\333\333\377\317\317\316\377\316\317\316\377\317"
+ "\316\316\377\317\316\316\377\316\317\316\377\316\316\316\377\316\316\316\377"
+ "\316\316\316\377\316\316\316\377\316\315\316\377\315\315\315\377\315\315\316"
+ "\377\315\315\315\377\315\315\315\377\315\315\315\377\315\315\315\377\315\315"
+ "\315\377\315\315\315\377\315\315\314\377\315\314\314\377\314\314\314\377\314"
+ "\315\314\377\314\314\314\377\314\314\314\377\314\314\314\377\314\314\314\377"
+ "\314\314\314\377\314\314\313\377\313\313\313\377\314\314\313\377\313\313\313"
+ "\377\313\313\313\377\313\313\313\377\313\313\313\377\313\313\313\377\313\313"
+ "\313\377\312\313\313\377\312\312\313\377\312\312\313\377\312\312\313\377\327"
+ "\327\327\377g\203\253\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+h\203\253\377\332"
+ "\332\332\377\315\315\315\377\314\315\315\377\315\315\315\377\315\315\315\377"
+ "\314\315\315\377\314\314\315\377\314\314\314\377\314\314\314\377\314\314\314"
+ "\377\314\314\314\377\314\314\314\377\314\314\314\377\313\314\314\377\313\314"
+ "\313\377\313\313\313\377\313\313\313\377\313\313\313\377\313\313\313\377\313"
+ "\313\313\377\313\313\313\377\313\312\313\377\313\313\313\377\312\313\313\377"
+ "\313\313\313\377\312\312\312\377\312\312\312\377\312\312\312\377\312\312\312"
+ "\377\312\312\312\377\312\312\312\377\312\312\311\377\312\311\311\377\312\312"
+ "\311\377\311\311\311\377\311\311\311\377\311\311\311\377\311\311\311\377\311"
+ "\311\311\377\311\311\311\377\311\311\311\377\327\326\327\377g\203\253\377"
+ "\40J\207+\0\0\0\0\0\0\0\0\40J\207+g\203\253\377\331\331\331\377\313\313\313"
+ "\377\313\313\313\377\313\313\313\377\313\313\313\377\313\313\313\377\313\313"
+ "\313\377\312\312\313\377\312\313\313\377\312\312\312\377\312\312\312\377\312"
+ "\312\312\377\312\312\312\377\312\312\312\377\312\312\312\377\311\311\311\377"
+ "\312\312\312\377\311\311\311\377\311\311\311\377\311\312\311\377\311\311\311"
+ "\377\311\311\311\377\311\311\311\377\311\311\311\377\311\311\311\377\311\310"
+ "\311\377\310\310\310\377\310\310\310\377\310\310\310\377\310\310\310\377\310"
+ "\310\310\377\310\310\310\377\310\310\310\377\310\310\310\377\310\310\310\377"
+ "\307\307\310\377\310\307\310\377\307\307\307\377\307\307\307\377\307\307\307"
+ "\377\307\307\307\377\325\325\325\377g\203\253\377\40J\207+\0\0\0\0\0\0\0\0"
+ "\40J\207+h\204\254\377\330\330\331\377\312\312\311\377\312\312\311\377\312"
+ "\311\311\377\311\311\311\377\311\311\311\377\311\311\311\377\310\311\311\377"
+ "\311\311\311\377\311\311\311\377\311\310\311\377\311\310\310\377\311\311\311"
+ "\377\310\310\311\377\310\310\310\377\310\310\310\377\310\310\310\377\310\310"
+ "\310\377\310\310\310\377\307\310\307\377\310\310\310\377\307\307\307\377\307"
+ "\307\310\377\307\307\307\377\307\307\307\377\307\307\307\377\307\307\307\377"
+ "\307\307\307\377\307\307\307\377\306\306\307\377\306\307\307\377\306\306\306"
+ "\377\306\306\306\377\306\306\306\377\306\306\306\377\306\306\306\377\306\306"
+ "\306\377\305\306\306\377\305\306\305\377\305\306\306\377\305\306\306\377\325"
+ "\325\325\377g\203\253\377\40J\207+\0\0\0\0\0\0\0\0\40J\207+h\204\254\377\327"
+ "\327\327\377\310\310\310\377\310\310\310\377\310\310\310\377\310\307\307\377"
+ "\307\307\310\377\307\307\307\377\307\307\307\377\307\307\307\377\307\307\307"
+ "\377\307\307\307\377\307\307\307\377\307\307\307\377\307\306\306\377\307\306"
+ "\306\377\306\307\306\377\307\306\306\377\306\306\306\377\306\306\306\377\306"
+ "\306\306\377\306\306\306\377\306\306\306\377\306\306\306\377\305\305\305\377"
+ "\305\305\306\377\306\305\305\377\305\305\305\377\305\305\306\377\305\305\305"
+ "\377\305\305\305\377\305\305\305\377\305\304\305\377\304\304\304\377\304\304"
+ "\305\377\304\304\305\377\304\304\304\377\304\304\304\377\304\304\304\377\304"
+ "\304\304\377\304\304\304\377\304\304\304\377\324\324\324\377g\203\253\377"
+ "\40J\207+\0\0\0\0\0\0\0\0\40J\207+h\204\254\377\326\326\326\377\307\306\306"
+ "\377\306\306\306\377\306\306\306\377\306\306\306\377\306\306\306\377\306\305"
+ "\306\377\306\306\305\377\305\305\306\377\305\306\306\377\305\305\305\377\305"
+ "\305\305\377\305\305\305\377\305\305\305\377\305\305\305\377\305\305\305\377"
+ "\305\304\305\377\305\305\305\377\304\304\305\377\304\304\304\377\304\304\304"
+ "\377\304\304\304\377\304\304\304\377\304\304\304\377\304\304\304\377\304\304"
+ "\303\377\304\303\304\377\303\303\304\377\303\303\304\377\303\303\303\377\303"
+ "\303\303\377\303\302\303\377\303\303\303\377\303\303\303\377\303\302\303\377"
+ "\303\302\303\377\303\302\303\377\302\302\302\377\302\302\302\377\302\302\302"
+ "\377\302\302\302\377\323\323\323\377h\204\254\377\40J\207+\0\0\0\0\0\0\0\0"
+ "\40J\206+h\204\254\377\325\325\325\377\304\305\305\377\305\305\305\377\305"
+ "\304\304\377\304\304\305\377\304\305\305\377\304\304\304\377\305\304\305\377"
+ "\304\305\304\377\304\304\304\377\304\304\304\377\304\304\303\377\304\304\304"
+ "\377\304\304\303\377\303\303\304\377\303\303\303\377\304\303\303\377\303\303"
+ "\303\377\303\303\303\377\303\303\303\377\303\302\303\377\303\302\303\377\302"
+ "\303\303\377\302\302\303\377\302\303\303\377\302\303\302\377\302\302\302\377"
+ "\302\302\302\377\301\301\301\377\301\301\301\377\301\301\301\377\301\301\301"
+ "\377\301\301\301\377\301\301\301\377\301\301\301\377\301\301\301\377\301\301"
+ "\301\377\301\301\301\377\301\301\301\377\301\301\301\377\301\301\301\377\322"
+ "\322\322\377g\203\253\377\37H\204,\0\0\0\0\0\0\0\1\35Cy0f\202\252\377\350"
+ "\350\350\377\344\344\344\377\344\344\344\377\344\344\344\377\344\344\344\377"
+ "\344\344\344\377\344\344\344\377\344\344\344\377\344\344\344\377\344\344\344"
+ "\377\344\344\344\377\344\344\344\377\344\344\344\377\344\344\344\377\344\344"
+ "\344\377\344\344\344\377\344\344\344\377\343\343\343\377\343\343\343\377\344"
+ "\344\344\377\344\343\344\377\343\343\343\377\343\343\343\377\343\343\343\377"
+ "\343\343\343\377\343\343\343\377\343\343\343\377\343\343\343\377\342\342\342"
+ "\377\342\342\342\377\342\342\342\377\342\342\342\377\342\342\342\377\342\342"
+ "\342\377\342\342\342\377\342\342\342\377\342\342\342\377\342\342\342\377\342"
+ "\342\342\377\342\342\342\377\342\342\342\377\347\347\347\377f\202\252\377"
+ "\33=p3\0\0\0\5\0\0\0\14\27""5`<+T\216\377<d\233\377<d\233\377<d\233\377<d"
+ "\233\377<d\233\377<d\233\377<c\233\377:b\232\377-U\217\377<c\233\377;c\233"
+ "\377:c\233\377:c\233\377:c\233\377:c\233\377:c\233\377:c\232\377:c\232\377"
+ ":b\232\377:c\232\377:c\232\377:b\232\377:b\232\377:b\232\3779b\232\3779b\232"
+ "\3779b\232\3779b\232\3779b\232\3779b\232\3779b\232\3779b\232\3778b\232\377"
+ "+U\217\3778a\231\3778a\232\3778a\232\3778a\232\3778a\232\3778a\232\3778a\232"
+ "\3777`\231\377)R\216\377\25""1YA\0\0\0\23\0\0\0\25\24.UD4_\234\377R\202\277"
+ "\377R\202\277\377R\202\277\377R\202\277\377R\202\277\377R\202\277\377R\202"
+ "\277\377N\177\273\3771^\232\377R\202\277\377Q\202\277\377Q\202\277\377Q\202"
+ "\277\377Q\202\277\377Q\202\277\377Q\202\277\377Q\201\276\377Q\201\276\377"
+ "P\201\276\377Q\201\276\377Q\201\276\377P\201\276\377P\201\276\377P\201\276"
+ "\377P\201\276\377P\201\276\377P\201\276\377P\201\276\377P\201\276\377P\201"
+ "\276\377O\200\276\377O\200\276\377O\200\276\3770]\232\377N\177\274\377O\200"
+ "\276\377O\200\276\377O\200\276\377N\200\276\377N\200\276\377N\200\276\377"
+ "N\177\275\3771]\233\377\22+OI\0\0\0\34\0\0\0\33\20%C@*S\214\377<b\227\377"
+ "<a\227\377<a\227\377<a\227\377<a\227\377<a\227\377<a\227\377;_\226\377-T\216"
+ "\377;`\226\377<a\227\377<a\227\377<a\227\377<a\227\377<a\227\377<a\227\377"
+ "<a\227\377<a\227\377<a\227\377;`\226\377;`\226\377;`\226\377;`\226\377;`\226"
+ "\377;`\226\377;`\226\377;`\226\377;`\226\377;`\226\377;`\226\377;`\226\377"
+ ";`\226\377;`\226\377-T\215\377;`\226\377;`\226\377;`\226\377;`\226\377;a\226"
+ "\377;a\226\377;a\226\377<a\227\377*R\214\377\17!=G\0\0\0#\0\0\0\33\3\7\14"
+ ")\31""6bw\30""4\\}\26""0W\205\25.S\214\25.R\215\25.R\215\25.R\215\25.R\215"
+ "\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25"
+ ".R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25."
+ "R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R"
+ "\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25.R\215\25-Q\217"
+ "\26/T\212\27""2Y\202\30""4^{\2\5\12""1\0\0\0#\0\0\0\25\0\0\0\37\0\0\0+\0\0"
+ "\0""4\0\0\0=\0\0\0C\0\0\0D\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0"
+ "C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0"
+ "\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0"
+ "C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0C\0\0\0D\0\0\0F\0\0\0B\0\0\0:\0"
+ "\0\0""2\0\0\0&\0\0\0\35\0\0\0\15\0\0\0\26\0\0\0\40\0\0\0'\0\0\0/\0\0\0""3"
+ "\0\0\0""3\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0"
+ "\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0"
+ "\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0"
+ """2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2\0\0\0""2"
+ "\0\0\0""2\0\0\0""2\0\0\0""3\0\0\0""5\0\0\0""2\0\0\0,\0\0\0%\0\0\0\34\0\0\0"
+ "\23\0\0\0\1\0\0\0\7\0\0\0\16\0\0\0\25\0\0\0\32\0\0\0\35\0\0\0\35\0\0\0\34"
+ "\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0"
+ "\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0"
+ "\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0"
+ "\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34\0\0\0\34"
+ "\0\0\0\35\0\0\0\36\0\0\0\35\0\0\0\30\0\0\0\23\0\0\0\12\0\0\0\3\0\0\0\0\0\0"
+ "\0\0\0\0\0\2\0\0\0\5\0\0\0\10\0\0\0\13\0\0\0\14\0\0\0\13\0\0\0\13\0\0\0\13"
+ "\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0"
+ "\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0"
+ "\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0"
+ "\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\13\0\0\0\14\0\0\0\14"
+ "\0\0\0\12\0\0\0\6\0\0\0\3\0\0\0\0\0\0\0\0");
 
index 307e2629838fc52f7d4ce90030e8ec1e70963b4e..36c962daf657567def152d81431655052c100652 100644 (file)
@@ -44,6 +44,7 @@ gint main()
     Window win;
     RrInstance *inst;
     RrAppearance *look;
+    int done;
 
     Window root;
     XEvent report;
@@ -67,8 +68,10 @@ gint main()
     inst = RrInstanceNew(ob_display, ob_screen);
 
     look = RrAppearanceNew(inst, 0);
-    look->surface.grad = RR_SURFACE_PYRAMID;
+    look->surface.grad = RR_SURFACE_MIRROR_HORIZONTAL;
     look->surface.secondary = RrColorParse(inst, "Yellow");
+    look->surface.split_secondary = RrColorParse(inst, "Red");
+    look->surface.split_primary = RrColorParse(inst, "Green");
     look->surface.primary = RrColorParse(inst, "Blue");
     look->surface.interlaced = FALSE;
     if (ob_display == NULL) {
@@ -76,8 +79,21 @@ gint main()
         return 0;
     }
 
+#if BIGTEST
+    int i;
+    look->surface.pixel_data = g_new(RrPixel32, w*h);
+    for (i = 0; i < 10000; ++i) {
+        printf("\r%d", i);
+        fflush(stdout);
+        RrRender(look, w, h);
+    }
+    exit (0);
+#endif
+
+
     RrPaint(look, win, w, h);
-    while (1) {
+    done = 0;
+    while (!done) {
         XNextEvent(ob_display, &report);
         switch (report.type) {
         case Expose:
@@ -87,8 +103,10 @@ gint main()
                     report.xconfigure.width,
                     report.xconfigure.height);
             break;
+        case UnmapNotify:
+            done = 1;
+            break;
         }
-
     }
 
     RrAppearanceFree (look);
index e1cff0cd67eca89a026b94107fc51a99a73077cb..ec12dafbea9a2ec57d524c774b4b6164635f557d 100644 (file)
@@ -177,9 +177,14 @@ RrTheme* RrThemeNew(const RrInstance *inst, const gchar *name,
         theme->osd_font = RrFontOpenDefault(inst);
 
     /* load direct dimensions */
-    if (!read_int(db, "menu.overlap", &theme->menu_overlap) ||
-        theme->menu_overlap < -100 || theme->menu_overlap > 100)
-        theme->menu_overlap = 0;
+    if ((!read_int(db, "menu.overlap.x", &theme->menu_overlap_x) &&
+         !read_int(db, "menu.overlap", &theme->menu_overlap_x)) ||
+        theme->menu_overlap_x < -100 || theme->menu_overlap_x > 100)
+        theme->menu_overlap_x = 0;
+    if ((!read_int(db, "menu.overlap.y", &theme->menu_overlap_y) &&
+         !read_int(db, "menu.overlap", &theme->menu_overlap_y)) ||
+        theme->menu_overlap_y < -100 || theme->menu_overlap_y > 100)
+        theme->menu_overlap_y = 0;
     if (!read_int(db, "window.handle.width", &theme->handle_height) ||
         theme->handle_height < 0 || theme->handle_height > 100)
         theme->handle_height = 6;
index 5b4e785e80527499a04bb77b66c0f0d549b9dd89..9b2d663ed464ce9a57814e25591e660dffcb4d8f 100644 (file)
@@ -45,7 +45,8 @@ struct _RrTheme {
     gint obwidth; /*!< osd border width */
     gint cbwidthx;
     gint cbwidthy;
-    gint menu_overlap;
+    gint menu_overlap_x;
+    gint menu_overlap_y;
     /* these ones are calculated, not set directly by the theme file */
     gint win_font_height;
     gint menu_title_font_height;
index daa9117d5213f6fc24016a80bebed0e9fe87ded4..95ee5f51876c0d34477002fb105b79f96c7e15a1 100755 (executable)
@@ -67,7 +67,7 @@ def main(argv=sys.argv):
         if list: autofile.list(environments)
         else: autofile.run(environments)
 
-class AutostartFile():
+class AutostartFile:
     def __init__(self, path):
         self.path = path
         self.filename = os.path.basename(path)
@@ -178,7 +178,7 @@ def show_help():
     print "  --version     Show version and copyright information"
     print
     print "ENVIRONMENT specifies a list of environments for which to run autostart"
-    print "applications for.  If none are specified, only applications which do not "
+    print "applications.  If none are specified, only applications which do not "
     print "limit themselves to certain environments will be run."
     print
     print "ENVIRONMENT can be one or more of:"
This page took 0.076358 seconds and 4 git commands to generate.