gdk_pixbuf'ed window icon + JACK fixes - Alex
authorterminatorX <>
Tue, 12 Aug 2003 22:52:14 +0000 (22:52 +0000)
committerterminatorX <>
Tue, 12 Aug 2003 22:52:14 +0000 (22:52 +0000)
ChangeLog
doc/terminatorX-manual/C/terminatorX-manual.xml
src/tX_dialog.cc
src/tX_icon.c
src/tX_icon.h
src/tX_vtt.cc

index ce37c478b9fe198442b5a06644647f4a5ff1796a..d703281c7192228f60dd5cdabfcccc0de9aba011 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -19,11 +19,14 @@ changed.
   for leak.
 - fixed a bug that caused turntable 1 to get the focus on entering Mouse Grab
   mode even when it's audio panel was minimized.
+- MIDI mappings can now have "borders", meaning that the incoming MIDI signals
+  can modify the parameter within the given range only.
 - introduced a new way of assigning MIDI controllers to parameters: simply 
   right-click on a parameter's control: a menu with "MIDI Learn" and 
   "Remove MIDI Binding" will pop up - select "MIDI Learn" and send the 
   corresponding MIDI event.
-- fixed a bug in the MIDI callback thanks to 
+- fixed a bug in the MIDI callback thanks to David Hamilton 
+  <daham2@student.monash.edu>
 - the realtime scheduling reproducibly stalled separate machines. Unluckily 
   an OS-stall situation is somewhat hard to debug. Additionally the new 2.5.*
   and the 2.4.*-ckX kernels have significantly improved scheduling that renders
index 4d98a51cd898024336979e4992e0bde434814051..17b9f3b7d8ffd6b0c82df8c9b40057ccd9bbeb1b 100644 (file)
@@ -28,7 +28,7 @@
       <holder role="mailto:alex@lisas.de">Alexander K├Ânig</holder>
     </copyright>
 
-    <releaseinfo>Version 3.80</releaseinfo>
+    <releaseinfo>Version 3.81</releaseinfo>
 
     <legalnotice id="legalnotice">
       <para>Permission is granted to copy, distribute and/or modify this
@@ -36,7 +36,7 @@
       Version 1.1 or any later version published by the Free Software
       Foundation with no Invariant Sections, no Front-Cover Texts, and no
       Back-Cover Texts. You can find a copy of the GFDL at this <ulink
-      url="ghelp:fdl" type="help">link</ulink> or in the file COPYING-DOCS
+      type="help" url="ghelp:fdl">link</ulink> or in the file COPYING-DOCS
       distributed with this manual.</para>
 
       <para>Many of the names used by companies to distinguish their products
@@ -87,9 +87,9 @@
       and MIDI interface - all accessible through an easy-to-use gtk+ GUI.</para>
 
       <para>This is <emphasis>beta</emphasis> Software please help me fix
-      bugs. See <xref linkend="CONTACT" /> (Contact/Download). Please read
-      this manual and take a look at the <ulink
-      url="http://www.terminatorX.cx">homepage</ulink>.</para>
+      <ulink url="http://terminatorX.cx/bugs.html">bugs</ulink>. See <xref
+      linkend="CONTACT" /> (Contact/Download). Please read this manual and
+      take a look at the <ulink url="http://www.terminatorX.cx">homepage</ulink>.</para>
     </sect2>
 
     <sect2 id="QUICKSTART">
           file)</para>
         </listitem>
 
+        <listitem>
+          <para>If you want to use the <ulink
+          url="http://jackit.sourceforge.net">JACK</ulink> backend run jackd
+          before starting terminatorX.</para>
+        </listitem>
+
         <listitem>
           <para>Run terminatorX</para>
         </listitem>
 
+        <listitem>
+          <para>Setup Audio Output via <emphasis>Options/Preferences</emphasis>.</para>
+        </listitem>
+
         <listitem>
           <para>Load an audiofile into the available turntable (you can add
           more turntables if you want) (Hint: Click on the button that holds
           &#34;NONE&#34; to load an audiofile, or drop one over the audiofile
-          display from your filemanager if your filemanager is efm, gmc,
-          Nautilus or compatible (kfm does <emphasis>not</emphasis> work))</para>
+          display from your GNOME filemanager.</para>
         </listitem>
 
         <listitem>
 
       <itemizedlist>
         <listitem>
-          <para>Scratching ;)</para>
+          <para>Scratching</para>
         </listitem>
 
         <listitem>
                   for loading ogg files.</para>
                 </listitem>
 
+                <listitem>
+                  <para><ulink url="http://jackit.sourceforge.net">libjack</ulink>
+                  for JACK support.</para>
+                </listitem>
+
                 <listitem>
                   <para><ulink url="http://xmlsoft.org/">libxml2</ulink> to
                   read terminatorX set and rc files</para>
         </itemizedlist>
       </sect3>
 
+      <sect3 id="SEQUENCERMENU">
+        <title><emphasis>Sequencer</emphasis> Menu</title>
+
+        <para>The <emphasis>Sequencer</emphasis> (see the <xref
+        linkend="SEQUENCER" />section for general information on the
+        sequencer) menu features these functions:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para><emphasis>Delete All</emphasis> submenus</para>
+
+            <para>These submenus allow you to delete sequencer events of a
+            specific parameter or all events for a complete turntable. After
+            selecting the the parameter/turntable of your choice a dialog will
+            pop-up that allows you to delete all events from either:</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>the beginning of the song upto the current song position</para>
+              </listitem>
+
+              <listitem>
+                <para>the current song position upto the end of the song</para>
+              </listitem>
+
+              <listitem>
+                <para>the beginning to the end of the song (all events)</para>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para><emphasis>Delete All Events</emphasis></para>
+
+            <para>Works the same as the <emphasis>Delete All</emphasis>
+            submenus but selects <emphasis>all</emphasis> events for
+            <emphasis>all</emphasis> turntables.</para>
+          </listitem>
+
+          <listitem>
+            <para><emphasis>Confirm Recorded Events</emphasis></para>
+
+            <para>Usually terminatorX will add all recorded events of a take
+            to the song event list as soon as you hit the
+            <emphasis>Stop</emphasis> button for the sequencer. If you enable
+            <emphasis>Confirm Recorded Events</emphasis> terminatorX will ask
+            you whether the recorded events should really be fed into the song
+            list. This makes it much easier to record a certain part over and
+            over again until you get it right.</para>
+          </listitem>
+        </itemizedlist>
+      </sect3>
+
       <sect3>
         <title><emphasis>Options</emphasis> Menu</title>
 
 
             <para>Maximizes the terminatorX main windows to use the complete
             screen. Note that this requires a NETWM compliant window manager
-            to work (GNOME2&#39;s metacity works nicely, while openbox 2.x
-            does not for example). By choosing this option again
-            terminatorX&#39; window can be resized back to the previous state
-            again. The setting will be stored in the <filename>~/.terminatorXrc</filename>
-            file.</para>
+            to work. By toggling this option again terminatorX&#39; window can
+            be resized back to the previous state again. The setting will be
+            stored in the <filename>~/.terminatorXrc</filename> file.</para>
           </listitem>
 
           <listitem>
           displayed signal shows the turntable&#39;s current signal not
           including the echo-signal which is mixed separately.</para></listitem></itemizedlist></para>
         </sect4>
+
+        <sect4>
+          <title>Parameter Menus</title>
+
+          <para>TerminatorX can record events for nearly all parameters of a
+          turntable. All of these so-called &#34;sequencable&#34; parameters
+          have an extra pop-up menu since Version 3.81. Simply right-click on
+          the knob, button, slider of the parameter you want to setup, and a
+          menu with the following options will appear:<itemizedlist><listitem><para><emphasis>MIDI
+          Learn</emphasis></para><para>This options provides an easy method to
+          select the MIDI control to modify the parameter you select. If you
+          choose this menu entry, a tiny dialog box will pop up that reads
+          <emphasis>&#34;Waiting for MIDI Event...&#34;</emphasis>. The first
+          MIDI event terminatorX receives will now be mapped to control this
+          parameter.</para></listitem><listitem><para><emphasis>Remove MIDI
+          Binding</emphasis></para><para>If a MIDI event has been bound to a
+          parameter it can be removed by selecting this menu entry.</para></listitem><listitem><para><emphasis>Set
+          Upper MIDI Bound</emphasis></para><para>Sometimes it is preferable
+          to modify a certain parameter only within a specific value range -
+          this can be achieved with this option - by setting an upper and a
+          lower bound for the MIDI control of this parameter. When you select
+          this menu entry, the current setting of this parameter will be used
+          as the upper bound for the parameter&#39;s MIDI mapping.</para></listitem><listitem><para><emphasis>Reset
+          Upper MIDI Bound</emphasis></para><para>If an upper MIDI bound was
+          set for this parameter it can be removed by selecting this menu
+          entry.</para></listitem><listitem><para><emphasis>Set Lower MIDI
+          Bound</emphasis></para><para>Works just like setting the uper MIDI
+          bound: when you select this menu entry, the current setting of this
+          parameter will be used as the lower bound for the parameter&#39;s
+          MIDI mapping.</para></listitem><listitem><para><emphasis>Reset Lower
+          MIDI Bound</emphasis></para><para>If a lower MIDI bound was set for
+          this parameter it can be removed by selecting this menu entry.</para></listitem><listitem><para><emphasis>Delete
+          Sequencer Events</emphasis></para><para>Just like the <xref
+          linkend="SEQUENCERMENU" /> this entry allows you to delete events
+          recorded for this specific parameter.</para></listitem></itemizedlist></para>
+        </sect4>
       </sect3>
 
       <sect3>
         <figure float="0">
           <title>An example for a terminatorX effect queue</title>
 
-          <graphic fileref="figures/signalflow.png" format="PNG" />
+          <graphic format="PNG" fileref="figures/signalflow.png" />
         </figure>
 
         <para>Now since release 3.71 the built-in echo effect is treated
 
       <para>After pressing the <emphasis>Mouse Grab button</emphasis>
       terminatorX enters &#34;grab mode&#34;. This mode actually blocks the
-      mouse (as its input is now used to control the real time parameters)
-      and therefore you&#39;ll have to know some mouse/keyboard shortcuts to
+      mouse (as its input is now used to control the real time parameters) and
+      therefore you&#39;ll have to know some mouse/keyboard shortcuts to
       control the software without the GUI.</para>
 
       <para>Press <keycap moreinfo="none">ESCAPE</keycap> to quit grab mode.</para>
       <para>Now the turntable that has the focus is the one you will
       manipulate with your mouse and keyboard inputs: Note that you can
       actually map different functions to the mouse x/y axis - so what
-      actually happens when you move your mouse depends on what you select via the
-      <emphasis>Mouse Mapping</emphasis> for each turntable.</para>
+      actually happens when you move your mouse depends on what you select via
+      the <emphasis>Mouse Mapping</emphasis> for each turntable.</para>
 
       <table>
         <title>Keyboard Controls in Grab Mode</title>
       move the sequencer-scale to that position, press <emphasis>Record,</emphasis>
       set the parameter and press <emphasis>Stop</emphasis> again.</para>
 
-      <para>There is no other the way to edit the sequencer events currently,
-      but future releases may feature an event-list editor.</para>
+      <para>To selectively delete events from the sequencer use the <xref
+      linkend="SEQUENCERMENU" />.</para>
     </sect2>
 
     <sect2 id="LADSPAPLUGINS">
       it is possible to control parameters through MIDI events (since 3.80).
       The MIDI interface is based upon the ALSA sequencer API. On startup
       terminatorX creates a MIDI input port called &#34;terminatorX&#34;. You
-      can now use for example the <ulink url="http://pkl.net/%7Enode/alsa-patch-bay.html">alsa-patch-pay</ulink>
+      can now use for example the <ulink
+      url="http://pkl.net/%7Enode/alsa-patch-bay.html">alsa-patch-pay</ulink>
       to connect an output port of your choice (either a hardware MIDI input
       device or a software generating midi events) to the terminatorX input
       port.</para>
       <para>If you want to use your joystick to control terminatorX - I wrote
       a tiny tool to create MIDI events from joystick motion called
       <emphasis>aseqjoy</emphasis>. It&#39;s available from the <ulink
-      url="http://terminatorX.cx/aseqjoy.html">terminatorX website</ulink>, too.</para>
+      url="http://terminatorX.cx/aseqjoy.html">terminatorX website</ulink>,
+      too.</para>
     </sect2>
   </sect1>
 
       device per cycle. I&#39;m not really sure on what kind of settings to
       recommend, however I had best results when setting the
       <emphasis>Period Time</emphasis> to 3rd or half of the
-      <emphasis>Buffer Time</emphasis>. </para>
+      <emphasis>Buffer Time</emphasis>.</para>
 
       <para>It&#39;s advisable to set the <emphasis>Buffer Time</emphasis> to
       at least the double of the <emphasis>Period Time</emphasis>, but for a
     <para>Send me comments, bug-reports, patches or scratches (see scratches
     section on the terminatorX homepage) at: <email>alex@lisas.de</email></para>
   </sect1>
-</article>
+</article>
\ No newline at end of file
index 3eee3754c05e9d79e2dbf0a29965b95aa680788d..1239258cf31b06f4a0befb534386f2626b5d8e14 100644 (file)
@@ -526,14 +526,21 @@ void show_about(int nag)
        }
        
        /* Create the window... */
-       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);   
-       gtk_window_set_wmclass(GTK_WINDOW(window), "terminatorX", "tX_about");
+       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_container_set_border_width(GTK_CONTAINER(window), 5);
+       gtk_window_set_title(GTK_WINDOW (window), "terminatorX - About");
+       gtk_window_set_position(GTK_WINDOW (window), GTK_WIN_POS_CENTER);
+       gtk_window_set_modal(GTK_WINDOW (window), TRUE);
+       gtk_window_set_policy(GTK_WINDOW (window), TRUE, TRUE, FALSE);  
+       
+       /*
+       gtk_window_set_wmclass(GTK_WINDOW(window), "terminatorX", "tX_about");
        g_object_set (G_OBJECT (window), "type", GTK_WINDOW_TOPLEVEL, NULL);
-       gtk_window_set_decorated(GTK_WINDOW(window), nag ? TRUE : FALSE);
        gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
        gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
        gtk_window_set_title(GTK_WINDOW(window), "terminatorX - About");
+       gtk_window_set_decorated(GTK_WINDOW(window), nag ? TRUE : FALSE);
+       */
        
        GdkPixbuf *image=gdk_pixbuf_new_from_xpm_data((const char **)logo_xpm);
        gdk_pixbuf_render_pixmap_and_mask(image, &pmap, &mask, 0);
@@ -562,7 +569,8 @@ void show_about(int nag)
                gtk_widget_show(box2);
                gtk_widget_show(box);
                gtk_widget_show(pwid);
-               
+
+               gtk_window_set_decorated(GTK_WINDOW(window), FALSE);            
                gtk_widget_show(window);
        } else {
                box=gtk_vbox_new(FALSE, 5);
@@ -663,7 +671,7 @@ void show_about(int nag)
                gtk_signal_connect(GTK_OBJECT(btn), "clicked", (GtkSignalFunc) destroy_about, NULL);            
                gtk_signal_connect(GTK_OBJECT(window), "delete-event", (GtkSignalFunc) destroy_about, NULL);            
        }
-       gtk_widget_show(window);
+       gtk_widget_show(window);        
        tX_set_icon(window, "tX About");
        
        while (gtk_events_pending()) gtk_main_iteration();
@@ -671,18 +679,14 @@ void show_about(int nag)
        about=window;
 }
 
-GdkBitmap *tX_icon_mask=NULL;
-GdkPixmap *tX_icon_pmap=NULL;
-GtkWidget *tX_icon_widget=NULL;
+GdkPixbuf *tX_window_icon=NULL;
 
 void tX_set_icon(GtkWidget *widget, char *name)
-{
-       GtkStyle *style = gtk_widget_get_style(widget);
-
-       if (!tX_icon_pmap) {
-               tX_icon_pmap=gdk_pixmap_create_from_xpm_d(widget->window, &tX_icon_mask, &style->bg[GTK_STATE_NORMAL], (gchar **) tX_icon_xpm );
+{      
+       if (!tX_window_icon) {
+               tX_window_icon=gdk_pixbuf_new_from_inline(-1, tX_icon, FALSE, NULL);
        }
 
-       gdk_window_set_icon(widget->window, NULL, tX_icon_pmap, tX_icon_mask);
+       gtk_window_set_icon(GTK_WINDOW(widget), tX_window_icon);
        gdk_window_set_icon_name(widget->window, name); 
 }
index b76dacf0d67df19f133fb56099a2eaa93182995d..2b8e882d571105f54e7339ee23e252a5b8e60b41 100644 (file)
-/* XPM */
-char * tX_icon_xpm[] = {
-"48 48 174 2",
-"      c None",
-".     c #191919",
-"+     c #0E0E0E",
-"@     c #070707",
-"#     c #010101",
-"$     c #000000",
-"%     c #131313",
-"&     c #181818",
-"*     c #090909",
-"=     c #050505",
-"-     c #040404",
-";     c #020202",
-">     c #030303",
-",     c #262626",
-"'     c #151515",
-")     c #121212",
-"!     c #5A5A5A",
-"~     c #2E2E2E",
-"{     c #282828",
-"]     c #242424",
-"^     c #161616",
-"/     c #080808",
-"(     c #141414",
-"_     c #5D5D5D",
-":     c #404040",
-"<     c #3A3A3A",
-"[     c #2D2D2D",
-"}     c #212121",
-"|     c #0D0D0D",
-"1     c #505050",
-"2     c #585858",
-"3     c #484848",
-"4     c #3F3F3F",
-"5     c #2A2A2A",
-"6     c #0F0F0F",
-"7     c #0A0A0A",
-"8     c #595959",
-"9     c #757575",
-"0     c #515151",
-"a     c #4B4B4B",
-"b     c #303030",
-"c     c #1A1A1A",
-"d     c #292929",
-"e     c #1C1C1C",
-"f     c #111111",
-"g     c #616161",
-"h     c #747474",
-"i     c #626262",
-"j     c #2C2C2C",
-"k     c #323232",
-"l     c #3D3D3D",
-"m     c #060606",
-"n     c #0C0C0C",
-"o     c #737373",
-"p     c #717171",
-"q     c #636363",
-"r     c #393939",
-"s     c #4F4F4F",
-"t     c #3B3B3B",
-"u     c #1B1B1B",
-"v     c #6D6D6D",
-"w     c #606060",
-"x     c #3C3C3C",
-"y     c #4D4D4D",
-"z     c #474747",
-"A     c #4A4A4A",
-"B     c #565656",
-"C     c #232323",
-"D     c #414141",
-"E     c #4C4C4C",
-"F     c #4E4E4E",
-"G     c #252525",
-"H     c #171717",
-"I     c #1E1E1E",
-"J     c #101010",
-"K     c #272727",
-"L     c #1F1F1F",
-"M     c #333333",
-"N     c #363636",
-"O     c #202020",
-"P     c #2B2B2B",
-"Q     c #6B6B6B",
-"R     c #848484",
-"S     c #818181",
-"T     c #5E5E5E",
-"U     c #373737",
-"V     c #0B0B0B",
-"W     c #222222",
-"X     c #1D1D1D",
-"Y     c #8E8E8E",
-"Z     c #D9D9D9",
-"`     c #F6F6F6",
-" .    c #FBFBFB",
-"..    c #F9F9F9",
-"+.    c #F1F1F1",
-"@.    c #C0C0C0",
-"#.    c #7B7B7B",
-"$.    c #B1B1B1",
-"%.    c #FAFAFA",
-"&.    c #FCFCFC",
-"*.    c #FFFFFF",
-"=.    c #FEFEFE",
-"-.    c #ADADAD",
-";.    c #A2A2A2",
-">.    c #F6F6F7",
-",.    c #F5F5F5",
-"'.    c #858585",
-").    c #696969",
-"!.    c #EFEFEF",
-"~.    c #FAF4F4",
-"{.    c #FDFCFC",
-"].    c #F5F5F6",
-"^.    c #F3F3F4",
-"/.    c #FBFBFC",
-"(.    c #979797",
-"_.    c #C5C5C5",
-":.    c #494949",
-"<.    c #A6A6A6",
-"[.    c #FDFDFE",
-"}.    c #F4F4F5",
-"|.    c #F7F6F7",
-"1.    c #F7F7F8",
-"2.    c #EDEDEF",
-"3.    c #838383",
-"4.    c #EAEAEA",
-"5.    c #C4C4C4",
-"6.    c #F1EBEC",
-"7.    c #F0F0F2",
-"8.    c #E9EBEA",
-"9.    c #B8B8B8",
-"0.    c #D2D2D2",
-"a.    c #545454",
-"b.    c #D1D1D1",
-"c.    c #F5F4F5",
-"d.    c #D9D9DE",
-"e.    c #E8E8EB",
-"f.    c #E6E6E9",
-"g.    c #E2E2E2",
-"h.    c #909191",
-"i.    c #EEEEEE",
-"j.    c #CBCBCB",
-"k.    c #B7B7B7",
-"l.    c #F3F3F5",
-"m.    c #E5E5EC",
-"n.    c #EDE6E8",
-"o.    c #F9F9FA",
-"p.    c #D0D0D0",
-"q.    c #B4B4B4",
-"r.    c #E3E3E3",
-"s.    c #8F8F8F",
-"t.    c #949494",
-"u.    c #F8F8F8",
-"v.    c #F4F3F7",
-"w.    c #EDE7EA",
-"x.    c #A5A5A5",
-"y.    c #DDDDDD",
-"z.    c #EBEBEB",
-"A.    c #6E6E6E",
-"B.    c #D8D8D8",
-"C.    c #9C9C9C",
-"D.    c #FDFDFD",
-"E.    c #B5B5B5",
-"F.    c #7E7E7E",
-"G.    c #E1E1E1",
-"H.    c #E5E5E5",
-"I.    c #F0F0F0",
-"J.    c #656565",
-"K.    c #C7C7C7",
-"L.    c #CACACA",
-"M.    c #444444",
-"N.    c #454545",
-"O.    c #424242",
-"P.    c #2F2F2F",
-"Q.    c #343434",
-"                                                                                                ",
-"                                . + @ # $ $ $ $ $ $ $ @ %                                       ",
-"                            & * @ = - ; # # $ $ $ $ $ $ $ $ > %                                 ",
-"                        , & ' + * @ - # $ $ $ $ $ $ $ $ $ $ $ $ $ )                             ",
-"                    ! ~ { ] ^ + / - # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ - (                         ",
-"                  _ : < [ } % @ = = > # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ |                       ",
-"                1 2 3 4 5 ) 6 ) 7 = - ; # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ -                     ",
-"              8 9 0 a b c d e f 7 - # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ;                   ",
-"            g h i ! j k l ~ c 7 m > ; $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ n                 ",
-"          o p i q r a s t u f | = ; ; # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ f               ",
-"        v g q w x y 2 z e e ( * / > # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 6             ",
-"        a i ! A l q B C . ' % 6 = @ - # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ *             ",
-"      D s E F d w 8 G ~ H I J + + > ; ; $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ )           ",
-"      b z z K 3 s ~ [ e K % L J / 7 ; $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ = /         ",
-"    M b N M O : < I C O ^ G ) ( 6 $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ^         ",
-"    u P [ & P b c I ( I c H ' % $ $ $ ^ t Q R S T U 7 $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ V         ",
-"    & } c 6 W } 6 ) ( n X 7 & $ $ # r Y Z `  ...+.@.#.5 $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ = J       ",
-"  e f H + V ^ + V @ V 6 / ) # $ $ D $.%.&. .*.*.*.*.=.-.~ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 6       ",
-"  ( | f @ n V m / m - 7 - * $ $ 5 ;.=.=.&.>.*.*. .*.*.,.'.^ $ $ $ $ $ $ $ $ $ $ $ $ $ $ +       ",
-"  n V 7 - @ @ ; > > ; m - # $ ; ).!.&.~.{.].^.]./.*.%.(._.:.$ $ $ $ $ $ $ $ $ $ $ $ $ $ 6 $     ",
-"  / = m ; > - # # # ; # ; $ $ I <.[.}.|.1.2.[.=.*.*._.3.4.'.$ $ $ $ $ $ $ $ $ $ $ $ $ $ m $     ",
-"  # - ; ; ; ; # $ $ # $ $ $ $ j 5.6.>.7.8.}.(.9.*.0.a.4.*.(.. $ $ $ $ $ $ $ $ $ $ $ $ $ * $     ",
-"  # ; # # # # $ $ $ $ $ $ $ $ ~ b.c.d.e.f.g.h.'.i._ j. .*.;.] # # $ $ $ $ $ $ $ $ $ $ $ n $     ",
-"  $ # # $ $ $ $ $ $ $ $ $ $ $ 5 k.*.l.m.n.o.p.5.).q.r.*.=.s.n ; > $ $ $ $ $ $ $ $ $ $ $ = $     ",
-"  7 $ # $ $ $ $ $ $ $ $ $ $ $ J t.u.*.v.w.*.&.9 x.y.*.*.z.A.; - = $ $ $ $ $ $ $ $ $ $ $ J $     ",
-"  / $ $ $ $ $ $ $ $ $ $ $ $ $ $ s B.` *.*.*.C.S y.D.*.*.E.M = @ / ; # # # # # $ $ $ $ $ 7 $     ",
-"  J $ $ $ $ $ $ $ $ $ $ $ $ $ $ ( F.` =.=.E.S %.D.*.*.G._ / / n n = - > > ; # # # # $ # + $     ",
-"  & $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ } s.H.I.h !.*.*.&.B.J.% / | ( 6 V / * * = > > ; ; # # J $     ",
-"    # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ' 0 (.K.4.` L.s.: n @ n ( d f ) J % J n m = = ; > V = $     ",
-"    V $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ^ 5 k [ d | > = 7 ) : 5 W & } c & / / / @ - @ J $       ",
-"    u $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ # - @ J b ~ ] j b r d u n n 7 - @ V % $       ",
-"      / $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ # ; - n e X K { x a x M e J ( ( @ n ' $ $       ",
-"      6 $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ # - * n c L 5 F M.N.5 e u e n 7 ^ | $         ",
-"        @ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ; = @ % ] : : O.M I } ] X f c . $ $         ",
-"          # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ # - n ' G P.Q.{ } K 5 } ^ ' G V $           ",
-"          ) $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ # ; = V | H W X u L b k . I [ ^ $ $           ",
-"            7 $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ # - m + 6 f % O d I u [ b X $ $             ",
-"              > $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ # ; - @ * 6 H I . V O x ( $ $               ",
-"                n $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ # # > = n ) J 6 J e [ H $ $                 ",
-"                  + # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ # > m / n / 6 L { ( $ $                   ",
-"                    & * $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ # ; > - m V H X V $ $                     ",
-"                        | m $ $ $ $ $ $ $ $ $ $ $ $ $ # # - * * f f # $ $                       ",
-"                            J n ; $ $ $ $ $ $ $ $ $ $ # ; @ 6 f ; $ $                           ",
-"                                J | n J V 7 $ # | @ J n ) m $ $ $                               ",
-"                                      $ > > $ $ > ; $ $ $ $                                     ",
-"                                                                                                ",
-"                                                                                                ",
-"                                                                                                "};
+/* GdkPixbuf RGBA C-Source image dump */
+
+#include <gtk/gtk.h>
+
+const guint8 tX_icon[] = 
+{ ""
+  /* Pixbuf magic (0x47646b50) */
+  "GdkP"
+  /* length: header (24) + pixel_data (9216) */
+  "\0\0$\30"
+  /* pixdata_type (0x1010002) */
+  "\1\1\0\2"
+  /* rowstride (192) */
+  "\0\0\0\300"
+  /* width (48) */
+  "\0\0\0""0"
+  /* height (48) */
+  "\0\0\0""0"
+  /* pixel_data: */
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0...\6\27\27\27"
+  "\23\23\23\23\37!!!=\40\40\40b\26\26\26|\5\5\5\204\2\2\2\204\32\32\32"
+  "\201\27\27\27`%%%B\25\25\25$\20\20\20\25\36\36\36\11\25\25\25\2\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0QQQ\1+++\20\32\32\32.\30\30\30d\21\21\21"
+  "\257\12\12\12\344\4\4\4\375\1\1\1\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\2\2\2\374\11\11\11\346\14\14\14\262\20\20\20p\21\21"
+  "\21<\24\24\24\25\6\6\6\4\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0TTT\14""333<!!!\205\30\30\30\324"
+  "\14\14\14\374\10\10\10\377\5\5\5\377\3\3\3\377\1\1\1\377\1\1\1\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\1\1\1\376\11\11\11\337\11\11\11\215\22\22\22I\32\32\32\26\0\0\0\4\0"
+  "\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\220\220\220\1eee\33GG"
+  "Gv...\314!!!\371\30\30\30\377\17\17\17\377\10\10\10\377\5\5\5\377\2\2"
+  "\2\377\1\1\1\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\1\1\1\374\11\11\11\326"
+  "\14\14\14\210\23\23\23""6\20\20\20\14\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0qqq\32WWW\240@@@\353000\377&&&\377\30\30\30\377\13\13\13\377"
+  "\6\6\6\377\4\4\4\377\2\2\2\377\1\1\1\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\3\3\3\361\11\11\11\266\21\21\21S\14\14\14\24\0\0"
+  "\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\220\220\220\12SSS\245TTT\367CCC\377444\377\36\36"
+  "\36\377\21\21\21\377\17\17\17\377\10\10\10\377\5\5\5\377\3\3\3\377\1"
+  "\1\1\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\1\1\1\371\4\4\4\321\4\4\4_\1\1\1\30\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\220\220\220\12ZZZ\235mm"
+  "m\371PPP\377AAA\377'''\377\"\"\"\377\35\35\35\377\22\22\22\377\11\11"
+  "\11\377\3\3\3\377\1\1\1\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\375\2\2\2\337\6\6\6^\0"
+  "\0\0\24\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\230\230\230"
+  "\1\223\223\223\"ggg\251ppp\371aaa\377LLL\377222\377999\377222\377\36"
+  "\36\36\377\14\14\14\377\6\6\6\377\3\3\3\377\1\1\1\377\0\0\0\377\0\0\0"
+  "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\11\11\11\355\12\12\12V\1\1\1\31\0\0\0\5\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0xxx\32ooo\236nnn\367ccc\377VVV\377BBB\377N"
+  "NN\377@@@\377$$$\377\24\24\24\377\15\15\15\377\5\5\5\377\2\2\2\377\1"
+  "\1\1\377\1\1\1\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\14\14\14\314\10\10"
+  "\10L\0\0\0\25\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0QQQ\11[[[l```\350```\377YYY\377"
+  "\77\77\77\377VVV\377LLL\377***\377\32\32\32\377\25\25\25\377\14\14\14"
+  "\377\7\7\7\377\4\4\4\377\2\2\2\377\1\1\1\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\1\1\1\367\13\13\13\244\4\4\4""9\0\0\0\16\0\0\0\2\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0EEE1JJJ\300SSS\377UUU\377===\377PPP\377VVV\377666\377\40\40\40\377"
+  "\31\31\31\377\24\24\24\377\17\17\17\377\11\11\11\377\5\5\5\377\2\2\2"
+  "\377\1\1\1\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\1\1\1\376\6\6\6\343"
+  "\14\14\14v\0\0\0%\0\0\0\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0""222\12""555q@@@\365III\377:::\377<<<\377"
+  "RRR\377999\377'''\377\"\"\"\377\33\33\33\377\31\31\31\377\21\21\21\377"
+  "\12\12\12\377\6\6\6\377\2\2\2\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0"
+  "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\2\2\2\371\10\10\10\270\4\4\4J\0\0\0\24\0\0\0\2\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""333&11"
+  "1\277555\377999\377'''\377>>>\377<<<\377###\377###\377\35\35\35\377\36"
+  "\36\36\377\30\30\30\377\23\23\23\377\14\14\14\377\2\2\2\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\7\7\7\341"
+  "\16\16\16~\0\0\0)\0\0\0\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0CCC\2$$$I###\365---\377\"\"\"\377&&&\377111\377\36\36\36"
+  "\377\34\34\34\377\31\31\31\377\34\34\34\377\31\31\31\377\26\26\26\377"
+  "\23\23\23\377\2\2\2\377\0\0\0\377\7\7\7\377###\377NNN\377nnn\377qqq\377"
+  "NNN\377&&&\377\5\5\5\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\4\4\4\366\10\10\10\255\1\1\1F\0\0\0\20\0\0\0\1\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0+++\15\"\"\"\216\32\32\32"
+  "\377\34\34\34\377\22\22\22\377\34\34\34\377\37\37\37\377\17\17\17\377"
+  "\21\21\21\377\20\20\20\377\23\23\23\377\21\21\21\377\23\23\23\377\3\3"
+  "\3\377\1\1\1\377\31\31\31\377ggg\377\274\274\274\377\355\355\355\377"
+  "\372\372\372\377\372\372\372\377\355\355\355\377\271\271\271\377mmm\377"
+  "\40\40\40\377\2\2\2\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0"
+  "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\2\2"
+  "\2\377\11\11\11\321\11\11\11l\0\0\0\40\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\31\31\31\25\26\26\26\277\22\22\22\377\21\21"
+  "\21\377\14\14\14\377\21\21\21\377\15\15\15\377\12\12\12\377\7\7\7\377"
+  "\13\13\13\377\12\12\12\377\14\14\14\377\5\5\5\377\0\0\0\377\24\24\24"
+  "\377ttt\377\331\331\331\377\374\374\374\377\373\373\373\377\376\376\376"
+  "\377\377\377\377\377\376\376\376\377\377\377\377\377\347\347\347\377"
+  "\201\201\201\377\35\35\35\377\1\1\1\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\6\6\6\344\10\10\10\213\0\0\0""2\0\0\0\7\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\33\33\33\37\17\17\17\345\15\15\15\377"
+  "\12\12\12\377\11\11\11\377\12\12\12\377\5\5\5\377\6\6\6\377\4\4\4\377"
+  "\5\5\5\377\6\6\6\377\5\5\5\377\2\2\2\377\1\1\1\377QQQ\377\316\316\316"
+  "\377\375\374\374\377\374\373\373\377\370\370\371\377\371\371\372\377"
+  "\373\373\374\377\374\374\374\377\377\377\377\377\355\355\355\377\267"
+  "\267\267\377UUU\377\12\12\12\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0"
+  "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\7\7\7\357\7\7\7\243\0\0\0D\0\0\0\15\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\31\31\31+\11\11\11\372\10\10\10\377\6\6\6\377"
+  "\4\4\4\377\5\5\5\377\2\2\2\377\2\2\2\377\2\2\2\377\3\3\3\377\3\3\3\377"
+  "\1\1\1\377\0\0\0\377\16\16\16\377\225\225\225\377\367\367\367\377\370"
+  "\367\367\377\371\367\370\377\364\364\365\377\366\366\367\377\371\371"
+  "\372\377\375\375\376\377\367\367\367\377\301\301\301\377\262\262\262"
+  "\377\221\221\221\377\32\32\32\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0"
+  "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\5\5\5\366\5\5\5\264\0\0\0T\0\0\0\23\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\35\35\35""6\4\4\4\377\4\4\4\377\3\3\3\377\2\2"
+  "\2\377\3\3\3\377\1\1\1\377\0\0\0\377\1\1\1\377\1\1\1\377\1\1\1\377\0"
+  "\0\0\377\0\0\0\377\"\"\"\377\300\300\300\377\365\363\364\377\364\364"
+  "\365\377\360\361\362\377\360\361\361\377\312\312\313\377\320\320\320"
+  "\377\373\373\373\377\312\312\312\377\230\230\230\377\335\335\335\377"
+  "\267\267\267\377000\377\2\2\2\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0"
+  "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\4\4"
+  "\4\372\4\4\4\276\0\0\0a\0\0\0\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0(((<\1\1\1\377\2\2\2\377\1\1\1\377\1\1\1\377\1\1\1\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "(((\377\323\322\322\377\357\355\357\377\344\344\347\377\350\351\353\377"
+  "\347\347\350\377\247\250\250\377\222\222\222\377\343\343\343\377\207"
+  "\207\207\377\311\311\311\377\373\373\373\377\303\303\303\377AAA\377\5"
+  "\5\5\377\1\1\1\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\6\6\6\373\5\5\5\302\0\0\0i\0"
+  "\0\0\35\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\26\26\26""7\0"
+  "\0\0\377\1\1\1\377\1\1\1\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377%%%\377\303\303\303"
+  "\377\372\372\373\377\354\354\360\377\351\346\352\377\362\360\361\377"
+  "\324\324\324\377\276\276\276\377\200\200\200\377\267\267\267\377\353"
+  "\353\353\377\376\376\376\377\272\272\272\377000\377\4\4\4\377\2\2\2\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\3\3\3\372\3\3\3\304\0\0\0l\0\0\0\37\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\35\35\35/\7\7\7\375\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\14\14\14\377\230\230\230\377\366\366\366"
+  "\377\373\372\374\377\362\357\362\377\371\367\370\377\364\364\364\377"
+  "\206\206\206\377\263\263\263\377\350\350\350\377\377\377\377\377\362"
+  "\362\362\377\226\226\226\377\33\33\33\377\4\4\4\377\5\5\5\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\7\7\7\370\7\7\7\302\0\0\0l\0\0\0\36\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\20\20\20\37\7\7\7\344\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377PPP\377\317\317\317\377\371\371\371\377"
+  "\377\377\377\377\363\363\363\377\253\253\253\377\236\236\236\377\350"
+  "\350\350\377\376\376\376\377\374\374\374\377\313\313\313\377UUU\377\16"
+  "\16\16\377\10\10\10\377\10\10\10\377\2\2\2\377\2\2\2\377\1\1\1\377\1"
+  "\1\1\377\1\1\1\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\5\5\5\363"
+  "\5\5\5\273\0\0\0g\0\0\0\34\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\21\21\21\30\14\14\14\277\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\26\26\26\377xxx\377\335\335\335\377\367\367\367\377\277\277"
+  "\277\377\247\247\247\377\362\362\362\377\376\376\376\377\373\373\373"
+  "\377\331\331\331\377zzz\377\35\35\35\377\11\11\11\377\16\16\16\377\14"
+  "\14\14\377\7\7\7\377\5\5\5\377\5\5\5\377\4\4\4\377\2\2\2\377\2\2\2\377"
+  "\1\1\1\377\1\1\1\377\1\1\1\377\7\7\7\354\7\7\7\261\0\0\0]\0\0\0\27\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\33\33\33\16\20\20\20\215"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\2\2\2\377!!!\377m"
+  "mm\377\257\257\257\377\254\254\254\377\331\331\331\377\371\371\371\377"
+  "\341\341\341\377\267\267\267\377mmm\377###\377\13\13\13\377\17\17\17"
+  "\377\35\35\35\377\20\20\20\377\16\16\16\377\15\15\15\377\15\15\15\377"
+  "\12\12\12\377\5\5\5\377\4\4\4\377\3\3\3\377\2\2\2\377\3\3\3\376\10\10"
+  "\10\342\5\5\5\241\0\0\0N\0\0\0\21\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0)))\5\22\22\22V\4\4\4\366\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\2\2\2\377\20\20\20\377222\377YYY\377rrr\377xxx\377"
+  "```\377555\377\23\23\23\377\10\10\10\377\15\15\15\377(((\377***\377\33"
+  "\33\33\377\27\27\27\377\31\31\31\377\26\26\26\377\16\16\16\377\10\10"
+  "\10\377\7\7\7\377\6\6\6\377\4\4\4\377\11\11\11\372\11\11\11\324\1\1\1"
+  "\216\0\0\0=\0\0\0\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\34\34\34\1\26\26\26""0\13\13\13\311\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\3\3\3\377\11\11\11\377\14\14"
+  "\14\377\13\13\13\377\11\11\11\377\4\4\4\377\5\5\5\377\12\12\12\377\37"
+  "\37\37\377000\377'''\377***\377,,,\377...\377\40\40\40\377\21\21\21\377"
+  "\13\13\13\377\12\12\12\377\5\5\5\377\7\7\7\377\15\15\15\361\12\12\12"
+  "\300\0\0\0x\0\0\0+\0\0\0\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\31\31\31\17\15\15\15\200\3\3\3\376\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\1\1\1\377\2\2\2\377\7\7\7\377\23\23\23\377\36\36\36\377&&"
+  "&\377(((\377<<<\377EEE\377888\377'''\377\24\24\24\377\22\22\22\377\23"
+  "\23\23\377\7\7\7\377\15\15\15\375\16\16\16\342\2\2\2\246\0\0\0\\\0\0"
+  "\0\32\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\2\16\16\16:\6\6\6\305\0\0\0\376\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\2\2\2\377\6\6\6\377\12\12\12\377\24\24\24\377\36\36\36\377+++\377KK"
+  "K\377DDD\377999\377###\377\34\34\34\377\34\34\34\377\17\17\17\377\15"
+  "\15\15\377\24\24\24\363\10\10\10\303\0\0\0\206\0\0\0:\0\0\0\14\0\0\0"
+  "\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\34"
+  "\34\34\17\15\15\15y\3\3\3\355\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\3\3\3\377\6\6\6\377\17\17\17\377\40\40\40\377999\377===\377888\377)"
+  "))\377\"\"\"\377###\377\35\35\35\377\23\23\23\377\34\34\34\373\21\21"
+  "\21\334\0\0\0\244\0\0\0`\0\0\0\40\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\24\24\24,\11\11"
+  "\11\253\1\1\1\370\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\1\1\1\377\2\2\2\377\10\10\10"
+  "\377\20\20\20\377\34\34\34\377)))\377***\377\"\"\"\377$$$\377,,,\377"
+  "$$$\377\32\32\32\377\35\35\35\377\35\35\35\353\6\6\6\272\0\0\0\200\0"
+  "\0\0""9\0\0\0\15\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\10\23\23\23K\7\7\7\313\1\1"
+  "\1\374\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\1\1\1\377\3\3\3\377\7\7\7\377\14\14\14\377\22\22"
+  "\22\377\31\31\31\377\31\31\31\377\37\37\37\377%%%\377'''\377$$$\377&"
+  "&&\377&&&\364\13\13\13\310\0\0\0\227\0\0\0R\0\0\0\32\0\0\0\4\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\2\25\25\25\20\11\11\11]\2\2\2\326\0\0\0\377\0\0\0"
+  "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\2\2\2\377\4\4\4\377\10\10\10\377\13\13\13\377\17\17\17\377\27"
+  "\27\27\377\37\37\37\377\32\32\32\377\30\30\30\377---\377%%%\363\17\17"
+  "\17\322\0\0\0\242\0\0\0e\0\0\0(\0\0\0\10\0\0\0\1\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\3\1\1\1\27\2\2\2]\7\7\7\343\0\0\0\377\0\0\0\377\0\0\0"
+  "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\1\1\1\377\2"
+  "\2\2\377\5\5\5\377\12\12\12\377\20\20\20\377\22\22\22\377\23\23\23\377"
+  "\24\24\24\377!!!\377$$$\363\15\15\15\322\1\1\1\253\0\0\0m\0\0\0""1\0"
+  "\0\0\15\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\1"
+  "\1\1\26\22\22\22a\10\10\10\322\1\1\1\376\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\2\2\2\377\5\5\5\377\10\10\10"
+  "\377\14\14\14\377\12\12\12\377\23\23\23\377!!!\376\37\37\37\357\14\14"
+  "\14\316\1\1\1\252\0\0\0u\0\0\0""1\0\0\0\16\0\0\0\2\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\25\13\13\13"
+  "I\20\20\20\250\5\5\5\352\1\1\1\373\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+  "\0\0\377\0\0\0\377\1\1\1\377\3\3\3\377\4\4\4\377\6\6\6\377\15\15\15\376"
+  "\27\27\27\367\25\25\25\337\5\5\5\275\0\0\0\232\0\0\0g\0\0\0/\0\0\0\12"
+  "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\24\11\11\11""8\15\15\15z\10\10\10\302"
+  "\4\4\4\351\3\3\3\371\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+  "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\1\1\1\377\3\3\3\377"
+  "\11\11\11\374\13\13\13\366\16\16\16\345\13\13\13\310\1\1\1\251\0\0\0"
+  "\206\0\0\0V\0\0\0)\0\0\0\14\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0"
+  "\0\0\15\0\0\0&\5\5\5M\14\14\14\205\12\12\12\272\6\6\6\334\4\4\4\354\5"
+  "\5\5\366\5\5\5\373\4\4\4\376\1\1\1\377\0\0\0\377\5\5\5\377\3\3\3\374"
+  "\5\5\5\370\6\6\6\362\7\7\7\352\11\11\11\334\13\13\13\307\1\1\1\250\0"
+  "\0\0\214\0\0\0g\0\0\0>\0\0\0\34\0\0\0\11\0\0\0\1\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\7\0\0\0\25\0\0\0,\0\0\0K\13\13\13"
+  "v\10\10\10\231\11\11\11\263\11\11\11\305\7\7\7\320\2\2\2\325\1\1\1\327"
+  "\10\10\10\327\6\6\6\322\11\11\11\312\11\11\11\276\6\6\6\254\1\1\1\230"
+  "\0\0\0\201\0\0\0a\0\0\0A\0\0\0#\0\0\0\17\0\0\0\4\0\0\0\1\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\10"
+  "\0\0\0\23\0\0\0&\0\0\0:\0\0\0O\1\1\1b\2\2\2q\0\0\0|\0\0\0\201\1\1\1\202"
+  "\1\1\1\177\0\0\0x\0\0\0l\0\0\0\\\0\0\0H\0\0\0""3\0\0\0\36\0\0\0\16\0"
+  "\0\0\5\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\5\0\0\0\13\0"
+  "\0\0\22\0\0\0\34\0\0\0$\0\0\0+\0\0\0/\0\0\0/\0\0\0.\0\0\0)\0\0\0!\0\0"
+  "\0\30\0\0\0\20\0\0\0\10\0\0\0\4\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\2\0\0\0\3\0\0\0"
+  "\3\0\0\0\4\0\0\0\4\0\0\0\3\0\0\0\3\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"};
index b528d786bfe4637b060554ab59e95f4d1c73778b..698e7aa7141344c189f59e6461f08e845f3b5b20 100644 (file)
@@ -18,7 +18,7 @@
  
     File: tX_icon.h
  
-    Description: Header to tX_icon.c / defines the heavily used
+    Description: Header to tX_icon.c
 
 */    
-extern char * tX_icon_xpm[];
+extern const guint8 tX_icon[];
index ecd898d015970e124713295efc3e79de88b9f713..296f8b4f659505b72e907921ad42d2e3bc30cd9a 100644 (file)
@@ -835,9 +835,11 @@ int16_t * vtt_class :: render_all_turntables()
        pthread_mutex_lock(&render_lock);
        
        if (render_list.size()==0) {
-               for (sample=0; sample<samples_in_mix_buffer; sample++) {
-                       mix_out_buffer[sample]=0;
-               }
+               memset((void *) mix_out_buffer, 0, sizeof(int16_t)*samples_in_mix_buffer);
+               /* We need to memset mix_buffer, too, as the JACK backend
+                  acesses this directly.
+               */
+               memset((void *) mix_buffer, 0, sizeof(float)*samples_in_mix_buffer);
        } else {
                        vtt=render_list.begin();
                        (*vtt)->render();