]> git.alsa-project.org Git - alsa-tools.git/commitdiff
added hdspmixer by Thomas Charbonnel
authorTakashi Iwai <tiwai@suse.de>
Mon, 28 Jul 2003 11:32:32 +0000 (11:32 +0000)
committerTakashi Iwai <tiwai@suse.de>
Mon, 28 Jul 2003 11:32:32 +0000 (11:32 +0000)
102 files changed:
Makefile
hdspmixer/AUTHORS [new file with mode: 0644]
hdspmixer/COPYING [new file with mode: 0644]
hdspmixer/ChangeLog [new file with mode: 0644]
hdspmixer/INSTALL [new file with mode: 0644]
hdspmixer/Makefile.am [new file with mode: 0644]
hdspmixer/NEWS [new file with mode: 0644]
hdspmixer/README [new file with mode: 0644]
hdspmixer/TODO [new file with mode: 0644]
hdspmixer/configure.in [new file with mode: 0644]
hdspmixer/cvscompile [new file with mode: 0644]
hdspmixer/pixmaps/Makefile.am [new file with mode: 0644]
hdspmixer/pixmaps/Slider1.xpm [new file with mode: 0644]
hdspmixer/pixmaps/Slider2.xpm [new file with mode: 0644]
hdspmixer/pixmaps/Zlmloop2.xpm [new file with mode: 0644]
hdspmixer/pixmaps/Zlmloopm2.xpm [new file with mode: 0644]
hdspmixer/pixmaps/b_blank.xpm [new file with mode: 0644]
hdspmixer/pixmaps/b_card1.xpm [new file with mode: 0644]
hdspmixer/pixmaps/b_card2.xpm [new file with mode: 0644]
hdspmixer/pixmaps/b_card3.xpm [new file with mode: 0644]
hdspmixer/pixmaps/b_mute.xpm [new file with mode: 0644]
hdspmixer/pixmaps/b_pre1.xpm [new file with mode: 0644]
hdspmixer/pixmaps/b_pre2.xpm [new file with mode: 0644]
hdspmixer/pixmaps/b_pre3.xpm [new file with mode: 0644]
hdspmixer/pixmaps/b_pre4.xpm [new file with mode: 0644]
hdspmixer/pixmaps/b_pre5.xpm [new file with mode: 0644]
hdspmixer/pixmaps/b_pre6.xpm [new file with mode: 0644]
hdspmixer/pixmaps/b_pre7.xpm [new file with mode: 0644]
hdspmixer/pixmaps/b_pre8.xpm [new file with mode: 0644]
hdspmixer/pixmaps/b_save.xpm [new file with mode: 0644]
hdspmixer/pixmaps/b_solo.xpm [new file with mode: 0644]
hdspmixer/pixmaps/b_zlm.xpm [new file with mode: 0644]
hdspmixer/pixmaps/buttons.xpm [new file with mode: 0644]
hdspmixer/pixmaps/empty.xpm [new file with mode: 0644]
hdspmixer/pixmaps/empty_2.xpm [new file with mode: 0644]
hdspmixer/pixmaps/empty_linux.xpm [new file with mode: 0644]
hdspmixer/pixmaps/iomixer.xpm [new file with mode: 0644]
hdspmixer/pixmaps/level.xpm [new file with mode: 0644]
hdspmixer/pixmaps/monitor.xpm [new file with mode: 0644]
hdspmixer/pixmaps/mute.xpm [new file with mode: 0644]
hdspmixer/pixmaps/output.xpm [new file with mode: 0644]
hdspmixer/pixmaps/over.xpm [new file with mode: 0644]
hdspmixer/pixmaps/peak.xpm [new file with mode: 0644]
hdspmixer/pixmaps/solo.xpm [new file with mode: 0644]
hdspmixer/src/HDSPMixerAbout.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerAbout.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerAboutText.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerAboutText.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerButtons.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerButtons.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerCard.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerCard.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerCardSelector.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerCardSelector.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerEmpty.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerEmpty.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerFader.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerFader.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerGain.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerGain.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerIOMixer.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerIOMixer.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerInputs.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerInputs.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerMaster.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerMaster.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerMeter.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerMeter.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerMuteSolo.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerMuteSolo.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerOutput.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerOutput.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerOutputData.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerOutputData.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerOutputs.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerOutputs.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerPan.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerPan.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerPeak.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerPeak.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerPlaybacks.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerPlaybacks.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerPresetData.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerPresetData.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerPresets.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerPresets.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerSelector.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerSelector.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerSetup.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerSetup.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerStripData.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerStripData.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerView.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerView.h [new file with mode: 0644]
hdspmixer/src/HDSPMixerWindow.cxx [new file with mode: 0644]
hdspmixer/src/HDSPMixerWindow.h [new file with mode: 0644]
hdspmixer/src/Makefile.am [new file with mode: 0644]
hdspmixer/src/defines.h [new file with mode: 0644]
hdspmixer/src/hdspmixer.cxx [new file with mode: 0644]
hdspmixer/src/mappings.h [new file with mode: 0644]
hdspmixer/src/pixmaps.cxx [new file with mode: 0644]
hdspmixer/src/pixmaps.h [new file with mode: 0644]

index 34f1186cf2fb7e2688e24e3af8573a7465ceb9d7..df553a7235b18139832b95297169b712850be8ab 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 VERSION = 0.9.6
 TOP = .
-SUBDIRS = ac3dec as10k1 envy24control hdsploader hdspconf \
+SUBDIRS = ac3dec as10k1 envy24control hdsploader hdspconf hdspmixer \
        mixartloader rmedigicontrol sb16_csp seq sscape_ctl vxloader
 
 all:
diff --git a/hdspmixer/AUTHORS b/hdspmixer/AUTHORS
new file mode 100644 (file)
index 0000000..38ca8f0
--- /dev/null
@@ -0,0 +1 @@
+Thomas Charbonnel <thomas@undata.org>
diff --git a/hdspmixer/COPYING b/hdspmixer/COPYING
new file mode 100644 (file)
index 0000000..d60c31a
--- /dev/null
@@ -0,0 +1,340 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/hdspmixer/ChangeLog b/hdspmixer/ChangeLog
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/hdspmixer/INSTALL b/hdspmixer/INSTALL
new file mode 100644 (file)
index 0000000..54caf7c
--- /dev/null
@@ -0,0 +1,229 @@
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
+Foundation, Inc.
+
+   This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+   These are generic installation instructions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  (Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.)
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.  If you're
+     using `csh' on an old version of System V, you might need to type
+     `sh ./configure' instead to prevent `csh' from trying to execute
+     `configure' itself.
+
+     Running `configure' takes awhile.  While running, it prints some
+     messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.
+
+  5. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+   If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a
+time in the source code directory.  After you have installed the
+package for one architecture, use `make distclean' before reconfiguring
+for another architecture.
+
+Installation Names
+==================
+
+   By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc.  You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the `--target=TYPE' option to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+will cause the specified gcc to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
+
diff --git a/hdspmixer/Makefile.am b/hdspmixer/Makefile.am
new file mode 100644 (file)
index 0000000..142c278
--- /dev/null
@@ -0,0 +1,7 @@
+SUBDIRS = src pixmaps
+
+alsa-dist: distdir
+       @rm -rf ../distdir/hdspmixer
+       @mkdir -p ../distdir/hdspmixer
+       @cp -RLpv $(distdir)/* ../distdir/hdspmixer
+       @rm -rf $(distdir)
diff --git a/hdspmixer/NEWS b/hdspmixer/NEWS
new file mode 100644 (file)
index 0000000..fc8f074
--- /dev/null
@@ -0,0 +1,9 @@
+Version 1.1 (27/07/2003):
+    * Fixes a typo for Digiface and H9652 cards in HDSPMixerSelector.cxx
+      (caused a crash on startup)
+    * Fixes a menu messing bug in Submix handling
+    * Fixes FLTK detection in configure
+    * Fixes a bug preventing full reset to factory settings
+
+Version 1.0 (27/07/2003):
+    * Initial release
diff --git a/hdspmixer/README b/hdspmixer/README
new file mode 100644 (file)
index 0000000..1a0f53e
--- /dev/null
@@ -0,0 +1,17 @@
+
+
+                               HDSPMixer
+
+
+HDSPMixer is the Linux equivalent of the Totalmix application from RME.
+It is a tool to control the advanced routing features of the RME Hammerfall DSP
+soundcard series.
+
+Users of Totalmix shouldn't be disapointed because HDSPMixer presents the
+same interface.
+New users should read Totalmix documentation available from RME's website
+(http://www.rme-audio.de)
+
+NOTE:
+As the ALT key is often used by window managers, the effect of ALT+Click and
+ALT+Drag can be achieved using mouse button 2.
diff --git a/hdspmixer/TODO b/hdspmixer/TODO
new file mode 100644 (file)
index 0000000..61c7d7c
--- /dev/null
@@ -0,0 +1,9 @@
+Future plans :
+    * add latest Totalmix features (matrix view ?)
+    * midi automation (alsa seq)
+    * ladcca support
+    * integrate with freedesktop.org's notification area (systray like)
+
+Thoughts :
+    * switch to OpenGL for faster meter rendering
+    * import/export presets in the windows/mac format
diff --git a/hdspmixer/configure.in b/hdspmixer/configure.in
new file mode 100644 (file)
index 0000000..aa8585a
--- /dev/null
@@ -0,0 +1,59 @@
+AC_INIT(src/hdspmixer.cxx)
+AM_INIT_AUTOMAKE(hdspmixer, 1.1)
+
+AC_PROG_CXX
+AC_PROG_MAKE_SET
+AC_STDC_HEADERS
+AC_PATH_X
+
+AM_PATH_ALSA(0.9.0)
+
+dnl kernel header files
+AC_MSG_CHECKING(for kernel header files)
+AC_ARG_WITH(kernel,
+  [  --with-kernel=ver       specify kernel version (for example 2.5.5-pre1)],
+  [kerneldir="$withval"], [kerneldir=""])
+if test "$kerneldir" != "" -a -r "/lib/modules/$kerneldir/build/include/sound"; then
+  kerneldir="/lib/modules/$kerneldir/build/include"
+  AC_MSG_RESULT($kerneldir)
+else
+  if test -z "$kerneldir"; then
+    AC_MSG_RESULT("not specified")
+  else
+    AC_MSG_RESULT("directory /lib/modules/$kerneldir/build/include/sound not found")
+  fi
+  kerneldir=""
+fi
+
+dnl path for sound/hdsp.h
+AC_MSG_CHECKING(for directory with ALSA kernel headers)
+AC_ARG_WITH(soundbase,
+  [  --with-soundbase=dir    specify base directory with kernel sound headers (optional)],
+  [soundbasedir="$withval"], [soundbasedir="$kerneldir"])
+if test "$soundbasedir" != "" -a -r "$soundbasedir/sound" ; then
+  ALSA_CFLAGS="$ALSA_CFLAGS -I$soundbasedir"
+  CFLAGS="$CFLAGS -I$soundbasedir"
+  AC_MSG_RESULT($ALSA_CFLAGS)
+else
+  if test "x$prefix" != xNONE; then
+    aprefix=$prefix
+  else
+    aprefix=$ac_default_prefix
+  fi
+  if test -z "$soundbasedir" -a -r "$aprefix/include/sound"; then
+    ALSA_CFLAGS="$ALSA_CFLAGS -I$aprefix/include"
+    CFLAGS="$CFLAGS -I$aprefix/include"
+    AC_MSG_RESULT($ALSA_CFLAGS)
+  else
+    AC_MSG_RESULT("not specified - using C compiler defaults")
+  fi
+fi
+
+AC_PATH_PROG(FLTK_CONFIG, fltk-config, no)
+if test "$FLTK_CONFIG" = "no"; then
+  AC_MSG_ERROR(no fltk-config is found)
+fi
+LIBS="-s `fltk-config --ldflags` -lasound"
+CXXFLAGS="`fltk-config --cxxflags` -fno-exceptions $ALSA_CFLAGS"
+
+AC_OUTPUT(Makefile src/Makefile pixmaps/Makefile)
diff --git a/hdspmixer/cvscompile b/hdspmixer/cvscompile
new file mode 100644 (file)
index 0000000..3a5537d
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+if test "x$AUTOMAKE_DIR" = "x"; then
+  if test -d /usr/local/share/automake; then
+    AUTOMAKE_DIR=/usr/local/share/automake
+  fi
+  if test -d /usr/share/automake; then
+    AUTOMAKE_DIR="/usr/share/automake"
+  fi
+fi
+
+for f in install-sh mkinstalldirs missing; do
+  cp -av $AUTOMAKE_DIR/$f .
+done
+
+aclocal $ACLOCAL_FLAGS
+automake --add-missing --copy
+touch depcomp
+autoconf
+export CFLAGS='-O2 -Wall -pipe -g'
+echo "CFLAGS=$CFLAGS"
+echo "./configure $@"
+./configure $@
+unset CFLAGS
+make
diff --git a/hdspmixer/pixmaps/Makefile.am b/hdspmixer/pixmaps/Makefile.am
new file mode 100644 (file)
index 0000000..7278f3b
--- /dev/null
@@ -0,0 +1 @@
+EXTRA_DIST = $(wildcard *.xpm)
diff --git a/hdspmixer/pixmaps/Slider1.xpm b/hdspmixer/pixmaps/Slider1.xpm
new file mode 100644 (file)
index 0000000..017f4d2
--- /dev/null
@@ -0,0 +1,272 @@
+/* XPM */
+char * Slider1_xpm[] = {
+"13 12 257 2",
+"      c None",
+".     c #000000",
+"+     c #101010",
+"@     c #181010",
+"#     c #202018",
+"$     c #202020",
+"%     c #202920",
+"&     c #292920",
+"*     c #292929",
+"=     c #313129",
+"-     c #313131",
+";     c #393939",
+">     c #4A4A41",
+",     c #4A4A4A",
+"'     c #4A524A",
+")     c #5A524A",
+"!     c #626A62",
+"~     c #6A6A62",
+"{     c #7B736A",
+"]     c #7B7B73",
+"^     c #7B8373",
+"/     c #83837B",
+"(     c #8B8B83",
+"_     c #94948B",
+":     c #9C9C9C",
+"<     c #A4A49C",
+"[     c #ACACA4",
+"}     c #B4B4AC",
+"|     c #BDBDB4",
+"1     c #C5C5BD",
+"2     c #D5D5CD",
+"3     c #DEDED5",
+"4     c #EEEEEE",
+"5     c #F6F6F6",
+"6     c #00FF99",
+"7     c #00FFCC",
+"8     c #00FFFF",
+"9     c #330000",
+"0     c #330033",
+"a     c #330066",
+"b     c #330099",
+"c     c #3300CC",
+"d     c #3300FF",
+"e     c #333300",
+"f     c #333333",
+"g     c #333366",
+"h     c #333399",
+"i     c #3333CC",
+"j     c #3333FF",
+"k     c #336600",
+"l     c #336633",
+"m     c #336666",
+"n     c #336699",
+"o     c #3366CC",
+"p     c #3366FF",
+"q     c #339900",
+"r     c #339933",
+"s     c #339966",
+"t     c #339999",
+"u     c #3399CC",
+"v     c #3399FF",
+"w     c #33CC00",
+"x     c #33CC33",
+"y     c #33CC66",
+"z     c #33CC99",
+"A     c #33CCCC",
+"B     c #33CCFF",
+"C     c #33FF00",
+"D     c #33FF33",
+"E     c #33FF66",
+"F     c #33FF99",
+"G     c #33FFCC",
+"H     c #33FFFF",
+"I     c #660000",
+"J     c #660033",
+"K     c #660066",
+"L     c #660099",
+"M     c #6600CC",
+"N     c #6600FF",
+"O     c #663300",
+"P     c #663333",
+"Q     c #663366",
+"R     c #663399",
+"S     c #6633CC",
+"T     c #6633FF",
+"U     c #666600",
+"V     c #666633",
+"W     c #666666",
+"X     c #666699",
+"Y     c #6666CC",
+"Z     c #6666FF",
+"`     c #669900",
+" .    c #669933",
+"..    c #669966",
+"+.    c #669999",
+"@.    c #6699CC",
+"#.    c #6699FF",
+"$.    c #66CC00",
+"%.    c #66CC33",
+"&.    c #66CC66",
+"*.    c #66CC99",
+"=.    c #66CCCC",
+"-.    c #66CCFF",
+";.    c #66FF00",
+">.    c #66FF33",
+",.    c #66FF66",
+"'.    c #66FF99",
+").    c #66FFCC",
+"!.    c #66FFFF",
+"~.    c #990000",
+"{.    c #990033",
+"].    c #990066",
+"^.    c #990099",
+"/.    c #9900CC",
+"(.    c #9900FF",
+"_.    c #993300",
+":.    c #993333",
+"<.    c #993366",
+"[.    c #993399",
+"}.    c #9933CC",
+"|.    c #9933FF",
+"1.    c #996600",
+"2.    c #996633",
+"3.    c #996666",
+"4.    c #996699",
+"5.    c #9966CC",
+"6.    c #9966FF",
+"7.    c #999900",
+"8.    c #999933",
+"9.    c #999966",
+"0.    c #999999",
+"a.    c #9999CC",
+"b.    c #9999FF",
+"c.    c #99CC00",
+"d.    c #99CC33",
+"e.    c #99CC66",
+"f.    c #99CC99",
+"g.    c #99CCCC",
+"h.    c #99CCFF",
+"i.    c #99FF00",
+"j.    c #99FF33",
+"k.    c #99FF66",
+"l.    c #99FF99",
+"m.    c #99FFCC",
+"n.    c #99FFFF",
+"o.    c #CC0000",
+"p.    c #CC0033",
+"q.    c #CC0066",
+"r.    c #CC0099",
+"s.    c #CC00CC",
+"t.    c #CC00FF",
+"u.    c #CC3300",
+"v.    c #CC3333",
+"w.    c #CC3366",
+"x.    c #CC3399",
+"y.    c #CC33CC",
+"z.    c #CC33FF",
+"A.    c #CC6600",
+"B.    c #CC6633",
+"C.    c #CC6666",
+"D.    c #CC6699",
+"E.    c #CC66CC",
+"F.    c #CC66FF",
+"G.    c #CC9900",
+"H.    c #CC9933",
+"I.    c #CC9966",
+"J.    c #CC9999",
+"K.    c #CC99CC",
+"L.    c #CC99FF",
+"M.    c #CCCC00",
+"N.    c #CCCC33",
+"O.    c #CCCC66",
+"P.    c #CCCC99",
+"Q.    c #CCCCCC",
+"R.    c #CCCCFF",
+"S.    c #CCFF00",
+"T.    c #CCFF33",
+"U.    c #CCFF66",
+"V.    c #CCFF99",
+"W.    c #CCFFCC",
+"X.    c #CCFFFF",
+"Y.    c #FF0000",
+"Z.    c #FF0033",
+"`.    c #FF0066",
+" +    c #FF0099",
+".+    c #FF00CC",
+"++    c #FF00FF",
+"@+    c #FF3300",
+"#+    c #FF3333",
+"$+    c #FF3366",
+"%+    c #FF3399",
+"&+    c #FF33CC",
+"*+    c #FF33FF",
+"=+    c #FF6600",
+"-+    c #FF6633",
+";+    c #FF6666",
+">+    c #FF6699",
+",+    c #FF66CC",
+"'+    c #FF66FF",
+")+    c #FF9900",
+"!+    c #FF9933",
+"~+    c #FF9966",
+"{+    c #FF9999",
+"]+    c #FF99CC",
+"^+    c #FF99FF",
+"/+    c #FFCC00",
+"(+    c #FFCC33",
+"_+    c #FFCC66",
+":+    c #FFCC99",
+"<+    c #FFCCCC",
+"[+    c #FFCCFF",
+"}+    c #FFFF00",
+"|+    c #FFFF33",
+"1+    c #FFFF66",
+"2+    c #FFFF99",
+"3+    c #FFFFCC",
+"4+    c #FFFFFF",
+"5+    c #000000",
+"6+    c #0D0D0D",
+"7+    c #1A1A1A",
+"8+    c #282828",
+"9+    c #353535",
+"0+    c #434343",
+"a+    c #505050",
+"b+    c #5D5D5D",
+"c+    c #6B6B6B",
+"d+    c #787878",
+"e+    c #868686",
+"f+    c #939393",
+"g+    c #A1A1A1",
+"h+    c #AEAEAE",
+"i+    c #BBBBBB",
+"j+    c #C9C9C9",
+"k+    c #D6D6D6",
+"l+    c #E4E4E4",
+"m+    c #F1F1F1",
+"n+    c #FFFFFF",
+"o+    c #0E4C00",
+"p+    c #0A0080",
+"q+    c #000403",
+"r+    c #BE0F17",
+"s+    c #0F3404",
+"t+    c #7B04BC",
+"u+    c #04BD0A",
+"v+    c #05050A",
+"w+    c #17F700",
+"x+    c #A0035A",
+"y+    c #019A14",
+"z+    c #64176E",
+"A+    c #186604",
+"B+    c #57019D",
+"C+    c #035917",
+"D+    c #01030B",
+"E+    c #0CF000",
+"F+    c #5C0072",
+"G+    c #00710C",
+"H+    c #B2006C",
+"| / / / / / / / / / / / ' ",
+"| 2 5 5 5 5 5 5 5 4 | ] / ",
+"[ } 2 2 2 2 2 2 2 2 ( ) ; ",
+"[ [ / / / / / / / ^ { , - ",
+": { - ; - ; - ; - - = $ & ",
+"~ # - - - - - - - - - - # ",
+"< [ _ _ _ _ _ _ _ _ ( ! & ",
+"^ [ 3 3 3 3 3 3 3 2 / @ . ",
+"~ ] < 2 2 2 2 2 2 < = ; . ",
+"! ] < < < < < < < < - ; . ",
+"' ~ * * * * * * * % + ; . ",
+"' ; ; ; ; ; ; ; ; . ; . ; "};
diff --git a/hdspmixer/pixmaps/Slider2.xpm b/hdspmixer/pixmaps/Slider2.xpm
new file mode 100644 (file)
index 0000000..f7d76b1
--- /dev/null
@@ -0,0 +1,273 @@
+/* XPM */
+char * Slider2_xpm[] = {
+"2 13 257 2",
+"      c None",
+".     c #7DF846",
+"+     c #000032",
+"@     c #000065",
+"#     c #000098",
+"$     c #0000CB",
+"%     c #0000FF",
+"&     c #003200",
+"*     c #003232",
+"=     c #003265",
+"-     c #003298",
+";     c #0032CB",
+">     c #0032FF",
+",     c #006500",
+"'     c #006532",
+")     c #006565",
+"!     c #006598",
+"~     c #0065CB",
+"{     c #0065FF",
+"]     c #009800",
+"^     c #009832",
+"/     c #009865",
+"(     c #009898",
+"_     c #0098CB",
+":     c #0098FF",
+"<     c #00CB00",
+"[     c #00CB32",
+"}     c #00CB65",
+"|     c #00CB98",
+"1     c #00CBCB",
+"2     c #00CBFF",
+"3     c #00FF00",
+"4     c #00FF32",
+"5     c #00FF65",
+"6     c #00FF98",
+"7     c #00FFCB",
+"8     c #00FFFF",
+"9     c #320000",
+"0     c #320032",
+"a     c #320065",
+"b     c #320098",
+"c     c #3200CB",
+"d     c #3200FF",
+"e     c #323200",
+"f     c #333333",
+"g     c #080890",
+"h     c #0808C3",
+"i     c #0808F6",
+"j     c #3232FF",
+"k     c #326500",
+"l     c #089008",
+"m     c #089090",
+"n     c #0865C3",
+"o     c #0857F6",
+"p     c #3265FF",
+"q     c #329800",
+"r     c #08C308",
+"s     c #08C365",
+"t     c #08C3C3",
+"u     c #08A7F6",
+"v     c #3298FF",
+"w     c #32CB00",
+"x     c #08F608",
+"y     c #08F657",
+"z     c #08F6A7",
+"A     c #08F6F6",
+"B     c #32CBFF",
+"C     c #32FF00",
+"D     c #32FF32",
+"E     c #32FF65",
+"F     c #32FF98",
+"G     c #32FFCB",
+"H     c #32FFFF",
+"I     c #650000",
+"J     c #650032",
+"K     c #650065",
+"L     c #650098",
+"M     c #6500CB",
+"N     c #6500FF",
+"O     c #653200",
+"P     c #900808",
+"Q     c #900890",
+"R     c #6508C3",
+"S     c #5708F6",
+"T     c #6532FF",
+"U     c #656500",
+"V     c #909008",
+"W     c #666666",
+"X     c #1010EE",
+"Y     c #3A3AF7",
+"Z     c #6565FF",
+"`     c #659800",
+" .    c #65C308",
+"..    c #10EE10",
+"+.    c #10EEEE",
+"@.    c #3A98F7",
+"#.    c #6598FF",
+"$.    c #65CB00",
+"%.    c #57F608",
+"&.    c #3AF73A",
+"*.    c #3AF798",
+"=.    c #3AF7F7",
+"-.    c #65CBFF",
+";.    c #65FF00",
+">.    c #65FF32",
+",.    c #65FF65",
+"'.    c #65FF98",
+").    c #65FFCB",
+"!.    c #65FFFF",
+"~.    c #980000",
+"{.    c #980032",
+"].    c #980065",
+"^.    c #980098",
+"/.    c #9800CB",
+"(.    c #9800FF",
+"_.    c #983200",
+":.    c #C30808",
+"<.    c #C30865",
+"[.    c #C308C3",
+"}.    c #A708F6",
+"|.    c #9832FF",
+"1.    c #986500",
+"2.    c #C36508",
+"3.    c #EE1010",
+"4.    c #EE10EE",
+"5.    c #983AF7",
+"6.    c #9865FF",
+"7.    c #989800",
+"8.    c #C3C308",
+"9.    c #EEEE10",
+"0.    c #999999",
+"a.    c #6D6DF6",
+"b.    c #9898FF",
+"c.    c #98CB00",
+"d.    c #A7F608",
+"e.    c #98F73A",
+"f.    c #6DF66D",
+"g.    c #6DF6F6",
+"h.    c #98CBFF",
+"i.    c #98FF00",
+"j.    c #98FF32",
+"k.    c #98FF65",
+"l.    c #98FF98",
+"m.    c #98FFCB",
+"n.    c #98FFFF",
+"o.    c #CB0000",
+"p.    c #CB0032",
+"q.    c #CB0065",
+"r.    c #CB0098",
+"s.    c #CB00CB",
+"t.    c #CB00FF",
+"u.    c #CB3200",
+"v.    c #F60808",
+"w.    c #F60857",
+"x.    c #F608A7",
+"y.    c #F608F6",
+"z.    c #CB32FF",
+"A.    c #CB6500",
+"B.    c #F65708",
+"C.    c #F73A3A",
+"D.    c #F73A98",
+"E.    c #F73AF7",
+"F.    c #CB65FF",
+"G.    c #CB9800",
+"H.    c #F6A708",
+"I.    c #F7983A",
+"J.    c #F66D6D",
+"K.    c #F66DF6",
+"L.    c #CB98FF",
+"M.    c #CBCB00",
+"N.    c #F6F608",
+"O.    c #F7F73A",
+"P.    c #F6F66D",
+"Q.    c #CCCCCC",
+"R.    c #CBCBFF",
+"S.    c #CBFF00",
+"T.    c #CBFF32",
+"U.    c #CBFF65",
+"V.    c #CBFF98",
+"W.    c #CBFFCB",
+"X.    c #CBFFFF",
+"Y.    c #FF0000",
+"Z.    c #FF0032",
+"`.    c #FF0065",
+" +    c #FF0098",
+".+    c #FF00CB",
+"++    c #FF00FF",
+"@+    c #FF3200",
+"#+    c #FF3232",
+"$+    c #FF3265",
+"%+    c #FF3298",
+"&+    c #FF32CB",
+"*+    c #FF32FF",
+"=+    c #FF6500",
+"-+    c #FF6532",
+";+    c #FF6565",
+">+    c #FF6598",
+",+    c #FF65CB",
+"'+    c #FF65FF",
+")+    c #FF9800",
+"!+    c #FF9832",
+"~+    c #FF9865",
+"{+    c #FF9898",
+"]+    c #FF98CB",
+"^+    c #FF98FF",
+"/+    c #FFCB00",
+"(+    c #FFCB32",
+"_+    c #FFCB65",
+":+    c #FFCB98",
+"<+    c #FFCBCB",
+"[+    c #FFCBFF",
+"}+    c #FFFF00",
+"|+    c #FFFF32",
+"1+    c #FFFF65",
+"2+    c #FFFF98",
+"3+    c #FFFFCB",
+"4+    c #FFFFFF",
+"5+    c #000000",
+"6+    c #0D0D0D",
+"7+    c #1A1A1A",
+"8+    c #282828",
+"9+    c #353535",
+"0+    c #434343",
+"a+    c #505050",
+"b+    c #5D5D5D",
+"c+    c #6B6B6B",
+"d+    c #787878",
+"e+    c #868686",
+"f+    c #939393",
+"g+    c #A1A1A1",
+"h+    c #AEAEAE",
+"i+    c #BBBBBB",
+"j+    c #C9C9C9",
+"k+    c #D6D6D6",
+"l+    c #E4E4E4",
+"m+    c #F1F1F1",
+"n+    c #FFFFFF",
+"o+    c #0D4B00",
+"p+    c #09007F",
+"q+    c #010101",
+"r+    c #C9020B",
+"s+    c #0D3700",
+"t+    c #7B00BF",
+"u+    c #00BF06",
+"v+    c #070707",
+"w+    c #16F600",
+"x+    c #A2005A",
+"y+    c #009A13",
+"z+    c #720381",
+"A+    c #156800",
+"B+    c #56009D",
+"C+    c #005B15",
+"D+    c #050506",
+"E+    c #0BEF00",
+"F+    c #5B0071",
+"G+    c #00700B",
+"H+    c #B1006B",
+". . ",
+". . ",
+". . ",
+". . ",
+". . ",
+". . ",
+". . ",
+". . ",
+". . ",
+". . ",
+". . ",
+". . ",
+". . "};
diff --git a/hdspmixer/pixmaps/Zlmloop2.xpm b/hdspmixer/pixmaps/Zlmloop2.xpm
new file mode 100644 (file)
index 0000000..42377c9
--- /dev/null
@@ -0,0 +1,513 @@
+/* XPM */
+char * Zlmloop2_xpm[] = {
+"76 253 257 2",
+"      c None",
+".     c #D1E0E5",
+"+     c #E7F6F9",
+"@     c #F2FFFF",
+"#     c #FBFFFF",
+"$     c #FFFFFF",
+"%     c #C4CACB",
+"&     c #C7D5D9",
+"*     c #BECDD2",
+"=     c #B8C5C9",
+"-     c #AEBDC1",
+";     c #B2BDC2",
+">     c #A0A09F",
+",     c #B5B6B6",
+"'     c #A9B5B9",
+")     c #A2ADB2",
+"!     c #A1ACAE",
+"~     c #AAAAAA",
+"{     c #A6A6A6",
+"]     c #A0A0A0",
+"^     c #9CA5A9",
+"/     c #9F9FA0",
+"(     c #939DA1",
+"_     c #9FA09F",
+":     c #A09F9F",
+"<     c #90928F",
+"[     c #949A9B",
+"}     c #9B9C9B",
+"|     c #9D9E9D",
+"1     c #999A99",
+"2     c #969896",
+"3     c #919391",
+"4     c #959795",
+"5     c #929592",
+"6     c #899497",
+"7     c #8C969A",
+"8     c #8A9395",
+"9     c #848E91",
+"0     c #8C918C",
+"a     c #8D918D",
+"b     c #888C87",
+"c     c #8B8E8B",
+"d     c #898D89",
+"e     c #8A8E8A",
+"f     c #828B8D",
+"g     c #868C86",
+"h     c #858A85",
+"i     c #828982",
+"j     c #818587",
+"k     c #818681",
+"l     c #7C8789",
+"m     c #7D8689",
+"n     c #7B8385",
+"o     c #D170D1",
+"p     c #C54CC5",
+"q     c #A837A8",
+"r     c #902F90",
+"s     c #7070D1",
+"t     c #4C4CC5",
+"u     c #757E81",
+"v     c #3737A8",
+"w     c #2F2F90",
+"x     c #80857F",
+"y     c #7F887F",
+"z     c #7E847E",
+"A     c #7E817E",
+"B     c #7A807A",
+"C     c #708070",
+"D     c #6E716E",
+"E     c #737877",
+"F     c #787F78",
+"G     c #737B7C",
+"H     c #747C73",
+"I     c #767D76",
+"J     c #747C74",
+"K     c #757B75",
+"L     c #747B74",
+"M     c #737B74",
+"N     c #747B73",
+"O     c #727972",
+"P     c #737B73",
+"Q     c #717971",
+"R     c #707870",
+"S     c #6D7679",
+"T     c #6C7274",
+"U     c #686E71",
+"V     c #70786F",
+"W     c #707060",
+"X     c #616669",
+"Y     c #696C6A",
+"Z     c #6D6E6D",
+"`     c #6F6F6F",
+" .    c #646B6D",
+"..    c #666966",
+"+.    c #626563",
+"@.    c #616561",
+"#.    c #5C6365",
+"$.    c #595F61",
+"%.    c #5F685F",
+"&.    c #5B605B",
+"*.    c #5E615E",
+"=.    c #506050",
+"-.    c #494F51",
+";.    c #545A5C",
+">.    c #5A5D5A",
+",.    c #5A5E5A",
+"'.    c #595C59",
+").    c #545954",
+"!.    c #565956",
+"~.    c #575A56",
+"{.    c #555855",
+"].    c #535654",
+"^.    c #545554",
+"/.    c #545754",
+"(.    c #515651",
+"_.    c #535653",
+":.    c #525552",
+"<.    c #515451",
+"[.    c #515551",
+"}.    c #505450",
+"|.    c #515251",
+"1.    c #515351",
+"2.    c #505350",
+"3.    c #4D5254",
+"4.    c #50584F",
+"5.    c #50544F",
+"6.    c #4F584F",
+"7.    c #4C504B",
+"8.    c #4F544F",
+"9.    c #4E524D",
+"0.    c #4E534E",
+"a.    c #4F534F",
+"b.    c #4F524F",
+"c.    c #4E524E",
+"d.    c #4F514F",
+"e.    c #4F504F",
+"f.    c #4E514E",
+"g.    c #4D524D",
+"h.    c #4C514C",
+"i.    c #4D514D",
+"j.    c #4D504D",
+"k.    c #4C504C",
+"l.    c #4B504B",
+"m.    c #405040",
+"n.    c #45494B",
+"o.    c #4A4E4E",
+"p.    c #4D4E4D",
+"q.    c #4C4E4C",
+"r.    c #4C4F4C",
+"s.    c #494E49",
+"t.    c #4A4F4A",
+"u.    c #4B4F4B",
+"v.    c #4B4E4B",
+"w.    c #4A4E4A",
+"x.    c #4B4C4B",
+"y.    c #4A4D4A",
+"z.    c #484D48",
+"A.    c #494D49",
+"B.    c #494C49",
+"C.    c #484C48",
+"D.    c #494A49",
+"E.    c #484A48",
+"F.    c #484B48",
+"G.    c #484C47",
+"H.    c #444843",
+"I.    c #474C47",
+"J.    c #464A45",
+"K.    c #464B46",
+"L.    c #474B47",
+"M.    c #474A47",
+"N.    c #464A46",
+"O.    c #464946",
+"P.    c #454A45",
+"Q.    c #444944",
+"R.    c #454945",
+"S.    c #454845",
+"T.    c #444844",
+"U.    c #404840",
+"V.    c #434843",
+"W.    c #434644",
+"X.    c #454645",
+"Y.    c #454645",
+"Z.    c #444744",
+"`.    c #424641",
+" +    c #434643",
+".+    c #434743",
+"++    c #424642",
+"@+    c #424542",
+"#+    c #414641",
+"$+    c #404440",
+"%+    c #414541",
+"&+    c #414242",
+"*+    c #404340",
+"=+    c #3E4142",
+"-+    c #6B236B",
+";+    c #531B53",
+">+    c #4D194D",
+",+    c #471747",
+"'+    c #23236B",
+")+    c #3C3E40",
+"!+    c #1B1B53",
+"~+    c #19194D",
+"{+    c #171747",
+"]+    c #40433F",
+"^+    c #40483F",
+"/+    c #3B403B",
+"(+    c #3F443F",
+"_+    c #3D423D",
+":+    c #3F423F",
+"<+    c #3E413E",
+"[+    c #3D403D",
+"}+    c #1F2420",
+"|+    c #2D3030",
+"1+    c #363A39",
+"2+    c #3B3F3D",
+"3+    c #3E3E3E",
+"4+    c #3C3F3C",
+"5+    c #3A3D3A",
+"6+    c #3B3F3B",
+"7+    c #393D39",
+"8+    c #383B39",
+"9+    c #373C37",
+"0+    c #363A36",
+"a+    c #303F30",
+"b+    c #333534",
+"c+    c #323532",
+"d+    c #303730",
+"e+    c #242728",
+"f+    c #2A2C2D",
+"g+    c #2F2F2F",
+"h+    c #212E2E",
+"i+    c #222425",
+"j+    c #202720",
+"k+    c #3B143B",
+"l+    c #1D1F20",
+"m+    c #14143B",
+"n+    c #0F100F",
+"o+    c #1C1C18",
+"p+    c #121212",
+"q+    c #0F1510",
+"r+    c #170817",
+"s+    c #0E0F10",
+"t+    c #080817",
+"u+    c #100F0F",
+"v+    c #07090A",
+"w+    c #0A0A0A",
+"x+    c #0D0D0D",
+"y+    c #0E0E0E",
+"z+    c #0F0F0F",
+"A+    c #0B040B",
+"B+    c #02050D",
+"C+    c #040404",
+"D+    c #050606",
+"E+    c #070707",
+"F+    c #060606",
+"G+    c #030303",
+"H+    c #000000",
+"^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+}+",
+"V W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W g+",
+"> > > > > > > > > > > > > > : : : : : : > > > > : : : : : : : : : : : : : : : : : > > > : : : : : : : : : : : / / / / / / _ _ _ _ _ _ _ _ > > : ] : ` C+",
+"> / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / : ] : ` F+",
+"> / y e.g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+%./ : ] : ` C+",
+"> / y e.6.6.e.e.U.6.m.e.6.(+e.e.e.m.U.6.m.e.6.(+e.e.e.m.U.6.m.j.6.U.e.e.e.m.U.6.m.e.6.U.p.e.4.m.e.6.U.e.e.e.m.U.U.m.m.m.m.m.6.m.U.j.m.e.U.U.] ] ] : ` F+",
+"> / y e.D ..D @.|.'.@.,.]...&.+.*.'.*.*.*.&.1...>.+.*...{.&.....*.@.D ..*.*.&.'.......@...*.,...&.@.*.*.D *.+...*.@.@.:.....*.@.@.>.Z [.j. +] ] ] : ` C+",
+"> / y e.u.~.l.:.h./.].k.h.B.{._.b.c.z.).T.2.f.S.v.A.F.N.0.0.t.'.<.P.M.!.r.{.g.N.h.].2.r.y.{.!.<.z.K.k./.}.M.%+}.K.h.W.c.y.0.).N.z.!.k._.&+0+: ] : : ` F+",
+"/ / y e.*.z.2+.+$+<.W.<+(+(+j.t.y.h.z.P.++_.y.c.$+N.v.Q.h.7+_+q.b.W.S.c.j.!.V.(.s.N.$+S._+K.b.S.y.W.<+<.N.S.N.:.C.s.@+f.s.t.0.(.(.6+ +$+E.b+: ] ] : ` C+",
+"_ / y f.~.F.B.@+Q.[+_+0.).%+0+$ $ $ %+*+k.$ $ $ [.r./.++h.:.h. +(.(.b.y.C.<.(.(.$ $ N._.K.$ K.).v./.++h.:.h. +[.2.T.c.M.b.I.g.[.5+<.j.S. +@+/ ] | / ` F+",
+"_ _ y e.*.).b.b.).b.~./+P.h._.$ $ $ ]+@+L.$ $ $ g.++%+c.<+6+:.F.(.(.c.v.c.8+K.++0.7+N.M.$ $ K.I.%+%+c.<+6+:.F.k.S.s.T.r.y.K._+z.P._+S.s.X.4+] ] / / ` C+",
+": / y e.@.f.[.:+++r.c.y.g.5+*.$ $ $ $ F.$ $ $ $ #+:+$ $ $ $ }.b.$ $ $ $ 0.2.K.I.$ $ 0+$ $ $ $ .+*+$ $ $ $ }.b.$ $ $ $ q.v.I.#+s.!.C..+W.%+&+: | / : ` F+",
+": / y e.&.F.B._.0.b.0+K.8.}.0+$ $ $ $ r.$ $ $ $ 6+$ $ ]+T.$ $ v.$ $ $ $ $ $ _.0.$ $ _.W.$ $ *.8.$ $ ]+T.$ $ v.$ $ t.B.M.$+H.#+_+I.Q.F.S.O.c+: : : | ` F+",
+"/ | y e.{. +).W.c.W.z.t.K.K.c.$ $ (.$ %+$ %+$ $ z.$ $ k.(+$ $ {.$ $ b.y.$ $ (.(.$ $ N._.$ $ I.).$ $ k.(+$ $ {.$ $ ++).y.y.G.I.6+#+.+t.F.O.X.: / | / ` F+",
+"_ : y e.*.$+O.2.[.B.v.'.I.5+%+$ $ #+$ $ $ (.$ $ [.$ $ V.h.$ $ k.$ $ c.v.$ $ K.++$ $ 0+M.$ $ *.h.$ $ V.h.$ $ k.$ $ t.M.7+`.P.s._+8.N._.j.[+8+/ : | / Z F+",
+"/ | y e.b.t.y.b.'.F.z.(.++0..+$ $ #+$ $ $ w.$ $ ~.$ $ z.I.$ $ y.$ $ *.v.$ $ K.I.$ $ N.$+$ $ I.++$ $ z.I.$ $ y.$ $ }.(+7._.).P.}._+++c.~.5+5+: | / / ` F+",
+": | x j.r.y.$+).W.b. +y.c._._+$ $ .+Q.$ 2+t.$ $ $+k.$ $ $ $ t.6+$ $ h.v.$ $ _.0.$ $ *.W.b.$ $ K.k.$ $ $ $ t.6+$ $ z..+f.z.t.K.I.5+%+W.y.@+<+: | | / ` F+",
+"/ | A e.@.}.).K.K.C.$+C.Q.C.$+Z._+_+2.).$+c..+<+S._.N.c.C.T.t..+c._.f.].).(.t.++!..+z.<.K.K.F.F.].).a.i.5+_.j.f.*+++t.}.b.`.g.++0..+O.9.@+<+| : : | ` F+",
+"| / A p.<.[.Q.u.N.M.,.V.c.0.y.k.y.6+(.g.K.w.k.Z.~.<+r.F.K.l.f.].h.2.O.t.S.}.z.I.9+%+K.r.<+2.M.:.f..+C.*+/+r.).(+#+%+$+8.z.I./+c.c._+(+J.d.f+| | / / Z F+",
+"| / y 6.[.N.7+].&.h.z.I.0.K.b.O.y.z._+9+(.h.i. +4+W.<+(+t.s.@+(+%+<.B.y.].K.P.Q.T..+s.y.<.E.:+M.A.g.w.W.S.F.Q.K.5+k.z.I.8+I.S.O.z._+8.7.<+&+| / | | ` F+",
+"| | y 6.[.K.'.c.C.N.l.z.++++F.S.@+h.P.l.C.0.t.].Z.c._.h.#+++Q..+I.u.O.v.j.K.K.}.T.h.[.F.[+*+ +:.H.8.,.F.r.<.s.t.$+K.$+Q.0.t.k.(+<+/+J.J.]+&+: | / | ` F+",
+"| / y 6.<.0.;+>+,+,+,+,+,+,+,+,+,+>+q }.N.s.t.<.&.2+.+h.I.++0.s.2+F.2.0.K.Q.t.0.M.v.'.O.v.y.J.2.K.H.T.5+:+v.h.V.8.Q.z.T.K.8.c.c.8.P.8.5.:+X.| / | | ` F+",
+"| | y e.f.k.r r r r r r r r r r r r ,+P.$+/+.+F._+*+.+s.t._+z.N.2.j.<+<.++P.P.0.t.).y.B.W.i.2.<.h.,.s._+E.[+C.5+V.0.z.}.[.l.h.N.t.s..+A.X.<+| | / | ` C+",
+"| | y 6.d.:.-+r o p p p p p p p p k+r+}.'.k.Q.f. +:.Z.).V.0+C.5+N.r.$+@+v.M.6+}.N.T.<.&. +4+y.j.[.Q.6+O.M.f.t.#+$+K.t._.}.I.N.!.T./+0.`.S.g+/ | | } ` F+",
+"| | y e.&.v.-+r r r r r r r r r r k+r+#+C.$+Q._.y.$ $ $ $ $ w.}.$ N.C.].c.B.$ }.++T.h.r.$ y.*+M.$+g.P.M.!.r.}.8.c.y..+h.k.`.c.N.Q.#+P.[+v.5+| | : | ` C+",
+"| | y 6.)..+-+r r r r r r r r r r k+r+#+Q.F.O.K.<+<.$+,.c.$ w.w.$ z.7+B.5+j.$ $ $+@+v.$ $ i./+b.F.Q.W.S.c.j.t.g.z._+f.].t.#+K.[.c.T./+7.:+E.: | | } ` F+",
+"| | y e.].K.-+r r r r r r r r r r ,+r+t.K.O.f.W.<.5+$+Q.$ <.(+N.$ ~.K.W.$+B.$ $ C.].5+$ $ 7+y.S.:+`.b.y.C.<.c.(+_.t._.:+N.).t.8.8.).'.7.S.8+| | : } ` F+",
+"| } y e.k.c.-+r p r r r r r r r r ,+r+#+z.F.W..+ +c.2.$ $ 5+t.2+$ <+C.].c.B.$ z.$ F.$ j.$ 8+9.'.).C.c.v.c.8+K.++0.7+M.j.].l.P.).c.b.O.t.|.5+| | | | ` F+",
+"| | y e.:.).-+r r r r r r r r r r k+r+t.}.[+<+S.O.<.M.$ I.<.c.M.$ z.7+B.5+j.$ ].$ W.$ B.$ J.7.<+7.z.h.y.0.2.K.I.).s.$+F.K.#+h.I./+).<. +X.<+| | | } ` F+",
+"| } y e.>.z.-+-+r r r r r r r r r ,+r+s.C.:. +C.B.5+$ c.l.5+++v.$ ~.K.W.$+@+$ *+$ C.$ (+$ K.F.*+j.0+h.v.c. +_.0.s.c.W.b.f.g.).Q.h.P.$+r.0+5+| | } | ` F+",
+"} | x f.2.}.-+r p r r r r r r r r k+r+P.t.B.<.v._.$ $ $ $ $ h.@+$ $ $ $ <+!.$ f.s.$ l.z.$ 4+]+@+:..+0.,.C.r.}.z.t.*+F.@+%+$+}.P.#+<+f.A.5+D.} : } } ` F+",
+"| } y e.].O.-+r -+r r r r r r r -+,+r+(+Q.F.2.K.f.z.[+N.I.V.s.B.r.c.*+_.S.k.++}.{.].O.z.4+9. +M.S.j.Z.<.O.v.c.I.5+(+F.].S.8.l.l._+_+_+N.@+8+| } | } ` F+",
+"| } y e.&.v.-+k+r+r+A+A+A+A+A+A+r+A+r+Q.Q.$+:.<.@+0.5+0.V.h.%+5+'.F._.h.2._+h.++(+@+<.M.q./.H. +b.<+%+@+S.S.T.l.K..+B.W.t./+Q.7+~.(+{.++:+4+} | | } ` F+",
+"} } y e.'.h.r+H+H+H+H+H+H+H+H+H+H+H+H+#+z.N.M.++_.R.Q.$+P.#+k.h.j./+A.5+0.Q.z.++_.k.2.(.@+6+]+6+<.%+f.y.b.B.k.5./+K._.S.W.0._+_+_.!..+R.]+&+} } } } ` F+",
+"} } y e.!.:.s.N.k.b.W.C.z.++{.M.(.N.0.F._+$+t.2.r.5+h.Q._.(.$+%+}.<+F.8+P.C.c.C.(._+C._.2+<.`.b.).F.%+S.v.]+K.z.0.J.9.B.c.(.7+g./+_.B.'.D.<+| } | } ` F+",
+"} } y f.).u.K.1.h.@+0.#+L.0+M.K.B.6+Q._+t.!.s.F.<.t.<+c.K.8.$+v.@+:.:+K.y.0.z.h.%+.+t.O.<.k.a.<+R.k.~.r.j.b.S.).s.8+!.c.4+Q.I.V.t.F.v.j.5+W.} } } } ` F+",
+"} } y e.!.K.9+r.(+).t.6.(+i.M.B.:.0+U..+t._.z.v.B.B.!.h.}._+z.z.(+E.<.5+:.t.P.7+C.C.5+N.Z.M.F. +:.}.++2.5+2.S.h.#+7+~.K.s._+A.]+K.8.(.s.*+3+} } } } ` C+",
+"} } y e.*.*+.+ +%+}.z.I.5+c.b.$+@+C._.0+ +y.[.j. +*+O.++P.7+c.s.k.2.y.j.B.%+P.Q.C.K.v.2+@+2.S.2.T.H.H.B.W. +y.s.`.h.5+ +<.7.5._+0.`.(+`.x.5+} } } } ` F+",
+"} } y p.@.@+j.B.j.T.).I.h.:.@+r.j.%+}.8.(+$+%+O.y.B.B.K.7+K.C.T.z.F.S.~.@+$+g.#+6+_+0.F.0+:+<+<.5+`..+]+W.<+@+/+(+8+_+J.@+9+{.*.h.z.I.9.`.&+} } } } ` C+",
+"} } x e.&.r.F.%+%+s.(.(.#+%+ +$+v.N.0.l.0.c.K. +r.W.B.s.z.).}.N.k.r.<.v.B.k./+}./+s.N.{.B.q.B.4+2.l.5.B.f.>.S.z.z..+i.N.T.h.a.R.Q.g.9+9.&+0+} } } } ` F+",
+"} } y e.).%+++w.P.K.#+(.V.P.$+N..+g.l.l.6+z.6+<.O.y.S.).l.0.[.++/+@+4+:. +0.s.0.C.s.}.:+B.{.O.2._.5+b.[+{.v.,.g.h.~.u.C..+H.7+$+s.t.V.5.@+3+} } } } ` C+",
+"} } y e...(+;+>+,+,+,+,+,+,+,+,+,+>+q t./+0.T.F.C.}.j.0.(.z.K.l./+/.<+F._.t.Q._+v.M.S.S.B.2. +`.H.s.7+@+B.E.h./+9.9.K.T.4+).u.:.}.~.(.z.5+8+} } } } ` F+",
+"} } y e.@.'.r r r r r r r r r r r r ,+(+:+*+$+y.F.*.6+.+h.I.++0.s.2+L.2.0.K.Q.s.[.(+{.j.[+B.r.4+t.g.&.9.E.`.7.I.7.%+5+H.0.t.6+_+~.I.6+`.p.c+} 1 } } ` F+",
+"} 1 y f.!.(.-+r o p p p p p p p p k+r+/+_+F.C.z.y._+*+.+s.t.(+z.N.2.j.:+[.++P._+{.S..+_.f.`.F.f.4+u.B.F.G.5+_.H.H.[+`.v.h.7.w.i.u.Q.G.`.S.b+} 1 } 1 ` F+",
+"} 1 y e.}.O.-+r r r r r r r r r r k+r+#+_.r.2.(. +$ v.0.z.Q.~.$ M.$ {.:.F.5+s.z.Q.:.5+b.2+).A.,.a.i.'.v.B.<+!.s.8.0.~._.y.H.G.(.`.c.i..+[+5+1 } } 1 ` F+",
+"1 1 x e.@.L.-+r r r r r r r r r r k+r+Q.T.@+B.*+<+$ $ /+8.$+$ $ b.z.v.2.[+B.(..+h.v.$+y.y.:.[.W.$+<+F.y.(.j.s.V.V.!.S.O.B._+P.V.H.~.b.C.]+[+} 1 1 1 ` F+",
+"} 1 y e.&.v.-+r r r r r r r r r r ,+r+)._.y.y.y.S.$ $ _+%+z.$ $ j.$ v.c.$ M.k.$ 5+:.*+*+'.@+y.O.:.F.%+1.A.y.Q.t.V.Q.B.B.H.G.7.K.P.Q.w.i.b+@+1 } 1 1 ` F+",
+"1 1 y e.>.#+-+r p r r r r r r r r ,+r+s.7+y.j.&.j.$ @+$ t.$ f.$ y.$ r.z.S.$ $ ).).F.@+S.:.B.v.*+>.9+}.j.j.Z.v.P.V.s.!.M.(.V.t.P.0+}.2.B.4+8+1 1 1 1 ` F+",
+"1 1 x e.>.(.-+r r r r r r r r r r k+r+(.). +O.N.r.$ $+$ K.$ $+$ Z.$ f.s.q.$ $ C.%+E.8+Z.y.S._.M.S.A.L. +r.M.*+l.I. +@+B.1.`.P.h.l.N.A.:+*+b+1 1 1 1 ` F+",
+"1 1 z e.e.W.-+-+r r r r r r r r r ,+r+P.K.:+2.j.@+$ *+$ C.$ (+$ O.$ v._+1.$ $ K.5+@+ +q.j.*+*+2..+i.i.@+f.%+++J.V.s.J.&+9.#+$+V.t.9+$+K.*+[+1 1 1 1 ` F+",
+"1 1 A p.@.r.-+r p r r r r r r r r k+r+h.b+z.b.2.!.$ f.s.$ l.z.$ B.$ M.k.$ ).K.$ }.7.[+9.]+`.9.b.G.s.A.4+9.h.t.8._+_.K.`.Z.(.J.5.l.`..+[+B.8+1 1 1 1 ` F+",
+"1 1 A e.&.#+-+r -+r r r r r r r -+,+r+/.t.<.(+v.y.<+N.}.5+}.s.N.6+y.B.5+Q.T.K.P.$+<.<.@+9.8+9.H.9. +5+~.O._.h.5./+g..+$+!.l.7+H.s.(.E.B.]+8+1 1 1 1 ` F+",
+"1 1 A p.*.W.-+k+r+r+A+A+A+A+A+A+r+A+r+U._+<+$+c.v.y.j.s.K.++(.B.0.++O.v.S.c.5+_+u.9.$+%+<+:+!.S.6+l.`.S.<+b.Q.s.`./+<.M. +8.P.t.(.`.`.r.8+b+1 1 2 1 ` F+",
+"2 1 A e.1.s.r+H+H+H+H+H+H+H+H+H+H+H+H+'.6+++v.N.S.@+_.N.P._+T.++f.h.r./+s.6+8.V.K..+{.7.d.:. +5+$+5+b.*+9.y.2.z.s.9.[+F.S.H.(.I.z.0.t.%+O.3+1 1 1 2 ` F+",
+"1 1 A e.>.C.t.}.O.v.B.C.!.v.M.b.<+<. +@+c.<.r.:.d.5+j. +r. +t.:+ +r.<.$+ +$+ +O._+v.q.q.<+<+j.<+4+1.J.1.E.4+d.7.r.B.1.4+_.V.g.(.5+9.[+:. +v.2 1 1 1 Z F+",
+"2 1 A p.:.6+S.F.s.S.B.t.K.K.[.N.b.[.P.5+_+$+:..+d.&.F.k.0.z.s.$+B.%+S.[.r.k./+_+/+M.E.H.9.y.:.~._.7.`.4+j.!.S.8./+j.`.B.F.$+++u.F.5+d.^.c+&+1 2 1 2 ` F+",
+"1 2 A e.<.z.%+M.C.2.K.c.z./+O.z.S.k.z.t.h.*+_.O.r.T.:.~._.Q.C.[+f. +M.Q.f.Q.(.Q.z.j.B.4+$+z.).q._+H.7+!.%+{. +Q.A.y.O._.B.0+(.(+K.$+_.u.y.5+1 2 1 2 ` C+",
+"2 1 A e./.c.M.].h.@+r.Q.t.I.}..+v.Q.I.(+k. +2.%+y.s._..+I.z.k.j.*+_. +0. +t._+(.K.[+F.$+/.T.b. +y.v.J.M.%+j.9+7.s.7.@+_.B.z.Q.%+#+w.C.7.O.g+1 2 1 2 ` F+",
+"2 2 A p.].w.w.<.c.v.k.0+,.V. +[.f.5+g.z.k.r.y. +y.k.v.K.#+++N.r.f.j.].O.<+*+P.J.K. +O.1.j.@+5.H.B.0+J.O.z.5+Q._+l.!.F.M.b.s.8.Q.0.%+@+2.&+b+2 2 1 2 ` C+",
+"1 2 A e.{.P.*+!.7+r.y._.h.$+%+0.f..+9+s.k.O.y.z.:.++r.K.P._+N.r.2.y.&.Q.Z._+Q.g.8+`.:+S.`.s.0.<.~.$+9.E.S.F.K.(+u.6+B._.2.s._+c.K.5.$+r.5+X.2 1 2 2 ` F+",
+"2 1 A p.e.{.5+B.*+/.:+r.).v.y.M.5+W.K.s.C.W.r.2.S.[.r.C.K.8.N. + +i.w.K.F.c.(.g./+$+/.v.S. +b.y.M.Q.h.H.~.~..+J.L. +[+d.:.k.(.t.0.Q.1.`.E.5+1 2 1 2 ` F+",
+"2 2 A e.*.O.;+>+,+,+,+,+,+,+,+,+,+>+q _+Q.*+O.z.N.}.k.a.(.z.K.l./+/.<+F._.t.V.}.j.0.(.z.J.l._+_.<+<.r.b.(.z.J.l._+].:+E.S.J.0.w.0.K.:+9.@+g+2 2 2 2 ` F+",
+"2 2 A e.].~.r r r r r r r r r r r r ,+%+t.M.O.F.M.*.6+.+i.K.++c.s.2+L.2.0.K.Q.*.6+.+h.I.#+g.w.4+E.&.4+ +h.I.#+g.y.4+E.2._.t.H.H.H.c.S.<+8+c+2 2 2 4 ` C+",
+"2 4 A p...2.-+r o p p p p p p p p k+r+$+K.T.*+%+.+_+:+++A.s.(+C.N.2.j.:+[.++P.<+]+ +y.s.]+G.J.b.r.<+]+ +y.s.]+G.J.2.j.<+0.J.H.V.0..+z.t.&+5+2 2 2 4 ` F+",
+"2 2 A e.j.!.-+r r r r r r r r r r k+r+M.Q.T.N.f.u.$ $ $ $ Q.(+B.5+C.2.7+:.c.).K.R.C.@+$ Z.F.%+S._+_+b./.`.9. +_+H.(.J.f.<.`.P.`.i.:.d._.d.@+4 2 2 2 ` F+",
+"4 2 A e.r.<+-+r r r r r r r r r r k+r+++++++K.O.C.$ g.y.(+$ (.N.!.v.b.b.{.~.k.w.P.w.++$ d.].]+!._.b.1.:. +/.:+9.%+z.s.<+J.t.H.P._+b.7.y.E.@+4 4 2 4 ` F+",
+"4 4 A p.q.w.-+r r r r r r r r r r ,+r+s.B.S.6+S.C.$ 5+I.~.$ Q.C.$ $ r.s.6+$ $ $ ++0+i.$ _.$ $ $ $ 7+M. +$ $ F.7.J.$ $ K.5+_.(.T.s.7.J.j.]+X.4 4 2 2 ` C+",
+"4 4 A e.'.v.-+r p r r r r r r r r ,+r+N.(+[.k.:.A.$ $ $ $ 0..+$ k.B.$ :.F.$ $+l.$ Q.F.$ /.b.<+@+$ s.S.$ b.7.$ H.$ `.).$ %+J.z.J._+g.H.J.B.3+4 4 4 4 ` F+",
+"4 4 A p.>.S.-+r r r r r r r r r r k+r+_+h.c.T.j.:.$ 2+*.$ t.s.$ $ $ $ f.@+$ 6+]+$ <+H.$ B.r.$ $ $ _+J.$ Z.<.h.#+$ $ $ $ h.%+]+#+0.9.#+H.S.b+4 4 4 4 ` F+",
+"4 4 A e.<.>.-+-+r r r r r r r r r ,+r+.+k.N.C.$+<.$ S.}.++$ .+$ 8.A.c.<.4+$ 7.H.$ 9.`.$ b.$ ]+1.$ Q.:.$ /.,.$ #+$ Q.Q.`.(.Q.N.%+J.#+7.7.D.g+4 4 4 4 ` F+",
+"4 4 A p.!.2.-+r p r r r r r r r r k+r+%+t.F.!.j.:.$ r.K.P.$ N.r.$ $ $ Q.Z.$ $ $ 9+@+<+$ `.$ $ $ $ $+9.E.$ $ K.(+l.$ $ $ (.7.(.t.0.Q.1.`.X.5+4 4 5 4 Z F+",
+"4 5 A m.j.r.-+r -+r r r r r r r -+,+r+(..+_.(+b. +[.r.C.K.8.N. +++i.v.K.E.$ (.g.4+$+/.v.S..+0.v.J.Q.j.H.~.~..+K.I..+4+d.S.J.9.s.0.K.:+9.]+c+5 4 4 4 ` F+",
+"4 4 A e.+.'.-+k+r+r+A+A+A+A+A+A+r+A+r+0.C.0.C.W.2.Q.B.s.5+h.%+B.j.,.}.`.v.$ h.[.H.$+B._+S.2. +q.0+<.j.F._. +H.K.I.<+7._.0.t.z.H.H.9.S.<+9+c+4 5 4 4 Z F+",
+"5 4 A p.*.$+r+H+H+H+H+H+H+H+H+H+H+H+H+9+k..+9+b.'.%+6+%+~.Q._+C.8+N.d.8+<.j.).R.H.M.*+M. +G.]+H._+4+9.:.$+h. +/+V.[.Q.j.M.]+).V.9. +G.v.]+4+5 5 4 5 ` F+",
+"4 5 A m.^.w.C.2.2.~.(.P.V.G.v.M.y.h.0.0.++N.k.y.b.5+f._+g.(+%+h.}.C.7.y.<+y.B.}.S.$+'.L.[.$+]+d.<+B.7+M.F.j.z.(._+E._.[+(.#+9.:.O.*+S.y.]+G.4 5 4 4 Z C+",
+"4 5 A e.&.8+{.f._+{.5.$+).Q.!.B.[+h.z.(+c.[.%+r.O.y.Z.O.&.K.<+v.k.a.:.F.`.7. +9+]+H.]+]+8+E.H.S.F.y._.&+@+$+M.j. +A._+w.&+*+]+%+J.4+@+]+7+4+5 4 4 5 ` F+",
+"5 4 A m.*.y.}.r.b.:.z.K.l.[+_.<+F._.t.Q.}.N.z.:.5+v.0+8+C.Q._+$+}.w.B.:.b.%+a+a+d+a+d+a+a+d+d+a+a+a+d+a+d+d+a+a+a+d+a+d+a+|+d+3+g+a+3+d+g+o+5 5 3 4 ` F+",
+"4 5 C m.&.R.*.4+ +i.I.++9.y.2+E.2.0.K.Q.6+C.}.r.M.f.*+9+0.Q.s.N.0.a.F.F.Z.<.d+q+q+q+z+z+z+z+z+u+z+z+z+z+z+z+u+z+z+y+B+z+y+B+z+z+z+u+z+z+y+z+5 4 4 5 ` F+",
+"5 5 C e.*.z.<+*+ +w.t.(+I.R.2.r.:+[.++P.N.5+z.8+O.r.O._.P.V.C.N.T.k.E.*+f.B.m.d c e e e e e e e e e e e e e e e e e e e e e e e e e e e d e 5 5 5 5 ` D+",
+"5 5 C m.{.0.b.j.<+}._+Q.8.'.].,.<+.+s.P.Q.$+).M.M.$+M..+h.h.t.6+t.6+1.J.B.H.m.d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d 5 5 5 5 ` D+",
+"5 5 C m.2.h.<.j.b.:.z.K.l._+].:+F._.t.Q.0.T.%+M.j.{.~.K.8._+%+h.'.$+y.:.d.j.d+d+d+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+%.3 5 5 3 ` D+",
+"5 3 C m._.<.&.4+ +j.I.++0.w.4+F.2.0.K.Q.C.O.N.T._.a.@+C.h.5+t.F.z.C.5+_.S.J.4.4.m.e.6.^+e.e.6.m.e.6.^+e.e.e.m.^+^+m.m.m.m.m.6.m.^+e.m.e.^+#+5 5 5 5 ` D+",
+"5 3 C m.!.k.h.Q.).S.b.!.(.y.*+O.Z.R.~.g.K.S.h.s.W.@+O.W.$+l.Q.r.s.<.y._.`.g.(.l.%+ +K.S.E.y.S.y.7.K.F.:.J.d.[.J.6+_+$+:.@+0.,.I.l.a.B.y.4+4+3 5 5 3 ` D+",
+"5 3 C m.<.k._+_.++A.s.(+I.R.b.r.<+}.#+Q.++v.N.T.:.Z.).:+l.$+.+s.B.<.J.$+'.G.(.$+$+b.<+F.7+K.F.j.z.(._+F._.[+:.#+9.(.M.&+S.t.$+L.z.a.M.9.y.]+3 3 3 3 ` D+",
+"3 3 C m.~.k.;+>+,+,+,+,+,+,+,+,+,+>+q 6+Q.f.~.K.:.[.k.0.(.z.K.l./+/.:+F._.t.V.}.k.a.(.z.J.l._+_.:+F._.t.V.}.k.0.(.z.J.l._+].:+F._.t.H.J. +X.3 5 5 3 ` D+",
+"3 3 C m.'.a.r r r r r r r r r r r r ,+V.C._.5+.+:+&.2+.+h.I.++0.s.2+L.2.0.J.V.*.4+.+h.I.#+9.s.4+F.2.0.J.V.*.4+.+h.I.`.9.s.4+F.2.a.K.H.+.F.4+3 5 3 3 ` D+",
+"3 3 A e.*.Z.-+r o p p p p p p p p k+r+_+k.y.C.Q.b._+*+.+s.t.(+z.N.2.j.<+[.`.P.<+*+.+w.s.]+G.J.2.j.:+<.`.Q.<+]+.+s.t.(+z.J.2.k.<+}.#+Q.0+%+W.3 3 3 3 ` D+",
+"3 3 A m.*.2+-+r r r r r r r r r r k+r+0.$+f.s.h.y.$  +s.g.8.).$+0.z.S.G.M.%+l./+C.:._.i.$ v.b.S.<.`.j.$ $ $ $ #+z.u.r.{.<+z.$+,.R.$ J.2.F.3+3 3 3 3 ` D+",
+"3 < A e.{.%+-+r r r r r r r r r r k+r+T. +W.5+0.S.$ d.@+0.t.5+$+F.s.F.>.M._.}.z._.L.C.a.$ 9.B.]+v.G.B.$  +B. +$ H.Q.*+*+B./+]+(+$ V.K.7.<+[+< < 3 < ` D+",
+"3 3 A p.@.B.-+r r r r r r r r r r ,+r+%+(+ +t.!.r.$ W.).z.g.*+$ $ Q.j.$ $ $ $ (+(+4+$ $ $ 6+7.@+S.<+2.$ y.H._+$ Q..+$ $ M.G.8.$ $ $ s.t.b.|+< 3 3 < ` D+",
+"< < A m.*.w.-+r p r r r r r r r r ,+r+K.z.>.v.9+*+$  +6+~.K.$ q.}.$ b.H.$+V.$ Q.s.$ .+.+$ ]+`.@+S.H.H.$ F.S.s.$ V.$ _+[+$ ).T.N.$ l.[+:+*+8+< 3 3 < ` D+",
+"< 3 A p.).c.-+r r r r r r r r r r k+r+s.h.*+b.5+f.$  +K.I.T.$ <+_.$ S.K.$ $ $ z.2+$ @+L.$ G./.`..+s.F.$ j.4+0.$ V.$ $ $ $ s.0.s.$ g._.J.5+g+< < < < Z F+",
+"< < A m.{.!.-+-+r r r r r r r r r ,+r+.+M.B._.Q.v.$ M.h./+0.$ E.S.$ v.$ 2+~.$ /+@+$ <+Q.$ _+z.j.(.t.b.$ B.B.5.$ `.$  +5+z.(+).(+$ ).q.y.S.c+< a < < ` C+",
+"< a C m.2.z.-+r p r r r r r r r r k+r+(+z.y. +!.F.$ $ $ $ }. +$ $ ].B.$ $ $ $ }._+*+$ $ $ _+.+B.B.v.]+$ $ $ $ 7.7.P.$ $ $ s.9+c.$ K.y.$ @+8+< < < < ` F+",
+"< < C p.@.F.-+r -+r r r r r r r -+,+r+%+++O.j.C.S.h.b.~.).(.(+:+>.$+F.N.[.z.$+}.L.B.S.t.Z.K.s.B._.H.y.Z.9+1.5.z.#+V.$+_..+(.8.0./+<+H.v.d.5+< a < < Z C+",
+"a < C m.*. +-+k+r+r+A+A+A+A+A+A+r+A+r+/+ +Q.@+F.r.r.t.W.l.$+.+y.F.<.J.%+'.C.Q.(+K.s.O.v.4+v.B.j.y.9.b.J.B.{.7.#+K.h.c.!.T.h.Q.(+7._+O.b.:+0+< a < < ` F+",
+"< a C m._.y.r+H+H+H+H+H+H+H+H+H+H+H+H+_+%+N.T.<.@+/.O.9+y.6+P.t.(+*+f.S.N.5.h.).z.C..+k.9.d.7.>.s._+O.5+O.5+Q.[.s.8.[.B.S.(.V./+8.%+B.5+3+f+a < a < ` C+",
+"< a C m.>.v.<+{.v.<.b.~.:.y.:+O.Z.Q.~.g.K.Z.j.y.W.@+O.T.$+l.Q.r.s.[.v._. +9.(.t.%+ +K.Q.F.v.S.A.l.P.E.<.J.b.[.J.5+<+*+:.++g.,.K.l.0.B.y.4+5+a < < a ` F+",
+"a a C m.'.W._+M.W.E.2+y.*+j.@+!.r.4+C.5+[+[+@+@+j.S.%+!.N.~.$+v.O.Z.S.S.:.j.$+t.Z.y.E.b.*+B. +M.]+u.@+j.$+B.B.[.$+J.F.j.k._+(.#+j.*+B.[+q.7+a a c < ` C+",
+"< a C m.r. +S. +1+E.v.:+j.W.E.O.j.|.S.W.*+W.2+W.O.v.7+e.v.O.M.q.<+j.1+X.5+W. +1+<+W.:+*+1+E.W.X.M.x.:.&+&+&+O.p.W.y.2+x.&+*+&+&+O.5+X.3+5+4+< a < a ` F+",
+"a a C m.m.m.d+d+a+|+g+c+d+3+a+c+d+a+a+a+d+a+d+a+a+c+d+a+a+a+d+a+d+a+a+d+d+a+a+a+d+a+d+a+a+d+d+a+a+a+d+a+d+d+a+a+a+d+a+d+a+g+d+3+g+a+3+d+g+o+c a a a ` C+",
+"a c C m.c+q+s+B+q+B+y+s+y+y+y+y+y+u+s+y+y+B+y+y+y+y+y+u+s+y+s+B+s+y+y+y+y+u+s+y+y+B+y+y+y+u+y+u+u+y+y+s+u+y+u+u+s+s+B+y+s+B+y+y+y+u+u+s+y+y+< a a a ` F+",
+"a a a a a a c a a a a a < a a a a a a a a a a a a a a a a a a a a < 0 a a a a < a a a a a a a a a < a a a a a c a a < a a a a a a a a a a c a a a a ` F+",
+"a a c a c 0 0 c 0 0 c c c c c 0 c c c 0 c 0 c 0 c c 0 c c 0 c c c c 0 c c a c c c c c c 0 c c c c c c a c c c a c c c c c 0 c c 0 c c c c a c a a a ` F+",
+"a c a ^+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+%.k c a c ` D+",
+"a c 0 j.6.6.e.e.(+4.m.e.6.U.e.e.e.m.U.4.m.p.6.^+p.e.e.m.U.6.m.e.6.#+e.e.p.m.#+6.m.j.6.^+p.e.6.m.e.6.U.e.e.e.m.U.U.m.m.m.m.m.6.m.^+f.m.e.U.U.k 0 0 c ` D+",
+"0 0 c 6.Y *.&.D ..*.&.+.@.>.'.*.&.'.@.&.@.@...@.Y >.+...@.'.,.&.&.*.+.&.@.+.&.*...&.....*.^.'.'...,...D *.+...*.@.'.*.'.&...@.@.!.{.{.>.y.*+e c c 0 ` D+",
+"0 c c 6.'.<. +/.C./.}.:.Q.j.M.'.F.K.8.[.k.{.f.F.<+}.f.t.*.z.[.j.].{.a.G.M.C.Q.i.t.<+F.@+^.J._.^.{.h.{.<._.2.'.8.!.Q.'.<.`.7.[.%+5.:.@.f.@+8+3 0 c c ` D+",
+"c 0 c 6.)._+y.w.t.M.f.++8.).@+(.M.c.P.#+y.S.W.z.8+Q._.c.z./+K.:+{.h.8+#+Z.$+++I.$+y.C.++++V..+M.S.C.s.5+C.~.w.P.z.K.C.u.z.7+z.7+g.V.8+h.:.s.5 c c c ` D+",
+"c c c 6.@.K.$ $ 7+b./+_.s.,.b.c.'.h.I./+).y.<.<.~._.y.$+Q.++.+!.b.B.O.h.B.$ $ $ %+*+k.$ $ $ }.v._.++h.:.h. +W.Q.V.P.$ $ B.t.J.C.(.Q.c.2.*+c+5 c c c ` D+",
+"c c c 6.,.i.$ $ 7+i.<.N.l.s.z.'.j.s.}._+}. +W.}.:.h.:.:.6+c.@+q.Z.h.*+T.r.$ $ $ ]+@+L.$ $ $ h.%+$+c.<+6+:.F.).z./+c.$ $ u.[./+s.++V.f.y.0+M.5 c c c ` D+",
+"c c e 6.[.(.$ $ k.W.:.[+P.).$ $ $ $ #+g.t.$ $ $ $ %+d.$ $ $ $ $ r.W.B.T.O.$ $ $ $ F.$ $ $ $ #+:+$ $ $ $ }.b.K.$ $ $ $ $ F.).$ $ $ $ c.C.@+@+5 c c c ` D+",
+"c c c 6.>.c.$ $ P.S.v.!.K.$ $ N.j.$ $ z.$ $ *+h.$ $ {.$ $ 8.f.$ $ j.r..+O.$ $ $ $ r.$ $ $ $ 6+$ $ ]+T.$ $ v.$ $ P.K.$ $ L.$ $ P.z.$ $ w.M./+5 e c c ` D+",
+"e c d 6.*.t.$ $ ++!._+t.I.$ $ }.!.$ $ Q.$ $ 2.B.$ $  +$ $ /+f.$ $ j. +C.:+$ $ (.$ %+$ %+$ $ z.$ $ k.(+$ $ {.$ $ t.0.$ $ [+$ $ $ $ $ $ w.E.<+3 d c d ` F+",
+"e d d 6.+.c.$ $ }./. +6+P.$ $ %+@+$ $ ++$ $ v.N.$ $ f.$ $ s.B.$ $ r.B.(.:+$ $ #+$ $ $ (.$ $ }.$ $ V.h.$ $ k.$ $ V.$+$ $ $+$ $ h.$+]+b.(+0+F.5 d d c ` F+",
+"d c d 6.<.(.$ $ }.N.h.P.#+$ $ T.y.$ $ (.$ $ [+B.$ $ f.$ $ .+(+$ $  +v.z.W.$ $ #+$ $ $ w.$ $ ~.$ $ z.I.$ $ y.$ $ 9+k.$ $ j.$ $ C.g.$ $ 7+&+5+3 d c d ` F+",
+"d d c 6.].s.$ $ $ $ $ $ N.C.$ $ $ $ g.I.%+$ $ $ $ N.c.$ $ $ $ $ F.k.f.[.B.$ $ .+Q.$ 2+t.$ $ $+k.$ $ $ $ t.6+(.$ $ $ $ $ T.h.$ $ $ $ '.<+O.F.3 d d d ` C+",
+"d d b 6.!.c.%+w.Q.y.b.k.t.}.W.M.C.h.k.y.C.$+[.b.:.8+.+$ $ z.K.C.N.$+r.y.F.(+z.Q./+Q.t.v.y.W.*+C.++++2+F.!.C.z.N.[.(.Q.M.F.++z.l..+_+w.y.X.[+3 d d b ` F+",
+"d d d 6.!.++%+y.a.h.5+l.V._._.++@+}._+I.9+S.C.b.B._.<+$ $ /+}.%+}.{.F.%+O.k.$+P.M.h.F.2.B._+O.B.Q.k.s.r.0.$+_.P.t.++}.!._.Q.s._+c.#+Q..+O.4+< d d d ` F+",
+"d d b 6.y.T.W.7.G.h.(.V.(+K.@+N.w.I.V.I.C.5+c.W.v.j.&.(.$+s._+h._.M. +y.*+K.0.#+z.0+(.c.w.].W.Z.F.C.$+f.{.<.k.I.V..+h.W._+/+]+s.C.I.I._.S.X.< d d b ` F+",
+"b d d 6.<.!.P.S.:+J.#+7.h.i.<+r.2+8.V.I.++_.h.<.].S.[+%+5+8.$+h.u.<.v.j.<._+I.(..+h._.2+a.<+{.v.&.c.c.>.f.y._+).s.0.0.~.[.z.$+L.T.V.~.g.W.4+< b d b ` C+",
+"d b b 6.+.k.N.4+B.F.(+t.#+V.A.:.O._._.0./+++$+O.W.~.b.[.I._.k./+).:. +!.O.!.K.5+v.F.%+<.].@+b.O.z.V.N.*.y.$+h.t.g.0.N.$+s.t.a.a.c.K.8.H.@+@+< d b b ` F+",
+"b b b e.<.k.h.j.).:+z.(+'.P.]+F.:.a.}.V.N.6+k.!.$+ +r.F.(.).++[.6+2+L.:.y.[.P.#+(+}.s..+v.M.$+[+s.++.+'.k.[._.8.(..+~.t.%+l.N.u.C.(.t.2.5+8+< g f b ` F+",
+"b b b 6.*.4+_.j.{.F.Q.K.$+B.O.B.@+O./+/+c._.++2.W.:+O.).P.h.N..+l.S.b.].2.{.).}.z.$+'.S.y.:.y.y.).).0.i.2+{.c.g._+h.c..+s.8.}.R.}.++0.H.@+W.< b b b ` F+",
+"b d h e.).:.O.S.S.4+:.`.y.@+D.|.B. +.+(.!./+h.*+<.*+O.:.!.(.~.2+++r.F.F.W.).T.Q._+W..+b.b.f.<+r.6+8.Q.y.S.!.h.0.(.++5+$+5+8.++}.k.Q.5.J.S.x.< b b b ` C+",
+"b h b #+*.S.!+~+{+{+{+{+{+{+{+{+{+~+v (+A.h.++v.j.S.b._+++++9+].&.f.v.y.<.K.h..+M.M.(+5+{.2.f. +6+++_+*+j.r.T.(+(+c.N.C.[.P.K.K.t.9.G.w.y.b+a b b h ` F+",
+"g b b e.>.A.w w w w w w w w w w w w {+%+L.%+T.F.O.B.[+c.s.I.9+K.Q.O.y.*+:.c.#+h._+y..+v.S.y.v.$+h.Q._+2._.:..+_+z.N.0.k.Q.s.c.!.P.V.G.G.B.4+< h b b ` F+",
+"b h h 6.!.y.'+w s t t t t t t t t m+t+l.G.%+/.i.$+c.O.r.K.8.@+B.Z.F.:+c.W.}.$+z.F.<.@+C.B.c.c.*+]. +f.@+t.:+].I./+N.*+{..+g.V.s.h.g.z.H.*+e.a b b h ` F+",
+"h b h 6.~.:+'+w w w w w w w w w w m+t+.+Q.S.j.B.:. +W.$ K._+t.:.$ $ $ $ S.0._+2+[+$ E.F.s.$ $ $ $ $ '.s.O.[+$ 8+}.N.8+v.B.P.P..+l.P.F.]+O.g+< h b h ` C+",
+"b h b 6.>.&.'+w w w w w w w w w w m+t+s.0+<.:._+O._.$ O.$ N.C.].$ z.b+7+$ N.#+f.$ E.$ r.%+).j.$ <+).r.N./.$ $ !.P.s.!.M.0.l.P.t.(.g.%+M.M.c+a b h h ` F+",
+"h h h 4.*.H.'+w w w w w w w w w w {+t+R.t.2+Q.:+W.r.$ {.$ 6+z.r.$ E.b.v.$ l.z.C.$ <.$ *+:+y.v.$ h.s.O.O.'.O.$ v..+F.v.O.T.Q.u.0.#+0.v._.*+c+a h h h ` F+",
+"h h h 6.).0.'+w t w w w w w w w w {+t+_+/+N.++2.S.$ d._+z.$ _+[+$ Z.<.F.$ !.'.$ v.F.O.$ E.{.b.$ g.K.k.A.[. +$ (+V.M.(+h.++9.#+l.6+h.V.7.0+4+a h h h ` F+",
+"h h h 8.b.L.'+w w w w w w w w w w m+t+N./+s.T.y.:.$ $ $ $ $ t.7+$ d.b.*+$ }.s.$ $ $ $ $ 1.O.F.$ z.c.:.2+:.c.$ $+I.c.$+s.i.7.]+}.s.(.#+K.X.@+a h h h Z F+",
+"h h h 6.r.L.'+'+w w w w w w w w w {+t+z.%+!.}.:+y.$ O.0.(.$ h.5+$ x.&.b.$ '.K.$ ).t.:.$ '.].v.$ P.T.O.'.2.z.$ ++l.C.++%+Q.`.%+g.]+H.5.~.7.e.0 h h h ` F+",
+"h h h 6._.t.'+w t w w w w w w w w m+t+g.C.s.N.v.$ 2.S.h.$+h.$ (+$ $ $ $ <.T.$ Q.N.T.O.r.$ ].M.$ l./+*+r.[+K.$ 9+8.C.9+N.%+]+(.b.K.l.G.5.S.E.0 h h h Z F+",
+"h i h 6.*.~.'+w '+w w w w w w w '+{+t+++K.++k.B.{.!.S._.7+7+Q.0.z.:.F.W.@+_.z.#+C.T.$+[+v.W.W.>.k.}._.:.{.O.'.t.#+t.T.A.J.:.7.:.Q.t.z.G.Z.5+c h j h ` F+",
+"h i h 8.@.%+'+m+t+t+B+B+D+B+B+D+t+B+t+(._+*+2.$+<+_.B.).s./+c.t.0.j.].<+q.W.V.g.z.6+[.~.8+_.y.2.~.0.9+].v.!.0.$+V.7+t.s.K.s.&.2.:+%+l.9.O.X.0 h h h Z F+",
+"h h h 6.>.K.t+H+H+H+H+H+H+H+H+H+H+H+H+l.*+(+y.++ +K.S.z.5+h.z.F.5+C.W.R.F.(+8.h.%+j.:+t.@+s.T.B.y.:+k.W._+b.(.8.%+[+F.E.5.l.J.w.6+k.w.H.4+0+c h k h ` F+",
+"i k h 6.b.(.F.B.(.M.O.Q.P.W.A.B.2.K./+Q.K.j.y.++ +K.Z.F.5+h.B.F.5+C.W.Q.F.:+8.h.%+j.:+t.@+s.T.B.s.(+r.W.<+b.(.8.#+_+B.E.5.t.J.t.g.).r.9.X.4+0 i h k ` F+",
+"h j h 6.<.<.0.F.k.F.$+5+}.S.*+&.b.y.6+I.z.<.{.$+*+C.B.(+).z._+].M.B.y.T.E._+P./+0.@+S.B. +++z.S.$+%+T.@+_+@+'.P.(+C.8+F.b.7+(.9.).K.J.F.4+<+e h i h ` F+",
+"k h k 4.!.@+}.j.%+~.h.z.t.h.7.d.y._+Q.t.t.:.B.:.].W.W.k.l._+_+c..+b.b. +b.%+$+K..+s.K.@+M.].F.:.k.++T.<+<.O.z.}.t.%+0.7+<+J.h.[.$+V.(.J.5+b+0 i h k ` F+",
+"h k h 6.&.Q.c.:+u..+z.++I.s.&+j.O._+g.}.0.$+(+v.B.:.f.K.s.h._.t.0.r.O.M.>.T.P.8.}.Q.%+v.r. +_.y._+s.~.:+f.<+K.(.h.$+z.N._+t.5+H.h.z.).7.x.4+c i j k ` F+",
+"i k i 6.'.%+T.W.z.R.K.V.V.8.9+b.M._+$+l.K.6+z.2.{.:+<.!.V.8.k.7+s.y.<.!.@+++0.$+K.T.}.y.O.2.2.$+$+P.$+2.S.r.(.).I.++$+K.T.s..+z.t.l.7.]+$+5+c i i i ` D+",
+"k i j e.r.c.%+v.w.:.8.`._+]+y.v._.h.z.V..+!.N.F.O.v.f.K.Q.Q.z.k.5+b.O.b.[+N.++).T.k.}.8+W.y.<.j.%+t.[.<+b.].j.%+K.W.C.c.s.`.s.t.[.(+Q.9.4+4+0 k i k ` D+",
+"i k i 6.>.B.F.1.W.j.9..+8+_+&+<.X.b.'.P.s.c.s.j. +y. +N.8.t.s./+(+<+B.B.O.0.z.}.!.[.h.W.<+f.!.O.[._+0.W.y.v.9+(._+O.<+(.s.5.B.]+6+&.K.t.O.5+0 k i k ` D+",
+"k i i e.:.k.!+{+{+{+{+{+{+{+{+{+{+{+v 4+k.r.$+:.f.!.v.k.P.8.z.%+%+ +y.W.S.%+t.V.Q.K.C.B.$+M.{.B.K._.T.j.y.f.Q._+s._+%+ +F.H.F.J.J.g.0+g.%+b+c k j k ` D+",
+"k k k 6.d._.w w w w w w w w w w w w {+_+%+t.).@+:.}.v.}.V.h.*+*+<.N.$+$+f.t._+~.8.f.S._.f.C.z.B.N.%+%+f.C.:.h.(.I.$+b.S.{.9.9+).y._.g.$+]+c+0 k i k ` D+",
+"k k k e.@.A.'+w s t t t t t t t t m+t+0+k.v.f._._.++@+}./+K.9+S.E.j.F._.<+I.(./+8.%+a.].F.%+N.r.%+N.C.2.C.b.z./+Q.K. +7.B.7.s.l.z.C.5+%+<+++e k k k ` D+",
+"k k k e.&.M.'+w w w w w w w w w w m+t+s.5+j.S.k.B.c.W.$ z.h.}.:+$ $ $ $ 1.%+(+++M.$ K.O.6+$ $ $ $ $  +~.$ $ h.P.#+6+<+b.J.t.9.%+(.R.t..+v.v.e k k k ` D+",
+"k k k f.'.7.'+w w w w w w w w w w m+t+I.Q.j.y.@+B.c.$ k.$ t.$+W.$ F.:.K.$ '.++(+$ w.$ r._+r.B.$ z.c.2.$ B.).$ I.$+O.j.d.{.c+_+_+5.7+ +++8+5+d k k k ` F+",
+"k k k e.@._.'+w w w w w w w w w w {+t+6+/+W.O.$+j.f.$ 5+$ k.S.F.$ :.$+k.$ K.K.t.$ w.$ W.Q._+O.$ 7+++<+N.++s.$ {.8.).%+d.G.H.g.K.$+7.[+N.y.2+e k k k Z D+",
+"k x k f.*._.'+w t w w w w w w w w {+t+z.(.r.*+0+O.$ F.5+.+$ t.!.$ O.1.t.$ c.0.$ u.%+[.$ K.s.b.$ h.++S.u.T.$ s.:.g./+W.u.!.V.I.K.$+7.4+z.r.z.d k k x ` F+",
+"k k x e.{.0.'+w w w w w w w w w w m+t+]+g. +B.(.4+$ $ $ $ $ 5+2.$ 9+1.z.$ ~.0+$ $ $ $ $ Q.6+j.$ C.s.>.0.5+$ s.W.Q.$+*+[.H.t.h.5.H.).y.5+}.X.d y k k Z D+",
+"x k x e.!.@+'+'+w w w w w w w w w {+t+9.t.f.q.@+2+$ b.c.z.$ z.S.$  +y.++$ (.s.$ '.8+<.$ h.Q.v.$ T.t.!.K.$ H.H._+l.y.S.B.<+z.5+_.z.t.:.F.%+C.d k k z ` D+",
+"x k z e.@.k.'+w t w w w w w w w w m+t+_+w.F.f._+$ Z.).r.0.0.$ z.$ $ $ $ z.0.$ s./+@+K.B.$ '.K.$ (.s.{.$ $ # $ C.h.K.(+y.C.Q.(+h.Q.Q.).y.C.S.d x x x ` D+",
+"z k z e.b.`.'+w '+w w w w w w w '+{+t+l.$+0.v.f._.f.(.s.t.c.9+_.Q.r.M.F..+$+$+Q.K.N./+<+S.b.:.k.5+c.:+y.<+++*.~.t.s.c.:._.K.t.#+A.`.2.S.*+5+g x k z ` F+",
+"x x z e.{.9.'+m+t+t+B+D+B+B+D+B+t+B+t+6+t.M.y.M.<+++j.z./+I.h.(._+<.!.Q.<.f.5+z.K.c.).@+@+}.++B.N.}.z.S.0.b.$+(+Q._+h..+A.++6+V.z.[.*+]+<+c+b x x x Z F+",
+"x z x e.@.J.t+H+H+H+H+H+H+H+H+H+H+H+H+T.h.0+0.:.y.:.F..+(+(.C.%+s.M.$+[+v. +U.~.s.0._.:.{.O.>.j..+h.N.v.B.{.k.8._+%+t.a.A.}.!.A.T.$+K.H.X.8+d z z x ` F+",
+"x x x e.*.[.(.S.K._+s.)._+`.j.F.{.!.U.[.9+7+K.:.y.:.F..+(+(.C.%+s.M.$+[+v..+#+~.s.b._.<.{.O.>.j..+h.N.v.B.{.k.8._+%+t.a.z.7.6+h.).H.9.G. +4+b x z z ` F+",
+"z z z e.~.7..+F.$+Q.s.G.s. +*+F.M.5+8.,.k..+h. +,.~.].Q.t.l.[.h.0.$+b.O.S./+}.K.T.b.&. +[+y.j.:.N.5+Q.M.f.r..+$+I.u.:.h.%+7.Q.J..+P./+5.Z.O.b A x z ` F+",
+"z z z j.r.]+2./.$+d.`._+Q._.O.9.E.Q.t.++k.:.b.{.!.(.v..+!.++K.2.B.B.{.).b.h.7+(.k.f.*+b.2.T.k.<.}..+0.W.}.S.K.0.I.l.a.5+<.7.P.z.8.%+s.9.J.0+g z z z ` F+",
+"z z z e.@.[.M.7.0+Q.#+5.J.B.7.F.j.0.V.I.C.%+!.B.].M.2.C._+(+z.c.h.[+b.O.]._.$+$+c./+z.5+F.B.b.y._._+C.].<+:.++9.(.J.]+Q.s.$+L.w.8.P.h.G.8+5+b z z z ` F+",
+"z z A j.b./.S.B.Q.z.g.9.(.&.<+y.B./+l._+z.z.(.[+j.W.v.k.g.Q.K.:.}.2.0+y.<.[.).(.Q..+C.v.M.y.f.<.}.V.C.j.v.b.7+t./+h.:+`.i.0.C.u.A./+h.7.S.S.b z z z Z F+",
+"z A z e.'.9.M.F.<.O.h.8.P./+$+ +_.W.c.'.N.s.}.v.j. +y.++Q.8.s.s._+*+:+B.B.Q.g.z.}.!._.f.W.<+f.!.Q.}._+2.Z.y.s.0+(._+N.$+[.t.[.A.(+7+*.G.O.&+g z z z ` F+",
+"z z B e.&.v.B.&+J.:+@+B.F.B.&+<+O.S.9+8.'.j.S.j.@+,.!.].V.t.t.:.b.b.*+c.S.T.5+}.N.S.<.,.@+/+z.r.[.Q.5+T.J.k.t.#+$+K.r./.j.`.h.Q.V.++N.<+y.<+g z B z Z F+",
+"z A z e.b.%+!+~+{+{+{+{+{+{+{+{+{+~+v l.*+0.v.f._.f.(.s.t.c.9+_.Q.r.M.F..+$+$+Q.K.N./+<+S.b.:.k.5+c.<+y.<+`.*.~.t.s.c.:._.K.t.#+A.++2.Z.*+8+g z z z ` F+",
+"z z B e.{.i.w w w w w w w w w w w w {+6+t.N.A.M.<+++j.z./+I.h.(._+<.!.Q.<.c.5+z.K.c.).@+@+}.++B.N.}.z.S.0.b.$+(+H.<+i..+A.++6+V.z.[.*+]+<+c+g B z B ` F+",
+"z B z e.@.S.'+w s t t t t t t t t m+t+V.h.0+0.:.y.:.F..+(+(.C.%+s.M.$+4+w..+#+~.s.b._.:.{.S.'.r. +k.R.v.B.{.7.8._+%+u.a.A.}.!.A.T.$+J.H.X.5+h z z A ` F+",
+"z B z f.*.}.'+w w w w w w w w w w m+t+5.7+7+K. +,.~.].$ t.l.[.h.$ $ $ $ T./+K.W.0.$ @+4+y.$ $ $ $ $ O.j.$ $ $+G.K.t.(.i.%+h.6+i.{.Q.9.z. +4+h B z B ` F+",
+"A z B e.~.v.'+w w w w w w w w w w m+t+'.k..+h.{.!.(.$ .+$ ++K.2.$ B.{.).$ i.(.r.$ :+$ b.T.k.1.$  +b.H.$ S.K.$ <.I.k.b.5+<.h.R.N..+P./+2. +S.g z B A ` F+",
+"B z B d.j.]+'+w w w w w w w w w w {+t+%+k.:.b.B.].M.$ C.$ (+z.c.$ [+b.R.$ (.$+c.$ B.$ M.F.b.B.$ _+C./.<+_..+$ h.(.N.(+S.s.h.P.A.8.%+s.9.O.0+h B z B ` F+",
+"B z B e.@.}.'+w t w w w w w w w w {+t+K.L.%+!.[+j.$ v.k.g.$ K.[.$ 2.0+A.$ [.(.$  +L.y.$ B.f.1.$ .+G.r.y.d.$ l.[./+j.:+++h.(+K.s.8.P.h.G.9+5+h z B B ` F+",
+"B z B d.2._.'+w w w w w w w w w w m+t+_+C.z.(.y.r.$ $ $ $ $ s.s.$ ]+:+C.$ Q.C.$ $ $ $ $ [+i.!.$ }._+2.H.B.s.$ h.(._+O.$+[.0.C.u.A./+h.7.S.X.g B z B ` F+",
+"B z B e.~.j.'+'+w w w w w w w w w {+t+'.P.s.}.r.@+$ !._.V.$ t.[.$ c.]+g.$ W.}.$ S.<.>.$ 2+B.q.$ Q.7+S.$ j.t.$ }.(+K.r.].j.t.[.A.(+7+*.F.O.@+h B z B ` F+",
+"B B A j.&.v.'+w t w w w w w w w w m+t+8.'.k.S.C.$ &.d.6+h.t.$ $+$ $ $ $ 5+).$ <.F.F.[.[+$ @+y.$ [+%+M.B.$ $ ).(+_+#+M.f.h.#+g.Q.H.`.J.[+B.<+g B B B ` F+",
+"B z B e.7._.'+w '+w w w w w w w '+{+t+V.7+r.v.].f..+f.Q.V.#+T.4+<.C.:.%+:.Q.I.Q.K.f.2.:.&._+z.E._+u.(+v.t.:./+t.#+C.v.b.S.K./+P.%+B.9+j.`.]+i z B B ` F+",
+"B B B e.{.C.'+m+t+t+B+B+D+B+B+D+t+B+t+$+$+F.j.++O..+}..+).P.0+C.2+P.v.<+$+0.P.P.c.k.!.z.F.++r.f.2.r.>.F.4+J./+I.5+.+2.y.}.I.(.8.g.0+M.b.B.q.h B B B ` F+",
+"B B B e.f.++t+H+H+H+H+H+H+H+H+H+H+H+H+_+Q.%+<+b.j.*+[.h.!.z.s.J.}.v.@+*+%+z..+.+(+t.Q.N.F.M.O.(+O.).F.J._.++k.z.k..+(+r.<+}.I.V.)..+[+5.4+$+h B B B ` F+",
+"B B B e.,.R.t..+t.j.2.G.,.$+2+u./+z.s._.0.}.]+z.*+8+M.[.K.P.P.4+{.Q.j. +B.[.s.++T._.'._+2.:.M.F.}.!.W.4+O.2._+l._+Q.[+:+f.++++z.V.P. + +D.c+i B B B ` C+",
+"B B B e.<.0.F.4+/.:.@+z.i.F.b.O.].++K._+0+M._.A.*+8+M.[.K.P.P.2+).Q.j. +B.[.s.++T._.~.<+b.:.M.F.}.!.W.4+O.2._+l._+Q.[+:+f.Q.0.Q.0.%+:.H.8+@+i B B B ` F+",
+"B B B e.f.f.<+K.*+7.8+h.F.{.Z.T.t.C.V.g.s.4+O.T.W.y.{.k.5+#+S.C.O.K.<+:.$+R.K.8.:+:.y._+5+%+N..+C._.$+@+y.M.2+l.5+h.K.O.T.Q.h.l.s.g.B.<+E.s.h B F B ` F+",
+"B B F e.'.&.r.r.~.q.M.[+].B.j.f.!.:.B.<+W.@+Z.~.q.O.W.q.D.@+:+Z.@+:+B.W.y.F.b.B.2.%+j.<.y.:+*+S.W.M.B.@+M.y.S.M.b. +r.b.S.8+[+:+0.&+e.~.*+`.h F B B ` F+",
+"F B F e.:.E.B.@+|.D.F.Z.<._.e.<.E.S.:+[+:.y.S.@+y.O.:.5+O.].q.q.[+q.[+E.W.[+D.F.S.<+S.].S.*+@+X.y.!.5+f.W.:+|.S.<+0+[+|.<+E.@+d.b+*+E.6+X.S.h B F B ` F+",
+"F B F e.r.O.:.<+S.Z.4+F.h.[.t.2.B.C.z.0.K. +2..+5+s.$+)._+t.).v.v.N.5+T.F.k.z.V.s.b.S.}.v.C.C.<.C..+++j.t.O.F.h.(.h.[+@+_.s.Q.++c.y.S.Q.M.4+i F F F ` F+",
+"F B F e.<.<.S.o.Z.S.'. +k.r.E.y.x.5+}.h.M.v.r. +!._+r.C.K.l.c.{.j.b.S.v.Z.}.I.I.9+@+M.y.[+2.K._.c.++M.:+2+u.)._+#+%+$+<.y.I./+c.g.(+]+N.d.g+h F B B Z F+",
+"F F F e.~.<.!+{+{+{+{+{+{+{+{+{+{+{+v (+t.[+M.<.O.T.v.h./+).z.$+v.S.Z.(+M.k.s.++Q.5+F.j.(+'.t.f.0.C.]+M./+v.t.t.P.h.@+2.].#+(.K.g.N.#+v.*+4+i F F F ` F+",
+"F F F e.>.<.w w w w w w w w w w w w {+N.C.T.r.T.S.@+_+C.N.K.Q.k.$+[+@+v.l.G.Q.N._+h.k.j.B. +*+).[.B.2+B.(.K.g.N.N._+0.r.t.K.l._.s.T.S.E.@+0+h F F F ` C+",
+"F F F e.r.2.'+w s t t t t t t t t m+t+M.z.S.K.@+j.s.!.h.}.V.N.$+8.c.!.s.O.2+z.N.:+v.T.S.B.[.Q._.{.a._+ +t._.s.T.h.0.M.F.8+(+0.I./+%+:.%+d.p.i F F F ` F+",
+"F F F e.'..+'+w w w w w w w w w w m+t+Q._+y.5+W.:+_.$ $ Q.(.K.$ $ $ $ }.B.$ $ $ $ b.E.O.$ 7+_+s.$ $ $ $ g.I./+%+V.[.t.).r./+).(.++).V.].@+b+i F F F ` F+",
+"I F F e.*.f.'+w w w w w w w w w w m+t+z.c.C.C.j. +$ <+%+$ (+#+$ k.c.$ _.<+$ f.h.W.$ 2.f.$ 0.#+<+$ b.<..+(.K.g.N.z.:+v.k..+s.t.N.t.z.t.:+@+X.i F F F ` F+",
+"F I F e.O.).'+w w w w w w w w w w {+t+$+!.'.k.b.O.$ _.T.(.8.g.$ .+u.$ L. +$ y.].F.$ W._+$ k.K.r.$ w.T.P.l._.s.T.K._+<..+K.++I.%+C.(+$+C.j.p.i F F F Z F+",
+"I F F e.~..+'+w t w w w w w w w w {+t+0+0.b.y. +B.O.$ $ s.Q.s.$ $ $ $ 2.2.$ y.++F.$ 2.!.$ c.N.$+$ $ $ }.g.K./+%+++z.t.F.~.V.~.[.I.N.v.%+d.b+i I F I ` F+",
+"I F I m.*.$+'+w w w w w w w w w w m+t+N.}.Q.++>.W.v.j.t.$ #+#+$ b.b.{.M.:+$ M.S.F.$ d.@+$ T.z.9+$ E.y.6+(.P.g.N._+t.!._+].s.@+r.S.V._+R.O.&+h I F I ` C+",
+"F I F e.f.C.'+'+w w w w w w w w w {+t+h.C.k.h.v.j.$ 5+t.$ P.I.$ %+v.K.O.*+$ B.&.W.$ _+K.$ 5+++_+$ .+A.0.l._.s.T.).$+f.z.Q.8.v.(+c.P.8.$+M.5+i I I F ` F+",
+"I I I e.*.N.'+w t w w w w w w w w m+t+[.v.:+@+c.@+z.$ $ ++V.P.$ <+}.K. +).$ $ $ $ y.Q._.$ T.s._+$ C.<+8+g.I./+%+Q.z.O.B.T.K.K.$+h./+y.:.r.S.i F I I ` F+",
+"I F I m.&.w.'+w '+w w w w w w w '+{+t+Q.(+v.r.B.M.z.*+h.(.0.s.F.S.V.f.Q.:+_+_+I.N.F.y._.y.0.s.M.,.z.R.2+{.<.C.9+s.C.O.b.2.t.).k.K.M.y.F.f.3+i I I I ` F+",
+"I I I e.}.h.'+m+t+t+B+B+D+B+B+D+t+B+t+l.C.:. +.+S.!.W.Q.s.K.t.y.:+L.y.t.<.K.&.5+++r.B.W.2.s.6+M.0.c.K.O._+B.[.h.Q.t.:+O.++(.0.#+K.j.4+r. +]+i I I I ` F+",
+"I I I m.[..+t+H+H+H+H+H+H+H+H+H+H+H+H+s./+<.@+b.B.[.$+N.0.$+V.S.F.z. +~.O.7+(.l.Q.b.f..+j.C.t.S.!./+K.:+C.<.s.g.5+0.@+0+b.Q.t.I.9.9.O.M.[+O.i I I I ` F+",
+"I I I m.K.Q.B.2.t.%+B.5./+h.(.i. +C.Q.C.j.y. +z.F.<.*+N.0.$+V.S.F.B.@+~.R.7+(.l.Q.b.f..+j.C.t.S.!./+K.<+C.<.s.g.5+0.@+W.h.K._+K.t.Q.9.7.]+[+i I K I ` F+",
+"I I I e.@.[.++S.5+r.y.G.t.,.b.6+f.k.Q.$+(+<.S.y.5+).B.k.(.I.P.<.<+*+@+v.v.<+#+I.K.v.$+!.:+T.C.f.f.N.2+M.++v.8+k.K.N.y.w.]+H.P.,.z.z.F./.8+<+i K I I ` F+",
+"I I I m.~.t.k.%+v.H.B.j.<.G.'.*+4+h./+I.C._.<.[.<+c.h.%+(.l._.z.q.J.2.y.`.$+#+I.%+ +*+v.W.N.C.K.C.(+S._.L.N.)..+t.K.k.S.]+s._+`..+B.Z.J.:+4+i K I I ` F+",
+"K I I m.,.].++).S.q.v.8+z.[+d.[+0+k.$+_.l.[.%+f.S.M.}.0+Q.T.7.).B.B.M.O.).h.(._+s.y.(+M.b.8+2.s.K.6+y.B.5+Q.T.P.P.(+[.1.*+g.9+g..+7.@+5+1.<+i I I I ` F+",
+"K I J m.*.(+d.W.%+Z.2.J.t./.H. +d.]+#+$+.+W.T.h.F.T.A.V.Q.0./+[+).~.H.S.M.h._+_+`.B.k.%+y.O.b.r._+}.Z.O.F.[+z.7+V.C.W.:.J..+s.I.V.t.J.]+O.&+i I K I ` F+",
+"K J K m.c.s.]+R.E.d.O.h.F.6+Z.L..+u.z.A.l.<+:.V.A.#+(.!._.V.N.2+k.%+S..+7.H.[..+I.k.F.5+:+L.:.y.[+.+0+).]+_.++Q.C.C.J.:.F.I.`._+(+z.E.y.H.b+i J I J ` F+",
+"K I L m.t.c+Q.$+%+ + +7+:+<+}.$+@+@+i.0+(+F.7+5+c+4+b+s.<+8+0+ +8+:+8+<+1+&+ +1+<+f.A.]+0+$+4+%+0+T.6+R.6+2.N.0+@+0+9+9+6+6+K.]+6+f.*+5.0+^+b J K J ` F+",
+"J J J m.m.m.d+d+a+|+g+d+d+3+a+d+d+a+a+a+d+a+d+a+a+d+d+a+a+a+d+a+d+a+a+d+d+a+a+a+d+a+d+a+a+d+d+a+a+a+d+a+d+d+a+a+a+d+a+d+a+|+d+3+g+a+3+d+g+o+0 J J J ` F+",
+"I J K m.d+q+z+B+q+B+s+y+s+y+s+y+s+u+z+z+z+B+s+y+s+y+z+u+z+z+z+B+s+s+y+y+z+u+z+z+z+B+s+z+z+z+z+u+z+z+z+z+z+s+z+s+z+z+B+s+z+B+s+y+z+u+z+z+z+y+g J J N ` F+",
+"J K J K K H J J K K K M K L K J J J J K N L M K K J K J H J N K L M K L L H J J J J H K J J N K K J J J J J J J M L K N L L K L K L L K K L K L N K ` F+",
+"M M J K K N K N K N K L M M L L K L N N L K N K L L J K L K N L M K K M L E N K M K N K N K N K K N L L N H J K M L L N K L K K K K N K L M K L K N ` F+",
+"K L L N K N E L M L M K K N N L M L E L L K L N L N N L L K M K K N N M K L N L N K M M M M L M L M M L K M K J L K K N K L L N N L L L M K N K N L ` F+",
+"L L K N L L L K M L L L L L K N K K M L K N K N L K N L L L L L L L K N L L L K N L L K M L K M L L K M L L L K M L L L L L L L K N L L L K M L L K ` F+",
+"L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L ` F+",
+"N L N N L M L M L N N N L M L L M M L M L M L L M N N L N L N L L M L L L L L L L N N N L L L L L P M N L N P M M L L L N L N L N L L L L L L L L L ` F+",
+"L L O L M L L O O O K M L L M P N L N N N N P N N P O P L O L N L N M N P M N M L O N H O M O M N N L M N L M M P M N M M N M L L N O L M L L M L L ` F+",
+"N N N N P N N M L O O N N N O L P O P L P N N O P N N O O L M M N O M P N M P M M N N N N M M O P P P P O M M O P M P P P P M L N O M M P N N L M O ` D+",
+"P P N P L N N P O L N N P L P N P N O N N N N O N N N N P L N L P L M P M O L P L L M O E M O M M P N P M P O M M M O N N P P L P P N L M M P P P M ` D+",
+"N P P O O O O O N O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O Q Q O Q O O O O O O O O O O O O M ` D+",
+"O O x e.g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+|+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+%.} P O O ` D+",
+"P O y 6.4.6.e.e.U.4.m.e.6.U.e.e.e.m.^+4.m.p.5.^+e.e.p.m.^+4.m.e.6.#+e.p.e.m.U.4.m.e.6.U.e.e.6.m.e.6.#+p.e.e.m.U.^+m.m.m.m.m.6.m.U.e.m.e.^+^+} O P O ` D+",
+"P P y 6.O *.,.+.+.~.~...&.+.+.>.+.'.'.*.,.@.*.'.*.Y *...@.'.>.]...&.*.Y +.>...<.!.*.+...!.*.Y *.!.].:...*.+.>...+.*.Y @.!.@.*.@.@...~...&+ +{ P P O ` D+",
+"O O y 6.].0.s.v.&.].f.u.:.2.y.F.j.y.P.[.v.<.5.{.5.~.B./.).[.M.B.j.v.f.<.v.8.8.t.k.{.u./.!.i.++O.C.!.z.{.@.j.<.).f.}.O.i.M.s.).:.<. +W.:+W.&+~ O O O ` D+",
+"O O y 6.M.r.F.Z.'.S.q.M.i.a.A.@+%+@+_+F.H.8+`.5+j.]+7.9.9.J.9.B.r.z.:.t.:.$+).s.6+M.o.5+B.g.&.k.K.$+t.M.i.@+_+W.j.q.D.o.y.W.z.#+B.%+Z.<. +@+~ O O O ` D+",
+"O O y 6.&.:.T.q.v+s+u+z+x+n+u+u+u+u+y+s+y+u+p+y+x+u+y+u+p+z+x+u+x+y+y+s+s+n+w+y+x+x+x+x+y+x+x+s+x+x+x+x+s+v+s+w+y+x+w+x+x+x+x+s+s+v+]+6+B.5+~ O Q O ` D+",
+"O O y 6.).Q.f.o.f+( ^ ' = % % % % % % % % = ; ; - - ) ( [ ^ ^ ^ ( ( ( [ [ 7 8 9 f f f m l G T S u u u u G G G E S S S S S S S  .S -.y..+4+<+~ O Q O ` D+",
+"O O y 6.!.K.b.f.b+- * . % % % % % % % % % % * = ; - = * * ' ! ^ ^ ( ^ ( 7 ( 6 9 f l f l n l n n u u G u S G S S S T T T T T U U T n.)+5.H.c+~ O Q Q ` D+",
+"O Q y 6.'.N.O.2+|+^ * U x+v+v+v+v+D+v+v+v+v+v+F+E+E+e+; ) l+w+v+v+v+v+v+s+p+x+w+E+v+v+v+s+e+7 W.p+w+v+x+x+w+x+s+x+x+w+x+x+x+x+n.n n.~.z.&+$+~ Q O O ` D+",
+"O O y 6.*.V..+$+f+( = |+H+g+X.)+[+)+)+8+8+2+)+2+=+E+C+- ( H+p+&+1+1+8+W.q+H+}+3+1+1+1+)+w+E+^ e+H+c+8+b+b+b+b+b+b+b+1+b+b+|+b+E u n.W.t.%+x.~ Q O Q ` D+",
+"O O y 6.'.].2+i.f+! & =+w+; # @ @ @ + + + . & . + n.G+; ^ H+#.. ' ' ' * ;.E+f - ( 7 ( ) f+F+( e+H+6 6 ( 7 7 6 6 6 8 9 9 8 9 9 u n 3.:+z.S.4+~ R O R ` D+",
+"O R y 6.,.{.b.{.o+X l |+x+- ) f f 9 f f ' . = ; n i+G+' ^ H+$.; ^ ( 7 ) =+D+G ^ l l n 6 i+v+^ f+H+f G ;.$.;.;.$.;.$.;.;.;.;.3.;.#.)+@+:.]+3+~ Q R Q ` D+",
+"Q R y 6.b._+t.%+H+H+H+H+p+- o+H+H+H+H+H+p+U = & H+H+p+; ( H+;.; ( 7 7 ) 2+H+S ^ l l f 7 e+D+^ f+H+9 ;.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+]+0+Z.~ R R Q ` D+",
+"Q R y 6.:.w.T.T.l+T f |+v+) ' 9 9 8 8 j p+H+o+T ' ' ! ; 6 H+;.; ( ( 7 ( 6 I 7 8 l m m 7 e+v+^ f+H+l n T T U T T U U U U U U U U G n.@+W.W.2+~ R O R ` D+",
+"R R y 6.u.z.#+x.h+6 ) Q.v+7 * = * * * & & T w+G+l+6 = = 7 H+;.' 7 7 6 6 [ ( 9 f l m f 7 e+v+^ |+H+6 9 9 6 9 9 9 9 f f l l f m u l 3.Q.$+1.3+~ O R R ` D+",
+"R Q y 6.'.g.K.B.i+u 7 b+C+9 - ) ) ) ' ' - & = ;.p+H+l+6 ( H+;.' ( 7 7 8 9 9 9 9 l l l 7 i+D+( f+H+o.;.-.3.-.3.3.-.o.-.o.o.-.n. .l -.P.8. +8+~ R R R ` D+",
+"R R y 6.*.t.,.$+i+S 9 )+H+l ' ! ) ) ) ) ) ) ' & ' ^.G+#.( G+-.' ( 7 6 8 9 f 9 f l n m 7 l+H+^ 1+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+#.6 -./+$+M.:+~ R R R ` D+",
+"R R y e.).v.}.}.i+S S 9 G 7 ( ( ^ ) ! ! ^ ! ^ ^ - = 6 ^ ^ u 6 ( 7 7 6 8 9 9 9 l n l u l u S 7 n T S S T T T U T T T T U U U  .f n -.l.7+j.3+~ R R R ` D+",
+"R R y 6.*.k.2+B.}+S T n 9 6 7 ^ ) ) ) ! ) ! ) ) ) ) ; ) ! ' ) ( ( 7 [ 7 6 6 7 6 6 9 f l f 6 l 9 9 6 9 9 f f 9 9 9 l l l l l l S u 3.$+g.3+0+{ R R R ` F+",
+"R R y e.).:._+o.i+S S ;. .u X X S U T ^ 7 ! 9 S E u U S n 9 X ;.f 6 $. .l [ X #.T T $.X f X $. .#.$.u S u  .-.3.X #.;.$.U #.-.;.l 3.c.9.@+ +~ V R R Z F+",
+"R R y 6.@.t.++}.i+G  .x+i+h+n.b+|+x+i+U n.S 1+p+s+v+p+|+f+1+=+)+8 #.n+p+b+ .v+n.i+p+1+|+u 1+x+s+-.s+-.n.3.2+)+1+e+e+c+w+|+}+p+p+l 3.K..+]+O.{ R R R ` F+",
+"R R y e.u.[.T.*+e+u S ;.T X f f m  .G  .X  .f u T T S G ( u ( ( ) 9 l f  .#.X X U U $. .6 U $.#.#.$.;.$.-.#.n u U ;.;. .S ;.;.].9 ;._+l..+2+~ V R R Z F+",
+"R R y e.}.k.L.R.l+ . .U S S G G l f 9 9 8 9 6 6 6 6 9 f 9 9 l l n l f 9 m n l n m l G G G G u n S u G G S S S S G G S u G S S S u o.]+S.<+3+{ V R R ` F+",
+"R R y e.@.C.W.F.w+x+x+x+x+x+w+x+x+z+y+x+y+x+y+x+x+s+n+x+x+x+w+x+x+x+x+x+y+x+x+n+x+w+y+y+x+x+y+x+x+x+x+x+x+x+x+x+x+y+x+w+x+x+s+x+x+w+:+j.S.X.~ V R R Z D+",
+"R R y e.[.f.@+S.y.B.1.J.$+'.E.S.*+B.t.H.s.4+k.y.j.B.b.}.K.K.).v.++C.b.b.!.Q.g.Q.(+r.<+M.1.O.W.v.j._+!.v.@+v.R.Q._+T.y.x. +P.6+L.h.]+~.B.E.X.{ V R R ` F+",
+"R R y e.>.j.F.<+B.S.3+S.y.y.v.Z.%+C.$+#+5+G.~.E.E.Z.<._.Q.Q.M. +B.r. +_+u.k.w.T.$+@+q.B.S.2.M.S.1.<.<+O. +B.<.g.z.w.0+>.Z.%+0.7.8+d.y.7.O.$+~ V R R Z D+",
+"R R y e.{.x.e.O.~.3+5+D.5+X.E.|.e.e.3+p.x.)+e.x.^.E.D.X.e.E.&+3+:+S.&+&+3+D.&+X.O.X.X.3+W.|.X.X.|.&+D.X.x.&+3+D.3+&+&+O.&+X.&+X.p.b+p.&+8+]+~ R R R ` F+",
+"R R z d.m.m.d+d+a+|+g+d+d+3+a+d+d+a+a+a+d+a+d+a+a+d+d+a+a+a+d+a+d+a+a+d+d+a+a+a+d+a+d+a+a+d+d+a+a+a+d+a+d+d+a+a+a+d+a+d+a+g+d+3+g+a+3+d+g+o+~ R R R Z D+",
+"R R y e.d+q+y+B+q+B+y+y+y+x+x+y+y+y+y+y+x+B+y+y+x+x+y+y+y+x+x+B+y+y+x+x+y+y+y+x+x+B+x+x+x+x+x+y+x+x+x+x+x+x+y+x+x+x+B+x+x+B+x+x+x+y+x+x+y+y+~ R R R ` F+",
+"R R / { ~ , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ~ R R R Z D+",
+"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ` F+",
+"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R Z C+",
+"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R Z H+",
+"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ..H+",
+"%.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.>.H+",
+"g+h+j+j+j+j+j+j+h+j+j+h+j+j+j+j+j+j+h+j+j+h+j+j+j+j+j+j+h+j+j+h+h+h+h+h+h+h+h+h+h+h+h+h+j+j+j+j+j+j+h+j+j+h+j+j+h+j+j+h+j+j+j+j+h+j+j+h+j+j+j+j+j+h+j+}+"};
diff --git a/hdspmixer/pixmaps/Zlmloopm2.xpm b/hdspmixer/pixmaps/Zlmloopm2.xpm
new file mode 100644 (file)
index 0000000..55b121f
--- /dev/null
@@ -0,0 +1,513 @@
+/* XPM */
+char * Zlmloopm2_xpm[] = {
+"76 253 257 2",
+"      c None",
+".     c #D1E0E5",
+"+     c #E7F6F9",
+"@     c #F2FFFF",
+"#     c #FBFFFF",
+"$     c #FFFFFF",
+"%     c #C4CACB",
+"&     c #C7D5D9",
+"*     c #BECDD2",
+"=     c #B8C5C9",
+"-     c #AEBDC1",
+";     c #B2BDC2",
+">     c #A0A09F",
+",     c #B5B6B6",
+"'     c #A9B5B9",
+")     c #A2ADB2",
+"!     c #A1ACAE",
+"~     c #AAAAAA",
+"{     c #A6A6A6",
+"]     c #A0A0A0",
+"^     c #9CA5A9",
+"/     c #9F9FA0",
+"(     c #939DA1",
+"_     c #9FA09F",
+":     c #A09F9F",
+"<     c #90928F",
+"[     c #949A9B",
+"}     c #9B9C9B",
+"|     c #9D9E9D",
+"1     c #999A99",
+"2     c #969896",
+"3     c #919391",
+"4     c #959795",
+"5     c #929592",
+"6     c #899497",
+"7     c #8C969A",
+"8     c #8A9395",
+"9     c #848E91",
+"0     c #8C918C",
+"a     c #8D918D",
+"b     c #888C87",
+"c     c #8B8E8B",
+"d     c #898D89",
+"e     c #8A8E8A",
+"f     c #828B8D",
+"g     c #868C86",
+"h     c #858A85",
+"i     c #828982",
+"j     c #818587",
+"k     c #818681",
+"l     c #7C8789",
+"m     c #7D8689",
+"n     c #7B8385",
+"o     c #D170D1",
+"p     c #C54CC5",
+"q     c #A837A8",
+"r     c #902F90",
+"s     c #7070D1",
+"t     c #4C4CC5",
+"u     c #757E81",
+"v     c #3737A8",
+"w     c #2F2F90",
+"x     c #80857F",
+"y     c #7F887F",
+"z     c #7E847E",
+"A     c #7E817E",
+"B     c #7A807A",
+"C     c #708070",
+"D     c #6E716E",
+"E     c #737877",
+"F     c #787F78",
+"G     c #737B7C",
+"H     c #747C73",
+"I     c #767D76",
+"J     c #747C74",
+"K     c #757B75",
+"L     c #747B74",
+"M     c #737B74",
+"N     c #747B73",
+"O     c #727972",
+"P     c #737B73",
+"Q     c #717971",
+"R     c #707870",
+"S     c #6D7679",
+"T     c #6C7274",
+"U     c #686E71",
+"V     c #70786F",
+"W     c #707060",
+"X     c #616669",
+"Y     c #696C6A",
+"Z     c #6D6E6D",
+"`     c #6F6F6F",
+" .    c #646B6D",
+"..    c #666966",
+"+.    c #626563",
+"@.    c #616561",
+"#.    c #5C6365",
+"$.    c #595F61",
+"%.    c #5F685F",
+"&.    c #5B605B",
+"*.    c #5E615E",
+"=.    c #506050",
+"-.    c #494F51",
+";.    c #545A5C",
+">.    c #5A5D5A",
+",.    c #5A5E5A",
+"'.    c #595C59",
+").    c #545954",
+"!.    c #565956",
+"~.    c #575A56",
+"{.    c #555855",
+"].    c #535654",
+"^.    c #545554",
+"/.    c #545754",
+"(.    c #515651",
+"_.    c #535653",
+":.    c #525552",
+"<.    c #515451",
+"[.    c #515551",
+"}.    c #505450",
+"|.    c #515251",
+"1.    c #515351",
+"2.    c #505350",
+"3.    c #4D5254",
+"4.    c #50584F",
+"5.    c #50544F",
+"6.    c #4F584F",
+"7.    c #4C504B",
+"8.    c #4F544F",
+"9.    c #4E524D",
+"0.    c #4E534E",
+"a.    c #4F534F",
+"b.    c #4F524F",
+"c.    c #4E524E",
+"d.    c #4F514F",
+"e.    c #4F504F",
+"f.    c #4E514E",
+"g.    c #4D524D",
+"h.    c #4C514C",
+"i.    c #4D514D",
+"j.    c #4D504D",
+"k.    c #4C504C",
+"l.    c #4B504B",
+"m.    c #405040",
+"n.    c #45494B",
+"o.    c #4A4E4E",
+"p.    c #4D4E4D",
+"q.    c #4C4E4C",
+"r.    c #4C4F4C",
+"s.    c #494E49",
+"t.    c #4A4F4A",
+"u.    c #4B4F4B",
+"v.    c #4B4E4B",
+"w.    c #4A4E4A",
+"x.    c #4B4C4B",
+"y.    c #4A4D4A",
+"z.    c #484D48",
+"A.    c #494D49",
+"B.    c #494C49",
+"C.    c #484C48",
+"D.    c #494A49",
+"E.    c #484A48",
+"F.    c #484B48",
+"G.    c #484C47",
+"H.    c #444843",
+"I.    c #474C47",
+"J.    c #464A45",
+"K.    c #464B46",
+"L.    c #474B47",
+"M.    c #474A47",
+"N.    c #464A46",
+"O.    c #464946",
+"P.    c #454A45",
+"Q.    c #444944",
+"R.    c #454945",
+"S.    c #454845",
+"T.    c #444844",
+"U.    c #404840",
+"V.    c #434843",
+"W.    c #434644",
+"X.    c #454645",
+"Y.    c #454645",
+"Z.    c #444744",
+"`.    c #424641",
+" +    c #434643",
+".+    c #434743",
+"++    c #424642",
+"@+    c #424542",
+"#+    c #414641",
+"$+    c #404440",
+"%+    c #414541",
+"&+    c #414242",
+"*+    c #404340",
+"=+    c #3E4142",
+"-+    c #6B236B",
+";+    c #531B53",
+">+    c #4D194D",
+",+    c #471747",
+"'+    c #23236B",
+")+    c #3C3E40",
+"!+    c #1B1B53",
+"~+    c #19194D",
+"{+    c #171747",
+"]+    c #40433F",
+"^+    c #40483F",
+"/+    c #3B403B",
+"(+    c #3F443F",
+"_+    c #3D423D",
+":+    c #3F423F",
+"<+    c #3E413E",
+"[+    c #3D403D",
+"}+    c #1F2420",
+"|+    c #2D3030",
+"1+    c #363A39",
+"2+    c #3B3F3D",
+"3+    c #3E3E3E",
+"4+    c #3C3F3C",
+"5+    c #3A3D3A",
+"6+    c #3B3F3B",
+"7+    c #393D39",
+"8+    c #383B39",
+"9+    c #373C37",
+"0+    c #363A36",
+"a+    c #303F30",
+"b+    c #333534",
+"c+    c #323532",
+"d+    c #303730",
+"e+    c #242728",
+"f+    c #2A2C2D",
+"g+    c #2F2F2F",
+"h+    c #212E2E",
+"i+    c #222425",
+"j+    c #202720",
+"k+    c #3B143B",
+"l+    c #1D1F20",
+"m+    c #14143B",
+"n+    c #0F100F",
+"o+    c #1C1C18",
+"p+    c #121212",
+"q+    c #0F1510",
+"r+    c #170817",
+"s+    c #0E0F10",
+"t+    c #080817",
+"u+    c #100F0F",
+"v+    c #07090A",
+"w+    c #0A0A0A",
+"x+    c #0D0D0D",
+"y+    c #0E0E0E",
+"z+    c #0F0F0F",
+"A+    c #0B040B",
+"B+    c #02050D",
+"C+    c #040404",
+"D+    c #050606",
+"E+    c #070707",
+"F+    c #060606",
+"G+    c #030303",
+"H+    c #000000",
+"^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+^+}+",
+"V W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W g+",
+"> > > > > > > > > > > > > > : : : : : : > > > > : : : : : : : : : : : : : : : : : > > > : : : : : : : : : : : / / / / / / _ _ _ _ _ _ _ _ > > : ] : ` C+",
+"> / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / : ] : ` F+",
+"> / y e.g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+%./ : ] : ` C+",
+"> / y e.6.6.e.e.U.6.m.e.6.(+e.e.e.m.U.6.m.e.6.(+e.e.e.m.U.6.m.j.6.U.e.e.e.m.U.6.m.e.6.U.p.e.4.m.e.6.U.e.e.e.m.U.U.m.m.m.m.m.6.m.U.j.m.e.U.U.] ] ] : ` F+",
+"> / y e.D ..D @.|.'.@.,.]...&.+.*.'.*.*.*.&.1...>.+.*...{.&.....*.@.D ..*.*.&.'.......@...*.,...&.@.*.*.D *.+...*.@.@.:.....*.@.@.>.Z [.j. +] ] ] : ` C+",
+"> / y e.u.~.l.:.h./.].k.h.B.{._.b.c.z.).T.2.f.S.v.A.F.N.0.0.t.'.<.:.j.a.<.{.g.N.h.].2.r.y.{.!.<.z.K.k./.}.M.%+}.K.h.W.c.y.0.).N.z.!.k._.&+0+: ] : : ` F+",
+"/ / y e.*.z.2+.+$+<.W.<+(+(+j.t.y.h.z.P.++_.y.c.$+N.v.Q.h.7+_+q.b.$+*+_+:+!.V.7+s.$+S._+b.S.y.W.<+<.N.S.N.:.C.I.0.s.@+f.s.t.0.(.(.6+ +$+E.b+: ] ] : ` C+",
+"_ / y f.~.F.B.@+Q.[+_+0.).%+b.$ $ $ %+*+k.$ $ $ [.r./.++h.:.h. +(.(.b.y.C.<.(.(.$ $ N._.K.$ K.).v./.++h.:.h. +[.2.T.c.M.b.I.g.[.5+<.j.S. +@+/ ] | / ` F+",
+"_ _ y e.*.).b.b.).b.~./+P.h.(.$ $ $ ]+@+L.$ $ $ g.++%+c.<+6+:.F.(.(.c.v.c.8+K.++0.7+N.M.$ $ K.I.%+%+c.<+6+:.F.k.S.s.T.r.y.K._+z.P._+S.s.X.4+] ] / / ` C+",
+": / y e.@.f.[.:+++r.c.y.g.5+r.$ $ $ $ F.$ $ $ $ #+:+$ $ $ $ }.b.$ $ $ $ 0.2.K.I.$ $ 0+$ $ $ $ .+*+$ $ $ $ }.b.$ $ $ $ q.v.I.#+s.!.C..+W.%+&+: | / : ` F+",
+": / y e.&.F.B._.0.b.0+K.8.}.!.$ $ $ $ r.$ $ $ $ 6+$ $ ]+T.$ $ v.$ $ $ $ $ $ _.0.$ $ _.W.$ $ *.8.$ $ ]+T.$ $ v.$ $ t.B.M.$+H.#+_+I.Q.F.S.O.c+: : : | ` F+",
+"/ | y e.{. +).W.c.W.z.t.K.K.$+$ $ (.$ %+$ %+$ $ z.$ $ k.(+$ $ {.$ $ b.y.$ $ (.(.$ $ N._.$ $ I.).$ $ k.(+$ $ {.$ $ ++).y.y.G.I.6+#+.+t.F.O.X.: / | / ` F+",
+"_ : y e.*.$+O.2.[.B.v.'.8.Q.z.$ $ #+$ $ $ (.$ $ [.$ $ V.h.$ $ k.$ $ c.v.$ $ K.++$ $ 0+M.$ $ *.h.$ $ V.h.$ $ k.$ $ t.M.7+`.P.s._+8.N._.j.[+8+/ : | / Z F+",
+"/ | y e.b.t.y.b.'.F.z.(.g.++j.$ $ #+$ $ $ w.$ $ ~.$ $ z.I.$ $ y.$ $ *.v.$ $ K.I.$ $ N.$+$ $ I.++$ $ z.I.$ $ y.$ $ }.(+7._.).P.}._+++c.~.5+5+: | / / ` F+",
+": | x j.r.y.$+).W.b. +y.r.N.M.$ $ .+Q.$ 2+t.$ $ $+k.$ $ $ $ t.6+$ $ h.v.$ $ _.0.$ $ *.W.b.$ $ K.k.$ $ $ $ t.6+$ $ z..+f.z.t.K.I.5+%+W.y.@+<+: | | / ` F+",
+"/ | A e.@.}.).K.K.C.$+C.Q.C.$+Z._+_+2.).$+c..+<+S._.N.c.C.T.t..+c._.f.].).(.t.++!..+z.<.F.F.].).a.i.5+_.j.f.*+b.0.++t.}.b.`.g.++0..+O.9.@+<+| : : | ` F+",
+"| / A p.<.[.Q.u.N.M.,.V.c.0.y.k.y.6+(.g.K.w.k.Z.~.<+r.F.K.l.f.].h.2.O.t.S.}.z.I.9+%+K.r.<+2.M.:.f..+C.*+/+r.).(+#+%+$+8.z.I./+c.c._+(+J.d.f+| | / / Z F+",
+"| / y 6.[.N.7+].&.h.z.I.0.K.b.O.y.z._+9+(.h.i. +4+W.<+(+t.s.@+(+%+<.B.y.].K.P.Q.T..+s.y.<.E.:+M.A.g.w.W.S.F.Q.K.5+k.z.I.8+I.S.O.z._+8.7.<+&+| / | | ` F+",
+"| | y 6.[.K.'.c.C.N.l.z.++++F.S.@+h.P.l.C.0.t.].Z.c._.h.#+++Q..+I.u.O.v.j.K.K.}.T.h.[.F.[+*+ +:.H.8.,.F.r.<.s.t.$+K.$+Q.0.t.k.(+<+/+J.J.]+&+: | / | ` F+",
+"| / y 6.<.0.;+>+,+,+,+,+,+,+,+,+,+>+q }.N.s.t.<.&.2+.+h.I.++0.s.2+F.2.0.K.Q.t.0.M.v.'.O.v.y.J.2.K.H.T.5+:+v.h.V.8.Q.z.T.K.8.c.c.8.P.8.5.:+X.| / | | ` F+",
+"| | y e.f.k.r r r r r r r r r r r r ,+P.$+/+.+F._+*+.+s.t._+z.N.2.j.<+<.++P.P.0.t.).y.B.W.i.2.<.h.,.s._+E.[+C.5+V.0.z.}.[.l.h.N.t.s..+A.X.<+| | / | ` C+",
+"| | y 6.d.:.-+r o p p p p p p p p k+r+}.'.k.Q.f. +:.Z.).V.0+C.5+N.r.:+%+a.V.5+}.N.T.<.&. +4+y.j.[.Q.6+O.M.f.t.#+$+K.t._.}.I.N.!.T./+0.`.S.g+/ | | } ` F+",
+"| | y e.&.v.-+r r r r r r r r r r k+r+#+C.$+Q._.y.$ $ $ $ $ w.}.$ N.C.].c.B.$ }.++T.h.r.$ y.*+M.$+g.P.M.!.r.}.8.c.y..+h.k.`.c.N.Q.#+P.[+v.5+| | : | ` C+",
+"| | y 6.)..+-+r r r r r r r r r r k+r+#+Q.F.O.K.<+<.$+,.c.$ w.w.$ z.7+B.5+j.$ $ $+@+v.$ $ i./+b.F.Q.W.S.c.j.t.g.z._+f.].t.#+K.[.c.T./+7.:+E.: | | } ` F+",
+"| | y e.].K.-+r r r r r r r r r r ,+r+t.K.O.f.W.<.5+$+Q.$ <.(+N.$ ~.K.W.$+B.$ $ C.].5+$ $ 7+y.S.:+`.b.y.C.<.c.(+_.t._.:+N.).t.8.8.).'.7.S.8+| | : } ` F+",
+"| } y e.k.c.-+r p r r r r r r r r ,+r+#+z.F.W..+ +c.2.$ $ 5+t.2+$ <+C.].c.B.$ z.$ F.$ j.$ 8+9.'.).C.c.v.c.8+K.++0.7+M.j.].l.P.).c.b.O.t.|.5+| | | | ` F+",
+"| | y e.:.).-+r r r r r r r r r r k+r+t.}.[+<+S.O.<.M.$ I.<.c.M.$ z.7+B.5+j.$ ].$ W.$ B.$ J.7.<+7.z.h.y.0.2.K.I.).s.$+F.K.#+h.I./+).<. +X.<+| | | } ` F+",
+"| } y e.>.z.-+-+r r r r r r r r r ,+r+s.C.:. +C.B.5+$ c.l.5+++v.$ ~.K.W.$+@+$ *+$ C.$ (+$ K.F.*+j.0+h.v.c. +_.0.s.c.W.b.f.g.).Q.h.P.$+r.0+5+| | } | ` F+",
+"} | x f.2.}.-+r p r r r r r r r r k+r+P.t.B.<.v._.$ $ $ $ $ h.@+$ $ $ $ <+!.$ f.s.$ l.z.$ 4+]+@+:..+0.,.C.r.}.z.t.*+F.@+%+$+}.P.#+<+f.A.5+D.} : } } ` F+",
+"| } y e.].O.-+r -+r r r r r r r -+,+r+(+Q.F.2.K.f.z.[+N.I.V.s.B.r.c.*+_.S.k.++}.{.].O.z.4+9. +M.S.j.Z.<.O.v.c.I.5+(+F.].S.8.l.l._+_+_+N.@+8+| } | } ` F+",
+"| } y e.&.v.-+k+r+r+A+A+A+A+A+A+r+A+r+Q.Q.$+:.<.@+0.5+0.V.h.%+5+'.F._.h.2._+h.++(+@+<.M.q./.H. +b.<+%+@+S.S.T.l.K..+B.W.t./+Q.7+~.(+{.++:+4+} | | } ` F+",
+"} } y e.'.h.r+H+H+H+H+H+H+H+H+H+H+H+H+#+z.N.M.++_.R.Q.$+P.#+k.h.j./+A.5+0.Q.z.++_.k.2.(.@+6+]+6+<.%+f.y.b.B.k.5./+K._.S.W.0._+_+_.!..+R.]+&+} } } } ` F+",
+"} } y e.!.:.s.N.k.b.W.C.z.++{.M.(.N.0.F._+$+t.2.r.5+h.Q._.(.$+%+}.<+F.8+P.C.c.C.(._+C._.2+<.`.b.).F.%+S.v.]+K.z.0.J.9.B.c.(.7+g./+_.B.'.D.<+| } | } ` F+",
+"} } y f.).u.K.1.h.@+0.#+L.0+M.K.B.6+Q._+t.!.s.F.<.t.<+c.K.8.$+v.@+:.:+K.y.0.z.h.%+.+t.O.<.k.a.<+R.k.~.r.j.b.S.).s.8+!.c.4+Q.I.V.t.F.v.j.5+W.} } } } ` F+",
+"} } y e.!.K.9+r.(+).t.6.(+i.M.B.:.0+U..+t._.z.v.B.B.!.h.}._+z.z.(+E.<.5+:.t.P.7+C.C.5+N.Z.M.F. +:.}.++2.5+2.S.h.#+7+~.K.s._+A.]+K.8.(.s.*+3+} } } } ` C+",
+"} } y e.*.*+.+ +%+}.z.I.5+c.b.$+@+C._.0+ +y.[.j. +*+O.++P.7+c.s.k.2.y.j.B.%+P.Q.C.K.v.2+@+2.S.2.T.H.H.B.W. +y.s.`.h.5+ +<.7.5._+0.`.(+`.x.5+} } } } ` F+",
+"} } y p.@.@+j.B.j.T.).I.h.:.@+r.j.%+}.8.(+$+%+O.y.B.B.K.7+K.C.T.z.F.S.~.@+$+g.#+6+_+0.F.0+:+<+<.5+`..+]+W.<+@+/+(+8+_+J.@+9+{.*.h.z.I.9.`.&+} } } } ` C+",
+"} } x e.&.r.F.%+%+s.(.(.#+%+ +$+v.N.0.l.0.c.K. +r.W.B.s.z.).}.N.k.r.<.v.B.k./+}./+s.N.{.B.q.B.4+2.l.5.B.f.>.S.z.z..+i.N.T.h.a.R.Q.g.9+9.&+0+} } } } ` F+",
+"} } y e.).%+++w.P.K.#+(.V.P.$+N..+g.l.l.6+z.6+<.O.y.S.).l.0.[.++/+@+4+:. +0.s.0.C.s.}.:+B.{.O.2._.5+b.[+{.v.,.g.h.~.u.C..+H.7+$+s.t.V.5.@+3+} } } } ` C+",
+"} } y e...(+;+>+,+,+,+,+,+,+,+,+,+>+q t./+0.T.F.C.}.j.0.(.z.K.l./+/.<+F._.t.Q._+v.M.S.S.B.2. +`.H.s.7+@+B.E.h./+9.9.K.T.4+).u.:.}.~.(.z.5+8+} } } } ` F+",
+"} } y e.@.'.r r r r r r r r r r r r ,+(+:+*+$+y.F.*.6+.+h.I.++0.s.2+L.2.0.K.Q.s.[.(+{.j.[+B.r.4+t.g.&.9.E.`.7.I.7.%+5+H.0.t.6+_+~.I.6+`.p.c+} 1 } } ` F+",
+"} 1 y f.!.(.-+r o p p p p p p p p k+r+/+_+F.C.z.y._+*+.+s.t.(+z.N.2.j.:+[.++P._+{.S..+_.f.`.F.f.4+u.B.F.G.5+_.H.H.[+`.v.h.7.w.i.u.Q.G.`.S.b+} 1 } 1 ` F+",
+"} 1 y e.}.O.-+r r r r r r r r r r k+r+#+_.r.2.(. +$ v.0.z.Q.~.$ M.$ {.:.F.5+s.z.Q.:.5+b.2+).A.,.a.i.'.v.B.<+!.s.8.0.~._.y.H.G.(.`.c.i..+[+5+1 } } 1 ` F+",
+"1 1 x e.@.L.-+r r r r r r r r r r k+r+Q.T.@+B.*+<+$ $ /+8.$+$ $ b.z.v.2.[+B.(..+h.v.$+y.y.:.[.W.$+<+F.y.(.j.s.V.V.!.S.O.B._+P.V.H.~.b.C.]+[+} 1 1 1 ` F+",
+"} 1 y e.&.v.-+r r r r r r r r r r ,+r+)._.y.y.y.S.$ $ _+%+z.$ $ j.$ v.c.$ M.k.$ 5+:.*+*+'.@+y.O.:.F.%+1.A.y.Q.t.V.Q.B.B.H.G.7.K.P.Q.w.i.b+@+1 } 1 1 ` F+",
+"1 1 y e.>.#+-+r p r r r r r r r r ,+r+s.7+y.j.&.j.$ @+$ t.$ f.$ y.$ r.z.S.$ $ ).).F.@+S.:.B.v.*+>.9+}.j.j.Z.v.P.V.s.!.M.(.V.t.P.0+}.2.B.4+8+1 1 1 1 ` F+",
+"1 1 x e.>.(.-+r r r r r r r r r r k+r+(.). +O.N.r.$ $+$ K.$ $+$ Z.$ f.s.q.$ $ C.%+E.8+Z.y.S._.M.S.A.L. +r.M.*+l.I. +@+B.1.`.P.h.l.N.A.:+*+b+1 1 1 1 ` F+",
+"1 1 z e.e.W.-+-+r r r r r r r r r ,+r+P.K.:+2.j.@+$ *+$ C.$ (+$ O.$ v._+1.$ $ K.5+@+ +q.j.*+*+2..+i.i.@+f.%+++J.V.s.J.&+9.#+$+V.t.9+$+K.*+[+1 1 1 1 ` F+",
+"1 1 A p.@.r.-+r p r r r r r r r r k+r+h.b+z.b.2.!.$ f.s.$ l.z.$ B.$ M.k.$ ).K.$ }.7.[+9.]+`.9.b.G.s.A.4+9.h.t.8._+_.K.`.Z.(.J.5.l.`..+[+B.8+1 1 1 1 ` F+",
+"1 1 A e.&.#+-+r -+r r r r r r r -+,+r+/.t.<.(+v.y.<+N.}.5+}.s.N.6+y.B.5+Q.T.K.P.$+<.<.@+9.8+9.H.9. +5+~.O._.h.5./+g..+$+!.l.7+H.s.(.E.B.]+8+1 1 1 1 ` F+",
+"1 1 A p.*.W.-+k+r+r+A+A+A+A+A+A+r+A+r+U._+<+$+c.v.y.j.s.K.++(.B.0.++O.v.S.c.5+_+u.9.$+%+<+:+!.S.6+l.`.S.<+b.Q.s.`./+<.M. +8.P.t.(.`.`.r.8+b+1 1 2 1 ` F+",
+"2 1 A e.1.s.r+H+H+H+H+H+H+H+H+H+H+H+H+'.6+++v.N.S.@+_.N.P._+T.++f.h.r./+s.6+8.V.K..+{.7.d.:. +5+$+5+b.*+9.y.2.z.s.9.[+F.S.H.(.I.z.0.t.%+O.3+1 1 1 2 ` F+",
+"1 1 A e.>.C.t.}.O.v.B.C.!.v.M.b.<+<. +@+c.<.r.:.d.5+j. +r. +t.:+ +r.<.$+ +$+ +O._+v.q.q.<+<+j.<+4+1.J.1.E.4+d.7.r.B.1.4+_.V.g.(.5+9.[+:. +v.2 1 1 1 Z F+",
+"2 1 A p.:.6+S.F.s.S.B.t.K.K.[.N.b.[.P.5+_+$+:..+d.&.F.k.0.z.s.$+B.%+S.[.r.k./+_+/+M.E.H.9.y.:.~._.7.`.4+j.!.S.8./+j.`.B.F.$+++u.F.5+d.^.c+&+1 2 1 2 ` F+",
+"1 2 A e.<.z.%+M.C.2.K.c.z./+O.z.S.k.z.t.h.*+_.O.r.T.:.~._.Q.C.[+f. +M.Q.f.Q.(.Q.z.j.B.4+$+z.).q._+H.7+!.%+{. +Q.A.y.O._.B.0+(.(+K.$+_.u.y.5+1 2 1 2 ` C+",
+"2 1 A e./.c.M.].h.@+r.Q.t.I.}..+v.Q.I.(+k. +2.%+y.s._..+I.z.k.j.*+_. +0. +t._+(.K.[+F.$+/.T.b. +y.v.J.M.%+j.9+7.s.7.@+_.B.z.Q.%+#+w.C.7.O.g+1 2 1 2 ` F+",
+"2 2 A p.].w.w.<.c.v.k.0+,.V. +[.f.5+g.z.k.r.y. +y.k.v.K.#+++N.r.f.j.].O.<+*+P.J.K. +O.1.j.@+5.H.B.0+J.O.z.5+Q._+l.!.F.M.b.s.8.Q.0.%+@+2.&+b+2 2 1 2 ` C+",
+"1 2 A e.{.P.*+!.7+r.y._.h.$+%+0.f..+9+s.k.O.y.z.:.++r.K.P._+N.r.2.y.&.Q.Z._+Q.g.8+`.:+S.`.s.0.<.~.$+9.E.S.F.K.(+u.6+B._.2.s._+c.K.5.$+r.5+X.2 1 2 2 ` F+",
+"2 1 A p.e.{.5+B.*+/.:+r.).v.y.M.5+W.K.s.C.W.r.2.S.[.r.C.K.8.N. + +i.w.K.F.c.(.g./+$+/.v.S. +b.y.M.Q.h.H.~.~..+J.L. +[+d.:.k.(.t.0.Q.1.`.E.5+1 2 1 2 ` F+",
+"2 2 A e.*.O.;+>+,+,+,+,+,+,+,+,+,+>+q _+Q.*+O.z.N.}.k.a.(.z.K.l./+/.<+F._.t.V.}.j.0.(.z.J.l._+_.<+<.r.b.(.z.J.l._+].:+E.S.J.0.w.0.K.:+9.@+g+2 2 2 2 ` F+",
+"2 2 A e.].~.r r r r r r r r r r r r ,+%+t.M.O.F.M.*.6+.+i.K.++c.s.2+L.2.0.K.Q.*.6+.+h.I.#+g.w.4+E.&.4+ +h.I.#+g.y.4+E.2._.t.H.H.H.c.S.<+8+c+2 2 2 4 ` C+",
+"2 4 A p...2.-+r o p p p p p p p p k+r+$+K.T.*+%+.+_+:+++A.s.(+C.N.2.j.:+[.++P.<+]+ +y.s.]+G.J.b.r.<+]+ +y.s.]+G.J.2.j.<+0.J.H.V.0..+z.t.&+5+2 2 2 4 ` F+",
+"2 2 A e.j.!.-+r r r r r r r r r r k+r+M.Q.T.N.f.u.$ $ $ $ Q.(+B.5+C.2.7+:.c.).K.R.C.@+$ Z.F.%+S._+_+b./.`.9. +_+H.(.J.f.<.`.P.`.i.:.d._.d.@+4 2 2 2 ` F+",
+"4 2 A e.r.<+-+r r r r r r r r r r k+r+++++++K.O.C.$ g.y.(+$ (.N.!.v.b.b.{.~.k.w.P.w.++$ d.].]+!._.b.1.:. +/.:+9.%+z.s.<+J.t.H.P._+b.7.y.E.@+4 4 2 4 ` F+",
+"4 4 A p.q.w.-+r r r r r r r r r r ,+r+s.B.S.6+S.C.$ 5+I.~.$ Q.C.$ $ r.s.6+$ $ $ ++0+i.$ _.$ $ $ $ 7+M. +$ $ F.7.J.$ $ K.5+_.(.T.s.7.J.j.]+X.4 4 2 2 ` C+",
+"4 4 A e.'.v.-+r p r r r r r r r r ,+r+N.(+[.k.:.A.$ $ $ $ 0..+$ k.B.$ :.F.$ $+l.$ Q.F.$ /.b.<+@+$ s.S.$ b.7.$ H.$ `.).$ %+J.z.J._+g.H.J.B.3+4 4 4 4 ` F+",
+"4 4 A p.>.S.-+r r r r r r r r r r k+r+_+h.c.T.j.:.$ 2+*.$ t.s.$ $ $ $ f.@+$ 6+]+$ <+H.$ B.r.$ $ $ _+J.$ Z.<.h.#+$ $ $ $ h.%+]+#+0.9.#+H.S.b+4 4 4 4 ` F+",
+"4 4 A e.<.>.-+-+r r r r r r r r r ,+r+.+k.N.C.$+<.$ S.}.++$ .+$ 8.A.c.<.4+$ 7.H.$ 9.`.$ b.$ ]+1.$ Q.:.$ /.,.$ #+$ Q.Q.`.(.Q.N.%+J.#+7.7.D.g+4 4 4 4 ` F+",
+"4 4 A p.!.2.-+r p r r r r r r r r k+r+%+t.F.!.j.:.$ r.K.P.$ N.r.$ $ $ Q.Z.$ $ $ 9+@+<+$ `.$ $ $ $ $+9.E.$ $ K.(+l.$ $ $ (.7.(.t.0.Q.1.`.X.5+4 4 5 4 Z F+",
+"4 5 A m.j.r.-+r -+r r r r r r r -+,+r+(..+_.(+b. +[.r.C.K.8.N. +++i.v.K.E.$ (.g.4+$+/.v.S..+0.v.J.Q.j.H.~.~..+K.I..+4+d.S.J.9.s.0.K.:+9.]+c+5 4 4 4 ` F+",
+"4 4 A e.+.'.-+k+r+r+A+A+A+A+A+A+r+A+r+0.C.0.C.W.2.Q.B.s.5+h.%+B.j.,.}.`.v.$ h.[.H.$+B._+S.2. +q.0+<.j.F._. +H.K.I.<+7._.0.t.z.H.H.9.S.<+9+c+4 5 4 4 Z F+",
+"5 4 A p.*.$+r+H+H+H+H+H+H+H+H+H+H+H+H+9+k..+9+b.'.%+6+%+~.Q._+C.8+N.d.8+<.j.).R.H.M.*+M. +G.]+H._+4+9.:.$+h. +/+V.[.Q.j.M.]+).V.9. +G.v.]+4+5 5 4 5 ` F+",
+"4 5 A m.^.w.C.2.2.~.(.P.V.G.v.M.y.h.0.0.++N.k.y.b.5+f._+g.(+%+h.}.C.7.y.<+y.B.}.S.$+'.L.[.$+]+d.<+B.7+M.F.j.z.(._+E._.[+(.#+9.:.O.*+S.y.]+G.4 5 4 4 Z C+",
+"4 5 A e.&.8+{.f._+{.5.$+).Q.!.B.[+h.z.(+c.[.%+r.O.y.Z.O.&.K.<+v.k.a.:.F.`.7. +9+]+H.]+]+8+E.H.S.F.y._.&+@+$+M.j. +A._+w.&+*+]+%+J.4+@+]+7+4+5 4 4 5 ` F+",
+"5 4 A m.*.y.}.r.b.:.z.K.l.[+_.<+F._.t.Q.}.N.z.:.5+v.0+8+C.Q._+$+}.w.B.:.b.%+a+a+d+a+d+a+a+d+d+a+a+a+d+a+d+d+a+a+a+d+a+d+a+|+d+3+g+a+3+d+g+o+5 5 3 4 ` F+",
+"4 5 C m.&.R.*.4+ +i.I.++9.y.2+E.2.0.K.Q.6+C.}.r.M.f.*+9+0.Q.s.N.0.a.F.F.Z.<.d+q+q+q+z+z+z+z+z+u+z+z+z+z+z+z+u+z+z+y+B+z+y+B+z+z+z+u+z+z+y+z+5 4 4 5 ` F+",
+"5 5 C e.*.z.<+*+ +w.t.(+I.R.2.r.:+[.++P.N.5+z.8+O.r.O._.P.V.C.N.T.k.E.*+f.B.m.d c e e e e e e e e e e e e e e e e e e e e e e e e e e e d e 5 5 5 5 ` D+",
+"5 5 C m.{.0.b.j.<+}._+Q.8.'.].,.<+.+s.P.Q.$+).M.M.$+M..+h.h.t.6+t.6+1.J.B.H.m.d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d 5 5 5 5 ` D+",
+"5 5 C m.2.h.<.j.b.:.z.K.l._+].:+F._.t.Q.0.T.%+M.j.{.~.K.8._+%+h.'.$+y.:.d.j.d+d+d+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+%.3 5 5 3 ` D+",
+"5 3 C m._.<.&.4+ +j.I.++0.w.4+F.2.0.K.Q.C.O.N.T._.a.@+C.h.5+t.F.z.C.5+_.S.J.4.4.m.e.6.^+e.e.6.m.e.6.^+e.e.e.m.^+^+m.m.m.m.m.6.m.^+e.m.e.^+#+5 5 5 5 ` D+",
+"5 3 C m.!.k.h.Q.).S.b.!.(.y.*+O.Z.R.~.g.K.S.h.s.W.@+O.W.$+l.Q.r.s.<.y._.`.g.(.l.%+ +K.S.E.y.S.y.7.K.F.:.J.d.[.J.6+_+$+:.@+0.,.I.l.a.B.y.4+4+3 5 5 3 ` D+",
+"5 3 C m.<.k._+_.++A.s.(+I.R.b.r.<+}.#+Q.++v.N.T.:.Z.).:+l.$+.+s.B.<.J.$+'.G.(.$+$+b.<+F.7+K.F.j.z.(._+F._.[+:.#+9.(.M.&+S.t.$+L.z.a.M.9.y.]+3 3 3 3 ` D+",
+"3 3 C m.~.k.;+>+,+,+,+,+,+,+,+,+,+>+q 6+Q.f.~.K.:.[.k.0.(.z.K.l./+/.:+F._.t.V.}.k.a.(.z.J.l._+_.:+F._.t.V.}.k.0.(.z.J.l._+].:+F._.t.H.J. +X.3 5 5 3 ` D+",
+"3 3 C m.'.a.r r r r r r r r r r r r ,+V.C._.5+.+:+&.2+.+h.I.++0.s.2+L.2.0.J.V.*.4+.+h.I.#+9.s.4+F.2.0.J.V.*.4+.+h.I.`.9.s.4+F.2.a.K.H.+.F.4+3 5 3 3 ` D+",
+"3 3 A e.*.Z.-+r o p p p p p p p p k+r+_+k.y.C.Q.b._+*+.+s.t.(+z.N.2.j.<+[.`.P.<+*+.+w.s.]+G.J.2.j.:+<.`.Q.<+]+.+s.t.(+z.J.2.k.<+}.#+Q.0+%+W.3 3 3 3 ` D+",
+"3 3 A m.*.2+-+r r r r r r r r r r k+r+0.$+f.s.h.y.$  +s.g.8.).$+0.z.S.G.M.%+l./+C.:._.i.$ v.b.S.<.`.j.$ $ $ $ #+z.u.r.{.<+z.$+,.R.$ J.2.F.3+3 3 3 3 ` D+",
+"3 < A e.{.%+-+r r r r r r r r r r k+r+T. +W.5+0.S.$ d.@+0.t.5+$+F.s.F.>.M._.}.z._.L.C.a.$ 9.B.]+v.G.B.$  +B. +$ H.Q.*+*+B./+]+(+$ V.K.7.<+[+< < 3 < ` D+",
+"3 3 A p.@.B.-+r r r r r r r r r r ,+r+%+(+ +t.!.r.$ W.).z.g.*+$ $ Q.j.$ $ $ $ (+(+4+$ $ $ 6+7.@+S.<+2.$ y.H._+$ Q..+$ $ M.G.8.$ $ $ s.t.b.|+< 3 3 < ` D+",
+"< < A m.*.w.-+r p r r r r r r r r ,+r+K.z.>.v.9+*+$  +6+~.K.$ q.}.$ b.H.$+V.$ Q.s.$ .+.+$ ]+`.@+S.H.H.$ F.S.s.$ V.$ _+[+$ ).T.N.$ l.[+:+*+8+< 3 3 < ` D+",
+"< 3 A p.).c.-+r r r r r r r r r r k+r+s.h.*+b.5+f.$  +K.I.T.$ <+_.$ S.K.$ $ $ z.2+$ @+L.$ G./.`..+s.F.$ j.4+0.$ V.$ $ $ $ s.0.s.$ g._.J.5+g+< < < < Z F+",
+"< < A m.{.!.-+-+r r r r r r r r r ,+r+.+M.B._.Q.v.$ M.h./+0.$ E.S.$ v.$ 2+~.$ /+@+$ <+Q.$ _+z.j.(.t.b.$ B.B.5.$ `.$  +5+z.(+).(+$ ).q.y.S.c+< a < < ` C+",
+"< a C m.2.z.-+r p r r r r r r r r k+r+(+z.y. +!.F.$ $ $ $ }. +$ $ ].B.$ $ $ $ }._+*+$ $ $ _+.+B.B.v.]+$ $ $ $ 7.7.P.$ $ $ s.9+c.$ K.y.$ @+8+< < < < ` F+",
+"< < C p.@.F.-+r -+r r r r r r r -+,+r+%+++O.j.C.S.h.b.~.).(.(+:+>.$+F.N.[.z.$+}.L.B.S.t.Z.K.s.B._.H.y.Z.9+1.5.z.#+V.$+_..+(.8.0./+<+H.v.d.5+< a < < Z C+",
+"a < C m.*. +-+k+r+r+A+A+A+A+A+A+r+A+r+/+ +Q.@+F.r.r.t.W.l.$+.+y.F.<.J.%+'.C.Q.(+K.s.O.v.4+v.B.j.y.9.b.J.B.{.7.#+K.h.c.!.T.h.Q.(+7._+O.b.:+0+< a < < ` F+",
+"< a C m._.y.r+H+H+H+H+H+H+H+H+H+H+H+H+_+%+N.T.<.@+/.O.9+y.6+P.t.(+*+f.S.N.5.h.).z.C..+k.9.d.7.>.s._+O.5+O.5+Q.[.s.8.[.B.S.(.V./+8.%+B.5+3+f+a < a < ` C+",
+"< a C m.>.v.<+{.v.<.b.~.:.y.:+O.Z.Q.~.g.K.Z.j.y.W.@+O.T.$+l.Q.r.s.[.v._. +9.(.t.%+ +K.Q.F.v.S.A.l.P.E.<.J.b.[.J.5+<+*+:.++g.,.K.l.0.B.y.4+5+a < < a ` F+",
+"a a C m.'.W._+M.W.E.2+y.*+j.@+!.r.4+C.5+[+[+@+@+j.S.%+!.N.~.$+v.O.Z.S.S.:.j.$+t.Z.y.E.b.*+B. +M.]+u.@+j.$+B.B.[.$+J.F.j.k._+(.#+j.*+B.[+q.7+a a c < ` C+",
+"< a C m.r. +S. +1+E.v.:+j.W.E.O.j.|.S.W.*+W.2+W.O.v.7+e.v.O.M.q.<+j.1+X.5+W. +1+<+W.:+*+1+E.W.X.M.x.:.&+&+&+O.p.W.y.2+x.&+*+&+&+O.5+X.3+5+4+< a < a ` F+",
+"a a C m.m.m.d+d+a+|+g+c+d+3+a+c+d+a+a+a+d+a+d+a+a+c+d+a+a+a+d+a+d+a+a+d+d+a+a+a+d+a+d+a+a+d+d+a+a+a+d+a+d+d+a+a+a+d+a+d+a+g+d+3+g+a+3+d+g+o+c a a a ` C+",
+"a c C m.c+q+s+B+q+B+y+s+y+y+y+y+y+u+s+y+y+B+y+y+y+y+y+u+s+y+s+B+s+y+y+y+y+u+s+y+y+B+y+y+y+u+y+u+u+y+y+s+u+y+u+u+s+s+B+y+s+B+y+y+y+u+u+s+y+y+< a a a ` F+",
+"a a a a a a c a a a a a < a a a a a a a a a a a a a a a a a a a a < 0 a a a a < a a a a a a a a a < a a a a a c a a < a a a a a a a a a a c a a a a ` F+",
+"a a c a c 0 0 c 0 0 c c c c c 0 c c c 0 c 0 c 0 c c 0 c c 0 c c c c 0 c c a c c c c c c 0 c c c c c c a c c c a c c c c c 0 c c 0 c c c c a c a a a ` F+",
+"a c a ^+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+%.k c a c ` D+",
+"a c 0 j.6.6.e.e.(+4.m.e.6.U.e.e.e.m.U.4.m.p.6.^+p.e.e.m.U.6.m.e.6.#+e.e.p.m.#+6.m.j.6.^+p.e.6.m.e.6.U.e.e.e.m.U.U.m.m.m.m.m.6.m.^+f.m.e.U.U.k 0 0 c ` D+",
+"0 0 c 6.Y *.&.D ..*.&.+.@.>.'.*.&.'.@.&.@.@...@.Y >.+...@.'.,.&.&.*.+.&.@.+.&.*...&.....*.^.'.'...,...D *.+...*.@.'.*.'.&...@.@.!.{.{.>.y.*+e c c 0 ` D+",
+"0 c c 6.'.<. +/.C./.}.:.Q.j.M.'.F.K.8.[.k.{.f.F.<+}.f.t.*.z.[.j.].{.a.G.M.C.Q.i.t.<+F.@+^.J._.^.{.h.{.<._.2.'.8.!.Q.'.<.`.7.[.%+5.:.@.f.@+8+3 0 c c ` D+",
+"c 0 c 6.)._+y.w.t.M.f.++8.).@+(.M.c.P.#+y.S.W.z.8+Q._.c.z./+K.:+{.h.8+#+Z.$+++I.$+y.C.++++V..+M.S.C.s.5+C.~.w.P.z.K.C.u.z.7+z.7+g.V.8+h.:.s.5 c c c ` D+",
+"c c c 6.@.K.$ $ 7+b./+_.s.,.b.c.'.h.I./+).y.<.<.~._.y.$+Q.++.+!.b.B.O.h.B.$ $ $ %+*+k.$ $ $ }.v._.++h.:.h. +W.Q.V.P.$ $ B.t.J.C.(.Q.c.2.*+c+5 c c c ` D+",
+"c c c 6.,.i.$ $ 7+i.<.N.l.s.z.'.j.s.}._+}. +W.}.:.h.:.:.6+c.@+q.Z.h.*+T.r.$ $ $ ]+@+L.$ $ $ h.%+$+c.<+6+:.F.).z./+c.$ $ u.[./+s.++V.f.y.0+M.5 c c c ` D+",
+"c c e 6.[.(.$ $ k.W.:.[+P.).$ $ $ $ #+g.t.$ $ $ $ %+d.$ $ $ $ $ r.W.B.T.O.$ $ $ $ F.$ $ $ $ #+:+$ $ $ $ }.b.K.$ $ $ $ $ F.).$ $ $ $ c.C.@+@+5 c c c ` D+",
+"c c c 6.>.c.$ $ P.S.v.!.K.$ $ N.j.$ $ z.$ $ *+h.$ $ {.$ $ 8.f.$ $ j.r..+O.$ $ $ $ r.$ $ $ $ 6+$ $ ]+T.$ $ v.$ $ P.K.$ $ L.$ $ P.z.$ $ w.M./+5 e c c ` D+",
+"e c d 6.*.t.$ $ ++!._+t.I.$ $ }.!.$ $ Q.$ $ 2.B.$ $  +$ $ /+f.$ $ j. +C.:+$ $ (.$ %+$ %+$ $ z.$ $ k.(+$ $ {.$ $ t.0.$ $ [+$ $ $ $ $ $ w.E.<+3 d c d ` F+",
+"e d d 6.+.c.$ $ }./. +6+P.$ $ %+@+$ $ ++$ $ v.N.$ $ f.$ $ s.B.$ $ r.B.(.:+$ $ #+$ $ $ (.$ $ }.$ $ V.h.$ $ k.$ $ V.$+$ $ $+$ $ h.$+]+b.(+0+F.5 d d c ` F+",
+"d c d 6.<.(.$ $ }.N.h.P.#+$ $ T.y.$ $ (.$ $ [+B.$ $ f.$ $ .+(+$ $  +v.z.W.$ $ #+$ $ $ w.$ $ ~.$ $ z.I.$ $ y.$ $ 9+k.$ $ j.$ $ C.g.$ $ 7+&+5+3 d c d ` F+",
+"d d c 6.].s.$ $ $ $ $ $ N.C.$ $ $ $ g.I.%+$ $ $ $ N.c.$ $ $ $ $ F.k.f.[.B.$ $ .+Q.$ 2+t.$ $ $+k.$ $ $ $ t.6+(.$ $ $ $ $ T.h.$ $ $ $ '.<+O.F.3 d d d ` C+",
+"d d b 6.!.c.%+w.Q.y.b.k.t.}.W.M.C.h.k.y.C.$+[.b.:.8+.+$ $ z.K.C.N.$+r.y.F.(+z.Q./+Q.t.v.y.W.*+C.++++2+F.!.C.z.N.[.(.Q.M.F.++z.l..+_+w.y.X.[+3 d d b ` F+",
+"d d d 6.!.++%+y.a.h.5+l.V._._.++@+}._+I.9+S.C.b.B._.<+$ $ /+}.%+}.{.F.%+O.k.$+P.M.h.F.2.B._+O.B.Q.k.s.r.0.$+_.P.t.++}.!._.Q.s._+c.#+Q..+O.4+< d d d ` F+",
+"d d b 6.y.T.W.7.G.h.(.V.(+K.@+N.w.I.V.I.C.5+c.W.v.j.&.(.$+s._+h._.M. +y.*+K.0.#+z.0+(.c.w.].W.Z.F.C.$+f.{.<.k.I.V..+h.W._+/+]+s.C.I.I._.S.X.< d d b ` F+",
+"b d d 6.<.!.P.S.:+J.#+7.h.i.<+r.2+8.V.I.++_.h.<.].S.[+%+5+8.$+h.u.<.v.j.<._+I.(..+h._.2+a.<+{.v.&.c.c.>.f.y._+).s.0.0.~.[.z.$+L.T.V.~.g.W.4+< b d b ` C+",
+"d b b 6.+.k.N.4+B.F.(+t.#+V.A.:.O._._.0./+++$+O.W.~.b.[.I._.k./+).:. +!.O.!.K.5+v.F.%+<.].@+b.O.z.V.N.*.y.$+h.t.g.0.N.$+s.t.a.a.c.K.8.H.@+@+< d b b ` F+",
+"b b b e.<.k.h.j.).:+z.(+'.P.]+F.:.a.}.V.N.6+k.!.$+ +r.F.(.).++[.6+2+L.:.y.[.P.#+(+}.s..+v.M.$+[+s.++.+'.k.[._.8.(..+~.t.%+l.N.u.C.(.t.2.5+8+< g f b ` F+",
+"b b b 6.*.4+_.j.{.F.Q.K.$+B.O.B.@+O./+/+c._.++2.W.:+O.).P.h.N..+l.S.b.].2.{.).}.z.$+'.S.y.:.y.y.).).0.i.2+{.c.g._+h.c..+s.8.}.R.}.++0.H.@+W.< b b b ` F+",
+"b d h e.).:.O.S.S.4+:.`.y.@+D.|.B. +.+(.!./+h.*+<.*+O.:.!.(.~.2+++r.F.F.W.).T.Q._+W..+b.b.f.<+r.6+8.Q.y.S.!.h.0.(.++5+$+5+8.++}.k.Q.5.J.S.x.< b b b ` C+",
+"b h b #+*.S.!+~+{+{+{+{+{+{+{+{+{+~+v (+A.h.++v.j.S.b._+++++9+].&.f.v.y.<.K.h..+M.M.(+5+{.2.f. +6+++_+*+j.r.T.(+(+c.N.C.[.P.K.K.t.9.G.w.y.b+a b b h ` F+",
+"g b b e.>.A.w w w w w w w w w w w w {+%+L.%+T.F.O.B.[+c.s.I.9+K.Q.O.y.*+:.c.#+h._+y..+v.S.y.v.$+h.Q._+2._.:..+_+z.N.0.k.Q.s.c.!.P.V.G.G.B.4+< h b b ` F+",
+"b h h 6.!.y.'+w s t t t t t t t t m+t+l.G.%+/.i.$+c.O.r.K.8.@+B.Z.F.:+c.W.}.$+z.F.<.@+C.B.c.c.*+]. +f.@+t.:+].I./+N.*+{..+g.V.s.h.g.z.H.*+e.a b b h ` F+",
+"h b h 6.~.:+'+w w w w w w w w w w m+t+.+Q.S.j.B.:. +W.$ K._+t.:.$ $ $ $ S.0._+2+[+$ E.F.s.$ $ $ $ $ '.s.O.[+(+8+}.N.8+v.B.P.P..+l.P.F.]+O.g+< h b h ` C+",
+"b h b 6.>.&.'+w w w w w w w w w w m+t+s.0+<.:._+O._.$ O.$ N.C.].$ z.b+7+$ N.#+f.$ E.$ r.%+).j.$ <+).r.N./.v.O.T.P.s.!.M.0.l.P.t.(.g.%+M.M.c+a b h h ` F+",
+"h h h 4.*.H.'+w w w w w w w w w w {+t+R.t.2+Q.:+W.r.$ {.$ 6+z.r.$ E.b.v.$ l.z.C.$ <.$ *+:+y.v.$ h.s.O.O.'.(+h.++.+F.v.O.T.Q.u.0.#+0.v._.*+c+a h h h ` F+",
+"h h h 6.).0.'+w t w w w w w w w w {+t+_+/+N.++2.S.$ d._+z.$ _+[+$ Z.<.F.$ !.'.$ v.F.O.$ E.{.b.$ g.K.k.A.[.$+s.i.V.M.(+h.(.#+#+l.6+h.V.7.0+4+a h h h ` F+",
+"h h h 8.b.L.'+w w w w w w w w w w m+t+N./+s.T.y.:.$ $ $ $ $ t.7+$ d.b.*+$ }.s.$ $ $ $ $ 1.O.F.$ z.c.:.2+:.++%+Q.`.++g.]+H.5.]+}.s.(.#+K.X.@+a h h h Z F+",
+"h h h 6.r.L.'+'+w w w w w w w w w {+t+z.%+!.}.:+y.$ O.0.(.$ h.5+$ x.&.b.$ '.K.$ ).t.:.$ '.].v.$ P.T.O.'.C.9+L.%+]+}.b.K.l.G.%+g.]+H.5.~.7.e.0 h h h ` F+",
+"h h h 6._.t.'+w t w w w w w w w w m+t+g.C.s.N.v.$ 2.S.h.$+h.$ (+$ $ $ $ <.T.$ Q.N.T.O.r.$ ].M.$ l./+*+r.t.T.A.J.:.7.:.Q.t.z.(.b.K.l.G.5.S.E.0 h h h Z F+",
+"h i h 6.*.~.'+w '+w w w w w w w '+{+t+++K.++k.B.{.!.S._.7+7+Q.0.z.:.F.W.@+_.z.#+C.T.$+[+v.W.W.>.k.}._.:.{.O.'.t.#+t.T.A.J.:.7.:.Q.t.z.G.Z.5+c h j h ` F+",
+"h i h 8.@.%+'+m+t+t+B+B+D+B+B+D+t+B+t+(._+*+2.$+<+_.B.).s./+c.t.0.j.].<+q.W.V.g.z.6+[.~.8+_.y.2.~.0.9+].v.!.0.$+V.7+t.s.K.s.&.2.:+%+l.9.O.X.0 h h h Z F+",
+"h h h 6.>.K.t+H+H+H+H+H+H+H+H+H+H+H+H+l.*+(+y.++ +K.S.z.5+h.z.F.5+C.W.R.F.(+8.h.%+j.:+t.@+s.T.B.y.:+k.W._+b.(.8.%+[+F.E.5.l.J.w.6+k.w.H.4+0+c h k h ` F+",
+"i k h 6.b.(.F.B.(.M.O.Q.P.W.A.B.2.K./+Q.K.j.y.++ +K.Z.F.5+h.B.F.5+C.W.Q.F.:+8.h.%+j.:+t.@+s.T.B.s.(+r.W.<+b.(.8.#+_+B.E.5.t.J.t.g.).r.9.X.4+0 i h k ` F+",
+"h j h 6.<.<.0.F.k.F.$+5+}.S.*+&.b.y.6+I.z.<.{.$+*+C.B.(+).z._+].M.B.y.T.E._+P./+0.@+S.B. +++z.S.$+%+T.@+_+@+'.P.(+C.8+F.b.7+(.9.).K.J.F.4+<+e h i h ` F+",
+"k h k 4.!.@+}.j.%+~.h.z.t.h.7.d.y._+Q.t.t.:.B.:.].W.W.k.l._+_+c..+b.b. +b.%+$+K..+s.K.@+M.].F.:.k.++T.<+<.O.z.}.t.%+0.7+<+J.h.[.$+V.(.J.5+b+0 i h k ` F+",
+"h k h 6.&.Q.c.:+u..+z.++I.s.&+j.O._+g.}.0.$+(+v.B.:.f.K.s.h._.t.0.r.O.M.>.T.P.8.}.Q.%+v.r. +_.y._+s.~.:+f.<+K.(.h.$+z.N._+t.5+H.h.z.).7.x.4+c i j k ` F+",
+"i k i 6.'.%+T.W.z.R.K.V.V.8.9+b.M._+$+l.K.6+z.2.{.:+<.!.V.8.k.7+s.y.<.!.@+++0.$+K.T.}.y.O.2.2.$+$+P.$+2.S.r.(.).I.++$+K.T.s..+z.t.l.7.]+$+5+c i i i ` D+",
+"k i j e.r.c.%+v.w.:.8.`._+]+y.v._.h.z.V..+!.N.F.O.v.f.K.Q.Q.z.k.5+b.O.b.[+N.++).T.k.}.8+W.y.<.j.%+t.[.<+b.].j.%+K.W.C.c.s.`.s.t.[.(+Q.9.4+4+0 k i k ` D+",
+"i k i 6.>.B.F.1.W.j.9..+8+_+&+<.X.b.'.P.s.c.s.j. +y. +N.8.t.s./+(+<+B.B.O.0.z.}.!.[.h.W.<+f.!.O.[._+0.W.y.v.9+(._+O.<+(.s.5.B.]+6+&.K.t.O.5+0 k i k ` D+",
+"k i i e.:.k.!+{+{+{+{+{+{+{+{+{+{+{+v 4+k.r.$+:.f.!.v.k.P.8.z.%+%+ +y.W.S.%+t.V.Q.K.C.B.$+M.{.B.K._.T.j.y.f.Q._+s._+%+ +F.H.F.J.J.g.0+g.%+b+c k j k ` D+",
+"k k k 6.d._.w w w w w w w w w w w w {+_+%+t.).@+:.}.v.}.V.h.*+*+<.N.$+$+f.t._+~.8.f.S._.f.C.z.B.N.%+%+f.C.:.h.(.I.$+b.S.{.9.9+).y._.g.$+]+c+0 k i k ` D+",
+"k k k e.@.A.'+w s t t t t t t t t m+t+0+k.v.f._._.++@+}./+K.9+S.E.j.F._.<+I.(./+8.%+a.].F.%+N.r.%+N.C.2.C.b.z./+Q.K. +7.B.7.s.l.z.C.5+%+<+++e k k k ` D+",
+"k k k e.&.M.'+w w w w w w w w w w m+t+s.5+j.S.k.:+_.$ $ Q.(.K.$ $ $ $ }.B.$ $ $ $ b.E.O.$ 7+_+s.$ $ $ $ g.I./+%+V.6+<+b.J.t.9.%+(.R.t..+v.v.e k k k ` D+",
+"k k k f.'.7.'+w w w w w w w w w w m+t+I.Q.j.y.@+ +$ <+%+$ (+#+$ k.c.$ _.<+$ f.h.W.$ 2.f.$ 0.#+<+$ b.<..+(.K.g.N.z.O.j.d.{.c+_+_+5.7+ +++8+5+d k k k ` F+",
+"k k k e.@._.'+w w w w w w w w w w {+t+6+/+W.O.$+O.$ _.T.(.8.g.$ .+u.$ L. +$ y.].F.$ W._+$ k.K.r.$ w.T.P.l._.s.T.K.).%+d.G.H.g.K.$+7.[+N.y.2+e k k k Z D+",
+"k x k f.*._.'+w t w w w w w w w w {+t+z.(.r.*+0+B.O.$ $ s.Q.s.$ $ $ $ 2.2.$ y.++F.$ 2.!.$ c.N.$+$ $ $ }.g.K./+%+++/+W.u.!.V.I.K.$+7.4+z.r.z.d k k x ` F+",
+"k k x e.{.0.'+w w w w w w w w w w m+t+]+g. +B.(.W.v.j.t.$ #+#+$ b.b.{.M.:+$ M.S.F.$ d.@+$ T.z.9+$ E.y.6+(.P.g.N._+$+*+[.H.t.h.5.H.).y.5+}.X.d y k k Z D+",
+"x k x e.!.@+'+'+w w w w w w w w w {+t+9.t.f.q.@+j.$ 5+t.$ P.I.$ %+v.K.O.*+$ B.&.W.$ _+K.$ 5+++_+$ .+A.0.l._.s.T.).y.S.B.<+z.5+_.z.t.:.F.%+C.d k k z ` D+",
+"x k z e.@.k.'+w t w w w w w w w w m+t+_+w.F.f._+@+z.$ $ ++V.P.$ <+}.K. +).$ $ $ $ y.Q._.$ T.s._+$ C.<+8+g.I./+%+Q.K.(+y.C.Q.(+h.Q.Q.).y.C.S.d x x x ` D+",
+"z k z e.b.`.'+w '+w w w w w w w '+{+t+l.$+0.v.f._.f.(.s.t.c.9+_.Q.r.M.F..+$+$+Q.K.N./+<+S.b.:.k.5+c.:+y.<+++*.~.t.s.c.:._.K.t.#+A.`.2.S.*+5+g x k z ` F+",
+"x x z e.{.9.'+m+t+t+B+D+B+B+D+B+t+B+t+6+t.M.y.M.<+++j.z./+I.h.(._+<.!.Q.<.f.5+z.K.c.).@+@+}.++B.N.}.z.S.0.b.$+(+Q._+h..+A.++6+V.z.[.*+]+<+c+b x x x Z F+",
+"x z x e.@.J.t+H+H+H+H+H+H+H+H+H+H+H+H+T.h.0+0.:.y.:.F..+(+(.C.%+s.M.$+[+v. +U.~.s.0._.:.{.O.>.j..+h.N.v.B.{.k.8._+%+t.a.A.}.!.A.T.$+K.H.X.8+d z z x ` F+",
+"x x x m.K.Q.B.2.t.%+B.5./+h.(.i. +C.Q.C.j.y. +z.F.<.*+N.0.$+V.S.F.B.@+~.R.7+(.l.Q.b.f..+j.C.t.S.!./+K.<+C.<.s.g.5+0.@+W.h.K._+K.t.Q.9.7.]+[+i I z z ` F+",
+"z z z e.@.[.++S.5+r.y.G.t.,.b.6+f.k.Q.$+(+<.S.y.5+).B.k.(.I.P.<.<+*+@+v.v.<+#+I.K.v.$+!.:+T.C.f.f.N.2+M.++v.8+k.K.N.y.w.]+H.P.,.z.z.F./.8+<+i K x z ` F+",
+"z z z m.~.t.k.%+v.H.B.j.<.G.'.*+4+h./+I.C._.<.[.<+c.h.%+(.l._.z.q.J.2.y.`.$+#+I.%+ +*+v.W.N.C.K.C.(+S._.L.N.)..+t.K.k.S.]+s._+`..+B.Z.J.:+4+i K z z ` F+",
+"z z z m.,.].++).S.q.v.8+z.[+d.[+0+k.$+_.l.[.%+f.S.M.}.0+Q.T.7.).B.B.M.O.).h.(._+s.y.(+M.b.8+2.s.K.6+y.B.5+Q.T.P.P.(+[.1.*+g.9+g..+7.@+5+1.<+i I z z ` F+",
+"z z A m.*.(+d.W.%+Z.2.J.t./.H. +d.]+#+$+.+W.T.h.F.T.A.V.Q.0./+[+).~.H.S.M.h._+_+`.B.k.%+y.O.b.r._+}.Z.O.F.[+z.7+V.C.W.:.J..+s.I.V.t.J.]+O.&+i I z z Z F+",
+"z A z m.c.s.]+R.E.d.O.h.F.6+Z.L..+u.z.A.l.<+:.V.A.#+(.!._.V.N.2+k.%+S..+7.H.[..+I.k.F.5+:+L.:.y.[+.+0+).]+_.++Q.C.C.J.:.F.I.`._+(+z.E.y.H.b+i J z z ` F+",
+"z z B m.t.c+Q.$+%+ + +7+:+<+}.$+@+@+i.0+(+F.7+5+c+4+b+s.<+8+0+ +8+:+8+<+1+&+ +1+<+f.A.]+0+$+4+%+0+T.6+R.6+2.N.0+@+0+9+9+6+6+K.]+6+f.*+5.0+^+b J B z Z F+",
+"z A z m.m.m.d+d+a+|+g+d+d+3+a+d+d+a+a+a+d+a+d+a+a+d+d+a+a+a+d+a+d+a+a+d+d+a+a+a+d+a+d+a+a+d+d+a+a+a+d+a+d+d+a+a+a+d+a+d+a+|+d+3+g+a+3+d+g+o+0 J z z ` F+",
+"z z B m.d+q+z+B+q+B+s+y+s+y+s+y+s+u+z+z+z+B+s+y+s+y+z+u+z+z+z+B+s+s+y+y+z+u+z+z+z+B+s+z+z+z+z+u+z+z+z+z+z+s+z+s+z+z+B+s+z+B+s+y+z+u+z+z+z+y+g J z B ` F+",
+"z B z A z A z z z B z z z B z B z A z z z B z z B z z B z B z z B z z z A z z B z z B z B z z z z z B z z A z z B z B z z A z B z z z z z z z z z A ` F+",
+"z B z z A z B z z A z B z A z z B z A B z z B z z A z z z z z z z z B z z B z A z B z z z z B z z z z B z z B z A z z B z z z z B z z z A B z B z B ` F+",
+"A z B B z B z z B z B z z z z B z z z z z B z B z B z B z B z B z B z z B z z z B z A z B B z z z B z z z B z z A z B z B z B z z z B z B z A z B A ` F+",
+"B z B A z z B z z z z B z B z z B z B z B z z z z z z z B z z z B z B z A B z B z B z z z z B z B z B z z z B z z z A z z z z B z A z z B z z B z B ` F+",
+"B z B z z B z B z B B z B z z B z B A z z z B z B z B B z B z B z z A z B z B z z z B z B z B z A B z B z B A z B z B z B z B z z B z B z z B z B B ` F+",
+"B z B B z B z B z z z B z B B z B z B B z B B z B z z z B z B z B B z B z z z B B z B z B z B A z B z z B z B z B B z B z B z B z B z B z B z B z B ` F+",
+"B z B z B z B z B z B B z B z B B z B z B z B z B B z B z B z B B z B z B z B B z B z B z B A z B B z B B z B B z B z B z B z B z z B B z B B B z B ` F+",
+"B B A B B z B B B z B z B B B z B B z B B z B z B z B B B z B z B B z B z B z B z B B z B z B B z B z B z B z B B z B B B z B z B z B B z B z B B B ` F+",
+"B z B z B z B B z B z B B z B z B z B B z B B B z B B z B z B B z B z B A B B z B B z B z B B z B B z B B B z B z B B z B z B B B z B z B z B z B B ` F+",
+"B B B B z B z B B B B A B B z B B z B z B z B z B z B B B z B z B B B B z B B B z B B B B z B B z B z z B B A B B A B B B z B z B B B z B z B B B B ` F+",
+"B B B z B B B B B B z B B z B B z B B B B B A B B B B z B B B B A B B z B B B z B z B B z B B z B B B B B A B B B A B B z B B B B B z B B B B B B B ` F+",
+"B B B B z B z B z B B B A B B B B A B B B B A B A B z B B A B B B A B B A B B B B B z B B B B B A B A B A B B A B B B A B B A B B z B B z B z B B B ` C+",
+"B B B B B B B B B B B A B B B B A B B B A B B B B B B B B A B B A B B A B B A B B A B B A B B A B B B B B B B B B B A B B A B B A B B A B B B B B B ` F+",
+"B B B B B B B B B B B B B A B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B F B ` F+",
+"B B F B B B B F B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B F B B ` F+",
+"F B F B B B B B B B B B B B B B B F B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B F B B B B B B B B B B B B B B B B B B B B F B ` F+",
+"F B F B B B B B B B B B B F B B F B B B B B F B B B B B B B B B B B B B B B B B B F B B B B B B B B F B B B B B B F B B B B B F B B B F B B B F F F ` F+",
+"F B F B B F B B B B B B B B B B B B B B B B B F B B B B F B B B B B F B B B B B B B B B B B B B B B B F B B B B B F B B B F B F B B B F B B F F B B Z F+",
+"F F F B F B F F F F B F B F F B F F B B B B F B F B B B B F B B B F B F B B B F B F B B B B F B B F B F B F B B F B F F B B B F B B F F B F B F F F ` F+",
+"F F F F B F B F B F F B F B F B B B F B B F F B F B F B B F B F F B B F B F B F B B F F B F B F B B F B F B F B F B B F F F B F F B B B B F F F F F ` C+",
+"F F F B F F B F B B F F F F B F B F F B B F B B F F F F F F B B F B F F F B B B F F B F B B F B B F F F B B F F F F F F F B B F B F B F F B B F F F ` F+",
+"F F F F F B F B F F F B F F F F F B F F F F F F B F B F B F F F F F F B F F F F F B F F F F F F B F B F F B F B F B F B F F F F B F F B F F F F F F ` F+",
+"I F F F F F F F F F B F F F B F F F F F B F F B F F F F F F F F F F B I B F F F B F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F ` F+",
+"F I F F F F F F F F F F F F I F F F F F F F F F F F F F I F F F B F F F F F B F F F F F F F F F F F F F F F F B F F F F F F F F F F B F F F F F F F Z F+",
+"I F F F F F F F F F I F F F F F F F F F F F I F F F F F F F F F I F F F F F I F F F F F F F F F F F F F F F F F F F F I F F F F F F F F F F F I F I ` F+",
+"I F I F F I F F F F F F F F F F F F I F F I F I F F F F F F F F F F I F F F F F I F F I F F I I F F I F I F F F I F F F F F F F F I F F F F I I F I ` C+",
+"F I F F F I F F F F F F I F F F F I F F F F F F F F I F I F F F F I F F F F I F F F F F I F F F F F F F F F F I F F F F I F F I F F F I F I F I I F ` F+",
+"I I I F I F I F I F I B F F I I F F I F F I F F I F F F I F I F F I F I F F F F F I I F I I I F I I I F F F I F I F F F F I I F F I F I F I F F I I ` F+",
+"I F I I F I F I F F I I I I F I F F I F G F I I F I F I I F I F I F I F F I I F I F I F F F F F I F I I F I F I F F I F I I F F I F I I F F I I I I ` F+",
+"I I I I I F I F F I F I I F I F I F I F I I F I F I F F I F I F I I I I F I F I G F I I I F I F F I F F I F F F I F F I F I I F I F I I I I F I I I ` F+",
+"I I I I F I I F I I I I F I I F I F I I I F I I I I F I F I I I I F I F I F I I I F I F I I I I I I F I I I I I I I I I I F I I F I F I F I I I I I ` F+",
+"I I I F I I I I I F I I F I I I I I I F I F I I F I I I I F I F I I I I I I I F I I I I F I I I I F I F I F I F I F I F I F I I I I I I I I F K K I ` F+",
+"I I I I I I I I I I I I I I I I I F I I I I I I I I I I I I I I I F I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I K I I ` F+",
+"I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I K I I I I I I I I I I I I I I I I I I I I I I I I I I I I K I I ` F+",
+"K I I I I I I I I I K I I I I I I I I I K I I I I I I I I I I I I I I I K I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I K I I ` F+",
+"K I J I I I I I I I I I K I I I I I I I K I I I I I I I I I I I I I I I I I K I I I K I I I I I I I I I I K I I I I I I I I I I I I I I I I I K K I ` F+",
+"K J K I I I I I I J I K I I I I I K I I K I K I J I I I I I J I I I I J I I K I I K I I I I I J I I I I K I I J I I I I I I I I K I I I I I I K I J ` F+",
+"K I L K I J I I H I I J I K I K I K I I I I I I I I I I I I K J I I I K I I I J I I K I I K J J I K J I K I I J I K I K K K K I K I J I I I I K K J ` F+",
+"J J J I K I K I I I J J K K I J I K I K K K K I J K I J K K I I I I I J J K I K J J J I K I J I I K I J I K I I K I I K I I I K J I I K K J I K J J ` F+",
+"I J K K K I I K J I I I J K I I K J K I I I J K I I J J I I K J I K I K I K J I K I I K K I I I I K I K J I I J I K J I I I I I K K I I I I K K J N ` F+",
+"J K J K K H J J K K K M K L K J J J J K N L M K K J K J H J N K L M K L L H J J J J H K J J N K K J J J J J J J M L K N L L K L K L L K K L K L N K ` F+",
+"M M J K K N K N K N K L M M L L K L N N L K N K L L J K L K N L M K K M L E N K M K N K N K N K K N L L N H J K M L L N K L K K K K N K L M K L K N ` F+",
+"K L L N K N E L M L M K K N N L M L E L L K L N L N N L L K M K K N N M K L N L N K M M M M L M L M M L K M K J L K K N K L L N N L L L M K N K N L ` F+",
+"L L K N L L L K M L L L L L K N K K M L K N K N L K N L L L L L L L K N L L L K N L L K M L K M L L K M L L L K M L L L L L L L K N L L L K M L L K ` F+",
+"L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L ` F+",
+"N L N N L M L M L N N N L M L L M M L M L M L L M N N L N L N L L M L L L L L L L N N N L L L L L P M N L N P M M L L L N L N L N L L L L L L L L L ` F+",
+"L L O L M L L O O O K M L L M P N L N N N N P N N P O P L O L N L N M N P M N M L O N H O M O M N N L M N L M M P M N M M N M L L N O L M L L M L L ` F+",
+"N N N N P N N M L O O N N N O L P O P L P N N O P N N O O L M M N O M P N M P M M N N N N M M O P P P P O M M O P M P P P P M L N O M M P N N L M O ` D+",
+"P P N P L N N P O L N N P L P N P N O N N N N O N N N N P L N L P L M P M O L P L L M O E M O M M P N P M P O M M M O N N P P L P P N L M M P P P M ` D+",
+"N P P O O O O O N O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O Q Q O Q O O O O O O O O O O O O M ` D+",
+"O O x e.g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+|+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+g+%.} P O O ` D+",
+"P O y 6.4.6.e.e.U.4.m.e.6.U.e.e.e.m.^+4.m.p.5.^+e.e.p.m.^+4.m.e.6.#+e.p.e.m.U.4.m.e.6.U.e.e.6.m.e.6.#+p.e.e.m.U.^+m.m.m.m.m.6.m.U.e.m.e.^+^+} O P O ` D+",
+"P P y 6.O *.,.+.+.~.~...&.+.+.>.+.'.'.*.,.@.*.'.*.Y *...@.'.>.]...&.*.Y +.>...<.!.*.+...!.*.Y *.!.].:...*.+.>...+.*.Y @.!.@.*.@.@...~...&+ +{ P P O ` D+",
+"O O y 6.].0.s.v.&.].f.u.:.2.y.F.j.y.P.[.v.<.5.{.5.~.B./.).[.M.B.j.v.f.<.v.8.8.t.k.{.u./.!.i.++O.C.!.z.{.@.j.<.).f.}.O.i.M.s.).:.<. +W.:+W.&+~ O O O ` D+",
+"O O y 6.M.r.F.Z.'.S.q.M.i.a.A.@+%+@+_+F.H.8+`.5+j.]+7.9.9.J.9.B.r.z.:.t.:.$+).s.6+M.o.5+B.g.&.k.K.$+t.M.i.@+_+W.j.q.D.o.y.W.z.#+B.%+Z.<. +@+~ O O O ` D+",
+"O O y 6.&.:.T.q.v+s+u+z+x+n+u+u+u+u+y+s+y+u+p+y+x+u+y+u+p+z+x+u+x+y+y+s+s+n+w+y+x+x+x+x+y+x+x+s+x+x+x+x+s+v+s+w+y+x+w+x+x+x+x+s+s+v+]+6+B.5+~ O Q O ` D+",
+"O O y 6.).Q.f.o.f+( ^ ' = % % % % % % % % = ; ; - - ) ( [ ^ ^ ^ ( ( ( [ [ 7 8 9 f f f m l G T S u u u u G G G E S S S S S S S  .S -.y..+4+<+~ O Q O ` D+",
+"O O y 6.!.K.b.f.b+- * . % % % % % % % % % % * = ; - = * * ' ! ^ ^ ( ^ ( 7 ( 6 9 f l f l n l n n u u G u S G S S S T T T T T U U T n.)+5.H.c+~ O Q Q ` D+",
+"O Q y 6.'.N.O.2+|+^ * U x+v+v+v+v+D+v+v+v+v+v+F+E+E+e+; ) l+w+v+v+v+v+v+s+p+x+w+E+v+v+v+s+e+7 W.p+w+v+x+x+w+x+s+x+x+w+x+x+x+x+n.n n.~.z.&+$+~ Q O O ` D+",
+"O O y 6.*.V..+$+f+( = |+H+g+X.)+[+)+)+8+8+2+)+2+=+E+C+- ( H+p+&+1+1+8+W.q+H+}+3+1+1+1+)+w+E+^ e+H+c+8+b+b+b+b+b+b+b+1+b+b+|+b+E u n.W.t.%+x.~ Q O Q ` D+",
+"O O y 6.'.].2+i.f+! & =+w+; # @ @ @ + + + . & . + n.G+; ^ H+#.. ' ' ' * ;.E+f - ( 7 ( ) f+F+( e+H+6 6 ( 7 7 6 6 6 8 9 9 8 9 9 u n 3.:+z.S.4+~ R O R ` D+",
+"O R y 6.,.{.b.{.o+X l |+x+- ) f f 9 f f ' . = ; n i+G+' ^ H+$.; ^ ( 7 ) =+D+G ^ l l n 6 i+v+^ f+H+f G ;.$.;.;.$.;.$.;.;.;.;.3.;.#.)+@+:.]+3+~ Q R Q ` D+",
+"Q R y 6.b._+t.%+H+H+H+H+p+- o+H+H+H+H+H+p+U = & H+H+p+; ( H+;.; ( 7 7 ) 2+H+S ^ l l f 7 e+D+^ f+H+9 ;.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+]+0+Z.~ R R Q ` D+",
+"Q R y 6.:.w.T.T.l+T f |+v+) ' 9 9 8 8 j p+H+o+T ' ' ! ; 6 H+;.; ( ( 7 ( 6 I 7 8 l m m 7 e+v+^ f+H+l n T T U T T U U U U U U U U G n.@+W.W.2+~ R O R ` D+",
+"R R y 6.u.z.#+x.h+6 ) Q.v+7 * = * * * & & T w+G+l+6 = = 7 H+;.' 7 7 6 6 [ ( 9 f l m f 7 e+v+^ |+H+6 9 9 6 9 9 9 9 f f l l f m u l 3.Q.$+1.3+~ O R R ` D+",
+"R Q y 6.'.g.K.B.i+u 7 b+C+9 - ) ) ) ' ' - & = ;.p+H+l+6 ( H+;.' ( 7 7 8 9 9 9 9 l l l 7 i+D+( f+H+o.;.-.3.-.3.3.-.o.-.o.o.-.n. .l -.P.8. +8+~ R R R ` D+",
+"R R y 6.*.t.,.$+i+S 9 )+H+l ' ! ) ) ) ) ) ) ' & ' ^.G+#.( G+-.' ( 7 6 8 9 f 9 f l n m 7 l+H+^ 1+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+#.6 -./+$+M.:+~ R R R ` D+",
+"R R y e.).v.}.}.i+S S 9 G 7 ( ( ^ ) ! ! ^ ! ^ ^ - = 6 ^ ^ u 6 ( 7 7 6 8 9 9 9 l n l u l u S 7 n T S S T T T U T T T T U U U  .f n -.l.7+j.3+~ R R R ` D+",
+"R R y 6.*.k.2+B.}+S T n 9 6 7 ^ ) ) ) ! ) ! ) ) ) ) ; ) ! ' ) ( ( 7 [ 7 6 6 7 6 6 9 f l f 6 l 9 9 6 9 9 f f 9 9 9 l l l l l l S u 3.$+g.3+0+{ R R R ` F+",
+"R R y e.).:._+o.i+S S ;. .u X X S U T ^ 7 ! 9 S E u U S n 9 X ;.f 6 $. .l [ X #.T T $.X f X $. .#.$.u S u  .-.3.X #.;.$.U #.-.;.l 3.c.9.@+ +~ V R R Z F+",
+"R R y 6.@.t.++}.i+G  .x+i+h+n.b+|+x+i+U n.S 1+p+s+v+p+|+f+1+=+)+8 #.n+p+b+ .v+n.i+p+1+|+u 1+x+s+-.s+-.n.3.2+)+1+e+e+c+w+|+}+p+p+l 3.K..+]+O.{ R R R ` F+",
+"R R y e.u.[.T.*+e+u S ;.T X f f m  .G  .X  .f u T T S G ( u ( ( ) 9 l f  .#.X X U U $. .6 U $.#.#.$.;.$.-.#.n u U ;.;. .S ;.;.].9 ;._+l..+2+~ V R R Z F+",
+"R R y e.}.k.L.R.l+ . .U S S G G l f 9 9 8 9 6 6 6 6 9 f 9 9 l l n l f 9 m n l n m l G G G G u n S u G G S S S S G G S u G S S S u o.]+S.<+3+{ V R R ` F+",
+"R R y e.@.C.W.F.w+x+x+x+x+x+w+x+x+z+y+x+y+x+y+x+x+s+n+x+x+x+w+x+x+x+x+x+y+x+x+n+x+w+y+y+x+x+y+x+x+x+x+x+x+x+x+x+x+y+x+w+x+x+s+x+x+w+:+j.S.X.~ V R R Z D+",
+"R R y e.[.f.@+S.y.B.1.J.$+'.E.S.*+B.t.H.s.4+k.y.j.B.b.}.K.K.).v.++C.b.b.!.Q.g.Q.(+r.<+M.1.O.W.v.j._+!.v.@+v.R.Q._+T.y.x. +P.6+L.h.]+~.B.E.X.{ V R R ` F+",
+"R R y e.>.j.F.<+B.S.3+S.y.y.v.Z.%+C.$+#+5+G.~.E.E.Z.<._.Q.Q.M. +B.r. +_+u.k.w.T.$+@+q.B.S.2.M.S.1.<.<+O. +B.<.g.z.w.0+>.Z.%+0.7.8+d.y.7.O.$+~ V R R Z D+",
+"R R y e.{.x.e.O.~.3+5+D.5+X.E.|.e.e.3+p.x.)+e.x.^.E.D.X.e.E.&+3+:+S.&+&+3+D.&+X.O.X.X.3+W.|.X.X.|.&+D.X.x.&+3+D.3+&+&+O.&+X.&+X.p.b+p.&+8+]+~ R R R ` F+",
+"R R z d.m.m.d+d+a+|+g+d+d+3+a+d+d+a+a+a+d+a+d+a+a+d+d+a+a+a+d+a+d+a+a+d+d+a+a+a+d+a+d+a+a+d+d+a+a+a+d+a+d+d+a+a+a+d+a+d+a+g+d+3+g+a+3+d+g+o+~ R R R Z D+",
+"R R y e.d+q+y+B+q+B+y+y+y+x+x+y+y+y+y+y+x+B+y+y+x+x+y+y+y+x+x+B+y+y+x+x+y+y+y+x+x+B+x+x+x+x+x+y+x+x+x+x+x+x+y+x+x+x+B+x+x+B+x+x+x+y+x+x+y+y+~ R R R ` F+",
+"R R / { ~ , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ~ R R R Z D+",
+"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ` F+",
+"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R Z C+",
+"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R Z H+",
+"R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ..H+",
+"%.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.>.H+",
+"g+h+j+j+j+j+j+j+h+j+j+h+j+j+j+j+j+j+h+j+j+h+j+j+j+j+j+j+h+j+j+h+h+h+h+h+h+h+h+h+h+h+h+h+j+j+j+j+j+j+h+j+j+h+j+j+h+j+j+h+j+j+j+j+h+j+j+h+j+j+j+j+j+h+j+}+"};
diff --git a/hdspmixer/pixmaps/b_blank.xpm b/hdspmixer/pixmaps/b_blank.xpm
new file mode 100644 (file)
index 0000000..c0374d2
--- /dev/null
@@ -0,0 +1,29 @@
+/* XPM */
+char * b_blank_xpm[] = {
+"13 13 13 1",
+"      c None",
+".     c #1AA00D",
+"+     c #1A9510",
+"@     c #198F0F",
+"#     c #20FF0D",
+"$     c #21E50C",
+"%     c #1CBA0D",
+"&     c #69FF5F",
+"*     c #44FF36",
+"=     c #188210",
+"-     c #165A10",
+";     c #154C11",
+">     c #144010",
+".+@@@@@@@@@+#",
+"$$$$$$$$$$$$@",
+"%$&********=-",
+"%$$$$$$$$$$=-",
+"%$$$$$$$$$$=-",
+"%$$$$$$$$$$@-",
+"%$*$$$$$$$$@-",
+"%$$$$$$$$$$=-",
+"%%$$$$$$$$$@-",
+"%$*$$$$$$$$=-",
+"%$%$$$$$$$%@-",
+"%=--;;;;;;-;-",
+"->>>>>>>>>>>>"};
diff --git a/hdspmixer/pixmaps/b_card1.xpm b/hdspmixer/pixmaps/b_card1.xpm
new file mode 100644 (file)
index 0000000..c832a10
--- /dev/null
@@ -0,0 +1,30 @@
+/* XPM */
+char * b_card1_xpm[] = {
+"13 13 14 1",
+"      c None",
+".     c #8D8F0F",
+"+     c #88870F",
+"@     c #82800E",
+"#     c #EBE813",
+"$     c #D3D112",
+"%     c #AAA70F",
+"&     c #F5F35F",
+"*     c #F2EF36",
+"=     c #3C3533",
+"-     c #75730E",
+";     c #4D4D0B",
+">     c #40410B",
+",     c #35340A",
+".+@@@@@@@@@+#",
+"$$$$$$$$$$$$@",
+"%$&***=****-;",
+"%$$$$==$$$$-;",
+"%$$$=$=$$$$-;",
+"%$$$$$=$$$$@;",
+"%$*$$$=$$$$@;",
+"%$$$$$=$$$$-;",
+"%%$$$$=$$$$@;",
+"%$*$$$=$$$$-;",
+"%$%$$$$$$$%@;",
+"%-;;>>>>>>;>;",
+";,,,,,,,,,,,,"};
diff --git a/hdspmixer/pixmaps/b_card2.xpm b/hdspmixer/pixmaps/b_card2.xpm
new file mode 100644 (file)
index 0000000..5dd8da8
--- /dev/null
@@ -0,0 +1,30 @@
+/* XPM */
+char * b_card2_xpm[] = {
+"13 13 14 1",
+"      c None",
+".     c #8D8F0F",
+"+     c #88870F",
+"@     c #82800E",
+"#     c #EBE813",
+"$     c #D3D112",
+"%     c #AAA70F",
+"&     c #F5F35F",
+"*     c #F2EF36",
+"=     c #3C3533",
+"-     c #75730E",
+";     c #4D4D0B",
+">     c #40410B",
+",     c #35340A",
+".+@@@@@@@@@+#",
+"$$$$$$$$$$$$@",
+"%$&**===***-;",
+"%$$$=$$$=$$-;",
+"%$$$$$$$=$$-;",
+"%$$$$$$$=$$@;",
+"%$*$$$$=$$$@;",
+"%$$$$$=$$$$-;",
+"%%$$$=$$$$$@;",
+"%$*$=====$$-;",
+"%$%$$$$$$$%@;",
+"%-;;>>>>>>;>;",
+";,,,,,,,,,,,,"};
diff --git a/hdspmixer/pixmaps/b_card3.xpm b/hdspmixer/pixmaps/b_card3.xpm
new file mode 100644 (file)
index 0000000..10e9e30
--- /dev/null
@@ -0,0 +1,30 @@
+/* XPM */
+char * b_card3_xpm[] = {
+"13 13 14 1",
+"      c None",
+".     c #8D8F0F",
+"+     c #88870F",
+"@     c #82800E",
+"#     c #EBE813",
+"$     c #D3D112",
+"%     c #AAA70F",
+"&     c #F5F35F",
+"*     c #F2EF36",
+"=     c #3C3533",
+"-     c #75730E",
+";     c #4D4D0B",
+">     c #40410B",
+",     c #35340A",
+".+@@@@@@@@@+#",
+"$$$$$$$$$$$$@",
+"%$&**===***-;",
+"%$$$=$$$=$$-;",
+"%$$$$$$$=$$-;",
+"%$$$$$==$$$@;",
+"%$*$$$$$=$$@;",
+"%$$$$$$$=$$-;",
+"%%$$=$$$=$$@;",
+"%$*$$===$$$-;",
+"%$%$$$$$$$%@;",
+"%-;;>>>>>>;>;",
+";,,,,,,,,,,,,"};
diff --git a/hdspmixer/pixmaps/b_mute.xpm b/hdspmixer/pixmaps/b_mute.xpm
new file mode 100644 (file)
index 0000000..dcdc8cd
--- /dev/null
@@ -0,0 +1,77 @@
+/* XPM */
+char * b_mute_xpm[] = {
+"30 22 52 1",
+"      c None",
+".     c #DE8C00",
+"+     c #872100",
+"@     c #B35A00",
+"#     c #FFD553",
+"$     c #FFC128",
+"%     c #700909",
+"&     c #272727",
+"*     c #FFFFFF",
+"=     c #001B40",
+"-     c #775328",
+";     c #906230",
+">     c #855B2D",
+",     c #845A2C",
+"'     c #745027",
+")     c #3B2B1D",
+"!     c #553C1C",
+"~     c #755427",
+"{     c #ACA182",
+"]     c #B28051",
+"^     c #B38052",
+"/     c #B28052",
+"(     c #B38152",
+"_     c #A07751",
+":     c #35271C",
+"<     c #150D0A",
+"[     c #755428",
+"}     c #966B3A",
+"|     c #8A5D2F",
+"1     c #8B5E2F",
+"2     c #8A5D2E",
+"3     c #7D572B",
+"4     c #150D0B",
+"5     c #966A3A",
+"6     c #160D0B",
+"7     c #36271C",
+"8     c #8A5E2F",
+"9     c #745327",
+"0     c #7D582C",
+"a     c #563D1D",
+"b     c #634621",
+"c     c #714F25",
+"d     c #715025",
+"e     c #725026",
+"f     c #715026",
+"g     c #48341F",
+"h     c #553C1D",
+"i     c #32251B",
+"j     c #18100D",
+"k     c #180F0D",
+"l     c #19100D",
+"m     c #19100E",
+".............................+",
+"@.#$$$$$$$$$$$$$$$$$$$$$$$$$%&",
+"@..*.....*.*...*.*****.****.%&",
+"@..**...**.*...*...*...*....%&",
+"@..**...**.*...*...*...*....+&",
+"@.$*.*.*.*.*...*...*...****.+&",
+"@..*.*.*.*.*...*...*...*....%&",
+"@@.*..*..*.*...*...*...*....+&",
+"@.$*..*..*..***....*...****.%&",
+"@.@........................@+&",
+"@%&&=======================&=&",
+"-;>>>>>>>>>,>>>>>>>>>>>>>,>>')",
+"!~{]]^/]/]/]^](]^//]^^^]^(^_:<",
+"![}*|1212*2*111*2*****2****3:4",
+"!~5**221**2*122*2||*|2|*22|3:6",
+"![5**221**|*212*222*222*12|376",
+"![5*1*2*2*2*8|2*228*|22****3:<",
+"!95*8*|*2*1*2|2*122*222*21|0:<",
+"a[5*|2*12*1*|1|*|22*2|2*1210:<",
+"![5*82*12*22***2||2*|1|****0:<",
+"![bccccdcecccfcfcfcccccccccg:<",
+"hijkljjjjjmkjkkjjmjjjjjjjljk4<"};
diff --git a/hdspmixer/pixmaps/b_pre1.xpm b/hdspmixer/pixmaps/b_pre1.xpm
new file mode 100644 (file)
index 0000000..b81f85a
--- /dev/null
@@ -0,0 +1,30 @@
+/* XPM */
+char * b_pre1_xpm[] = {
+"13 13 14 1",
+"      c None",
+".     c #1AA00D",
+"+     c #1A9510",
+"@     c #198F0F",
+"#     c #20FF0D",
+"$     c #21E50C",
+"%     c #1CBA0D",
+"&     c #69FF5F",
+"*     c #44FF36",
+"=     c #3C3533",
+"-     c #188210",
+";     c #165A10",
+">     c #154C11",
+",     c #144010",
+".+@@@@@@@@@+#",
+"$$$$$$$$$$$$@",
+"%$&***=****-;",
+"%$$$$==$$$$-;",
+"%$$$=$=$$$$-;",
+"%$$$$$=$$$$@;",
+"%$*$$$=$$$$@;",
+"%$$$$$=$$$$-;",
+"%%$$$$=$$$$@;",
+"%$*$$$=$$$$-;",
+"%$%$$$$$$$%@;",
+"%-;;>>>>>>;>;",
+";,,,,,,,,,,,,"};
diff --git a/hdspmixer/pixmaps/b_pre2.xpm b/hdspmixer/pixmaps/b_pre2.xpm
new file mode 100644 (file)
index 0000000..731c030
--- /dev/null
@@ -0,0 +1,30 @@
+/* XPM */
+char * b_pre2_xpm[] = {
+"13 13 14 1",
+"      c None",
+".     c #1AA00D",
+"+     c #1A9510",
+"@     c #198F0F",
+"#     c #20FF0D",
+"$     c #21E50C",
+"%     c #1CBA0D",
+"&     c #69FF5F",
+"*     c #44FF36",
+"=     c #3C3533",
+"-     c #188210",
+";     c #165A10",
+">     c #154C11",
+",     c #144010",
+".+@@@@@@@@@+#",
+"$$$$$$$$$$$$@",
+"%$&**===***-;",
+"%$$$=$$$=$$-;",
+"%$$$$$$$=$$-;",
+"%$$$$$$$=$$@;",
+"%$*$$$$=$$$@;",
+"%$$$$$=$$$$-;",
+"%%$$$=$$$$$@;",
+"%$*$=====$$-;",
+"%$%$$$$$$$%@;",
+"%-;;>>>>>>;>;",
+";,,,,,,,,,,,,"};
diff --git a/hdspmixer/pixmaps/b_pre3.xpm b/hdspmixer/pixmaps/b_pre3.xpm
new file mode 100644 (file)
index 0000000..77162c2
--- /dev/null
@@ -0,0 +1,30 @@
+/* XPM */
+char * b_pre3_xpm[] = {
+"13 13 14 1",
+"      c None",
+".     c #1AA00D",
+"+     c #1A9510",
+"@     c #198F0F",
+"#     c #20FF0D",
+"$     c #21E50C",
+"%     c #1CBA0D",
+"&     c #69FF5F",
+"*     c #44FF36",
+"=     c #3C3533",
+"-     c #188210",
+";     c #165A10",
+">     c #154C11",
+",     c #144010",
+".+@@@@@@@@@+#",
+"$$$$$$$$$$$$@",
+"%$&**===***-;",
+"%$$$=$$$=$$-;",
+"%$$$$$$$=$$-;",
+"%$$$$$==$$$@;",
+"%$*$$$$$=$$@;",
+"%$$$$$$$=$$-;",
+"%%$$=$$$=$$@;",
+"%$*$$===$$$-;",
+"%$%$$$$$$$%@;",
+"%-;;>>>>>>;>;",
+";,,,,,,,,,,,,"};
diff --git a/hdspmixer/pixmaps/b_pre4.xpm b/hdspmixer/pixmaps/b_pre4.xpm
new file mode 100644 (file)
index 0000000..30ab560
--- /dev/null
@@ -0,0 +1,30 @@
+/* XPM */
+char * b_pre4_xpm[] = {
+"13 13 14 1",
+"      c None",
+".     c #1AA00D",
+"+     c #1A9510",
+"@     c #198F0F",
+"#     c #20FF0D",
+"$     c #21E50C",
+"%     c #1CBA0D",
+"&     c #69FF5F",
+"*     c #44FF36",
+"=     c #3C3533",
+"-     c #188210",
+";     c #165A10",
+">     c #154C11",
+",     c #144010",
+".+@@@@@@@@@+#",
+"$$$$$$$$$$$$@",
+"%$&****=***-;",
+"%$$$$$==$$$-;",
+"%$$$$=$=$$$-;",
+"%$$$$=$=$$$@;",
+"%$*$=$$=$$$@;",
+"%$$$=====$$-;",
+"%%$$$$$=$$$@;",
+"%$*$$$$=$$$-;",
+"%$%$$$$$$$%@;",
+"%-;;>>>>>>;>;",
+";,,,,,,,,,,,,"};
diff --git a/hdspmixer/pixmaps/b_pre5.xpm b/hdspmixer/pixmaps/b_pre5.xpm
new file mode 100644 (file)
index 0000000..f563537
--- /dev/null
@@ -0,0 +1,30 @@
+/* XPM */
+char * b_pre5_xpm[] = {
+"13 13 14 1",
+"      c None",
+".     c #1AA00D",
+"+     c #1A9510",
+"@     c #198F0F",
+"#     c #20FF0D",
+"$     c #21E50C",
+"%     c #1CBA0D",
+"&     c #69FF5F",
+"*     c #44FF36",
+"=     c #3C3533",
+"-     c #188210",
+";     c #165A10",
+">     c #154C11",
+",     c #144010",
+".+@@@@@@@@@+#",
+"$$$$$$$$$$$$@",
+"%$&**====**-;",
+"%$$$$=$$$$$-;",
+"%$$$=$$$$$$-;",
+"%$$$====$$$@;",
+"%$*$$$$$=$$@;",
+"%$$$$$$$=$$-;",
+"%%$$=$$$=$$@;",
+"%$*$$===$$$-;",
+"%$%$$$$$$$%@;",
+"%-;;>>>>>>;>;",
+";,,,,,,,,,,,,"};
diff --git a/hdspmixer/pixmaps/b_pre6.xpm b/hdspmixer/pixmaps/b_pre6.xpm
new file mode 100644 (file)
index 0000000..2d47537
--- /dev/null
@@ -0,0 +1,30 @@
+/* XPM */
+char * b_pre6_xpm[] = {
+"13 13 14 1",
+"      c None",
+".     c #1AA00D",
+"+     c #1A9510",
+"@     c #198F0F",
+"#     c #20FF0D",
+"$     c #21E50C",
+"%     c #1CBA0D",
+"&     c #69FF5F",
+"*     c #44FF36",
+"=     c #3C3533",
+"-     c #188210",
+";     c #165A10",
+">     c #154C11",
+",     c #144010",
+".+@@@@@@@@@+#",
+"$$$$$$$$$$$$@",
+"%$&**===***-;",
+"%$$$=$$$=$$-;",
+"%$$$=$$$$$$-;",
+"%$$$====$$$@;",
+"%$*$=$$$=$$@;",
+"%$$$=$$$=$$-;",
+"%%$$=$$$=$$@;",
+"%$*$$===$$$-;",
+"%$%$$$$$$$%@;",
+"%-;;>>>>>>;>;",
+";,,,,,,,,,,,,"};
diff --git a/hdspmixer/pixmaps/b_pre7.xpm b/hdspmixer/pixmaps/b_pre7.xpm
new file mode 100644 (file)
index 0000000..8de4470
--- /dev/null
@@ -0,0 +1,30 @@
+/* XPM */
+char * b_pre7_xpm[] = {
+"13 13 14 1",
+"      c None",
+".     c #1AA00D",
+"+     c #1A9510",
+"@     c #198F0F",
+"#     c #20FF0D",
+"$     c #21E50C",
+"%     c #1CBA0D",
+"&     c #69FF5F",
+"*     c #44FF36",
+"=     c #3C3533",
+"-     c #188210",
+";     c #165A10",
+">     c #154C11",
+",     c #144010",
+".+@@@@@@@@@+#",
+"$$$$$$$$$$$$@",
+"%$&*=====**-;",
+"%$$$$$$$=$$-;",
+"%$$$$$$=$$$-;",
+"%$$$$$$=$$$@;",
+"%$*$$$=$$$$@;",
+"%$$$$$=$$$$-;",
+"%%$$$=$$$$$@;",
+"%$*$$=$$$$$-;",
+"%$%$$$$$$$%@;",
+"%-;;>>>>>>;>;",
+";,,,,,,,,,,,,"};
diff --git a/hdspmixer/pixmaps/b_pre8.xpm b/hdspmixer/pixmaps/b_pre8.xpm
new file mode 100644 (file)
index 0000000..895263f
--- /dev/null
@@ -0,0 +1,30 @@
+/* XPM */
+char * b_pre8_xpm[] = {
+"13 13 14 1",
+"      c None",
+".     c #1AA00D",
+"+     c #1A9510",
+"@     c #198F0F",
+"#     c #20FF0D",
+"$     c #21E50C",
+"%     c #1CBA0D",
+"&     c #69FF5F",
+"*     c #44FF36",
+"=     c #3C3533",
+"-     c #188210",
+";     c #165A10",
+">     c #154C11",
+",     c #144010",
+".+@@@@@@@@@+#",
+"$$$$$$$$$$$$@",
+"%$&**===***-;",
+"%$$$=$$$=$$-;",
+"%$$$=$$$=$$-;",
+"%$$$$===$$$@;",
+"%$*$=$$$=$$@;",
+"%$$$=$$$=$$-;",
+"%%$$=$$$=$$@;",
+"%$*$$===$$$-;",
+"%$%$$$$$$$%@;",
+"%-;;>>>>>>;>;",
+";,,,,,,,,,,,,"};
diff --git a/hdspmixer/pixmaps/b_save.xpm b/hdspmixer/pixmaps/b_save.xpm
new file mode 100644 (file)
index 0000000..a984e28
--- /dev/null
@@ -0,0 +1,30 @@
+/* XPM */
+char * b_save_xpm[] = {
+"13 13 14 1",
+"      c None",
+".     c #5C7B1B",
+"+     c #505F2F",
+"@     c #434343",
+"#     c #7F817A",
+"$     c #DE000B",
+"%     c #87003B",
+"&     c #B30020",
+"*     c #FF6053",
+"=     c #FF2E28",
+"-     c #70094F",
+";     c #272727",
+">     c #004039",
+",     c #191919",
+".+@@@@@@@@@+#",
+"$$$$$$$$$$$$%",
+"&$*========-;",
+"&$$$$$$$$$$-;",
+"&$$$$$$$$$$-;",
+"&$$$$$$$$$$%;",
+"&$=$$$$$$$$%;",
+"&$$$$$$$$$$-;",
+"&&$$$$$$$$$%;",
+"&$=$$$$$$$$-;",
+"&$&$$$$$$$&%;",
+"&-;;>>>>>>;>;",
+";,,,,,,,,,,,,"};
diff --git a/hdspmixer/pixmaps/b_solo.xpm b/hdspmixer/pixmaps/b_solo.xpm
new file mode 100644 (file)
index 0000000..f678b19
--- /dev/null
@@ -0,0 +1,78 @@
+/* XPM */
+char * b_solo_xpm[] = {
+"30 22 53 1",
+"      c None",
+".     c #7C2000",
+"+     c #690806",
+"@     c #272118",
+"#     c #F4BE91",
+"$     c #F44E10",
+"%     c #23241A",
+"&     c #151610",
+"*     c #A85600",
+"=     c #FF0000",
+"-     c #F4FDB7",
+";     c #532800",
+">     c #050406",
+",     c #322020",
+"'     c #452524",
+")     c #3B2323",
+"!     c #3C2323",
+"~     c #3C2423",
+"{     c #3B2322",
+"]     c #322021",
+"^     c #191315",
+"/     c #231A1C",
+"(     c #3F2524",
+"_     c #EAB1B5",
+":     c #643534",
+"<     c #161113",
+"[     c #030205",
+"}     c #231A1B",
+"|     c #633534",
+"1     c #3A2222",
+"2     c #FDF9F9",
+"3     c #3A2322",
+"4     c #FCF9F8",
+"5     c #FCF8F8",
+"6     c #402423",
+"7     c #040205",
+"8     c #402524",
+"9     c #FDF9F8",
+"0     c #161012",
+"a     c #040305",
+"b     c #633433",
+"c     c #402422",
+"d     c #633533",
+"e     c #332020",
+"f     c #321F20",
+"g     c #332021",
+"h     c #21191A",
+"i     c #161013",
+"j     c #362323",
+"k     c #140F11",
+"l     c #040306",
+"m     c #050306",
+"n     c #050407",
+"............................+@",
+".#$$$$$$$$$$$$$$$$$$$$$$$$$$%&",
+".*==---===---===-=====---===@&",
+".*=-=====-===-==-====-===-==@&",
+".*=-====-=====-=-===-=====-=@&",
+".*==--==-=====-=-===-=====-=@&",
+".*====-=-=====-=-===-=====-=@&",
+".*====-==-===-==-====-===-==@&",
+".*=---====---===---===---===@&",
+"..+++++++++++++++++++++++++;@&",
+"@&&&&&&&&&&&&&&&&&&&&&&&&&>&&&",
+",'))))))!~!){)~!!)))~))))!)~]^",
+"/(_:::::::::::::::::::::::::<[",
+"}(|1222)31244)1151)))1222316<7",
+"}8:2)3))12))35135)1))9)3)2)60[",
+"/8:51))123)1{)2)21))2)3311960a",
+"/(b1223121)3)32323))2313))2c<[",
+"}(d3)12)213)){212)){2)131)2607",
+"/8:)3)233231121123)312))12)60a",
+"/(:222e,fg224,ge422,eg222,ghia",
+"/8jjjjjjjjjjjjjjjjjjjjjjjjjj07",
+"}klmn>l>ll>nm>>nmll>mm>m>n>l[7"};
diff --git a/hdspmixer/pixmaps/b_zlm.xpm b/hdspmixer/pixmaps/b_zlm.xpm
new file mode 100644 (file)
index 0000000..c44e75b
--- /dev/null
@@ -0,0 +1,27 @@
+/* XPM */
+char * b_zlm_xpm[] = {
+"13 13 11 1",
+"      c None",
+".     c #000D00",
+"+     c #000500",
+"@     c #000000",
+"#     c #333333",
+"$     c #CC66CC",
+"%     c #660066",
+"&     c #99FFFF",
+"*     c #FF00FF",
+"=     c #FF99FF",
+"-     c #990099",
+".+@@@@@@@@@+#",
+"$$$$$$$$$$$$%",
+"$$&********$%",
+"$**========$%",
+"$**========$%",
+"$**========$%",
+"$*&========$%",
+"$**========$%",
+"$-*========$%",
+"$*&========$%",
+"$**=======*$%",
+"$$$$$$$$$$$%%",
+"%%%%%%%%%%%%%"};
diff --git a/hdspmixer/pixmaps/buttons.xpm b/hdspmixer/pixmaps/buttons.xpm
new file mode 100644 (file)
index 0000000..7cbe5f1
--- /dev/null
@@ -0,0 +1,513 @@
+/* XPM */
+char * buttons_xpm[] = {
+"76 253 257 2",
+"      c None",
+".     c #C08480",
+"+     c #FFFFFF",
+"@     c #FDF9F9",
+"#     c #84C080",
+"$     c #9F9FA0",
+"%     c #B5B6B5",
+"&     c #AAAAAA",
+"*     c #A7A8A7",
+"=     c #A0A8A0",
+"-     c #A5A6A5",
+";     c #A0A1A0",
+">     c #9FA0A0",
+",     c #A0A09F",
+"'     c #9FA09F",
+")     c #A09F9F",
+"!     c #909290",
+"~     c #979898",
+"{     c #9C9B9C",
+"]     c #9D9D9D",
+"^     c #999A99",
+"/     c #939993",
+"(     c #969996",
+"_     c #919491",
+":     c #959695",
+"<     c #929592",
+"[     c #8B918C",
+"}     c #8E918E",
+"|     c #888D87",
+"1     c #8B8D8B",
+"2     c #898D89",
+"3     c #8A8E8A",
+"4     c #868B86",
+"5     c #858A85",
+"6     c #858A85",
+"7     c #818881",
+"8     c #828282",
+"9     c #818681",
+"0     c #7F8580",
+"a     c #80867F",
+"b     c #C3C111",
+"c     c #999710",
+"d     c #8D8E0F",
+"e     c #7FD477",
+"f     c #60CA56",
+"g     c #64B060",
+"h     c #7F887F",
+"i     c #7E847E",
+"j     c #7D827D",
+"k     c #7F807F",
+"l     c #7A817A",
+"m     c #708070",
+"n     c #4DAF42",
+"o     c #4E954A",
+"p     c #43983B",
+"q     c #C05350",
+"r     c #906230",
+"s     c #855B2D",
+"t     c #8B5E2F",
+"u     c #8A5D2E",
+"v     c #9F2026",
+"w     c #626360",
+"x     c #6E726E",
+"y     c #757A75",
+"z     c #787F78",
+"A     c #747B74",
+"B     c #757D75",
+"C     c #727A72",
+"D     c #717971",
+"E     c #707870",
+"F     c #70706F",
+"G     c #707060",
+"H     c #61686D",
+"I     c #696C69",
+"J     c #6C6F6C",
+"K     c #6F6F6F",
+"L     c #646C65",
+"M     c #656A65",
+"N     c #626562",
+"O     c #626561",
+"P     c #5F685F",
+"Q     c #5B605B",
+"R     c #5E615E",
+"S     c #506050",
+"T     c #585C57",
+"U     c #5C5F5C",
+"V     c #5A5D5A",
+"W     c #5B5E5A",
+"X     c #595C59",
+"Y     c #585B58",
+"Z     c #545954",
+"`     c #565956",
+" .    c #565A56",
+"..    c #555855",
+"+.    c #545753",
+"@.    c #545754",
+"#.    c #515651",
+"$.    c #535653",
+"%.    c #525552",
+"&.    c #515451",
+"*.    c #515551",
+"=.    c #505450",
+"-.    c #505150",
+";.    c #515351",
+">.    c #505350",
+",.    c #50534F",
+"'.    c #50584F",
+").    c #4F584F",
+"!.    c #4C504B",
+"~.    c #4F544F",
+"{.    c #4E524D",
+"].    c #4E534E",
+"^.    c #4F534F",
+"/.    c #4F524F",
+"(.    c #4E524E",
+"_.    c #4E504E",
+":.    c #4F504F",
+"<.    c #4E514E",
+"[.    c #4D524D",
+"}.    c #4C514C",
+"|.    c #4D514D",
+"1.    c #4D504D",
+"2.    c #4C504C",
+"3.    c #4B504B",
+"4.    c #405040",
+"5.    c #4C4F4B",
+"6.    c #4D4E4D",
+"7.    c #4C4E4C",
+"8.    c #4C4F4C",
+"9.    c #4A4E49",
+"0.    c #4A4F4A",
+"a.    c #4B4F4B",
+"b.    c #4B4E4B",
+"c.    c #4A4E4A",
+"d.    c #4B4C4B",
+"e.    c #4A4D4A",
+"f.    c #494E49",
+"g.    c #484D48",
+"h.    c #494D49",
+"i.    c #494C49",
+"j.    c #484C48",
+"k.    c #494A49",
+"l.    c #484A48",
+"m.    c #484B48",
+"n.    c #484C47",
+"o.    c #444843",
+"p.    c #474C47",
+"q.    c #464A45",
+"r.    c #464B46",
+"s.    c #474B47",
+"t.    c #474A47",
+"u.    c #464A46",
+"v.    c #464846",
+"w.    c #464946",
+"x.    c #454A45",
+"y.    c #444944",
+"z.    c #454945",
+"A.    c #454845",
+"B.    c #444844",
+"C.    c #434843",
+"D.    c #404840",
+"E.    c #444743",
+"F.    c #454645",
+"G.    c #454745",
+"H.    c #444744",
+"I.    c #424641",
+"J.    c #424742",
+"K.    c #434743",
+"L.    c #434643",
+"M.    c #424642",
+"N.    c #424542",
+"O.    c #414641",
+"P.    c #404440",
+"Q.    c #414541",
+"R.    c #414441",
+"S.    c #404140",
+"T.    c #404340",
+"U.    c #437F3F",
+"V.    c #634621",
+"W.    c #775428",
+"X.    c #714F25",
+"Y.    c #40433F",
+"Z.    c #40483F",
+"`.    c #7F7D0E",
+" +    c #706E0D",
+".+    c #65660D",
+"++    c #377631",
+"@+    c #3B403B",
+"#+    c #3F443F",
+"$+    c #3D423D",
+"%+    c #3F423F",
+"&+    c #3E413E",
+"*+    c #3D413D",
+"=+    c #325F2F",
+"-+    c #2E5F2A",
+";+    c #2B5A27",
+">+    c #2B5127",
+",+    c #295327",
+"'+    c #244422",
+")+    c #274A25",
+"!+    c #274923",
+"~+    c #6F202E",
+"{+    c #402423",
+"]+    c #48341F",
+"^+    c #553C1C",
+"/+    c #2B3032",
+"(+    c #333838",
+"_+    c #3C3F3B",
+":+    c #3E3F3E",
+"<+    c #3C3F3C",
+"[+    c #393E39",
+"}+    c #3B3F3B",
+"|+    c #3A3D3A",
+"1+    c #393D39",
+"2+    c #383B38",
+"3+    c #373C37",
+"4+    c #363A36",
+"5+    c #303F30",
+"6+    c #323535",
+"7+    c #333533",
+"8+    c #303730",
+"9+    c #2B2F31",
+"0+    c #2F322F",
+"a+    c #223F20",
+"b+    c #3D2423",
+"c+    c #3B2323",
+"d+    c #352222",
+"e+    c #2B2C2B",
+"f+    c #2F2F2F",
+"g+    c #202F2F",
+"h+    c #202720",
+"i+    c #361F2B",
+"j+    c #35271C",
+"k+    c #3D3D0A",
+"l+    c #35340A",
+"m+    c #1B341A",
+"n+    c #1A2718",
+"o+    c #231A1C",
+"p+    c #1E1D11",
+"q+    c #161A16",
+"r+    c #161113",
+"s+    c #111111",
+"t+    c #0F1710",
+"u+    c #100F10",
+"v+    c #18100D",
+"w+    c #0B140A",
+"x+    c #180F0D",
+"y+    c #110E0E",
+"z+    c #000F0D",
+"A+    c #090909",
+"B+    c #0F0F0F",
+"C+    c #00070F",
+"D+    c #050905",
+"E+    c #040306",
+"F+    c #050406",
+"G+    c #060606",
+"H+    c #000000",
+"Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.} 2+",
+"G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G 8 e+",
+"& = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = y q+",
+"; ; 7 :.f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+P { ; ; ; F A+",
+"; ; 7 ).'.'.:.:.D.'.4.:.).D.:.:.:.4.D.'.4.:.).D.:.:.:.4.D.'.4.:.).D.:.:.:.4.D.'.4.:.).D.:.:.'.4.:.).D.:.:.:.4.D.D.4.4.4.4.4.).4.D.:.4.:.D.D.] ; ; ; K G+",
+"; ; 7 ).y R W N N Y Y M W N M V M X X R Q O R X R I R M O X V Z M U w I N V M %. .R N M Y R I R ` Z $.M w N W M N R I w ` O R N O M Y M R.G.- ; ; ; K G+",
+"; ; 7 ).@.].c.b.U ..(.a.%.>.e.i.1.c.x.*.a.%.>.` &.X i.@. .*.s.i.1.b.<.%.b.=.=.a.2.` 8...` {.L.w.j. .h...w <.%.Z (.=.t.(.t.0. .%.*.K.B.S.H.S.& ; ; ; K G+",
+"; ; 7 ).s.2.m.A.X A.8.s.[.^.h.M.R.M.#++ + + N.}+<.+ + + ].r.(.e.1.h.$.a.$.Q.+.0.}+t.8.|++ (.U 1.s.P.a.m.(.L.*+C.[.2.i.8.c.y.f.J.f.Q.A.*.L.N.& ; ; ; K G+",
+"; ; 7 ).R %.B.8.=.>.K.^.C.^.A.s.>.h.}.+ + + <.w.i.+ + + [.3.*+/.%+w.%.T $.V @+O.h.w.t.+ + u.u.T.u.M.|.<.|.*+a.[+].K.m.H.@.!.~.+.C.}+P.<+e.|+& ; ; ) K G+",
+", > 7 ).Z z.<.<.2.*+e.|+~.B.j.B...|.].+ + + + }++ + + + ].g.+ + + j.$.z./.+ + + + $.+ + + + X 1.h.+ + + + &.T + + + + H.B. .].g.x.2.e.K.<+&+& ; ' ; K G+",
+", , h ).T s.^./.Y.T.z.Y.].K.b.%.` h.J.+ + + + L.+ + + + #++ M.m.+ + e.B.+ + 3.P.+ + R.+ + j.P.&.+ + =.t.+ + z.+ + *.A.1.b.}+#+a.@+u.*+=.H.7+& ; $ ; K G+",
+") > 7 ).X u.t.<+s.<.%+T 0.|.(.c.R.s.}++ + b.+ (.+ =.+ + =.x.+ + + + w.B.+ + + + 2.i.*++ + ..(.1++ + + + + + a.+ + M.L.H.u.C.g.0.}+s.Y h.R.Q.& $ > ) K G+",
+") $ 7 ).R K.K.R.B.i.s.s.r.|+m.c.w.h.x.+ + T.+ + + *++ + x.+ + *++ + L.K.%+K.+ + + + }++ + u.(./.+ + (.1+^.t.M.+ + K.t.1.A.o. .Q.g.Q.z.a.R.7.& ) ' $ K G+",
+"' $ 7 ).X +.*+<.%.1.N.s.x.h.(.2.L.c.g.+ + A.+ + + u.+ + J.+ + 2++ + w.=.+ + }.r.+ + ` + + P.j.&.+ + }+>.+ + (.+ + u.e.w.|.3.x.x.#.M.%+h.v.*+& $ $ > K G+",
+"' $ 7 ).U ..^.....%.c.M.T K.i.*.i.h.+.+ + 8.}++ <.^.+ + ].J.+ + + + >.B.>.+ + + + 1.&.}++ + u.i.=.+ + + + %+=.+ + =. .$.X @+J.0.r.u.M.+.T.:+& $ ) $ K G+",
+"$ ' h ).>.*+a.M.i.%+m.A.b.(.%+E.*.s.#.C.Q.u.@.}+L.i.B.P.J.y.s.<+/.M.<.b.2.P.p.#+%.Q.R.c.8.m.&.s.M.3+h.t.A.X z.}.r.2.^.e.Q.#+P.#+j.u.1+P.4+z.& $ $ $ K G+",
+"$ $ h ).+.c.B.z.=.4+<.z.*+Q.8.m.<+h.^.+.*+^. .A.>.1.|+c.h.^.+.P.M.>.R.m.z.=.h.B.[.(.P.T.A.%+<.K.a.%.` m.L.Q.j.u.c.O.s.b.8.}.#+y.J.s.L.H.H.<+& ' $ $ K G+",
+"$ ' 7 ).2.h.M.b.1+(.r.r.c.a.R.u.w.Q g.g.s.+.&+m.&.P.R.1+y.[+^.M.P.&+8.P.w.Q.r.$+u.j.&+m. .*.u.%+h.z.h.&+2.N.^.C.T 2.}+h.}+#+Y.K.B.].x.Q.>.S.& $ $ $ K G+",
+"' $ h ).X (.(+/+/+9+9+/+/+/+9+9+9+/+/+/+9+/+/+/+/+/+/+/+/+/+/+9+9+/+6+V A.%.(+6+6+6+6+6+6+6+6+6+6+6+(+(+6+6+(+6+(+6+6+6+6+(+6+6+(+(+(+H L.|+& $ $ $ K G+",
+"$ $ h ).R a.W.r s s s s s s s s s s s s s s s s s s s s s s s s s s X.j+w.s.d+{+c+c+c+c+c+c+c+b+c+c+c+c+b+c+c+c+c+c+b+c+c+c+c+c+c+b+d+r+t.S.& $ $ ' K G+",
+"$ ' h :...a.^+W.+ u t u t u + u + t t t + u + + + + + u + + + + u W.j+x+A.Q.o+{+c+@ @ @ c+c+c+@ @ @ c+c+c+@ c+c+c+c+c+@ @ @ c+c+c+{+r+E+1.:+& $ ' ' K G+",
+"] $ h ).R 2.^+W.+ + u u t + + u + t u u + u u u + u u u + u u u u W.j+x+R.M.o+{+@ c+c+c+c+c+@ c+c+c+@ c+c+@ c+c+c+c+@ c+c+c+@ c+c+{+r+E+&+4+& ' $ ] K G+",
+"] ] h :...%.^+W.+ + u u t + + u + u t u + u u u + u u u + t u u t W.j+x+m.+.o+{+@ c+c+c+c+@ c+c+c+c+c+@ c+@ c+c+c+@ c+c+c+c+c+@ c+{+r+E+N.F.& ] $ ' K G+",
+"] ] h ).O a.^+W.+ t + u + u + u + t u u + u u t + u u u + + + + t W.j+x+<.Q o+{+c+@ @ c+c+@ c+c+c+c+c+@ c+@ c+c+c+@ c+c+c+c+c+@ c+{+r+E+T.v.& ] ] ] K G+",
+"] ] h :.2.*.^+W.+ t + u + u + t + u u u + t u u + u u u + u t u t W.j+x+<.&+o+{+c+c+c+@ c+@ c+c+c+c+c+@ c+@ c+c+c+@ c+c+c+c+c+@ c+{+r+E+H.:+& ] ' ] K G+",
+"] ] h :.*.|.^+W.+ u u + t u + t + u t u + u u u + u u u + t u t u W.j+x+b.=.o+{+c+c+c+@ c+c+@ c+c+c+@ c+c+@ c+c+c+c+@ c+c+c+@ c+c+{+r+E+%+:+& ] ] ] K G+",
+"] ] h :.O h.^+W.+ t u + t u + u u + + + u u u u + u t u + + + + t W.j+x+..j.o+{+@ @ @ d+d+d+d+@ @ @ d+d+d+@ @ @ d+d+d+@ @ @ d+d+c+{+r+E+v.H.& ] ] ] K G+",
+"] ] h :.%.(.^+W.V.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.]+j+x+` z.o+{+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+d+r+E+t.v.& ] ] ] K G+",
+"] ] h :.W |.^+j+v+x+v+v+v+v+v+v+v+x+v+x+x+v+v+v+v+v+v+v+v+v+v+v+v+x+x+x+a.2.o+r+E+E+F+F+E+F+E+E+F+F+E+F+F+F+E+E+E+F+E+E+F+E+F+F+F+E+E+E+t.Q.& ] ] ] K G+",
+"] ] h :...d.v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+v+S.d.E+F+E+E+F+E+F+F+F+E+F+F+E+F+F+F+E+E+E+F+E+E+F+E+F+F+F+E+E+E+2+%+& ] ] ] K G+",
+"] ] h :.M.|.&+&.>.H.*+w.z./.5.|.z.0.}.P.^.b.*+b.A...a.].].B.h.@.s.H./.h.^.O.~.c.<+N.s.i.i.V s.Z %.c...i.j.=.g.}.s.Y.b.j.p.3.O.h.M.>.A.R.|+f+& ] ] ] K G+",
+"] ] h :.4.4.8+8+5+f+f+8+8+:+5+8+8+5+5+5+8+5+8+5+5+8+8+5+5+5+8+5+8+5+5+8+8+5+5+5+8+5+8+5+5+8+8+5+5+5+8+5+8+8+5+5+5+8+5+8+5+f+8+:+f+5+:+8+f+p+& ] ] ] K G+",
+"] ] h :.8+t+B+C+t+C+B+B+B+B+B+B+B+u+B+B+B+C+B+B+B+B+B+u+B+B+B+C+B+B+B+B+B+u+B+B+B+C+B+B+B+B+B+u+B+B+B+B+B+B+u+B+B+B+C+B+B+C+B+B+B+u+B+B+B+B+% ] ] ] K G+",
+"] ] ; * & % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % & ] ] ] K G+",
+"] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] { ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] { ] ] { ] ] ] K G+",
+"] ] { ] ] ] ] ] { ] ] { ] ] ] { ] ] ] ] ] ] { ] { ] ] ] ] ] ] ] ] ] ] ] { ] ] ] ] ] { ] { ] ] ] ] ] ] ] ] { ] { ] ] ] ] ] ] { { ] ] ] ] { ] ] { ] ] K G+",
+"{ ] h :.f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+P ~ ] ] ] K G+",
+"] ] h :.'.'.:.:.D.'.4.:.).D.:.:.:.4.D.'.4.:.).D.:.:.:.4.D.'.4.:.).D.:.:.:.4.D.'.4.:.).D.:.:.'.4.:.).D.:.:.:.4.D.D.4.4.4.4.4.).4.D.:.4.:.D.D.^ { { { K G+",
+"] { h :.x M x O ;.X O Q @.M U N R X R w R R ;.M U N R M ` U M M w N K M R w R Y I I M w M w W M U O R R x R M M w O w $.I M w N N V J %._.L.; ] { { K G+",
+"{ { h :.8.T 2.%.|...@.2.[.e.` +./.(.g...B.>.<.A.b.9.m.u.].^.a.X &.%.1.,.&...[.u.|.@.>.8.e.`  .&.h.s.2...&.t.Q.=.s.|.H.(.e.~.Z u.h. .2.@.R.2+- { { { K G+",
+"{ { h :.R h.<+H.P.%.H.&+#+Y.|.a.e.|.g.x.M.$.+ + R.u.b.+ + [++ + /.P.T.&+%+ .C.[+c.R.A.&+/.z.c.H.&+*.u.A.u.%.j.p.].c.N.<.c.0.].#.#.}+L.Q.m.7+* { { { K G+",
+"{ { h :.T j.h.N.z.&+*+^.Z Q./.K.&+u.#.x.2.t.+ + H.(.$.+ + Z =.e.L.Y H.h.&.h.p.+.+.<.1.}+@.(.^.T.^.^.K.8.*.>.B.].J.(.H.t./.n.[.*.}+*.|.z.L.L.* { { { K G+",
+"{ { h :.R Z >./.../.Y <+x.|.%.+.%+h.f.#.M.b./.+ + a.+ + #.p.+ + b.B.i.+ + + + C.u.+ + a.e.+ M.&.+ + 1+L.2.A.c.r.p.B.T.1.c.p.#+g.x.*+w.c.G.*+* { { { K G+",
+"{ { h :.O (.*.%+M.1.^.c.[.|+8...w.=.g.r.B.$.N.+ + M.+ + y.#.+ + m...+ + ..a.+ + Y.+ + i.+ + + ..+ +  ./.^.R.^.#+f.z.T.8.b.n.O.h. .j.K.B.N.R.* { { { K G+",
+"{ { h :.R j.i.$.^./.4+j.~.=. .Z t.z.r.g.B.m.1.+ + B.+ + g.}.+ + &+(.+ + + + + + j.+ + |.+ + + ..+ +  .8.}+w.a.#.r.h.A.t.Q.y.J.#+p.z.m.z.t.7+* ^ { { K G+",
+"{ { h :. .K...H.(.H.h.a.r.s.R.|.4+(.0.}.Q.%.>.+ + z.+ + P.~.+ + T.<.+ + X %.[.C.%.<.+ + + u.+ + + s.*.1.Z i.M.~.C.Z 1.e.b.n.g.}+O.K.a.j.t.G.* { { ^ K G+",
+"^ ^ h :.R Q.w.>.*.i.b.T =.z.h.s.R.+.#.~.j.>.m.M.+ + + s.x.V + + /.h.+ + }++.+ + c.b.+ + + 2.+ + + ^...8.^.w.a.C.].s.m.|+M.x.0.$+~.u.$.|.*+|+* { ^ ^ K G+",
+"^ ^ h :.>.a.c.>.X m.h.%.[.M.1.|.b.|.=.#+c.m.w.8.+ + + M.=.#.+ + >...R + + + + C.2.w.+ + A.c.Z + + *+j./.*.>.=.~.y.Y.H.8.$. .r.=.#+M.(.T |+<+* ^ ^ ^ K G+",
+"^ ^ h :.1.c.P.Z H./.L.e.8.u.t.P.2.3+[.0.2.M.$.^.e.,.B.^.O.P.^.u.N.Y.1.b.Y.X #.[.K.+./.s.m.i.q.Q.M.(.s.&.1.+.h.O.~.K...<.h.0.p.p.|+Q.H.b.L.&+- ^ ^ ^ K G+",
+"^ ^ k :.w =...s.s.i.R.j.z.j.R.A.*+&+=.Z P.(.K.&+A.$.u.(.j.B.0.K.(.$.<.@...%.a.M. .K.h.&.m.m.@.Z ^.|.}+$.1.(.P.^.^.J.a.&./.J.].J.].K.w.<.L.%+- ^ ^ ^ K G+",
+"^ ^ k :.*.*.z.8.r.s.V y.(.^.e.2.e.}+#.[.s.c.2.H. .&+8.j.p.3.(.Z |.>.w.a.A.=.g.p.2+Q.s.8.&+=.s.$.(.K.j.T.<+8.Z #+O.Q.P.=.h.p.<+(.(.#+#+u./.e+- ^ ^ ^ K G+",
+"^ ^ 7 ).%.u.1+..Q |.g.p.].s./.w.e.h.$+1+%.|.|.L.<+H.%+Y.0.f.M.Y.Q.&.i.e.@.s.x.y.B.K.c.e.&.m.%+t.h.[.c.H.A.m.z.r.}+2.h.j.2+n.z.u.h.$+~.}.&+R.- ^ ^ ^ K G+",
+"^ ^ h ).%.s.T /.j.u.3.g.J.M.m.A.N.|.x.3.j.^.a.@.H./.$.|.O.J.z.K.j.8.w.b.1.s.r.=.B.|.*.m.*+R.L.$.B.~.Q i.1.&.c.0.P.s.P.z.^.0.2.Y.Y.*+r.r.T.N.- ^ ^ ^ K G+",
+"^ ^ h ).*.^.)+'+a+a+a+a+a+a+a+a+a+'+o =.*.|.M.&.` R 8.z.f.3.K.2.s...A.w.b.Z }.4+<+s.^.%.&.&.%.t.Q.y.2...Y m.*.$+O.|. .Y.s.=.(.(.=.x.~.*.%+G.- ^ ^ ^ K G+",
+"^ ^ h :./.2.U.U.U.U.U.U.U.U.U.U.U.U.a+=.u.c.a.&.b.i.1.&+=.*+c.B.Z e.8.e.<+=.0.].s.a.X w.b.b.w.>.s.y.z.|+T.b.|.C.~.z.h.B.*.!.|.u.a.f.C.9.G.%+- ^ ^ ^ K G+",
+"^ ^ h )./.%.=+U.# g g g g g g g g m+w+x.P.<+K.m.A.%.H. .x.4+j.|+s.1.T.N.>.u.x.].a.Z c.e.H.<.>.&.|.W c.&+m.*+j.}+C.^.h.=.=.n.u. .B.*+~.I.v.0+- ^ ^ ^ K G+",
+"^ ~ h :.R a.=+U.U.U.U.U.U.U.U.U.U.m+w+=.X 2.z.<.L.+ +.C.0.a.*.^.>.R./.w.B.}+=.u.B.*.U L.*+e.L.1.*.x.}+w.t.<.a.O.P.s.a.+.2.I.(.u.z.O.x.&+b.<+- ~ ^ ~ K G+",
+"^ ^ h )...K.=+U.U.U.U.U.U.U.U.U.U.m+w+O.j.P.z.$.e.+ V 4+~.a.a.z.8.m.w.1.T x.=.M.B.|.1.m.+ T.e.t.P.[.u.t.` 8.=.~.].c.K.|.a.I.s.*.(.y.*+}.T.l.- ~ ^ ~ K G+",
+"~ ~ h :.Z s.=+U.U.U.U.U.U.U.U.U.U.a+w+O.z.m.w.s.&++ z.+ + + %.b.+ + + t.B.r.+ P.N.+ s.+ + + &+/.j.z.B.A.(.1.a.[.g.*+<.@.u.Z 0.~.~...Y 2.v.|+- ~ ~ ~ K G+",
+"~ ~ h :.1.(.=+U.g U.U.U.U.U.U.U.U.a+w+0.s.w.<.H.&.+ %.+ r.a.+ $.+ t.+.+ u.=.+ j.@.+ e.4++ &.w.w.Y.M.^.e.j.&.(.#++.a.$.%+@.!.x...].^.u.a.&.|+- ~ ~ ~ K G+",
+"~ ~ h :.+...=+U.U.U.U.U.U.U.U.U.U.m+w+O.h.m.H.K.L.+ z.+ f.1++ Y + w.c.+ c.0.+ 1+m.+ |.H.+ Z L.L.Z j.(.b.(.1+s.J.].1+t.1.s.O.}.p.@+Z %.K.H.%+- ~ ~ ~ K G+",
+"~ ~ h :.V h.=+=+U.U.U.U.U.U.U.U.U.a+w+0.=.*+&+A.w.+ (.+ 0.M.+ N.+ b.h.+ s.P.+ u.H.+ i.b.+ 2.w.&+2.h.|.e.^.>.s.p.Z c.R.m.<.{. .z.[.u.P.2.2+|+- ~ ~ ~ K G+",
+"~ ~ h :.=.=.=+U.g U.U.U.U.U.U.U.U.m+w+f.j.%.L.j.i.+ P.+ J.|.+ b.+ + + &+j.#++.+ + + h.b.+ + i.R.|.4+|.b.(.L.+.].f.(.H./.Q.P.=.r.O.Y.<.c.|+i.- ~ ~ ~ K G+",
+"~ ( h :.Z u.=+U.=+U.U.U.U.U.U.U.=+a+w+x.a.i.&.b.$.K.<.%.3.O.M.w.A.+ b.z.e.2.x.r.=.A./.&.t.<+P.N.%.K.^.W j.8.=.g.0.P.m.N.A.=.3.2.$+&+*+s.N.2+- ~ ( ( K G+",
+"( ( h :.U a.=+m+w+w+D+D+D+D+D+D+w+D+w+#+z.m.>.s.<.h.*+u.p.C.c.i.8.+ T.+.w.2.J.=...@.w.h.*+(.K.t.z.|.B.%.u.b.(.p.}+Y.m.@.a.*+y.[+ .P...M.T.<+; ( ( ( K G+",
+"~ ( h :.X |.w+H+H+H+H+H+H+H+H+H+H+H+H+y.z.R.%.&.N.^.|+^.C.}.Q.|+X m.$.|.>.*+[.J.Y.L.&.t.8.Z B.L.^.&+Q.N.z.A.B.3.r.K.i.H.H.].#+$++. .K.z.R.S.; ( ~ ( K G+",
+"( ( h :.T %.Q.c./.1.&+>.%+z.&.T %.V *+O.h.u.t.M.$.q.z.P.x.O.2.|.1.<+e.}+^.z.g.J.+.2.>.%.L._+P.}+*.Q.(.e.,.h.2.~.*+s.+.A.(.#.[+[.<++.e.V m.%+; : ( : K G+",
+": ( h :. .a.c.u.2./.H.j.h.M...t.%.u.^.s.#+P.a.>.8.}+|.z.+.%.P.Q.=.&+m.2+u.j.(.j.#.&+j.$.<+&.N.^.Z j.R.A.b.P.s.h.^.r.(.i.<+y.p.C.0.j.b.1.|+H.; : ( ( K G+",
+"( : h :.T s.s.&.[.M.].J.j.3+t.s.i.}+y.#+a. .c.m.&.a.&+(.r.~.P.a.M.$.%+s.e.^.g.}.Q.K.a.w.&.2.^.&+z.2.T 8.|.>.z.Z f.2+ .(.c.$+h.Y.s.~.#.c.R.&+; ( ( ( K G+",
+": ( h :.R P.2+8.Y.Z 3.=.#+(.t.i.%.4+C.C.2.+.h.b.i.i.` |.=.$+h.h.Y.m.&.}+%.a.x.[+j.j.}+t.A.t.m.L.%.=.M.>.}+>.z.}.O.1+T s.*.!.=.&+^.J.#+J.b.|+; : : : K G+",
+": : h :.O M.K.L.Q.*.f.p.}+(./.R.N.j.Z 4+K.c.*.1.L.T.w.M.x.[+(.c.2.>.e.1.i.Q.x.y.j.s.a.<+L.&.A.>.B.y.B.e.H.L.c.0.J.|.}+K.M.3+..R |.g.p.].N.R.; : : : K G+",
+": : h :.U 2.|.e.|.B.+.g.}.%.N.8.1.Q.=.~.Y.Q.Q.w.e.i.i.s.[+r.j.B.h.m.A.Y N.P.[.O.}+&+^.m.4+T.%+%.}+J.K.T.H.&+M.@+#+1+*+u.B.}.^.z.z.[.3+{.N.4+; : : : K G+",
+": : h :...M.j.R.Q.c.#.+.O.Q.L.R.b.u.].3.^.(.s.L.8.H.i.c.g. .=.u.2.8.&.b.i.2.*+=.<+c.u...e.8.e.<+=.3.=.e.<.V z.g.g.K.|.u.K.o.1+P.c.3.C.=.N.&+; : : : K G+",
+": : h :.I Y.)+'+a+a+a+a+a+a+a+a+a+'+o 3.}+h.}+&.w.e.A...3.].*.M.<+N.*+%.L.^.f.].j.c.=.%+e...w.>.+.}+^.&+..b.Q [.}.T a.j.<+Z a.%.*. .#.g.}+|+; : : : K G+",
+": : h :.O X U.U.U.U.U.U.U.U.U.U.U.U.a+0.<+^.B.m.i.&+e.1+C.f.K.*.s.w.b.i.A.2.x.#+a.s.z.A.e.>.H.N.B.0.1+N.i.m.|.*+].(.s.B.^.0.}+*+T p.@+J.8.7+; : : : K G+",
+": : h :. .+.=+U.# g g g g g g g g m+w+P.Y.P.P.e.m.H.i.c.g. .=.u.2.8.&.b.i.2.*+=.<+c.u...e.8.e.<+=.3.=.e.<.V z.g.g.K.|.u.K.o.1+P.c.3.g.I.G.4+; : : : K G+",
+": : h :.*.u.=+U.U.U.U.U.U.U.U.U.U.m+w+*+*+m.j.h.e.+ + + + $+2.+ =.i.&.8.<.c.#.f.*.Y...1.+ i.1.<+a.[.U <.m.N.2.p.}.Q.}+B.|.+ c.|.a.(.|.K.*+|+; : : : K G+",
+": : h :.O j.=+U.U.U.U.U.U.U.U.U.U.m+w+J.+.8.>.%.L.+ b.^.+ x.T + s.*+..$.m.|+f.g.z.A.K.+.+ L.i.<.<+2.h.i.i.}++.y.y.*+N.b.e.+ j.%.M.T /.j.T.&+; : < : K G+",
+": ' h :.U a.=+U.U.U.U.U.U.U.U.U.U.a+w+y.B.N.i.T.&++ R.<++ P.|.+ >.+ + + + h.#.+ |.%.}++ + + + W ^.|.+ + + +  .f.+ +  .$.h.+ x.C.+ z.c.|.4+N.; : : < K G+",
+": ' h :.V M.=+U.g U.U.U.U.U.U.U.U.a+w+ .+.e.b.c.w.+ + + + f.a.+ <.*+b.(.+ s.}.g.+ b.+ b.+ %.*.+ P.&+j.e.%.+ c.+ C. .+ t.H.+ }.+ x.=.>.h.*+2+; < < < K G+",
+"< ' h :.W %.=+U.U.U.U.U.U.U.U.U.U.m+w+0.1+e.<.U 1.+ N.a.3.*+(.+ b.c.+ + + |.[. .+ %.+ P.+ M.c.+ %.j.Q.+ + + z.+ C.z.i.i.%.+ + + 4+u.h.%+T.7+; < < < K G+",
+"< ' h :.<.B.=+=+U.U.U.U.U.U.U.U.U.a+w+#...L.w.u.8.+ R.2.p.}.Q.+ A.+ <.c.+ a.y.g.+ i.+ A.+ h.a.+ V 3++ 1.|.+ a.+ C.c.+ t.&.+ x.+ 3.2+R.s.R.&+; < < < K G+",
+"< ' k :.O |.=+U.g U.U.U.U.U.U.U.U.m+w+r.u.%+>.1.N.+ T.B.g.0.Y.+ w.+ + + + B.x.r.}++ 1+B.+ + + t.z.h.+ + + + P.3.+ + L.i.(.+ P.C.+ M.K.*+i.2+; < < < K G+",
+"< ' k :.W M.=+U.=+U.U.U.U.U.U.U.=+a+w+[.7+j.>.=.` +.u.z.p.g.B.j.1.^./.E.s.2.f.}.P.+ &+(.T.L./.^.j.c.h.<+/.|.a.~.#++.s.N. .3.[+y.c.%.m.9.T.1+; < < < K G+",
+"< ' k :.R K.=+m+w+w+D+D+D+D+D+D+w+D+w+Z 3.*.Y.b.e.&+u.=.|+=.f.u.}+e.i.|+z.B.u.u.+ *.*.N.<.1+<.B.(.K.}+Y t.%.|.=.<+[.K.R.L.~.x.0.#.M.N.1.2+7+' < < < K G+",
+"< ' k :.=.c.w+H+H+H+H+H+H+H+H+H+H+H+H+C.*+%+P.(.b.e.1.c.r.J.%.i.^.M.w.b.A.(.}+#+a.<.Q.Q.&+%+` A.}+3.N.A.%+>.z.f.J.<+&.t.A.y.#.p.g.^.a.Q.t.&+' < < < K G+",
+"_ ' k :.U j.j.^.N.b.<.2.%+^.&+z.*.T #.T }+M.b.u.w.M.+.u.x.#+B.M.<.|.8.<+c.}+~.C.s.K...2./.%.K.}+Q.}+>.R.(.c.=.f.0.(.*+i.+.C.[.#.|+(.*+$.H.b.' < _ < K G+",
+"_ ' k :.%.}+a.=.w.b.i.j. .b.t./.&+&.L.N.(.&.8.%./.|+<.L.8.L.a.%+L.8.&.R.L.R.L.w.&+b.8.8.%+&+1.&+<+&.u.&.m.<+/.8.1.h.&.<+i.Q.M.2.j.|+/.+.7+L.' _ _ _ K G+",
+"_ ' k :.%.h.A.m.c.A.i.a.r.s.*.u./.*.x.}+&+R.%.K./.Q m.2.].g.c.R.i.Q.A.*.8.2.*+$+<+t.m.B.<.c.%.Y +.2.M.<+|.` z.~.*+|.N.i.h.4++.#+p.P.$.a.e.|+' _ _ _ K G+",
+"_ ' k :.Z (.Q.t.j.>.s.(.g.<+w.h.A.2.g.0.|.T.$.w.8.B.%.T +.y.j.*+<.L.t.z.<.z.#.y.h.1.i.<+R.h.Z 8.&+B.1+ .Q...K.y.f.c.t.@.i.g.y.Q.O.c.j.2.v.0+' _ _ ! K G+",
+"_ ' k :.Z c.t.@.|.N.1.u.3.j.=.K.b.z.p.#+2.L.>.Q.e.c.$.K.p.g.2.1.T.+.L.^.L.a.$+#.s.*+m.P.@.B.^.H.c.a.u.t.Q.1.3+}.0.2.N.$.^.f.~.y.].Q.N.=.R.7+' _ _ ! K G+",
+"! ' k :...u.c.&.(.b.2.4+W B.L.*.<.|+[.g.2.8.e.L.e.2.b.s.O.J.u.8.<.<.@.u.%+P.r.r.s.H.t.&.<.M.=.H.h.4+u.t.h.}+z.#+3. .i.t.>.9.$+(.r.=.Q.2.<+F.' _ ! ! K G+",
+"! ' k :.<. .T. .1+8.e.+.}.P.Q.^.<.K.1+f.2.w.e.h.%.M.8.s.x.#+u.8.>.c.U z.A.*+x.[.2+N.%+z.N.c.^.&.T Q.(.m.z.m.s.#+3.}+i.$.%.}.#.0.].z.&.M.t.|+] ! ! ! K G+",
+"! ' k :.R u.)+'+a+a+a+a+a+a+a+a+a+'+o 0.j.H.8.>.A.*.8.j.r.~.u.L.L.<.b.s.m.(.#.[.<+R.@.b.A.K.^.b.u.z.|.H.T  .K.r.p.K.*+/.A.q.].c.].s.Y.(.R.7+' ! ! ! K G+",
+"! ' k :.+.T U.U.U.U.U.U.U.U.U.U.U.U.a+#+z.T.w.h.t.z.i.c.}+}.Q.i.1.V &.M.b.P.[.#.B.R.i.&+w.=.K.8.3+*.|.i.+.L.B.r.p.&+8.@.^.0.g.y.y.(.A.%+2+7+] ! ! ! K G+",
+"! ' k :.M =.=+U.# g g g g g g g g m+w+O.a.t.w.m.t.Z <.M.}.x.c.m.&.L.b.z.i.Q.}.J.(.R.b.e.$.K.h.e.(.|.Y.@.B./.K.f.$+%.m.&+t.P.Z C.].K.h.a.R.<+] ! ! ! K G+",
+"! ' k :.<.T =+U.U.U.U.U.U.U.U.U.U.m+w+P.s.B.T.Q.H.L.+ + + x.Y.h.|+j.>.|+%.(. .r.z.j.N.j.A.i.I.z.&+*+^.@.I.(.K.$+y.%.u.<.s.C.0.J.|.%./.+./.L.] ! ! ! K G+",
+"! ' k :.1.&+=+U.U.U.U.U.U.U.U.U.U.m+w+s.y.B.u.<.8.+ (.c.Y.+ #.u. .b././...T + a.r.a.K.b./.@.T. .+.^.&.$.+ Z Y.(.Q.g.c.%+w.0.y.x.$+^.8.b.l.N.] } ! ! K G+",
+"! ' k :.2.a.=+U.U.U.U.U.U.U.U.U.U.a+w+J.M.M.s.w.i.+ }+j.T + z.j.+ b.8.+ }++ + + K.+ + + @.h.+ 8.(.+ s.+ + + j.}.r.Q.a.s.|++.%.B.c.}.r.|.T.v.] } } } K G+",
+"} ' k :.T a.=+U.g U.U.U.U.U.U.U.U.a+w+0.h.z.}+A.i.+ b.z.0.+ K.^.+ i.i.+ i.B.+ }.h.+ j./.+ >.+ L.Z + z.H.+ 8.u.y.}.M... .Q.r.h.u.&+[.y.q.i.:+] } } } K G+",
+"} ' k :.W z.=+U.U.U.U.U.U.U.U.U.U.m+w+r.Y.*.2.%.e.+ <+R p.+ c.M.+ U 1.+ L.<++ #+|++ B.&.+ 1.+ A.+.+ u. .+ &.|.O.O.|.a.(.|.Q.Y.M.^.].O.o.v.4+] } } } K G+",
+"} ' k :.*.V =+=+U.U.U.U.U.U.U.U.U.a+w+#+|.(.B.1.%.+ A.=.J.+ K.z.+ e./.+ <+%.+ y.s.+ M.8.+ <.+ &.Y.+ %.X + W *+O.f.z.z.M.%.y.u.Q.u.O.}.}.t.7+] } } } K G+",
+"} ' k :. .=.=+U.g U.U.U.U.U.U.U.U.m+w+C.2.u.j.R.&.<.+ + + g.c.a.a.+ + + m.2.+ + s.+ + + H.1.<.+ + + K./.+ + (.#+P.u.K.a.z.P.u.Z s.~.0.I.%+7+] } } } K G+",
+"} ' k 4.1.2.=+U.=+U.U.U.U.U.U.U.=+a+w+O.a.j. .<.%.w.i.M.].}...j.s.*+b.i.N.|.J.J.s.+ z.@.` &.%+A.P.y.K.Y /.%.h.+.}.<++.*.P.Z z.T j.}+3.g.<+L.{ } } } K G+",
+"} ' k :.N V =+m+w+w+D+D+D+D+D+D+w+D+w+#.K.+.Y./.L.b.8.Y.x.0.B.z.Y.%.<.<.>.*.W g.j.+ (...8.@.w.$.h.g.h.b.>.H.a.x.C.2.u.s.&+].|.K.T }.g.0.t.&+{ } } } K G+",
+"} ' k :.R Q.w+H+H+H+H+H+H+H+H+H+H+H+H+~.j.^.j.H.>.w.1.s.x.V B.|.^.b.1.b.<++.x.[.2+N.%+z.N.c.^.&.T Q.(.m.z.m.s.#+3.}+i.$.%.}.#.0.].z.&.M.t.|+] 3 3 3 K G+",
+"[ ' k 4.+.a.a.}+s.T g.x.g.h.b.1.b.}+p.1+2.K.2+/.V ..e.^.0.}.3+z.B.&.<+i.<.j.P.3.B.c.m.^.R.h.K.s.P.2.N.<.P.h.h.#.P.u.j.1.2.$+#.O.|.Q.e.&+8.|+^ 3 3 3 K G+",
+"[ ' k :.R 2+h.>.=.T #.x.C.j.b.t.e.|.].].M.u.2.b./.|+<.&+[.#+Q.|.=.i.8.b.&+c.i.*.w.I.T j.#.P.P./.&+i.1+s.j.<.h.%.&+m.+.*+%.O.].%.t.R.A.0.P.s.^ 3 3 3 K G+",
+"[ { k 4.R a...<.*+..=.P.Z z. .i.*+|.g.#+(.*.Q./.w.e.A.u.Q p.&+a.2.>.%.i.N.2.H.2+Y.H.T.R.2+m.H.A.m.e.+.N.N.R.t.1.H.c.&+b.N.R.R.N.u.<+F.S.|+*+^ 3 3 3 K G+",
+"[ { m 4.U u.*.1.^.%.g.r.3.*+@.%+m.+.0.y.=.u.c.` }+b.4+1+g.y.*+Q.=.b.i.%./.Q.5+5+8+5+8+5+5+8+8+5+5+5+8+5+8+8+5+5+5+8+5+8+5+f+8+:+f+5+:+8+f+p+] 3 3 3 K G+",
+"[ { m :.R h.R <+K.|.p.J.].c.<+m.>.^.r.y.}+j.*./.t.<.R.3+].y.c.u.^.>.m.i.A.*.8+t+t+t+B+B+B+B+B+u+B+B+B+B+B+B+u+B+B+B+C+B+B+C+B+B+B+u+B+B+B+B+3 3 3 3 K G+",
+"3 { m 4...^.&+T.K.c.0.#+g.u.>.1.%+*.J.x.u.}+h.|+w.8.w.+.x.C.j.u.B.1.m.R.<.h.4.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 K G+",
+"1 { m 4.=.|.^.1.&+=.$+y.=.T @.W &+K.f.x.z.Q.Z t.t.R.t.K.}.}.a.}+a.<+&.w.e.B.4.3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 K G+",
+"1 { m 4.+.=.1.^.%.g.r.3.*+@.%+m.+.0.y.].^.B.Q.w.1...Y s.~.$+Q.|.T R.e.%./.|.8+8+8+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+P 3 3 3 3 K G+",
+"3 { m 4.T 2.c.&.(.b.2.4+W B.L.*.<.|+[.f.j.w.u.K.$.,.N.j.}.}+a.m.h.j.}++.w.u.'.'.4.:.).D.:.:.'.4.:.).D.:.:.:.4.D.D.4.4.4.4.4.).4.D.:.4.:.D.D.^ 3 3 3 K G+",
+"3 { m 4.*.2.T. .1+8.e.+.}.P.Q.^.<.K.1+x.K.b.T s.%.A.Z %+3.P.K.c.i.*.w.I.T j.#.P.P./.&+i.1+s.j.<.h.%.&+m.+.*+%.O.].%.t.R.A.0.P.s.g.^.s.(.e.T.^ 3 3 3 K G+",
+"3 { m 4.T 2.)+'+a+a+a+a+a+a+a+a+a+'+o @+z.<.|+K.%+t.}.u.3+c.}+x.a.Y.R.<.A.u.=.|...g.j.K.1.<./.8.V c.*+t.}+t.}+z.*.a.8...&+g.Q.V u.&+u.=.i.F.^ 3 3 3 K G+",
+"3 { m 4.V =.U.U.U.U.U.U.U.U.U.U.U.U.a+y.j.$.j.z./.b.Y s.~.$+Q.|.T.K.c.0.#+g.u.>.1.%+*.J.&+T.K.c.0.#+g.u.>.1.%+*.J.z.R.R.e.*+Y.P.=.B.s.a.I.:+^ 3 3 3 K G+",
+"3 { k :.R z.=+U.# g g g g g g g g m+w+#+2.e.c.|.e.c.i.*.w.I.T j.#.P.P./.&+i.1+s.j.<.h.%.&+m.+.*+%.O.].%.t.R.A.0.P.s.A.%.t.n.=.2.K.|.c.a.i.F.~ 3 2 2 K G+",
+"3 { k 4.R <+=+U.U.U.U.U.U.U.U.U.U.m+w+~.P.<.|+^.A.w.+ + x.j.&+u.P.<.t.w.+ f.].^./.2.z.<.{.E.t.=.|.u.+ /.A. .[.#.A.(.&+&+$. .B.u.s.2.*+Y.%+:+( 3 2 2 K G+",
+"2 { k :. .M.=+U.U.U.U.U.U.U.U.U.U.m+w+y.K.H.a. .8.+ c.[.+ ..R.^.h.A.i.t.+ 3.@+j.%.+.(.$.5.,.w.*.M.|.i.1.b.u.O.g.8.K.A.<.8.9.^.c.Y.(.+.u.,.&+( 2 2 2 K G+",
+"2 { k :.w h.=+U.U.U.U.U.U.U.U.U.U.a+w+O.Y.L.b.2+T.+ M.~.0.}++ j.c.+ W m.+ + + Z m.h.+ + + + + + j.h.+ E.+ K.].+ T.(.L.}+h.#+Z #+}...8.c.R.0+( | 2 2 K G+",
+"2 { k 4.R a.=+U.g U.U.U.U.U.U.U.U.a+w+p.h.V /.}+<.H.+ + [.P.+ a.z.+ _+T.+ [.#++ *+Y.+ A._++ N.z.+ =.+ b.H.+ + x.<.u.<+t.R.9.1+(.p.s.c.c.}+|+( 2 2 | K G+",
+"2 { k :.Z (.=+U.U.U.U.U.U.U.U.U.U.m+w+0.|.T.$.z.b.L.}+T + *.+ =.*++ A.R.+ ~.x.+ $.B.+ /.Y.+ N.z.+ B.+ i.A.+ + C.b.c.t.@.h.g.y.P.O.c.i.2.v.0+( | 2 2 K G+",
+"| { k 4. . .=+=+U.U.U.U.U.U.U.U.U.a+w+C.s.i.L.` m.+ s.p.+ u.+ +.Q.+ m.&.+ #.f.+ }+M.+ H.i.+ N.K.+ j.+ {.<++ + y.m.%.t.R.A.0.P.s.g.^.s.(.L.7+( | | | K G+",
+"| { m 4.=.c.=+U.g U.U.U.U.U.U.U.U.m+w+#+h.e.1.j.A.t.+ + ].(.m.+ + + }+<++ + + M.&.%++ H.&++ 1.%.+ ^.+ h.+ =.p.+ A.B.R.$.K.#.=.~.$+&+H.a./.|+( | | | K G+",
+"| ~ m :.w h.=+U.=+U.U.U.U.U.U.U.=+a+w+O.M.w.A.m.<+(.b.h.1+p.K.H.i.%+&.(.L.(.$+0.Q.i.H.i.e.P.|.A.&+(.*.&.K.%+c.r.~.a.w.b.1.+.}.].0.B.z.T &+|+( | | | K G+",
+"| ~ m 4.R K.=+m+w+w+D+D+D+D+D+D+w+D+w+*+K.z.N.j.1.1.a.B.3.P.K.c.i.*.w.I.T j.y.#+s.c.w.a.*+5.9.|.c.(.^.w.i...2.O.r.|.(.` B.}.x.#+2.*+t.,.T.4+( 4 | | K G+",
+"4 ( m 4.+.c.w+H+H+H+H+H+H+H+H+H+H+H+H+*+O.u.B.&.N...u.3+c.}+x.a.Y.R.<.A.u.=.|...g.j.K.1.<./.8.V c.*+t.}+t.}+z.*.c.~.*.i.A.+.J.*+~.Q.e.|+:+e+( | | 4 K G+",
+"4 ~ m 4.W a.&+` b.*.>.T %.e.T.w.H.z.T [.s.A.|.c.H.N.t.B.P.3.z.8.c.*.b.$.L.(.#.3.Q.L.s.z.m.b.A.e.2.r.m.%.w./.*.r.}+&+R.%.L.].W p.3.^.h.c.<+<+/ 4 4 4 K G+",
+"4 ~ m 4.X B.*+s.H.m.<+c.R.|.N.T 2.<+g.}+*+*+N.M.<.z.Q. .r.T P.a.t.B.w.z.%.|.P.3.B.c.m.^.R.h.K.s.P.2.N.<.P.h.h.#.P.u.j.1.2.$+#.O.|.Q.e.&+8.|+( 4 4 4 K G+",
+"4 ~ m 4.|.B.u.L.1+m.8.P.<.H.t.t.<.;.w.H.P.H.*+H.t.8.|+-.8.t.j.8.%+<.2+A.}+H.H.2+Y.H.T.R.2+m.H.A.m.e.+.N.N.R.t.1.H.c.&+b.N.R.R.N.u.<+F.S.|+*+^ 4 4 4 K G+",
+"4 ( m 4.4.4.8+8+5+f+f+8+8+:+5+8+8+5+5+5+8+5+8+5+5+8+8+5+5+5+8+5+8+5+5+8+8+5+5+5+8+5+8+5+5+8+8+5+5+5+8+5+8+8+5+5+5+8+5+8+5+f+8+:+f+5+:+8+f+p+] 4 4 4 K G+",
+"5 ( m 4.8+t+B+C+t+C+B+B+B+B+B+B+B+u+B+B+B+C+B+B+B+B+B+u+B+B+B+C+B+B+B+B+B+u+B+B+B+C+B+B+B+B+B+u+B+B+B+B+B+B+u+B+B+B+C+B+B+C+B+B+B+u+B+B+B+B+^ 5 4 5 K G+",
+"5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 4 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 4 5 5 5 5 5 5 4 5 5 5 5 5 5 4 5 5 K G+",
+"5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 K G+",
+"5 5 7 D.f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+P 9 5 5 5 K G+",
+"5 5 7 :.'.'.:.:.D.'.4.:.).D.:.:.:.4.D.'.4.:.).D.:.:.:.4.D.'.4.:.).D.:.:.:.4.D.'.4.:.).D.:.:.'.4.:.).D.:.:.:.4.D.D.4.4.4.4.4.).4.D.:.4.:.D.D.7 5 5 5 K G+",
+"5 5 7 ).I R R J M w R N O W V R U X N R N w M O I W M M N X V R U R N R w N R R M U M M R ..X V M V M F w N M w O X R X U M N N ` ` ` W e.T.3 5 5 5 K G+",
+"5 5 7 ).X *.K...j...=.%.x.<.t.V m.s.~.*.2...<.m.&+&.<.a.R h.*.1.@...>.i.t.j.y.|.a.&+m.N...q.@.$...|...&.+.>.X ~. .z.X *.N.}.*.Q.=.$.w <.L.2+_ 5 5 5 K G+",
+"5 5 7 )...&+b.b.a.t.<.M.~.Z M.+ + + + + c.w.H.h.1+z.$.(.g.@+s.%+..|.2+M.A.Q.C.g.Q.e.i.K.L.B.B.t.z.j.+ |+j.Y c.x.g.s.i.8.h.[+g.[+[.B.2+|.%.c.< 5 5 5 K G+",
+"5 5 7 ).O s.^.$.|+/.<++.f.V /.+ + |.p.+ + e.&.&.Y +.e.P.y.J.K. ./.i.w.|.e.B.P.x.M.T.1.t.1.c.*.b.+.+ + %.|.L.B.x.C.u.e.A.i.0.r.j.#.z.(.=.R.7+< 5 5 7 K G+",
+"5 7 7 ).U |.t.L.1+<.&.u.3.c.h.+ + c.=.+ + L.H.+ + + + %.@++ + + + |.T.B.+ + + + P.L.m.+ + + + N.+ + + + %.m.+ + + + 8./.a.#.*+0.C.B./.c.4+s.< 7 7 7 K G+",
+"7 7 7 ).%.%.h.8.|.H.%.*+x...H.+ + K.O.+ + <./.+ + Q./.=.+ + h.T.+ + i.+ + P.r.+ + i.+ + L.Q.+ + c.+ + 1.*.+ + P.f.+ + e.i. .#.j.3.c.^.h.N.N.< 7 7 7 K G+",
+"7 7 h ).W ^.A.b.u.A.b. .r.*.K.+ + + + + *+A.T.+ + u...a.+ + + + + + 8.+ + + + y.<+1.+ + + + + + T + + R.a.+ + + + s./.&.j.W ~.r.f.Q. .a.t.<+< 7 7 7 K G+",
+"7 7 7 ).R a.2.8.M. .*+a.p.s.1.+ + |.[.y.h.H.>.+ + |+L.s.+ + (.w.$.<.L.j.T.+ + + + N.+ + &.a.h.<+(.+ + R.j.` 4++ + + + N.&+o.O.s.}+^.a.a.m.%+< 7 7 7 K G+",
+"7 7 7 ).M (.b./.*.@.L.}+x.h.%.+ + z.4+J.}+1.b.+ + |+<.%.+ + h.i.+ + i.+ + %.J.+ + %.+ + &.*++ + |.+ + T.B.+ + J.C.+ + m.P.3.}.}.O.P.>.Y.4+j.< 7 7 7 K G+",
+"7 7 7 ).*.%...L.*.t.|.u.J.a.t.+ + |+C.#.2.i.*++ + ..<.1+P.+ + + + L.b.h.+ + + + z.H.i.+ + + + e.s.h.+ + 2.e.+ + + + H.2+1.T +.g.].a.|.1+R.|+_ 7 7 7 K G+",
+"7 7 7 ).Z c.*.Q./.<.L.N.t.j.%.L.P.s.[.p.Q.s.A.T R.t.(.B.f.g.1+Q.m.2.<.%.h.B.x.C.z.(.<+a.N.1.P.2.a.j.2.1+5.}+%.#+}.j.|.A.B.}.0.O.j.Q.X %+t.j._ 7 7 7 K G+",
+"7 7 h ).T (.Q.c.z.e./.2.a.=.H.t.j.|.2.c.g.Q.*./.%.1+K.2.z.h.r.j.u.R.8.e.j.Y.h.z.*+z.a.b.b.H.R.j.M.K.<+m. .j.h.u.*.#.z.t.m.J.g.3.C.*+b.e.G.*+_ 7 7 7 K G+",
+"9 9 h ). .M.Q.b.~.|.}+}.B.+.$.M.N.=.$+p.3+z.j./.i.+.%+j.#.@+=.Q.=...m.Q.w.2.P.x.s.(.j.>.i.*+u.i.z.2.c.8.^.R.+.x.0.M.=. .+.y.c.&+(.O.x.K.t.<+_ 9 9 9 K G+",
+"9 7 7 ).c.B.B.8.j.|.#.y.#+s.N.t.b.j.C.p.j.|+(.H.b.<.U %.P.f.&+|.+.t.L.e.T.s.].O.c.4+%./.b.@.H.A.j.g.P.<...&.2.p.C.K.|.B.*+*+Y.c.j.p.g.+.v.F._ 7 9 9 K G+",
+"9 9 h ).*. .u.w.Y.u.O.}.}.|.&+8.<+=.C.p.M.+.|.&.@.A.*+Q.}+~.P.|.a.&.b.1.&.&+p.#.K.|.+.<+>.&+..b.Q ].(.V <.e.&+Z f.^.^.T *.g.P.s.B.C. .{.H.<+_ 9 9 9 K G+",
+"9 9 h ).M 2.-+;+,+,+,+,+,+,+,+,+,+;+n ].<+M.-+;+,+,+,+,+,+,+,+,+,+;+n /.*.p.-+;+,+,+,+,+,+,+,+,+,+;+n R e.R.-+;+,+,+,+,+,+,+,+,+,+;+n y.N.L.! 9 9 9 K G+",
+"0 9 h :.*.2.p p p p p p p p p p p p >+C.u.}+p p p p p p p p p p p p >+1.j.#.p p p p p p p p p p p p >+V 1.%.p p p p p p p p p p p p >+=.|+|+! 9 a 0 K G+",
+"0 9 h ).R <+++p e f f f + f f f f !+n+*+(.+.++p e f f + + + f f f !+n+t.Z x.++p e f f + + + f f f !+n+<.<+..++p e f f f f + f f f !+n+o.N.G.! a 0 0 K G+",
+"0 a h :...+.++p p p p + + p p p p !+n+#. .<+++p p p + p p p + p p !+n+&.T J.++p p p + p p p + p p !+n+A.%.<.++p p p p p + + p p p !+n+r.G.e.! 0 a 0 K G+",
+"0 0 7 D.R u.++p p p + p + p p p p !+n+P.h.|.++p p p p p p p + p p !+n+t.%. .++p p p p p p p + p p !+n+e.A.` ++p p p p + p + p p p !+n+0.e.4+} 0 0 0 K G+",
+"0 0 7 :.V c.++p p p p p + p p p p >+n+J.s.Q.++p p p p p p p + p p >+n+>.*+J.++p p p p p + + p p p >+n+T.1.8.++p p p p + p + p p p >+n+n.e.:+} 0 0 a K G+",
+"0 a 7 ). .a.++p f p p p + p p p p >+n+}.j.Q.++p f p p p p + p p p >+n+*+(.f.++p f p p p p p + p p >+n+>.$.%.++p f p + p p + p p p >+n+o.R._.} 0 0 0 K G+",
+"i 0 7 ).T Y.++p p p p p + p p p p !+n+y.u.w.++p p p p p + p p p p !+n+t.2.p.++p p p p p p p + p p !+n+N.a.%+++p p p + + + + + p p !+n+P.t.0+} 0 0 0 K G+",
+"0 i 7 ).W R ++++p p p p + p p p p >+n+0.4+&.++++p p p + p p p p p >+n+H.j.p.++++p p + p p p + p p >+n+V c.t.++++p p p p p + p p p >+n+s.t.7+} i 0 0 K G+",
+"i i 7 ).R B.++p f p p p + p p p p !+n+r.a.<+++p f p + + + + + p p !+n+8.u.=.++p f p p + + + p p p !+n+8.u...++p f p p p p + p p p !+n++.R.7+} i 0 0 K G+",
+"i i 7 )...=.++p ++p p p p p p p ++>+n+#+<+u.++p ++p p p p p p p ++>+n+<...}.++p ++p p p p p p p ++>+n+w.w.X ++p ++p p p p p p p ++>+n+}.4+<+} i i i K G+",
+"i i 7 )./.j.++!+n+n+q+q+q+q+q+q+n+q+n+p.<+c.++!+n+n+q+q+q+q+q+q+n+q+n+/.*+g.++!+n+n+q+q+q+q+q+q+n+q+n+1.e.%.++!+n+n+q+q+q+q+q+q+n+q+n+n.G.F.} i i i K G+",
+"i i h ).1.j.n+s+s+s+s+s+s+s+s+s+s+s+s+f.Q. .n+s+s+s+s+s+s+s+s+s+s+s+s+e...+.n+s+s+s+s+s+s+s+s+s+s+s+s+%.<+$.n+s+s+s+s+s+s+s+s+s+s+s+s+ .1._.[ i i i K G+",
+"i i 7 ).+.a.B...2.=.#.J.}+Q.*+%.L.^.f.].j.c.=.%+e...w.^.#.[+|.}+Z b.U >./.X 3.p.<+Z a.%.%.X @.b.P.x.B.w.X >.h.y.3.j.M.Q.z.J.Q.(.s.3.g.=.v.l.[ i i j K G+",
+"i i 7 ).R T h.H.Q.j.y.f.O.j.8.<./.Q.y.J.s.M.u.b.A.>.A.|.P.}.*+Y...m.i.R.%.B. .~.z.u.B.w.8.i.@.t.|.3.<+T.8.*+s.*+~.j.2+u.Q.P.%.^.z.0.f.n.H.<+[ j j j K G+",
+"j j 7 ).N Q.c.R.X u.$+x.~.^.$.w.i.*+0.+.&+P.2.i... .A.+.[+[+z.^.h.%.m.H.N.+.g.O.j.B.P.*+b.H.H.V 2.=.+.%...w.X 0.O.a.B.h.u.+.2.%.Y.O.3.].v.F.[ i j j K G+",
+"j j 7 ).W s.(.R.K.|.#.J.C.M.A.i.N.|.3.3.P.Y.=.R.&+$.i.Z f.*+(.a.^.1.@.&+8.B.C.[.h.}+*.Y 1+$.e.>.T ].2+@.b.` ^.P.C.1+a.c.s.9.Q =.}+}.0.y.*+2+[ j j j K G+",
+"j j h ).>.%.m.i.%.t.w.z.x.B.h.h.>.s.*+y.s.1.e.M.L.s.A.j.}+}.h.m.|+j.H.z.i.Y.~.}.Q.1.%+a.N.c.B.i.c.Y.2.H.&+/.%.~.O.*+i.m.=.3.r.0.[.Z 1.(.G.<+[ j j j K G+",
+"j j h ).*.*.^.m.2.m.P.|+=.z.T.R >.c.@+p.h.&...R.T.j.i.Y. .f.*+@.t.i.e.B.m.*+x.*+^.N.A.i.L.M.h.A.P.Q.B.L.*+N.X x.#+j.1+i.>.1+#.(. .s.u.j.<+%+[ j j j K G+",
+"j j 7 ). .M.=.1.Q.T }.g.0.|.8./.e.*+x.0.a.%.h.$.@.H.H.2.3.#+&+(.K././.L./.Q.P.r.K.c.s.N.t.@.m.%.2.J.B.&+&.w.h.=.0.Q.^.1+&+r.|.*.P.C.#.q.|+7+[ j j j K G+",
+"j j h ).U z.-+;+,+,+,+,+,+,+,+,+,+;+n =.^.Q.-+;+,+,+,+,+,+,+,+,+,+;+n /.*.p.-+;+,+,+,+,+,+,+,+,+,+;+n %+<.&+-+;+,+,+,+,+,+,+,+,+,+;+n !.b.<+[ j j j K G+",
+"j j h ).V Q.p p p p p p p p p p p p >+3.s.}+p p p p p p p p p p p p >+1.j.#.p p p p p p p p p p p p >+>.A.8.p p p p p p p p p p p p >+P.R.|+[ j j j K G+",
+"l l h :.2.(.++p e f f + + + + f f !+n+C.K. .++p e f f + + + f f f !+n+t.Z x.++p e f + + + + + f f !+n+&+/.@.++p e f f + + + f f f !+n+].*+<+[ j l l K G+",
+"l j h ).V h.++p p p p + p p p p p !+n+r.c.(.++p p p + p p p + p p !+n+&.T J.++p p p p p p p + p p !+n+H.e.b.++p p p + p p p + p p !+n+0.t.|+[ j l l K G+",
+"l l h :.%.|.++p p p + p p p p p p !+n+$+|.2.++p p p + p p p p p p !+n+t.%. .++p p p p p p + p p p !+n+1.e.<.++p p p + p p p + p p !+n+{.R.4+[ l l l K G+",
+"l l h )./.Z ++p p p + + + + p p p >+n+#+M.a.++p p p + + + + p p p >+n+>.*+J.++p p p p p p + p p p >+n+>.8.&+++p p p p + + + p p p >+n+Q.T.7+[ l l l K G+",
+"l l h :.O a.++p f p p p p p + p p >+n+4+2.b.++p f p + p p p + p p >+n+*+(.f.++p f p p p + p p p p >+n+<.j.%.++p f p + p p p + p p >+n+Q.&+L.3 l l l K G+",
+"l l h :.R s.++p p p p p p p + p p !+n+3.|+1.++p p p + p p p + p p !+n+t.2.p.++p p p p p + p p p p !+n+>.j./.++p p p + p p p + p p !+n+K.b.7.[ l l l K G+",
+"l l h :.X |.++++p p + p p p + p p >+n+g.z.1.++++p p + p p p + p p >+n+H.j.p.++++p p p + p p p p p >+n+L.T R.++++p p + p p p + p p >+n+M.1+}+3 l l l K G+",
+"l l h :.N +.++p f p p + + + p p p !+n+*+<+H.++p f p p + + + p p p !+n+8.u.=.++p f p p + p p p p p !+n+>.s.i.++p f p p + + + p p p !+n+u.e.<+3 l l l K G+",
+"l l h :.R Z ++p ++p p p p p p p ++>+n+f.%.8.++p ++p p p p p p p ++>+n+<...}.++p ++p p p p p p p ++>+n+&+u.L.++p ++p p p p p p p ++>+n+h.8.h.3 l l l K G+",
+"l l h :. .^.++!+n+n+q+q+q+q+q+q+n+q+n+P.(.L.++!+n+n+q+q+q+q+q+q+n+q+n+/.*+g.++!+n+n+q+q+q+q+q+q+n+q+n+A.a.A.++!+n+n+q+q+q+q+q+q+n+q+n+|+&.F.3 l l l K G+",
+"l l h :. .K.n+s+s+s+s+s+s+s+s+s+s+s+s+].a.<.n+s+s+s+s+s+s+s+s+s+s+s+s+e...+.n+s+s+s+s+s+s+s+s+s+s+s+s+V ^.}+n+s+s+s+s+s+s+s+s+s+s+s+s+j.N.j.3 l l l K G+",
+"z z h :.O |.+.R.Z 8.<+s.3.|+b.(.U |.x.#+c.m.<.L.*+z./.(.g.0.h.A.e.L.e.M.A.%.p.f.&+X 2+&.1.|.z.b.s.B.a. .s.%.B.y.3.c.w.e.&+y.#+[.x.z.Z c.i.v.2 z l z K G+",
+"z z h :.>.M.|.&+&.>.H.*+w.z./.5.|.z.0.}.P.^.b.*+b.A...a.].].B.h.@.s.H./.h.^.O.~.c.<+N.s.i.i.V s.Z %.c...i.j.=.g.}.s.Y.b.j.p.3.O.h.M.>.A.R.|+| z l z K G+",
+"z z h :. .(.a.M.Q.b.e.a.a.a.w.b.j.Z K.<+3.s.c.<.$.<.%.c.a.(.1+%.z.8.t.m.K.P.P.z.r.u.<+&+A./.%.2.|+(.%+e.&+K.R T a.f.(.%.$.J.}+y.g.*.T.T.%+7+| z z z K G+",
+"z z h :.O u.2.i.}.z.#+0.&+B.H.c.A.j.y.y.(.4+^.t.&+M.1.h.*+p.|.%.&+&.` z.&.(.}+g.s.(...N.N.=.M.i.u.=.h.A.^./.P.#+y.&+|.K.h.=. .h.B.P.r.B.G.|+2 z z z K G+",
+"z z h -.N M.a.N.V s.$+x.~.^.$.w.i.*+0.+.&+P.2.i... .A.+.[+[+z.^.h.%.m.H.N.+.g.O.j.B.P.*+b.H.H.V 2.=.+.%...w.X 0.O.a.B.h.u.+.2.%.Y.O.3.|+v.F.2 z z z K G+",
+"z z 7 ).W s.(.R.K.|.#.J.C.M.A.i.N.|.3.3.P.Y.=.R.&+$.i.Z f.*+(.a.^.1.@.&+8.B.C.[.h.}+*.Y 1+$.e.>.T ].2+@.b.` ^.P.C.1+a.c.s.9.Q =.}+}.0.:.*+2+2 z z z K G+",
+"z z h :.R *.3+7+f+f+f+f+f+f+f+f+7+F J.#.1+1+s.%.e.%.m.K.#+#.j.Q.c.t.R.*+b.K.O.T c.^.+.%...w.V 1.K.}.u.b.i...2.~.$+Q.a.^.h.}.}+|...y.].g.L.<+| z z z K G+",
+"z z h :.T 2.v v v v v v v v v v v i+=.V 2.K.|.L.W Y @.z.0.3.*.|.^.R./.w.A.<+=.r.B.^.Q L.*+e.1.%.u.}+z.t.<.8.K.P.p.a.%.|.Q.}.z.u.K.x.*+=.H.t.| z z z K G+",
+"z z h :.1.P.~+v . q q q q q q q i+u+0.J.2.%./...` .. .A.+.[+[+z.^.h.%.m.H.N.+.g.O.j.B.P.*+b.H.&.=.K.^.H.=.A.s.].p.2.>.}+&.}.x.h.~.Q.c.(.t.4+| z z z K G+",
+"z z h :.O *.~+v v v v v v v v v i+u+C.p.j.Q. .i.%.+ +  .J.s.>.i.i...../.|.[+#.2.<.T./.>.B.2.e.e.+.#+j.@.&+$.K.].#.u.Y.z.c.P.s.c.=.r.[.n.2+<+| z z z K G+",
+"z z h :.>.Z ~+v v v v v v v v v i+u+3.#+h.h.%.*++ >.j.+ #+h.(.|.*+/.w.@.+.P.P.(.<+h.|+m.i./.z.&.=.C.j.1.b./.1+3.*+|.Y.M.|.].j.2.c.@+[.}.v.G.| z B z K G+",
+"z z h :.T (.~+v v v v v v v v v i+B+].V u.c.=.b.+ b.2.[.y.s.+ + + + e.&.+  .#.z.+ j.b.+ + <.e. .z.=.&+>.H.e.c.4+#.*+u.P.*.0.*.c.Y.[+R n.t.N.| z z z K G+",
+"B B h :.R a.~+v q v v v v v v v i+u+1+=.X 1.A.1.L.+ + y.~.c.c.&+T.+ i.i.z.+ g.+  .+.+ H.&++ z.8.*.z.|+A.u.1.a.O.P.s.8.@.1.I.[.z.y.M.u.&+e.%+| z B z K G+",
+"z B h :.2.+.~+v v v v v v v v v i+B+P.C.1+8.b.j.V  .+.+ 0.a.%.+ + + (.A.B.+ =.+ A.&.+ + + + e.b.2.*+M.m.h.8.Q.Z $+M.t.<.|.r.*+r.O.c.1+|.N.Y.| B B B K G+",
+"B B h :. .j.~+~+v v v v v v v v i+u+f.O.P.m.1.@.+ /.}++ 0.B.+ R.*.+ c.}+Z + 0.+ m.m.+ &+Q.M.z.m.*+2.Y.b.a.%.<+0.O.j.b./.A.n.#.~.].4+j.^.e.7.| B B B K G+",
+"B B h :.<.M.~+v q v v v v v v v i+u+ .$+z.Q.&+M.K.+ + C.O.z.+ + + + Q.%.z.p.+ s.<.>.$.+ + + 1.(.=.2.V i.*+u.<+p.}+K.=.b.=.=.p.y.Z K.&+,.*+N.4 B B B K G+",
+"B B h :.U z.~+v ~+v v v v v v ~+i+u+c.+.~.*.Y./.1.T.*.|. .h.0.u.*.b.N.T.Q.h.K.K.#+a.z.t.m.t.t.Y.u.Z m.w.$.K.2.h.2.C.Y.8.&+J.J.g.C.u.H.H.i.0+4 B B B K G+",
+"B B h :.*.^.~+i+B+B+z+z+z+z+z+u+z+B+r.#+4+t.+.h.T.1+t.*.r.x.u.<+..z.1.L.i.*.f.J.B.$.T &+>.%.t.m.=. .H.<+t.>.&+3.#+z.*+%+<.y.].y.~.Q.%.B.1+N.4 B B B K G+",
+"B B h :.h.c.u+H+H+H+H+H+H+H+H+H+H+H+J.}.h.}+A.K.L.h.Z a.[+P.B.s.A.u.*+*.Y.B.x.].&+*.e.<+|+P.z.M.s.%.T.R.h.u.}+3.[+2.u.A.K.C.3.0.h.|.i.&+l.h.| B B B K G+",
+"B B h :.>.M.|.&+&.>.H.*+w.z./.5.|.z.0.}.P.^.b.*+b.A...a.].].B.h.@.s.H./.h.^.O.~.c.<+N.s.i.i.V s.Z %.c...i.j.=.g.}.s.Y.b.j.p.3.O.h.M.>.A.R.|+| B B B K G+",
+"B B k :.4.4.8+8+5+f+f+8+8+:+5+8+8+5+5+5+8+5+8+5+5+8+8+5+5+5+8+5+8+5+5+8+8+5+5+5+8+5+8+5+5+8+8+5+5+5+8+5+8+8+5+5+5+8+5+8+5+f+8+:+f+5+:+8+f+p+[ B B B K G+",
+"B B z :.8+t+B+C+t+C+B+B+B+B+B+B+B+u+B+B+B+C+B+B+B+B+B+u+B+B+B+C+B+B+B+B+B+u+B+B+B+C+B+B+B+B+B+u+B+B+B+B+B+B+u+B+B+B+C+B+B+C+B+B+B+u+B+B+B+B+_ A A A K G+",
+"A B B h [ < / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 3 B A B K G+",
+"A A x B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B y A K G+",
+"A A k I M M M M M M M L M L M L M M M M L M M L M M M M L M M M L L M M M L M M L M M M M M M M M M M M L L M M L L M M M M M M M L M M I x C A A A K G+",
+"A A k :.f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+P A A A A K G+",
+"A A k :.'.'.:.:.D.'.4.:.).D.:.:.:.4.D.'.4.:.).D.:.:.:.4.D.'.4.:.).D.:.:.:.4.D.'.4.:.).D.:.:.'.4.:.).D.:.:.:.4.D.D.4.4.4.4.4.).4.D.:.4.:.D.D.j A A A K G+",
+"A A k :.R r.@.1...m.%.s. .A.1.&...^.%.s.h.>.b.` %...H.a.=.V =.%...b.V %.T.R +.=.K.<.A.1.` V %.1.*.T *.e.&.t.u.%.K.....c.N.0.3...*.$.c.8.i.|+5 A A A K G+",
+"A A k :.V z.&.|+Y.m.8.^.#+B.+.s.%+*+1+[.u.b.H.=.<.j...a.$+0.u.b.b.^.%+..%+c.C.J.%.A.T.z.b.2.Y.%+a.<+&+%+|.@.2+g.g.(.8.<.a.~.V J.}.1+L.*.*+c.5 A A A K G+",
+"A A k :...M.j.R.Q.e.%.Z J.P.N.P.e.u.].3.^./.t.K.m.+ + + + t.8.b.>.c.m.2.*+=.<+b.w.@.i.a.h.}+=.+ + H.o.1+|.X z.g.g.K.<.t.H.o.1+Y.f.2.B.=.R.N.5 A A A K G+",
+"A A k :.T z.H.t.B.m.}+|.0.j.1+h.A.z.p.$+^.1.L.2.+ + J.p.+ + 1.B.*+^.%.*.O.$+j.t.&.2.w.a.(...|.+ + h.f.O.#.X B.x.~.=.w.R.h.f.O.#.g.*+e. .2+H.5 A A A K G+",
+"A A k :.J a.2.8.K.X V a.[.Q.<+*+R.<+#+J.(.m.8.+ + u.Z J.(.8.L.L./.+ + + P.$++ + + + A.a.+ + + + + T.Q.#+c.m.Q.P.g.*.@.L.T.Q.#+c.x.^.2.=.i.S.5 C C A K G+",
+"C C k :.2.u.%.%+z.A.*+j.}.*.a.=.e.h.g.].s.L.>.+ + ..#+3.Z b.b.u.+ B.m.+ + C.+ + A.=.b.+ + &.j.+ + +.f.y.J.t.j.}.#.|.*+N.+.f.y.J.].c.w.z.t.<+5 A C C K G+",
+"C C k :.*.*.z.8.u.t.V z.].(.e.2.e.}+#.[.s.b.8.+ + j.r.3.(...1./.w.+ + + + p.+ + t.b.&++ + $.(.+ + e.n.@+(.8.Z #+O.Q.R.&.e.n.@+(.[.Y.P.s./.0+5 C A C K G+",
+"A C k :.T *.=.t.j.` a.Q.p.(./. .A.(.x.#+a.*+t.+ + |.*+Z h.R.b.A.+ + t.+ + J.+ + m.<.T.+ + <.^.+ + @.I.#.r.b.a.0.x.|.N.>.@.I.#.r.[.u.M.a.R.<+5 C C C K G+",
+"C C k :.W *. . .$.R.T.V N.h.w.%.j.M.#.p.j.B.8.9.+ + y.f.+ + &.^.+ + z.+ + J.+ + >.*+&++ + ..j.+ + r.3.+.Y.a.Z p.@+M.*+8.a.r.3.+.c.B.w.m.N.3+5 C C C K G+",
+"C C k :.2.*.|.c.=.T.@.s.Q. .8.|+z.a.+.s.f.z.s.N.&++ + + + 2.P.*+N.+ + + + u.+ + 2.1.i.L.+ + + + + #+].p.%.T Z K.u.#+^.i.1+#+].p.@+Q.$.R.-.8.5 C C C K G+",
+"C C k :.X B.%.i.$+c. .*+2.*+t.Z <.M.0.r.*+c.|+H.1.c.` |.=.C.u.P.=./. .c.t.<+f.r.Y.a.B.A.i.*.z.$...=.&+H.P.A.K. .}.^.s.Z 2.*+..%.M.Z C.Z N.7+5 C C C K G+",
+"C C k :.R ^.*.>.u.M.f.O.r.c.b.Y $.j.0.f.(.j.j.1.%+$.%+2.y.#.s.h.h.<+&.1.&.h.3.T K.j.c.w.>.m.w.w.1+#+c.<.w.%.s.f.C.*.a.2.K.9.a.u.a.g.0.Y.L.F.5 C C C K G+",
+"C C k :.u. .Y.m.P.+.0.~.p.Y.<+w e.2.0.J.T X 2./.L.*+&+Q.}+#+M.(.h.1./.A.@.&+y.Z M.(.|.H.H.>.<.>.^.O.Y.N.>.&.K.C.f.Y.a.K.s.J.s.Q.j.#+P.g.1.7.5 C C D K G+",
+"C C k :.T B.%.i.h.A.a.B.r.h.i.+.A.a.y.4+^./.e.L.w.M.$.B.#.~.(.*+%+H.8. .m.K.y.*+&+b.@.m.*+B.&+8.2.s.2...a.A.u.p.r.*+%.m.Y J.T *.p.u.a.Q./.7+5 C C C K G+",
+"C C k 4.R P.k+k+l+l+l+l+l+l+l+l+l+k+c p.=.z.M.V i.w.N.h.f.y.k+k+l+l+l+l+l+l+l+l+l+k+c i.>.>. .w.(.r.Q.<.%+m.k+k+l+l+l+l+l+l+l+l+l+k+c q.t.N.5 D C C K G+",
+"C C k :.<.h. + + + + + + + + + + + +l+[.j.2.|.b.H.b.1.a.x.O. + + + + + + + + + + + +l+m.%./.L.&.B.g.3+m.m.e. + + + + + + + + + + + +l+Q.t.|+5 D C D K G+",
+"D D k :.R u.k+.+c `.`.`.+ `.`.`.`.l+l+#.a.T.N.(.1.K.|+a.}.x.k+.+c `.d + + + d `.`.l+l+B.H.*+s./.|+M.&+A.K.e.k+.+c `.d + + + d `.`.l+l+%.8.A.7 D D C K G+",
+"D D k 4.U a..+d d d d + + d d d d l+l+x.Y.b.8.i.N.h. .h.J.C..+d d d + d d d + d d l+l+N.b.z.+.4+B.c.&+b.j.%+.+d d d + d d d + d d l+l+j.<.S.5 D D C K G+",
+"D D k :.=.|..+d d d + d + d d d d l+l+}.j.%.L.K.t.h.T.|.#.]..+d d d d d d d + d d l+l++.e.^.c.t.V h.u.<+..%..+d d d d d d d + d d l+l+2.L.P.7 D D D K G+",
+"D D m 4.*.K..+d d d d d + d d d d k+l+f.<+&.N./.A. .H.z.f.r..+d d d d d d d + d d k+l+H.>.c.}+t.^.(.s.w.*+e..+d d d d d + + d d d k+l+s.&+l.7 D D D K G+",
+"D D m 4.s.z..+d b d d d + d d d d k+l+g.|.b.L.h.i.*.R.u.].P..+d b d d d d + d d d k+l+K.1.j.a.A. .<+s.%+j.&..+d b d d d d d + d d k+l+2.T.*+7 D D D K G+",
+"D D m :.N *..+d d d d d + d d d d l+l+P.Y.&.A.e.}+Z i.2.#.p..+d d d d d + d d d d l+l+` %+B.j.<.(.s.<+t.M.b..+d d d d d d d + d d l+l+Z 2+S.7 D D E K G+",
+"D D m 4.T c..+.+d d d d + d d d d k+l+p.j.+.&.*.&+/.|.Q.#.3..+.+d d d + d d d d d k+l+a.H.t.i.s.j.Y.z.$.m.u..+.+d d + d d d + d d k+l+t.%+*+7 D E D K G+",
+"E E m 4.V Z .+d b d d d + d d d d l+l++.3.*.Q.<.A.t.=.4+z.B..+d b d + + + + + d d l+l+t./.1+>.c.s.}+e.i.|+z..+d b d d + + + d d d l+l+|+%.Y.7 E D E K G+",
+"D E m 4.R Y..+d .+d d d d d d d .+k+l+P.K.H.B.|.m.A.e.B.y.]..+d .+d d d d d d d .+k+l+Q.e.w./.8.&+=.H.t.m.*+.+d .+d d d d d d d .+k+l+%+t.S.7 E E E K G+",
+"D E m 4.(.c..+l+l+l+l+l+l+l+l+l+l+l+l+f.2.Y.%.B.e.M.=. .+.C..+l+l+l+l+l+l+l+l+l+l+l+l+|+%+s.%.c.*+K.2+..Y.+..+l+l+l+l+l+l+l+l+l+l+l+l+b.A.7+5 E E D K G+",
+"E E m 4.a.7+l+l+l+l+l+l+l+l+l+l+l+l+l+2+Y.i.|+P.P.*+P.e.&+1+l+l+l+l+l+l+l+l+l+l+l+l+l+T.2+R.P.N.|+A.P.w.P.;.l+l+l+l+l+l+l+l+l+l+l+l+l+;.2+Q.| E E E K G+",
+"E E h :.>.M.|.&+*+|+H.*+|+z.i.|+|.z.|+}.P.*+|+*+*+A.|+*+i.|+B.*+|+s.H.|+*+^.O.|+c.|+N.s.|+i.*+s.*+|+c.*+i.|+*+|+*+s.|+b.*+|+*+O.h.|+*+A.|+|+| E E E K G+",
+"E E m 4.4.4.8+8+5+f+f+8+8+:+5+8+8+5+5+5+8+5+8+5+5+8+8+5+5+5+8+5+8+5+5+8+8+5+5+5+8+5+8+5+5+8+8+5+5+5+8+5+8+8+5+5+5+8+5+8+5+f+8+:+f+5+:+8+f+p+[ E E E K G+",
+"E E E 4.8+t+B+C+t+C+B+B+B+B+B+B+B+u+B+B+B+C+B+B+B+B+B+u+B+B+B+C+B+B+B+B+B+u+B+B+B+C+B+B+B+B+B+u+B+B+B+B+B+B+u+B+B+B+C+B+B+C+B+B+B+u+B+B+B+B+| E E E K G+",
+"E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E K G+",
+"E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E K G+",
+"E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E K G+",
+"E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E K G+",
+"E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E K G+",
+"E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E K G+",
+"E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E K G+",
+"E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E K G+",
+"G P S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S K f+",
+"4.f+g+h+h+h+h+h+h+g+h+h+g+h+h+g+h+h+g+h+h+h+h+g+h+h+g+h+g+h+h+h+h+g+h+h+g+h+g+h+h+h+h+g+h+h+g+h+g+h+h+h+h+g+h+h+g+h+g+h+h+h+h+g+h+h+g+h+h+h+h+h+g+h+h+h+"};
diff --git a/hdspmixer/pixmaps/empty.xpm b/hdspmixer/pixmaps/empty.xpm
new file mode 100644 (file)
index 0000000..284abc1
--- /dev/null
@@ -0,0 +1,658 @@
+/* XPM */
+char * empty_xpm[] = {
+"76 253 402 2",
+"      c None",
+".     c #404840",
+"+     c #40483F",
+"@     c #202720",
+"#     c #70786F",
+"$     c #707060",
+"%     c #2F2F2F",
+"&     c #A0A0A0",
+"*     c #6F6F6F",
+"=     c #060606",
+"-     c #A0A09F",
+";     c #A09FA0",
+">     c #9FA0A0",
+",     c #9F9FA0",
+"'     c #9FA09F",
+")     c #A09F9F",
+"!     c #9F9F9F",
+"~     c #9F9F9E",
+"{     c #9EA09F",
+"]     c #9E9F9F",
+"^     c #9E9F9E",
+"/     c #9F9E9E",
+"(     c #9F9E9F",
+"_     c #9E9E9E",
+":     c #9E9E9F",
+"<     c #9D9E9D",
+"[     c #9E9E9D",
+"}     c #9D9E9E",
+"|     c #9E9F9D",
+"1     c #9D9F9E",
+"2     c #9D9F9D",
+"3     c #9E9D9E",
+"4     c #9E9D9D",
+"5     c #9D9D9D",
+"6     c #9D9D9E",
+"7     c #9D9E9C",
+"8     c #9C9D9D",
+"9     c #9C9E9D",
+"0     c #9D9D9C",
+"a     c #9C9E9C",
+"b     c #9C9D9C",
+"c     c #9D9C9C",
+"d     c #9C9C9C",
+"e     c #9C9C9D",
+"f     c #9B9C9C",
+"g     c #9B9D9C",
+"h     c #9C9D9B",
+"i     c #9C9C9B",
+"j     c #9B9D9B",
+"k     c #9B9C9B",
+"l     c #9B9B9B",
+"m     c #9B9B9C",
+"n     c #9C9B9B",
+"o     c #9A9C9B",
+"p     c #9B9C9A",
+"q     c #9B9B9A",
+"r     c #9A9C9A",
+"s     c #9A9B9A",
+"t     c #9A9B9B",
+"u     c #9A9A9A",
+"v     c #999B9A",
+"w     c #999B99",
+"x     c #999A99",
+"y     c #9A9B99",
+"z     c #999A9A",
+"A     c #9A9A99",
+"B     c #989A99",
+"C     c #999A98",
+"D     c #989A98",
+"E     c #999999",
+"F     c #999998",
+"G     c #989998",
+"H     c #989999",
+"I     c #989997",
+"J     c #989A97",
+"K     c #979998",
+"L     c #979A98",
+"M     c #979A97",
+"N     c #979997",
+"O     c #979897",
+"P     c #989898",
+"Q     c #989897",
+"R     c #979898",
+"S     c #969897",
+"T     c #969997",
+"U     c #979896",
+"V     c #969896",
+"W     c #979996",
+"X     c #969996",
+"Y     c #969796",
+"Z     c #969797",
+"`     c #979797",
+" .    c #979796",
+"..    c #969795",
+"+.    c #969895",
+"@.    c #959895",
+"#.    c #959796",
+"$.    c #959896",
+"%.    c #959795",
+"&.    c #959695",
+"*.    c #959696",
+"=.    c #959794",
+"-.    c #959694",
+";.    c #949695",
+">.    c #949795",
+",.    c #949794",
+"'.    c #949694",
+").    c #949693",
+"!.    c #939693",
+"~.    c #939694",
+"{.    c #949594",
+"].    c #949593",
+"^.    c #939593",
+"/.    c #939594",
+"(.    c #929593",
+"_.    c #939592",
+":.    c #939493",
+"<.    c #929592",
+"[.    c #929493",
+"}.    c #929492",
+"|.    c #939492",
+"1.    c #929491",
+"2.    c #919592",
+"3.    c #919492",
+"4.    c #919491",
+"5.    c #919591",
+"6.    c #929591",
+"7.    c #919391",
+"8.    c #929392",
+"9.    c #929391",
+"0.    c #919392",
+"a.    c #909391",
+"b.    c #919490",
+"c.    c #919390",
+"d.    c #909390",
+"e.    c #909490",
+"f.    c #909491",
+"g.    c #909291",
+"h.    c #909290",
+"i.    c #919290",
+"j.    c #8F9290",
+"k.    c #8F9390",
+"l.    c #90938F",
+"m.    c #90928F",
+"n.    c #8F938F",
+"o.    c #8F928F",
+"p.    c #90918F",
+"q.    c #8F9190",
+"r.    c #8F918F",
+"s.    c #8F928E",
+"t.    c #8E928F",
+"u.    c #8E918F",
+"v.    c #8F918E",
+"w.    c #8E928E",
+"x.    c #8E918E",
+"y.    c #8E908E",
+"z.    c #8E918D",
+"A.    c #8D918E",
+"B.    c #8D908E",
+"C.    c #8E908D",
+"D.    c #8D918D",
+"E.    c #8D908D",
+"F.    c #8C908D",
+"G.    c #8D908C",
+"H.    c #8C908C",
+"I.    c #8C8F8C",
+"J.    c #8D8F8C",
+"K.    c #8C8F8D",
+"L.    c #8D8F8D",
+"M.    c #8B8F8C",
+"N.    c #8C908B",
+"O.    c #8C8F8B",
+"P.    c #8B8F8B",
+"Q.    c #8B8E8C",
+"R.    c #8C8E8B",
+"S.    c #8B8E8B",
+"T.    c #8C8E8C",
+"U.    c #8B8E8A",
+"V.    c #8A8F8B",
+"W.    c #8A8E8B",
+"X.    c #8B8F8A",
+"Y.    c #8A8E8A",
+"Z.    c #8A8F8A",
+"`.    c #8A8D8A",
+" +    c #8A8D8B",
+".+    c #8B8D8A",
+"++    c #898E8A",
+"@+    c #8A8E89",
+"#+    c #898E89",
+"$+    c #8A8D89",
+"%+    c #898D89",
+"&+    c #898D8A",
+"*+    c #898C89",
+"=+    c #8A8C89",
+"-+    c #898C8A",
+";+    c #898D88",
+">+    c #898C88",
+",+    c #888D89",
+"'+    c #888D88",
+")+    c #888C89",
+"!+    c #888C88",
+"~+    c #888C87",
+"{+    c #878C88",
+"]+    c #888B88",
+"^+    c #878C87",
+"/+    c #878B88",
+"(+    c #888B87",
+"_+    c #878B87",
+":+    c #868B87",
+"<+    c #878C86",
+"[+    c #878B86",
+"}+    c #868A86",
+"|+    c #878A86",
+"1+    c #878A87",
+"2+    c #868B86",
+"3+    c #868A87",
+"4+    c #858A86",
+"5+    c #868A85",
+"6+    c #868B85",
+"7+    c #858A85",
+"8+    c #858B85",
+"9+    c #858B86",
+"0+    c #858986",
+"a+    c #858985",
+"b+    c #868985",
+"c+    c #868986",
+"d+    c #848985",
+"e+    c #848A85",
+"f+    c #858984",
+"g+    c #858A84",
+"h+    c #848984",
+"i+    c #848A84",
+"j+    c #848884",
+"k+    c #858884",
+"l+    c #848885",
+"m+    c #848983",
+"n+    c #848883",
+"o+    c #838984",
+"p+    c #838883",
+"q+    c #838884",
+"r+    c #838983",
+"s+    c #838783",
+"t+    c #838784",
+"u+    c #838882",
+"v+    c #828882",
+"w+    c #828783",
+"x+    c #828883",
+"y+    c #838782",
+"z+    c #828782",
+"A+    c #828781",
+"B+    c #818782",
+"C+    c #818781",
+"D+    c #828682",
+"E+    c #818681",
+"F+    c #818682",
+"G+    c #828681",
+"H+    c #808681",
+"I+    c #818680",
+"J+    c #808781",
+"K+    c #818580",
+"L+    c #818581",
+"M+    c #808680",
+"N+    c #808581",
+"O+    c #808580",
+"P+    c #7F8580",
+"Q+    c #80857F",
+"R+    c #7F8680",
+"S+    c #7F857F",
+"T+    c #80867F",
+"U+    c #7F867F",
+"V+    c #80847F",
+"W+    c #7F847F",
+"X+    c #808480",
+"Y+    c #7F8480",
+"Z+    c #7E847F",
+"`+    c #7E857F",
+" @    c #7F847E",
+".@    c #7E847E",
+"+@    c #7F857E",
+"@@    c #7E837F",
+"#@    c #7F837F",
+"$@    c #7F837E",
+"%@    c #7E837E",
+"&@    c #7E847D",
+"*@    c #7D837D",
+"=@    c #7D847D",
+"-@    c #7D847E",
+";@    c #7E837D",
+">@    c #7D837E",
+",@    c #7D827D",
+"'@    c #7C837C",
+")@    c #7D837C",
+"!@    c #7C827D",
+"~@    c #7C837D",
+"{@    c #7D827C",
+"]@    c #7C827C",
+"^@    c #7B827C",
+"/@    c #7C827B",
+"(@    c #7C817C",
+"_@    c #7B827B",
+":@    c #7C817B",
+"<@    c #7B817B",
+"[@    c #7B817C",
+"}@    c #7A827B",
+"|@    c #7A817B",
+"1@    c #7B817A",
+"2@    c #7A817A",
+"3@    c #7B807B",
+"4@    c #7A807B",
+"5@    c #7B807A",
+"6@    c #7A807A",
+"7@    c #7A8079",
+"8@    c #798179",
+"9@    c #79817A",
+"0@    c #798079",
+"a@    c #79807A",
+"b@    c #7A7F79",
+"c@    c #797F79",
+"d@    c #797F7A",
+"e@    c #7A7F7A",
+"f@    c #787F79",
+"g@    c #797F78",
+"h@    c #798078",
+"i@    c #788079",
+"j@    c #787F78",
+"k@    c #788078",
+"l@    c #797E78",
+"m@    c #787E78",
+"n@    c #787E79",
+"o@    c #777E78",
+"p@    c #787F77",
+"q@    c #787E77",
+"r@    c #777F77",
+"s@    c #777E77",
+"t@    c #777F78",
+"u@    c #787D77",
+"v@    c #777D78",
+"w@    c #777D77",
+"x@    c #767E76",
+"y@    c #767E77",
+"z@    c #777E76",
+"A@    c #767D77",
+"B@    c #777D76",
+"C@    c #767D76",
+"D@    c #757D76",
+"E@    c #767C76",
+"F@    c #767D75",
+"G@    c #757D75",
+"H@    c #757C76",
+"I@    c #757C75",
+"J@    c #767C75",
+"K@    c #757C74",
+"L@    c #747D75",
+"M@    c #747C74",
+"N@    c #747C75",
+"O@    c #757B75",
+"P@    c #757B74",
+"Q@    c #747B74",
+"R@    c #747B75",
+"S@    c #747C73",
+"T@    c #747B73",
+"U@    c #737C74",
+"V@    c #737B74",
+"W@    c #737C73",
+"X@    c #737B73",
+"Y@    c #747A74",
+"Z@    c #747A73",
+"`@    c #737A74",
+" #    c #737A73",
+".#    c #737B72",
+"+#    c #727A73",
+"@#    c #737A72",
+"##    c #727B73",
+"$#    c #727A72",
+"%#    c #727B72",
+"&#    c #737972",
+"*#    c #727973",
+"=#    c #727972",
+"-#    c #727A71",
+";#    c #727971",
+">#    c #717A72",
+",#    c #717972",
+"'#    c #717A71",
+")#    c #717971",
+"!#    c #717871",
+"~#    c #717872",
+"{#    c #727871",
+"]#    c #717970",
+"^#    c #717870",
+"/#    c #707970",
+"(#    c #707971",
+"_#    c #707871",
+":#    c #707870",
+"<#    c #050505",
+"[#    c #6D6D6D",
+"}#    c #000000",
+"|#    c #666666",
+"1#    c #606860",
+"2#    c #506050",
+"3#    c #5D5C5D",
+"4#    c #202F2F",
+"5#    c #1F261F",
+". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ ",
+"# $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % ",
+"& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & * = ",
+"& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & * = ",
+"& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & * = ",
+"& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & * = ",
+"& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & * = ",
+"& & - & & & ; & > - & - ; - - & & & & & & & & & & & & & & , & & & & & - > & > & & & & & & - , & - > > & & & & & & & & & & & & & > & - & & & & & & & * = ",
+"& & & ' ; & & ' ; & ' - & > > ) ; & ) > , & & & ) & & & & - & & & > > & ; > - & & ; - ) - & & & > ; - & & - ) ; & & - & ; ; & & & & ; & > > & & & ) * = ",
+"- > & ) & ; & - > > & ; > & ; & - & > , > ) > & - & - > & , & & > - ; > ! ' & & > & & ! - & - & ; & - & - & - > & ) ' ) - & > ' & ' > ; & - > & ' & * = ",
+"- - ! - ' & ' ' ) & ; ) - > & & ; & - ) & > - - > - - > & ' ! & ' > ! ; ) & & > > - > & > , > ) - ; & > ' - ! ; ) ! ' & - ' ) ' ) - & ; - - & & , & * = ",
+") > - - ) ! ; ) ! ! , , - ' ) > - ' ) ) - ' ; & , & , ! ' ) ! ; & > & , - ) ) & ! & & ! - ' ! ! , - ' ! ; > - ' ' ' ! ' , - > , > ' ! ) ' , - ! > ) * = ",
+") , ! , - ! ! , ) - ! , ! > > & - ) ; ; ' ; ) ! - , ! ' ) ' ' ' , > ; ! > > ) ) ; ' , - ) , , & > - > ! ! ' - ! ! ) ! > - ; ' ; ' ! , , ) ! ) ) ' ! * = ",
+"' ! ) ! ; , - ' ! , ' ' ; , ! ! ' ' ! ! ! ! ' > - ! - ! , ' ! ! ) & ' ! ' ) ! ' , , ' ! ' - > > ! ! ' ) ! ! ' ! ! ' ' ! ! ! , - ! ' ) ' ! ' ) ! ! > * = ",
+"' ! ! ! ! ' ! ' ) ! ) , ! ! ! ! ! ' ! ' ! ' ! ! ' ! ! ' ' , ! ' ! , - ! ! , ! ! ! ! ' , ! ' ) ! ! ' ! ' ! ! ! ! ) ! ' ' ! ! ! ! ' ' > ! ! ! ' ! ) ! * = ",
+"! ~ ! ! ! ! ! ! ' ' ! ! ! ' ! ! ! ' ! ! ! ! ! ! ! ! ! ! ! ! ! ! ~ ! ! { ! ' ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ' ! ! ! ' ! ! ! ] ! { ! ! ! ! ! * = ",
+"! ! ! ! ! ~ ! ! ! ! ! ~ ] ! ! ! ! ~ ~ ! ! ! ! ! ! ! ! ~ ~ ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ' ! ! ] ! ~ ~ ~ ! ] ] ! ! ! ! ! ] ~ ~ ! ! ! ' ! ^ ] ] * = ",
+"! ~ ! ] ! ! ! ~ ! ! ! ! ] ] ! / ! ] ( ! ! ( ! ! ! ! ! ] ( ! ~ ! ~ ~ ! ~ ] ] ] ! ! ! ! ~ ! ] ] ^ ~ ( ! ( ! ^ ] ] ] ! ! ~ ~ ! ~ ! _ ] ] ! ~ ! ] ! ! ! * = ",
+"^ ! ^ ] ~ ] ! ! ! ^ ! ^ ! / ^ : ~ ~ ] ! ~ ^ ! ~ ~ ^ ^ ! ! ^ / ^ ( ! ! ( _ : ] ^ ! ~ ! ! ! ! ! ! ] ! ^ ! ~ ^ ! ! ~ ! ] ( : / : _ _ ] ] ^ ! ] ! ] ! ! * = ",
+"] ( ~ _ ^ : ^ ] _ _ ^ ^ ! ~ ! ] _ ~ / _ _ ~ ! ^ : ^ ] ] _ ^ ! : / ] ^ ! ] ( ] ^ ^ / ! ] _ ^ ~ _ : ~ / ~ ] ^ ] ! ~ ^ ^ / ] / ] ] ^ ~ ] ] : ] _ ! ] ^ * = ",
+": ^ : _ _ ^ ^ ^ ! ] ^ ^ ! ^ ] / _ _ : ~ ~ / ~ : _ : _ ! : _ ~ ^ : ^ : _ ] / ~ _ ^ _ ~ ( ^ ^ ! ^ ^ _ _ _ ~ _ ^ ^ _ ] _ _ ~ ! ^ : _ _ ~ _ ^ _ ] ! ^ ^ * = ",
+"_ ! ^ ] _ _ ^ _ ^ ^ : ! ^ ^ ^ _ _ _ _ : _ _ ~ _ : _ / ^ ^ _ / ^ _ ] / _ ~ ] _ _ ~ _ _ ~ _ _ _ _ _ ^ ^ _ ] : ^ ] / ^ ^ ~ ^ _ _ / : ^ _ ] : ^ ^ ^ : _ * = ",
+"_ _ ~ ^ _ ^ ^ _ ~ ^ _ _ _ _ _ _ _ ^ ^ _ _ ^ _ ^ _ _ _ _ ^ _ _ _ _ ^ _ _ ^ _ ^ _ _ _ ^ ^ ^ ^ _ / _ _ ^ _ _ ^ ^ _ ] ^ _ ^ _ _ _ ^ ^ _ ^ _ _ ^ _ _ ] ^ * = ",
+"< _ _ _ _ [ } ^ _ _ } [ [ _ ^ ^ } ^ ^ _ ^ _ _ ^ ^ _ _ [ _ _ _ _ ^ _ ^ ^ _ _ ^ } _ _ ^ _ ^ _ _ [ _ _ _ _ _ _ _ _ _ ^ _ [ ^ _ _ _ _ | [ [ _ _ ^ _ _ } * = ",
+"[ [ [ < _ _ [ _ _ 1 _ 1 ^ _ _ _ _ _ 2 _ } ^ ^ _ _ < } _ _ _ _ ^ _ < _ ^ ^ [ _ } } [ _ | _ } _ _ } _ } _ _ _ _ _ ^ _ | } | _ _ [ _ ^ _ _ [ [ } _ ^ [ * = ",
+"_ _ } _ _ [ _ _ [ _ _ _ } < [ } _ _ < < } [ < [ _ } } _ } } } [ < _ } [ _ < _ [ _ _ _ _ _ _ [ [ } < } _ [ < < } } _ < } } _ } _ [ } < } _ [ _ _ [ < * = ",
+"< _ 3 [ [ } 4 [ } 3 } _ _ } 5 < 5 _ _ } [ [ } [ < < < [ } [ < < 4 5 [ 6 [ [ 4 < } [ 5 _ } _ < 5 < } [ } [ [ < [ < } < } } } } } 5 [ 4 _ 5 _ [ < _ 4 * = ",
+"5 5 5 < < [ [ < < [ 4 < [ 5 < 6 < < } _ [ < < < 6 < } 5 4 } [ < } [ 5 } < < 5 < 5 < [ } < < [ < 5 5 5 } < 5 _ _ < < 5 } < 4 _ < _ < < 6 [ < < < < [ * = ",
+"< < 4 [ < < 5 [ } < 5 5 < < 4 5 } < 5 5 < } 5 5 5 } < < } < 4 5 } < < 5 [ } < < 6 5 < < < < 5 } 5 5 < < 5 } [ < < < < < 5 } 5 5 < [ < < < } } < < 5 * = ",
+"< < < 5 5 5 < < < 7 < 5 5 < 5 < < < 5 5 < 5 5 < < < 5 5 5 < 5 < < 5 < < 8 < < < 5 5 < 5 5 < 5 5 < 5 < 5 < < < < 5 < 5 5 < < 5 < < 5 5 < 5 < < 5 < < * = ",
+"8 8 8 5 5 5 5 5 5 8 9 5 5 < < 8 5 5 0 5 5 5 5 5 < < 5 5 < < < 7 < < 8 0 5 < 5 5 0 5 8 < 5 5 8 5 5 5 5 5 8 < < 5 5 5 5 5 5 0 5 5 < 5 5 < 5 < 5 < a 5 * = ",
+"5 5 5 a a 0 8 5 8 5 0 < 5 5 7 < 5 8 0 0 5 < 8 8 5 0 0 9 b 5 8 8 9 5 5 5 < 5 5 0 8 8 5 < 8 5 b 0 9 0 < 7 0 0 5 8 < 5 a 0 5 8 8 8 5 7 5 8 7 5 0 7 0 8 * = ",
+"5 8 5 5 8 < 5 8 b 8 0 5 b b 0 8 b 5 < 5 5 0 5 8 b 8 5 5 0 b 0 0 5 8 8 8 8 5 8 b 8 8 0 8 5 b b b a 5 8 8 5 7 5 b 9 b 5 8 5 8 b 8 8 7 5 8 < 0 0 5 5 b * = ",
+"b b 0 8 0 b b 0 b b b b b 8 b b 8 b b b b b 8 b 0 b 8 0 0 b b 8 b 5 b 0 b 8 5 b b 5 8 b 5 8 b c 8 b 8 8 0 5 8 b b b b 8 0 b 8 0 0 b b d 0 8 e 0 b 0 * = ",
+"b b c b 8 8 b b d b 8 d b b b e 8 0 b b b b d 8 d 5 b b b b 5 b b b 0 b d 0 b 8 b 0 d 5 d b 0 b b 0 b b 8 d b d 0 b b b b 8 c d b b b 8 d b 0 d 8 b * = ",
+"d b d d b b b d d b b b b b b b b b d d b b b b d b d b b b b d b b d b b b b d b b b b d b b b b d b b d b d b d b b d b b b d d d b b b b d b b b * = ",
+"b b b f g b b d d b d b h b b b d i d b b i d d d d b f b i b d h d b b b b d b j d b d f d i h b f h b h d b b d d b b d d b d d b b d d d f d d d * = ",
+"b f b i g d d k d d i d g f k b d i b g d i i g h d h f g i i i i b g f b k h i b i h h i b d d f b b b d d d k j h f i g k j b b b d j j i d b d d * = ",
+"k d h k i k g f d d i d i i d i d k i f i k k k d f h i d d k h h f i i h f f k j h i d d d i i f i i f i i k g f j d h i d k i f i k b d b d f i i * = ",
+"k i f i f k i i k g k k i f j k k j k k k k i k f i k k k j k i k j k d f k k f i k d k j k d i k k i d g d i k k k k b d k f i j f f k d k j d f k * = ",
+"f k k k i k k k k k k k k i i k f k k k k k k k l d m k l f k k i k d k f f f k k k k k k k k k k k k k n k k k k m k k k i k k k k f k k f k k k k * = ",
+"k k k k k k k k l k k k k k k k k l o k k k l k k k k k o k p k k p k k l k l k k p k k k k l k l k l k k k o k k k k l k k p k k k k k k k k k k k * = ",
+"k o k o k k k k q l p k l k l o k r q o l s k o l k o k k k o k k k q k k l o l l o k k k o k k p r l k k k k t o k l o q o s l k k k k l o k p k k * = ",
+"k l q t k k r l p l k q s k l k r t k s k t p o l k t l k l s o l r l t k q t o t s l q k l o s o k s r s t k p q k p k t l p l o o s q o q t s l q * = ",
+"p q o s s p p s s s l s o s s q q l o o l t r q r q s r l r r t o p k s t l q s t s p s s r t p s t r t q o r t t r o r p s s r s s t p s s l t o r * = ",
+"s r q p q s s s s s s s s l r s s s q s t t l s s s t s s s r s t p s s o s s t s s s t s q s s q s s q s s s s s s s s q q s r s s s s t q s q s s * = ",
+"s s s r s s s q s s s s s s s s s s s s t s s s s q s s s s s s s s s s s t s s s s s s s s q s s s s s s s s s s s s t s s s s s s s s s s s s s s * = ",
+"s s s u s s s v s s w x y s s s u s s s s s y y s v s s y s y s y s y s u s y v v y z u v s s v s y v y s s v u s s s u s s s s y u s s v w u v s s * = ",
+"v u s y s u s v s u v u y u A A y x s z x s s v s A w z s u w v s u s A w v v y v w v v s y y s u s s s y s w A v v z A s v s s s u u y A z v w A u * = ",
+"s s A x v y v s y y w w u A y w s v y v x w s s y v x s v y y x s A s y s v w v A u w s u s z u s z v s x u A z x y v z v w A A z x u w y y u v z y * = ",
+"x x z A w w x x x x v y x x x x x v z A x x x x x x x A A A A w w z z x x y x w A A w w x x w x x u z v w x x A x w u x w z y x z A w A x x x x v v * = ",
+"x x x x x x x x x x x x x x w x w x v x x x A w x x x x x x z x v x x w x x x x x y x x w x x z x z x x x x x x x x x x x x x x x x x x x x x x x z * = ",
+"x x B C C x x x x B x B x C C B x x x x C x x w x C x x x x x x x x x x x B B x B C D C w x x x C x x x x x x x x x x x x w x B x D D C x w x x D x * = ",
+"D x B x C C E C x x B B x x D x x F C B B B x C x C C B B x B B D C C E x B C B x B C B x B x B B C B x C D D x B x B x B B x x D x E x B x B x x D * = ",
+"C x C B D D D C C C x x D C C C G D B x x G D B B B G E x D C C x x D B D H x D D x C x D B x B B x B F x D H D C x C E B D H D B C E B H x F C x C * = ",
+"C G G D H D D D D D C G D C B F C G D B G C D D D B D D G G G C G B D G F C G G B F G F H G C G x G D D D E G D E F G F E B G D F G G G F F G G D G * = ",
+"D F D G G D B G G G G G G G G G H D G G B D G G G G F F G D G D G G G G G D H G G D G G D G D D G D G G G G D G D D G G G D G D D H D H G G D G D G * = ",
+"I G G G G G G G G G G J J D K G G I G K G I G G G D G G D D G I G I L G G K G G I G K I I K K K G G K G G G L G G D G G K K M I G G G J I G G G G G * = ",
+"G N K K N N N N I N G G K N K G N G I N G G K N L I K G G K G I G G K I I G G G G I K K G I G N I G K N N G G I K N K G N N N G K K G I I N N G G G * = ",
+"K K O N K I G N I N N K N N N P N I O K P P G K N G K K G Q N I K I N N I K G I I N O K N Q I K R I O K N O I I Q I R K G K R N I I K K Q P P K Q R * = ",
+"N N O Q G I O N O N I K I N O N O N K N I R O O N N N I Q P O N O N G N N N O N N I I O O K R N N N O N I N N N I G Q N N I N I N N Q N N R N I K N * = ",
+"O O N N N O N O N N O O O O O O O O O O N O O O N O O N O O O O N O N O O O O N N O O O N O N O O N O O O N O N N N N O O O N O N N N O O O O O N O * = ",
+"S T S O O O O U O V O W N U N U V W U O S U O U O O O N O O N S W S N W N N O O O N O O O O O O T N N S O O O W N T O O S S W O V O U U O S T O X V * = ",
+"U V W V V U V V S S O O U N S O S S U T S S O U O T S V S W S S O S O U O U S V S O S O O N O S S S U U S S S O U U U U S S U O O N V U V U V V T V * = ",
+"S U S V Y V S S V O V V V V S V S Z V U O V S O V V U V V O S U V V V Y U U O V V U S ` V V O U O U S U O V V O V V O V V V U S V V V U S S V V O V * = ",
+"V U V V Y V S Y  .V Y V V V V V V V V V V V Y V U V S V S U V V Y S Y U Y V V V Y V V S V Y U V S V V V  .Y V V V  .V V U V Y Z Y V V S V  .V Y V Y * = ",
+"Y V V ..V Y Y +.Y V V V +.V Y V V ..V @.Y +.+.#.Y V V V V Y Y Y V V Y Y V Y Y V Y Y Y V Y V Y V Y +.Y Y V Y V +.V #.V V V Y V $.Y #.Y Y Y V ..Y V V * = ",
+"V #.#.$.Y +.Y ..Y Y +.$...V Y Y $.+.V Y #.Y ..V Y Y #...Y #.#.V V Y #.Y #...V Y V $.#.V ....#.V ......#.Y +.#.V V Y #.Y Y ..V V ..Y #.Y V Y ..+.V V * = ",
+"%.@.#.$.V +.......@.Y #.Y #.#.%.%...%...@...%...%.@.%.%.V %.#.Y %.%.Y V #...Y $.%.%.Y #.@.#.Y ..Y ........+.Y +.%.#.@.%.Y @...Y $.Y %.#.Y %...%.Y #.* = ",
+"%.%.#.%.#...%.%.%.%.%.#.%.%.%.#.@...Y %...#.....Y Y %.#...%...%.%.%.%...%...#.....%...%.#...%...%.#...%.%.%.%.%...+.Y %.%.#.Y ..%.%.#.%.%.#.%.%.%.Y * = ",
+"&.%.%.%.%.%.%.%.%.&.%.%.%.&.%.%.%.%.%.%.#.%.%.&.%.%.%.&.#.%.%.#...%.&.&.%.%.%.%.&.%.%.%.%.%.%.&.%.%.%.%.%.%.%.%.%.%.%.%.%.%.*.%.%.%.%.%.%.%.%.&.%.%.* = ",
+"%.%.%.=.=.%.%.=.-.=.%.%.=.%.;.%.%.&.%.-.&.&.%.&.%.&.&.=.%.%.&.%.%.%.&.=.&.-.=.%.;.%.%.&.;.%.%.;.%.%.>.&.%.&.,.%.,.&.&.&.=.%.&.%.'.%.&.%.&.%.>.&.%.%.* = ",
+"&.&.%.'.=.'.>.-.%.&.;.=.'.&.,.=.>.&.=.=.&.'.'.>.=.&.>.=.>.%.'.'.%.%.%.%.%.,.>.'.=.,.&.%.%.>.%.-.=.&.=.,.;.'.'.>.&.%.>.=.;.-.>.'.;.%.&.,.;.;.&.-.&.,.* = ",
+"%.-.-.,.=.'.'.%.'.-.'.,.'.%.>.,.;.;.'.'.;.>.;.'.'.-.;.'.=.&.;.,.-.'.>.'.'.-.&.-.=.>.>.'.=.,.'.'.%.=.'.-.'.'.'.-.;.'.'.,.-.=.>.'.-.=.,.&.'.'.'.'.'.,.* = ",
+",.'.'.-.'.;.'.,.'.'.'.'.;.,.'.'.'.'.'.'.'.,.'.'.'.'.'.'.,.'.'.'.'.'.'.'.'.'.,.'.-.'.'.'.-.'.'.'.'.'.'.-.'.'.;.-.,.'.'.'.;.'.'.'.'.'.'.'.'.'.,.'.-.'.* = ",
+"'.).).'.!.'.'.'.'.'.~.'.'.).'.{.~.{.~.'.'.'.'.'.'.'.'.'.).'.'.'.{.).'.'.'.'.'.'.'.'.'.).'.~.{.).~.].'.'.'.'.'.'.).).'.'.).'.'.'.'.'.'.].'.).'.'.~.'.* = ",
+"~.'.^.).'.'.'.!.).~.'.).).{.{././.~.].'.~.{.~.'.'.{.!.'.).].].'.).~.'.~./.{.'.'.].^.!.'.{.).~.'.).'.'.!./.'.~.'.!.'.'.~./.{.]./.].'.!.).'.^.'.{.^.'.* = ",
+"~.).{.).~.'.].^.'.!.^.'./.^.~././.!.~.!.!.!./.'.).^./.~./.).~.'.^.^.{.{.~.^.].~.~./.).~./.^.~.~.!.~.{./.'.].).!.'.~.].).!.^.~./.].~.'.!.~.^.!.'.).^.* = ",
+"{.!.^.).^.^.^.!.^.!.].'.~.!./.^.!.{.^.^.^.^.{.^.^./.!.^.^.!.^.^.!.!.).^.!.^.!.!.^.^.].~.!.].!.!.^.!.!.^.^.^.^./.^.^.).^./.^.!.^./.^./.].~.'.!.!.!.!.* = ",
+"^.!.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.(.^.^.^.!.^.^.^.^.^.!.^.^.^.^.^.^.(.^.^.^.^.^.^.^.^.^.^.(.^.^.^.^.^.^.^.^.^.^.^.^.^.^.!.!.^.^.^.^.^.^.^.(.^.* = ",
+"_.^.^.(.^._._.^.(.^.^.:.^.(._.^.^.<.^.^.(.^.<.^.<.^.(.^.(.(.^.(._.^.^.^._._.(.(.^.^.^.(.<.^._.^.(.<.(.(._.^._.^._.^._.(.^.^.(.^.(.^.<.(.^.^.^._.(.[.* = ",
+"(._.^.:.(.<.[.(.^.(.}.[._.(.^.(._._._.(.:.<.(.[.(.^.}.<.[.(._.[.<._.|.}.^.(.^.}.<.[.(.(.[.:.[.<.(.[._.:.[.^.^._.}.(.(.^.^.^.:._.<.[.<.|.(.(.[.(.[.^.* = ",
+"<.}.<.<.<._.}.<.<.<.}.<.}.<.<.:.(.[._.(.<.[._.}._.}.<.<.}._.}.}.^._._.}._.}.}.<.}.<._.<.^.:._.}.^.<.}.<.}.<.}.}.|.(._.^.(.:.<.^.<.<.[.<._._.|.<.<.}.* = ",
+"<.}.<.}.}.}.}.<.}.}.}.|.<.}.}.<.<.}.}.}.}.}.}.}.}.<.}.}.}.}.}.}.}.<.}.}.<.<.<.}.}.}.}.<.<.<.}.}.<.}.<.(.}.}.}.}.|.<.}.}.<.}.<.}.}.}.<.<.}.}.}.}.}.}.* = ",
+"}.}.}.1.2.1.}.1.}.}.3.}.1.}.}.<.4.}.3.}.}.}.}.}.3.3.}.<.1.1.2.}.4.<.}.5.3.6.}.1.}.1.}.}.1.}.1.}.}.1.4.}.}.3.}.1.5.4.4.}.<.3.3.3.1.}.}.4.2.}.3.<.<.}.* = ",
+"4.1.}.}.}.1.3.}.1.1.3.4.}.}.}.}.}.}.4.1.3.4.1.}.}.4.3.4.}.7.1.}.4.}.4.1.}.1.3.}.1.}.4.7.8.3.3.4.1.1.1.1.1.}.3.4.}.}.9.3.1.}.3.1.3.}.1.4.}.4.1.}.1.}.* = ",
+"0.3.1.1.}.0.4.4.1.4.4.4.7.9.4.4.1.1.3.7.8.8.4.7.4.4.0.4.7.8.7.4.3.4.4.1.1.3.1.9.8.4.4.1.3.4.7.4.1.3.}.7.1.3.1.4.7.7.4.3.4.3.8.4.}.4.4.7.}.1.4.1.1.1.* = ",
+"4.7.7.7.4.7.4.7.3.1.4.4.7.7.4.1.7.7.4.7.1.7.4.7.3.4.7.4.7.4.7.7.7.4.9.4.7.7.4.7.7.7.7.7.7.4.7.4.4.4.4.7.4.3.7.4.4.4.7.4.9.4.4.4.3.4.4.4.4.1.7.7.4.4.* = ",
+"4.a.b.7.7.7.7.7.7.c.b.a.c.7.c.7.c.4.c.7.4.7.4.a.7.4.7.7.7.a.b.7.7.a.4.c.7.c.7.a.4.7.7.d.7.7.7.a.b.e.7.7.7.4.c.e.d.4.4.7.c.a.7.7.7.7.7.e.4.7.7.b.4.c.* = ",
+"e.c.a.a.a.d.a.7.d.4.a.f.d.c.7.d.7.7.a.e.d.d.a.c.7.d.d.a.c.a.d.a.4.4.7.f.7.d.7.a.7.d.b.7.7.7.c.a.7.7.f.c.d.c.e.a.7.c.c.a.7.d.7.a.a.a.7.4.f.7.d.7.7.d.* = ",
+"a.a.d.c.d.d.d.a.d.c.d.7.a.d.d.a.d.d.7.7.7.d.d.g.d.a.h.d.d.d.d.a.7.7.a.d.7.d.a.d.7.d.d.d.a.d.h.a.d.c.d.h.7.d.d.d.d.7.d.d.a.d.a.d.a.d.h.d.c.c.a.7.c.d.* = ",
+"d.d.d.h.h.h.d.h.d.g.d.d.d.d.d.h.d.a.h.d.d.h.d.d.i.d.d.d.d.d.a.d.d.d.h.a.a.d.d.d.h.d.d.d.d.d.d.h.d.g.d.d.h.h.d.d.h.d.h.d.d.d.d.d.d.h.i.d.d.h.h.h.d.d.* = ",
+"h.j.k.d.h.j.h.j.h.d.d.d.l.d.h.d.l.l.d.m.d.h.l.h.h.h.n.d.l.h.d.h.k.d.k.h.d.d.d.m.d.d.h.k.h.j.m.k.d.h.h.l.h.d.d.k.h.d.h.d.h.m.l.d.l.k.d.k.h.l.d.m.d.m.* = ",
+"k.k.h.m.j.h.l.d.m.j.d.j.m.h.j.o.j.h.k.m.k.m.n.j.j.o.d.d.j.m.h.n.o.d.m.o.d.h.h.k.h.j.o.d.h.d.l.l.j.o.h.j.d.o.n.m.k.k.m.h.d.j.h.j.k.h.j.j.j.h.l.j.j.d.* = ",
+"o.h.n.o.n.o.o.o.j.m.j.j.h.h.m.j.o.o.j.o.o.j.h.o.o.j.o.o.k.o.h.h.o.o.o.j.h.o.m.j.n.m.h.j.o.j.o.h.m.m.n.o.j.j.o.m.o.o.j.j.j.o.o.o.j.o.n.m.o.o.o.o.n.m.* = ",
+"o.o.j.p.o.o.o.o.o.o.o.j.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.m.o.q.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.m.o.m.m.o.o.o.j.o.o.o.o.o.o.o.r.o.q.o.o.o.o.o.m.o.j.o.m.o.* = ",
+"o.o.o.s.o.r.r.r.o.r.r.r.o.t.u.r.o.o.o.t.s.o.u.o.o.o.o.o.o.r.o.o.s.r.o.o.o.o.t.u.o.o.o.o.r.o.o.s.o.o.u.v.o.o.o.r.r.r.o.w.v.r.o.r.o.r.r.r.o.o.t.r.o.o.* = ",
+"o.t.r.t.s.v.r.u.w.w.r.x.x.t.w.v.v.x.o.r.r.r.w.o.v.s.o.w.o.w.u.r.u.u.w.o.o.o.w.r.u.u.s.x.o.s.r.v.r.u.x.w.s.s.w.w.s.r.v.v.r.u.r.o.r.s.s.o.r.u.u.r.t.r.* = ",
+"u.x.u.u.t.x.t.x.u.x.w.x.u.u.t.u.o.s.s.v.x.t.w.v.x.x.x.v.w.x.v.x.r.v.v.w.t.w.u.s.o.u.u.w.v.w.r.x.t.t.o.t.r.v.x.x.v.v.x.u.u.x.t.u.w.v.w.v.x.w.w.x.x.x.* = ",
+"u.x.x.v.x.x.x.x.x.x.v.u.x.v.x.x.w.x.x.v.x.u.x.u.x.x.w.u.x.x.x.w.v.x.x.x.x.r.x.x.x.x.x.w.x.x.x.r.x.x.x.x.x.x.x.x.u.r.x.x.x.v.x.x.x.u.x.x.x.x.v.x.x.x.* = ",
+"x.x.x.x.y.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.y.x.x.x.x.y.x.y.y.z.x.z.A.y.x.x.A.x.x.x.x.x.x.x.z.x.A.z.x.B.z.x.z.z.x.x.y.z.x.z.x.z.x.x.x.x.B.y.x.x.x.B.x.z.* = ",
+"B.z.y.A.C.A.y.x.B.B.A.z.C.D.C.E.x.C.D.C.z.A.B.z.D.y.C.y.D.D.x.x.z.D.x.C.z.A.z.z.z.E.E.A.B.B.x.D.x.x.z.A.A.A.x.z.E.D.D.A.C.x.D.y.x.x.B.E.A.E.x.x.A.x.* = ",
+"B.D.A.x.D.C.E.D.E.D.z.A.B.C.E.B.z.A.C.E.E.E.B.D.D.E.D.A.D.E.B.C.A.z.D.D.B.x.x.x.E.D.E.z.A.E.D.y.A.z.x.x.D.A.z.E.E.B.A.z.A.D.D.B.E.C.A.B.E.D.D.C.y.C.* = ",
+"E.B.D.E.E.D.z.E.A.E.E.B.E.E.B.D.E.B.E.E.E.E.E.D.E.D.D.E.E.B.E.E.E.E.E.E.E.D.B.E.E.E.E.E.C.D.E.E.E.E.E.B.E.C.E.D.E.E.C.B.E.D.E.E.B.E.E.E.E.D.C.E.E.D.* = ",
+"E.F.G.E.E.E.E.E.E.E.E.E.E.E.E.D.E.E.F.E.E.E.E.E.G.E.G.E.E.E.E.E.E.F.E.F.E.E.F.E.F.G.G.E.E.E.E.E.E.E.E.E.E.E.D.E.E.E.E.E.G.E.E.F.F.H.E.F.E.E.E.G.E.E.* = ",
+"G.F.G.E.H.G.H.E.H.E.E.H.I.J.E.E.G.E.E.K.G.H.I.K.E.E.G.H.E.G.E.F.G.G.F.H.E.E.F.E.H.E.L.K.K.G.G.I.L.L.F.H.E.F.K.E.E.E.H.G.H.G.F.G.F.G.G.J.K.G.G.F.F.K.* = ",
+"G.G.F.H.I.F.F.H.I.L.J.H.E.J.E.G.G.E.K.K.I.H.I.G.K.H.H.H.F.I.G.F.H.I.L.H.G.F.H.H.I.H.K.L.F.J.H.G.G.G.J.I.H.H.I.L.K.I.I.F.G.H.H.G.G.J.H.H.H.J.H.K.I.H.* = ",
+"H.I.I.H.G.I.H.I.I.I.I.I.I.H.G.I.I.H.I.I.I.I.H.I.F.F.I.F.H.I.I.I.I.I.H.I.H.I.I.L.G.I.I.I.I.H.G.I.H.H.H.I.I.I.I.H.F.I.G.I.I.I.H.I.I.H.I.H.J.I.H.H.I.H.* = ",
+"I.H.M.H.N.I.I.I.N.O.I.I.I.I.I.H.M.I.P.I.I.I.I.I.N.O.I.I.I.P.H.H.I.I.P.I.I.I.M.I.O.I.I.O.H.I.O.I.H.I.I.H.I.I.I.I.O.O.I.H.I.I.I.M.I.I.I.I.H.I.I.P.O.I.* = ",
+"I.I.I.M.I.O.P.I.M.I.I.M.P.O.M.O.O.I.I.I.I.O.O.I.O.M.I.I.I.M.Q.M.I.I.P.O.M.O.I.M.O.O.I.O.I.I.M.I.M.I.P.I.O.P.M.M.P.M.I.P.O.M.P.I.M.M.I.M.I.O.M.O.P.O.* = ",
+"P.P.O.R.Q.R.S.P.M.R.P.P.O.O.O.O.O.P.I.I.P.O.M.I.O.I.M.M.R.P.P.M.P.P.O.P.S.M.O.O.S.P.O.P.S.P.R.M.M.P.P.P.P.P.P.O.P.O.P.O.P.R.P.T.P.M.T.P.O.P.P.Q.Q.P.* = ",
+"S.P.S.O.P.P.S.P.S.M.P.S.P.P.P.P.S.S.P.P.P.S.S.R.S.S.S.P.P.P.P.P.P.P.S.S.P.P.S.O.S.P.S.P.P.P.P.P.S.S.Q.P.S.P.P.S.S.S.P.P.P.S.I.P.S.P.P.S.P.S.P.P.S.M.* = ",
+"S.S.S.U.P.V.S.S.S.W.S.P.V.P.X.P.S.W.S.W.P.P.X.S.S.P.S.S.S.Y.U.S.W.S.S.W.W.U.W.S.S.Y.S.X.S.Y.P.P.P.S.W.U.X.S.P.S.Y.S.S.S.P.U.P.P.P.S.S.Y.S.W.X.W.P.S.* = ",
+"W.S.Y.W.Y.Y.S.Y.Y.U.Y.S.Y.Y.S.S.Y.S.W.S.Y.P.W.S.S.S.U.Z.W.Y.W.Y.S.S.S.P.S.Y.X.U.S.Y.Y.Y.W.S.W.W.S.W.U.W.Y.W.S.S.W.S.P.S.S.Y.P.S.Y.X.W.S.U.S.Z.W.W.Y.* = ",
+"W.Y.Y.Y.W.Y.U.`.U.Y.W.W.Y.Y.Y.S.U.Y.Y.U.S.Y. +U.U.W.Y.`.W.W.Y.W.Y.`.W.Y.U.U.Y.U.U..+S.Y.Y.U.Y.Y.W.Y.Y.Y.W.Y.U.W.U.U.W.W.U.U.Y.W.Y.Y.Y.U.U.W.Y.Y.Y.W.* = ",
+"Y.Y.Y.Y.Y.Y.`.Y.`.`.Y. +`.Y.`.Y.Y.Y.Y.`.Y.Y.Y.U.Y.Y.Y.Y.`.Y.Y.Y.`.Y.Y.Y.Y.`.Y.Y.Y.Y.U.Y.`.W.Y.W.`.Y.Y.`.`.`.`.Y.Y.Y.Y.Y.Y.Y.Y.Y.`.Y.U.Y.Y.Y.Y.`.`.U.* = ",
+"`.`.Y.`.++Y.++++`.`.@+Y.#+Y.Y.Y.@+$+++`.`.`.Y.@+Y.`.++@+`.++Y.Y.Y.`.`.Y.Y.$+%+%+`.`.`.`.&+Y.Y.@+Y.`.@+Y.++Y.&+Y.`.@+`.++`.$+++++&+Y.@+`.Y.&+Y.Y.`.@+* = ",
+"@+$+%+#+&+%+`.`.&+Y.%+%+&+`.@+$+%+`.Y.%+&+$+&+&+$+%+%+`.`.&+Y.%+++%+`.$+&+`.$+Y.%+%+$+&+&+++`.++$+%+`.`.%+$+`.%+`.&+++Y.#+`.&+@+#+&+`.++$+@+&+`.#+%+* = ",
+"`.%+@+%+%+%+$+++$+%+%+%+%+%+%+%+%+%+%+%+&+$+%+%+%+`.&+%+%+%+Y.%+$+`.`.&+%+#+%+#+#+%+%+%+%+%+%+$+%+`.%+`.%+&+%+#+$+#+%+$+%+&+%+`.$+%+%+$+`.%+%+`.%+$+* = ",
+"%+%+*+%+%+%+%+%+%+%+*+%+=+%+%+*+%+%+%+%+%+%+*+*+*+%+%+%+%+%+%+%+*+%+%+%+%+%+%+$+%+%+$+%+%+%+*+%+%+%+%+%+%+%+%+%+%+%+-+%+*+%+%+%+%+%+%+%+%+%+%+%+%+%+* = ",
+";+%+*+>+%+,+%+%+%+%+*+,+*+;+,+%+%+%+'+%+>+*+>+;+*+)+%+,+%+%+>+%+%+%+*+%+%+*+%+'+%+;+%+*+*+)+;+)+*+*+*+>+*+*+*+%+)+*+)+;+,+%+*+%+%+,+!+%+>+*+%+'+%+>+* = ",
+")+'+;+!+;+,+,+*+*+*+)+!+)+;+%+>+!+;+*+)+%+'+)+%+*+>+%+)+>+!+!+%+;+*+!+;+)+!+*+,+;+%+'+)+;+!+)+,+*+>+*+*+'+>+*+,+>+!+;+)+>+,+!+>+%+*+,+,+)+*+>+*+*+!+* = ",
+">+)+!+!+;+)+'+%+>+*+!+!+>+)+>+!+>+>+!+!+!+'+>+!+!+!+!+,+'+>+!+!+!+>+!+!+)+*+!+>+!+'+!+>+'+!+!+!+!+!+*+>+'+*+;+>+!+;+*+)+,+>+;+!+!+!+!+!+'+'+'+!+)+)+* = ",
+"!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+!+* = ",
+"!+!+~+~+{+]+]+]+]+~+~+^+{+!+!+!+!+!+!+^+!+{+{+/+{+~+{+!+!+~+!+{+{+^+~+~+{+!+]+!+!+!+~+~+]+]+!+!+!+/+]+{+{+!+!+^+!+!+~+~+(+!+!+!+!+{+{+{+^+]+~+!+~+~+* = ",
+"^+(+]+!+/+{+(+~+/+(+_+!+!+~+^+/+{+(+/+_+(+_+_+~+]+~+(+!+~+(+]+]+(+{+_+_+]+^+!+!+_+_+^+/+!+^+(+~+_+^+(+(+(+^+!+!+^+/+(+^+_+/+~+^+~+^+_+~+{+{+!+{+^+]+* = ",
+"^+~+]+{+_+(+(+/+(+_+_+^+_+_+(+_+(+~+_+!+_+(+^+_+_+_+(+^+^+^+_+_+{+^+_+_+_+{+(+^+^+~+_+(+_+_+/+_+_+^+/+~+(+_+_+_+/+~+^+_+^+_+(+/+(+_+(+^+/+^+_+_+^+]+* = ",
+"_+:+_+_+_+_+_+^+_+_+_+_+_+_+_+_+^+_+_+_+_+_+_+_+_+:+_+_+^+_+_+_+_+_+_+_+_+<+_+^+_+_+_+_+_+_+_+_+_+_+_+_+_+_+^+_+_+_+_+_+_+_+_+_+_+_+^+^+_+_+_+^+^+[+* = ",
+"_+_+_+[+_+[+_+[+[+[+_+}+:+|+[+:+_+:+_+[+1+2+_+2+:+_+_+2+_+[+_+_+_+_+_+_+_+:+_+_+_+_+[+:+_+_+_+_+_+[+_+_+[+2+_+_+_+_+:+_+[+:+[+}+_+:+2+[+_+_+[+:+_+_+* = ",
+"1+:+_+_+:+:+2+[+_+1+:+_+:+:+}+3+[+:+_+1+2+_+3+_+:+|+_+2+[+2+:+_+:+}+[+2+1+:+2+_+}+2+_+2+3+:+}+[+2+[+2+_+[+2+|+}+2+[+2+}+[+1+_+2+2+1+2+:+_+}+}+[+3+:+* = ",
+"}+2+}+|+}+:+}+}+|+|+2+3+}+2+}+2+}+}+}+}+2+[+[+2+2+|+}+|+}+}+2+2+}+}+2+2+3+2+}+2+2+}+}+2+}+1+:+}+|+2+}+3+2+|+2+}+_+}+2+2+|+2+2+2+2+}+|+3+}+2+2+}+}+2+* = ",
+"}+2+}+}+}+}+}+2+}+4+2+}+}+5+}+}+2+}+}+}+}+}+2+2+2+2+2+}+4+2+}+4+}+}+}+2+}+4+}+2+}+}+6+}+}+}+6+}+}+}+}+}+}+}+}+}+}+2+}+}+2+}+}+}+}+}+}+}+}+}+5+2+}+}+* = ",
+"4+7+4+}+2+}+5+5+}+5+4+5+}+}+}+8+}+4+4+}+}+4+5+9+4+}+5+4+}+4+5+7+5+}+4+}+5+5+}+}+9+5+5+9+}+4+}+}+5+5+4+}+}+7+5+}+4+5+}+5+5+7+2+4+}+2+}+}+}+4+7+4+}+4+* = ",
+"5+}+7+5+7+4+7+7+5+5+7+7+7+0+a+}+5+4+7+4+7+4+5+}+4+0+}+7+4+7+4+a+5+0+7+a+4+0+5+7+5+b+5+7+c+7+7+4+7+5+5+}+0+4+0+4+5+}+7+5+7+7+7+5+}+5+5+c+4+7+7+}+c+4+* = ",
+"4+7+7+5+4+7+a+7+4+5+b+7+7+5+7+a+4+0+a+a+a+7+4+a+7+7+7+5+a+b+4+7+4+a+7+7+7+7+a+a+4+7+0+7+b+7+7+5+a+a+}+4+4+7+7+a+7+b+a+7+7+7+a+7+7+4+7+}+7+7+b+a+7+5+* = ",
+"a+d+a+7+7+d+a+7+a+7+7+a+a+a+a+e+a+a+a+7+7+a+7+a+a+7+7+a+7+d+7+7+f+a+a+7+a+7+a+7+7+a+7+a+7+a+7+g+7+7+7+7+7+7+7+a+7+d+7+a+a+7+e+7+a+a+a+7+a+7+a+a+a+7+* = ",
+"a+g+f+f+h+7+a+f+a+f+a+d+f+g+a+d+d+h+h+a+7+e+d+d+a+a+f+d+f+d+f+a+d+f+f+a+7+i+d+f+a+d+a+d+h+a+f+f+a+a+d+a+7+h+7+a+d+a+d+d+a+d+h+f+e+a+d+i+h+a+f+d+a+a+* = ",
+"d+f+a+h+h+d+d+d+f+h+a+d+h+h+h+d+h+f+f+a+h+f+d+d+h+h+f+d+a+a+d+h+a+e+h+f+f+h+f+h+h+d+a+a+a+h+f+f+d+d+h+d+h+h+h+d+d+h+h+h+h+d+h+a+f+d+h+a+h+h+f+h+f+f+* = ",
+"j+j+h+k+h+h+j+l+d+h+j+f+h+h+h+h+l+l+d+h+h+h+d+j+h+h+a+h+j+f+h+h+h+h+h+h+h+h+h+h+d+j+h+f+k+j+l+f+f+h+h+j+h+d+h+h+j+h+j+k+h+d+h+j+k+h+h+h+j+j+j+h+k+h+* = ",
+"h+j+h+j+j+h+h+j+j+m+j+h+h+h+h+m+h+j+j+h+j+j+h+h+h+h+j+h+j+j+h+h+h+h+h+j+n+j+o+m+h+j+n+h+m+j+h+n+h+h+m+h+n+h+h+j+j+j+h+h+j+h+m+m+m+h+h+n+h+h+m+h+h+h+* = ",
+"n+o+n+j+m+j+h+j+n+j+n+j+j+m+h+n+p+n+j+q+j+h+m+r+p+j+m+h+h+q+o+h+n+n+j+h+h+n+m+j+r+h+j+j+m+j+h+j+h+h+h+h+m+o+q+h+j+o+j+j+m+j+q+m+j+o+q+h+n+r+o+o+h+p+* = ",
+"j+p+j+q+p+p+p+r+n+n+p+n+p+n+q+n+p+n+q+p+p+j+m+p+p+n+j+n+q+n+p+p+p+q+j+p+n+n+q+p+j+p+p+h+p+p+p+o+p+j+q+j+p+n+n+p+o+p+n+o+q+p+p+p+m+p+j+p+p+q+p+p+p+p+* = ",
+"p+p+p+p+p+p+p+p+q+n+p+p+p+p+p+p+p+p+p+p+n+q+p+p+j+p+p+p+p+p+q+p+p+p+p+q+p+p+p+p+p+p+s+p+n+p+p+n+p+q+p+p+p+p+p+p+q+p+p+p+p+p+p+p+s+p+t+s+p+p+q+p+p+p+* = ",
+"s+u+s+s+p+v+p+p+s+p+s+p+p+p+s+s+p+p+p+p+s+p+p+p+s+s+p+p+p+p+p+u+p+s+s+p+s+p+p+p+p+p+p+s+p+p+w+w+x+p+u+p+p+p+p+s+p+p+p+p+p+p+p+p+s+s+w+x+p+x+s+s+u+x+* = ",
+"p+y+p+u+s+w+s+w+s+s+z+z+s+x+u+w+s+u+v+y+u+z+s+v+p+p+y+p+w+z+p+p+u+p+w+p+x+v+s+s+p+p+u+p+s+v+u+v+w+u+s+w+u+p+y+s+x+p+s+p+z+p+y+w+y+y+p+z+p+p+s+s+z+w+* = ",
+"w+v+u+v+v+w+y+u+s+p+w+y+s+s+y+z+z+s+v+y+z+z+s+v+v+x+y+s+z+v+z+v+z+y+z+p+s+w+s+z+v+u+w+z+y+w+u+y+w+z+u+v+w+z+v+s+z+y+z+w+y+v+x+u+s+v+s+y+z+x+v+z+x+v+* = ",
+"y+z+z+z+w+z+z+v+y+z+z+z+z+z+z+z+w+z+y+z+s+s+z+z+v+z+z+z+z+z+z+z+v+z+z+z+z+p+z+z+z+w+z+w+z+z+z+z+v+v+w+z+z+z+z+z+z+w+z+z+u+z+z+z+y+z+w+w+z+z+z+w+z+z+* = ",
+"A+z+z+B+z+z+z+z+A+z+z+z+z+z+z+z+z+z+z+z+z+B+z+z+z+z+B+z+B+A+z+C+z+z+z+D+z+z+z+z+B+z+A+z+z+D+B+z+D+z+z+z+z+z+z+C+z+z+z+z+z+A+z+B+z+z+z+z+z+z+D+z+z+z+* = ",
+"B+z+B+B+A+B+B+B+A+D+E+z+E+C+D+z+E+A+E+F+G+G+B+G+F+B+G+D+B+z+D+C+B+z+z+G+B+A+D+G+A+z+C+A+z+z+B+z+z+B+C+A+z+A+A+B+C+B+D+A+D+A+A+A+B+D+B+G+B+G+D+C+B+z+* = ",
+"E+D+F+E+F+G+F+G+E+E+F+z+B+E+C+G+A+C+z+C+G+G+z+C+C+G+E+F+D+C+G+A+G+C+z+B+C+E+D+C+E+B+E+D+B+B+B+G+A+C+C+z+B+E+G+B+B+B+G+E+E+E+E+C+C+F+C+C+A+E+G+F+E+D+* = ",
+"E+A+F+E+E+z+E+E+E+C+B+E+B+F+E+F+E+E+F+E+C+G+E+C+E+C+C+E+E+E+E+E+C+C+E+E+E+D+E+E+E+E+G+G+E+A+B+G+E+B+D+E+E+A+E+C+E+E+C+E+F+C+E+F+E+E+E+E+E+E+G+B+F+E+* = ",
+"E+E+H+E+E+E+E+H+E+C+H+H+E+E+E+I+E+E+E+E+I+E+E+E+E+E+E+E+E+C+E+C+E+E+I+E+C+E+E+E+E+I+E+E+E+E+C+I+E+E+E+C+E+E+E+H+E+E+E+E+H+E+E+E+E+H+J+E+E+E+C+E+H+E+* = ",
+"H+E+H+I+K+E+K+I+H+H+L+M+E+E+E+K+I+H+E+I+N+E+L+H+L+K+H+E+E+E+E+E+H+M+H+L+E+H+H+E+E+H+E+H+E+H+I+M+I+H+I+H+L+H+H+I+H+I+L+E+M+E+I+E+H+I+I+H+H+M+M+H+E+N+* = ",
+"O+E+I+I+H+H+I+H+L+H+O+M+M+L+I+N+I+M+H+I+K+E+H+M+M+N+I+M+N+H+O+M+M+M+E+E+H+M+H+H+O+I+H+E+I+M+I+O+O+M+E+O+O+N+M+H+L+M+I+E+H+M+H+M+N+I+I+N+H+M+M+E+M+O+* = ",
+"O+E+O+O+K+M+M+E+K+O+O+O+K+M+M+H+M+M+O+O+O+O+N+O+O+O+O+O+K+O+O+M+N+M+M+O+O+M+M+M+O+M+I+O+O+M+M+K+M+M+N+M+O+O+O+O+K+M+K+O+M+K+O+M+N+O+M+I+M+N+H+M+O+O+* = ",
+"O+M+P+O+O+M+O+M+O+Q+O+Q+O+O+M+O+O+O+R+O+O+M+O+O+M+O+S+M+M+O+M+O+P+O+P+O+O+O+O+O+Q+M+O+O+O+O+P+M+M+O+O+O+M+O+O+O+O+O+P+O+O+T+O+O+M+M+O+P+O+M+O+O+M+P+* = ",
+"O+O+P+P+O+O+O+Q+Q+S+Q+O+S+O+O+T+P+Q+O+Q+P+O+O+T+Q+O+P+O+O+P+S+T+P+P+T+Q+P+P+S+O+O+O+O+P+O+O+Q+O+O+P+P+O+O+O+Q+Q+Q+S+Q+Q+O+O+O+Q+O+U+Q+S+O+O+S+O+O+O+* = ",
+"S+V+P+P+Q+O+Q+V+O+S+Q+P+W+O+P+P+Q+P+O+S+S+P+W+P+P+O+S+Q+S+S+X+Q+S+P+O+Q+P+P+Q+S+W+X+Q+P+S+Q+P+S+O+P+P+O+Q+O+P+Q+P+Q+S+X+P+P+P+Q+O+P+P+W+S+P+Q+P+S+Q+* = ",
+"S+Q+Q+S+S+O+Y+W+W+Q+W+S+S+S+W+W+S+W+W+Q+P+W+W+P+W+S+O+V+P+Q+Y+S+O+S+W+S+S+O+P+Q+Y+S+W+P+Y+S+S+Q+S+S+S+W+P+W+W+S+Y+W+S+S+S+Q+V+P+W+S+W+P+Q+P+W+S+S+S+* = ",
+"Z+S+W+S+W+W+W+W+S+W+S+W+S+S+W+W+S+S+W+`+S+Z+W+`+S+`+W+W+W+S+W+W+S+S+W+W+ @S+S+ @W+S+W+W+S+S+W+ @W+W+S+S+S+W+W+W+W+W+W+S+W+W+W+`+W+S+W+W+W+W+S+W+W+W+* = ",
+"W+ @W+W+Z+ @W+ @S+Z+W+.@W+W+ @`+ @Z+W+W+ @W+W+.@ @ @W+ @.@.@`+S+ @W+W+ @+@W+Z+W+W+W+W+W+ @W+ @ @Z+Z+W+W+Z+ @S+ @W+S+W+S+W+ @S+S+W+.@Z+ @Z+W+W+ @W+W+* = ",
+".@Z+.@W+ @ @W+.@Z+ @ @.@W+ @.@W+W+ @Z+W+.@Z+.@.@Z+.@Z+Z+ @ @Z+W+W+.@ @.@Z+.@.@ @ @W+ @.@Z+ @.@W+ @.@ @W+.@W+W+ @ @Z+.@.@ @.@W+Z+ @W+ @W+Z+.@Z+Z+W+W+* = ",
+".@.@@@.@.@.@ @.@Z+ @#@$@ @W+@@%@Z+.@.@.@.@.@.@.@.@ @.@.@.@ @Z+.@.@%@.@$@.@.@Z+.@Z+.@Z+.@%@Z+ @.@.@.@.@.@ @Z+%@.@ @.@.@%@.@ @ @.@.@.@.@.@Z+$@ @.@.@.@* = ",
+".@%@.@.@%@.@.@.@.@%@%@.@%@.@.@.@%@.@.@.@&@.@%@%@.@.@.@.@%@.@.@.@.@.@.@%@%@.@.@.@%@.@.@.@.@.@.@.@%@.@.@%@.@.@.@.@%@.@.@.@.@%@.@%@.@&@.@%@.@.@.@.@%@.@* = ",
+"&@.@*@=@%@-@%@;@-@%@;@;@%@&@&@&@;@-@%@;@-@%@;@&@>@-@%@.@&@%@;@.@;@>@.@.@;@%@>@%@*@.@.@*@>@%@.@%@.@.@%@;@;@%@%@>@%@>@-@%@&@%@%@.@%@%@.@.@%@.@-@.@&@.@* = ",
+";@%@&@%@%@;@;@>@.@>@%@.@*@.@%@*@&@*@*@%@*@>@;@;@-@%@;@&@%@-@=@>@%@%@>@=@*@;@*@>@*@*@>@&@%@>@=@-@*@%@.@.@=@>@;@;@>@%@>@*@=@%@-@%@.@-@%@&@;@>@=@&@-@*@* = ",
+";@>@;@*@%@*@*@*@*@>@*@*@>@*@*@*@>@*@;@;@*@;@*@*@*@*@>@>@*@*@;@*@=@*@*@>@*@=@*@%@;@*@>@;@>@*@*@;@-@>@*@*@*@>@*@*@*@>@.@*@*@;@*@;@*@%@>@&@>@*@*@*@*@*@* = ",
+",@*@*@*@>@*@*@*@*@*@*@*@*@*@*@;@*@*@*@*@*@*@*@*@*@*@*@;@*@,@,@*@*@*@*@*@,@,@,@*@*@*@,@*@*@*@*@*@*@*@*@*@*@;@*@*@*@*@*@,@*@*@>@*@*@*@,@*@*@,@>@;@*@*@* = ",
+"*@'@)@*@*@,@,@)@)@!@,@*@,@~@,@~@*@,@~@*@*@)@)@,@~@{@*@,@*@*@*@,@*@,@*@*@)@,@~@*@~@,@,@!@*@,@*@*@*@,@!@*@*@*@,@,@)@]@*@,@*@,@*@*@~@,@*@*@,@~@{@{@,@,@* = ",
+"{@)@!@*@]@,@]@'@'@,@)@~@!@,@!@{@{@'@*@,@]@!@!@{@]@]@*@~@)@!@*@]@*@,@!@,@*@*@~@*@)@{@~@'@!@~@{@*@,@,@]@)@)@{@)@]@~@]@{@{@{@~@!@*@]@*@'@!@'@)@,@~@!@!@* = ",
+"]@]@]@'@!@'@!@,@!@]@,@!@'@'@]@]@]@]@{@]@]@{@]@!@]@]@'@)@]@!@)@]@]@{@'@!@{@!@,@]@{@]@]@*@!@]@)@,@,@]@]@'@!@!@,@{@]@]@]@{@]@!@)@)@]@*@~@]@'@!@]@{@)@]@* = ",
+"{@{@]@]@]@{@!@!@]@]@{@]@]@]@]@]@{@!@'@,@{@]@]@{@]@!@]@]@{@]@!@]@]@]@]@]@]@{@]@]@]@)@!@]@]@]@]@]@]@]@]@]@]@]@]@]@]@]@]@]@'@]@]@]@'@]@]@]@]@]@{@'@]@]@* = ",
+"]@]@]@^@]@]@]@]@^@]@]@]@]@]@]@^@]@]@]@/@(@]@]@_@^@]@^@]@(@_@]@]@^@]@]@]@]@(@/@:@/@(@^@]@]@]@/@]@]@^@]@]@/@]@]@]@]@]@]@(@]@(@]@]@]@^@]@]@]@]@]@]@]@/@* = ",
+"]@]@/@:@]@<@_@]@<@:@<@/@(@]@(@]@^@]@(@[@^@]@^@]@]@]@[@]@]@<@]@^@/@^@/@[@:@]@]@^@^@]@_@[@^@:@^@[@(@/@]@]@]@]@^@:@/@<@(@/@:@^@(@_@]@(@(@]@]@]@(@]@]@^@* = ",
+"<@[@]@/@_@(@_@_@_@^@[@_@<@:@:@<@_@[@_@[@:@<@[@(@_@/@<@^@]@[@_@_@/@(@[@_@_@:@:@<@<@_@^@]@^@^@<@:@[@^@<@:@:@^@^@<@:@<@(@[@]@]@<@<@<@_@^@]@_@^@:@/@_@_@* = ",
+"<@/@<@:@<@[@^@[@<@^@<@:@(@_@:@<@<@[@<@_@<@_@:@<@[@^@<@_@[@<@/@[@<@<@<@/@:@^@/@/@<@_@_@_@:@:@<@<@_@<@<@_@_@:@<@<@:@:@^@<@<@<@_@^@[@^@_@_@^@_@/@/@<@<@* = ",
+"_@_@<@<@<@<@<@<@<@<@_@<@<@<@<@<@<@<@<@<@<@_@<@<@<@<@}@<@<@|@<@<@<@<@_@<@_@<@<@_@<@_@<@<@1@1@<@<@<@|@<@<@<@<@|@<@<@<@<@<@<@<@<@<@<@_@<@_@<@|@<@<@<@<@* = ",
+"<@1@<@<@<@1@|@|@|@<@|@<@|@<@<@1@<@<@|@<@<@|@<@<@2@1@1@|@<@<@<@<@<@1@1@1@<@|@<@<@<@1@1@|@1@<@<@<@3@3@<@<@2@1@1@|@|@<@<@|@<@|@1@<@1@<@<@<@|@|@<@1@4@2@* = ",
+"|@1@5@2@4@3@1@2@4@6@|@|@<@1@1@3@<@2@<@5@3@1@4@1@2@5@2@2@|@3@<@3@2@<@|@<@5@<@2@<@<@5@4@3@<@|@1@|@2@4@1@1@2@2@5@2@<@1@3@2@<@|@2@|@4@3@2@5@<@1@5@2@5@5@* = ",
+"6@<@4@1@2@|@4@2@2@3@<@6@2@1@2@6@2@2@4@2@|@1@6@1@6@3@2@2@6@<@<@2@6@2@3@6@1@4@4@2@2@2@1@|@|@6@1@2@1@3@5@2@6@2@2@1@6@5@6@<@1@6@2@1@2@2@2@1@2@2@|@2@2@5@* = ",
+"6@2@2@6@2@5@6@1@4@6@6@2@6@2@2@2@2@6@2@6@6@2@6@2@2@2@4@6@2@2@4@1@6@2@|@6@6@6@2@2@4@6@2@5@6@2@2@2@2@6@2@6@6@6@2@2@2@6@6@6@6@2@2@|@6@6@6@2@6@5@2@6@6@4@* = ",
+"7@6@7@6@6@2@8@6@2@6@2@6@6@6@2@6@7@6@6@2@6@6@6@6@6@6@6@6@2@7@6@6@9@6@2@6@7@6@6@6@6@6@6@9@6@6@6@6@6@6@6@6@6@6@6@2@6@6@2@2@6@6@6@0@a@9@6@6@6@6@6@6@6@2@* = ",
+"7@a@7@6@a@6@a@0@0@0@a@6@0@a@0@7@7@a@a@6@6@6@6@7@7@0@6@6@6@a@7@6@a@6@7@6@a@6@6@7@a@7@a@6@2@6@6@a@6@7@7@7@6@a@a@6@6@7@a@0@a@7@7@a@a@6@0@a@0@a@a@a@7@6@* = ",
+"a@0@a@0@0@0@0@b@0@a@0@0@b@0@a@c@6@6@d@a@a@7@0@0@a@c@0@c@7@0@7@6@7@0@a@0@0@b@7@6@7@6@a@0@0@7@c@7@e@a@0@0@a@0@b@a@c@0@6@7@0@c@c@a@a@0@6@a@6@e@7@0@0@0@* = ",
+"0@7@0@0@0@0@0@6@0@6@c@0@c@c@0@0@0@7@0@0@7@7@0@c@7@c@0@c@0@c@a@7@c@c@d@0@0@0@7@7@0@0@b@7@0@a@7@c@6@0@c@0@7@7@6@0@c@c@c@c@c@c@a@a@0@6@0@e@0@b@a@0@e@7@* = ",
+"c@c@c@0@0@c@c@0@c@0@0@0@0@c@0@c@c@c@0@0@c@c@0@0@0@c@0@c@c@c@0@c@c@c@c@0@0@c@c@0@0@c@0@c@c@c@0@c@c@0@0@0@c@c@c@0@c@c@c@0@0@0@c@0@0@c@c@c@0@0@c@c@0@c@* = ",
+"f@f@g@0@h@c@0@i@0@0@c@0@g@j@f@c@g@0@g@c@c@c@f@j@0@c@c@g@i@c@i@f@c@f@g@c@j@0@c@h@c@0@c@0@h@j@c@f@c@h@c@c@j@f@c@c@c@0@0@k@f@f@f@h@c@g@g@c@0@i@j@c@0@h@* = ",
+"i@j@f@j@j@j@g@f@0@f@g@f@f@g@c@j@c@j@f@0@f@c@f@g@h@j@g@c@f@j@f@g@g@0@0@g@g@g@j@c@0@j@c@c@f@f@g@k@j@c@f@c@0@g@c@g@c@g@g@f@c@c@h@j@c@f@f@c@c@f@j@c@f@g@* = ",
+"g@g@f@j@g@g@c@g@j@f@g@j@l@g@g@j@j@j@f@c@g@f@j@m@f@f@j@g@j@g@g@g@j@j@f@j@c@c@c@j@j@g@c@f@g@f@g@g@j@g@f@g@g@f@g@g@c@f@f@j@j@g@f@g@g@l@f@f@j@c@f@m@c@g@* = ",
+"m@f@j@j@j@j@m@j@j@j@j@g@f@j@j@j@f@j@g@m@j@j@j@j@m@m@j@j@j@j@j@j@j@j@j@j@f@j@f@j@l@j@j@j@m@j@j@j@m@j@j@m@j@m@j@j@j@j@l@f@j@j@j@j@m@f@m@f@n@f@j@j@g@j@* = ",
+"m@j@j@j@j@m@j@j@j@j@j@m@j@j@j@j@j@j@j@j@j@j@j@j@j@j@j@m@j@m@j@j@j@j@m@j@j@j@j@m@j@j@j@j@m@m@j@o@j@j@j@j@j@j@j@j@m@j@j@m@j@m@j@m@m@j@j@j@m@j@p@j@m@j@* = ",
+"m@j@j@m@m@q@j@m@m@o@r@q@j@j@m@s@s@j@p@s@p@m@t@m@m@o@t@j@p@o@m@t@q@j@o@m@m@j@m@j@j@m@j@q@j@o@r@t@m@q@s@s@t@m@m@j@t@t@j@t@j@q@m@s@m@j@q@m@m@m@o@r@m@m@* = ",
+"q@q@o@q@q@t@m@o@j@j@o@s@s@s@m@j@o@p@m@o@j@r@r@s@q@o@q@r@q@q@m@q@o@q@p@q@o@t@q@q@j@o@m@s@q@r@t@p@o@q@q@q@q@o@o@s@m@o@t@t@o@o@q@m@m@q@m@q@s@m@q@s@o@s@* = ",
+"r@s@q@q@s@s@q@q@s@p@s@s@o@s@s@o@m@q@s@s@s@o@s@o@s@q@o@p@p@o@p@q@o@s@s@o@s@q@s@q@o@o@r@q@s@s@s@s@o@s@s@m@m@s@r@s@o@s@q@j@s@m@s@s@o@q@s@s@s@s@q@s@o@q@* = ",
+"q@s@s@s@q@o@s@s@s@s@s@u@s@o@s@s@s@s@o@s@s@s@o@s@s@o@s@q@s@o@s@s@s@s@o@s@s@v@s@s@s@s@s@s@o@s@s@s@s@s@o@q@s@s@s@s@s@s@o@s@s@s@q@s@s@s@o@o@s@s@s@s@s@s@* = ",
+"w@w@s@s@s@s@x@s@s@s@s@y@s@s@s@w@s@s@y@s@s@s@s@s@w@s@s@s@s@s@s@s@s@y@s@s@s@s@w@s@s@s@s@w@s@s@w@z@s@s@s@s@s@w@s@s@s@s@s@s@s@s@s@s@s@s@z@s@s@s@s@s@A@s@* = ",
+"w@w@w@s@w@s@A@y@y@A@s@s@A@s@s@z@w@s@s@w@w@s@s@w@A@s@s@z@z@s@s@y@B@w@s@s@s@z@B@A@s@w@w@A@s@s@w@y@w@y@s@s@s@w@w@w@w@w@B@w@w@s@s@B@y@w@x@w@s@x@w@w@w@w@* = ",
+"x@x@B@A@B@A@w@B@s@y@B@x@s@w@A@z@B@w@s@C@A@s@z@B@y@C@A@A@y@y@B@s@s@s@w@w@z@C@A@A@s@A@w@C@z@y@B@s@z@B@z@A@A@y@w@x@B@s@A@A@y@w@z@s@A@z@w@C@z@z@y@w@A@w@* = ",
+"s@A@s@C@A@C@A@B@w@C@C@C@A@C@B@s@w@w@B@x@A@C@A@B@s@B@x@x@z@C@C@A@C@A@A@A@C@C@A@C@A@y@C@x@C@x@w@A@A@w@z@w@C@y@C@B@A@s@x@C@A@x@x@w@C@s@B@z@y@A@C@C@C@B@* = ",
+"A@C@C@x@x@C@x@C@C@C@C@C@C@C@C@C@C@C@x@A@C@C@C@C@B@x@C@x@C@C@w@C@C@x@C@C@x@C@B@C@C@B@A@C@C@C@C@A@C@C@C@C@C@C@C@C@x@x@C@A@C@B@C@x@C@B@A@C@B@x@C@C@C@B@* = ",
+"C@C@C@C@C@C@C@C@C@C@D@C@C@C@C@C@C@C@C@E@C@E@C@C@C@D@C@C@C@C@C@F@C@C@C@C@D@C@C@E@C@E@C@C@C@C@C@C@F@C@C@C@C@C@C@C@F@C@C@C@C@C@C@C@C@E@C@C@C@C@C@C@C@C@* = ",
+"E@C@F@F@E@C@F@C@C@G@C@D@G@F@D@H@F@C@C@C@C@C@D@E@C@C@C@C@C@C@C@H@F@C@C@D@E@C@C@C@D@E@F@C@C@C@E@G@F@C@C@I@C@J@F@C@G@G@C@C@C@E@E@F@C@F@C@D@C@C@C@C@C@C@* = ",
+"H@D@D@G@G@J@D@F@C@F@C@F@D@E@J@E@F@F@J@E@H@E@H@G@H@F@J@C@I@F@J@C@C@F@C@C@D@G@E@C@H@I@I@G@F@D@H@G@C@F@J@C@G@E@E@C@C@F@E@D@J@C@C@C@H@F@E@D@F@E@D@C@H@C@* = ",
+"J@G@E@J@I@I@E@F@E@G@G@G@C@I@J@G@D@E@I@I@D@F@H@G@H@G@F@I@I@J@G@G@D@C@I@F@I@D@I@G@G@I@C@E@E@H@D@D@F@C@E@H@I@G@F@H@I@D@I@G@C@C@C@E@G@G@J@E@D@F@F@I@J@G@* = ",
+"I@J@I@G@D@E@I@I@H@J@F@E@I@H@G@I@H@I@I@I@I@H@I@G@J@E@I@I@G@G@H@J@G@F@G@I@G@G@G@I@E@I@F@J@I@I@I@J@I@I@I@G@G@G@G@H@G@I@J@I@J@I@J@I@D@E@C@I@I@G@I@G@I@I@* = ",
+"G@I@I@I@I@I@G@G@I@I@I@G@I@I@G@I@I@I@G@I@G@I@I@I@I@I@G@I@I@I@G@I@I@I@I@I@H@I@I@J@G@G@I@I@I@I@I@I@I@G@I@I@G@I@I@I@F@H@G@I@I@G@I@I@I@I@I@G@I@D@G@I@I@G@* = ",
+"G@I@I@I@I@I@I@K@K@I@I@G@I@L@I@M@I@I@I@I@G@I@I@N@K@I@I@I@N@I@I@I@G@N@I@I@I@G@I@I@M@I@I@I@I@I@I@I@I@I@I@I@N@N@I@I@N@N@I@I@I@I@I@I@I@N@I@I@I@K@I@N@M@K@* = ",
+"K@I@M@I@I@K@I@I@I@I@I@N@N@K@O@N@K@K@M@O@K@N@N@I@I@M@I@K@K@I@M@I@M@N@I@P@M@M@K@I@I@N@K@O@I@I@K@I@I@I@K@M@I@I@N@I@M@M@I@K@N@I@N@N@I@N@N@I@I@K@I@I@M@I@* = ",
+"N@N@N@I@I@P@O@K@K@P@I@P@N@N@M@M@N@O@Q@K@N@O@K@N@K@M@M@N@K@K@K@P@N@I@N@N@K@R@M@N@M@K@M@K@K@K@M@P@I@M@M@N@Q@M@I@O@N@P@M@Q@O@N@I@I@I@P@M@I@K@N@I@I@O@K@* = ",
+"R@N@N@M@I@K@R@K@Q@M@N@O@N@M@M@I@Q@I@R@M@N@O@N@Q@R@M@P@M@M@O@M@I@R@K@M@R@N@Q@Q@R@M@I@Q@M@Q@M@K@Q@M@Q@R@I@K@M@I@K@K@R@O@K@K@M@M@Q@P@N@Q@Q@Q@O@P@K@P@N@* = ",
+"Q@Q@K@M@M@Q@Q@N@Q@M@Q@M@Q@Q@P@M@N@O@N@M@P@M@P@Q@M@K@M@M@Q@M@M@M@Q@Q@P@M@Q@Q@Q@K@M@Q@M@N@M@Q@R@M@Q@Q@N@M@Q@Q@M@N@M@M@Q@Q@M@Q@Q@Q@K@M@Q@Q@M@N@M@Q@M@P@* = ",
+"M@Q@Q@Q@Q@Q@Q@Q@M@Q@Q@M@Q@Q@M@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@M@Q@Q@M@Q@Q@M@Q@Q@Q@Q@Q@Q@Q@M@Q@Q@Q@Q@Q@M@Q@Q@Q@Q@Q@Q@Q@Q@Q@M@Q@Q@M@Q@Q@Q@M@Q@Q@Q@Q@Q@Q@M@M@Q@* = ",
+"S@Q@S@T@Q@U@M@V@Q@Q@M@Q@Q@V@Q@Q@V@V@Q@V@Q@V@M@Q@V@T@T@Q@T@Q@T@Q@Q@V@Q@M@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@W@V@T@Q@S@T@Q@Q@Q@Q@M@T@Q@T@Q@T@Q@M@Q@Q@Q@Q@M@Q@Q@* = ",
+"Q@Q@X@Q@V@Q@Q@X@X@X@Q@V@Q@Q@V@X@T@Q@T@T@T@Q@V@Q@Q@X@V@X@Q@X@Q@T@Q@T@V@T@X@V@T@V@Q@X@T@M@X@V@X@V@T@T@M@V@T@Q@Q@V@T@Q@T@U@V@S@V@Q@Q@X@X@Q@V@Q@Q@U@Q@Q@* = ",
+"T@Q@Y@Q@X@T@Z@V@Q@T@Z@T@T@T@X@Q@V@X@V@Q@V@Q@T@X@X@T@Y@X@X@Q@V@V@T@X@V@X@T@V@X@V@V@T@T@T@Q@`@Q@V@T@X@X@X@ #V@V@X@X@Q@V@V@V@V@V@Q@T@Z@V@V@X@Z@T@Q@Q@Z@* = ",
+"X@V@T@V@Q@T@T@X@X@Y@Z@T@X@Q@X@T@V@X@X@Q@Q@T@V@ #Q@V@T@T@X@Q@Z@Q@X@Q@V@X@V@ #Q@X@Q@Q@X@`@Y@Q@ #V@Q@X@T@ #V@X@X@V@`@V@X@T@T@X@X@Y@X@X@T@Q@V@V@X@X@X@V@* = ",
+"T@X@X@X@X@ #X@V@T@ # # # #X@V@`@Z@ #X@X@X@ #X@ #X@T@Z@T@X@X@`@ # #X@X@ #X@ # #X@X@X@X@X@ #X@`@ #V@X@ #X@Z@ #X@Z@ #X@ #T@ #`@ #X@T@ #X@X@ #X@X@ # #V@* = ",
+" # #X@ #X@ #X@ # # # #X@X@X@ #X@ # # # #X@ #X@X@ #X@X@`@ #X@X@ #X@ # #X@X@X@X@ #X@X@ # #X@ # #X@ # # #X@ # # # # #X@X@ #X@X@ # #X@ #X@X@ #X@`@X@ # #* = ",
+".#.#X@X@ #X@+#X@+# #@#@#+#X@ #X@X@@# # #X@ #.#X@ # #X@ # # # #X@ # #+#+# ###.#$#@#X@X@ # #@# # # # #@# # #X@X@ # # #X@X@+# #$#$#@# #.# #X@$# #%#X@+#* = ",
+"X@.#.# #@# # #+#+# # #@# # # # ###+### #@# #@#@###+#X@ #+#$# #.# #X@+#@#+# #+#@#+# #+# #+#+#@### # ###$# #+#X@+#X@+### #X@$# # # #+# ### # #$#.# #@#* = ",
+"+#+#$#%#@#@# #X@ #$#@#X@@#$# #+# # #$#.###+#+#$# #X@$#@#@# # #$#+#@#+#X@$#$# #@# #+#+# #+#+# #+#@# #$#+#$#.#X@X@ # #$# #$#+#@# # #+# #@#.# #X@@# #+#* = ",
+"$# # #$#$#+#@#@#$#$# #+#@#@#$#+#+#$# #$#$#$# #$#+#@#+#$#@# #+# #$#@#@#$#$#+# #$#@#+#@#@#$# #$#@#$#@# #@#@# #@#$#@# #+#@#$#@#$#$#@#@#@#$#$#$#@#$#@#$#* = ",
+"+#$#@#+#&#$#*#*#@#$#*#$#$#+#$#$# #+#$#$#$#$#$#@#@#$#+#$#$#=#$#=#$#+#$#+#$#*#$#@#&#+#+#+#$#$#$#+#$#=#$#$#$#$#$#@#@#@#$#$#$#$#+#$# #$#=#@#$#$#&#$#$#*#* = ",
+"$#+#$#$#=#$#+#$#@#$#$#=#@#@#$#$#=#=#$#$#$#$#$#$#&#$#$#$#=#$#$#$#+#+#$#$#@#$#&#*#=#=#=#=#$#$#$#$#$#=#=#$#+#@#$# #$#$#$#$#=#=#=#=#$#$#$#=#$#$#$#$#$#=#* = ",
+"$#=#$#$#=#=#$#=#$#=#$#$#=#-#$#=#$#=#$#$#$#$#;#=#$#$#$#$#=#$#=#=#$#$#$#$#$#$#$#=#$#=#=#$#$#=#$#>#$#>#=#$#$#$#,#$#$#=#$#$#$#=#$#$#$#$#=#=#$#$#$#$#$#,#* = ",
+"$#>#-#$#,#-#>#-#$#=#=#>#=#'#=#=#$#=#=#$#>#-#=#=#$#$#=#$#=#$#$#=#'#;#=#$#$#=#$#=#$#$#=#$#>#=#=#=#,#-#=#$#=#;#-#,#$#$#$#=#>#$#=#=#=#=#=#=#$#=#,#=#=#=#* = ",
+"=#$#-#;#-#,#'#;#,#=#;#;#'#)#'#$#;#=#,#=#=#'#,#-#=#;#=#=#,#=#$#$#,#=#$#)#,#,#$#-#=#;#,#=#;#;#'#=#,#-#$#-#;#-#$#=#-#,#$#'#=#'#,#;#-#-#=#=#$#$#=#,#=#-#* = ",
+"=#$#,#>#;#;#>#;#;#,#=#=#=#=#;#=#=#-#)#=#;#,#)#)#-#=#=#=#;#)#)#=#,#=#;#=#>#>#=#;#=#$#)#>#)#)#;#;#,#)#-#;#$#'#;#,#,#=#=#-#,#,#-#=#)#)#=#=#,#,#,#)#>#)#* = ",
+",#)#)#;#)#,#)#)#'#$#)#'#;#)#)#;#=#)#)#=#;#)#=#,#'#=#=#'#)#)#)#)#)#-#-#=#,#,#>#=#,#,#=#,#;#)#-#)#)#)#=#=#-#>#)#;#=#)#,#'#,#)#)#;#)#)#)#,#)#'#)#;#)#-#* = ",
+")#)#;#)#)#,#,#)#=#;#=#,#,#,#)#;#,#)#,#)#)#)#)#,#)#,#'#,#,#;#,#)#)#,#;#,#)#)#=#)#)#;#;#;#,#,#,#;#;#)#,#,#)#;#)#;#)#)#)#)#)#=#'#)#;#)#;#)#)#,#)#)#)#>#* = ",
+")#!#)#)#)#)#=#)#)#)#)#)#)#)#~#)#)#,#)#)#=#)#)#;#)#)#;#)#)#)#)#)#!#)#)#;#)#)#)#)#!#)#)#;#;#;#;#,#)#=#)#)#,#)#)#)#)#)#)#)#)#)#)#)#;#,#)#)#)#;#)#)#;#)#* = ",
+")#!#)#)#!#{#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)#,#)#,#)#)#)#)#,#)#;#)#)#)#)#)#)#)#)#)#)#)#)#,#)#)#)#{#)#)#)#)#!#)#)#)#)#!#~#)#)#)#)#)#!#)#)#)#)#)#)#)#* = ",
+"]#)#!#!#]#!#)#)#)#]#)#!#)#)#^#)#/#)#]#]#(#)#)#)#)#)#!#!#!#)#)#!#!#)#)#!#)#!#)#!#)#!#)#!#)#!#]#!#)#)#!#)#]#)#_#)#)#)#!#)#(#)#_#!#!#)#)#]#_#)#)#)#!#(#* = ",
+"(#)#]#!#^#!#)#]#(#^#)#!#)#(#]#)#!#(#)#!#)#)#)#(#^#!#)#_#)#)#!#!#!#!#^#)#!#)#(#(#)#]#^#(#)#!#]#]#_#!#)#_#)#)#!#(#)#)#^#)#)#]#!#_#!#)#)#^#]#)#)#)#)#_#* = ",
+")#)#]#]#)#^#]#!#)#)#)#!#/#:#!#:#!#/#)#:#^#:#/#_#:#)#_#(#)#_#(#)#)#(#^#)#)#)#_#)#!#(#_#!#]#!#^#]#)#]#]#)#)#_#!#]#^#!#]#^#)#(#!#(#!#!#:#^#:#)#_#)#:#(#* = ",
+":#_#)#_#/#/#:#(#_#/#:#(#_#/#]#)#!#!#_#!#^#)#!#:#_#]#!#!#^#_#(#/#^#:#^#_#^#]#)#!#!#(#!#:#)#:#)#]#]#]#!#!#!#^#]#)#_#:#)#)#]#:#:#(#:#_#)#^#/#]#!#^#(#_#* = ",
+"(#_#(#:#^#/#!#_#]#(#:#_#)#)#:#]#)#(#(#(#!#/#!#^#^#_#!#!#!#^#:#_#!#_#/#!#^#:#(#:#/#:#:#_#^#(#(#/#]#)#_#:#]#(#]#_#!#:#!#_#^#^#/#(#!#_#/#(#_#^#_#:#:#_#* = ",
+"]#/#:#:#/#:#:#:#:#:#/#_#!#^#:#:#:#_#^#(#^#^#_#:#/#:#_#:#/#]#_#:#^#:#^#/#/#:#_#]#_#_#(#^#_#]#(#/#^#]#:#/#!#:#!#:#^#:#]#_#!#:#_#_#]#_#!#:#:#]#]#^#_#)#* = ",
+":#^#:#/#:#_#:#:#:#:#_#:#^#/#:#:#:#^#:#:#/#/#!#/#^#:#)#:#:#^#_#/#:#)#:#:#:#:#:#^#^#/#:#:#:#:#_#^#:#:#:#:#:#:#:#(#^#_#^#:#:#:#)#_#:#_#:#:#^#_#:#/#:#^#* = ",
+":#:#:#:#:#:#:#:#/#:#!#(#:#_#:#:#:#_#_#:#:#:#^#_#:#:#:#_#:#:#:#/#:#:#:#^#^#/#:#:#:#^#:#:#:#_#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#^#/#:#^#:#:#:#:#:#/#/#:#:#* = ",
+":#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#* = ",
+":#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#* = ",
+":#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#* = ",
+":#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#* = ",
+":#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#* = ",
+":#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#* = ",
+":#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#* = ",
+":#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#* = ",
+":#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#* <#",
+":#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#[#}#",
+":#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#|#}#",
+"1#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#3#}#",
+"% 4#@ @ @ @ @ @ 4#@ @ 4#@ @ @ @ @ @ 4#@ @ 4#@ @ @ @ @ @ 4#@ @ 4#4#4#4#4#4#4#4#4#4#4#4#4#@ @ @ @ @ @ 4#@ @ 4#@ @ 4#@ @ 4#@ @ @ @ 4#@ @ 4#@ @ @ @ @ 4#@ 5#"};
diff --git a/hdspmixer/pixmaps/empty_2.xpm b/hdspmixer/pixmaps/empty_2.xpm
new file mode 100644 (file)
index 0000000..31ff7b2
--- /dev/null
@@ -0,0 +1,513 @@
+/* XPM */
+char * empty_2_xpm[] = {
+"76 253 257 2",
+"      c None",
+".     c #D1E0E5",
+"+     c #E7F6F9",
+"@     c #F2FFFF",
+"#     c #FBFFFF",
+"$     c #FFFFFF",
+"%     c #C4CACB",
+"&     c #C7D5D9",
+"*     c #BECDD2",
+"=     c #B8C5C9",
+"-     c #AEBDC1",
+";     c #B2BDC2",
+">     c #B5B6B6",
+",     c #A9B5B9",
+"'     c #A2ADB2",
+")     c #A1ACAE",
+"!     c #AAAAAA",
+"~     c #A6A6A6",
+"{     c #A0A0A0",
+"]     c #9CA5A9",
+"^     c #9F9FA0",
+"/     c #939DA1",
+"(     c #A0A09F",
+"_     c #9FA09F",
+":     c #A09F9F",
+"<     c #90928F",
+"[     c #949A9B",
+"}     c #9B9C9B",
+"|     c #9D9E9D",
+"1     c #999A99",
+"2     c #969896",
+"3     c #919391",
+"4     c #959795",
+"5     c #929592",
+"6     c #869194",
+"7     c #8E999C",
+"8     c #8C969A",
+"9     c #8A9395",
+"0     c #848E91",
+"a     c #8C908B",
+"b     c #8E918E",
+"c     c #8C908C",
+"d     c #8D908D",
+"e     c #888B88",
+"f     c #8D8F8D",
+"g     c #8C8F8C",
+"h     c #8B8F8C",
+"i     c #8C8F8B",
+"j     c #898D89",
+"k     c #8B8E8B",
+"l     c #8A8E8A",
+"m     c #8A8D8A",
+"n     c #898C89",
+"o     c #898D89",
+"p     c #888C88",
+"q     c #848B8B",
+"r     c #888C87",
+"s     c #838884",
+"t     c #878C87",
+"u     c #858A86",
+"v     c #868B86",
+"w     c #878B87",
+"x     c #868A86",
+"y     c #858A85",
+"z     c #858985",
+"A     c #848984",
+"B     c #848883",
+"C     c #808880",
+"D     c #828882",
+"E     c #838883",
+"F     c #828686",
+"G     c #818782",
+"H     c #838783",
+"I     c #828782",
+"J     c #808680",
+"K     c #818681",
+"L     c #818581",
+"M     c #808580",
+"N     c #778082",
+"O     c #7E898B",
+"P     c #7D8689",
+"Q     c #7A8386",
+"R     c #7F8580",
+"S     c #D170D1",
+"T     c #C54CC5",
+"U     c #A837A8",
+"V     c #902F90",
+"W     c #757E81",
+"X     c #80887F",
+"Y     c #80857F",
+"Z     c #7F887F",
+"`     c #7D847D",
+" .    c #7F847F",
+"..    c #7E847E",
+"+.    c #7E827E",
+"@.    c #7E837E",
+"#.    c #7D827D",
+"$.    c #7D837D",
+"%.    c #7C827C",
+"&.    c #7B827C",
+"*.    c #7C817B",
+"=.    c #7A817A",
+"-.    c #7A817A",
+";.    c #7B817B",
+">.    c #7A807A",
+",.    c #798079",
+"'.    c #708070",
+").    c #6E716E",
+"!.    c #717678",
+"~.    c #7A7F7A",
+"{.    c #797F79",
+"].    c #787F78",
+"^.    c #727B7D",
+"/.    c #777E78",
+"(.    c #787E77",
+"_.    c #747C73",
+":.    c #767D75",
+"<.    c #767E76",
+"[.    c #777E77",
+"}.    c #777D77",
+"|.    c #767D76",
+"1.    c #747C74",
+"2.    c #757C75",
+"3.    c #757B75",
+"4.    c #747B74",
+"5.    c #737B74",
+"6.    c #747B73",
+"7.    c #727972",
+"8.    c #737B73",
+"9.    c #717971",
+"0.    c #707870",
+"a.    c #6D7679",
+"b.    c #6C7274",
+"c.    c #686E71",
+"d.    c #70786F",
+"e.    c #707060",
+"f.    c #616669",
+"g.    c #696D6A",
+"h.    c #6D6E6D",
+"i.    c #6F6F6F",
+"j.    c #646B6D",
+"k.    c #666966",
+"l.    c #626562",
+"m.    c #5C6365",
+"n.    c #595F61",
+"o.    c #5F685F",
+"p.    c #5B605B",
+"q.    c #5E615E",
+"r.    c #506050",
+"s.    c #494F51",
+"t.    c #545A5C",
+"u.    c #5A5C5A",
+"v.    c #5A5D5A",
+"w.    c #555A55",
+"x.    c #565956",
+"y.    c #575A57",
+"z.    c #555855",
+"A.    c #535654",
+"B.    c #545754",
+"C.    c #525552",
+"D.    c #535653",
+"E.    c #515451",
+"F.    c #515251",
+"G.    c #505350",
+"H.    c #4D5254",
+"I.    c #50534F",
+"J.    c #50584F",
+"K.    c #4F584F",
+"L.    c #4C504B",
+"M.    c #4F544F",
+"N.    c #4D524D",
+"O.    c #4F524F",
+"P.    c #4E514E",
+"Q.    c #4F504F",
+"R.    c #4D504D",
+"S.    c #4B504B",
+"T.    c #405040",
+"U.    c #464A4A",
+"V.    c #494E4E",
+"W.    c #4D4E4D",
+"X.    c #4C4F4C",
+"Y.    c #494E49",
+"Z.    c #4B4F4B",
+"`.    c #4A4E4A",
+" +    c #4A4D4A",
+".+    c #494C49",
+"++    c #494A49",
+"@+    c #484B48",
+"#+    c #444843",
+"$+    c #474C47",
+"%+    c #464A45",
+"&+    c #474A47",
+"*+    c #464946",
+"=+    c #454A45",
+"-+    c #454945",
+";+    c #424842",
+">+    c #434645",
+",+    c #454645",
+"'+    c #444744",
+")+    c #414641",
+"!+    c #434743",
+"~+    c #424542",
+"{+    c #414441",
+"]+    c #404340",
+"^+    c #3E4142",
+"/+    c #6B236B",
+"(+    c #531B53",
+"_+    c #4D194D",
+":+    c #471747",
+"<+    c #3C3E40",
+"[+    c #40423F",
+"}+    c #40483F",
+"|+    c #3B403B",
+"1+    c #3F443F",
+"2+    c #3E413E",
+"3+    c #3F423F",
+"4+    c #3D413D",
+"5+    c #1E2120",
+"6+    c #2D3030",
+"7+    c #363A39",
+"8+    c #393B39",
+"9+    c #3E3F3E",
+"0+    c #3C3F3C",
+"a+    c #393D39",
+"b+    c #3B3F3B",
+"c+    c #373C37",
+"d+    c #363A36",
+"e+    c #303F30",
+"f+    c #333434",
+"g+    c #333433",
+"h+    c #303730",
+"i+    c #242728",
+"j+    c #2A2C2D",
+"k+    c #2F2F2F",
+"l+    c #212E2E",
+"m+    c #222425",
+"n+    c #202720",
+"o+    c #3B143B",
+"p+    c #0F1010",
+"q+    c #1B1C19",
+"r+    c #121212",
+"s+    c #0F1510",
+"t+    c #170817",
+"u+    c #100F0F",
+"v+    c #07090A",
+"w+    c #0A0A0A",
+"x+    c #0D0D0D",
+"y+    c #0E0E0E",
+"z+    c #0F0F0F",
+"A+    c #0B040B",
+"B+    c #01070E",
+"C+    c #040404",
+"D+    c #050606",
+"E+    c #070707",
+"F+    c #060606",
+"G+    c #030303",
+"H+    c #000000",
+"}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+n+",
+"d.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.k+",
+"( ( ( ( ( ( ( ( ( ( ( ( ( ( : : : : ( ( : : : : : : : : : : : : : : : : : : ( ( ( ( ( : : : : : : : : : : : : : : ^ _ _ _ _ ^ ^ : ^ ^ ^ ^ : { { { : i.F+",
+"( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ { { : i.F+",
+"( ^ Z Q.k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+6+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+6+k+k+k+k+k+k+k+6+k+k+k+k+o.^ { { : i.F+",
+"( ^ Z Q.K.K.Q.Q.}+J.T.P.K.1+Q.Q.Q.T.)+J.T.W.K.)+Q.Q.Q.T.}+K.T.W.K.}+Q.Q.Q.T.)+K.T.Q.K.}+Q.Q.J.T.Q.K.1+Q.Q.W.T.}+}+T.T.T.T.T.K.T.}+R.T.Q.}+}+{ { { : i.F+",
+"( ^ Z Q.).k.).l.I.y.l.v.A.k.p.l.q.y.q.q.q.q.F.l.p.l.q.k.z.p.k.k.q.l.).k.q.q.p.y.k.k.k.q.k.q.p.k.v.l.q.q.).q.k.l.q.l.q.D.k.k.q.l.l.u.h.E.P.~+{ ( ( : i.F+",
+"( ^ Z Q.Z.w.L.E.R.B.B.S.N. +x.D.P.P.$+w.#+G.R.-+ +Y.&+=+N.M.Y.u.G.C.R.I.E.z.N.*+N.A.G.X..+z.w.G.@+$+X.A.G.&+{+M.$+L.>+P. +M.D.*+Y.w.X.A.{+d+_ ( ^ ^ i.F+",
+"^ ^ Z Q.q.@+0+>+1+E.>+4+1+3+R.`..+N.$+=+)+C..+P.]+*+ +-+S.a+2+X.P.]+3+4+2+w.;+a+Y.]+'+2+O.-+ +>+4+E.=+-+*+C.$+$+N. +{+P. +Y.M.K.E.|+!+{+&+g+_ ^ ^ : h.F+",
+"_ ^ Z P.y.$+Y.{+-+2+4+M.B.)+P.!+2+=+C.=+S.*+$ $ $ $ $ $ D.B.G.$ $ y.>+Y.E..+$+D.$ $ $ b+A.P.$ $ $ O.!+X.E.O.'+N.;+N.>+&+P.$+N.E.a+E.R.#+!+~+_ ^ _ ^ i.F+",
+"_ _ Z Q.q.B.I.P.z.P.y.0+-+R.C.D.2+Y.Y.E.)+`.$ $ $ $ $ $ K.$+ +$ $ '+.+M.R.X.M.!+$ $ $ `..+ +$ $ $ C.a+~+X.-+ +=+$+#+3+R. +$+2+$+=+4+*+ +>+9+^ : ^ ^ i.C+",
+": ^ Z Q.l.N.E.2+)+X.P.Y.N.a+X.w.*+M.$+$+#+D.~+.+X.$ $ S.=+E. +$ $ B.z.C.B.`.$+)+$ $ $ $ *+$ $ $ $ @+w.P.M.{+N.1+Y.#+3+X. +$+)+Y.w.@+!+'+~+[+: | ^ : i.F+",
+": ^ Z Q.p.@+@+D.M.P.d+@+M.G.x.A.&+-+=+$+#+&+R.O.$ $ &+R.$+S.c+$ $ P.]+;+P.M.=+Y.$ $ $ $ .+$ $ $ $ {+w.X.b+*+Z.E.$+Y.'+&+{+#+;+2+$+-+$+#+*+g+: : : | i.F+",
+"^ | Z Q.w.!+B.>+N.'+ +S.=+$+]+N.d+N.Y.S.)+C.O. +$ $ P.)+1+N.-+$ $ R.`.1+u.C.N.!+$ $ &+$ .+$ ~+$ $ &+E.R.A.@+~+M.;+A.X. +Z.$+$+b+)+!+`.@+*+,+: ^ | ^ i.F+",
+"_ | Z Q.q.{+*+O.M.@+ +y.M.-+.+&+]+D.E.M.$+O.&+$ $ -+X.&+=+v.;+$ $ .+ + +a+A.N.$+$ $ ~+$ $ $ $+$ $ M.z.X.M.*+`.!+N.$+&+8+)+-+`.4+M.=+D.N.0+8+^ : | ^ h.F+",
+": | Z Q.O.`. +M.v.&+Y.E.N.~+X.N. +N.M.1+Y.&+$ $ $ $ $ $ M.E.R.$ $ $ $ $ $ `.`.!+$ $ A.$ $ $ B.$ $ 4+$+O.E.G.G.M.#+2+>+X.C.w.=+M.2+)+N.y.8+0+: | ^ ^ i.F+",
+": ^ R Q.X.Y.]+A.'+P.>+Y.X.*+&+]+X.d+N.Y.S.~+$ $ $ $ $ $ )+1+M.$ $ $ $ $ $ u.K.N.$ $ P.&+$ @+-+$ $ N.@+E.L.D.Y.)+M.!+z.P.Y.Y.$+$+a+{+>+ +~+2+^ | | ^ i.F+",
+"^ | +.R.l.M.w.&+$+@+]+$+-+$+{+'+4+2+M.B.1+P.;+2+#+D.=+P.@+#+Y.!+P.C.P.A.z.C.Z.)+w.!+Y.E.@+@+A.A.O.R.a+C.X.P.]+M.O.)+`.E.P.)+N.;+N.!+*+P.~+2+| ^ : | i.F+",
+"| ^ +.W.E.E.#+X.=+$+v.;+N.O..+S..+b+C.N.$+ +X.>+x.2+X.$+$+Z.P.A.N.O.*+Z.-+G.$+$+c+{+&+X.2+M.$+C.P.!+$+3+0+X.A.1+)+)+]+G..+$+0+P.P.2+1+=+O.j+| | ^ ^ h.F+",
+"| ^ Z K.C.*+a+z.v.N.$+$+N.$+O.*+.+Y.4+c+C.R.R.!+0+'+3+3+Y.Y.)+3+)+G.@+.+A.&+=+#+'+!+ +.+G.@+2+*+.+N.Y.>+-+&+-+$+a+S..+@+c+$+-+*+Y.4+M.L.9+]+| ^ ^ | i.F+",
+"| | Z K.E.$+y.P.@+*+Z.$+)+~+&+'+{+R.=+S.$+M.`.A.!+P.D.R.)+)+-+!+$+X.*+ +R.$+=+M.'+N.M.@+9+]+!+C.'+M.p.@+R.E.Y.Y.1+&+]+-+O.`.S.1+3+|+=+$+[+{+^ | | | i.F+",
+"| : Z K.G.O.(+_+:+:+:+:+:+:+:+:+:+_+U M.=+ +`.G.q.0+!+R.$+;+N.Y.0+@+O.M.=+#+Y.N.$+Y.u.*+ + +*+O.$+#+-+8+3+ +R.;+M.-+Y.'+$+M.P.P.M.#+I.I.2+,+| | ^ | i.F+",
+"| | Z Q.P.X.V V V V V V V V V V V V :+#+1+0+!+&+2+]+!+Y.Y.1+$+=+G.R.3+E.;+-+=+N.X.B.Y. +'+R.G.E.N.v.Y.2+&+4+@+a+;+O..+M.E.S.N.*+Z.Y.;+Y.,+[+| : | | i.F+",
+"| | Z K.P.C./+V S T T T T T T T T o+t+M.u.X.-+P.~+C.'+w.#+d+$+a+&+X.3+{+O.#+a+M.%+#+E.p.~+0+ +R.E.-+b+*+&+P.Z.)+1+$+`.D.G.$+%+w.#+|+M.)+*+k+| | | | i.F+",
+"| | Z Q.p.`./+V V V V V V V V V V o+t+)+@+1+#+D..+v.$ $ $ Y.`.E.O.$ ]+P.$ y.=+M.)+#+R.R.@+ +]+&+]+N.*+&+x.X.M.M.N.Y.!+N.X.)+N.=+-+)+=+4+ +0+| | : } i.F+",
+"| | Z K.B.!+/+V V V V V V V V V V o+t+)+-+&+*+&+4+$ {+v.d+$ `.`.$ X.&+$ X.#+=+D.]+~+ +$+b+N.0+P.@+-+'+'+N.R.`.N.$+4+P.A.Z.)+$+E.N.#+|+R.]+++| | | } i.F+",
+"| | Z Q.D.$+/+V V V V V V V V V V :+t+Y.&+-+R.>+G.$ ]+-+-+$ 3+$ $ $ $ $ $ *+M.=+$+A.a+.+f+a+Y.-+1+~+M..+$+E.P.1+D.Z.D.3+=+B.Y.M.M.z.y.X.,+8+: } ^ | i.C+",
+"| } Z Q.L.P./+V T V V V V V V V V :+t+)+Y.&+>+!+~+$ O.C.$+$ `.0+$ 2+*+$ X.Y.Y.$+a+@+8+N.'+c+N.u.B.$+N.`.N.8+&+;+N.a+&+R.A.Z.-+z.N.M.=+`.E.8+} | | } i.F+",
+"| } Z Q.C.w./+V V V V V V V V V V o+t+Y.G.0+2+'+*+$ *+-+$+$ 8+&+$ .+*+$ @+$+1+y.=+'+]+.+ +*+X.2+X..+R. +O.O.&+$+B.Y.{+@+&+)+S.$+b+B.C.!+'+[+| | | | i.C+",
+"| | Z Q.v..+/+/+V V V V V V V V V :+t+Y.$+E.!+.+@+$ @+P.Z.$ ~+ +$ -+ +$ E.@+1+D.)+R.>+ + +$+$+{+R.d+R.`.P.!+D.M.Y.N.'+P.R.N.w.#+N.=+1+S.8+8+| } | } i.F+",
+"} | R P.G.G./+V T V V V V V V V V o+t+-+`.@+G. +C.P.$ $ $ )+N.{+$ 2+D.$ 2+X.=+=+M.-+P.G.*+0+1+{+C.!+O.v.$+X.M.$+Y.1+@+~+)+1+K.=+)+2+P. +8+++| | } | i.F+",
+"| } Z Q.A.*+/+V /+V V V V V V V /+:+t+1+-+&+O.$+P..+4+*+$+;+ +.+X.N.3+D.*+X.)+M.z.A.*+.+4+N.!+*+-+N.#+E.*+ +N.$+a+3+&+B.#+M.S.S.4+2+4+&+{+8+| } | } i.F+",
+"| } Z Q.p.`./+o+t+t+A+A+A+A+A+A+t+A+t+#+-+]+C.G.{+O.8+M.!+S.)+8+u.@+D.N.O.4+N.)+1+~+E.&+X.B.#+!+O.2+{+~+-+'+'+Z.=+!+@+>+`.|+#+a+w.1+z.~+]+0+} | } } i.F+",
+"} } Z Q.y.N.t+H+H+H+H+H+H+H+H+H+H+H+H+)+Y.=+&+~+D.-+*+1+=+)+S.R.X.|+.+a+O.-+$+;+D.S.G.C.~+b+]+b+E.)+P..+O.Y.X.M.|+$+D.-+'+N.1+4+D.w.~+-+]+[+} } } | i.F+",
+"} } Z Q.x.C.Y.=+S.O.'+$+Y.~+B.*+C.=+M.$+2+1+Z.O.X.a+R.-+D.C.1+)+G.2+@+c+*+@+N.$+E.2+$+C.0+G.{+O.B.$+{+-+ +]+&+Y.O.=+O..+N.E.a+N.|+D. +v.@+2+| } } } i.F+",
+"} } Z Q.w.Z.%+G.N.)+N.)+@+d+*+$+@+b+#+2+Z.x. +&+E.`.2+N.=+M.]+`.~+C.2+&+.+M.$+S.{+!+`.*+E.X.M.2+-+S.y.X.R.O.-+B.Y.c+w.N.0+#+$+!+Y.@+`.R.8+,+} } | } i.F+",
+"} } Z Q.x.%+8+Z.2+B.S.K.1+P.&+.+E.d+;+;+S.D.Y. +.+.+z.R.M.4+Y..+1+&+E.b+E.`.=+a+$+@+b+*+'+*+&+~+C.M.)+G.a+G.-+S.)+8+y.&+ +4+Y.3+&+M.C.Y.{+9+} } } } i.C+",
+"} } Z R.q.1+!+~+)+E.Y.$+a+N.P.]+{+$+w.f+!+ +E.X.~+[+-+~+=+a+P.Y.S.G..+X.@+)+=+#+@+$+`.0+~+G.-+G.'+#+'+.+>+!+Y.Y.;+R.b+!+E.Z.M.2+O.;+1+)+W.8+} } } } i.F+",
+"} } Z Q.l.)+R. +R.'+D.Y.S.C.{+X.X.)+M.M.3+{+)+*+.+.+.+$+a+=+$+#+.+&+'+u.{+{+N.)+b+2+M.&+d+3+3+C.b+;+!+3+'+2+)+|+2+a+4+*+)+c+z.p.P.$+$+P.{+[+} } } } i.C+",
+"} } Z Q.v.Z.@+{+)+ +J.D.)+)+!+{+`.*+N.Z.M.P.&+~+Z.>+@+Y.$+w.M.=+X.X.G. +@+S.|+M.|+Y.=+z. +X. +0+M.S.M..+R.v.-+$+$+!+N.=+#+L.M.-+-+L.c+N.{+d+} } } } i.F+",
+"} } Z Q.w.)+~+Y.#+=+1+E.;+#+]+-+~+N.S.Y.b+.+b+G.*+ +-+z.S.N.E.)+|+~+4+E.!+N.Y.N.$+ +G.2+.+z.*+G.D.a+M.2+B. +v.N.S.y.Z.$+!+#+a+1+Y.S.;+I.{+9+} } } } i.C+",
+"} 1 Z P.k.4+(+_+:+:+:+:+:+:+:+:+:+_+U Y.0+M.#+@+.+E.S.O.C.$+=+S.4+A.3+@+D.Y.=+2+Z.&+-+-+ +G.'+~+#+Y.8+~+.+&+N.|+N.P.&+'+|+B.`.C.E.w.E.@+b+8+} } } } i.F+",
+"} } R P.l.v.V V V V V V V V V V V V :+1+3+]+]+.+&+q.b+!+N.$+)+N.Y.0+@+G.O.=+#+Y.E.1+z.X.2+.+R.0+Z.N.p.R.@+~+S.$+S.)+b+'+M.`.b+4+y.$+b+)+X.g+} 1 } } i.C+",
+"} } Z Q.x.C./+V S T T T T T T T T o+t+|+4+&+@+Y..+2+3+!+Y.Y.1+$+=+G.R.3+E.;+=+2+z.'+!+D.O.~+@+P.0+X.Y.@+.+a+D.#+#+4+~+`.P.L. +N.Z.#+$+)+>+d+1 1 } } i.F+",
+"1 1 X Q.G.=+/+V V V V V V V V V V o+t+)+D.X.O.C.~+$  +O.$+=+y.$ &+$ z.C.&+a+Y.$+-+E.b+P.0+B.Y.v.M.R.y.S.Y.2+x.Y.M.O.x.C..+#+$+C.)+N.N.!+0+8+} 1 } 1 i.F+",
+"1 } Z W.l.&+/+V V V V V V V V V V o+t+#+!+)+.+3+2+$ $ 0+M.1+$ $ O..+ +G.2+Y.C.!+N.`.{+ +Y.E.E.'+1+2+@+ +C.X. +!+;+x.-+*+Y.4+-+;+#+y.O.$+2+9+} 1 1 1 i.F+",
+"1 1 Z Q.p.Z./+V V V V V V V V V V :+t+w.D. + + +*+$ $ 2+)+Y.$ $ R.$  +P.$ &+S.$ b+C.]+]+u.)+ +&+C.$+)+G..+.+-+Y.;+-+.+.+'+Y.S.$+-+-+ +R.d+{+1 } 1 1 i.F+",
+"1 1 Z Q.v.)+/+V T V V V V V V V V :+t+Y.a+.+R.p.R.$ ~+$ S.$ P.$  +$ X.Y.*+$ $ w.z.@+{+-+E.Y.Z.]+v.d+M.R.R.-+Z.=+!+ +z.&+C.!+Y.-+d+M.O.Y.0+8+1 1 1 1 i.F+",
+"1 1 R Q.u.C./+V V V V V V V V V V o+t+C.w.~+*+*+X.$ {+$ $+$ {+$ '+$ R.Y.X.$ $ $+)+&+8+'+ +-+D.&+-+.+&+~+S.&+{+S.$+!+~+@+E.;+-+N.Z.*+.+3+3+g+1 1 1 1 i.F+",
+"1 1  .Q.R.!+/+/+V V V V V V V V V :+t+=+=+1+G.R.~+$ ]+$ $+$ 3+$ *+$ `.2+E.$ $ =+b+{+!+X.R.1+1+O.!+R.N.~+N.]+)+=+;+Y.*+]+P.)+1+;+Y.c+]+&+]+9+1 1 1 1 i.F+",
+"1 1 +.Q.l.X./+V T V V V V V V V V o+t+N.g+$+G.M.x.$ P.Y.$ Z..+$ @+$ *+S.$ B.$+$ E.S.2+N.]+~+P.M.@+ +.+0+P.N.`.M.2+D.$+{+-+E.=+M.S.~+!+0+.+8+1 1 1 1 i.F+",
+"1 1 +.Q.v.)+/+V /+V V V V V V V /+:+t+D.Z.E.]+`. +2+=+M.a+G.Y.*+b+.+.+8+-+#+=+=+1+E.E.{+P.8+P.'+P.!+a+y.*+C.R.G.0+N.!+{+w.S.a+#+Y.C.@+.+[+8+1 1 1 1 i.F+",
+"1 1 +.W.q.>+/+o+t+t+A+A+A+A+A+A+t+A+t+;+4+2+1+N.`. +R.Y.=+;+C..+M.~+*+ +'+P.a+2+Z.P.)+{+2+2+z.'+b+Z.~+-+2+G.-+Y.)+|+E.&+~+M.=+Y.C.)+{+R.8+f+1 1 2 1 i.F+",
+"1 2 +.Q.E.Y.t+H+H+H+H+H+H+H+H+H+H+H+H+y.b+~+ +*+*+)+D.*+=+2+'+~+R.R.X.|+ +b+M.!+&+!+z.S.O.C.!+b+)+b+G.{+P. +G.Y.Y.N.4+.+#+=+E.$+$+M.`.{+*+9+2 1 1 2 i.F+",
+"1 1 +.W.v.@+`.E.*+`..+.+x. +*+O.2+E.~+)+N.E.X.E.P.8+P.!+X.!+`.3+!+X.G.]+~+]+!+-+4+`.X.X.3+2+R.2+0+E.*+G.&+0+P.X.X..+E.0+D.;+N.E.a+M.0+C.'+ +1 1 1 1 h.F+",
+"1 2 +.Q.E.b+'+&+Y.'+@+`.=+$+E.*+O.E.=+b+2+{+E.!+P.p.@+S.N.$+Y.]+@+~+'+E.X.X.|+4+b+*+@+#+P.Y.C.y.D.S.~+0+R.z.-+M.|+N.~+@+.+1+)+S.$+8+Q.C.g+~+1 2 1 2 i.F+",
+"1 1 +.W.C..+)+*+@+O.$+P.$+|+*+Y.'+S.$+Y.N.]+C.*+X.#+E.y.D.#+$+4+R.~+*+-+R.-+K.-+Y.X..+0+{+.+A.X.2+#+a+y.)+B.!+#+Y.Y.&+A.Y.d+D.4+$+1+C.Z. +8+1 2 1 2 i.C+",
+"2 2 +.Q.B.N.&+A.N.~+X.-+S.$+M.!+`.-+$+1+L.~+O.{+.+Y.C.!+$+$+X.X.3+D.!+O.!+`.4+C.*+0+@+1+A.'+M.'+ +`.*+&+{+X.c+S.Y.X.{+C.@+Y.#+]+)+Y.@+X.*+k+1 2 1 2 i.F+",
+"1 2 +.W.A.`.Y.E.N.`.S.d+v.;+~+E.R.a+N.$+L.X..+!+.+X. +&+)+;+*+X.R.R.A.=+3+1+=+=+$+>+%+E.P.)+M.'+.+d+*+*+.+b+-+4+S.w.@+&+M.Y.M.#+M.{+)+I.[+g+2 1 1 2 i.F+",
+"2 2 +.Q.B.*+3+x.a+X. +D.S.]+{+M.P.!+c+Y.X.*+.+.+E.~+X.$+=+2+*+X.O. +p.-+>+4+=+N.c+~+3+-+{+ +O.E.y.)+P.@+#+&+%+1+`.b+@+D.G.Y.4+N.=+M.]+X.0+,+1 2 2 2 i.F+",
+"2 1 +.W.Q.z.b+.+]+B.3+X.w.`. +&+a+'+=+Y.$+>+Z.O.-+E.X.$+=+M.=+!+~+P.`.$+@+N.D.N.b+]+A.Z.-+!+O. +=+-+L.#+y.y.;+=+$+;+0+P.C.S.D.Y.N.-+G.~+*+0+2 1 2 2 i.F+",
+"2 4 +.Q.q.*+(+_+:+:+:+:+:+:+:+:+:+_+U 2+-+3+*+.+*+M.X.O.C.$+=+S.4+A.3+@+D.Y.#+M.X.M.C.$+=+Z.4+A.3+G.X.O.C.$+=+S.4+A.3+&+-+=+N.Y.N.$+3+P.{+k+2 2 2 2 i.F+",
+"2 2 +.W.A.y.V V V V V V V V V V V V :+)+`.*+*+$+*+q.b+!+R.$+)+N.Y.0+@+G.O.=+#+q.b+!+N.%+)+N.Y.0+&+q.b+!+R.$+;+P.Y.0+@+O.D.Y.-+#+#+N.'+[+8+g+2 2 2 4 i.C+",
+"2 4 +.Q.k.G./+V S T T T T T T T T o+t+1+$+#+]+]+>+2+3+!+ +Y.1+$+=+G.R.3+E.;+=+2+]+!+ +Y.1+Y.=+G.R.2+3+!+Y.Y.1+$+=+G.R.2+M.=+#+;+N.~+.+Z.{+8+2 2 2 4 i.F+",
+"2 2 +.W.Q.y./+V V V V V V V V V V o+t+&+#+#+*+R.X.$ $ $ $ -+1+.+a+$+G.a+C.N.w.%+-+@+{+$ '+@+~+#+2+4+M.A.~+N.!+4+#+C.=+P.M.;+-+)+N.C.O.D.O.~+4 4 2 2 i.F+",
+"2 4 +.Q.W.2+/+V V V V V V V V V V o+t+;+~+~+&+*+@+$ P. +1+$ C.*+x. +P.P.x.y.L.`.=+`.!+$ O.A.3+x.D.M.G.C.!+D.2+P.{+$+ +2+-+S.#+=+4+I.X. +&+~+2 4 2 4 i.F+",
+"4 4 +.Q.X.`./+V V V V V V V V V V :+t+Y.Y.-+b+'+@+$ a+@+y.$ -+@+$ $ X. +a+$ $ $ ~+d+P.$ A.$ $ $ $ 8+&+>+$ $ $+S.=+$ $ &+a+D.C.#+Y.S.=+N.[+,+4 4 2 4 i.C+",
+"4 4 +.Q.y.Z./+V T V V V V V V V V :+t+=+1+E.S.C..+$ $ $ $ N.!+$ X.@+$ E.@+$ )+S.$ #+@+$ z.O.2+~+$ Y.-+$ O.X.$ #+$ ~+z.$ )+%+.+=+2+N.#+%+@+9+4 4 4 4 i.F+",
+"4 4 +.W.u.-+/+V V V V V V V V V V o+t+2+N.P.#+R.C.$ 0+q.$ Y. +$ $ $ $ P.~+$ |+1+$ 2+#+$ .+X.$ $ $ 4+=+$ -+G.R.)+$ $ $ $ N.]+1+~+O.N.)+#+,+f+4 4 4 4 i.F+",
+"4 4 +.Q.E.v./+/+V V V V V V V V V :+t+;+S.=+$+{+E.$ '+M.)+$ !+$ G..+P.E.b+$ S.#+$ P.~+$ O.$ 3+G.$ =+C.$ A.v.$ )+$ -+-+~+C.#+=+)+=+)+L.L.*+g+4 4 4 4 i.F+",
+"4 4 +.W.x.G./+V T V V V V V V V V o+t+)+`.@+w.R.E.$ X.$+-+# %+X.$ $ $ -+'+$ $ $ c+~+3+$ ~+$ $ $ $ {+P.@+$ $ &+1+Z.$ $ $ C.S.D.Y.N.-+G.~+*+8+4 4 5 4 h.F+",
+"4 4 +.T.W.X./+V /+V V V V V V V /+:+t+C.!+D.3+P.!+E.X.$+=+M.*+~+!+P.`.&+$+$ C.N.b+{+A. +#+~+I.`.*+-+R.'+y.x.!+=+$+!+4+P.-+=+N.Y.N.&+1+P.[+g+5 4 4 4 i.F+",
+"4 5 +.Q.l.v./+o+t+t+A+A+A+A+A+A+t+A+t+M.$+M.@+!+M.'+.+Y.b+S.)+@+X.v.G.~+`.$ N.E.#+]+.+2+*+I.~+Z.d+E.N.@+D.!+'+=+$+2+X.A.I.Y.Y.#+#+N.'+2+8+g+4 5 4 4 h.F+",
+"4 4 +.W.q.{+t+H+H+H+H+H+H+H+H+H+H+H+H+a+S.'+c+O.u.~+b+)+w.!+4+$+8+$+O.c+E.L.B.-+#+&+{+$+#+$+{+'+4+0+N.C.]+R.~+|+;+E.-+X.*+1+B.;+N.;+.+L.]+0+5 5 4 5 i.F+",
+"4 5 +.T.A. +.+O.G.y.C.=+;+$+`.&+.+R.N.N.)+=+S..+P.8+P.4+N.1+)+X.M..+X.`.2+Y..+E.-+{+y.@+E.1+1+P.2+@+8+$+@+P.Y.C.4+@+D.4+C.)+N.C.&+]+,+`.1+$+4 5 4 5 i.D+",
+"4 3 +.Q.p.c+w.R.4+w.M.1+B.-+y..+0+N.$+1+N.E.{+W.*+.+'+=+p.$+4+Z.S.G.C..+~+S.!+7+1+'+]+]+7+$+>+-+@+ +D.{+{+{+&+L.>+Y.2+`.{+{+{+~+*+0+~+[+a+0+5 4 4 5 i.D+",
+"5 4 +.T.q.Y.E.S.M.C.$+=+S.4+A.3+&+D.Y.#+G.*+Y.E.b+ +d+8+$+-+4+]+M. +.+E.P.{+e+e+h+e+h+e+e+h+h+e+e+e+h+e+h+h+e+e+e+h+e+h+e+k+h+9+k+e+9+h+k+q+5 5 5 4 i.D+",
+"5 5 '.T.v.=+q.0+!+R.$+;+N.Y.0+@+O.M.=+#+b+@+G.X.&+P.]+c+N.#+Y.*+M.G.@+@+-+E.h+s+s+s+z+z+z+z+z+z+z+z+z+z+z+z+z+z+z+z+B+z+z+B+z+z+z+z+z+z+z+y+5 4 5 5 i.D+",
+"4 5 '.Q.q.@+2+]+!+Y.Y.1+Y.=+G.R.3+E.;+-+*+b+.+8+*+X.*+D.=+;+$+=+#+R.@+{+P..+T.j k l l l l l l l l l l l l l l l l l l l l l l l l l l l l j 5 4 5 5 i.D+",
+"5 5 '.T.B.O.M.R.2+M.4+#+M.y.A.v.2+!+Y.=+-+)+B.&+&+{+&+!+S.S.Z.b+Z.0+E.*+ +'+T.j j j j j j j j j j j j j j j j j l l l l l j j j j j j j j j 5 5 5 5 i.D+",
+"5 5 '.T.M.R.E.X.O.C.$+=+S.4+A.3+@+D.Y.;+M.'+{+&+R.z.y.$+N.4+)+R.y.{+.+E.P.R.h+h+h+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+o.5 5 5 3 i.D+",
+"5 3 '.T.D.E.p.0+!+R.$+;+N.Y.0+@+G.N.$+#+@+*+*+'+D.I.~+$+N.a+Z.&+Y.@+b+D.*+*+K.K.T.Q.K.}+Q.Q.J.T.Q.K.}+Q.Q.Q.T.}+}+T.T.T.T.T.K.T.}+Q.T.Q.)+}+3 5 3 5 i.D+",
+"5 3 '.T.x.S.N.#+A.-+O.y.C. +]+*+'+-+y.N.$+'+N. +'+~+&+#+1+S.-+X.Y.E. +D.!+N.E.S.)+~+$+#+@+`.#+ +X.=+@+C.*+P.E.=+a+2+{+E.~+N.v.$+Z.O.Y.Y.0+0+3 5 5 3 i.D+",
+"5 3 '.T.E.S.2+A.!+ +Y.1+$+*+O.X.2+E.)+-+!+`.=+#+C.#+B.3+S.1+'+Y..+E.*+)+y.$+E.1+1+P.2+@+8+&+@+R.Y.C.2+$+D.4+C.)+N.C.&+]+-+`.1+$+$+M.%+P..+]+3 3 3 3 i.D+",
+"3 5 '.T.y.S.(+_+:+:+:+:+:+:+:+:+:+_+U b+-+P.y.&+E.E.X.O.C.$+=+S.4+A.3+&+D.Y.#+E.S.M.C.$+%+S.4+D.2+@+D.Y.#+E.X.O.C.$+=+S.4+A.3+&+D.Y.=+%+#+,+3 5 5 3 i.D+",
+"3 3 9.T.u.G.V V V V V V V V V V V V :+#+$+D.a+!+3+p.0+!+R.$+)+N.Y.0+@+O.M.=+;+q.0+!+L.$+)+N. +0+&+I.I.=+-+p.0+!+R.$+)+N.Y.0+@+O.M.=+#+l.@+0+3 3 5 3 i.D+",
+"3 3 +.W.q.'+/+V S T T T T T T T T o+t+2+S..+@+-+P.2+3+!+ +Y.1+$+=+G.R.2+E.;+-+2+]+!+ +Y.1+$+%+I.R.3+G.)+#+2+3+!+ +Y.1+$+*+O.L.3+G.)+=+d+{+,+< 3 3 3 i.D+",
+"3 3 +.T.q.0+/+V V V V V V V V V V o+t+M.]+R.Y.N..+$ ~+ +N.M.w.]+O..+#+.+*+)+S.|+$+E.D.N.$ Z.I.%+E.~+L.$ $ $ $ )+$+`.X.B.2+Y.]+v.-+$ %+I.@+0+3 3 3 3 i.D+",
+"3 < +.Q.x.~+/+V V V V V V V V V V o+t+#+!+>+a+O.'+$ P.)+M.Y.b+]+$+ +@+v.&+A.E.Y.B.$+@+I.$ P..+]+Z.$+@+$ !+.+!+$ #+-+]+]+.+0+1+1+$ !+&+Z.2+4+< < 3 < i.D+",
+"< < +.Q.q..+/+V V V V V V V V V V :+t+)+3+!+`.x.X.$ '+D.Y.L.1+$ $ -+R.$ $ $ $ 1+2+0+$ $ $ b+L.~+#+4+I.$  +'+2+$ -+'+$ $ *+$+I.$ $ $ Y.Z.I.6+< 3 3 < i.F+",
+"3 < +.T.q.`./+V T V V V V V V V V :+t+$+.+u. +c+3+$ ~+b+y.$+# L.G.$ O.'+]+'+$ -+Y.$ !+!+$ [+~+~+-+#+!+$ @+#+Y.$ ;+$ 2+2+$ w.'+-+$ Z.4+3+]+8+3 3 3 < h.D+",
+"< < +.Q.A.P./+V V V V V V V V V V o+t+Y.N.]+P.b+R.$ ~+&+$+#+$ 2+D.$ '+&+$ $ $ Y.b+$ )+&+$ @+B.{+!+ +$+$ N.0+P.$ #+$ $ $ $ Y.P.Y.$ N.C.%+b+6+< < < < i.D+",
+"< b +.T.x.x./+/+V V V V V V V V V :+t+!+&+.+D.-+ +$ *+N.|+N.$ &+,+$  +$ 0+y.$ b+~+$ 2+#+$ 2+Y.X.C.`.O.$ @+.+I.$ )+$ ~+a+.+1+B.1+$ w.Z. +,+g+< < < < i.D+",
+"< < '.T.M. +/+V T V V V V V V V V o+t+1+.+.+~+z.&+$ $ $ $ M.!+$ $ A.@+$ $ $ $ M.4+3+$ $ $ 2+!+@+Y.`.1+$ $ $ $ S.S.-+$ $ $ Y.c+N.$ %+ +$ !+8+< b < < i.F+",
+"b < '.Q.q.Y./+V /+V V V V V V V /+:+t+)+~+*+X.$+-+R.O.y.w.E.1+3+v.)+.+&+C.Y.1+M.$+@+,+Z.'+&+ +.+D.#+ +,+c+E.G.Y.)+!+]+D.!+J.M.M.4+4+'+Z.P.8+< < b < h.F+",
+"< b '.T.q.!+/+o+t+t+A+A+A+A+A+A+t+A+t+|+!+-+~+$+R.L.Z.#+S.1+!+Y.@+G.*+)+y.@+#+1+%+Y.*+Z.0+X..+R. +P.O.*+@+z.X.)+=+N.N.x.#+S.=+1+S.0+*+I.[+d+< b < b i.F+",
+"b b '.T.D. +t+H+H+H+H+H+H+H+H+H+H+H+H+4+)+*+'+E.~+z.=+7+Y.b+=+Z.1+]+R.,+%+M.N.B.Y.$+!+R.P.O.X.v. +4+&+b+*+b+-+E.`.I.E.@+,+D.;+|+M.)+.+8+0+j+b b < b i.F+",
+"b b '.T.v.Y.2+z.`.E.O.y.C..+]+*+'+-+y.N.$+-+R. +'+{+*+#+1+S.-+X.Y.E. +D.!+N.C.Z.)+~+&+-+@+Z.,+ +L.%+@+C.*+O.E.=+a+4+{+C.!+N.v.$+S.O..+ +0+0+b b b b i.F+",
+"b d '.T.u.!+4+&+>+&+0+ +{+R.{+y.S.|+$+a+4+0+)+~+P.-+)+x.=+y.1+Z.&+!+*+#+C.R.1+Z.#+ +@+O.{+.+!+&+]+L.~+P.]+.+Y.E.)+-+@+R.X.4+C.)+L.]+.+9+L.8+b d b d i.F+",
+"b d '.T.N.#+*+!+8+$+Z.1+R.!+&+&+P.G.*+'+1+>+4+'+&+X.a+O.X.&+$+X.3+R.7+-+a+!+>+c+2+!+1+]+d+&+!+'+&+.+C.{+{+]+*+X.~+Y.4+ +{+]+]+{+*+0+~+[+8+|+b b b d i.F+",
+"b b '.T.T.T.h+h+e+k+k+h+h+9+e+h+h+e+e+e+h+e+h+e+e+h+h+e+e+e+h+e+h+e+e+h+h+e+e+e+h+e+h+e+e+h+h+e+e+e+h+e+h+h+e+e+e+h+e+h+e+k+h+9+k+e+9+h+k+q+a d b d i.F+",
+"d d '.T.h+s+z+B+s+B+z+y+z+z+z+z+z+z+z+z+z+B+z+z+z+z+z+z+z+z+z+B+z+z+z+z+z+z+z+z+z+B+z+z+y+z+z+u+y+z+z+z+y+z+z+z+z+z+B+z+z+B+z+z+z+z+z+z+z+z+b b d d i.F+",
+"d d b b c d c d c c b d d d d d d d d d d d d d d d d b c d d d b d d d d b b b d d d b d d d b d b b b c b d d d d b d b c c d d d b d c d d d b f i.F+",
+"d d d d d c b c b d d d d d d d c d c c d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d c d d c d d d d d c c c i.F+",
+"d c c d d d d d d d d d d d d d d d c c d d c c c d c c c d d d d c d c d d c d c c a c d d d d d d d d d d d d d d d d c d c c c c d c d d c c f g i.F+",
+"c c c c a a c d a c c c i i c d c d c f c c h f c c c c c a d c c c c c d d c d c c f g g c c g f f c a c c g c c c a c c c c c c c c g h c c c g g i.F+",
+"a a c a h c c a i f i a d f c a a c g g i c i a h a a a c h a c a i f c a c a a i a g f c i a a a c i h a a h g h h i c a a a a a i a a a i a h h i i.F+",
+"a h h a a h a h h h h i i a a h h a h h i i a h c c h c a h h h h i a i a h h g a h h h h a a h a a a h h i h a c h a h h h a h h a h a i h a a h h i.F+",
+"i a h a a h h h a i h i h h h a h h i h h h h h a i h i h l a a h i l h h h h h i h h i a h i h a h i a h h h h i i h a h h h h h h h h a h h l i k i.F+",
+"i h h h h i i h h h i h l i h i i h i i h i i h i h h h h h k h h h l i h i h h i i h i g i h h h h l h i l h h l h h l i h l h h h h h h i h i h k i.F+",
+"l l i k k k l l h k l l i i i h i l h h l h h h i i h h k l l h l l i l l h i i l l i l l l i h h h l l i l h i l i l i i k i k h h k l i l l k k l h.F+",
+"l h l i l l l h l h h l l l l l k k l h l l k k l l l h l h l h l h k k l h l h l h k l h l l l l l k l k l l l k l h l l l i l l l h l h k l h l k i.F+",
+"k k k l h l k k k l k h l h l l k l k l h l l k k h l k k l l k l k l l l l l k k l k l k l h l h l l l l l h l l l l l h l l l h l k l k l l l h m i.F+",
+"l k l l l l k l l l l k l l k k l k l k j h l k k k l l l l l l k k k h k l l l k l l l l k l l k l l l l l k k l l h k k j h k l l l k l k l l l j i.F+",
+"l l l l l l l j k l l l l l l k l l l l k l m l l l l j l l l l l j l l l l l l l m k l l l l l l j l l l l l l l l l l l l l l l l l l l l l l l m i.F+",
+"l l l l l l j l m j l m j l j l l l l j l l l l l l l l j l l l j l l l l j l l l l k l m l l l j l l j m j j l l l l l l l l l j l l l l l l m j m i.F+",
+"m j l j j l j j j j j l j l l l j j j j j j l j l j j j j j l l l j m l l j j j j j j j j l l j j j j l j l j l j l j j j j j j j l j j l j l j j j i.F+",
+"j j j j j j j j j j j j j j j j j j l j j j j j j j j j j j l j j j j j j j j l j j j j j j j j j j j j j j j j j j j l j j j j j j j j j j j j j n i.F+",
+"j j j j j j j j j p j j j j j j j j j j j j j j j j j j j j l j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j p j j n i.F+",
+"j j n j j j j p j p n j n j j n j j j j j j n n n j j j j j j j n j j j j j j j j j j j j j n j j p j j j p j j j j n j n j j j j j j j j j p j j n i.F+",
+"p j n p j p j p j p n p n p j j j j p j p n p p n p j p j j p j j j n j j n j p j p j n n p p p n p n r n p n j p n p p p j n j j p p j p n p r j e i.F+",
+"p p p p p p p p n p p p n p j r r r n p j p n j n p j n p p p j p n p p p p n p p j p n p p p j n r n n p p n p p r r p p j p p j n p p p n r n n e i.F+",
+"p p p p p p p p r n r r r n p p n r p p p r r r r r r p r r r t p p p p p n p p p p p r r r r r r r n r r n p p p p n p p r r p p p p p p p t r p e i.F+",
+"p p p p e e w e e e e e p p p r r r r r r r e e e e e r e e e t p p p p p t r r p r r r e e e r e e e e r r t p p t w e e e r r r t p p p p t e e e i.F+",
+"p p t t t e w e e r r v t r r r e e e v e w w w w r w e e r e w w v r r p t e r r p r r e e e e r w e w w e r t p p t r w e e e e w p t t e t p r r i.F+",
+"t w e p x w w r w w w p r r t w w r w x r v x r e r r e r w e e r t v w e v e e x x v e r v r r e v w w w v p p t v e w w w r v r v x w w e p t v e i.F+",
+"t r e p w w w w e x w t w w e v e r v n v e t v w w e t v v x w t t v v v t r v v r x e v v w v x v w r w x v v e t t w v x w e w x r v w v x v t e i.F+",
+"w v w w v x r v x x v w w w v v t w v v v v v w w v v v v r v w v e v e v t w r x r v v v e v e x r x r v v t w w w w v x r v v v v t t x r v t t x i.F+",
+"w w w v w v v v r x v x v x v v v v w v x v v v v v v v v v v w v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v x v v v v v v v v v x i.F+",
+"x v v v v v v v v x v v v v x x v v v x v v x v v x v v v v v v v x v v x v v v x v v v x v x v v v v v v v x x v v v x v x v v v x v v v x x v x x i.F+",
+"x v x x x v x x x x v x x v x v x x x x v v v v v x x x x x v v x x v v x v x v v x x v x x v x x v x x v x v x v x v v x v v v v x x x x v v z z x i.F+",
+"x v x x x x x v x y v x x y x x v x x x y u y v v v v x y v x y x x x v x y x v x x y x x x y x x x x x x x x x x v x x v x x x x x x x x x y x x z i.F+",
+"y y y x v x y y x y y y x x x y x y y x y u y u u x y y x y y y y x y x y y x x y y y y x y x x y y y x x y y x y y x y y y v y x v x x x y y z x z i.F+",
+"y x y y y y y y y z z z y z z x y y y y A y y y y z x y y y y z y z y z y z y y y z y y z y y y y y y x z y z y y x y y y y y y x y y z y z z z z z i.F+",
+"u y y y y y z z z z z z z y y z y z z z z A u A y y y y z z y y y z y y y y z z y y z y z y y y z z x y y y y z y z z y y y z y y y y x y z z z z z i.F+",
+"A s z y y A z z z z z z z z z A z z z y A A y z z y y z y A y y A z z y z y z y y z y z y z y A y y y y y y y z y A y z z y A y z z z y z z z z z z i.F+",
+"z A B B A y z B z B z s A A z A A A A z y A s s z z A A A A A z A A A z y A A A z A z A A z A A z z A z y A y z A z A A z A A A A z A A A z A A z z i.F+",
+"z B z B B s s s z B z s B A A A A z A z A A z A A A A A z z A A z A A A A A A A A A z z z A A A A A A A A A A A A A A A A A A z A A A z A A A A A B i.F+",
+"s s A z B A B s s s B z B A A A s s z s s B s B A A z A B z A A A A A A A A A A A B A A B B s A A A A B A A A A B A B B A A A B B A A A B B B A B B i.F+",
+"A s A B B A s B B B B B B B A B A B B s s B A A A A B A B B A A A A A s B B E B A B B A B B A B A A B A B A A B B B A A B A B B B A A B A A B A A B i.F+",
+"B s B s A B A B B B B B B B A B D B B E B B B D E s A A A E s A B B s A A B B B D B B B B B A s A A A A B E E A B s s s A B E B B E H s B E s s A H i.F+",
+"B D B E D D D D B B H B D B E B D B B I H B A E E B s B s B E D D E B D B B E H z D D A D D E s E s E B D B B D E E B s s B D H B H B H H s E E D H i.F+",
+"H H H H H D D H H B H H D H H I I I D I B H E D B D D D B E E D H H H H D D D D D D H D B D E B E E D B D D H H H D D D D D D H H H H H H D E D D H i.F+",
+"H I H H H I H H H H H H H I I I B I B I B D D D H H B D D D D D H H H H H H H H H D D H D D I I D D D D D H H H H H H H D D H H H H I D D D H H I I i.F+",
+"H I H D H I H I H H K K H I I I I I K I D K H D D D I D I I D D I B I H I I H H H D D D H D D D I D H I D D I H I H H H I D I I I I H K H D H H I I i.F+",
+"I I H G G I I I H H I I H H H I K B D I I I H D D D I H I D K I K I K H H I H I D D I I I I D I I I D D I I I H K I K I I D D I H I I H K D D I D I i.F+",
+"H K I I H G I I H K I I I K I K I I I K H H I I D I I I I I K H I K I I I H I I I I I I I I I I D D I I I I K K H I K I D I I K H K H G K I I I I K i.F+",
+"K I I G I I I I K G G G I K I I I I I I I I I I I I G I G K K C K I I L I K I I G I K K I K G I K I I I I I I C K K I I I K I K I G G K I I K I I K i.F+",
+"G I G G K G G G K G L G L C L I J K J K K K I K K G L L G I L K K I I L G K K K K I C K I I G I I K J K I K K G C K K K K I K I J L G L K K K G G K i.F+",
+"J K K L G L G K J L L G G J K K I K I K K K I K K L L G K K L I L K I G C K K G K G K K G G G K K K C I G J K G G G K L L L L J J G J C G K L L L L i.F+",
+"K I K K K I K K L J G L G K J K K K K K K K K K K C K K J J J J C J J L L L K K K K K K J K K L J G K J K I K G J K I J G K K G L L L L J L L G L L i.F+",
+"K K J J J J J J L C J J J J K J J J J J J J J J J J K K J I J G J J J L C K K K K J K K J L C J J J J G J J J J J J J J J J J K J L C J J M C J R M i.F+",
+"J K J J L J L Y R R L J J J J Y J J J J L J L J L Y J J J J J J J J J L J J J K J J J J J J J J J J J J M J J J J J L J J J J M R M J J J J J J L R i.F+",
+"Y J J J J J J R L L  .J J M J R J J J J Y J J J J M J J M J R J J J J J J J J J Y J J J J J J R R J J Y R L J J L J J J M R L R L Y J R J J J K M Y i.F+",
+"R J R R Y M M L Y Y  .R Y J J J J J R R R R R R R R R R Y R R J R J J R Y J J J Y J J Y Y J J Y J J R J Y Y Y Y Y J Y R J Y Y Y R  .J J J R J J M Y i.F+",
+"R J R R  .M Y Y Y  .R Y R R J R R R R R R J R R J R ..J J R J R R R R R R R R Y Y J R R R R R J J R R R J R R R R R R R R Y Y Y R J R R Y J Y Y Y  .i.F+",
+"Y R R R  .Y Y Y Y ..Y R Y R R Y R Y R Y R R R Y Y R R R R R ..Y R R Y Y R R ..R Y R R R R R Y Y R R R R R R Y Y Y ..Y Y R R Y Y  .R Y ..R R ..R R Y i.F+",
+".. .R R Y Y Y Y R ..Y R  .R R R Y R R ....R ..R R M ..Y .... .Y ..R R Y R R Y .... .Y R ..Y  ... .R R R Y R R Y R Y .. .R R  .Y R R R ....R Y R .. .i.F+",
+"R Y Y ....Y  . . .Y .......... ..... .R R .. .R ....Y Y  .Y  .R R ....Y ..R R Y  .....R  ... .Y ..Y ....R .. .Y  ...R Y ..Y Y  .......R R R ..Y ..Y h.F+",
+"` R ..Y  . . . .....Y  ...Y  . ...Y  .` Y .. .` Y .. . . .R  .....Y  . .....Y ....Y  ...Y ..Y ` .. ...Y Y  ... . ......... ...` ..Y .. . . ... . .@.i.F+",
+" ... .@.@.@. ...Y `  .`  . ......... . ... . .` .... ...` ....R `  . ..... ... . . . . ... ...@.@.@.@.@.@...Y .. .Y  .Y  ...Y .. .@.@.`  . . .`  .@.i.F+",
+"`  ...@.Y @.@.@..... .`  ...`  . ..... .` ......@.@.@... ..... . .` ..` ....` .... . .......` @.Y ..@.Y `  . .......` ` ..`  . .@.Y .. . .` .... .@.i.F+",
+"` ` @.` ` ` Y @.` ..@.@. . .@.@...`  .` ..` ` ` ` Y @.` ` .. .....@.` @.` `  .` ..`  ...@. . .` ` ` ` ` .. .@.` ..`  .@.` ....` ` ..` ` ..@. .` ` @.i.F+",
+"` @.` ` @.` ` ` ` @.@.` @.` ` ` @.` ` ` ` ` @.@.` ` ` ` @.` ..` ` ` ` @.@.` ` ` @.` ` ` ` ` ` ` @.` ` @.` ` ` ` @.` ` ` ` @.` @.` ` ` @.` ` ..` @.@.i.F+",
+"` ` $.` @.` @.$.` @.$.$.@.` ` ` $.` @.$.` @.$.` $.` @.` ` @.$.` $.$.` ` $.@.$.@.$.` ` $.$.@.` @.` ` @.$.$.@.@.$.@.$.` @.` @.@.` @.@.` ` @.` ` ` ` @.i.F+",
+"$.@.` @.@.$.$.$.` $.@.` $.` $.$.` $.$.@.$.$.$.$.` @.$.` @.` ` $.@.@.$.` $.$.$.$.$.$.$.` @.$.` ` $.@.` ` ` $.$.$.$.@.$.$.` @.` @.` ` @.` $.$.` ` ` #.i.F+",
+"$.$.$.$.@.$.$.$.$.$.$.$.$.$.%.$.$.$.$.$.%.$.$.$.$.$.$.$.%.$.$.%.` $.$.$.$.` $.@.$.$.$.$.$.$.$.$.` $.$.$.$.$.$.$.$.$.` $.$.$.$.$.$.@.$.` $.$.$.$.$.#.i.F+",
+"#.$.$.$.#.#.#.#.#.%.#.#.#.#.%.#.$.$.%.$.$.%.#.#.#.$.$.$.%.#.#.%.#.#.#.$.#.#.#.$.$.$.#.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.#.#.#.#.$.$.$.#.$.$.#.$.#.#.#.i.F+",
+"$.%.%.$.#.#.#.%.%.%.%.#.#.&.#.&.$.#.%.#.#.%.%.#.%.*.$.#.%.%.#.%.#.#.#.#.%.#.%.$.%.#.#.%.$.#.$.$.$.#.%.$.$.$.#.#.%.*.#.#.$.#.#.#.%.#.$.$.#.%.%.*.#.#.i.F+",
+"%.%.%.$.*.#.;.&.&.#.%.#.&.#.#.*.#.%.#.#.&.#.%.#.%.*.$.%.%.#.#.*.#.#.%.#.#.#.%.$.%.%.%.%.%.%.%.$.#.#.%.%.%.%.%.%.%.%.*.*.*.&.&.$.%.$.%.%.%.%.#.%.%.%.i.F+",
+"%.%.%.%.%.&.&.#.&.%.#.%.%.%.%.*.*.*.*.*.*.*.*.%.%.%.%.%.*.&.%.&.%.#.%.%.*.%.#.*.%.%.%.$.%.%.%.#.#.%.%.%.%.%.#.%.*.%.%.#.*.#.%.%.%.$.%.%.%.%.%.%.%.%.i.F+",
+"%.%.%.%.%.*.#.&.&.;.#.%.%.%.%.*.#.%.%.#.#.%.*.#.%.&.&.;.#.&.#.%.%.%.%.%.*.#.%.*.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.*.%.%.%.%.%.*.%.%.%.%.%.%.%.%.%.%.*.i.F+",
+"%.%.%.&.%.%.&.&.&.&.%.%.%.%.%.&.%.%.%.*.*.&.&.=.&.&.&.&.*.;.%.%.&.%.%.%.%.*.*.*.*.*.&.%.%.%.=.%.%.&.%.%.*.%.%.%.*.%.%.*.%.*.%.*.%.&.%.%.%.%.%.%.%.*.i.F+",
+"%.%.*.=.&.>.=.#.>.;.>.;.*.%.*.%.&.%.*.;.&.&.&.&.%.&.;.&.&.>.&.&.*.&.*.;.*.%.%.&.;.&.=.=.&.=.&.;.*.*.%.%.%.%.&.*.*.;.*.*.*.&.*.&.%.*.*.%.%.%.*.%.%.&.i.F+",
+"=.;.%.*.&.;.=.=.=.&.;.=.;.*.*.;.;.;.;.&.*.;.;.;.=.;.>.&.&.;.=.;.*.*.;.;.=.*.;.;.;.&.&.&.&.&.=.*.;.&.=.*.*.&.&.=.*.;.%.;.%.*.=.=.=.=.&.%.=.&.*.*.=.=.i.F+",
+"=.*.;.*.>.;.&.;.>.&.>.*.%.;.*.;.;.&.;.&.=.=.;.;.;.&.&.=.;.>.;.;.;.;.=.*.>.&.;.;.=.=.=.&.;.*.;.=.&.;.;.=.&.*.;.;.*.*.&.;.;.=.&.&.;.&.=.=.&.=.*.%.*.>.i.F+",
+"&.=.;.;.;.=.=.&.>.&.=.>.>.=.;.;.;.=.=.=.=.&.=.=.=.=.=.=.&.>.>.;.;.;.;.;.&.=.&.=.;.&.>.>.>.=.;.;.;.=.;.=.=.=.=.=.;.;.;.;.;.=.=.=.;.&.;.&.;.=.;.=.=.>.i.F+",
+"=.=.=.=.=.=.=.=.=.=.>.&.=.;.;.=.=.=.=.;.=.=.=.=.=.=.=.=.=.>.&.=.=.=.=.=.=.=.=.=.;.=.>.&.=.=.=.=.>.>.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.>.>.i.F+",
+"=.=.>.=.>.>.=.=.>.>.=.=.=.=.=.>.=.=.=.>.>.=.>.=.=.>.=.=.=.>.=.>.=.=.=.=.>.=.=.=.=.>.>.>.=.=.=.=.=.>.=.=.=.,.>.=.=.=.>.=.=.=.=.=.>.>.=.>.=.=.>.,.>.~.i.F+",
+">.=.>.=.=.=.>.=.=.>.=.>.=.=.=.>.=.=.>.=.=.=.>.=.>.>.=.=.>.=.=.=.>.=.>.>.=.>.>.=.=.=.=.=.=.>.=.=.=.>.>.=.>.,.=.=.,.>.>.=.=.>.,.=.=.=.=.=.=.=.=.,.=.~.i.F+",
+">.=.=.>.=.>.>.=.>.>.>.=.>.=.=.=.=.>.=.>.>.=.>.=.=.=.>.>.=.=.>.=.>.=.=.>.>.>.=.=.>.>.=.>.>.=.=.=.=.,.=.>.>.,.=.=.=.,.>.>.>.=.,.=.>.>.>.=.>.>.=.>.,.~.i.F+",
+",.>.,.>.>.=.,.>.=.>.=.>.>.>.=.>.,.>.>.=.>.>.>.>.>.>.>.>.=.,.>.>.,.>.=.>.,.>.>.>.>.>.>.,.>.>.>.>.>.,.>.>.>.,.>.=.,.,.=.=.>.>.,.,.,.,.>.>.>.>.>.>.,.>.i.F+",
+",.,.,.>.,.,.,.].,.,.,.~.{.{.,.,.,.,.,.>.>.>.>.,.,.,.~.~.~.,.,.>.,.>.,.>.,.>.>.,.,.,.,.>.=.~.~.{.~.{.,.,.>.,.,.~.~.{.,.,.{.{.{.{.,.>.,.,.{.{.{.,.,.~.i.F+",
+",.,.,.,.].,.,.{.,.,.,.{.{.{.{.{.>.>.{.,.,.,.,.,.,.{.{.{.{.{.{.~.{.{.{.{.,.{.,.>.,.~.{.{.,.{.{.{.~.,.,.,.,.,.{.{.{.].~.{.{.].{.,.,.,.~.{.~.~.{.].{.{.i.F+",
+"{.{.{.{.].{.,.,.,.>.{.,.{.{.{.{.{.{.{.,.,.,.,.{.,.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.,.{.{.~.].{.{.{.{.{.{.{.].{.{.{.{.{.,.].~.{.~.{.{.{.].~.{.i.F+",
+"{.{.{.{.].{.].].{.,.,.,.{.{.{.{.{.{.,.,.{.{.,.,.,.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.].{.{.].{.{.{.{.].{.,.,.,.{.{.].{.{.{.{.{.].{.{.{.i.F+",
+"]./.].{.].{.{.].,.,.{.,.(.(.].{.].{.].{.{.{.].].,.{.{.].,.{.]./.{./.].{./.{.{.].{.{.{.{.].].{.].{.].].{.(./.{.{.{.].,.[./././.{.].].].{.{.]./.{.{.].i.F+",
+"{./.{.].(.(.{./.{.].]././.{.{./.{.].].,.].{.].].].].].].].(.].(.].{.{.].].]./.{.{./.{.{.].].].]./.{.].{.{.].{.].{.(.{./.{.{.].[.].{./.{.{././.{.].(.i.F+",
+"].]./.].{.(.{.]./.].].].].].]./.].].].{.].].]./.].].].].].(.{.(.].].{./.{.{.{././.].{./.].].].].].]./.{.(.{.].].{./././.].].{.].{.(./././.{././.{.(.i.F+",
+"/.{.].].].]./.].].].].].].].].].].].]./.].].].]././.[.].(.(.].].].].].]./.].]./.].].].]./.].].]./.]././.]./.]./.]./.].]././.].]./.{./.{./.{.].(.{.(.i.F+",
+"/.].].].]././.].].].]./.].].].].].].].].].].].].].].[.(.].(.].].].]./.]./.].]./.].].].]././.]./.].].].]./.].]././.].]./.]./.]././.].].]./.].(.]./.(.i.F+",
+"/.].].]./.[.].(.(.[.<.(.].]./.<.<.].[.<.[./././././.[.].(.}.(./.(.]./././.]./.].]./.].[.]./.<././.[.[.[././.]./././.]./.].}./.}./.].(././././.[.(.(.i.F+",
+"(.(./.(.(.]././.].].[.<.<.<./.]./.[./././.<.<.}.}./.(.<.(.(.(.(./.(.[.[././.[.[.]././.[.(.[.].[./.[.(.(.(././.[.]./././././.}.]./.(./.(.}.].(.}./.}.i.F+",
+"[.[.(.(.<.<.[.(.[.].[.<./.<.<././.}.|.|.}./.}./.<.[.<.(.]./.(.]./.<.<./.}.}.}.[././.[.[.<.<.<.<./.<.<././.<.<.<./.<.[.].}.].[.[./.[.<.<.<.[.[.<.<.}.i.F+",
+"[.<.<./.(./.<.<.<.<.<.}.<./.}.}.}.<./.|.|.}./.}.<./.<.(.[./.<.<.<.<./.<.<.}.}.}.<.<.<.<./.}.}.}.<.<./.[.}.}.}.<.<.<./.<.<.<.[.<.<.<././.<.<.<.}.}.|.i.F+",
+"}.}.<.<.<.<.<.<./.<./.|.}.}.}.}.}.|.|./.|./.<.<.}.<.[.[.<.<.<.}.}.|.}.<.<.}.}.}.}.<.<.}.<.}.}.|.}.}.<.<.}.}.}.}.}.}.}.}.}.}.}.}.}.}.|.}.}.<.<.}.|.|.i.F+",
+"}.}.}.<.}.<.|.<.<.|.<.<.|.}.}.|.}.|.|.}.}.|.|.}.|.<.<.<.<.}.}.|.|.}.}.<.<.|.|.|.}.}.}.|.<.}.}.|.}.|.}.}.}.}.}.}.}.}.|.}.}.}.<.|.|.}.|.}.}.<.}.}.}.|.i.F+",
+"<.<.|.|.|.|.}.|.<.<.|.<.}.}.|.|.|.|./.2.2./.<.|.<.|.|.|.<.}.|.}./.<.}.}.<.2.}.|./.|.}.|.<.|.|.}.|.|.|.|.|.<.}.<.|.<.|.|.<.}.|.}.|.|.}.2.<.<.<.}.2.}.i.F+",
+"<.|.<.|.|.|.|.|.}.|.|.|.|.|.|.}.}.|.|.|.|.2.|.|.<.|.<.|.|.2.2.|.2.|.|.|.|.2.|.2.|.<.|.<.|.<.}.|.|.}.|.}.2.<.|.|.|.<.<.|.2.|.:.}.|.}.|.|.<.|.|.|.2.}.i.F+",
+"|.|.|.<.<.|.<.|.|.|.|.|.|.|.2.|.|.2.|.}.2.|.2.|.|.<.|.|.|.2.}.|.|.<.|.|.|.2.}.2.|.|.|.|.|.|.2.|.|.|.|.2.|.|.|.|.<.<.|.|.2.}.|.|.|.|.}.2.|.<.|.|.2.:.i.F+",
+"|.|.|.|.|.|.|.|.|.|.2.|.|.|.|.|.|.|.|.3.|.3.|.2.|.2.|.2.|.|.2.:.|.|.|.2.2.|.|.3.|.2.|.|.|.|.|.2.:.|.|.2.|.|.|.|.:.|.|.|.2.|.|.|.|.3.|.2.|.|.|.|.|.2.i.F+",
+"2.|.:.|.2.|.:.|.|.1.|.2.1.2.2.3.2.|.|.|.2.|.|.2.|.|.2.|.|.|.2.3.:.|.|.2.|.|.|.|.2.2.:.|.|.|.2.1.:.|.2.1.|.2.:.|.1.1.|.|.2.|.3.:.|.:.2.2.|.|.|.|.|.2.i.F+",
+"2.|.2.1.1.2.2.:.|.:.|.:.2.|.3.|.2.2.3.|.3.2.2.2.2.:.2.|.2.:.:.|.|.:.|.|.1.1.|.2.2.3.3.2.:.|.2.1.|.:.3.|.1.2.2.|.|.:.2.2.2.|.|.|.2.:.|.2.:.2.2.|.3.2.i.F+",
+"3.2.3.2.1.2.2.|.2.1.2.2.2.1.2.2.2.|.2.2.2.|.2.1.2.:.|.1.1.2.1.1.2.|.1.|.1.|.2.1.:.3.|.3.3.2.2.2.:.|.2.2.1.1.|.2.1.|.1.:.|.|.|.2.1.1.2.2.2.:.:.3.:.1.i.F+",
+"2.:.3.:.2.2.1.1.2.2.:.|.3.2.1.1.2.1.1.1.1.2.1.|.2.2.1.1.:.1.2.2.1.|.1.2.2.1.1.1.2.1.:.:.3.1.1.:.4.1.1.:.1.2.2.2.1.1.2.1.2.1.2.2.|.2.|.1.1.1.1.|.1.3.i.F+",
+"1.1.2.2.2.2.:.:.2.2.2.1.1.1.:.2.2.1.:.1.:.2.1.1.1.1.:.2.2.1.:.2.1.2.1.1.2.1.3.:.1.:.2.1.3.3.3.1.2.:.2.2.1.2.2.1.|.2.:.2.1.:.2.2.2.2.1.:.1.|.1.1.1.1.i.F+",
+":.1.2.1.1.1.1._._.1.1.:.1.1.2.1.2.3.3.3.1.2.1.1.1.1.2.2.1.2.2.2.1.1.1.2.2.:.1.2.1.2.1.1.1.:.3.1.1.1.2.2.1.1.2.1.1.1.2.2.2.1.1.1.2.1.2.2.2.1.1.1.1.6.i.F+",
+"1.2.1.1.3.6.3.3.3.3.4.3.4.3.3.1.4.4.8.3.6.4.5.3.3.1.2.1.1.2.4.3.5.1.1.4.4.4.4.1.1.1._.3.1.1.6.3.3.1.1.1.1.1.1.1.5.4.3.6.4.4.3.4.3.4.4.3.3.4.3.4.6.3.i.F+",
+"5.5.1.3.3.6.3.3.6.3.4.4.5.5.4.4.5.3.5.3.4.3.6.3.4.4.1.1.4.4.4.4.5.3.3.5.4.5.4.3.5.3.6.3.6.3.6.3.3.6.4.4.6._.1.3.5.4.4.6.3.4.3.3.3.3.6.3.4.5.3.4.3.6.i.F+",
+"3.4.4.6.3.3.5.4.5.4.5.3.3.6.6.4.5.3.5.4.4.3.4.6.4.6.6.4.5.3.1.3.3.6.6.5.3.4.6.4.6.3.5.5.5.5.4.5.4.5.5.4.3.5.3.1.4.3.3.6.3.4.4.6.6.4.4.4.5.3.6.3.6.4.i.F+",
+"4.4.3.6.4.4.4.3.5.4.4.4.4.4.3.6.3.3.5.4.3.6.3.6.4.3.6.4.4.4.4.4.4.4.3.6.4.4.4.3.6.4.4.3.5.4.3.5.4.4.3.5.4.4.4.3.5.4.4.4.4.4.4.4.3.6.4.4.4.3.5.4.4.3.i.F+",
+"4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.5.5.5.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.i.F+",
+"6.4.6.6.4.5.4.5.4.4.4.4.4.5.4.4.5.5.4.5.4.5.4.4.5.6.6.4.6.4.6.4.4.5.4.4.4.4.4.4.4.4.4.4.4.4.5.5.5.8.5.8.5.6.8.5.5.4.5.5.8.5.6.4.6.4.4.5.5.5.4.4.4.4.i.F+",
+"4.4.7.4.5.4.4.7.8.7.4.5.4.4.5.8.6.4.6.6.6.4.5.4.6.8.7.8.4.8.4.6.4.6.5.6.8.5.6.5.4.7.6.4.7.5.7.5.8.8.5.5.8.5.5.5.8.5.8.5.5.8.7.5.4.8.7.5.5.4.4.5.4.4.i.F+",
+"6.4.4.4.7.6.6.5.4.6.7.6.6.6.7.6.8.7.8.4.8.6.6.8.8.6.6.7.7.6.4.5.6.8.5.8.6.5.8.5.5.6.6.6.4.7.3.5.8.7.8.8.7.5.5.7.8.5.5.5.5.5.5.5.6.6.5.5.7.8.8.5.5.7.i.D+",
+"8.5.6.5.4.6.6.7.7.6.6.6.8.4.7.6.8.6.7.6.6.6.4.7.4.6.6.6.6.6.7.4.8.4.5.8.5.7.4.8.4.4.8.5.4.4.7.5.5.8.8.7.5.8.7.5.5.5.7.8.6.8.8.4.8.8.6.5.5.5.8.8.8.5.i.D+",
+"6.8.8.8.7.7.7.8.6.7.7.7.7.7.8.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.7.7.5.i.D+",
+"7.7.C W.k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+6+k+6+k+6+k+k+k+o.} 8.7.7.i.D+",
+"8.7.Z K.K.K.Q.Q.)+J.T.Q.K.}+Q.Q.W.T.}+J.T.W.J.}+W.W.Q.T.1+K.T.Q.K.)+Q.Q.Q.T.}+J.T.Q.K.1+Q.W.J.T.Q.K.)+Q.Q.Q.T.}+)+T.T.T.T.T.K.T.1+P.T.Q.}+1+| 9._.7.i.D+",
+"8.8.Z K.7.q.v.l.l.y.y.k.v.l.l.u.k.y.u.q.v.l.q.y.q.g.q.k.l.u.v.D.k.p.q.g.l.v.k.E.x.q.l.k.u.p.g.q.x.B.C.k.q.l.v.k.l.q.g.q.w.l.q.l.l.k.y.k.]+,+~ 8.7.7.i.D+",
+"7.7.Z K.A.N.`.`.p.B.P.Z.C.I..+@+R.`.=+E.`.E.I.x.I.u.@+D.w.E.$+@+R. +R.E. +G.E.`.S.x.L.A.x.N.~+*+$+w.@+z.l.N.E.A.P.G.*+P.=+Y.w.C.E.!+>+]+~+]+! 7.7.7.i.D+",
+"7.7.Z K.$+S.@+#+v.'+X.$+L.I.Y.)+{+~+4+$+#+8+{+b+N.2+N.L.M.%+N. +X..+D.Z.D.)+J.Y.b+*+V.a+ +N.p.S.U.1+V.U.N.~+0+!+N.X.++X.V.#+Y.~+Y.)+>+G.>+~+! 7.7.7.i.D+",
+"7.7.Z K.p.C.!+V.v+p+u+y+x+p+u+u+u+u+u+u+x+u+u+u+u+u+y+u+u+z+x+y+y+y+y+p+z+p+x+x+x+x+x+x+y+x+x+x+x+x+y+x+y+x+x+w+x+x+x+w+y+y+x+y+y+v+]+b+.+8+! 7.7.7.i.D+",
+"7.7.Z K.B.'+P.R.j+/ ] , = % % % % % % % % = = ; - , ' / [ ] ] ] / / / [ 7 8 9 0 0 0 q O Q ^.b.a.N N W ^.^.^.^.!.!.a.a.a.a.b.a.j.a.s. +!+0+4+! 7.7.7.i.D+",
+"7.7.Z K.w.$+P.P.f+- * . % % % % % % % % % % = = = - = * * , ) ] ] / ] / 7 / 6 0 O O O O Q P Q Q W ^.W ^.^.a.^.a.a.b.b.b.b.b.c.c.a.U.<+M.'+g+! 9.7.0.i.D+",
+"7.9.Z K.v.=+*+b+6+] * c.x+v+v+v+v+D+v+B+v+v+v+E+D+w+i+; ' 5+E+A+v+v+v+v+p+p+y+w+w+v+w+v+y+i+8 U.r+w+w+x+w+x+v+x+x+x+x+y+x+x+x+U.P >+y..+]+]+! 7.7.7.i.D+",
+"7.7.C K.q.!+!+{+j+/ = 6+H+k+,+9+<+<+8+8+8+0+8+<+9+E+C+- / H+q+^+8+7+7+>+r+H+5+[+7+f+7+^+w+D+/ i+H+g+7+d+f+f+7+f+f+f+f+f+f+6+g+!.W >+*+`.{+W.! 9.7.9.i.D+",
+"7.7.Z K.y.D.0+P.j+) & ^+x+; # @ @ @ @ + + . & . + U.G+; ] H+f.& - , , * t.E+q - 7 7 / ' j+C+] i+H+9 7 7 7 8 9 9 9 9 6 6 6 6 0 N Q H.3+.+-+0+! 0.9.0.i.D+",
+"9.9.Z K.p.z.M.B.q+f.P j+y+- ' O 0 O 0 O , . * - Q m+G+, ] H+n.; / / 7 ' ^+D+^.] P P Q 6 i+D+] j+H+O ^.t.n.t.t.n.t.t.t.t.t.t.H.t.m.<+)+C.3+9+! 0.7.9.i.D+",
+"9.0.Z K.I.4+Z.~+H+H+H+H+r+- q+H+H+H+H+H+p+j.= & H+H+r+; / H+t.; / 7 8 ) <+H+!.] O O O 8 i+C+] j+H+0 t.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+7+]+d+'+! 0.0.9.i.D+",
+"9.0.Z K.C.Y.'+#+5+b.0 6+v+' , 0 0 9 9 P q+H+q+b., , ) ; 9 H+t.; / / 7 / 9 <.8 6 P P P 8 i+v+] j+H+O N b.b.c.b.c.b.b.c.c.c.c.c.c.!.U.{+'+>+b+! 0.7.0.i.D+",
+"9.0.Z K.S.Y.~+ +l+6 ' >+D+7 * = * * * & & b.w+H+5+9 = = 8 H+t., 8 8 8 9 7 / 6 O P Q O 8 i+v+] 6+H+9 0 6 6 0 6 0 6 O O O O O O W P H.=+]+G.3+! 7.0.0.i.D+",
+"0.0.Z K.y.N.$+@+i+^.8 f+C+0 - ' ' ' , , - & = u.r+H+5+9 / H+t., / 8 8 9 6 0 0 0 O O O 8 m+D+/ j+H+V.t.s.H.s.H.H.s.V.V.V.V.V.U.j.P s.-+I.~+8+! 0.0.0.i.D+",
+"0.0.Z K.q.V.p.{+m+a.6 <+H+O , ) ' ' ' ' ' ' , & , A.H+m./ H+s., 7 8 9 6 0 O 0 0 O Q Q 8 5+H+] 7+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+m.8 s.|+)+&+9+! 0.0.0.i.F+",
+"0.0.Z R.B.`.M.G.m+a.a.0 !.8 / / ] ' ) ) ] ' ] ] - = 9 ] ) N 9 / 7 8 9 9 0 0 O P Q Q Q P ^.!.8 Q b.b.a.b.b.b.c.b.c.b.).c.c.c.j.q Q s.L.a+X.0+! 0.0.0.h.D+",
+"0.0.Z K.q.S.4+.+n+a.b.Q 6 6 7 ] ' ' ' ' ' ] ' ' ' ' - ' ' ' ' / / 7 7 7 9 9 7 8 6 6 O P 0 6 O 0 6 9 0 6 O O 0 0 0 O O O O P Q a.N H.1+N.9+d+! 0.0.0.i.F+",
+"0.0.Z R.B.C.4+V.m+a.a.t.j.W f.f.a.c.b.] 8 ) 6 !.!.N c.a.Q 6 f.n.O 9 n.j.P 7 f.m.b.b.n.f.O f.n.j.m.n.W a.W j.H.H.f.m.t.n.c.m.H.t.P H.N.N.~+~+~ 0.0.0.h.D+",
+"0.d.Z K.l.Z.)+E.m+^.j.x+m+l+U.f+6+w+m+c.U.a.7+r+y+v+r+f+j+7+^+<+6 m.p+r+f+c.D+U.m+r+7+f+N 7+w+p+s.p+s.U.H.b+<+7+i+i+h+w+6+5+r+r+P H.$+#+[+,+! 0.0.0.i.D+",
+"0.0.Z Q.Z.E.!+{+i+N a.t.b.f.0 O O j.^.j.f.j.O N a.b.a.^.7 N / / ' 0 O O j.f.f.f.c.c.n.f.6 b.n.m.m.n.t.n.s.m.Q W c.t.t.j.b.t.t.H.0 t.4+L.'+0+! d.0.0.i.D+",
+"0.0.Z Q.M.R.$+U.q+j.j.c.b.^.a.W P q 0 0 6 0 8 6 9 9 0 q 0 0 O P Q P q 0 O N O N P P ^.^.^.^.N Q a.N ^.^.a.a.a.a.^.^.a.^.^.^.a.a.W V.1+-+2+9+~ d.d.0.i.F+",
+"0.0.Z Q.l.@+>+@+w+x+x+x+x+x+w+x+x+y+y+x+y+x+x+x+x+y+p+x+x+x+w+y+x+x+x+w+z+x+x+p+x+w+x+y+x+x+y+x+y+x+x+x+x+x+x+x+x+y+x+x+w+y+y+x+x+w+3+R.,+#+! d.d.0.h.D+",
+"0.0.Z Q.C.P.~+-+ +.+G.%+]+u.@+-+]+Y.Y.#+ +4+R. +R..+O.M.=+$+A. +~+@+P.O.z.-+N.=+3+X.2+&+E.*+'+ +R.4+x. +~+ +-+#+4+-+ + +~+-+b+$+N.1+y..+%+,+~ d.d.0.i.F+",
+"0.d.` Q.v.R.@+2+@+*+9+*+ + + +'+{+@+)+]+a+@+y.@+++'+E.D.-+-+&+!+ +X.'+2+Z.X. +#+{+~+X.@+,+G.&+-+E.E.9+*+!+.+E.N.@+ +d+u.>+)+O.L.8+P. +W.*+)+! d.d.0.h.D+",
+"0.d.Z Q.z. +Q.,+y.9+8+++8+,+++F.Q.Q.9+W. +9+Q.++A.&+++>+Q.++[+9+9+,+^+{+9+++~+>+,+,+,+9+~+F.,+,+F.{+++*+++~+9+++9+{+]+*+{+,+{+>+W.f+W.~+c+[+! 0.0.0.i.F+",
+"0.0.R P.T.T.h+h+e+k+k+h+h+9+e+h+h+e+e+e+h+e+h+e+e+h+h+e+e+e+h+e+h+e+e+h+h+e+e+e+h+e+h+e+e+h+h+e+e+e+h+e+h+h+e+e+e+h+e+h+e+k+h+9+k+e+9+h+k+q+! 0.0.0.h.D+",
+"0.0.Z Q.h+s+y+B+s+B+y+y+y+x+x+y+y+y+y+y+y+B+y+y+x+x+y+y+y+x+x+B+y+y+x+x+y+y+y+x+x+B+y+y+y+y+x+x+x+y+y+x+y+y+y+y+x+x+B+y+x+B+x+x+y+y+y+y+y+y+! 0.0.0.i.F+",
+"0.0.^ ~ ! > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ! 0.0.0.h.D+",
+"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.i.F+",
+"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.h.C+",
+"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.h.H+",
+"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.k.H+",
+"o.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.u.H+",
+"k+l+n+n+n+n+n+n+l+n+n+l+n+n+n+n+n+n+l+n+n+l+n+n+n+n+n+n+l+n+n+l+l+l+l+l+l+l+l+l+l+l+l+l+n+n+n+n+n+n+l+n+n+l+n+n+l+n+n+l+n+n+n+n+l+n+n+l+n+n+n+n+n+l+n+n+"};
diff --git a/hdspmixer/pixmaps/empty_linux.xpm b/hdspmixer/pixmaps/empty_linux.xpm
new file mode 100644 (file)
index 0000000..e74ff51
--- /dev/null
@@ -0,0 +1,1791 @@
+/* XPM */
+char * empty_linux_xpm[] = {
+"76 253 1535 2",
+"      c None",
+".     c #404840",
+"+     c #40483F",
+"@     c #202720",
+"#     c #70786F",
+"$     c #707060",
+"%     c #2F2F2F",
+"&     c #A0A0A0",
+"*     c #6F6F6F",
+"=     c #060606",
+"-     c #A0A09F",
+";     c #A09FA0",
+">     c #9FA0A0",
+",     c #9F9FA0",
+"'     c #9FA09F",
+")     c #A09F9F",
+"!     c #9F9F9F",
+"~     c #9F9F9E",
+"{     c #9EA09F",
+"]     c #9E9F9F",
+"^     c #9E9F9E",
+"/     c #9F9E9E",
+"(     c #9F9E9F",
+"_     c #9E9E9E",
+":     c #9E9E9F",
+"<     c #9D9E9D",
+"[     c #9E9E9D",
+"}     c #9D9E9E",
+"|     c #9E9F9D",
+"1     c #9D9F9E",
+"2     c #9D9F9D",
+"3     c #9E9D9E",
+"4     c #9E9D9D",
+"5     c #9D9D9D",
+"6     c #9D9D9E",
+"7     c #9D9E9C",
+"8     c #9C9D9D",
+"9     c #9C9E9D",
+"0     c #9D9D9C",
+"a     c #9C9E9C",
+"b     c #9C9D9C",
+"c     c #9D9C9C",
+"d     c #9C9C9C",
+"e     c #9C9C9D",
+"f     c #9B9C9C",
+"g     c #9B9D9C",
+"h     c #9C9D9B",
+"i     c #9C9C9B",
+"j     c #9B9D9B",
+"k     c #9B9C9B",
+"l     c #9B9B9B",
+"m     c #9B9B9C",
+"n     c #9C9B9B",
+"o     c #9A9C9B",
+"p     c #9B9C9A",
+"q     c #9B9B9A",
+"r     c #9A9C9A",
+"s     c #9A9B9A",
+"t     c #9A9B9B",
+"u     c #9A9A9A",
+"v     c #999B9A",
+"w     c #999B99",
+"x     c #999A99",
+"y     c #9A9B99",
+"z     c #999A9A",
+"A     c #9A9A99",
+"B     c #989A99",
+"C     c #999A98",
+"D     c #989A98",
+"E     c #999999",
+"F     c #999998",
+"G     c #989998",
+"H     c #989999",
+"I     c #989997",
+"J     c #989A97",
+"K     c #979998",
+"L     c #979A98",
+"M     c #979A97",
+"N     c #979997",
+"O     c #979897",
+"P     c #989898",
+"Q     c #989897",
+"R     c #979898",
+"S     c #969897",
+"T     c #969997",
+"U     c #979896",
+"V     c #969896",
+"W     c #979996",
+"X     c #969996",
+"Y     c #969796",
+"Z     c #969797",
+"`     c #979797",
+" .    c #979796",
+"..    c #969795",
+"+.    c #969895",
+"@.    c #959895",
+"#.    c #959796",
+"$.    c #959896",
+"%.    c #959795",
+"&.    c #959695",
+"*.    c #959696",
+"=.    c #959794",
+"-.    c #959694",
+";.    c #949695",
+">.    c #949795",
+",.    c #949794",
+"'.    c #949694",
+").    c #949693",
+"!.    c #939693",
+"~.    c #939694",
+"{.    c #949594",
+"].    c #949593",
+"^.    c #939593",
+"/.    c #939594",
+"(.    c #929593",
+"_.    c #939592",
+":.    c #939493",
+"<.    c #929592",
+"[.    c #929493",
+"}.    c #929492",
+"|.    c #939492",
+"1.    c #929491",
+"2.    c #919592",
+"3.    c #919492",
+"4.    c #919491",
+"5.    c #919591",
+"6.    c #929591",
+"7.    c #919391",
+"8.    c #929392",
+"9.    c #929391",
+"0.    c #919392",
+"a.    c #909391",
+"b.    c #919490",
+"c.    c #919390",
+"d.    c #909390",
+"e.    c #909490",
+"f.    c #909491",
+"g.    c #909291",
+"h.    c #909290",
+"i.    c #919290",
+"j.    c #8F9290",
+"k.    c #8F9390",
+"l.    c #90938F",
+"m.    c #90928F",
+"n.    c #8F938F",
+"o.    c #8F928F",
+"p.    c #90918F",
+"q.    c #8F9190",
+"r.    c #8F918F",
+"s.    c #8F928E",
+"t.    c #8E928F",
+"u.    c #8E918F",
+"v.    c #8F918E",
+"w.    c #8E928E",
+"x.    c #8E918E",
+"y.    c #8E908E",
+"z.    c #8E918D",
+"A.    c #8D918E",
+"B.    c #8D908E",
+"C.    c #8E908D",
+"D.    c #8D918D",
+"E.    c #8D908D",
+"F.    c #8C908D",
+"G.    c #8D908C",
+"H.    c #8C908C",
+"I.    c #8C8F8C",
+"J.    c #8D8F8C",
+"K.    c #8C8F8D",
+"L.    c #8D8F8D",
+"M.    c #8B8F8C",
+"N.    c #8C908B",
+"O.    c #8C8F8B",
+"P.    c #8B8F8B",
+"Q.    c #8B8E8C",
+"R.    c #8C8E8B",
+"S.    c #8B8E8B",
+"T.    c #8C8E8C",
+"U.    c #8B8E8A",
+"V.    c #8A8F8B",
+"W.    c #8A8E8B",
+"X.    c #8B8F8A",
+"Y.    c #8A8E8A",
+"Z.    c #8A8F8A",
+"`.    c #8A8D8A",
+" +    c #8A8D8B",
+".+    c #8B8D8A",
+"++    c #898E8A",
+"@+    c #8A8E89",
+"#+    c #898E89",
+"$+    c #8A8D89",
+"%+    c #898D89",
+"&+    c #898D8A",
+"*+    c #898C89",
+"=+    c #8A8C89",
+"-+    c #898C8A",
+";+    c #898D88",
+">+    c #898C88",
+",+    c #888D89",
+"'+    c #888D88",
+")+    c #888C89",
+"!+    c #888C88",
+"~+    c #878C88",
+"{+    c #6C6E6C",
+"]+    c #3A3A3A",
+"^+    c #303027",
+"/+    c #303022",
+"(+    c #313023",
+"_+    c #303023",
+":+    c #303024",
+"<+    c #2F3024",
+"[+    c #2F2F25",
+"}+    c #2E2F25",
+"|+    c #2E2F26",
+"1+    c #2E2E26",
+"2+    c #2E2E27",
+"3+    c #2D2E27",
+"4+    c #2D2E28",
+"5+    c #2D2D28",
+"6+    c #2C2D28",
+"7+    c #2C2D29",
+"8+    c #2C2C29",
+"9+    c #2C2C2A",
+"0+    c #2B2C2A",
+"a+    c #2B2C2B",
+"b+    c #2A2C2B",
+"c+    c #2A2C2C",
+"d+    c #2A2B2C",
+"e+    c #292B2C",
+"f+    c #292A2D",
+"g+    c #2C2C2E",
+"h+    c #5B5C5B",
+"i+    c #2F2E21",
+"j+    c #6E6D47",
+"k+    c #A19F69",
+"l+    c #A9A971",
+"m+    c #A9A972",
+"n+    c #A9A873",
+"o+    c #A8A774",
+"p+    c #A7A775",
+"q+    c #A7A676",
+"r+    c #A6A677",
+"s+    c #A5A578",
+"t+    c #A4A578",
+"u+    c #A4A47A",
+"v+    c #A3A47B",
+"w+    c #A2A37C",
+"x+    c #A2A27D",
+"y+    c #A1A27E",
+"z+    c #A0A17F",
+"A+    c #9FA181",
+"B+    c #9FA081",
+"C+    c #9E9F82",
+"D+    c #9D9F83",
+"E+    c #9C9E84",
+"F+    c #9C9E85",
+"G+    c #9B9D86",
+"H+    c #9A9D87",
+"I+    c #9A9C87",
+"J+    c #999C89",
+"K+    c #989B8A",
+"L+    c #989A8B",
+"M+    c #979A8C",
+"N+    c #969A8D",
+"O+    c #96998E",
+"P+    c #95988E",
+"Q+    c #95988F",
+"R+    c #949790",
+"S+    c #939692",
+"T+    c #929693",
+"U+    c #919694",
+"V+    c #909495",
+"W+    c #909496",
+"X+    c #8F9497",
+"Y+    c #8E9398",
+"Z+    c #8E9399",
+"`+    c #8D929A",
+" @    c #8C929A",
+".@    c #8C919C",
+"+@    c #838894",
+"@@    c #595D65",
+"#@    c #27282B",
+"$@    c #878C87",
+"%@    c #888B88",
+"&@    c #888C87",
+"*@    c #888B87",
+"=@    c #2E2E29",
+"-@    c #717047",
+";@    c #ABAA6E",
+">@    c #AAA86E",
+",@    c #7F7E54",
+"'@    c #565639",
+")@    c #42422C",
+"!@    c #41402C",
+"~@    c #525239",
+"{@    c #787854",
+"]@    c #A3A374",
+"^@    c #A6A576",
+"/@    c #A4A478",
+"(@    c #A4A479",
+"_@    c #A3A37A",
+":@    c #A2A37B",
+"<@    c #555641",
+"[@    c #404031",
+"}@    c #8D8E6F",
+"|@    c #60614D",
+"1@    c #8A8C70",
+"2@    c #9D9E83",
+"3@    c #9D9E84",
+"4@    c #9C9D84",
+"5@    c #999C87",
+"6@    c #999B89",
+"7@    c #989B89",
+"8@    c #989B8B",
+"9@    c #96998C",
+"0@    c #95998D",
+"a@    c #95998E",
+"b@    c #94978F",
+"c@    c #949890",
+"d@    c #939791",
+"e@    c #939691",
+"f@    c #919593",
+"g@    c #909594",
+"h@    c #909396",
+"i@    c #8F9397",
+"j@    c #8D9398",
+"k@    c #8E929A",
+"l@    c #8B919B",
+"m@    c #8B909D",
+"n@    c #8A909D",
+"o@    c #5B5E68",
+"p@    c #2B2C2D",
+"q@    c #2B2B22",
+"r@    c #95935D",
+"s@    c #ACAB6D",
+"t@    c #706F47",
+"u@    c #22221B",
+"v@    c #34363B",
+"w@    c #5A5D64",
+"x@    c #70747C",
+"y@    c #737780",
+"z@    c #64676E",
+"A@    c #404248",
+"B@    c #20211D",
+"C@    c #626145",
+"D@    c #A3A376",
+"E@    c #A5A579",
+"F@    c #A4A37A",
+"G@    c #68684F",
+"H@    c #1E1E18",
+"I@    c #898A6C",
+"J@    c #999979",
+"K@    c #3C3D31",
+"L@    c #6F715A",
+"M@    c #5A5B4A",
+"N@    c #686956",
+"O@    c #595A4B",
+"P@    c #979981",
+"Q@    c #5B5D4E",
+"R@    c #858774",
+"S@    c #6C6E5F",
+"T@    c #727465",
+"U@    c #6B6D61",
+"V@    c #5B5C52",
+"W@    c #6F7266",
+"X@    c #565850",
+"Y@    c #93968A",
+"Z@    c #93978F",
+"`@    c #929692",
+" #    c #8E9298",
+".#    c #8D9299",
+"+#    c #8C919A",
+"@#    c #8C919B",
+"##    c #8A8F9E",
+"$#    c #8A909E",
+"%#    c #777B88",
+"&#    c #262628",
+"*#    c #878B88",
+"=#    c #878B87",
+"-#    c #868B87",
+";#    c #96945C",
+">#    c #AAA96A",
+",#    c #414129",
+"'#    c #333438",
+")#    c #7A7E85",
+"!#    c #737779",
+"~#    c #92979D",
+"{#    c #979CA4",
+"]#    c #9499A1",
+"^#    c #777A7E",
+"/#    c #8C909A",
+"(#    c #484A50",
+"_#    c #313124",
+":#    c #9B9B71",
+"<#    c #A3A47A",
+"[#    c #77775B",
+"}#    c #25261D",
+"|#    c #9B9C79",
+"1#    c #9A9B7A",
+"2#    c #666753",
+"3#    c #1D1D17",
+"4#    c #35352C",
+"5#    c #2C2D24",
+"6#    c #4E4F42",
+"7#    c #32322A",
+"8#    c #56574B",
+"9#    c #5B5D50",
+"0#    c #67695C",
+"a#    c #0F100E",
+"b#    c #262723",
+"c#    c #85887D",
+"d#    c #95988D",
+"e#    c #94988F",
+"f#    c #939790",
+"g#    c #929691",
+"h#    c #919594",
+"i#    c #8F9396",
+"j#    c #8D919A",
+"k#    c #8B909C",
+"l#    c #777C88",
+"m#    c #2B2B2B",
+"n#    c #878B86",
+"o#    c #727145",
+"p#    c #AEAC6A",
+"q#    c #45484E",
+"r#    c #8B8F96",
+"s#    c #898D8E",
+"t#    c #A9A024",
+"u#    c #646769",
+"v#    c #979CA3",
+"w#    c #808387",
+"x#    c #A8A023",
+"y#    c #707478",
+"z#    c #959AA4",
+"A#    c #656870",
+"B#    c #2C2C21",
+"C#    c #9E9E74",
+"D#    c #A3A479",
+"E#    c #A2A37A",
+"F#    c #76775A",
+"G#    c #8E8E6E",
+"H#    c #7B7C61",
+"I#    c #36372B",
+"J#    c #6D6E58",
+"K#    c #71725E",
+"L#    c #656655",
+"M#    c #3C3D33",
+"N#    c #4B4C3F",
+"O#    c #535548",
+"P#    c #747565",
+"Q#    c #2C2D27",
+"R#    c #959886",
+"S#    c #33332E",
+"T#    c #0A0A09",
+"U#    c #76796E",
+"V#    c #94988E",
+"W#    c #8F9496",
+"X#    c #8D9397",
+"Y#    c #8D9199",
+"Z#    c #8B919C",
+"`#    c #8A909C",
+" $    c #8A8F9D",
+".$    c #898F9E",
+"+$    c #5B5F68",
+"@$    c #595B59",
+"#$    c #878A87",
+"$$    c #2F2E1F",
+"%$    c #AEAC69",
+"&$    c #333437",
+"*$    c #8B8F95",
+"=$    c #989DA2",
+"-$    c #7B794B",
+";$    c #9A9329",
+">$    c #7A7E82",
+",$    c #979DA4",
+"'$    c #92969D",
+")$    c #969033",
+"!$    c #7A783C",
+"~$    c #9499A2",
+"{$    c #959BA5",
+"]$    c #51535A",
+"^$    c #4C4C38",
+"/$    c #A3A379",
+"($    c #3E3E30",
+"_$    c #0A0A08",
+":$    c #1F2018",
+"<$    c #1C1D16",
+"[$    c #10110D",
+"}$    c #38392C",
+"|$    c #0F0F0C",
+"1$    c #4C4D3F",
+"2$    c #35352D",
+"3$    c #1A1A16",
+"4$    c #646555",
+"5$    c #181916",
+"6$    c #262721",
+"7$    c #0E0E0D",
+"8$    c #3C3D35",
+"9$    c #30302C",
+"0$    c #151513",
+"a$    c #868A7E",
+"b$    c #929690",
+"c$    c #8F9494",
+"d$    c #8F9495",
+"e$    c #8E9397",
+"f$    c #8D9298",
+"g$    c #8C9199",
+"h$    c #898F9D",
+"i$    c #868B86",
+"j$    c #868A86",
+"k$    c #868A87",
+"l$    c #6C6D6C",
+"m$    c #706F43",
+"n$    c #ADAB68",
+"o$    c #22221A",
+"p$    c #7A7E84",
+"q$    c #848788",
+"r$    c #7C7B4A",
+"s$    c #B9AF27",
+"t$    c #4D4D3B",
+"u$    c #908A26",
+"v$    c #707373",
+"w$    c #7F8386",
+"x$    c #8C8625",
+"y$    c #5E5F4F",
+"z$    c #B5AC28",
+"A$    c #7E7B42",
+"B$    c #7D8186",
+"C$    c #9398A2",
+"D$    c #1F2020",
+"E$    c #8D8D68",
+"F$    c #8F906D",
+"G$    c #7B7C5F",
+"H$    c #7B7B5F",
+"I$    c #7D7E62",
+"J$    c #7F7F64",
+"K$    c #7D7D64",
+"L$    c #7D7E65",
+"M$    c #7E8068",
+"N$    c #878970",
+"O$    c #777964",
+"P$    c #92947C",
+"Q$    c #7A7D6A",
+"R$    c #787968",
+"S$    c #787A6A",
+"T$    c #7C7F6F",
+"U$    c #747769",
+"V$    c #828576",
+"W$    c #73766A",
+"X$    c #888B7F",
+"Y$    c #95988C",
+"Z$    c #94988D",
+"`$    c #94978E",
+" %    c #939690",
+".%    c #929791",
+"+%    c #909593",
+"@%    c #909494",
+"#%    c #8F9395",
+"$%    c #8E9396",
+"%%    c #8E9297",
+"&%    c #8C9198",
+"*%    c #8B909B",
+"=%    c #8A909B",
+"-%    c #595D66",
+";%    c #6A6C6A",
+">%    c #878A86",
+",%    c #393A39",
+"'%    c #A4A261",
+")%    c #848350",
+"!%    c #333538",
+"~%    c #797C7D",
+"{%    c #A19922",
+"]%    c #968F2A",
+"^%    c #4C4D3C",
+"/%    c #ADA429",
+"(%    c #706D31",
+"_%    c #7D8187",
+":%    c #959AA1",
+"<%    c #767445",
+"[%    c #B3AA29",
+"}%    c #938C2F",
+"|%    c #AFA625",
+"1%    c #63676A",
+"2%    c #53565D",
+"3%    c #52523D",
+"4%    c #A2A379",
+"5%    c #868666",
+"6%    c #61624B",
+"7%    c #919372",
+"8%    c #9FA07E",
+"9%    c #9E9F7F",
+"0%    c #9EA080",
+"a%    c #9D9F81",
+"b%    c #9C9E82",
+"c%    c #9C9D83",
+"d%    c #9B9D84",
+"e%    c #9B9C85",
+"f%    c #616354",
+"g%    c #848674",
+"h%    c #76786A",
+"i%    c #888B7B",
+"j%    c #979A8A",
+"k%    c #96998A",
+"l%    c #96988B",
+"m%    c #95998C",
+"n%    c #93968F",
+"o%    c #92978F",
+"p%    c #909493",
+"q%    c #8F9394",
+"r%    c #8E9296",
+"s%    c #8D9297",
+"t%    c #8B919A",
+"u%    c #8A8F9C",
+"v%    c #818694",
+"w%    c #383938",
+"x%    c #868A85",
+"y%    c #858A86",
+"z%    c #858A85",
+"A%    c #303026",
+"B%    c #AFAD67",
+"C%    c #5B5A36",
+"D%    c #585B60",
+"E%    c #969B9E",
+"F%    c #6D7072",
+"G%    c #808488",
+"H%    c #888326",
+"I%    c #706C32",
+"J%    c #7C8086",
+"K%    c #878C92",
+"L%    c #858A90",
+"M%    c #9499A0",
+"N%    c #8F8923",
+"O%    c #7F8389",
+"P%    c #6E7277",
+"Q%    c #81858F",
+"R%    c #7B7F88",
+"S%    c #29291E",
+"T%    c #A0A076",
+"U%    c #A1A37A",
+"V%    c #7E7F60",
+"W%    c #050504",
+"X%    c #3C3D2F",
+"Y%    c #9E9F7D",
+"Z%    c #898A6E",
+"`%    c #87896D",
+" &    c #929377",
+".&    c #7D7F67",
+"+&    c #9B9D82",
+"@&    c #8F9179",
+"#&    c #757665",
+"$&    c #33332B",
+"%&    c #494A40",
+"&&    c #4D4E44",
+"*&    c #636559",
+"=&    c #949686",
+"-&    c #6C6F63",
+";&    c #7F8175",
+">&    c #95988B",
+",&    c #909492",
+"'&    c #8E9395",
+")&    c #8D9296",
+"!&    c #8B9199",
+"~&    c #8B909A",
+"{&    c #898F9C",
+"]&    c #2A2C2D",
+"^&    c #30301F",
+"/&    c #47462A",
+"(&    c #6E7176",
+"_&    c #989DA1",
+":&    c #989CA2",
+"<&    c #797D7E",
+"[&    c #7F8388",
+"}&    c #8C9196",
+"|&    c #080808",
+"1&    c #030304",
+"2&    c #7B7F86",
+"3&    c #6B6E71",
+"4&    c #8D929B",
+"5&    c #969BA5",
+"6&    c #8D939D",
+"7&    c #181812",
+"8&    c #9A9A72",
+"9&    c #5F5F49",
+"0&    c #39392C",
+"a&    c #141410",
+"b&    c #8E9071",
+"c&    c #5C5D4A",
+"d&    c #25251D",
+"e&    c #7A7C64",
+"f&    c #0E0F0C",
+"g&    c #777963",
+"h&    c #2E2F27",
+"i&    c #10100D",
+"j&    c #1B1C19",
+"k&    c #5B5D52",
+"l&    c #292A25",
+"m&    c #282925",
+"n&    c #191917",
+"o&    c #66685F",
+"p&    c #94988C",
+"q&    c #93978E",
+"r&    c #92968F",
+"s&    c #919690",
+"t&    c #8D9197",
+"u&    c #8C9298",
+"v&    c #8A909A",
+"w&    c #8A8F9B",
+"x&    c #27292C",
+"y&    c #868986",
+"z&    c #B0AD67",
+"A&    c #48472A",
+"B&    c #707378",
+"C&    c #999DA1",
+"D&    c #7B7F7E",
+"E&    c #92979B",
+"F&    c #0A0B0A",
+"G&    c #040404",
+"H&    c #6C7179",
+"I&    c #767A7B",
+"J&    c #969BA4",
+"K&    c #8D929D",
+"L&    c #161610",
+"M&    c #979871",
+"N&    c #A1A179",
+"O&    c #1B1B14",
+"P&    c #1C1C16",
+"Q&    c #0D0D0A",
+"R&    c #555643",
+"S&    c #85866A",
+"T&    c #21211B",
+"U&    c #96987B",
+"V&    c #181814",
+"W&    c #4A4B3E",
+"X&    c #33342B",
+"Y&    c #93967E",
+"Z&    c #4C4E42",
+"`&    c #494B40",
+" *    c #42433A",
+".*    c #4D4E45",
+"+*    c #848779",
+"@*    c #717368",
+"#*    c #2A2B28",
+"$*    c #93968B",
+"%*    c #94978D",
+"&*    c #8D9295",
+"**    c #8C9197",
+"=*    c #8B9198",
+"-*    c #8B9099",
+";*    c #8A8F9A",
+">*    c #89909B",
+",*    c #898E9C",
+"'*    c #868985",
+")*    c #858985",
+"!*    c #848985",
+"~*    c #AFAD66",
+"{*    c #5C5C37",
+"]*    c #5E6165",
+"^*    c #969A9D",
+"/*    c #757978",
+"(*    c #939799",
+"_*    c #8A8529",
+":*    c #7F7B3A",
+"<*    c #91959A",
+"[*    c #858A91",
+"}*    c #747780",
+"|*    c #7C7A43",
+"1*    c #938B23",
+"2*    c #75797D",
+"3*    c #8F959D",
+"4*    c #7A7E86",
+"5*    c #212118",
+"6*    c #9B9C73",
+"7*    c #575841",
+"8*    c #78795C",
+"9*    c #494938",
+"0*    c #14140F",
+"a*    c #78795F",
+"b*    c #535444",
+"c*    c #070705",
+"d*    c #5B5C4B",
+"e*    c #161713",
+"f*    c #545548",
+"g*    c #151512",
+"h*    c #32322B",
+"i*    c #23241F",
+"j*    c #404139",
+"k*    c #22231F",
+"l*    c #474941",
+"m*    c #454640",
+"n*    c #93978D",
+"o*    c #93968E",
+"p*    c #91968F",
+"q*    c #909591",
+"r*    c #8F9492",
+"s*    c #8F9493",
+"t*    c #8E9394",
+"u*    c #8D9395",
+"v*    c #8A9099",
+"w*    c #898F9B",
+"x*    c #888F9C",
+"y*    c #2A2B2D",
+"z*    c #858A84",
+"A*    c #3B3C3A",
+"B*    c #A2A05E",
+"C*    c #86854F",
+"D*    c #393B3D",
+"E*    c #7E8281",
+"F*    c #A29922",
+"G*    c #A29A2C",
+"H*    c #60604C",
+"I*    c #A9A12C",
+"J*    c #807C39",
+"K*    c #94999F",
+"L*    c #B0A729",
+"M*    c #4C4C3A",
+"N*    c #9A922B",
+"O*    c #B0A625",
+"P*    c #626568",
+"Q*    c #51545A",
+"R*    c #3E3F2E",
+"S*    c #A0A177",
+"T*    c #727355",
+"U*    c #565641",
+"V*    c #77785C",
+"W*    c #77785E",
+"X*    c #76775F",
+"Y*    c #505141",
+"Z*    c #5E5F4E",
+"`*    c #6F705C",
+" =    c #80826B",
+".=    c #515244",
+"+=    c #646556",
+"@=    c #585A4D",
+"#=    c #56584C",
+"$=    c #5A5B50",
+"%=    c #878979",
+"&=    c #505148",
+"*=    c #56584F",
+"==    c #86897D",
+"-=    c #94978C",
+";=    c #93978C",
+">=    c #93968D",
+",=    c #92968E",
+"'=    c #92958F",
+")=    c #919590",
+"!=    c #8F9393",
+"~=    c #8D9294",
+"{=    c #888E9C",
+"]=    c #7F8692",
+"^=    c #3A3B3A",
+"/=    c #848A84",
+"(=    c #848984",
+"_=    c #858984",
+":=    c #6F706F",
+"<=    c #6C6C3F",
+"[=    c #ADAB66",
+"}=    c #24241B",
+"|=    c #898D91",
+"1=    c #7F8385",
+"2=    c #716F46",
+"3=    c #BBB128",
+"4=    c #5C5C48",
+"5=    c #898327",
+"6=    c #666969",
+"7=    c #808487",
+"8=    c #868025",
+"9=    c #4B4C3C",
+"0=    c #B8AF28",
+"a=    c #696738",
+"b=    c #6A6E74",
+"c=    c #868B94",
+"d=    c #1B1B1B",
+"e=    c #707051",
+"f=    c #A2A378",
+"g=    c #93946E",
+"h=    c #8F906C",
+"i=    c #90916E",
+"j=    c #9E9F7A",
+"k=    c #9FA07C",
+"l=    c #9EA07D",
+"m=    c #9E9F7E",
+"n=    c #9C9E7F",
+"o=    c #9C9E81",
+"p=    c #9A9C82",
+"q=    c #9A9C84",
+"r=    c #999B84",
+"s=    c #989B85",
+"t=    c #989A86",
+"u=    c #919482",
+"v=    c #878A7A",
+"w=    c #959889",
+"x=    c #95978B",
+"y=    c #92978D",
+"z=    c #909590",
+"A=    c #8E9393",
+"B=    c #8C9295",
+"C=    c #8A9098",
+"D=    c #898F9A",
+"E=    c #888F9B",
+"F=    c #565A62",
+"G=    c #6D6F6D",
+"H=    c #848884",
+"I=    c #818682",
+"J=    c #2D2C1F",
+"K=    c #AEAC66",
+"L=    c #757445",
+"M=    c #3B3D3F",
+"N=    c #979CA0",
+"O=    c #979BA0",
+"P=    c #76744C",
+"Q=    c #A0982A",
+"R=    c #828689",
+"S=    c #8F949A",
+"T=    c #8A8F94",
+"U=    c #958F2D",
+"V=    c #6D6B37",
+"W=    c #848891",
+"X=    c #959BA4",
+"Y=    c #4E5056",
+"Z=    c #2E2E21",
+"`=    c #98996E",
+" -    c #3C3C2C",
+".-    c #090A08",
+"+-    c #1A1B14",
+"@-    c #191913",
+"#-    c #848467",
+"$-    c #9C9D7C",
+"%-    c #9C9E7E",
+"&-    c #9B9E80",
+"*-    c #9B9D81",
+"=-    c #999C83",
+"--    c #959883",
+";-    c #979A86",
+">-    c #747668",
+",-    c #0D0D0B",
+"'-    c #85887A",
+")-    c #94988A",
+"!-    c #929588",
+"~-    c #94968C",
+"{-    c #92958E",
+"]-    c #91958F",
+"^-    c #8F9491",
+"/-    c #8C9090",
+"(-    c #8B9097",
+"_-    c #8A8F99",
+":-    c #888D9B",
+"<-    c #262629",
+"[-    c #858884",
+"}-    c #606160",
+"|-    c #6C6B40",
+"1-    c #ADAB67",
+"2-    c #434328",
+"3-    c #56585B",
+"4-    c #979CA1",
+"5-    c #8A8E8F",
+"6-    c #A09722",
+"7-    c #646768",
+"8-    c #979CA2",
+"9-    c #9F9621",
+"0-    c #64676C",
+"a-    c #959AA3",
+"b-    c #64676D",
+"c-    c #171812",
+"d-    c #7C7D59",
+"e-    c #A2A377",
+"f-    c #737355",
+"g-    c #25241B",
+"h-    c #939570",
+"i-    c #64654D",
+"j-    c #2C2C22",
+"k-    c #5B5C47",
+"l-    c #191813",
+"m-    c #1E1E17",
+"n-    c #646552",
+"o-    c #525345",
+"p-    c #191A15",
+"q-    c #35362D",
+"r-    c #393A31",
+"s-    c #181815",
+"t-    c #272823",
+"u-    c #8A8D7B",
+"v-    c #161715",
+"w-    c #787A6E",
+"x-    c #252623",
+"y-    c #11120F",
+"z-    c #343631",
+"A-    c #494B46",
+"B-    c #191B19",
+"C-    c #1A1B19",
+"D-    c #1F201F",
+"E-    c #7A7E7A",
+"F-    c #323433",
+"G-    c #161817",
+"H-    c #282A2A",
+"I-    c #56595A",
+"J-    c #161617",
+"K-    c #262728",
+"L-    c #2D2F30",
+"M-    c #1C1C1E",
+"N-    c #292B2D",
+"O-    c #858B95",
+"P-    c #898E9B",
+"Q-    c #888E9B",
+"R-    c #555A61",
+"S-    c #5E605E",
+"T-    c #848883",
+"U-    c #848983",
+"V-    c #918F56",
+"W-    c #A8A765",
+"X-    c #403E27",
+"Y-    c #3F4043",
+"Z-    c #8F9498",
+"`-    c #747879",
+" ;    c #85898E",
+".;    c #969BA1",
+"+;    c #727578",
+"@;    c #848890",
+"#;    c #484B4F",
+"$;    c #191912",
+"%;    c #70704F",
+"&;    c #A2A274",
+"*;    c #A3A476",
+"=;    c #A2A376",
+"-;    c #737455",
+";;    c #24251B",
+">;    c #9B9C76",
+",;    c #808162",
+"';    c #191A14",
+");    c #0C0C0A",
+"!;    c #36372C",
+"~;    c #2B2B23",
+"{;    c #464739",
+"];    c #4F5041",
+"^;    c #1C1D18",
+"/;    c #535547",
+"(;    c #0D0E0B",
+"_;    c #3C3D34",
+":;    c #25251F",
+"<;    c #4B4C43",
+"[;    c #161714",
+"};    c #464840",
+"|;    c #31312D",
+"1;    c #82857A",
+"2;    c #31332F",
+"3;    c #4B4D48",
+"4;    c #121212",
+"5;    c #737670",
+"6;    c #5B5D59",
+"7;    c #151615",
+"8;    c #0E100F",
+"9;    c #393B3A",
+"0;    c #4C4E4F",
+"a;    c #0A0A0A",
+"b;    c #626669",
+"c;    c #55585E",
+"d;    c #868C96",
+"e;    c #717682",
+"f;    c #2D2E2E",
+"g;    c #838884",
+"h;    c #838983",
+"i;    c #838984",
+"j;    c #838883",
+"k;    c #2A2A24",
+"l;    c #8F8D55",
+"m;    c #A9A966",
+"n;    c #67653E",
+"o;    c #424447",
+"p;    c #7E8387",
+"q;    c #6C7175",
+"r;    c #46484B",
+"s;    c #171815",
+"t;    c #343424",
+"u;    c #81815A",
+"v;    c #A3A373",
+"w;    c #A3A375",
+"x;    c #64654A",
+"y;    c #1C1C15",
+"z;    c #747457",
+"A;    c #2E2E23",
+"B;    c #3B3B2E",
+"C;    c #525341",
+"D;    c #444436",
+"E;    c #535443",
+"F;    c #84866C",
+"G;    c #7F816C",
+"H;    c #131310",
+"I;    c #5A5C4E",
+"J;    c #34352E",
+"K;    c #5D5F53",
+"L;    c #131311",
+"M;    c #4F5148",
+"N;    c #252621",
+"O;    c #7A7D71",
+"P;    c #1F1F1D",
+"Q;    c #4C4F49",
+"R;    c #6F736D",
+"S;    c #414340",
+"T;    c #232322",
+"U;    c #131414",
+"V;    c #565957",
+"W;    c #2E3030",
+"X;    c #5C5F5F",
+"Y;    c #0C0D0D",
+"Z;    c #777C80",
+"`;    c #505356",
+" >    c #53565A",
+".>    c #7E848D",
+"+>    c #898E9A",
+"@>    c #717680",
+"#>    c #67663E",
+"$>    c #AAA968",
+"%>    c #9F9D62",
+"&>    c #6C6B43",
+"*>    c #3E3D27",
+"=>    c #272719",
+"->    c #242317",
+";>    c #2F2F1F",
+">>    c #4E4E34",
+",>    c #7B7B53",
+"'>    c #9E9E6C",
+")>    c #A4A572",
+"!>    c #A4A473",
+"~>    c #A4A474",
+"{>    c #A2A375",
+"]>    c #4E4E39",
+"^>    c #2B2B20",
+"/>    c #444534",
+"(>    c #888969",
+"_>    c #828365",
+":>    c #2C2D23",
+"<>    c #2D2D24",
+"[>    c #787961",
+"}>    c #9B9D7F",
+"|>    c #48493C",
+"1>    c #999B82",
+"2>    c #686A59",
+"3>    c #24251F",
+"4>    c #383931",
+"5>    c #626456",
+"6>    c #595B51",
+"7>    c #51534A",
+"8>    c #21211E",
+"9>    c #44453F",
+"0>    c #72756C",
+"a>    c #131413",
+"b>    c #2D2F2C",
+"c>    c #2F302E",
+"d>    c #727572",
+"e>    c #5D605E",
+"f>    c #212221",
+"g>    c #383A39",
+"h>    c #5A5D5D",
+"i>    c #272728",
+"j>    c #5C5F62",
+"k>    c #3E4042",
+"l>    c #262729",
+"m>    c #383A3E",
+"n>    c #7F848D",
+"o>    c #838784",
+"p>    c #838783",
+"q>    c #646564",
+"r>    c #65643E",
+"s>    c #99975F",
+"t>    c #A9A86A",
+"u>    c #A5A56A",
+"v>    c #A3A26A",
+"w>    c #A5A46C",
+"x>    c #A6A56F",
+"y>    c #A6A670",
+"z>    c #A5A571",
+"A>    c #A5A572",
+"B>    c #A0A175",
+"C>    c #9D9D75",
+"D>    c #9D9D76",
+"E>    c #9E9F78",
+"F>    c #9FA07A",
+"G>    c #9E9F7B",
+"H>    c #9B9D7A",
+"I>    c #989979",
+"J>    c #9C9E7D",
+"K>    c #9C9D7F",
+"L>    c #999B7F",
+"M>    c #989A7F",
+"N>    c #999B83",
+"O>    c #959780",
+"P>    c #949781",
+"Q>    c #969985",
+"R>    c #939684",
+"S>    c #939685",
+"T>    c #949888",
+"U>    c #909285",
+"V>    c #919588",
+"W>    c #4E504A",
+"X>    c #0E0E0E",
+"Y>    c #71746E",
+"Z>    c #8D918B",
+"`>    c #90948F",
+" ,    c #8F948F",
+".,    c #8B8F8D",
+"+,    c #8B8F8F",
+"@,    c #8D9292",
+"#,    c #8A8F91",
+"$,    c #8A8F93",
+"%,    c #797E84",
+"&,    c #4E5256",
+"*,    c #252627",
+"=,    c #636463",
+"-,    c #828783",
+";,    c #828883",
+">,    c #838882",
+",,    c #747674",
+"',    c #414240",
+"),    c #30302A",
+"!,    c #313125",
+"~,    c #303123",
+"{,    c #313123",
+"],    c #313024",
+"^,    c #303124",
+"/,    c #303025",
+"(,    c #2F3026",
+"_,    c #2F2F27",
+":,    c #2D2E29",
+"<,    c #2C2D2A",
+"[,    c #292A28",
+"},    c #20211F",
+"|,    c #262625",
+"1,    c #2C2C2B",
+"2,    c #2C2C2C",
+"3,    c #2B2C2C",
+"4,    c #2B2B2C",
+"5,    c #414241",
+"6,    c #828782",
+"7,    c #828882",
+"8,    c #838782",
+"9,    c #828781",
+"0,    c #818782",
+"a,    c #818781",
+"b,    c #828682",
+"c,    c #818681",
+"d,    c #828681",
+"e,    c #BED2BC",
+"f,    c #525650",
+"g,    c #292B2A",
+"h,    c #111212",
+"i,    c #606460",
+"j,    c #757A75",
+"k,    c #ACB8AC",
+"l,    c #DEDEDE",
+"m,    c #EFF0EF",
+"n,    c #FEFEFC",
+"o,    c #808681",
+"p,    c #818680",
+"q,    c #687068",
+"r,    c #424543",
+"s,    c #D6D6D4",
+"t,    c #808781",
+"u,    c #818580",
+"v,    c #818581",
+"w,    c #808680",
+"x,    c #808581",
+"y,    c #808580",
+"z,    c #7F8580",
+"A,    c #80857F",
+"B,    c #80867F",
+"C,    c #7F857F",
+"D,    c #7F867F",
+"E,    c #80847F",
+"F,    c #1C1C1C",
+"G,    c #808480",
+"H,    c #7F847F",
+"I,    c #7F8480",
+"J,    c #7E847F",
+"K,    c #7E857F",
+"L,    c #7F847E",
+"M,    c #7E847E",
+"N,    c #7E837F",
+"O,    c #7F837E",
+"P,    c #7E837E",
+"Q,    c #C6C6C4",
+"R,    c #E8E9E9",
+"S,    c #7E847D",
+"T,    c #7D837D",
+"U,    c #7D847D",
+"V,    c #7D847E",
+"W,    c #7E837D",
+"X,    c #CBCBCC",
+"Y,    c #7D837E",
+"Z,    c #939992",
+"`,    c #7D827D",
+" '    c #7C837C",
+".'    c #7D837C",
+"+'    c #353835",
+"@'    c #7C837D",
+"#'    c #7D827C",
+"$'    c #7C827D",
+"%'    c #7C827C",
+"&'    c #B3C0B4",
+"*'    c #C7D9C5",
+"='    c #DBF3DC",
+"-'    c #D6ECD4",
+";'    c #D2E9D4",
+">'    c #7C827B",
+",'    c #CDE4CE",
+"''    c #7C817C",
+")'    c #7B827C",
+"!'    c #7B817B",
+"~'    c #7B817C",
+"{'    c #C8DEC9",
+"]'    c #7B827B",
+"^'    c #7C817B",
+"/'    c #9DA79E",
+"('    c #C2DAC4",
+"_'    c #7A817B",
+":'    c #7B817A",
+"<'    c #7A807B",
+"['    c #7A817A",
+"}'    c #7B807A",
+"|'    c #7A807A",
+"1'    c #A6B0A6",
+"2'    c #7A8079",
+"3'    c #79807A",
+"4'    c #798079",
+"5'    c #7A7F7A",
+"6'    c #7A7F79",
+"7'    c #797F79",
+"8'    c #787F79",
+"9'    c #788079",
+"0'    c #787F78",
+"a'    c #798078",
+"b'    c #797F78",
+"c'    c #787E78",
+"d'    c #787E79",
+"e'    c #787F77",
+"f'    c #787E77",
+"g'    c #777E78",
+"h'    c #777F77",
+"i'    c #777E77",
+"j'    c #D2D2D4",
+"k'    c #777D77",
+"l'    c #777E76",
+"m'    c #767D77",
+"n'    c #777D76",
+"o'    c #767E77",
+"p'    c #767E76",
+"q'    c #767D76",
+"r'    c #767C76",
+"s'    c #767D75",
+"t'    c #757D75",
+"u'    c #757D76",
+"v'    c #757C76",
+"w'    c #767C75",
+"x'    c #757C75",
+"y'    c #757C74",
+"z'    c #747D75",
+"A'    c #747C75",
+"B'    c #747C74",
+"C'    c #757B75",
+"D'    c #757B74",
+"E'    c #747B74",
+"F'    c #747B75",
+"G'    c #747C73",
+"H'    c #747B73",
+"I'    c #737C74",
+"J'    c #737B74",
+"K'    c #737C73",
+"L'    c #737B73",
+"M'    c #747A74",
+"N'    c #747A73",
+"O'    c #737A74",
+"P'    c #737A73",
+"Q'    c #808880",
+"R'    c #4D4E4D",
+"S'    c #2D3030",
+"T'    c #5F685F",
+"U'    c #737B72",
+"V'    c #7F887F",
+"W'    c #4F584F",
+"X'    c #4F504F",
+"Y'    c #414641",
+"Z'    c #50584F",
+"`'    c #405040",
+" )    c #3F443F",
+".)    c #4E514E",
+"+)    c #727B72",
+"@)    c #727A73",
+"#)    c #727972",
+"$)    c #5E615E",
+"%)    c #5A5D5A",
+"&)    c #626562",
+"*)    c #575A57",
+"=)    c #666966",
+"-)    c #5A5C5A",
+";)    c #696D6A",
+">)    c #535653",
+",)    c #5B605B",
+"')    c #515451",
+"))    c #565956",
+"!)    c #545754",
+"~)    c #525552",
+"{)    c #555A55",
+"])    c #404340",
+"^)    c #454645",
+"/)    c #A6A6A6",
+"()    c #737A72",
+"_)    c #535654",
+":)    c #4D524D",
+"<)    c #4A4E4A",
+"[)    c #4B4F4B",
+"})    c #50534F",
+"|)    c #494C49",
+"1)    c #484B48",
+"2)    c #4D504D",
+"3)    c #454A45",
+"4)    c #474C47",
+"5)    c #4A4D4A",
+"6)    c #505350",
+"7)    c #4B504B",
+"8)    c #4C504B",
+"9)    c #424542",
+"0)    c #464946",
+"a)    c #555855",
+"b)    c #494E49",
+"c)    c #434743",
+"d)    c #434645",
+"e)    c #AAAAAA",
+"f)    c #727A72",
+"g)    c #444843",
+"h)    c #444744",
+"i)    c #4C4F4C",
+"j)    c #414441",
+"k)    c #3D413D",
+"l)    c #393B39",
+"m)    c #3B3F3B",
+"n)    c #3E413E",
+"o)    c #4F544F",
+"p)    c #464A45",
+"q)    c #494E4E",
+"r)    c #393D39",
+"s)    c #464A4A",
+"t)    c #3C3F3C",
+"u)    c #494A49",
+"v)    c #07090A",
+"w)    c #0F1010",
+"x)    c #100F0F",
+"y)    c #0D0D0D",
+"z)    c #0F0F0F",
+"A)    c #727973",
+"B)    c #939DA1",
+"C)    c #9CA5A9",
+"D)    c #A9B5B9",
+"E)    c #B8C5C9",
+"F)    c #C4CACB",
+"G)    c #B2BDC2",
+"H)    c #AEBDC1",
+"I)    c #A2ADB2",
+"J)    c #949A9B",
+"K)    c #8E999C",
+"L)    c #8C969A",
+"M)    c #8A9395",
+"N)    c #848E91",
+"O)    c #848B8B",
+"P)    c #7E898B",
+"Q)    c #7A8386",
+"R)    c #727B7D",
+"S)    c #6C7274",
+"T)    c #6D7679",
+"U)    c #778082",
+"V)    c #757E81",
+"W)    c #717678",
+"X)    c #646B6D",
+"Y)    c #494F51",
+"Z)    c #333434",
+"`)    c #BECDD2",
+" !    c #D1E0E5",
+".!    c #A1ACAE",
+"+!    c #869194",
+"@!    c #7D8689",
+"#!    c #686E71",
+"$!    c #3C3E40",
+"%!    c #333433",
+"&!    c #717972",
+"*!    c #717A72",
+"=!    c #050606",
+"-!    c #01070E",
+";!    c #070707",
+">!    c #242728",
+",!    c #1E2120",
+"'!    c #0B040B",
+")!    c #000000",
+"!!    c #3E3F3E",
+"~!    c #3E4142",
+"{!    c #363A39",
+"]!    c #40423F",
+"^!    c #363A36",
+"/!    c #727A71",
+"(!    c #C7D5D9",
+"_!    c #FBFFFF",
+":!    c #F2FFFF",
+"<!    c #E7F6F9",
+"[!    c #030303",
+"}!    c #616669",
+"|!    c #545A5C",
+"1!    c #4D5254",
+"2!    c #3F423F",
+"3!    c #454945",
+"4!    c #717971",
+"5!    c #222425",
+"6!    c #595F61",
+"7!    c #5C6365",
+"8!    c #727971",
+"9!    c #717871",
+"0!    c #212E2E",
+"a!    c #717970",
+"b!    c #707971",
+"c!    c #3B403B",
+"d!    c #474A47",
+"e!    c #707871",
+"f!    c #6E716E",
+"g!    c #707870",
+"h!    c #717870",
+"i!    c #707970",
+"j!    c #303730",
+"k!    c #4F524F",
+"l!    c #515251",
+"m!    c #373C37",
+"n!    c #303F30",
+"o!    c #0F1510",
+"p!    c #B5B6B6",
+"q!    c #050505",
+"r!    c #6D6D6D",
+"s!    c #666666",
+"t!    c #606860",
+"u!    c #506050",
+"v!    c #5D5C5D",
+"w!    c #202F2F",
+"x!    c #1F261F",
+". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ ",
+"# $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % ",
+"& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & * = ",
+"& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & * = ",
+"& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & * = ",
+"& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & * = ",
+"& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & * = ",
+"& & - & & & ; & > - & - ; - - & & & & & & & & & & & & & & , & & & & & - > & > & & & & & & - , & - > > & & & & & & & & & & & & & > & - & & & & & & & * = ",
+"& & & ' ; & & ' ; & ' - & > > ) ; & ) > , & & & ) & & & & - & & & > > & ; > - & & ; - ) - & & & > ; - & & - ) ; & & - & ; ; & & & & ; & > > & & & ) * = ",
+"- > & ) & ; & - > > & ; > & ; & - & > , > ) > & - & - > & , & & > - ; > ! ' & & > & & ! - & - & ; & - & - & - > & ) ' ) - & > ' & ' > ; & - > & ' & * = ",
+"- - ! - ' & ' ' ) & ; ) - > & & ; & - ) & > - - > - - > & ' ! & ' > ! ; ) & & > > - > & > , > ) - ; & > ' - ! ; ) ! ' & - ' ) ' ) - & ; - - & & , & * = ",
+") > - - ) ! ; ) ! ! , , - ' ) > - ' ) ) - ' ; & , & , ! ' ) ! ; & > & , - ) ) & ! & & ! - ' ! ! , - ' ! ; > - ' ' ' ! ' , - > , > ' ! ) ' , - ! > ) * = ",
+") , ! , - ! ! , ) - ! , ! > > & - ) ; ; ' ; ) ! - , ! ' ) ' ' ' , > ; ! > > ) ) ; ' , - ) , , & > - > ! ! ' - ! ! ) ! > - ; ' ; ' ! , , ) ! ) ) ' ! * = ",
+"' ! ) ! ; , - ' ! , ' ' ; , ! ! ' ' ! ! ! ! ' > - ! - ! , ' ! ! ) & ' ! ' ) ! ' , , ' ! ' - > > ! ! ' ) ! ! ' ! ! ' ' ! ! ! , - ! ' ) ' ! ' ) ! ! > * = ",
+"' ! ! ! ! ' ! ' ) ! ) , ! ! ! ! ! ' ! ' ! ' ! ! ' ! ! ' ' , ! ' ! , - ! ! , ! ! ! ! ' , ! ' ) ! ! ' ! ' ! ! ! ! ) ! ' ' ! ! ! ! ' ' > ! ! ! ' ! ) ! * = ",
+"! ~ ! ! ! ! ! ! ' ' ! ! ! ' ! ! ! ' ! ! ! ! ! ! ! ! ! ! ! ! ! ! ~ ! ! { ! ' ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ' ! ! ! ' ! ! ! ] ! { ! ! ! ! ! * = ",
+"! ! ! ! ! ~ ! ! ! ! ! ~ ] ! ! ! ! ~ ~ ! ! ! ! ! ! ! ! ~ ~ ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ' ! ! ] ! ~ ~ ~ ! ] ] ! ! ! ! ! ] ~ ~ ! ! ! ' ! ^ ] ] * = ",
+"! ~ ! ] ! ! ! ~ ! ! ! ! ] ] ! / ! ] ( ! ! ( ! ! ! ! ! ] ( ! ~ ! ~ ~ ! ~ ] ] ] ! ! ! ! ~ ! ] ] ^ ~ ( ! ( ! ^ ] ] ] ! ! ~ ~ ! ~ ! _ ] ] ! ~ ! ] ! ! ! * = ",
+"^ ! ^ ] ~ ] ! ! ! ^ ! ^ ! / ^ : ~ ~ ] ! ~ ^ ! ~ ~ ^ ^ ! ! ^ / ^ ( ! ! ( _ : ] ^ ! ~ ! ! ! ! ! ! ] ! ^ ! ~ ^ ! ! ~ ! ] ( : / : _ _ ] ] ^ ! ] ! ] ! ! * = ",
+"] ( ~ _ ^ : ^ ] _ _ ^ ^ ! ~ ! ] _ ~ / _ _ ~ ! ^ : ^ ] ] _ ^ ! : / ] ^ ! ] ( ] ^ ^ / ! ] _ ^ ~ _ : ~ / ~ ] ^ ] ! ~ ^ ^ / ] / ] ] ^ ~ ] ] : ] _ ! ] ^ * = ",
+": ^ : _ _ ^ ^ ^ ! ] ^ ^ ! ^ ] / _ _ : ~ ~ / ~ : _ : _ ! : _ ~ ^ : ^ : _ ] / ~ _ ^ _ ~ ( ^ ^ ! ^ ^ _ _ _ ~ _ ^ ^ _ ] _ _ ~ ! ^ : _ _ ~ _ ^ _ ] ! ^ ^ * = ",
+"_ ! ^ ] _ _ ^ _ ^ ^ : ! ^ ^ ^ _ _ _ _ : _ _ ~ _ : _ / ^ ^ _ / ^ _ ] / _ ~ ] _ _ ~ _ _ ~ _ _ _ _ _ ^ ^ _ ] : ^ ] / ^ ^ ~ ^ _ _ / : ^ _ ] : ^ ^ ^ : _ * = ",
+"_ _ ~ ^ _ ^ ^ _ ~ ^ _ _ _ _ _ _ _ ^ ^ _ _ ^ _ ^ _ _ _ _ ^ _ _ _ _ ^ _ _ ^ _ ^ _ _ _ ^ ^ ^ ^ _ / _ _ ^ _ _ ^ ^ _ ] ^ _ ^ _ _ _ ^ ^ _ ^ _ _ ^ _ _ ] ^ * = ",
+"< _ _ _ _ [ } ^ _ _ } [ [ _ ^ ^ } ^ ^ _ ^ _ _ ^ ^ _ _ [ _ _ _ _ ^ _ ^ ^ _ _ ^ } _ _ ^ _ ^ _ _ [ _ _ _ _ _ _ _ _ _ ^ _ [ ^ _ _ _ _ | [ [ _ _ ^ _ _ } * = ",
+"[ [ [ < _ _ [ _ _ 1 _ 1 ^ _ _ _ _ _ 2 _ } ^ ^ _ _ < } _ _ _ _ ^ _ < _ ^ ^ [ _ } } [ _ | _ } _ _ } _ } _ _ _ _ _ ^ _ | } | _ _ [ _ ^ _ _ [ [ } _ ^ [ * = ",
+"_ _ } _ _ [ _ _ [ _ _ _ } < [ } _ _ < < } [ < [ _ } } _ } } } [ < _ } [ _ < _ [ _ _ _ _ _ _ [ [ } < } _ [ < < } } _ < } } _ } _ [ } < } _ [ _ _ [ < * = ",
+"< _ 3 [ [ } 4 [ } 3 } _ _ } 5 < 5 _ _ } [ [ } [ < < < [ } [ < < 4 5 [ 6 [ [ 4 < } [ 5 _ } _ < 5 < } [ } [ [ < [ < } < } } } } } 5 [ 4 _ 5 _ [ < _ 4 * = ",
+"5 5 5 < < [ [ < < [ 4 < [ 5 < 6 < < } _ [ < < < 6 < } 5 4 } [ < } [ 5 } < < 5 < 5 < [ } < < [ < 5 5 5 } < 5 _ _ < < 5 } < 4 _ < _ < < 6 [ < < < < [ * = ",
+"< < 4 [ < < 5 [ } < 5 5 < < 4 5 } < 5 5 < } 5 5 5 } < < } < 4 5 } < < 5 [ } < < 6 5 < < < < 5 } 5 5 < < 5 } [ < < < < < 5 } 5 5 < [ < < < } } < < 5 * = ",
+"< < < 5 5 5 < < < 7 < 5 5 < 5 < < < 5 5 < 5 5 < < < 5 5 5 < 5 < < 5 < < 8 < < < 5 5 < 5 5 < 5 5 < 5 < 5 < < < < 5 < 5 5 < < 5 < < 5 5 < 5 < < 5 < < * = ",
+"8 8 8 5 5 5 5 5 5 8 9 5 5 < < 8 5 5 0 5 5 5 5 5 < < 5 5 < < < 7 < < 8 0 5 < 5 5 0 5 8 < 5 5 8 5 5 5 5 5 8 < < 5 5 5 5 5 5 0 5 5 < 5 5 < 5 < 5 < a 5 * = ",
+"5 5 5 a a 0 8 5 8 5 0 < 5 5 7 < 5 8 0 0 5 < 8 8 5 0 0 9 b 5 8 8 9 5 5 5 < 5 5 0 8 8 5 < 8 5 b 0 9 0 < 7 0 0 5 8 < 5 a 0 5 8 8 8 5 7 5 8 7 5 0 7 0 8 * = ",
+"5 8 5 5 8 < 5 8 b 8 0 5 b b 0 8 b 5 < 5 5 0 5 8 b 8 5 5 0 b 0 0 5 8 8 8 8 5 8 b 8 8 0 8 5 b b b a 5 8 8 5 7 5 b 9 b 5 8 5 8 b 8 8 7 5 8 < 0 0 5 5 b * = ",
+"b b 0 8 0 b b 0 b b b b b 8 b b 8 b b b b b 8 b 0 b 8 0 0 b b 8 b 5 b 0 b 8 5 b b 5 8 b 5 8 b c 8 b 8 8 0 5 8 b b b b 8 0 b 8 0 0 b b d 0 8 e 0 b 0 * = ",
+"b b c b 8 8 b b d b 8 d b b b e 8 0 b b b b d 8 d 5 b b b b 5 b b b 0 b d 0 b 8 b 0 d 5 d b 0 b b 0 b b 8 d b d 0 b b b b 8 c d b b b 8 d b 0 d 8 b * = ",
+"d b d d b b b d d b b b b b b b b b d d b b b b d b d b b b b d b b d b b b b d b b b b d b b b b d b b d b d b d b b d b b b d d d b b b b d b b b * = ",
+"b b b f g b b d d b d b h b b b d i d b b i d d d d b f b i b d h d b b b b d b j d b d f d i h b f h b h d b b d d b b d d b d d b b d d d f d d d * = ",
+"b f b i g d d k d d i d g f k b d i b g d i i g h d h f g i i i i b g f b k h i b i h h i b d d f b b b d d d k j h f i g k j b b b d j j i d b d d * = ",
+"k d h k i k g f d d i d i i d i d k i f i k k k d f h i d d k h h f i i h f f k j h i d d d i i f i i f i i k g f j d h i d k i f i k b d b d f i i * = ",
+"k i f i f k i i k g k k i f j k k j k k k k i k f i k k k j k i k j k d f k k f i k d k j k d i k k i d g d i k k k k b d k f i j f f k d k j d f k * = ",
+"f k k k i k k k k k k k k i i k f k k k k k k k l d m k l f k k i k d k f f f k k k k k k k k k k k k k n k k k k m k k k i k k k k f k k f k k k k * = ",
+"k k k k k k k k l k k k k k k k k l o k k k l k k k k k o k p k k p k k l k l k k p k k k k l k l k l k k k o k k k k l k k p k k k k k k k k k k k * = ",
+"k o k o k k k k q l p k l k l o k r q o l s k o l k o k k k o k k k q k k l o l l o k k k o k k p r l k k k k t o k l o q o s l k k k k l o k p k k * = ",
+"k l q t k k r l p l k q s k l k r t k s k t p o l k t l k l s o l r l t k q t o t s l q k l o s o k s r s t k p q k p k t l p l o o s q o q t s l q * = ",
+"p q o s s p p s s s l s o s s q q l o o l t r q r q s r l r r t o p k s t l q s t s p s s r t p s t r t q o r t t r o r p s s r s s t p s s l t o r * = ",
+"s r q p q s s s s s s s s l r s s s q s t t l s s s t s s s r s t p s s o s s t s s s t s q s s q s s q s s s s s s s s q q s r s s s s t q s q s s * = ",
+"s s s r s s s q s s s s s s s s s s s s t s s s s q s s s s s s s s s s s t s s s s s s s s q s s s s s s s s s s s s t s s s s s s s s s s s s s s * = ",
+"s s s u s s s v s s w x y s s s u s s s s s y y s v s s y s y s y s y s u s y v v y z u v s s v s y v y s s v u s s s u s s s s y u s s v w u v s s * = ",
+"v u s y s u s v s u v u y u A A y x s z x s s v s A w z s u w v s u s A w v v y v w v v s y y s u s s s y s w A v v z A s v s s s u u y A z v w A u * = ",
+"s s A x v y v s y y w w u A y w s v y v x w s s y v x s v y y x s A s y s v w v A u w s u s z u s z v s x u A z x y v z v w A A z x u w y y u v z y * = ",
+"x x z A w w x x x x v y x x x x x v z A x x x x x x x A A A A w w z z x x y x w A A w w x x w x x u z v w x x A x w u x w z y x z A w A x x x x v v * = ",
+"x x x x x x x x x x x x x x w x w x v x x x A w x x x x x x z x v x x w x x x x x y x x w x x z x z x x x x x x x x x x x x x x x x x x x x x x x z * = ",
+"x x B C C x x x x B x B x C C B x x x x C x x w x C x x x x x x x x x x x B B x B C D C w x x x C x x x x x x x x x x x x w x B x D D C x w x x D x * = ",
+"D x B x C C E C x x B B x x D x x F C B B B x C x C C B B x B B D C C E x B C B x B C B x B x B B C B x C D D x B x B x B B x x D x E x B x B x x D * = ",
+"C x C B D D D C C C x x D C C C G D B x x G D B B B G E x D C C x x D B D H x D D x C x D B x B B x B F x D H D C x C E B D H D B C E B H x F C x C * = ",
+"C G G D H D D D D D C G D C B F C G D B G C D D D B D D G G G C G B D G F C G G B F G F H G C G x G D D D E G D E F G F E B G D F G G G F F G G D G * = ",
+"D F D G G D B G G G G G G G G G H D G G B D G G G G F F G D G D G G G G G D H G G D G G D G D D G D G G G G D G D D G G G D G D D H D H G G D G D G * = ",
+"I G G G G G G G G G G J J D K G G I G K G I G G G D G G D D G I G I L G G K G G I G K I I K K K G G K G G G L G G D G G K K M I G G G J I G G G G G * = ",
+"G N K K N N N N I N G G K N K G N G I N G G K N L I K G G K G I G G K I I G G G G I K K G I G N I G K N N G G I K N K G N N N G K K G I I N N G G G * = ",
+"K K O N K I G N I N N K N N N P N I O K P P G K N G K K G Q N I K I N N I K G I I N O K N Q I K R I O K N O I I Q I R K G K R N I I K K Q P P K Q R * = ",
+"N N O Q G I O N O N I K I N O N O N K N I R O O N N N I Q P O N O N G N N N O N N I I O O K R N N N O N I N N N I G Q N N I N I N N Q N N R N I K N * = ",
+"O O N N N O N O N N O O O O O O O O O O N O O O N O O N O O O O N O N O O O O N N O O O N O N O O N O O O N O N N N N O O O N O N N N O O O O O N O * = ",
+"S T S O O O O U O V O W N U N U V W U O S U O U O O O N O O N S W S N W N N O O O N O O O O O O T N N S O O O W N T O O S S W O V O U U O S T O X V * = ",
+"U V W V V U V V S S O O U N S O S S U T S S O U O T S V S W S S O S O U O U S V S O S O O N O S S S U U S S S O U U U U S S U O O N V U V U V V T V * = ",
+"S U S V Y V S S V O V V V V S V S Z V U O V S O V V U V V O S U V V V Y U U O V V U S ` V V O U O U S U O V V O V V O V V V U S V V V U S S V V O V * = ",
+"V U V V Y V S Y  .V Y V V V V V V V V V V V Y V U V S V S U V V Y S Y U Y V V V Y V V S V Y U V S V V V  .Y V V V  .V V U V Y Z Y V V S V  .V Y V Y * = ",
+"Y V V ..V Y Y +.Y V V V +.V Y V V ..V @.Y +.+.#.Y V V V V Y Y Y V V Y Y V Y Y V Y Y Y V Y V Y V Y +.Y Y V Y V +.V #.V V V Y V $.Y #.Y Y Y V ..Y V V * = ",
+"V #.#.$.Y +.Y ..Y Y +.$...V Y Y $.+.V Y #.Y ..V Y Y #...Y #.#.V V Y #.Y #...V Y V $.#.V ....#.V ......#.Y +.#.V V Y #.Y Y ..V V ..Y #.Y V Y ..+.V V * = ",
+"%.@.#.$.V +.......@.Y #.Y #.#.%.%...%...@...%...%.@.%.%.V %.#.Y %.%.Y V #...Y $.%.%.Y #.@.#.Y ..Y ........+.Y +.%.#.@.%.Y @...Y $.Y %.#.Y %...%.Y #.* = ",
+"%.%.#.%.#...%.%.%.%.%.#.%.%.%.#.@...Y %...#.....Y Y %.#...%...%.%.%.%...%...#.....%...%.#...%...%.#...%.%.%.%.%...+.Y %.%.#.Y ..%.%.#.%.%.#.%.%.%.Y * = ",
+"&.%.%.%.%.%.%.%.%.&.%.%.%.&.%.%.%.%.%.%.#.%.%.&.%.%.%.&.#.%.%.#...%.&.&.%.%.%.%.&.%.%.%.%.%.%.&.%.%.%.%.%.%.%.%.%.%.%.%.%.%.*.%.%.%.%.%.%.%.%.&.%.%.* = ",
+"%.%.%.=.=.%.%.=.-.=.%.%.=.%.;.%.%.&.%.-.&.&.%.&.%.&.&.=.%.%.&.%.%.%.&.=.&.-.=.%.;.%.%.&.;.%.%.;.%.%.>.&.%.&.,.%.,.&.&.&.=.%.&.%.'.%.&.%.&.%.>.&.%.%.* = ",
+"&.&.%.'.=.'.>.-.%.&.;.=.'.&.,.=.>.&.=.=.&.'.'.>.=.&.>.=.>.%.'.'.%.%.%.%.%.,.>.'.=.,.&.%.%.>.%.-.=.&.=.,.;.'.'.>.&.%.>.=.;.-.>.'.;.%.&.,.;.;.&.-.&.,.* = ",
+"%.-.-.,.=.'.'.%.'.-.'.,.'.%.>.,.;.;.'.'.;.>.;.'.'.-.;.'.=.&.;.,.-.'.>.'.'.-.&.-.=.>.>.'.=.,.'.'.%.=.'.-.'.'.'.-.;.'.'.,.-.=.>.'.-.=.,.&.'.'.'.'.'.,.* = ",
+",.'.'.-.'.;.'.,.'.'.'.'.;.,.'.'.'.'.'.'.'.,.'.'.'.'.'.'.,.'.'.'.'.'.'.'.'.'.,.'.-.'.'.'.-.'.'.'.'.'.'.-.'.'.;.-.,.'.'.'.;.'.'.'.'.'.'.'.'.'.,.'.-.'.* = ",
+"'.).).'.!.'.'.'.'.'.~.'.'.).'.{.~.{.~.'.'.'.'.'.'.'.'.'.).'.'.'.{.).'.'.'.'.'.'.'.'.'.).'.~.{.).~.].'.'.'.'.'.'.).).'.'.).'.'.'.'.'.'.].'.).'.'.~.'.* = ",
+"~.'.^.).'.'.'.!.).~.'.).).{.{././.~.].'.~.{.~.'.'.{.!.'.).].].'.).~.'.~./.{.'.'.].^.!.'.{.).~.'.).'.'.!./.'.~.'.!.'.'.~./.{.]./.].'.!.).'.^.'.{.^.'.* = ",
+"~.).{.).~.'.].^.'.!.^.'./.^.~././.!.~.!.!.!./.'.).^./.~./.).~.'.^.^.{.{.~.^.].~.~./.).~./.^.~.~.!.~.{./.'.].).!.'.~.].).!.^.~./.].~.'.!.~.^.!.'.).^.* = ",
+"{.!.^.).^.^.^.!.^.!.].'.~.!./.^.!.{.^.^.^.^.{.^.^./.!.^.^.!.^.^.!.!.).^.!.^.!.!.^.^.].~.!.].!.!.^.!.!.^.^.^.^./.^.^.).^./.^.!.^./.^./.].~.'.!.!.!.!.* = ",
+"^.!.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.(.^.^.^.!.^.^.^.^.^.!.^.^.^.^.^.^.(.^.^.^.^.^.^.^.^.^.^.(.^.^.^.^.^.^.^.^.^.^.^.^.^.^.!.!.^.^.^.^.^.^.^.(.^.* = ",
+"_.^.^.(.^._._.^.(.^.^.:.^.(._.^.^.<.^.^.(.^.<.^.<.^.(.^.(.(.^.(._.^.^.^._._.(.(.^.^.^.(.<.^._.^.(.<.(.(._.^._.^._.^._.(.^.^.(.^.(.^.<.(.^.^.^._.(.[.* = ",
+"(._.^.:.(.<.[.(.^.(.}.[._.(.^.(._._._.(.:.<.(.[.(.^.}.<.[.(._.[.<._.|.}.^.(.^.}.<.[.(.(.[.:.[.<.(.[._.:.[.^.^._.}.(.(.^.^.^.:._.<.[.<.|.(.(.[.(.[.^.* = ",
+"<.}.<.<.<._.}.<.<.<.}.<.}.<.<.:.(.[._.(.<.[._.}._.}.<.<.}._.}.}.^._._.}._.}.}.<.}.<._.<.^.:._.}.^.<.}.<.}.<.}.}.|.(._.^.(.:.<.^.<.<.[.<._._.|.<.<.}.* = ",
+"<.}.<.}.}.}.}.<.}.}.}.|.<.}.}.<.<.}.}.}.}.}.}.}.}.<.}.}.}.}.}.}.}.<.}.}.<.<.<.}.}.}.}.<.<.<.}.}.<.}.<.(.}.}.}.}.|.<.}.}.<.}.<.}.}.}.<.<.}.}.}.}.}.}.* = ",
+"}.}.}.1.2.1.}.1.}.}.3.}.1.}.}.<.4.}.3.}.}.}.}.}.3.3.}.<.1.1.2.}.4.<.}.5.3.6.}.1.}.1.}.}.1.}.1.}.}.1.4.}.}.3.}.1.5.4.4.}.<.3.3.3.1.}.}.4.2.}.3.<.<.}.* = ",
+"4.1.}.}.}.1.3.}.1.1.3.4.}.}.}.}.}.}.4.1.3.4.1.}.}.4.3.4.}.7.1.}.4.}.4.1.}.1.3.}.1.}.4.7.8.3.3.4.1.1.1.1.1.}.3.4.}.}.9.3.1.}.3.1.3.}.1.4.}.4.1.}.1.}.* = ",
+"0.3.1.1.}.0.4.4.1.4.4.4.7.9.4.4.1.1.3.7.8.8.4.7.4.4.0.4.7.8.7.4.3.4.4.1.1.3.1.9.8.4.4.1.3.4.7.4.1.3.}.7.1.3.1.4.7.7.4.3.4.3.8.4.}.4.4.7.}.1.4.1.1.1.* = ",
+"4.7.7.7.4.7.4.7.3.1.4.4.7.7.4.1.7.7.4.7.1.7.4.7.3.4.7.4.7.4.7.7.7.4.9.4.7.7.4.7.7.7.7.7.7.4.7.4.4.4.4.7.4.3.7.4.4.4.7.4.9.4.4.4.3.4.4.4.4.1.7.7.4.4.* = ",
+"4.a.b.7.7.7.7.7.7.c.b.a.c.7.c.7.c.4.c.7.4.7.4.a.7.4.7.7.7.a.b.7.7.a.4.c.7.c.7.a.4.7.7.d.7.7.7.a.b.e.7.7.7.4.c.e.d.4.4.7.c.a.7.7.7.7.7.e.4.7.7.b.4.c.* = ",
+"e.c.a.a.a.d.a.7.d.4.a.f.d.c.7.d.7.7.a.e.d.d.a.c.7.d.d.a.c.a.d.a.4.4.7.f.7.d.7.a.7.d.b.7.7.7.c.a.7.7.f.c.d.c.e.a.7.c.c.a.7.d.7.a.a.a.7.4.f.7.d.7.7.d.* = ",
+"a.a.d.c.d.d.d.a.d.c.d.7.a.d.d.a.d.d.7.7.7.d.d.g.d.a.h.d.d.d.d.a.7.7.a.d.7.d.a.d.7.d.d.d.a.d.h.a.d.c.d.h.7.d.d.d.d.7.d.d.a.d.a.d.a.d.h.d.c.c.a.7.c.d.* = ",
+"d.d.d.h.h.h.d.h.d.g.d.d.d.d.d.h.d.a.h.d.d.h.d.d.i.d.d.d.d.d.a.d.d.d.h.a.a.d.d.d.h.d.d.d.d.d.d.h.d.g.d.d.h.h.d.d.h.d.h.d.d.d.d.d.d.h.i.d.d.h.h.h.d.d.* = ",
+"h.j.k.d.h.j.h.j.h.d.d.d.l.d.h.d.l.l.d.m.d.h.l.h.h.h.n.d.l.h.d.h.k.d.k.h.d.d.d.m.d.d.h.k.h.j.m.k.d.h.h.l.h.d.d.k.h.d.h.d.h.m.l.d.l.k.d.k.h.l.d.m.d.m.* = ",
+"k.k.h.m.j.h.l.d.m.j.d.j.m.h.j.o.j.h.k.m.k.m.n.j.j.o.d.d.j.m.h.n.o.d.m.o.d.h.h.k.h.j.o.d.h.d.l.l.j.o.h.j.d.o.n.m.k.k.m.h.d.j.h.j.k.h.j.j.j.h.l.j.j.d.* = ",
+"o.h.n.o.n.o.o.o.j.m.j.j.h.h.m.j.o.o.j.o.o.j.h.o.o.j.o.o.k.o.h.h.o.o.o.j.h.o.m.j.n.m.h.j.o.j.o.h.m.m.n.o.j.j.o.m.o.o.j.j.j.o.o.o.j.o.n.m.o.o.o.o.n.m.* = ",
+"o.o.j.p.o.o.o.o.o.o.o.j.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.m.o.q.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.m.o.m.m.o.o.o.j.o.o.o.o.o.o.o.r.o.q.o.o.o.o.o.m.o.j.o.m.o.* = ",
+"o.o.o.s.o.r.r.r.o.r.r.r.o.t.u.r.o.o.o.t.s.o.u.o.o.o.o.o.o.r.o.o.s.r.o.o.o.o.t.u.o.o.o.o.r.o.o.s.o.o.u.v.o.o.o.r.r.r.o.w.v.r.o.r.o.r.r.r.o.o.t.r.o.o.* = ",
+"o.t.r.t.s.v.r.u.w.w.r.x.x.t.w.v.v.x.o.r.r.r.w.o.v.s.o.w.o.w.u.r.u.u.w.o.o.o.w.r.u.u.s.x.o.s.r.v.r.u.x.w.s.s.w.w.s.r.v.v.r.u.r.o.r.s.s.o.r.u.u.r.t.r.* = ",
+"u.x.u.u.t.x.t.x.u.x.w.x.u.u.t.u.o.s.s.v.x.t.w.v.x.x.x.v.w.x.v.x.r.v.v.w.t.w.u.s.o.u.u.w.v.w.r.x.t.t.o.t.r.v.x.x.v.v.x.u.u.x.t.u.w.v.w.v.x.w.w.x.x.x.* = ",
+"u.x.x.v.x.x.x.x.x.x.v.u.x.v.x.x.w.x.x.v.x.u.x.u.x.x.w.u.x.x.x.w.v.x.x.x.x.r.x.x.x.x.x.w.x.x.x.r.x.x.x.x.x.x.x.x.u.r.x.x.x.v.x.x.x.u.x.x.x.x.v.x.x.x.* = ",
+"x.x.x.x.y.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.y.x.x.x.x.y.x.y.y.z.x.z.A.y.x.x.A.x.x.x.x.x.x.x.z.x.A.z.x.B.z.x.z.z.x.x.y.z.x.z.x.z.x.x.x.x.B.y.x.x.x.B.x.z.* = ",
+"B.z.y.A.C.A.y.x.B.B.A.z.C.D.C.E.x.C.D.C.z.A.B.z.D.y.C.y.D.D.x.x.z.D.x.C.z.A.z.z.z.E.E.A.B.B.x.D.x.x.z.A.A.A.x.z.E.D.D.A.C.x.D.y.x.x.B.E.A.E.x.x.A.x.* = ",
+"B.D.A.x.D.C.E.D.E.D.z.A.B.C.E.B.z.A.C.E.E.E.B.D.D.E.D.A.D.E.B.C.A.z.D.D.B.x.x.x.E.D.E.z.A.E.D.y.A.z.x.x.D.A.z.E.E.B.A.z.A.D.D.B.E.C.A.B.E.D.D.C.y.C.* = ",
+"E.B.D.E.E.D.z.E.A.E.E.B.E.E.B.D.E.B.E.E.E.E.E.D.E.D.D.E.E.B.E.E.E.E.E.E.E.D.B.E.E.E.E.E.C.D.E.E.E.E.E.B.E.C.E.D.E.E.C.B.E.D.E.E.B.E.E.E.E.D.C.E.E.D.* = ",
+"E.F.G.E.E.E.E.E.E.E.E.E.E.E.E.D.E.E.F.E.E.E.E.E.G.E.G.E.E.E.E.E.E.F.E.F.E.E.F.E.F.G.G.E.E.E.E.E.E.E.E.E.E.E.D.E.E.E.E.E.G.E.E.F.F.H.E.F.E.E.E.G.E.E.* = ",
+"G.F.G.E.H.G.H.E.H.E.E.H.I.J.E.E.G.E.E.K.G.H.I.K.E.E.G.H.E.G.E.F.G.G.F.H.E.E.F.E.H.E.L.K.K.G.G.I.L.L.F.H.E.F.K.E.E.E.H.G.H.G.F.G.F.G.G.J.K.G.G.F.F.K.* = ",
+"G.G.F.H.I.F.F.H.I.L.J.H.E.J.E.G.G.E.K.K.I.H.I.G.K.H.H.H.F.I.G.F.H.I.L.H.G.F.H.H.I.H.K.L.F.J.H.G.G.G.J.I.H.H.I.L.K.I.I.F.G.H.H.G.G.J.H.H.H.J.H.K.I.H.* = ",
+"H.I.I.H.G.I.H.I.I.I.I.I.I.H.G.I.I.H.I.I.I.I.H.I.F.F.I.F.H.I.I.I.I.I.H.I.H.I.I.L.G.I.I.I.I.H.G.I.H.H.H.I.I.I.I.H.F.I.G.I.I.I.H.I.I.H.I.H.J.I.H.H.I.H.* = ",
+"I.H.M.H.N.I.I.I.N.O.I.I.I.I.I.H.M.I.P.I.I.I.I.I.N.O.I.I.I.P.H.H.I.I.P.I.I.I.M.I.O.I.I.O.H.I.O.I.H.I.I.H.I.I.I.I.O.O.I.H.I.I.I.M.I.I.I.I.H.I.I.P.O.I.* = ",
+"I.I.I.M.I.O.P.I.M.I.I.M.P.O.M.O.O.I.I.I.I.O.O.I.O.M.I.I.I.M.Q.M.I.I.P.O.M.O.I.M.O.O.I.O.I.I.M.I.M.I.P.I.O.P.M.M.P.M.I.P.O.M.P.I.M.M.I.M.I.O.M.O.P.O.* = ",
+"P.P.O.R.Q.R.S.P.M.R.P.P.O.O.O.O.O.P.I.I.P.O.M.I.O.I.M.M.R.P.P.M.P.P.O.P.S.M.O.O.S.P.O.P.S.P.R.M.M.P.P.P.P.P.P.O.P.O.P.O.P.R.P.T.P.M.T.P.O.P.P.Q.Q.P.* = ",
+"S.P.S.O.P.P.S.P.S.M.P.S.P.P.P.P.S.S.P.P.P.S.S.R.S.S.S.P.P.P.P.P.P.P.S.S.P.P.S.O.S.P.S.P.P.P.P.P.S.S.Q.P.S.P.P.S.S.S.P.P.P.S.I.P.S.P.P.S.P.S.P.P.S.M.* = ",
+"S.S.S.U.P.V.S.S.S.W.S.P.V.P.X.P.S.W.S.W.P.P.X.S.S.P.S.S.S.Y.U.S.W.S.S.W.W.U.W.S.S.Y.S.X.S.Y.P.P.P.S.W.U.X.S.P.S.Y.S.S.S.P.U.P.P.P.S.S.Y.S.W.X.W.P.S.* = ",
+"W.S.Y.W.Y.Y.S.Y.Y.U.Y.S.Y.Y.S.S.Y.S.W.S.Y.P.W.S.S.S.U.Z.W.Y.W.Y.S.S.S.P.S.Y.X.U.S.Y.Y.Y.W.S.W.W.S.W.U.W.Y.W.S.S.W.S.P.S.S.Y.P.S.Y.X.W.S.U.S.Z.W.W.Y.* = ",
+"W.Y.Y.Y.W.Y.U.`.U.Y.W.W.Y.Y.Y.S.U.Y.Y.U.S.Y. +U.U.W.Y.`.W.W.Y.W.Y.`.W.Y.U.U.Y.U.U..+S.Y.Y.U.Y.Y.W.Y.Y.Y.W.Y.U.W.U.U.W.W.U.U.Y.W.Y.Y.Y.U.U.W.Y.Y.Y.W.* = ",
+"Y.Y.Y.Y.Y.Y.`.Y.`.`.Y. +`.Y.`.Y.Y.Y.Y.`.Y.Y.Y.U.Y.Y.Y.Y.`.Y.Y.Y.`.Y.Y.Y.Y.`.Y.Y.Y.Y.U.Y.`.W.Y.W.`.Y.Y.`.`.`.`.Y.Y.Y.Y.Y.Y.Y.Y.Y.`.Y.U.Y.Y.Y.Y.`.`.U.* = ",
+"`.`.Y.`.++Y.++++`.`.@+Y.#+Y.Y.Y.@+$+++`.`.`.Y.@+Y.`.++@+`.++Y.Y.Y.`.`.Y.Y.$+%+%+`.`.`.`.&+Y.Y.@+Y.`.@+Y.++Y.&+Y.`.@+`.++`.$+++++&+Y.@+`.Y.&+Y.Y.`.@+* = ",
+"@+$+%+#+&+%+`.`.&+Y.%+%+&+`.@+$+%+`.Y.%+&+$+&+&+$+%+%+`.`.&+Y.%+++%+`.$+&+`.$+Y.%+%+$+&+&+++`.++$+%+`.`.%+$+`.%+`.&+++Y.#+`.&+@+#+&+`.++$+@+&+`.#+%+* = ",
+"`.%+@+%+%+%+$+++$+%+%+%+%+%+%+%+%+%+%+%+&+$+%+%+%+`.&+%+%+%+Y.%+$+`.`.&+%+#+%+#+#+%+%+%+%+%+%+$+%+`.%+`.%+&+%+#+$+#+%+$+%+&+%+`.$+%+%+$+`.%+%+`.%+$+* = ",
+"%+%+*+%+%+%+%+%+%+%+*+%+=+%+%+*+%+%+%+%+%+%+*+*+*+%+%+%+%+%+%+%+*+%+%+%+%+%+%+$+%+%+$+%+%+%+*+%+%+%+%+%+%+%+%+%+%+%+-+%+*+%+%+%+%+%+%+%+%+%+%+%+%+%+* = ",
+";+%+*+>+%+,+%+%+%+%+*+,+*+;+,+%+%+%+'+%+>+*+>+;+*+)+%+,+%+%+>+%+%+%+*+%+%+*+%+'+%+;+%+*+*+)+;+)+*+*+*+>+*+*+*+%+)+*+)+;+,+%+*+%+%+,+!+%+>+*+%+'+%+>+* = ",
+")+'+;+!+;+,+,+*+*+*+)+!+)+;+%+>+!+;+*+)+%+'+)+%+*+>+%+)+>+!+!+%+;+*+!+;+)+!+*+,+;+%+'+)+;+!+)+,+*+>+*+*+'+>+*+,+>+!+;+)+>+,+!+>+%+*+,+,+)+*+>+*+*+!+* = ",
+">+)+!+!+;+)+'+%+>+*+!+!+>+)+>+!+>+>+!+!+!+'+>+!+!+!+!+,+'+>+!+!+!+>+!+!+)+*+!+>+!+'+!+>+'+!+!+!+!+!+*+>+'+*+;+>+!+;+*+)+,+>+;+!+!+!+!+!+'+'+'+!+)+)+* = ",
+"!+!+~+~+~+~+~+~+~+{+]+^+/+(+(+(+_+_+_+:+:+<+<+[+[+}+|+|+1+2+3+3+4+4+5+6+6+6+6+7+8+8+9+9+0+a+a+a+b+c+c+c+d+e+e+f+g+]+{+~+~+~+~+~+~+~+~+!+!+!+!+!+!+!+* = ",
+"!+!+~+~+~+~+~+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+y+z+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+S+T+U+V+W+X+Y+Z+`+ @.@+@@@#@h+~+~+~+~+~+~+~+$@%@&@!+&@&@* = ",
+"$@*@~+~+~+~+=@-@;@>@,@'@)@!@~@{@]@^@s+/@(@_@:@<@[@}@z+|@1@C+2@3@4@G+I+5@6@7@8@M+9@0@a@b@c@d@e@T+f@g@V+h@i@j@k@`+l@m@m@n@o@p@~+~+~+~+~+&@~+~+!+~+$@%@* = ",
+"$@~+~+~+~+q@r@s@t@u@v@w@x@y@z@A@B@C@D@E@(@F@:@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@P+Q+Z@d@`@<.f@g@W+W+i@ #.#+#@#.@n@##$#%#&#~+~+~+~+$@*#$@=#=#$@%@* = ",
+"=#-#~+~+=@;#>#,#'#)#!#~#{#{#]#^#/#(#_#:#(@<#:@[#}#|#1#u@2#3#4#5#6#7#8#9#5+0#a#b#7+c#d#e#b@f#g#`@f@h#V+i#i@Y+.#j#@#k#m@######l#m#~+~+~+$@=#=#=#$@$@n#* = ",
+"=#=#~+h+o#p#,#q#r#s#t#u#{#v#w#x#y#z#A#B#C#D#E#F#}#G#H#I#J#|+K#L#M#N#O#P#Q#R#S#T#U#9@d#V#b@f#e@`@f@f@V+W#i#X#.#Y#+#Z#`# $ $.$ $+$@$~+~+n#=#=#n#-#=#=#* = ",
+"#$-#~+$$%$o#&$*$=$-$;$>$,${#'$)$!$~${$]$^$/$E#($_$:$<$[$}$|$1$2$3$4$5$6$7$8$T#9$0$a$0@V#Z@f#b$g#2.f@c$d$i#e$f$g$+#l@`# $ $####h$#@~+i$-#=#j$j$n#k$-#* = ",
+"j$i$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$D$E$/$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$`$ %.%6.2.+%@%#%$%%%f$&%+#*%=%n@ $h$h$h$-%;%>%k$j$i$i$j$j$i$* = ",
+"j$i$,%'%)%!%~%{%]%^%/%(%_%:%<%[%M@}%|%1%2%3%4%E#5%6%7%8%9%0%a%b%c%d%e%f%g%h%i%j%k%l%m%Z$`$n%o%g#2.p%@%q%$%r%s%&%g$t%=%u%h$h$h$h$v%w%j$j$j$j$x%i$j$j$* = ",
+"y%z%A%B%C%D%E%F%G%H%I%J%K%L%M%<%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%`% &.&+&@&#&$&%&&&*&=&-&;&>&Z$`$n%b$g#5.,&c$c$'&)&s%&%!&~&=%u%{&{&h$h$h$]&j$j$j$y%z%y%j$y%* = ",
+"x%j$^&B%/&(&_&_&:&<&[&}&|&1&2&M%3&4&5&{$6&7&8&E#9&0&a&b&c&d&e&f&g&a&h&i&%&j&k&l&m&n&o&p&`$q&r&s&5.,&p%c$'&)&t&u&&%~&v&w&{&{&{&{&h$x&x%y&y%z%z%j$y&y%* = ",
+"y%z%^&z&A&B&C&_&:&D&E&f$F&G&H&M%I&J&5&{$K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&`& *.*0$+*@*#*$*%*q&r&b$5.,&p%c$'&&*)&**=*-*;*>*{&{&,*{&{&x&z%j$z%z%'*)*z%x%* = ",
+")*!*A%~*{*]*^*/*(*_*:*<*[*}*.#|*1*O%2*3*4*5*6*7*Q&8*9*0*a*i&b*c*d*e*f*g*h*i*j*k*l*b#m*$*n*o*r&p*5.q*r*s*t*u*)&**=*v*v&w*{&{&x*{&,*y*)*z%)*z%)*)*)*z%* = ",
+")*z*A*B*C*D*E*F*G*H*I*J*<*K*|*L*M*N*O*P*Q*R*S*T*U*5%V*R&W*X*Y*Z*`* =.=+=@=#=$=%=&=*===-=;=>=,='=)=f.r*!=t*~=)&**=*-*;*w*{&{={=,*]=^=!*/=(=)*_=!*)*)** = ",
+"!*_=:=<=[=}=|=1=2=3=4=5=6=7=8=9=0=a=b=c=d=e=f=g=h=i=j=k=l=m=n=n=o=+&p=q=r=s=t=u=v=w=>&x=%*y=o*'=z=f.r*A=A=~=B=**=*C=v*D=E={={=,*F=G=(=)*(=(=_=(=_=_=* = ",
+"H=I=I=J=K=L=M=N=O=P=Q=R=S=v#T=U=V=W=X=Y=Z=`=f= -.-+-@-#-Y%$-%-n=&-*-p==-r=--;->-,-'-)-!-~->=,={-]-z=^-/-A=&*&*}&(-C=_-;*w*{={=:-<-I=(=(=H=H=H=(=[-(=* = ",
+"(=I=I=}-|-1-2-3-4-5-6-7-8-v#1=9-0-a-b-c-d-D@e-f-g-h-i-j-k-l-m-n-[$o-p-q-r-s-t-u-v-w-x-y-z-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-Q-R-S-I=(=T-(=(=U-(=(=(=* = ",
+"T-I=I=I=9$V-W-X-Y-Z-`- ;8-8-.;+;@;#;$;%;&;*;=;-;;;>;,;';);!;!;~;{;];^;/;(;_;:;<;[;};|;1;2;3;4;5;6;7;8;9;D-0;a;b;&#e+c;d;D=Q-e;f;I=I=g;(=T-h;i;i;(=j;* = ",
+"H=I=I=I=I=k;l;m;n;m-o;3&p;[&q;r;s;t;u;v;]@w;=;x;y;z;A;B;<$C;D;E;F;|$:;G;H;I;J;K;L;M;N;O;P;Q;a;R;S;T;U;V;W;X;Y;Z;`; >Y;.>+>@>K-I=I=I=H=j;j;g;j;j;j;j;* = ",
+"j;I=I=I=I=I=|;#>$>%>&>*>=>->;>>>,>'>)>!>~>{>=;]>^>^>/>(>_>:><>[>}>|>Z*1>2>3>4>5>l&6>7>8>9>0>a>b>c>d>e>f>g>h>i>j>k>l>m>n>2%% I=I=I=I=o>p>j;j;g;j;j;j;* = ",
+"I=I=I=I=I=I=I=q>^>r>s>t>u>v>w>x>y>z>A>!>]@w;=;B>C>D>E>F>G>H>I>J>K>L>M>p=N>O>P>Q>R>S>T>U>V>W>X>Y>Z>`> ,.,+,@,#,$,T=%,&,*,=,I=I=I=I=I=-,;,j;;,p>p>>,;,* = ",
+"j;I=I=I=I=I=I=I=I=,,',),!,~,{,_+],_#^,:+/,/,/,/,(,(,(,_,_,|+h&h&h&2+2+4+4+4+4+:,7+7+7+<,<,[,},|,a+1,2,3,a+3,4,p@f;5,,,I=I=I=I=I=I=I=j;6,j;j;p>p>6,-,* = ",
+"-,7,>,7,7,-,8,>,p>j;-,8,p>p>8,6,6,p>7,8,6,6,p>7,7,;,8,p>6,7,6,7,6,8,6,j;p>-,p>6,7,>,-,6,8,-,>,8,-,6,>,7,-,6,7,p>6,8,6,-,8,7,;,I=I=7,p>8,6,;,7,6,;,7,* = ",
+"8,6,6,6,-,6,6,7,8,6,6,6,6,6,6,6,-,6,8,6,p>p>6,6,7,6,6,6,6,6,6,6,7,6,6,6,6,j;6,6,6,-,6,-,6,6,6,6,7,7,-,6,6,6,6,6,6,-,6,6,>,6,6,6,8,6,-,-,6,6,6,-,6,6,* = ",
+"9,6,6,0,6,6,6,6,9,6,6,6,6,6,6,6,6,6,6,6,6,0,6,6,6,6,0,6,0,9,6,a,6,6,6,b,6,6,6,6,0,6,9,6,6,b,0,6,b,6,6,6,6,6,6,a,6,6,6,6,6,9,6,0,6,6,6,6,6,6,b,6,6,6,* = ",
+"0,6,0,0,9,0,0,0,9,b,c,6,c,a,b,6,c,9,c,I=d,d,0,d,I=0,d,b,e,e,e,e,e,e,e,e,e,e,e,e,e,6,a,9,6,6,0,6,6,0,a,9,6,9,9,0,a,0,b,9,b,9,9,9,0,b,0,d,0,d,b,a,0,6,* = ",
+"c,b,I=c,I=d,I=d,c,c,I=6,0,c,a,d,9,a,6,a,d,d,6,a,e,e,e,e,e,i$f,g,h,1&1&1&h,g,f,i$e,e,e,e,e,0,0,d,9,a,a,6,0,c,d,0,0,0,d,c,c,c,c,a,a,I=a,a,9,c,d,I=c,b,* = ",
+"c,9,I=c,c,6,c,c,c,a,0,c,0,I=c,I=c,c,I=c,a,d,e,e,e,i,1&1&1&g,j,k,l,m,n,m,l,k,j,g,1&1&1&i,e,e,e,d,c,0,b,c,c,9,c,a,c,c,a,c,I=a,c,I=c,c,c,c,c,c,d,0,I=c,* = ",
+"c,c,o,c,c,c,c,o,c,a,o,o,c,c,c,p,c,c,c,e,e,e,q,1&1&r,s,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,s,r,1&1&q,e,e,e,c,a,c,c,c,o,c,c,c,c,o,c,c,c,c,o,t,c,c,c,a,c,o,c,* = ",
+"o,c,o,p,u,c,u,p,o,o,v,w,c,c,c,u,p,o,e,e,r,1&h,s,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,s,h,1&r,e,e,o,v,o,o,p,o,p,v,c,w,c,p,c,o,p,p,o,o,w,w,o,c,x,* = ",
+"y,c,p,p,o,o,p,o,v,o,y,w,w,v,p,x,e,e,q,1&g,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,g,1&q,e,e,x,w,o,v,w,p,c,o,w,o,w,x,p,p,x,o,w,w,c,w,y,* = ",
+"y,c,y,y,u,w,w,c,u,y,y,y,u,w,w,e,e,1&1&m,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,m,1&1&e,e,y,y,u,w,u,y,w,u,y,w,x,y,w,p,w,x,o,w,y,y,* = ",
+"y,w,z,y,y,w,y,w,y,A,y,A,y,y,e,j,1&i$n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,i$1&j,e,y,y,y,z,y,y,B,y,y,w,w,y,z,y,w,y,y,w,z,* = ",
+"y,y,z,z,y,y,y,A,A,C,A,y,e,e,r,1&n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,1&r,e,e,C,A,A,y,y,y,A,y,D,A,C,y,y,C,y,y,y,* = ",
+"C,E,z,z,A,y,A,E,y,C,A,e,e,F,1&n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,1&F,e,e,C,G,z,z,z,A,y,z,z,H,C,z,A,z,C,A,* = ",
+"C,A,A,C,C,y,I,H,H,A,e,e,h,g,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,g,h,e,e,C,C,A,E,z,H,C,H,z,A,z,H,C,C,C,* = ",
+"J,C,H,C,H,H,H,H,C,H,e,F,g,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,g,F,e,C,H,H,H,K,H,C,H,H,H,H,C,H,H,H,* = ",
+"H,L,H,H,J,L,H,L,C,e,r,1&n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,1&r,e,H,L,C,C,H,M,J,L,J,H,H,L,H,H,* = ",
+"M,J,M,H,L,L,H,M,e,j,1&n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,1&j,e,M,H,J,L,H,L,H,J,M,J,J,H,H,* = ",
+"M,M,N,M,M,M,L,e,e,1&n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,1&e,e,L,M,M,M,M,M,J,O,L,M,M,M,* = ",
+"M,P,M,M,P,M,M,e,1&i$n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,m,l,Q,Q,R,n,n,n,n,n,n,n,n,n,n,n,n,i$1&e,M,P,M,S,M,P,M,M,M,M,P,M,* = ",
+"S,M,T,U,P,V,e,q,1&n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,i$g,F,h,g,g,F,i,m,n,n,n,n,n,n,n,n,n,n,n,1&q,e,M,P,P,M,M,P,M,V,M,S,M,* = ",
+"W,P,S,P,P,e,e,1&m,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,X,f,h,q,X,R,n,n,n,m,i$g,m,n,n,n,n,n,n,n,n,n,n,m,1&e,e,M,V,P,S,W,Y,U,S,V,T,* = ",
+"W,Y,W,T,P,e,r,g,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,s,r,g,k,n,n,n,n,n,n,n,n,n,m,Z,n,n,n,n,n,n,n,n,n,n,n,g,r,e,T,P,Y,S,Y,T,T,T,T,T,* = ",
+"`,T,T,T,Y,e,1&n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,i$g,Z,n,n,n,n,n,n,n,n,n,n,n,n,l,n,n,n,n,n,n,n,n,n,n,n,n,1&e,T,T,`,T,T,`,Y,W,T,T,* = ",
+"T, '.'T,e,q,h,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,s,+'j,m,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,h,q,e,`,T,T,`,@'#'#'`,`,* = ",
+"#'.'$'T,e,1&s,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,Z,g,X,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,s,1&e,T, '$' '.'`,@'$'$'* = ",
+"%'%'%'e,e,1&n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,q,i,m,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,1&e,e,@'%' '$'%'#'.'%'* = ",
+"#'#'%'e,i,r,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,m,&'j,f,+'g,F,f,j,j,j,j,q,q,i,i,q,i$X,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,r,i,e,%'%'%'%'#' '%'%'* = ",
+"%'%'%'e,1&s,n,n,n,n,n,n,n,n,n,n,n,n,n,R,q,F,+'Z,*'='='='='-'-'-'-';';';';';'-'-'='*'j,i$l,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,s,1&e,%'%'%'%'%'%'%'>'* = ",
+"%'%'>'e,1&n,n,n,n,n,n,n,n,n,n,n,n,R,+'1&k,='='='-'-'-'-'-';';';';';';';',',',',',',',',','&'X,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,1&e,''%'%'%'''%'%')'* = ",
+"!'~'e,e,1&n,n,n,n,n,n,n,n,n,n,n,f,F,k,='-';';';'-'-'-'q,+'-'-'1&;';';'F,1&+',','g,j,,'{'{'{','*'l,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,1&e,e,%']')'^'>']']'* = ",
+"!'>'e,i$g,n,n,n,n,n,n,n,n,n,R,h,j,=';';';';';'-'-'-'-'+'1&-'-'1&;';'/'h,,',',','1&r,,'{'{'{'{'{'{'{'m,n,n,n,n,n,n,n,n,n,n,n,n,n,g,i$e,]')']'>'>'!'!'* = ",
+"]']'e,f,j,n,n,n,n,n,n,n,n,n,g,Z,=';';';';';'-'-'-'-'-'g,1&-'-'1&;';'Z,g,,',',','1&g,,'{'{'{'{'{'*'*'('Q,n,n,n,n,n,n,n,n,n,n,n,n,j,f,e,]'!'_'!'!'!'!'* = ",
+"!':'e,g,k,n,n,n,n,n,n,n,n,k,i,=',',';';';';'-'-'-'-'-'F,1&-'-'1&;';'e,1&,',',','1&F,,'{'{'{'{'{'*'('('(','n,n,n,n,n,n,n,n,n,n,n,k,g,e,!'_'_'!':'<'['* = ",
+"_':'e,h,l,n,n,n,n,n,n,n,n,f,-';',',';';';';'-'-'-'-'-'1&1&-'-'1&;';';'1&i$,',','1&1&,'{'{'{'{'{'*'('('*'e,s,n,n,n,n,n,n,n,n,n,n,l,h,e,}'!':'}'['}'}'* = ",
+"|'!'e,1&m,n,n,n,n,n,n,n,n,i,=',',',';';';';';'-'-'-'-'1&1&e,-'1&;';';'i$1&,',','F,1&*'{'{'{'{'{'*'('('('*'e,m,n,n,n,n,n,n,n,n,n,m,1&e,:'['['_'['['}'* = ",
+"|'['e,1&n,n,n,n,n,n,n,n,n,k,-',',',';';';';';'-'-'-'('1&g,i$-'1&;';';','h,Z,,'/'+'1&&'{'{'{'{'{'*'('('('*'e,1'n,n,n,n,n,n,n,n,n,n,1&e,['|'}'['|'|'<'* = ",
+"2'|'e,1&m,n,n,n,n,n,n,n,n,n,-',',',',';';';';';'-'-'&'1&r,f,;'1&;';';';'f,g,,'q,r,1&1'{'{'{'{'*'*'('('('*'e,f,n,n,n,n,n,n,n,n,n,m,1&e,|'|'|'|'|'|'['* = ",
+"2'3'e,h,l,n,n,n,n,n,n,n,n,n,m,,',',',';';';';';';';'1'1&q,+';'1&;';';','*'1&,'+'q,1&i${'{'{'{'*'*'('('('*'&'F,n,n,n,n,n,n,n,n,n,l,h,e,3'4'3'3'3'2'|'* = ",
+"3'4'e,g,k,n,n,n,n,n,n,n,n,n,n,-',',',',';';';';';';'j,+'Z,F,;'1&;';',',','1&,'g,i$g,f,{'{'{'{'*'*'('('*'e,/'+'n,n,n,n,n,n,n,n,n,k,g,e,3'|'5'2'4'4'4'* = ",
+"4'2'e,f,j,n,n,n,n,n,n,n,n,n,n,n,;',',',',';';';';';'f,h,g,1&;'1&;',',',','1&,'F,g,h,F,{'{'{'{'*'*'('('e,k,h,X,n,n,n,n,n,n,n,n,n,j,f,e,5'4'6'3'4'5'2'* = ",
+"7'7'e,i$g,n,n,n,n,n,n,n,n,n,n,n,n,R,{',',',';';';';'g,F,+'1&,'1&,',',','/'1&,'h,g,g,1&{'{'{'*'*'('('e,&'g,j,n,n,n,n,n,n,n,n,n,n,g,i$e,7'4'4'7'7'4'7'* = ",
+"8'8'e,e,1&n,n,n,n,n,n,n,n,n,n,n,n,n,n,*'*',',',';';'1&i$,'1&e,1&r,q,q,F,1&i$,'1&&'1'1&{'{'{'*'('e,&'q,1&Z,n,n,n,n,n,n,n,n,n,n,n,1&e,e,7'4'9'0'7'4'a'* = ",
+"9'0'8'e,1&n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,R,k,Q,{',','q,e,,'q,e,q,q,i$,'q,&','*'q,{'e,q,{'*'*'e,&'Z,1&r,m,n,n,n,n,n,n,n,n,n,n,n,n,1&e,8'7'7'8'0'7'8'b'* = ",
+"b'b'8'e,1&s,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,R,Z,/'e,*'*'{',',',',',',',','{'{'{'*'('e,e,&'1'r,h,f,l,n,n,n,n,n,n,n,n,n,n,n,n,n,s,1&e,8'8'0'7'8'c'7'b'* = ",
+"c'8'0'e,i,r,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,m,1'q,f,q,j,Z,/'k,&'&'&'&'/'j,q,i,+'g,r,i$X,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,r,i,e,c'8'd'8'0'0'b'0'* = ",
+"c'0'0'e,e,1&n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,m,l,X,k,Z,r,F,j,Z,&'R,R,m,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,1&e,e,0'0'c'0'e'0'c'0'* = ",
+"c'0'0'c'e,1&s,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,m,q,r,l,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,s,1&e,0'f'c'c'c'g'h'c'c'* = ",
+"f'f'g'f'e,q,h,n,n,n,n,n,n,n,n,n,n,n,m,n,n,n,n,n,n,n,n,n,n,n,n,n,Z,g,Z,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,h,q,e,f'c'f'i'c'f'i'g'i'* = ",
+"h'i'f'f'i'e,1&n,n,n,n,n,n,n,n,n,n,n,l,j'n,n,n,n,n,n,n,n,n,n,&'g,i,R,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,1&e,g'f'i'i'i'i'f'i'g'f'* = ",
+"f'i'i'i'f'e,r,g,n,n,n,n,n,n,n,n,n,n,n,r,X,n,n,n,n,n,n,m,Z,F,g,Q,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,g,r,e,i'i'g'g'i'i'i'i'i'i'* = ",
+"k'k'i'i'i'e,e,1&m,n,n,n,n,n,n,n,n,n,n,m,+'+'q,i$j,f,g,h,i,l,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,m,1&e,e,i'i'l'i'i'i'i'i'm'i'* = ",
+"k'k'k'i'k'i'e,q,1&n,n,n,n,n,n,n,n,n,n,n,n,X,i$q,j,/'R,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,1&q,e,n'o'k'p'k'i'p'k'k'k'k'* = ",
+"p'p'n'm'n'm'k'e,1&i$n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,i$1&e,l'i'm'l'k'q'l'l'o'k'm'k'* = ",
+"i'm'i'q'm'q'm'e,e,1&n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,1&e,e,p'k'q'i'n'l'o'm'q'q'q'n'* = ",
+"m'q'q'p'p'q'p'q'e,j,1&n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,1&j,e,n'q'p'q'n'm'q'n'p'q'q'q'n'* = ",
+"q'q'q'q'q'q'q'q'q'e,r,1&n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,1&r,e,q'q'q'q'q'r'q'q'q'q'q'q'q'q'* = ",
+"r'q's's'r'q's'q'q't'e,F,g,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,g,F,e,q'q'r'r's'q's'q'u'q'q'q'q'q'q'* = ",
+"v'u'u't't'w'u's'q's'e,e,h,g,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,g,h,e,e,u'w'q'q'q'v's'r'u's'r'u'q'v'q'* = ",
+"w't'r'w'x'x'r's'r't't'e,e,F,1&n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,1&F,e,e,x't'q'q'q'r't't'w'r'u's's'x'w't'* = ",
+"x'w'x't'u'r'x'x'v'w's'r'e,e,r,1&n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,1&r,e,e,x'w'x'w'x'w'x'u'r'q'x'x't'x't'x'x'* = ",
+"t'x'x'x'x'x't't'x'x'x't'x'x'e,j,1&i$n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,i$1&j,e,x's'v't'x'x't'x'x'x'x'x't'x'u't'x'x't'* = ",
+"t'x'x'x'x'x'x'y'y'x'x't'x'z'x'e,e,1&1&m,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,m,1&1&e,e,x'x'A'A'x'x'x'x'x'x'x'A'x'x'x'y'x'A'B'y'* = ",
+"y'x'B'x'x'y'x'x'x'x'x'A'A'y'C'A'e,e,q,1&g,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,g,1&q,e,e,x'A'x'B'B'x'y'A'x'A'A'x'A'A'x'x'y'x'x'B'x'* = ",
+"A'A'A'x'x'D'C'y'y'D'x'D'A'A'B'B'A'C'e,e,r,1&h,s,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,s,h,1&r,e,e,A'E'B'x'C'A'D'B'E'C'A'x'x'x'D'B'x'y'A'x'x'C'y'* = ",
+"F'A'A'B'x'y'F'y'E'B'A'C'A'B'B'x'E'x'F'e,e,e,q,1&1&r,s,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,s,r,1&1&q,e,e,e,F'x'y'B'x'y'y'F'C'y'y'B'B'E'D'A'E'E'E'C'D'y'D'A'* = ",
+"E'E'y'B'B'E'E'A'E'B'E'B'E'E'D'B'A'C'A'B'D'B'e,e,e,i,1&1&1&g,j,k,l,m,n,m,l,k,j,g,1&1&1&i,e,e,e,B'E'E'A'B'E'E'B'A'B'B'E'E'B'E'E'E'y'B'E'E'B'A'B'E'B'D'* = ",
+"B'E'E'E'E'E'E'E'B'E'E'B'E'E'B'E'E'E'E'E'E'E'E'E'e,e,e,e,e,i$f,g,h,1&1&1&h,g,f,i$e,e,e,e,e,E'E'B'E'E'E'E'E'E'E'E'E'B'E'E'B'E'E'E'B'E'E'E'E'E'E'B'B'E'* = ",
+"G'E'G'H'E'I'B'J'E'E'B'E'E'J'E'E'J'J'E'J'E'J'B'E'J'H'H'E'e,e,e,e,e,e,e,e,e,e,e,e,e,E'E'E'E'E'E'E'E'K'J'H'E'G'H'E'E'E'E'B'H'E'H'E'H'E'B'E'E'E'E'B'E'E'* = ",
+"E'E'L'E'J'E'E'L'L'L'E'J'E'E'J'L'H'E'H'H'H'E'J'E'E'L'J'L'E'L'E'H'E'H'J'H'L'J'H'J'E'L'H'B'L'J'L'J'H'H'B'J'H'E'E'J'H'E'H'I'J'G'J'E'E'L'L'E'J'E'E'I'E'E'* = ",
+"H'E'M'E'L'H'N'J'E'H'N'H'H'H'L'E'J'L'J'E'J'E'H'L'L'H'M'L'L'E'J'J'H'L'J'L'H'J'L'J'J'H'H'H'E'O'E'J'H'L'L'L'P'J'J'L'L'E'J'J'J'J'J'E'H'N'J'J'L'N'H'E'E'N'* = ",
+"L'J'H'J'E'H'H'L'L'M'N'H'L'E'L'H'J'L'L'E'E'H'J'P'E'J'H'H'L'E'N'E'L'E'J'L'J'P'E'L'E'E'L'O'M'E'P'J'E'L'H'P'J'L'L'J'O'J'L'H'H'L'L'M'L'L'H'E'J'J'L'L'L'J'* = ",
+"H'L'L'L'L'P'L'J'H'P'P'P'P'L'J'O'N'P'L'L'L'P'L'P'L'H'N'H'L'L'O'P'P'L'L'P'L'P'P'L'L'L'L'L'P'L'O'P'J'L'P'L'N'P'L'N'P'L'P'H'P'O'P'L'H'P'L'L'P'L'L'P'P'J'* = ",
+"P'P'Q'R'% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % S'% S'% S'% % % T'k L'P'P'* = ",
+"U'U'V'W'W'W'X'X'Y'Z'`'X'W'+ X'X'R'`'+ Z'`'R'Z'+ R'R'X'`' )W'`'X'W'Y'X'X'X'`'+ Z'`'X'W' )X'R'Z'`'X'W'Y'X'X'X'`'+ Y'`'`'`'`'`'W'`' ).)`'X'+  )< +)L'@)* = ",
+"L'U'V'W'#)$)%)&)&)*)*)=)%)&)&)-)=)*)-)$)%)&)$)*)$);)$)=)&)-)%)>)=),)$);)&)%)=)')))$)&)=)-),);)$)))!)~)=)$)&)%)=)&)$);)$){)&)$)&)&)=)*)=)])^)/)U'P'()* = ",
+"@)@)V'W'_):)<)<),)!).)[)~)})|)1)2)<)3)')<)')})))})-)1)>){)')4)1)2)5)2)')5)6)')<)7)))8)_))):)9)0)4){)1)a)&):)')_).)6)0).)3)b){)~)')c)d)])9)])e)()P'@)* = ",
+"f)P'V'W'4)7)1)g)%)h)i)4)8)})b)Y'j)9)k)4)g)l)j)m):)n):)8)o)p):)5)i)|)>)[)>)Y'Z'b)m)0)q)r)5):),)7)s) )q)s):)9)t)c):)i)u)i)q)g)b)9)b)Y'd)6)d)9)e)f)()f)* = ",
+"@)f)V'W',)~)c)q)v)w)x)X>y)w)x)x)x)x)x)x)y)x)x)x)x)x)X>x)x)z)y)X>X>X>X>w)z)w)y)y)y)y)y)y)X>y)y)y)y)y)X>y)X>y)y)a;y)y)y)a;X>X>y)X>X>v)])m)|)l)e)f)f)A)* = ",
+"f)@)V'W'!)h).)2)]&B)C)D)E)F)F)F)F)F)F)F)F)E)E)G)H)D)I)B)J)C)C)C)B)B)B)J)K)L)M)N)N)N)O)P)Q)R)S)T)U)U)V)R)R)R)R)W)W)T)T)T)T)S)T)X)T)Y)5)c)t)k)e)f)f)#)* = ",
+"f)#)V'W'{)4).).)Z)H)`) !F)F)F)F)F)F)F)F)F)F)E)E)E)H)E)`)`)D).!C)C)B)C)B)K)B)+!N)P)P)P)P)Q)@!Q)Q)V)R)V)R)R)T)R)T)T)S)S)S)S)S)#!#!T)s)$!o)h)%!e)f)f)&!* = ",
+"f)*!V'W'%)3)0)m)S'C)`)#!y)v)v)v)v)=!v)-!v)v)v);!=!a;>!G)I),!;!'!v)v)v)v)w)w)X>a;a;v)a;v)X>>!L)s)4;a;a;y)a;y)v)y)y)y)y)X>y)y)y)s)@!d)*)|)])])e)#)#)#)* = ",
+"#)f)Q'W'$)c)c)j)]&B)E)S')!% ^)!!$!$!l)l)l)t)l)$!!!;!G&H)B))!j&~!l){!{!d)4;)!,!]!{!Z){!~!a;=!B)>!)!%!{!^!Z)Z){!Z)Z)Z)Z)Z)Z)S'%!W)V)d)0)<)j)R'e)&!#)/!* = ",
+"#)f)V'W'*)>)t).)]&.!(!~!y)G)_!:!:!:!:!<!<! !(! !<!s)[!G)C))!}!(!H)D)D)`)|!;!O)H)K)K)B)I)]&G&C)>!)!M)K)K)K)L)M)M)M)M)+!+!+!+!N)U)Q)1!2!|)3!t)e)4!*!4!* = ",
+"&!4!V'W',)a)o)!)j&}!@!]&X>H)I)P)N)P)N)P)D) !`)H)Q)5![!D)C))!6!G)B)B)K)I)~!=!R)C)@!@!Q)+!>!=!C)]&)!P)R)|!6!|!|!6!|!|!|!|!|!|!1!|!7!$!Y'~)2!!!e)8!4!/!* = ",
+"4!4!V'W'})k)[)9))!)!)!)!4;H)j&)!)!)!)!)!w)X)E)(!)!)!4;G)B))!|!G)B)K)L).!$!)!W)C)P)P)P)L)>!G&C)]&)!N)|!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!{!])^!h)e)4!4!*!* = ",
+"4!9!V'W'~)b)h)g),!S)N)S'v)I)D)N)N)M)M)@!j&)!j&S)D)D).!G)M))!|!G)B)B)K)B)M)p'L)+!@!@!@!L)>!v)C)]&)!P)U)S)S)#!S)#!S)S)#!#!#!#!#!#!W)s)j)h)d)m)e)4!8!4!* = ",
+"4!9!V'W'7)b)9)5)0!+!I)d)=!K)`)E)`)`)`)(!(!S)a;)!,!M)E)E)L))!|!D)L)L)L)M)K)B)+!P)@!Q)P)L)>!v)C)S')!M)N)+!+!N)+!N)+!P)P)P)P)P)P)V)@!1!3)])6)2!e)4!4!4!* = ",
+"a!4!V'W'*):)4)1)>!R)L)Z)G&N)H)I)I)I)D)D)H)(!E)-)4;)!,!M)B))!|!D)B)L)L)M)+!N)N)N)P)P)P)L)5!=!B)]&)!q)|!Y)1!Y)1!1!Y)q)q)q)q)q)s)X)@!Y)3!})9)l)e)4!9!b!* = ",
+"b!4!V'W'$)q),)j)5!T)+!$!)!P)D).!I)I)I)I)I)I)D)(!D)_))!7!B))!Y)D)K)L)M)+!N)P)N)N)P)Q)Q)L),!)!C){!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!7!L)Y)c!Y'd!!!e)4!4!e!* = ",
+"4!4!V'2)!)<)o)6)5!T)T)N)W)L)B)B)C)I).!.!C)I)C)C)H)E)M)C).!U)M)B)K)L)M)M)N)N)P)@!Q)Q)Q)@!R)W)L)Q)S)S)T)S)S)S)#!S)#!S)f!#!#!#!X)O)Q)Y)8)r)i)t)e)4!g!b!* = ",
+"g!e!V'W'$)7)k)|)@ T)S)Q)+!+!K)C)I)I)I)I)I)C)I)I)I)I)H)I)I)I)I)B)B)K)K)K)M)M)K)L)+!+!P)@!N)+!P)N)+!M)N)+!P)P)N)N)N)P)P)P)P)@!Q)T)U)1! ):)!!^!e)h!b!e!* = ",
+"b!e!V'2)!)~)k)q)5!T)T)|!X)V)}!}!T)#!S)C)L).!+!W)W)U)#!T)Q)+!}!6!P)M)6!X)@!K)}!7!S)S)6!}!P)}!6!X)7!6!V)T)V)X)1!1!}!7!|!6!#!7!1!|!@!1!:):)9)9)/)g!g!e!* = ",
+"a!i!V'W'&)[)Y'')5!R)X)y)5!0!s)Z)S'a;5!#!s)T){!4;X>v)4;Z)]&{!~!$!+!7!w)4;Z)#!=!s)5!4;{!Z)U){!a;w)Y)w)Y)s)1!m)$!{!>!>!j!a;S',!4;4;@!1!4)g)]!^)e)h!e!4!* = ",
+"g!h!V'X'[)')c)j)>!U)T)|!S)}!N)P)P)X)R)X)}!X)P)U)T)S)T)R)K)U)B)B)I)N)P)P)X)}!}!}!#!#!6!}!+!S)6!7!7!6!|!6!Y)7!Q)V)#!|!|!X)S)|!|!1!N)|!k)8)h)t)e)i!g!h!* = ",
+"g!g!V'X'o)2)4)s)j&X)X)#!S)R)T)V)@!O)N)N)+!N)L)+!M)M)N)O)N)N)P)@!Q)@!O)N)P)U)P)U)@!@!R)R)R)R)U)Q)T)U)R)R)T)T)T)T)R)R)T)R)R)R)T)T)V)q) )3!n)!!/)i!g!g!* = ",
+"g!g!V'X'&)1)d)1)a;y)y)y)y)y)a;y)y)X>X>y)X>y)y)y)y)X>w)y)y)y)a;X>y)y)y)a;z)y)y)w)y)a;y)X>y)y)X>y)X>y)y)y)y)y)y)y)y)X>y)y)a;X>X>y)y)a;2!2)^)g)e)g!g!g!* = ",
+"g!g!V'X'~).)9)3!5)|)6)p)])-)1)3!])b)b)g)5)k)2)5)2)|)k!o)3)4)_)5)9)1).)k!a)3!:)3)2!i)n)d!')0)h)5)2)k)))5)9)5)3!g)k)3!5)5)9)3!m)4):) )*)|)p)^)/)g!g!g!* = ",
+"g!g!U,X'%)2)1)n)1)0)!!0)5)5)5)h)j)1)Y'])r)1)*)1)u)h)')>)3!3!d!c)5)i)h)n)[)i)5)g)j)9)i)1)^)6)d!3!')')!!0)c)|)'):)1)5)^!-)d)Y'k!8)l).)5)R'0)Y'e)g!g!g!* = ",
+"g!g!V'X'a)5)X'^)*)!!l)u)l)^)u)l!X'X'!!R'5)!!X'u)_)d!u)d)X'u)]!!!!!^)~!j)!!u)9)d)^)^)^)!!9)l!^)^)l!j)u)0)u)9)!!u)!!j)])0)j)^)j)d)R'Z)R'9)m!]!e)g!g!g!* = ",
+"g!g!z,.)`'`'j!j!n!% % j!j!!!n!j!j!n!n!n!j!n!j!n!n!j!j!n!n!n!j!n!j!n!n!j!j!n!n!n!j!n!j!n!n!j!j!n!n!n!j!n!j!j!n!n!n!j!n!j!n!% j!!!% n!!!j!% j&e)g!g!g!* = ",
+"g!g!V'X'j!o!X>-!o!-!X>X>X>y)y)X>X>X>X>X>X>-!X>X>y)y)X>X>X>y)y)-!X>X>y)y)X>X>X>y)y)-!X>X>X>X>y)y)y)X>X>y)X>X>X>X>y)y)-!X>y)-!y)y)X>X>X>X>X>X>e)g!g!g!* = ",
+"g!g!, /)e)p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!p!e)g!g!g!* = ",
+"g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!* = ",
+"g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!* q!",
+"g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!r!)!",
+"g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!g!s!)!",
+"t!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!u!v!)!",
+"% w!@ @ @ @ @ @ w!@ @ w!@ @ @ @ @ @ w!@ @ w!@ @ @ @ @ @ w!@ @ w!w!w!w!w!w!w!w!w!w!w!w!w!@ @ @ @ @ @ w!@ @ w!@ @ w!@ @ w!@ @ @ @ w!@ @ w!@ @ @ @ @ w!@ x!"};
diff --git a/hdspmixer/pixmaps/iomixer.xpm b/hdspmixer/pixmaps/iomixer.xpm
new file mode 100644 (file)
index 0000000..020ed43
--- /dev/null
@@ -0,0 +1,513 @@
+/* XPM */
+char * iomixer_xpm[] = {
+"36 253 257 2",
+"      c None",
+".     c #000000",
+"+     c #080000",
+"@     c #080808",
+"#     c #080810",
+"$     c #001008",
+"%     c #101010",
+"&     c #181010",
+"*     c #002010",
+"=     c #101818",
+"-     c #181818",
+";     c #201818",
+">     c #002918",
+",     c #202018",
+"'     c #003118",
+")     c #202020",
+"!     c #202029",
+"~     c #292020",
+"{     c #202920",
+"]     c #392020",
+"^     c #292920",
+"/     c #292929",
+"(     c #004120",
+"_     c #293131",
+":     c #412920",
+"<     c #313131",
+"[     c #104A29",
+"}     c #393939",
+"|     c #394139",
+"1     c #414141",
+"2     c #20524A",
+"3     c #414152",
+"4     c #4A4141",
+"5     c #414A41",
+"6     c #4A4A41",
+"7     c #4A4A4A",
+"8     c #524A41",
+"9     c #4A524A",
+"0     c #525252",
+"a     c #734A29",
+"b     c #525A52",
+"c     c #5A5A52",
+"d     c #625A4A",
+"e     c #317B20",
+"f     c #5A625A",
+"g     c #62625A",
+"h     c #626A62",
+"i     c #6A6A62",
+"j     c #6A6A6A",
+"k     c #736A62",
+"l     c #737373",
+"m     c #7B736A",
+"n     c #737383",
+"o     c #9C7329",
+"p     c #737B73",
+"q     c #737B7B",
+"r     c #7B7B73",
+"s     c #7B7B7B",
+"t     c #AC6A5A",
+"u     c #7B8373",
+"v     c #7B837B",
+"w     c #83837B",
+"x     c #838383",
+"y     c #838B83",
+"z     c #8B8B83",
+"A     c #8B8B8B",
+"B     c #8B948B",
+"C     c #94948B",
+"D     c #949494",
+"E     c #949C94",
+"F     c #949C9C",
+"G     c #9C9C94",
+"H     c #9C9C9C",
+"I     c #9CA49C",
+"J     c #9CA4A4",
+"K     c #A4A49C",
+"L     c #A4A4A4",
+"M     c #C5A45A",
+"N     c #A4ACA4",
+"O     c #ACACA4",
+"P     c #ACACAC",
+"Q     c #B4B4AC",
+"R     c #C5B48B",
+"S     c #BDBDB4",
+"T     c #C5C5BD",
+"U     c #CDCDCD",
+"V     c #D5D5CD",
+"W     c #F6CDCD",
+"X     c #DEDED5",
+"Y     c #DEE6DE",
+"Z     c #E6E6E6",
+"`     c #EEEEEE",
+" .    c #F6EEEE",
+"..    c #F6F6F6",
+"+.    c #F6FFFF",
+"@.    c #FFFFFF",
+"#.    c #6699FF",
+"$.    c #66CC00",
+"%.    c #66CC33",
+"&.    c #66CC66",
+"*.    c #66CC99",
+"=.    c #66CCCC",
+"-.    c #66CCFF",
+";.    c #66FF00",
+">.    c #66FF33",
+",.    c #66FF66",
+"'.    c #66FF99",
+").    c #66FFCC",
+"!.    c #66FFFF",
+"~.    c #990000",
+"{.    c #990033",
+"].    c #990066",
+"^.    c #990099",
+"/.    c #9900CC",
+"(.    c #9900FF",
+"_.    c #993300",
+":.    c #993333",
+"<.    c #993366",
+"[.    c #993399",
+"}.    c #9933CC",
+"|.    c #9933FF",
+"1.    c #996600",
+"2.    c #996633",
+"3.    c #996666",
+"4.    c #996699",
+"5.    c #9966CC",
+"6.    c #9966FF",
+"7.    c #999900",
+"8.    c #999933",
+"9.    c #999966",
+"0.    c #999999",
+"a.    c #9999CC",
+"b.    c #9999FF",
+"c.    c #99CC00",
+"d.    c #99CC33",
+"e.    c #99CC66",
+"f.    c #99CC99",
+"g.    c #99CCCC",
+"h.    c #99CCFF",
+"i.    c #99FF00",
+"j.    c #99FF33",
+"k.    c #99FF66",
+"l.    c #99FF99",
+"m.    c #99FFCC",
+"n.    c #99FFFF",
+"o.    c #CC0000",
+"p.    c #CC0033",
+"q.    c #CC0066",
+"r.    c #CC0099",
+"s.    c #CC00CC",
+"t.    c #CC00FF",
+"u.    c #CC3300",
+"v.    c #CC3333",
+"w.    c #CC3366",
+"x.    c #CC3399",
+"y.    c #CC33CC",
+"z.    c #CC33FF",
+"A.    c #CC6600",
+"B.    c #CC6633",
+"C.    c #CC6666",
+"D.    c #CC6699",
+"E.    c #CC66CC",
+"F.    c #CC66FF",
+"G.    c #CC9900",
+"H.    c #CC9933",
+"I.    c #CC9966",
+"J.    c #CC9999",
+"K.    c #CC99CC",
+"L.    c #CC99FF",
+"M.    c #CCCC00",
+"N.    c #CCCC33",
+"O.    c #CCCC66",
+"P.    c #CCCC99",
+"Q.    c #CCCCCC",
+"R.    c #CCCCFF",
+"S.    c #CCFF00",
+"T.    c #CCFF33",
+"U.    c #CCFF66",
+"V.    c #CCFF99",
+"W.    c #CCFFCC",
+"X.    c #CCFFFF",
+"Y.    c #FF0000",
+"Z.    c #FF0033",
+"`.    c #FF0066",
+" +    c #FF0099",
+".+    c #FF00CC",
+"++    c #FF00FF",
+"@+    c #FF3300",
+"#+    c #FF3333",
+"$+    c #FF3366",
+"%+    c #FF3399",
+"&+    c #FF33CC",
+"*+    c #FF33FF",
+"=+    c #FF6600",
+"-+    c #FF6633",
+";+    c #FF6666",
+">+    c #FF6699",
+",+    c #FF66CC",
+"'+    c #FF66FF",
+")+    c #FF9900",
+"!+    c #FF9933",
+"~+    c #FF9966",
+"{+    c #FF9999",
+"]+    c #FF99CC",
+"^+    c #FF99FF",
+"/+    c #FFCC00",
+"(+    c #FFCC33",
+"_+    c #FFCC66",
+":+    c #FFCC99",
+"<+    c #FFCCCC",
+"[+    c #FFCCFF",
+"}+    c #FFFF00",
+"|+    c #FFFF33",
+"1+    c #FFFF66",
+"2+    c #FFFF99",
+"3+    c #FFFFCC",
+"4+    c #FFFFFF",
+"5+    c #000000",
+"6+    c #0D0D0D",
+"7+    c #1A1A1A",
+"8+    c #282828",
+"9+    c #353535",
+"0+    c #434343",
+"a+    c #505050",
+"b+    c #5D5D5D",
+"c+    c #6B6B6B",
+"d+    c #787878",
+"e+    c #868686",
+"f+    c #939393",
+"g+    c #A1A1A1",
+"h+    c #AEAEAE",
+"i+    c #BBBBBB",
+"j+    c #C9C9C9",
+"k+    c #D6D6D6",
+"l+    c #E4E4E4",
+"m+    c #F1F1F1",
+"n+    c #FFFFFF",
+"o+    c #52524A",
+"p+    c #524A52",
+"q+    c #4A4A4A",
+"r+    c #625A4A",
+"s+    c #00005A",
+"t+    c #311800",
+"u+    c #291800",
+"v+    c #412000",
+"w+    c #311800",
+"x+    c #311800",
+"y+    c #311800",
+"z+    c #412000",
+"A+    c #4A2900",
+"B+    c #000010",
+"C+    c #4A4100",
+"D+    c #4A4141",
+"E+    c #4A4141",
+"F+    c #292041",
+"G+    c #8B8B29",
+"H+    c #8B8B8B",
+"7 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 / ",
+"r m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m < ",
+"m P N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N g ",
+"k N L | } < < < < < < < < < } l N L N L 1 | | } | | | | | | | 1 w L L c ",
+"k N L o o o o o o o o o o o o : N L N L ] : : : : : : : : : : ] & L L c ",
+"k N L a o R M M M M M M M M ] & N L N L ; : W t t t t t t t t % . L L c ",
+"k N L a o o @.o o o o o @.o ] & N L N L ; : a : : @.@.@.: : : & . L L c ",
+"k L L a o o @.@.o o o @.@.o ] & L L L L ; : a : @.: : : : : : & . L L c ",
+"k L L a o o @.@.o o o @.@.o : % L L L L ; : a : @.: : : : : : & . L L c ",
+"k L L a o M @.o @.o @.o @.o : & L L L L ; : a : : @.@.: : : : & . L L c ",
+"k L L a o o @.o @.o @.o @.o ] % L L L L ; : a : : : : @.: : : & . L L c ",
+"k L L a a o @.o o @.o o @.o : & L L L L ; : a : : : : @.: : : & . L L c ",
+"k L L a o M @.o o @.o o @.o ] & L L L L ; : a : @.@.@.] : : : & . L L c ",
+"k L L a o a o o o o o o o a : & L L L L ; : : ] ] ] ] ] ] ] ; & . L L c ",
+"k L L a ] % % # # # # # # & # % L L L L ; & . . . . . . . . . . . L L c ",
+"k L L & . . . . . . . . . . . . L L L L + . . . . . . . . . . . . L L c ",
+"k L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L b ",
+"k L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L b ",
+"k L A v v v v v v v v v v v v v v v v v v v v v v v v v v v v v A G I b ",
+"k L x 1 | } < < _ _ / / / / / / / / / / / / / / / / _ _ < < } | 1 I J b ",
+"k L y | < < _ / / / ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! / / / _ _ < 1 N N b ",
+"k J y } < / / ! ) , - , - , - , - , - , - , - , - , , ) ! / / < } P N b ",
+"k J y < _ / ! , - - = = = = = = = = = = = = = = = = = - , ! / _ < P N b ",
+"k J y < / ! , - = % % # # # # # # # # # # # # # # % = = - , ! / < P N b ",
+"k J y _ / ! - = % # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # % = - ! / _ P N b ",
+"k J y _ / ) - = % # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # % = - ) / _ P N b ",
+"k J y < / ) - = % # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # & = - ) / _ P N b ",
+"k J y < / ! , - = % % # # # # # # # # # # # # # # % % = - , ! / < P N b ",
+"k J y < _ / ! , - - = = = = = = = = = = = = = = = = - - - ! / _ < P N 0 ",
+"k J y } _ / / ! ) , - - - - - - - - - - - - - - , - , ) ! / / < } P N 0 ",
+"k J A 1 < < _ / / / ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! / / / _ < < | Q N 0 ",
+"k J E 1 1 } < < _ _ / / / / / / / / / / / / / / / / _ _ < < } 1 1 Q N 0 ",
+"k J J P S S S S S S S S S S S S S S S S S S S S S S S S S S S S S Q L 0 ",
+"k I J N N P P P P P P P P P P P P P P P P P P P P P P P P P P P P L J 0 ",
+"k L J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J b ",
+"k L A v v v v v v v v v v v v v v v v v v v v v v v v v v v v v A G I b ",
+"k L x 1 | } < < _ _ / / / / / / / / / / / / / / / / _ _ < < } | 1 I J b ",
+"k L y | < < _ / / / ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! / / / _ _ < 1 N N b ",
+"k J y } < / / ! ) , - , - , - , - , - , - , - , - , , ) ! / / < } P N b ",
+"k J y < _ / ! , - - = = = = = = = = = = = = = = = = = - , ! / _ < P N b ",
+"k J y < / ! , - = % % # # # # # # # # # # # # # # % = = - , ! / < P N b ",
+"k J y _ / ! - = % # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # % = - ! / _ P N b ",
+"k J y _ / ) - = % # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # % = - ) / _ P N b ",
+"k J y < / ) - = % # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # & = - ) / _ P N b ",
+"k J y < / ! , - = % % # # # # # # # # # # # # # # % % = - , ! / < P N b ",
+"k J y < _ / ! , - - = = = = = = = = = = = = = = = = - - - ! / _ < P N 0 ",
+"k J y } _ / / ! ) , - - - - - - - - - - - - - - , - , ) ! / / < } P N 0 ",
+"k J A 1 < < _ / / / ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! / / / _ < < | Q N 0 ",
+"k J E 1 1 } < < _ _ / / / / / / / / / / / / / / / / _ _ < < } 1 1 Q N 0 ",
+"k J J P S S S S S S S S S S S S S S S S S S S S S S S S S S S S S Q L 0 ",
+"k I J N N P P P P P P P P P P P P P P P P P P P P P P P P P P P P L J 0 ",
+"k J B h < < < < < < < < < < < < < < < < < < < < < < < < < < < < h B H 0 ",
+"k I A 7 c c 0 0 7 c 9 0 b 7 0 0 0 9 7 7 9 9 9 9 9 b 9 7 0 9 0 7 7 E I 0 ",
+"k I A 0 9 c 0 9 c 0 9 9 9 b 0 c 0 c 9 9 9 7 b 7 9 c b b 9 9 c 7 < I I 0 ",
+"k I A b 9 0 9 0 7 0 7 c b 7 7 c 7 c 9 9 7 0 0 0 9 9 9 9 0 0 c 5 { I I 0 ",
+"k I A b 7 9 9 b b 7 7 b 7 b 7 7 9 0 b 0 9 9 c 7 9 9 7 9 7 7 7 1 / I I 0 ",
+"k I A b b 0 7 0 0 7 7 0 b b 9 c f c h r w r r u w r s m g 0 c 1 / I I 0 ",
+"k I A b c 7 9 7 / ) < 1 7 9 7 7 f 9 i . . . . . . . . . . 7 0 7 { I I 0 ",
+"k I A b c c 9 1 ) m 4 9 9 c 9 c g 9 f . . . . . . . . . . 5 7 7 { I I 0 ",
+"k I A b b 9 c 6 ^ d / f f 0 b 7 b 9 g . * $ * * * $ * > . 5 9 | ^ I I 0 ",
+"k I z b 0 b 7 7 / 8 ~ h c 9 c 9 g 9 c . * * > > > ' > ( . | 9 5 / I I 0 ",
+"k I A b c 7 9 7 ) 8 ~ i h c c 7 f c i . ' ' ( > ' ( ( [ . 1 7 | { I I 0 ",
+"k I A b b 9 7 7 / 8 ~ k f 7 7 7 g 9 f . > ' ( ( ' ( ( [ . 1 9 7 / I I 0 ",
+"k I A b b 7 7 1 ^ 8 ~ h f c 7 9 b 7 g . > > ' ' ( ' ( [ . 1 5 7 { I H 0 ",
+"k I A b 9 0 9 | ^ 8 ~ k b 0 9 0 b 7 h . > ' ( ' ' ( ( [ . 5 5 7 ) H I 0 ",
+"k I y b 9 7 7 5 { 8 ~ h b c 9 9 c 0 h . > ' ' ( ' ( ( [ . | 5 | ^ H H 0 ",
+"k I y b 9 b 7 7 / 8 ~ i b c 9 7 f b h . > ' ' ' ( ' ( [ . | 9 5 / H H 0 ",
+"k I A b c 9 b 6 / 8 ~ m f 9 0 9 b 9 h . > ' ' ' ' ( ( [ . 7 1 5 ^ H H 0 ",
+"k I y b 0 9 0 | { 8 ~ h h 7 7 9 c b f . > ' ( ' ' ( ( [ . 5 0 | { H H 0 ",
+"k I y b b 9 0 5 / 8 ~ i f 9 b 9 g 7 g . > > ' ( ' ' ( [ . 5 7 5 / H H 0 ",
+"k I y 0 9 0 9 7 / 8 ~ m c 7 0 9 f 9 g . > > ( ( ' ' ( [ . 1 7 | { H H 0 ",
+"k I y b 7 c b 7 / 8 ~ i c 0 0 7 0 c c . > > ' ( ' ( ( [ . | 0 | { H H 0 ",
+"k I y 0 9 c b 5 / 8 ~ h f 7 0 9 0 c i . > ' ' > ( ' ( [ . 5 7 5 { H H 0 ",
+"k I y b c 0 7 5 / 8 ~ h g 7 c 7 f b h . > > ' ' ( ' ( [ . | 5 7 ) H H 0 ",
+"k I y 0 0 7 7 7 ) 8 ~ i h 7 0 c c 0 g . > ' ' ' ' ' ( [ . 1 9 7 ) H H 0 ",
+"k I y 0 c 7 9 1 ) 8 ~ h c 9 c 9 g c c . ' ' ( ( ( ' ( [ . 7 7 5 / H H 0 ",
+"k I y 0 7 0 9 | { 8 ~ h b c 7 b 0 0 f . ' ' ' ' ' ' ( [ . 1 9 1 / H H 0 ",
+"k I y 0 9 b 7 1 ^ 8 ~ k f 9 0 9 c 9 g . > ' ( ' ( ' ( [ . 1 5 1 { H H 0 ",
+"k I y 0 7 b c 7 { 8 ~ g h 0 7 c b c h . > > ' ' ' ' ( [ . 5 5 5 ^ H H 0 ",
+"k I y 0 9 9 b 6 ) 8 ~ h f 9 7 9 g 9 g . > > ' ' ' ( ( [ . 7 5 1 ) H H 0 ",
+"k I y 0 7 c 7 7 / 8 ~ h b 7 7 b f 7 h . > > ' ' ( ( ( [ . 1 5 7 ) H H 0 ",
+"k I y 0 9 9 b 7 / 8 ~ k f 9 7 0 b 0 g . ' ' ( ' ' ' ( [ . 5 5 1 / H H 0 ",
+"k H y 0 9 c 9 1 ^ 8 ~ k f b 7 c 0 c h . > ' ' ( ' ' ( [ . 1 9 | / H H 0 ",
+"k H y 0 0 9 c | { 8 ~ i h 7 7 9 0 7 g . > > ( ( ' ( ( [ . 7 0 1 / H H 0 ",
+"k H y 0 9 b 0 | ^ 8 ~ g f 9 7 9 b 9 h . ' > ( ' ' ' ( [ . 5 9 1 ) H F 0 ",
+"k H y 0 9 c c 1 { 8 ~ h g b 9 c b 9 i . > ' ' > ( ' ( [ . | 7 1 { F H 0 ",
+"k H y 0 0 9 9 1 ^ 8 ~ m b c 0 b f 9 f . > > ' ' ' ' ' [ . 7 7 5 { H H 0 ",
+"k H y 0 7 b 0 5 { 8 ~ i b 0 c 7 0 c f . > ( ' ' ' ' ( [ . | 7 7 ^ F F 0 ",
+"k H y 0 b 9 c 7 ) 8 ~ i h 9 9 7 f 9 g . > > ( ' ( ' ( [ . | 7 7 / F F 0 ",
+"k H y 0 7 9 9 7 ^ 8 ~ i f 0 b 0 b 9 i . > > ' ' ' ' ( [ . | 9 1 ^ F F 9 ",
+"k H y 0 0 0 b 1 { 8 ~ h b 9 9 c f c g . > ' ' ' ' ' ( [ . 7 5 1 ) F F 9 ",
+"k H y 0 9 0 c 5 ) 8 ~ i g 9 b 9 g 9 g . > ' ( ' ' ( ( [ . | 0 1 ) F F 0 ",
+"k H y 0 b b 9 1 { 8 ~ i h 0 7 9 9 7 f . > ( ' ' ' ( ( [ . 5 7 7 / F F 9 ",
+"k H y 0 9 9 9 5 / 8 ~ h f 0 0 9 f 7 c . > > ' ( > ' ( [ . | 9 1 / F F 9 ",
+"k H y 0 7 7 c | / 8 ~ g g 0 0 9 b 9 g . > ' ( ' ' ' ( [ . 7 9 1 / F F 9 ",
+"k H y 0 9 7 9 5 / 8 ~ k b b b c b 0 f . > > ( ' ( ( ( [ . | 7 5 { F F 9 ",
+"k H y 0 9 0 c 7 / 8 ~ h h 7 7 9 b 9 f . > > ' ( ( ' ( [ . 7 7 1 { F F 9 ",
+"k H y 0 9 9 0 5 / 8 ~ h g 9 7 c g b f . > ' ' > ' ( ( [ . 7 0 1 ^ E E 9 ",
+"k H x 0 9 9 9 1 / 8 ~ g g 9 7 7 f 9 f . > ' ' ( > ' ( [ . 5 0 | / E F 9 ",
+"k H x 0 9 0 c | ^ 8 ~ k g 9 0 9 b 7 i . > > ( ' ' ' ( [ . 5 1 5 ^ E E 9 ",
+"k F x 0 7 b c 5 / 8 ~ i c c 7 b b 7 h . > ' ( ' ' ' ( [ . 7 5 7 / E E 9 ",
+"k F x 0 9 0 7 5 { 8 ~ m b 9 7 7 g c f . > > ( ' ' ' ( [ . 5 0 7 { E E 9 ",
+"k G x 0 0 7 b 1 / 8 ~ k g c 9 b 0 b c . > ' > ' ' ' ( [ . | 5 5 ^ E E 9 ",
+"k F x 0 c 0 9 | ^ 8 ~ i b c 0 0 c 7 f . > ' ' ' ' ( ( [ . 7 0 7 / E E 9 ",
+"k F x 0 c b 0 1 / 8 ~ g h b 0 9 f 0 g . ' > ' ' ' ' ( [ . 1 7 1 ^ E E 9 ",
+"k F x 0 9 0 0 7 / 8 ~ i f 9 0 0 f 9 i . > > ' ( ( ' ( [ . 5 5 5 / E E 9 ",
+"k G x 0 7 9 c 7 ) 8 ~ g h 0 7 9 f 7 h . > > ( ' ' ' ( [ . 7 7 1 / E E 9 ",
+"k G x 0 0 9 7 7 / 8 ~ g b 9 c b g 9 h . ' > ' ' ' ( ( [ . 5 9 5 ) E E 9 ",
+"k F x 0 7 9 0 1 ^ 8 ~ h b 9 0 c c 7 f . > ' ( ' ( ' ( [ . 7 9 5 { E E 9 ",
+"k G x 0 0 7 7 5 { 8 ~ h b b 9 9 f 9 f . > > ( ( ( ( ( [ . 5 5 7 { E E 9 ",
+"k G x 0 c 7 c 7 { 8 ~ g h 0 9 9 g c g . * ' ( ' ' ( ( [ . 7 5 | / E E 9 ",
+"k F x 0 c 7 9 7 { 8 ~ g f b 9 b 0 c c . ' ' ' ' ( ( ( [ . 5 9 1 ^ E E 9 ",
+"k F x 0 0 9 0 5 { 8 ~ i b b 0 9 c 0 f . > ' ' ' ' ' ( [ . 1 5 5 / E E 9 ",
+"k E x 0 c 9 b 7 { 8 ~ g h 9 c 9 0 0 h . > > ( ( ( ( ( [ . 1 7 7 / E E 9 ",
+"k E x 0 9 b b 7 / 8 ~ g h 9 0 c f 0 f . ' ' ' ' ( ( ( [ . 5 9 1 ) E E 9 ",
+"k E x 0 c 7 7 5 { 8 ~ i g 0 9 7 g b f . > > ' > ' ( ( [ . 5 1 7 { E E 9 ",
+"k E x 0 b 7 7 1 ^ 8 ~ k f 0 c c 0 9 i . > > ' ' ' ( ( [ . | 0 7 ^ E E 9 ",
+"k E x 0 9 9 b 1 / 8 ~ i g 9 0 c c b h . > ' ' ( ' ' ( [ . 5 7 7 { E E 9 ",
+"k E x 0 b 9 7 5 ) 8 ~ l b 0 9 9 b 0 g . > > ( ' ' ' ( [ . 5 7 5 ^ E E 9 ",
+"k E x 9 9 0 b 5 / 8 ~ h g 9 c 7 f 0 g . > ' ' ( ' ( ( [ . 1 7 7 { E E 9 ",
+"k E x 0 0 b 9 5 / 8 ~ h c 9 9 7 f 9 h . > ' ' ' ' ( ( [ . 5 5 1 ) E D 9 ",
+"k E x 0 9 9 0 7 { 8 ~ h f b 7 c g c h . > > ( ' > ' ( [ . 5 9 7 ) D E 9 ",
+"k E x 9 9 0 0 1 / 8 ~ i f 9 0 b f 7 g . ' ' ' ( ' ( ( [ . 5 0 5 { D D 9 ",
+"k E x 0 0 0 c 7 ^ 8 ~ m b 7 7 9 f 7 f . > ' ' ( ' ( ( [ . 7 7 7 ) E D 9 ",
+"k E x 9 c 7 b | ^ 8 ~ k f 0 7 0 f 0 h . > > ( ' ( ( ( [ . 1 5 5 { D D 9 ",
+"k E v 9 7 7 7 | ^ 8 ~ h f 0 9 c 0 9 h . > > ( ' ' ' ( [ . 1 9 5 { D D 9 ",
+"k E v 0 9 7 9 5 { 8 ~ k g 9 9 9 g 7 f . > > ' ' ' ' ( [ . 1 9 5 / D D 9 ",
+"k E v 9 0 9 0 7 ) 8 ~ h c 7 9 7 f 9 h . ' ' ( ' ' ' ( [ . 5 5 7 ^ D D 9 ",
+"k E v 9 9 9 b 7 { 8 ~ h b b 9 0 g 9 f . > ' ' ( ' ( ( [ . 7 7 5 ) D D 9 ",
+"k E v 9 9 9 0 5 { 8 ~ h b 9 b b b 9 g . > ' ' ( ' ' ( [ . 5 0 1 ^ D D 9 ",
+"k E v 9 0 0 c 5 { 8 ~ h b c b b b 0 g . > > ' ( ' ' ' [ . 1 9 7 ) D D 9 ",
+"k E v 9 9 7 9 | / 8 ~ i c c 9 9 0 c f . > > ( ' ' ' ( [ . 5 5 5 / D D 9 ",
+"k E v 9 b c 0 7 { 8 ~ h b 0 9 0 f b h . > ' ( ' ' ( ( [ . 1 0 5 ^ D D 9 ",
+"k E v 9 0 9 c 1 { 8 ~ m c 9 9 c c 0 h . > > ' ( ' ( ( [ . 7 1 7 { D D 9 ",
+"k E v 9 b 7 0 5 / 8 ~ i f 7 b c g 9 f . > > ( ( ' ( ( [ . | 5 5 ^ D D 9 ",
+"k D v 9 7 9 b 1 / 8 ~ i c 9 7 c b 9 h . > ' ' > ( ( ( [ . 5 9 5 / D D 9 ",
+"k E v 9 7 c 0 7 { 8 ~ k b 0 9 0 g 7 i . > ' ' ' ( > ( [ . 1 0 7 / D D 9 ",
+"k D v 9 0 7 9 1 ) 8 ~ i g 7 9 9 b 0 h . ' ' ( ( ( ' ( [ . 7 0 1 / D D 9 ",
+"k D v 9 9 9 9 5 ^ 8 ~ h f 9 9 b g b f . > ' ' > ( ' ( [ . 7 1 5 ^ D D 9 ",
+"k E v 9 9 b 9 5 ) 8 ~ h f c 9 b g 9 f . > ' ( ( ( ' ( [ . | 5 5 ) D D 7 ",
+"k D v 9 b 7 b | { 8 ~ h b 9 b 7 c 0 f . > > ' ' ' ' ( [ . 6 0 5 ) D D 9 ",
+"k D v 9 7 9 9 | / 8 ~ i g 0 0 9 g 9 f . > ' ' ' ' ( ( [ . 1 5 5 / D D 9 ",
+"k D v 9 9 7 7 5 ^ 8 ~ g f 0 7 7 g 0 f . > ' ' ' ' ' ( [ . 7 0 5 / D D 7 ",
+"k D v 9 9 7 7 5 { 8 ~ i f 9 0 c 0 7 g . > > ' ' ' > ( [ . 7 9 1 / D D 7 ",
+"k D v 9 b b 9 | / 8 ~ h c 7 7 9 b 9 g . > > ( ' ' ( ( [ . | 0 7 ) D D 7 ",
+"k D v 9 9 9 0 1 / 8 ~ i h 0 b 9 c 9 g . > ' ' ' ( ( ( [ . 7 1 1 ^ C C 7 ",
+"k D v 9 0 c 9 7 { 8 ~ i h 0 b 9 f 7 i . > ( ( ' ( ' ( [ . 7 5 5 { C C 7 ",
+"k D v 9 0 9 7 7 ^ 8 ~ i g 0 b 9 f 9 i . ' ' ' ' > ' ( [ . | 9 1 { C C 7 ",
+"k D v 9 b 0 9 5 / 8 ~ h f 7 9 9 f 9 f . > > ( ' ( ' ' [ . 5 7 5 / C C 7 ",
+"k D v 9 9 7 0 | / 8 ~ k g 7 9 9 c c g . > ' ( ' ' ' ( [ . | 9 | / C C 7 ",
+"k D v 9 c 9 c 5 ) 8 ~ l b b 9 7 f b g . > > ' ' ' ( ( [ . 7 0 7 { B B 7 ",
+"k D v 9 9 7 b 5 ) 8 ~ k g 9 9 9 b 9 h . ' ( ' ' ' ( ( [ . | 9 7 ) B C 7 ",
+"k D v 9 9 7 0 1 ) 8 ~ i c 7 c 7 g 7 h . > ' ( ' ' ' ( [ . | 5 7 { C B 7 ",
+"k D v 9 c b 7 5 { 8 ~ k f 7 9 c c b c . > ' ' ' ( ' ( [ . 5 7 7 ) C B 7 ",
+"k D v 9 c 9 b | ^ 8 ~ g f 7 0 0 f b i . > ' ' ( ( ( ( [ . 5 9 | { B B 7 ",
+"k D v 9 9 0 0 | / 8 ~ i b 7 9 9 b 0 f . > ' ' ( ' ( ( [ . 5 1 7 ^ B B 7 ",
+"k D v 9 0 0 b 5 ) 8 ~ h h 7 9 0 0 0 g . ' ' ' ' ' ' ( [ . 5 9 7 / B B 7 ",
+"k D v 9 c 9 b 5 ^ 8 ~ i g 9 9 7 g 0 h . ' > ' ( ( ' ( [ . 7 5 7 ^ B B 7 ",
+"k D v 9 7 b c | { 8 ~ h f 7 b 9 f 9 i . ' ' ' ' ( ' ( [ . | 5 5 { B B 7 ",
+"k C v 9 b 7 0 7 ^ 8 ~ h f 7 7 9 b 9 i . > ' ' ' ( ' ( [ . | 7 1 ) B B 7 ",
+"k C v 9 7 9 9 7 { 8 ~ g g 0 9 0 g 9 h . > ' ( ' ( ' ( [ . 1 9 5 / B B 7 ",
+"k C v 9 9 0 9 5 / 8 ~ k b 0 c 0 b 0 h . ' ' ( ' ( ( ( [ . 1 0 7 ^ B B 7 ",
+"k C v 9 7 0 c | / 8 ~ g h 9 0 b f 9 f . ' ' ( ( ' ' ( [ . 7 1 1 { B B 7 ",
+"k C v 9 0 b c 5 { 8 ~ h g 7 9 9 0 9 i . * > ' ' ( ' ( [ . 5 0 | { B B 7 ",
+"k C v 9 7 c 9 5 ^ 8 ~ i h c 7 9 f b g . ' ' ' ( ( ( ( [ . | 9 | ) B B 7 ",
+"k C v 9 7 0 9 | / 8 ~ g h 0 7 0 b b f . ' ' ' ' ( ( ( [ . 7 5 1 / B B 7 ",
+"k B v 9 9 0 7 5 / 8 ~ h b 7 0 9 0 c h . > ' ' ' ' ( ( [ . 7 5 | / B B 7 ",
+"k C s 9 0 c b 7 / 8 ~ k h 0 9 b g 9 h . > > ' ( ( ( ( [ . 7 5 1 / B B 7 ",
+"k C B 9 7 b c 9 / 8 ~ g g c 0 7 9 b f . > ' ( ( ' ' ( [ . 1 5 7 / B B 7 ",
+"k B B 9 9 0 0 0 { 8 ~ h c 7 9 c 9 c f . > ' ' ' ' ' ( [ . 1 9 | { B B 7 ",
+"k B B 9 0 9 9 7 / 8 ~ h h 0 b 0 7 9 g . > ' ' ( ' ( ( [ . 1 0 5 ^ B B 7 ",
+"k B B 7 0 7 7 0 ^ 8 ~ h f 9 0 0 b b c . ' ' ' ' ( ' ( [ . 7 5 5 / B B 7 ",
+"k B B 7 0 0 0 9 / 8 ~ g f 7 9 9 b 9 i . > > ( ' ' ( ( [ . 7 9 5 / B A 7 ",
+"k B A 7 0 0 c 7 { 8 ~ h g 7 c 7 9 9 f . > ' ' ( ' ( ( [ . 6 5 5 ^ B B 7 ",
+"k B A 7 c 0 0 c ) 8 ~ i h 7 0 0 b 7 f . > ' ' ( ( ( ( [ . 7 9 | / A A 7 ",
+"k B A 7 0 9 0 9 / 8 ~ i g 9 7 c 7 7 g . > > ( ' ' ( ( [ . | 5 7 ^ A A 7 ",
+"k B A 7 0 7 7 c ^ 8 ~ i c 7 9 9 7 9 f . > ' ( ' ( ' ( [ . 7 7 5 ^ A A 7 ",
+"k B A 7 7 9 9 c { 8 ~ h c 7 7 9 9 c c . > ' ' ' ( ' ( [ . 7 7 5 / A A 7 ",
+"k B A 7 0 c 7 9 / 8 ~ i h c 9 9 0 b f . > ' ' > ' ' ( [ . 1 9 | ) A A 7 ",
+"k B A 7 7 9 9 b ^ 8 ~ i g 7 b b 7 c g . ' > ( ' ' ' ( [ . 1 7 7 ^ A A 7 ",
+"k B A 7 7 0 9 7 { 8 ~ h b c 7 b 7 0 f . ' ' ' ' ' ' ( [ . 1 9 1 / A A 6 ",
+"k B A 7 9 7 0 9 ^ 8 ~ i f 9 9 7 7 9 h . > ' ' ' ( ' ( [ . | 7 1 ) A A 7 ",
+"k B A 7 c 9 0 9 { 8 ~ i h 9 7 9 9 c h . > > ( ' ' ' ( [ . 1 0 | / A A 7 ",
+"k B A 7 9 b 0 0 { 8 ~ g g 0 9 0 9 b f . > ' ' ' > ( ( [ . 5 7 5 ^ A A 6 ",
+"k A A 7 9 9 b 7 { 8 ~ i b c 9 9 7 9 f . ' > ' ( ' ' ( [ . | 5 5 { A A 6 ",
+"k B A 7 b b 7 c ^ 8 ~ i f 9 7 0 7 c f . > ' ( ' ' ' ( [ . 5 0 1 ) A A 6 ",
+"k A A 7 0 b b 9 / 8 ~ k h c 9 0 9 7 f . ' > ( ' ' ' ( [ . 5 5 5 ^ A A 6 ",
+"k A A 7 9 b 9 9 { 8 ~ k h 9 0 9 7 c h . > ' ( ( ' ' ( [ . 7 5 5 { A A 5 ",
+"k A y 7 b 0 0 9 ^ 8 ~ i f 9 9 0 7 9 h . > > ( ' ( ( ' [ . 7 7 5 / y y 5 ",
+"k A y 7 0 c 9 c / 8 ~ k h b 7 7 b 0 f . > > ' ' ' ( ( [ . 5 9 | ) y A 5 ",
+"k A y 7 c 9 9 b ) 8 ~ i b 9 7 9 9 b f . > ' ( ' ' ' ( [ . | 1 7 ^ A y 6 ",
+"k A y 6 0 b b 0 / 8 ~ m b 9 c 9 7 0 g . > > ' ' ( ' ( [ . 5 9 | / y y 5 ",
+"k A y 6 9 b 0 7 { 8 ~ h f 7 9 b 9 0 h . > > ' ' ( ( ' [ . | 5 | { y y 5 ",
+"k A y 6 9 0 9 b / 8 ~ i h 9 b b 9 b i . ' ' ( ' ' ' ( [ . | 5 5 ) y y 5 ",
+"k A y 6 0 0 9 0 { 8 ~ k b 9 7 c 9 c g . > ' ( ' ( ' ( [ . 7 7 | ^ y y 5 ",
+"k A y 6 c b b 7 { 8 ~ h g 0 7 0 0 7 f . > ' ( ' ( ( ( [ . | 1 5 / y y 5 ",
+"k A y 6 7 7 c 9 ^ 8 ~ h b 0 0 0 b c f . ' ( [ [ [ [ [ [ . 5 7 1 ^ y y 5 ",
+"k y y 5 9 0 b 0 < } - k c 7 c c c 9 i . ( [ 2 | e 2 5 | . 1 7 | { y y 5 ",
+"k y y 5 c 9 7 7 9 ~ @ r h 0 9 9 9 9 0 . . . . . . . . . . | 5 1 { y y 5 ",
+"k y y 5 0 0 0 0 b m w w b 9 0 0 0 7 9 5 | } 1 < < } < < } 1 9 7 ^ y y 5 ",
+"k y y 5 7 9 9 b b b i f c 7 b b 7 c 9 0 5 7 1 7 5 5 7 7 1 7 9 7 ^ y y 5 ",
+"k y y 5 0 9 0 b b 9 c c 9 c 7 9 9 9 c 0 7 0 9 9 7 7 9 0 9 9 9 | / y y 5 ",
+"k y y 0 9 9 } } | < < } } 1 | } } | | | } | } | < } 1 < | 1 } < , y x 5 ",
+"k y x p } = % # = # % % % % % % % & % % % # % % # % % % & % % % % y y 5 ",
+"k y y x x x x y y y y x x y x y x x x x y y x x y x x x x y x y x x x 1 ",
+"k y v s q q q q q q q q q q q q q q q q q q q q q q s q q q s s v x x 5 ",
+"k y l h h h h h h g h h h h h h g h h h g h h h h g g h g h g h l v x 1 ",
+"k y j 1 | } < < _ _ / / / / / / / / / / / / / / / / _ _ < < < | 1 v y 5 ",
+"k y j | < _ _ / / / ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! / / / _ < < | B A 1 ",
+"k y j < _ _ / ! ) , - , - , - , - , - , - , - , - , , ) ! / _ < | D B 1 ",
+"k y j < _ / ! , - = = = = = = = = = = = = = = = = = - - , ! / _ < C A 5 ",
+"k y j _ / ! , - = = % # # # # # # # # # # # # # # % % = - , ! / < C A 1 ",
+"k y j _ / ! - = % # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # % = - ) / _ C A 1 ",
+"k x j / / ) - = % # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # % = - ) / _ C A 5 ",
+"k x j _ / ) - = & # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # % = - ) / < C A 1 ",
+"k x j _ / ! , - = % % # # # # # # # # # # # # # # % % = - , ! / < C A 5 ",
+"k x j < _ / ! , - - = = = = = = = = = = = = = = = = - - , ! / _ < C A 1 ",
+"k x j < _ / / ! ) - , - - - - - - - - - - - - - - , , ) ! / / < } C A 1 ",
+"k x l | < < _ / / / ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! / / / _ < < | D A 1 ",
+"k x q 1 1 } < < _ _ / / / / / / / / / / / / / / / / _ _ _ < } 1 1 H A 1 ",
+"k x y B I K N K K K K K K K K K K K K K K K K K K K K K K K L K L E y 1 ",
+"k x x A B B B B B B B B C C B B B B B B B B B B C C B C B B C B B y x 1 ",
+"k x v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v 1 ",
+"k x v | } } } } } } } } } } } } } } } } } } } } } } } } } } } } } v v 1 ",
+"k x v T V T T T T T T T T T T T T T T T T T T T T T T T T T T T T C v 1 ",
+"k x v T Z +.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.f v 1 ",
+"k x v O X ..................................................+...` | v 1 ",
+"k x v Q X  .` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` X 4 v 1 ",
+"k v v O X  .` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `  .` X 5 v | ",
+"k v v Q X  .` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `  .` X 6 v | ",
+"k v v O X  .` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `  .` X 6 v | ",
+"k v v Q X ..` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `  .` X 6 v | ",
+"k v v O X  .` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `  .` X 6 v | ",
+"k v v Q X  .` `  . . . . . . . . . . . . . . . . . . . . . . .` Y 4 v 1 ",
+"k v v O X U X X X X X X X X X X X X X X X X X X X X X X X X Y U O 6 s | ",
+"k v v S C k h i h h h h h h h h h h h h h h h h h h h h h h i g f 6 v | ",
+"k v s i , # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # v | ",
+"k v v s s v v s v v v v v s s s v s v v v v s v v s v v s v v s s s v | ",
+"k v s v v v s v v s v s s s v v s v v s v v v v s v s v s v v v v v v | ",
+"k v s ) - = - = - = - = - = - = - = - = - = - = - = - = - = - = = q q | ",
+"k v q / X n n n n n n n n n n n n n n n n n n n n n n n n n n n @ s s | ",
+"k s s / 3 = = = = = = = = = = = = = = = = = = = = = = = = = = ! @ q q | ",
+"k s q / 3 = = = = = = = = = = = = = = = = = = = = = = = = = = ! . q q | ",
+"k s q / 3 = = = = = = = = = = = = = = = = = = = = = = = = = = ! @ q q | ",
+"k s q / 3 = = = = = = = = = = = = = = = = = = = = = = = = = = ! @ q q } ",
+"k s q / 3 = = = = = = = = = = = = = = = = = = = = = = = = = = ! . q q | ",
+"k s q / 3 = = = = = = = = = = = = = = = = = = = = = = = = = = ! . q q } ",
+"k s q / ! = = = = = = = = = = = = = = = = = = = = = = = = = = # @ q q | ",
+"k s q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p q } ",
+"k s q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p q | ",
+"k s q q q q q q q q q p p q p q q q q q q p q q q q p q p q q q q q q } ",
+"k j f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f < ",
+"9 < _ / / / / / / _ / / _ / / _ / / _ / / / / _ / / _ / / / / / _ / / / "};
diff --git a/hdspmixer/pixmaps/level.xpm b/hdspmixer/pixmaps/level.xpm
new file mode 100644 (file)
index 0000000..a92fe26
--- /dev/null
@@ -0,0 +1,399 @@
+/* XPM */
+char * level_xpm[] = {
+"8 139 257 2",
+"      c None",
+".     c #149003",
+"+     c #24B114",
+"@     c #2DC114",
+"#     c #35C91C",
+"$     c #3DC91C",
+"%     c #4DD22D",
+"&     c #6EEA4D",
+"*     c #004816",
+"=     c #004849",
+"-     c #00487C",
+";     c #0048AF",
+">     c #0048E2",
+",     c #007B00",
+"'     c #007B16",
+")     c #007B49",
+"!     c #007B7C",
+"~     c #007BAF",
+"{     c #007BE2",
+"]     c #00AE00",
+"^     c #00AE16",
+"/     c #00AE49",
+"(     c #00AE7C",
+"_     c #00AEAF",
+":     c #00AEE2",
+"<     c #00E100",
+"[     c #00E116",
+"}     c #00E149",
+"|     c #00E17C",
+"1     c #00E1AF",
+"2     c #00E1E2",
+"3     c #00FF00",
+"4     c #00FF16",
+"5     c #00FF49",
+"6     c #00FF7C",
+"7     c #00FFAF",
+"8     c #00FFE2",
+"9     c #161500",
+"0     c #161516",
+"a     c #161549",
+"b     c #16157C",
+"c     c #1615AF",
+"d     c #1615E2",
+"e     c #164800",
+"f     c #164816",
+"g     c #164849",
+"h     c #16487C",
+"i     c #1648AF",
+"j     c #1648E2",
+"k     c #167B00",
+"l     c #167B16",
+"m     c #167B49",
+"n     c #167B7C",
+"o     c #167BAF",
+"p     c #167BE2",
+"q     c #16AE00",
+"r     c #16AE16",
+"s     c #16AE49",
+"t     c #16AE7C",
+"u     c #16AEAF",
+"v     c #16AEE2",
+"w     c #16E100",
+"x     c #16E116",
+"y     c #16E149",
+"z     c #16E17C",
+"A     c #16E1AF",
+"B     c #16E1E2",
+"C     c #16FF00",
+"D     c #16FF16",
+"E     c #16FF49",
+"F     c #16FF7C",
+"G     c #16FFAF",
+"H     c #16FFE2",
+"I     c #491500",
+"J     c #491516",
+"K     c #491549",
+"L     c #49157C",
+"M     c #4915AF",
+"N     c #4915E2",
+"O     c #494800",
+"P     c #494816",
+"Q     c #494849",
+"R     c #49487C",
+"S     c #4948AF",
+"T     c #4948E2",
+"U     c #497B00",
+"V     c #497B16",
+"W     c #497B49",
+"X     c #497B7C",
+"Y     c #497BAF",
+"Z     c #497BE2",
+"`     c #49AE00",
+" .    c #49AE16",
+"..    c #49AE49",
+"+.    c #49AE7C",
+"@.    c #49AEAF",
+"#.    c #49AEE2",
+"$.    c #49E100",
+"%.    c #49E116",
+"&.    c #49E149",
+"*.    c #49E17C",
+"=.    c #49E1AF",
+"-.    c #49E1E2",
+";.    c #49FF00",
+">.    c #49FF16",
+",.    c #49FF49",
+"'.    c #49FF7C",
+").    c #49FFAF",
+"!.    c #49FFE2",
+"~.    c #7C1500",
+"{.    c #7C1516",
+"].    c #7C1549",
+"^.    c #7C157C",
+"/.    c #7C15AF",
+"(.    c #7C15E2",
+"_.    c #7C4800",
+":.    c #7C4816",
+"<.    c #7C4849",
+"[.    c #7C487C",
+"}.    c #7C48AF",
+"|.    c #7C48E2",
+"1.    c #7C7B00",
+"2.    c #7C7B16",
+"3.    c #7C7B49",
+"4.    c #7C7B7C",
+"5.    c #7C7BAF",
+"6.    c #7C7BE2",
+"7.    c #7CAE00",
+"8.    c #7CAE16",
+"9.    c #7CAE49",
+"0.    c #7CAE7C",
+"a.    c #7CAEAF",
+"b.    c #7CAEE2",
+"c.    c #7CE100",
+"d.    c #7CE116",
+"e.    c #7CE149",
+"f.    c #7CE17C",
+"g.    c #7CE1AF",
+"h.    c #7CE1E2",
+"i.    c #7CFF00",
+"j.    c #7CFF16",
+"k.    c #7CFF49",
+"l.    c #7CFF7C",
+"m.    c #7CFFAF",
+"n.    c #7CFFE2",
+"o.    c #AF1500",
+"p.    c #AF1516",
+"q.    c #AF1549",
+"r.    c #AF157C",
+"s.    c #AF15AF",
+"t.    c #AF15E2",
+"u.    c #AF4800",
+"v.    c #AF4816",
+"w.    c #AF4849",
+"x.    c #AF487C",
+"y.    c #AF48AF",
+"z.    c #AF48E2",
+"A.    c #AF7B00",
+"B.    c #AF7B16",
+"C.    c #AF7B49",
+"D.    c #AF7B7C",
+"E.    c #AF7BAF",
+"F.    c #AF7BE2",
+"G.    c #AFAE00",
+"H.    c #AFAE16",
+"I.    c #AFAE49",
+"J.    c #AFAE7C",
+"K.    c #AFAEAF",
+"L.    c #AFAEE2",
+"M.    c #AFE100",
+"N.    c #AFE116",
+"O.    c #AFE149",
+"P.    c #AFE17C",
+"Q.    c #AFE1AF",
+"R.    c #AFE1E2",
+"S.    c #AFFF00",
+"T.    c #AFFF16",
+"U.    c #AFFF49",
+"V.    c #AFFF7C",
+"W.    c #AFFFAF",
+"X.    c #AFFFE2",
+"Y.    c #E21500",
+"Z.    c #E21516",
+"`.    c #E21549",
+" +    c #E2157C",
+".+    c #E215AF",
+"++    c #E215E2",
+"@+    c #E24800",
+"#+    c #E24816",
+"$+    c #E24849",
+"%+    c #E2487C",
+"&+    c #E248AF",
+"*+    c #E248E2",
+"=+    c #E27B00",
+"-+    c #E27B16",
+";+    c #E27B49",
+">+    c #E27B7C",
+",+    c #E27BAF",
+"'+    c #E27BE2",
+")+    c #E2AE00",
+"!+    c #E2AE16",
+"~+    c #E2AE49",
+"{+    c #E2AE7C",
+"]+    c #E2AEAF",
+"^+    c #E2AEE2",
+"/+    c #E2E100",
+"(+    c #E2E116",
+"_+    c #E2E149",
+":+    c #E2E17C",
+"<+    c #E2E1AF",
+"[+    c #E2E1E2",
+"}+    c #E2FF00",
+"|+    c #E2FF16",
+"1+    c #E2FF49",
+"2+    c #E2FF7C",
+"3+    c #E2FFAF",
+"4+    c #E2FFE2",
+"5+    c #001500",
+"6+    c #002200",
+"7+    c #002F00",
+"8+    c #0B3D0B",
+"9+    c #184A18",
+"0+    c #265826",
+"a+    c #336533",
+"b+    c #407240",
+"c+    c #4E804E",
+"d+    c #5B8D5B",
+"e+    c #699B69",
+"f+    c #76A876",
+"g+    c #84B684",
+"h+    c #91C391",
+"i+    c #9ED09E",
+"j+    c #ACDEAC",
+"k+    c #B9EBB9",
+"l+    c #C7F9C7",
+"m+    c #D4FFD4",
+"n+    c #E2FFE2",
+"o+    c #006100",
+"p+    c #001563",
+"q+    c #001900",
+"r+    c #A12400",
+"s+    c #004900",
+"t+    c #5E199F",
+"u+    c #00D200",
+"v+    c #001A00",
+"w+    c #00FF00",
+"x+    c #83183D",
+"y+    c #00AF00",
+"z+    c #472C51",
+"A+    c #007B00",
+"B+    c #3A1680",
+"C+    c #006E00",
+"D+    c #001800",
+"E+    c #00FF00",
+"F+    c #3F1555",
+"G+    c #008600",
+"H+    c #95154F",
+". . . . . . . + ",
+"+ + + + @ + # $ ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"+ @ # # # # % % ",
+"@ $ % % % % % & ",
+"$ % & & & & & % "};
diff --git a/hdspmixer/pixmaps/monitor.xpm b/hdspmixer/pixmaps/monitor.xpm
new file mode 100644 (file)
index 0000000..4d84ef6
--- /dev/null
@@ -0,0 +1,513 @@
+/* XPM */
+char * monitor_xpm[] = {
+"76 253 257 2",
+"      c None",
+".     c #D1E0E5",
+"+     c #E7F6F9",
+"@     c #F2FFFF",
+"#     c #FBFFFF",
+"$     c #FFFFFF",
+"%     c #C4CACB",
+"&     c #C7D5D9",
+"*     c #BECDD2",
+"=     c #B8C5C9",
+"-     c #AEBDC1",
+";     c #B2BDC2",
+">     c #B5B6B6",
+",     c #A9B5B9",
+"'     c #A2ADB2",
+")     c #A1ACAE",
+"!     c #AAAAAA",
+"~     c #A6A6A6",
+"{     c #A0A0A0",
+"]     c #9CA5A9",
+"^     c #9F9FA0",
+"/     c #939DA1",
+"(     c #A0A09F",
+"_     c #9FA09F",
+":     c #A09F9F",
+"<     c #90928F",
+"[     c #949A9B",
+"}     c #9B9C9B",
+"|     c #9D9E9D",
+"1     c #999A99",
+"2     c #969896",
+"3     c #919391",
+"4     c #959795",
+"5     c #929592",
+"6     c #869194",
+"7     c #8E999C",
+"8     c #8C969A",
+"9     c #8A9395",
+"0     c #848E91",
+"a     c #8C908B",
+"b     c #8E918E",
+"c     c #8C908C",
+"d     c #8D908D",
+"e     c #888B88",
+"f     c #8D8F8D",
+"g     c #8C8F8C",
+"h     c #8B8F8C",
+"i     c #8C8F8B",
+"j     c #898D89",
+"k     c #8B8E8B",
+"l     c #8A8E8A",
+"m     c #8A8D8A",
+"n     c #898C89",
+"o     c #898D89",
+"p     c #888C88",
+"q     c #848B8B",
+"r     c #888C87",
+"s     c #838884",
+"t     c #878C87",
+"u     c #858A86",
+"v     c #868B86",
+"w     c #878B87",
+"x     c #868A86",
+"y     c #858A85",
+"z     c #858985",
+"A     c #848984",
+"B     c #848883",
+"C     c #808880",
+"D     c #828882",
+"E     c #838883",
+"F     c #828686",
+"G     c #818782",
+"H     c #838783",
+"I     c #828782",
+"J     c #808680",
+"K     c #818681",
+"L     c #818581",
+"M     c #808580",
+"N     c #778082",
+"O     c #7E898B",
+"P     c #7D8689",
+"Q     c #7A8386",
+"R     c #7F8580",
+"S     c #D170D1",
+"T     c #C54CC5",
+"U     c #A837A8",
+"V     c #902F90",
+"W     c #757E81",
+"X     c #80887F",
+"Y     c #80857F",
+"Z     c #7F887F",
+"`     c #7D847D",
+" .    c #7F847F",
+"..    c #7E847E",
+"+.    c #7E827E",
+"@.    c #7E837E",
+"#.    c #7D827D",
+"$.    c #7D837D",
+"%.    c #7C827C",
+"&.    c #7B827C",
+"*.    c #7C817B",
+"=.    c #7A817A",
+"-.    c #7A817A",
+";.    c #7B817B",
+">.    c #7A807A",
+",.    c #798079",
+"'.    c #708070",
+").    c #6E716E",
+"!.    c #717678",
+"~.    c #7A7F7A",
+"{.    c #797F79",
+"].    c #787F78",
+"^.    c #727B7D",
+"/.    c #777E78",
+"(.    c #787E77",
+"_.    c #747C73",
+":.    c #767D75",
+"<.    c #767E76",
+"[.    c #777E77",
+"}.    c #777D77",
+"|.    c #767D76",
+"1.    c #747C74",
+"2.    c #757C75",
+"3.    c #757B75",
+"4.    c #747B74",
+"5.    c #737B74",
+"6.    c #747B73",
+"7.    c #727972",
+"8.    c #737B73",
+"9.    c #717971",
+"0.    c #707870",
+"a.    c #6D7679",
+"b.    c #6C7274",
+"c.    c #686E71",
+"d.    c #70786F",
+"e.    c #707060",
+"f.    c #616669",
+"g.    c #696D6A",
+"h.    c #6D6E6D",
+"i.    c #6F6F6F",
+"j.    c #646B6D",
+"k.    c #666966",
+"l.    c #626562",
+"m.    c #5C6365",
+"n.    c #595F61",
+"o.    c #5F685F",
+"p.    c #5B605B",
+"q.    c #5E615E",
+"r.    c #506050",
+"s.    c #494F51",
+"t.    c #545A5C",
+"u.    c #5A5C5A",
+"v.    c #5A5D5A",
+"w.    c #555A55",
+"x.    c #565956",
+"y.    c #575A57",
+"z.    c #555855",
+"A.    c #535654",
+"B.    c #545754",
+"C.    c #525552",
+"D.    c #535653",
+"E.    c #515451",
+"F.    c #515251",
+"G.    c #505350",
+"H.    c #4D5254",
+"I.    c #50534F",
+"J.    c #50584F",
+"K.    c #4F584F",
+"L.    c #4C504B",
+"M.    c #4F544F",
+"N.    c #4D524D",
+"O.    c #4F524F",
+"P.    c #4E514E",
+"Q.    c #4F504F",
+"R.    c #4D504D",
+"S.    c #4B504B",
+"T.    c #405040",
+"U.    c #464A4A",
+"V.    c #494E4E",
+"W.    c #4D4E4D",
+"X.    c #4C4F4C",
+"Y.    c #494E49",
+"Z.    c #4B4F4B",
+"`.    c #4A4E4A",
+" +    c #4A4D4A",
+".+    c #494C49",
+"++    c #494A49",
+"@+    c #484B48",
+"#+    c #444843",
+"$+    c #474C47",
+"%+    c #464A45",
+"&+    c #474A47",
+"*+    c #464946",
+"=+    c #454A45",
+"-+    c #454945",
+";+    c #424842",
+">+    c #434645",
+",+    c #454645",
+"'+    c #444744",
+")+    c #414641",
+"!+    c #434743",
+"~+    c #424542",
+"{+    c #414441",
+"]+    c #404340",
+"^+    c #3E4142",
+"/+    c #6B236B",
+"(+    c #531B53",
+"_+    c #4D194D",
+":+    c #471747",
+"<+    c #3C3E40",
+"[+    c #40423F",
+"}+    c #40483F",
+"|+    c #3B403B",
+"1+    c #3F443F",
+"2+    c #3E413E",
+"3+    c #3F423F",
+"4+    c #3D413D",
+"5+    c #1E2120",
+"6+    c #2D3030",
+"7+    c #363A39",
+"8+    c #393B39",
+"9+    c #3E3F3E",
+"0+    c #3C3F3C",
+"a+    c #393D39",
+"b+    c #3B3F3B",
+"c+    c #373C37",
+"d+    c #363A36",
+"e+    c #303F30",
+"f+    c #333434",
+"g+    c #333433",
+"h+    c #303730",
+"i+    c #242728",
+"j+    c #2A2C2D",
+"k+    c #2F2F2F",
+"l+    c #212E2E",
+"m+    c #222425",
+"n+    c #202720",
+"o+    c #3B143B",
+"p+    c #0F1010",
+"q+    c #1B1C19",
+"r+    c #121212",
+"s+    c #0F1510",
+"t+    c #170817",
+"u+    c #100F0F",
+"v+    c #07090A",
+"w+    c #0A0A0A",
+"x+    c #0D0D0D",
+"y+    c #0E0E0E",
+"z+    c #0F0F0F",
+"A+    c #0B040B",
+"B+    c #01070E",
+"C+    c #040404",
+"D+    c #050606",
+"E+    c #070707",
+"F+    c #060606",
+"G+    c #030303",
+"H+    c #000000",
+"}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+}+n+",
+"d.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.k+",
+"( ( ( ( ( ( ( ( ( ( ( ( ( ( : : : : ( ( : : : : : : : : : : : : : : : : : : ( ( ( ( ( : : : : : : : : : : : : : : ^ _ _ _ _ ^ ^ : ^ ^ ^ ^ : { { { : i.F+",
+"( ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ { { : i.F+",
+"( ^ Z Q.k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+6+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+6+k+k+k+k+k+k+k+6+k+k+k+k+o.^ { { : i.F+",
+"( ^ Z Q.K.K.Q.Q.}+J.T.P.K.1+Q.Q.Q.T.)+J.T.W.K.)+Q.Q.Q.T.}+K.T.W.K.}+Q.Q.Q.T.)+K.T.Q.K.}+Q.Q.J.T.Q.K.1+Q.Q.W.T.}+}+T.T.T.T.T.K.T.}+R.T.Q.}+}+{ { { : i.F+",
+"( ^ Z Q.).k.).l.I.y.l.v.A.k.p.l.q.y.q.q.q.q.F.l.p.l.q.k.z.p.k.k.q.l.).k.q.q.p.y.k.k.k.q.k.q.p.k.v.l.q.q.).q.k.l.q.l.q.D.k.k.q.l.l.u.h.E.P.~+{ ( ( : i.F+",
+"( ^ Z Q.Z.w.L.E.R.B.B.S.N. +x.D.P.P.$+w.#+G.R.-+ +Y.&+=+N.M.Y.u.G.C.R.I.E.z.N.*+N.A.G.X..+z.w.G.@+$+X.A.G.&+{+M.$+L.>+P. +M.D.*+Y.w.X.A.{+d+_ ( ^ ^ i.F+",
+"^ ^ Z Q.q.@+0+>+1+E.>+4+1+3+R.`..+N.$+=+)+C..+P.]+*+ +-+S.a+2+X.P.]+3+4+2+w.;+a+Y.]+'+2+O.-+ +>+4+E.=+-+*+C.$+$+N. +{+P. +Y.M.K.E.|+!+{+&+g+_ ^ ^ : h.F+",
+"_ ^ Z P.y.$+Y.{+-+2+4+M.B.)+P.$ $ $ {+]+X.$ $ $ E.X.A.~+S.E.S.>+E.J.Q..+@+E.C.J.$ $ *+C.=+$ =+B.`.A.~+S.E.S.!+E.O.!+N.&+P.$+N.E.a+E.R.#+!+~+_ ^ _ ^ i.F+",
+"_ _ Z Q.q.B.I.P.z.P.y.0+-+R.C.$ $ $ 3+{+&+$ $ $ N.~+{+P.2+b+E.&+J.E.N. +N.7+=+)+N.c+-+*+$ $ =+%+)+{+P.2+b+E.&+Z.'+Y.!+R. +$+2+$+=+4+*+ +>+9+^ : ^ ^ i.C+",
+": ^ Z Q.l.N.E.2+)+X.P.Y.N.a+X.$ $ $ $ &+$ $ $ $ )+2+$ $ $ $ G.P.$ $ $ $ N.I.=+$+$ $ d+$ $ $ $ ~+3+$ $ $ $ G.P.$ $ $ $ X. +$+)+Y.w.@+!+'+~+[+: | ^ : i.F+",
+": ^ Z Q.p.@+@+D.M.P.d+@+M.G.x.$ $ $ $ X.$ $ $ $ b+$ $ 3+#+$ $  +$ $ $ $ $ $ C.N.$ $ C.>+$ $ q.M.$ $ 3+#+$ $  +$ $ Y..+&+{+#+;+2+$+-+$+#+*+g+: : : | i.F+",
+"^ | Z Q.w.!+B.>+N.'+ +S.=+$+]+$ $ E.$ {+$ {+$ $ $+$ $ X.1+$ $ z.$ $ O..+$ $ E.E.$ $ -+C.$ $ $+B.$ $ X.1+$ $ B.$ $ ~+B. +Z.$+$+b+)+!+`.@+*+,+: ^ | ^ i.F+",
+"_ | Z Q.q.{+*+O.M.@+ +y.M.-+.+$ $ )+$ $ $ E.$ $ E.$ $ #+L.$ $ L.$ $ P. +$ $ =+)+$ $ d+&+$ $ q.S.$ $ ;+S.$ $ Z.$ $ Y.*+8+)+-+`.4+M.=+D.N.0+8+^ : | ^ h.F+",
+": | Z Q.O.`. +M.v.&+Y.E.N.~+X.$ $ )+$ $ $  +$ $ x.$ $ @+$+$ $  +$ $ q. +$ $ =+%+$ $ -+]+$ $ $+)+$ $ $+%+$ $  +$ $ I.1+X.C.w.=+M.2+)+N.y.8+0+: | ^ ^ i.F+",
+": ^ R Q.X.Y.]+A.'+P.>+Y.X.*+&+$ $ !+#+$ b+`.$ $ ]+X.$ $ $ $ `.b+$ $ L. +$ $ C.N.$ $ q.~+O.$ $ %+Z.$ $ $ $ `.a+$ $ Y.!+P.Y.Y.$+$+a+{+>+ +~+2+^ | | ^ i.F+",
+"^ | +.R.l.M.w.&+$+@+]+$+-+$+{+'+4+2+M.B.1+P.;+2+#+D.=+P.@+#+Y.!+P.C.P.A.z.C.Z.)+w.!+Y.E.@+@+A.A.O.R.a+C.X.P.]+M.O.)+`.E.P.)+N.;+N.!+*+P.~+2+| ^ : | i.F+",
+"| ^ +.W.E.E.#+X.=+$+v.;+N.O..+S..+b+C.N.$+ +X.>+x.2+X.$+$+Z.P.A.N.O.*+Z.-+G.$+$+c+{+&+X.2+M.$+C.P.!+$+3+0+X.A.1+)+)+]+G..+$+0+P.P.2+1+=+O.j+| | ^ ^ h.F+",
+"| ^ Z K.C.*+a+z.v.N.$+$+N.$+O.*+.+Y.4+c+C.R.R.!+0+'+3+3+Y.Y.)+3+)+G.@+.+A.&+=+#+'+!+ +.+G.@+2+*+.+N.Y.>+-+&+-+$+a+S..+@+c+$+-+*+Y.4+M.L.9+]+| ^ ^ | i.F+",
+"| | Z K.E.$+y.P.@+*+Z.$+)+~+&+'+{+R.=+S.$+M.`.A.!+P.D.R.)+)+-+!+$+X.*+ +R.$+=+M.'+N.M.@+9+]+!+C.'+M.p.@+R.E.Y.Y.1+&+]+-+O.`.S.1+3+|+=+$+[+{+^ | | | i.F+",
+"| : Z K.G.O.(+_+:+:+:+:+:+:+:+:+:+_+U M.=+ +`.G.q.0+!+R.$+;+N.Y.0+@+O.M.=+#+Y.N.$+Y.u.*+ + +*+O.$+#+-+8+3+ +R.;+M.-+Y.'+$+M.P.P.M.#+I.I.2+,+| | ^ | i.F+",
+"| | Z Q.P.X.V V V V V V V V V V V V :+#+1+0+!+&+2+]+!+Y.Y.1+$+=+G.R.3+E.;+-+=+N.X.B.Y. +'+R.G.E.N.v.Y.2+&+4+@+a+;+O..+M.E.S.N.*+Z.Y.;+Y.,+[+| : | | i.F+",
+"| | Z K.P.C./+V S T T T T T T T T o+t+M.u.X.-+P.~+C.'+w.#+d+$+a+&+X.3+{+O.#+a+M.%+#+E.p.~+0+ +R.E.-+b+*+&+P.Z.)+1+$+`.D.G.$+%+w.#+|+M.)+*+k+| | | | i.F+",
+"| | Z Q.p.`./+V V V V V V V V V V o+t+)+@+1+#+D..+$ $ $ $ $ Y.G.$ %+$+D.N..+$ G.~+#+S.X.$  +]+&+]+N.*+&+x.X.M.M.N.Y.!+N.X.)+N.=+-+)+=+4+ +0+| | : } i.F+",
+"| | Z K.B.!+/+V V V V V V V V V V o+t+)+-+&+*+&+4+E.]+v.N.$ Y.Y.$ $+a+.+8+X.$ $ ]+~+ +$ $ N.0+P.@+-+'+'+N.R.`.N.$+4+P.A.Z.)+$+E.N.#+|+R.]+++| | | } i.F+",
+"| | Z Q.D.$+/+V V V V V V V V V V :+t+Y.&+-+R.>+G.a+]+#+$ E.1+=+$ w.%+!+]+@+$ $ @+C.8+$ $ a+Y.-+1+~+M..+$+E.P.1+D.Z.D.3+=+B.Y.M.M.z.y.X.,+8+: } ^ | i.C+",
+"| } Z Q.L.P./+V T V V V V V V V V :+t+)+Y.&+>+!+~+P.G.$ $ a+Y.0+$ 2+$+D.P..+$ @+$ &+$ X.$ c+N.u.B.$+N.`.N.8+&+;+N.a+&+R.A.Z.-+z.N.M.=+`.E.8+} | | } i.F+",
+"| } Z Q.C.w./+V V V V V V V V V V o+t+Y.G.0+2+'+*+E.&+$ $+E.P.&+$ $+a+.+8+R.$ A.$ ~+$ @+$ *+X.2+X..+R. +O.O.&+$+B.Y.{+@+&+)+S.$+b+B.C.!+'+[+| | | | i.C+",
+"| | Z Q.v..+/+/+V V V V V V V V V :+t+Y.$+E.!+.+@+a+$ P.S.a+~+`.$ y.%+>+]+~+$ ]+$ $+$ 1+$ $+$+{+R.d+R.`.P.!+D.M.Y.N.'+P.R.N.w.#+N.=+1+S.8+8+| } | } i.F+",
+"} | R P.G.G./+V T V V V V V V V V o+t+-+`.@+G. +C.$ $ $ $ $ L.~+$ $ $ $ 2+x.$ P.Y.$ S.Y.$ 0+1+{+C.!+O.v.$+X.M.$+Y.1+@+~+)+1+K.=+)+2+P. +8+++| | } | i.F+",
+"| } Z Q.A.*+/+V /+V V V V V V V /+:+t+1+-+&+O.$+P..+4+*+$+;+ +.+X.N.3+D.*+X.)+M.z.A.*+.+4+N.!+*+-+N.#+E.*+ +N.$+a+3+&+B.#+M.S.S.4+2+4+&+{+8+| } | } i.F+",
+"| } Z Q.p.`./+o+t+t+A+A+A+A+A+A+t+A+t+#+-+]+C.G.{+O.8+M.!+S.)+8+u.@+D.N.O.4+N.)+1+~+E.&+X.B.#+!+O.2+{+~+-+'+'+Z.=+!+@+>+`.|+#+a+w.1+z.~+]+0+} | } } i.F+",
+"} } Z Q.y.N.t+H+H+H+H+H+H+H+H+H+H+H+H+)+Y.=+&+~+D.-+*+1+=+)+S.R.X.|+.+a+O.-+$+;+D.S.G.C.~+b+]+b+E.)+P..+O.Y.X.M.|+$+D.-+'+N.1+4+D.w.~+-+]+[+} } } | i.F+",
+"} } Z Q.x.C.Y.=+S.O.'+$+Y.~+B.*+C.=+M.$+2+1+Z.O.X.a+R.-+D.C.1+)+G.2+@+c+*+@+N.$+E.2+$+C.0+G.{+O.B.$+{+-+ +]+&+Y.O.=+O..+N.E.a+N.|+D. +v.@+2+| } } } i.F+",
+"} } Z Q.w.Z.%+G.N.)+N.)+@+d+*+$+@+b+#+2+Z.x. +&+E.`.2+N.=+M.]+`.~+C.2+&+.+M.$+S.{+!+`.*+E.X.M.2+-+S.y.X.R.O.-+B.Y.c+w.N.0+#+$+!+Y.@+`.R.8+,+} } | } i.F+",
+"} } Z Q.x.%+8+Z.2+B.S.K.1+P.&+.+E.d+;+;+S.D.Y. +.+.+z.R.M.4+Y..+1+&+E.b+E.`.=+a+$+@+b+*+'+*+&+~+C.M.)+G.a+G.-+S.)+8+y.&+ +4+Y.3+&+M.C.Y.{+9+} } } } i.C+",
+"} } Z R.q.1+!+~+)+E.Y.$+a+N.P.]+{+$+w.f+!+ +E.X.~+[+-+~+=+a+P.Y.S.G..+X.@+)+=+#+@+$+`.0+~+G.-+G.'+#+'+.+>+!+Y.Y.;+R.b+!+E.Z.M.2+O.;+1+)+W.8+} } } } i.F+",
+"} } Z Q.l.)+R. +R.'+D.Y.S.C.{+X.X.)+M.M.3+{+)+*+.+.+.+$+a+=+$+#+.+&+'+u.{+{+N.)+b+2+M.&+d+3+3+C.b+;+!+3+'+2+)+|+2+a+4+*+)+c+z.p.P.$+$+P.{+[+} } } } i.C+",
+"} } Z Q.v.Z.@+{+)+ +J.D.)+)+!+{+`.*+N.Z.M.P.&+~+Z.>+@+Y.$+w.M.=+X.X.G. +@+S.|+M.|+Y.=+z. +X. +0+M.S.M..+R.v.-+$+$+!+N.=+#+L.M.-+-+L.c+N.{+d+} } } } i.F+",
+"} } Z Q.w.)+~+Y.#+=+1+E.;+#+]+-+~+N.S.Y.b+.+b+G.*+ +-+z.S.N.E.)+|+~+4+E.!+N.Y.N.$+ +G.2+.+z.*+G.D.a+M.2+B. +v.N.S.y.Z.$+!+#+a+1+Y.S.;+I.{+9+} } } } i.C+",
+"} 1 Z P.k.4+(+_+:+:+:+:+:+:+:+:+:+_+U Y.0+M.#+@+.+E.S.O.C.$+=+S.4+A.3+@+D.Y.=+2+Z.&+-+-+ +G.'+~+#+Y.8+~+.+&+N.|+N.P.&+'+|+B.`.C.E.w.E.@+b+8+} } } } i.F+",
+"} } R P.l.v.V V V V V V V V V V V V :+1+3+]+]+.+&+q.b+!+N.$+)+N.Y.0+@+G.O.=+#+Y.E.1+z.X.2+.+R.0+Z.N.p.R.@+~+S.$+S.)+b+'+M.`.b+4+y.$+b+)+X.g+} 1 } } i.C+",
+"} } Z Q.x.C./+V S T T T T T T T T o+t+|+4+&+@+Y..+2+3+!+Y.Y.1+$+=+G.R.3+E.;+=+2+z.'+!+D.O.~+@+P.0+X.Y.@+.+a+D.#+#+4+~+`.P.L. +N.Z.#+$+)+>+d+1 1 } } i.F+",
+"1 1 X Q.G.=+/+V V V V V V V V V V o+t+)+D.X.O.C.~+$  +O.$+=+y.$ &+$ z.C.&+a+Y.$+-+E.b+P.0+B.Y.v.M.R.y.S.Y.2+x.Y.M.O.x.C..+#+$+C.)+N.N.!+0+8+} 1 } 1 i.F+",
+"1 } Z W.l.&+/+V V V V V V V V V V o+t+#+!+)+.+3+2+$ $ 0+M.1+$ $ O..+ +G.2+Y.C.!+N.`.{+ +Y.E.E.'+1+2+@+ +C.X. +!+;+x.-+*+Y.4+-+;+#+y.O.$+2+9+} 1 1 1 i.F+",
+"1 1 Z Q.p.Z./+V V V V V V V V V V :+t+w.D. + + +*+$ $ 2+)+Y.$ $ R.$  +P.$ &+S.$ b+C.]+]+u.)+ +&+C.$+)+G..+.+-+Y.;+-+.+.+'+Y.S.$+-+-+ +R.d+{+1 } 1 1 i.F+",
+"1 1 Z Q.v.)+/+V T V V V V V V V V :+t+Y.a+.+R.p.R.$ ~+$ S.$ P.$  +$ X.Y.*+$ $ w.z.@+{+-+E.Y.Z.]+v.d+M.R.R.-+Z.=+!+ +z.&+C.!+Y.-+d+M.O.Y.0+8+1 1 1 1 i.F+",
+"1 1 R Q.u.C./+V V V V V V V V V V o+t+C.w.~+*+*+X.$ {+$ $+$ {+$ '+$ R.Y.X.$ $ $+)+&+8+'+ +-+D.&+-+.+&+~+S.&+{+S.$+!+~+@+E.;+-+N.Z.*+.+3+3+g+1 1 1 1 i.F+",
+"1 1  .Q.R.!+/+/+V V V V V V V V V :+t+=+=+1+G.R.~+$ ]+$ $+$ 3+$ *+$ `.2+E.$ $ =+b+{+!+X.R.1+1+O.!+R.N.~+N.]+)+=+;+Y.*+]+P.)+1+;+Y.c+]+&+]+9+1 1 1 1 i.F+",
+"1 1 +.Q.l.X./+V T V V V V V V V V o+t+N.g+$+G.M.x.$ P.Y.$ Z..+$ @+$ *+S.$ B.$+$ E.S.2+N.]+~+P.M.@+ +.+0+P.N.`.M.2+D.$+{+-+E.=+M.S.~+!+0+.+8+1 1 1 1 i.F+",
+"1 1 +.Q.v.)+/+V /+V V V V V V V /+:+t+D.Z.E.]+`. +2+=+M.a+G.Y.*+b+.+.+8+-+#+=+=+1+E.E.{+P.8+P.'+P.!+a+y.*+C.R.G.0+N.!+{+w.S.a+#+Y.C.@+.+[+8+1 1 1 1 i.F+",
+"1 1 +.W.q.>+/+o+t+t+A+A+A+A+A+A+t+A+t+;+4+2+1+N.`. +R.Y.=+;+C..+M.~+*+ +'+P.a+2+Z.P.)+{+2+2+z.'+b+Z.~+-+2+G.-+Y.)+|+E.&+~+M.=+Y.C.)+{+R.8+f+1 1 2 1 i.F+",
+"1 2 +.Q.E.Y.t+H+H+H+H+H+H+H+H+H+H+H+H+y.b+~+ +*+*+)+D.*+=+2+'+~+R.R.X.|+ +b+M.!+&+!+z.S.O.C.!+b+)+b+G.{+P. +G.Y.Y.N.4+.+#+=+E.$+$+M.`.{+*+9+2 1 1 2 i.F+",
+"1 1 +.W.v.@+`.E.*+`..+.+x. +*+O.2+E.~+)+N.E.X.E.P.8+P.!+X.!+`.3+!+X.G.]+~+]+!+-+4+`.X.X.3+2+R.2+0+E.*+G.&+0+P.X.X..+E.0+D.;+N.E.a+M.0+C.'+ +1 1 1 1 h.F+",
+"1 2 +.Q.E.b+'+&+Y.'+@+`.=+$+E.*+O.E.=+b+2+{+E.!+P.p.@+S.N.$+Y.]+@+~+'+E.X.X.|+4+b+*+@+#+P.Y.C.y.D.S.~+0+R.z.-+M.|+N.~+@+.+1+)+S.$+8+Q.C.g+~+1 2 1 2 i.F+",
+"1 1 +.W.C..+)+*+@+O.$+P.$+|+*+Y.'+S.$+Y.N.]+C.*+X.#+E.y.D.#+$+4+R.~+*+-+R.-+K.-+Y.X..+0+{+.+A.X.2+#+a+y.)+B.!+#+Y.Y.&+A.Y.d+D.4+$+1+C.Z. +8+1 2 1 2 i.C+",
+"2 2 +.Q.B.N.&+A.N.~+X.-+S.$+M.!+`.-+$+1+L.~+O.{+.+Y.C.!+$+$+X.X.3+D.!+O.!+`.4+C.*+0+@+1+A.'+M.'+ +`.*+&+{+X.c+S.Y.X.{+C.@+Y.#+]+)+Y.@+X.*+k+1 2 1 2 i.F+",
+"1 2 +.W.A.`.Y.E.N.`.S.d+v.;+~+E.R.a+N.$+L.X..+!+.+X. +&+)+;+*+X.R.R.A.=+3+1+=+=+$+>+%+E.P.)+M.'+.+d+*+*+.+b+-+4+S.w.@+&+M.Y.M.#+M.{+)+I.[+g+2 1 1 2 i.F+",
+"2 2 +.Q.B.*+3+x.a+X. +D.S.]+{+M.P.!+c+Y.X.*+.+.+E.~+X.$+=+2+*+X.O. +p.-+>+4+=+N.c+~+3+-+{+ +O.E.y.)+P.@+#+&+%+1+`.b+@+D.G.Y.4+N.=+M.]+X.0+,+1 2 2 2 i.F+",
+"2 1 +.W.Q.z.b+.+]+B.3+X.w.`. +&+a+'+=+Y.$+>+Z.O.-+E.X.$+=+M.=+!+~+P.`.$+@+N.D.N.b+]+A.Z.-+!+O. +=+-+L.#+y.y.;+=+$+;+0+P.C.S.D.Y.N.-+G.~+*+0+2 1 2 2 i.F+",
+"2 4 +.Q.q.*+(+_+:+:+:+:+:+:+:+:+:+_+U 2+-+3+*+.+*+M.X.O.C.$+=+S.4+A.3+@+D.Y.#+M.X.M.C.$+=+Z.4+A.3+G.X.O.C.$+=+S.4+A.3+&+-+=+N.Y.N.$+3+P.{+k+2 2 2 2 i.F+",
+"2 2 +.W.A.y.V V V V V V V V V V V V :+)+`.*+*+$+*+q.b+!+R.$+)+N.Y.0+@+G.O.=+#+q.b+!+N.%+)+N.Y.0+&+q.b+!+R.$+;+P.Y.0+@+O.D.Y.-+#+#+N.'+[+8+g+2 2 2 4 i.C+",
+"2 4 +.Q.k.G./+V S T T T T T T T T o+t+1+$+#+]+]+>+2+3+!+ +Y.1+$+=+G.R.3+E.;+=+2+]+!+ +Y.1+Y.=+G.R.2+3+!+Y.Y.1+$+=+G.R.2+M.=+#+;+N.~+.+Z.{+8+2 2 2 4 i.F+",
+"2 2 +.W.Q.y./+V V V V V V V V V V o+t+&+#+#+*+R.X.$ $ $ $ -+1+.+a+$+G.a+C.N.w.%+-+@+{+$ '+@+~+#+2+4+M.A.~+N.!+4+#+C.=+P.M.;+-+)+N.C.O.D.O.~+4 4 2 2 i.F+",
+"2 4 +.Q.W.2+/+V V V V V V V V V V o+t+;+~+~+&+*+@+$ P. +1+$ C.*+x. +P.P.x.y.L.`.=+`.!+$ O.A.3+x.D.M.G.C.!+D.2+P.{+$+ +2+-+S.#+=+4+I.X. +&+~+2 4 2 4 i.F+",
+"4 4 +.Q.X.`./+V V V V V V V V V V :+t+Y.Y.-+b+'+@+$ a+@+y.$ -+@+$ $ X. +a+$ $ $ ~+d+P.$ A.$ $ $ $ 8+&+>+$ $ $+S.=+$ $ &+a+D.C.#+Y.S.=+N.[+,+4 4 2 4 i.C+",
+"4 4 +.Q.y.Z./+V T V V V V V V V V :+t+=+1+E.S.C..+$ $ $ $ N.!+$ X.@+$ E.@+$ )+S.$ #+@+$ z.O.2+~+$ Y.-+$ O.X.$ #+$ ~+z.$ )+%+.+=+2+N.#+%+@+9+4 4 4 4 i.F+",
+"4 4 +.W.u.-+/+V V V V V V V V V V o+t+2+N.P.#+R.C.$ 0+q.$ Y. +$ $ $ $ P.~+$ |+1+$ 2+#+$ .+X.$ $ $ 4+=+$ -+G.R.)+$ $ $ $ N.]+1+~+O.N.)+#+,+f+4 4 4 4 i.F+",
+"4 4 +.Q.E.v./+/+V V V V V V V V V :+t+;+S.=+$+{+E.$ '+M.)+$ !+$ G..+P.E.b+$ S.#+$ P.~+$ O.$ 3+G.$ =+C.$ A.v.$ )+$ -+-+~+C.#+=+)+=+)+L.L.*+g+4 4 4 4 i.F+",
+"4 4 +.W.x.G./+V T V V V V V V V V o+t+)+`.@+w.R.E.$ X.$+-+# %+X.$ $ $ -+'+$ $ $ c+~+3+$ ~+$ $ $ $ {+P.@+$ $ &+1+Z.$ $ $ C.S.D.Y.N.-+G.~+*+8+4 4 5 4 h.F+",
+"4 4 +.T.W.X./+V /+V V V V V V V /+:+t+C.!+D.3+P.!+E.X.$+=+M.*+~+!+P.`.&+$+$ C.N.b+{+A. +#+~+I.`.*+-+R.'+y.x.!+=+$+!+4+P.-+=+N.Y.N.&+1+P.[+g+5 4 4 4 i.F+",
+"4 5 +.Q.l.v./+o+t+t+A+A+A+A+A+A+t+A+t+M.$+M.@+!+M.'+.+Y.b+S.)+@+X.v.G.~+`.$ N.E.#+]+.+2+*+I.~+Z.d+E.N.@+D.!+'+=+$+2+X.A.I.Y.Y.#+#+N.'+2+8+g+4 5 4 4 h.F+",
+"4 4 +.W.q.{+t+H+H+H+H+H+H+H+H+H+H+H+H+a+S.'+c+O.u.~+b+)+w.!+4+$+8+$+O.c+E.L.B.-+#+&+{+$+#+$+{+'+4+0+N.C.]+R.~+|+;+E.-+X.*+1+B.;+N.;+.+L.]+0+5 5 4 5 i.F+",
+"4 5 +.T.A. +.+O.G.y.C.=+;+$+`.&+.+R.N.N.)+=+S..+P.8+P.4+N.1+)+X.M..+X.`.2+Y..+E.-+{+y.@+E.1+1+P.2+@+8+$+@+P.Y.C.4+@+D.4+C.)+N.C.&+]+,+`.1+$+4 5 4 5 i.D+",
+"4 3 +.Q.p.c+w.R.4+w.M.1+B.-+y..+0+N.$+1+N.E.{+W.*+.+'+=+p.$+4+Z.S.G.C..+~+S.!+7+1+'+]+]+7+$+>+-+@+ +D.{+{+{+&+L.>+Y.2+`.{+{+{+~+*+0+~+[+a+0+5 4 4 5 i.D+",
+"5 4 +.T.q.Y.E.S.M.C.$+=+S.4+A.3+&+D.Y.#+G.*+Y.E.b+ +d+8+$+-+4+]+M. +.+E.P.{+e+e+h+e+h+e+e+h+h+e+e+e+h+e+h+h+e+e+e+h+e+h+e+k+h+9+k+e+9+h+k+q+5 5 5 4 i.D+",
+"5 5 '.T.v.=+q.0+!+R.$+;+N.Y.0+@+O.M.=+#+b+@+G.X.&+P.]+c+N.#+Y.*+M.G.@+@+-+E.h+s+s+s+z+z+z+z+z+z+z+z+z+z+z+z+z+z+z+z+B+z+z+B+z+z+z+z+z+z+z+y+5 4 5 5 i.D+",
+"4 5 '.Q.q.@+2+]+!+Y.Y.1+Y.=+G.R.3+E.;+-+*+b+.+8+*+X.*+D.=+;+$+=+#+R.@+{+P..+T.j k l l l l l l l l l l l l l l l l l l l l l l l l l l l l j 5 4 5 5 i.D+",
+"5 5 '.T.B.O.M.R.2+M.4+#+M.y.A.v.2+!+Y.=+-+)+B.&+&+{+&+!+S.S.Z.b+Z.0+E.*+ +'+T.j j j j j j j j j j j j j j j j j l l l l l j j j j j j j j j 5 5 5 5 i.D+",
+"5 5 '.T.M.R.E.X.O.C.$+=+S.4+A.3+@+D.Y.;+M.'+{+&+R.z.y.$+N.4+)+R.y.{+.+E.P.R.h+h+h+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+o.5 5 5 3 i.D+",
+"5 3 '.T.D.E.p.0+!+R.$+;+N.Y.0+@+G.N.$+#+@+*+*+'+D.I.~+$+N.a+Z.&+Y.@+b+D.*+*+K.K.T.Q.K.}+Q.Q.J.T.Q.K.}+Q.Q.Q.T.}+}+T.T.T.T.T.K.T.}+Q.T.Q.)+}+3 5 3 5 i.D+",
+"5 3 '.T.x.S.N.#+A.-+O.y.C. +]+*+'+-+y.N.$+'+N. +'+~+&+#+1+S.-+X.Y.E. +D.!+N.E.S.)+~+$+#+@+`.#+ +X.=+@+C.*+P.E.=+a+2+{+E.~+N.v.$+Z.O.Y.Y.0+0+3 5 5 3 i.D+",
+"5 3 '.T.E.S.2+A.!+ +Y.1+$+*+O.X.2+E.)+-+!+`.=+#+C.#+B.3+S.1+'+Y..+E.*+)+y.$+E.1+1+P.2+@+8+&+@+R.Y.C.2+$+D.4+C.)+N.C.&+]+-+`.1+$+$+M.%+P..+]+3 3 3 3 i.D+",
+"3 5 '.T.y.S.(+_+:+:+:+:+:+:+:+:+:+_+U b+-+P.y.&+E.E.X.O.C.$+=+S.4+A.3+&+D.Y.#+E.S.M.C.$+%+S.4+D.2+@+D.Y.#+E.X.O.C.$+=+S.4+A.3+&+D.Y.=+%+#+,+3 5 5 3 i.D+",
+"3 3 9.T.u.G.V V V V V V V V V V V V :+#+$+D.a+!+3+p.0+!+R.$+)+N.Y.0+@+O.M.=+;+q.0+!+L.$+)+N. +0+&+I.I.=+-+p.0+!+R.$+)+N.Y.0+@+O.M.=+#+l.@+0+3 3 5 3 i.D+",
+"3 3 +.W.q.'+/+V S T T T T T T T T o+t+2+S..+@+-+P.2+3+!+ +Y.1+$+=+G.R.2+E.;+-+2+]+!+ +Y.1+$+%+I.R.3+G.)+#+2+3+!+ +Y.1+$+*+O.L.3+G.)+=+d+{+,+< 3 3 3 i.D+",
+"3 3 +.T.q.0+/+V V V V V V V V V V o+t+M.]+R.Y.N..+$ ~+ +N.M.w.]+O..+#+.+*+)+S.|+$+E.D.N.$ Z.I.%+E.~+L.$ $ $ $ )+$+`.X.B.2+Y.]+v.-+$ %+I.@+0+3 3 3 3 i.D+",
+"3 < +.Q.x.~+/+V V V V V V V V V V o+t+#+!+>+a+O.'+$ P.)+M.Y.b+]+$+ +@+v.&+A.E.Y.B.$+@+I.$ P..+]+Z.$+@+$ !+.+!+$ #+-+]+]+.+0+1+1+$ !+&+Z.2+4+< < 3 < i.D+",
+"< < +.Q.q..+/+V V V V V V V V V V :+t+)+3+!+`.x.X.$ '+D.Y.L.1+$ $ -+R.$ $ $ $ 1+2+0+$ $ $ b+L.~+#+4+I.$  +'+2+$ -+'+$ $ *+$+I.$ $ $ Y.Z.I.6+< 3 3 < i.F+",
+"3 < +.T.q.`./+V T V V V V V V V V :+t+$+.+u. +c+3+$ ~+b+y.$+# L.G.$ O.'+]+'+$ -+Y.$ !+!+$ [+~+~+-+#+!+$ @+#+Y.$ ;+$ 2+2+$ w.'+-+$ Z.4+3+]+8+3 3 3 < h.D+",
+"< < +.Q.A.P./+V V V V V V V V V V o+t+Y.N.]+P.b+R.$ ~+&+$+#+$ 2+D.$ '+&+$ $ $ Y.b+$ )+&+$ @+B.{+!+ +$+$ N.0+P.$ #+$ $ $ $ Y.P.Y.$ N.C.%+b+6+< < < < i.D+",
+"< b +.T.x.x./+/+V V V V V V V V V :+t+!+&+.+D.-+ +$ *+N.|+N.$ &+,+$  +$ 0+y.$ b+~+$ 2+#+$ 2+Y.X.C.`.O.$ @+.+I.$ )+$ ~+a+.+1+B.1+$ w.Z. +,+g+< < < < i.D+",
+"< < '.T.M. +/+V T V V V V V V V V o+t+1+.+.+~+z.&+$ $ $ $ M.!+$ $ A.@+$ $ $ $ M.4+3+$ $ $ 2+!+@+Y.`.1+$ $ $ $ S.S.-+$ $ $ Y.c+N.$ %+ +$ !+8+< b < < i.F+",
+"b < '.Q.q.Y./+V /+V V V V V V V /+:+t+)+~+*+X.$+-+R.O.y.w.E.1+3+v.)+.+&+C.Y.1+M.$+@+,+Z.'+&+ +.+D.#+ +,+c+E.G.Y.)+!+]+D.!+J.M.M.4+4+'+Z.P.8+< < b < h.F+",
+"< b '.T.q.!+/+o+t+t+A+A+A+A+A+A+t+A+t+|+!+-+~+$+R.L.Z.#+S.1+!+Y.@+G.*+)+y.@+#+1+%+Y.*+Z.0+X..+R. +P.O.*+@+z.X.)+=+N.N.x.#+S.=+1+S.0+*+I.[+d+< b < b i.F+",
+"b b '.T.D. +t+H+H+H+H+H+H+H+H+H+H+H+H+4+)+*+'+E.~+z.=+7+Y.b+=+Z.1+]+R.,+%+M.N.B.Y.$+!+R.P.O.X.v. +4+&+b+*+b+-+E.`.I.E.@+,+D.;+|+M.)+.+8+0+j+b b < b i.F+",
+"b b '.T.v.Y.2+z.`.E.O.y.C..+]+*+'+-+y.N.$+-+R. +'+{+*+#+1+S.-+X.Y.E. +D.!+N.C.Z.)+~+&+-+@+Z.,+ +L.%+@+C.*+O.E.=+a+4+{+C.!+N.v.$+S.O..+ +0+0+b b b b i.F+",
+"b d '.T.u.!+4+&+>+&+0+ +{+R.{+y.S.|+$+a+4+0+)+~+P.-+)+x.=+y.1+Z.&+!+*+#+C.R.1+Z.#+ +@+O.{+.+!+&+]+L.~+P.]+.+Y.E.)+-+@+R.X.4+C.)+L.]+.+9+L.8+b d b d i.F+",
+"b d '.T.N.#+*+!+8+$+Z.1+R.!+&+&+P.G.*+'+1+>+4+'+&+X.a+O.X.&+$+X.3+R.7+-+a+!+>+c+2+!+1+]+d+&+!+'+&+.+C.{+{+]+*+X.~+Y.4+ +{+]+]+{+*+0+~+[+8+|+b b b d i.F+",
+"b b '.T.T.T.h+h+e+k+k+h+h+9+e+h+h+e+e+e+h+e+h+e+e+h+h+e+e+e+h+e+h+e+e+h+h+e+e+e+h+e+h+e+e+h+h+e+e+e+h+e+h+h+e+e+e+h+e+h+e+k+h+9+k+e+9+h+k+q+a d b d i.F+",
+"d d '.T.h+s+z+B+s+B+z+y+z+z+z+z+z+z+z+z+z+B+z+z+z+z+z+z+z+z+z+B+z+z+z+z+z+z+z+z+z+B+z+z+y+z+z+u+y+z+z+z+y+z+z+z+z+z+B+z+z+B+z+z+z+z+z+z+z+z+b b d d i.F+",
+"d d b b c d c d c c b d d d d d d d d d d d d d d d d b c d d d b d d d d b b b d d d b d d d b d b b b c b d d d d b d b c c d d d b d c d d d b f i.F+",
+"d d d d d c b c b d d d d d d d c d c c d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d c d d c d d d d d c c c i.F+",
+"d c c d d d d d d d d d d d d d d d c c d d c c c d c c c d d d d c d c d d c d c c a c d d d d d d d d d d d d d d d d c d c c c c d c d d c c f g i.F+",
+"c c c c a a c d a c c c i i c d c d c f c c h f c c c c c a d c c c c c d d c d c c f g g c c g f f c a c c g c c c a c c c c c c c c g h c c c g g i.F+",
+"a a c a h c c a i f i a d f c a a c g g i c i a h a a a c h a c a i f c a c a a i a g f c i a a a c i h a a h g h h i c a a a a a i a a a i a h h i i.F+",
+"a h h a a h a h h h h i i a a h h a h h i i a h c c h c a h h h h i a i a h h g a h h h h a a h a a a h h i h a c h a h h h a h h a h a i h a a h h i.F+",
+"i a h a a h h h a i h i h h h a h h i h h h h h a i h i h l a a h i l h h h h h i h h i a h i h a h i a h h h h i i h a h h h h h h h h a h h l i k i.F+",
+"i h h h h i i h h h i h l i h i i h i i h i i h i h h h h h k h h h l i h i h h i i h i g i h h h h l h i l h h l h h l i h l h h h h h h i h i h k i.F+",
+"l l i k k k l l h k l l i i i h i l h h l h h h i i h h k l l h l l i l l h i i l l i l l l i h h h l l i l h i l i l i i k i k h h k l i l l k k l h.F+",
+"l h l i l l l h l h h l l l l l k k l h l l k k l l l h l h l h l h k k l h l h l h k l h l l l l l k l k l l l k l h l l l i l l l h l h k l h l k i.F+",
+"k k k l h l k k k l k h l h l l k l k l h l l k k h l k k l l k l k l l l l l k k l k l k l h l h l l l l l h l l l l l h l l l h l k l k l l l h m i.F+",
+"l k l l l l k l l l l k l l k k l k l k j h l k k k l l l l l l k k k h k l l l k l l l l k l l k l l l l l k k l l h k k j h k l l l k l k l l l j i.F+",
+"l l l l l l l j k l l l l l l k l l l l k l m l l l l j l l l l l j l l l l l l l m k l l l l l l j l l l l l l l l l l l l l l l l l l l l l l l m i.F+",
+"l l l l l l j l m j l m j l j l l l l j l l l l l l l l j l l l j l l l l j l l l l k l m l l l j l l j m j j l l l l l l l l l j l l l l l l m j m i.F+",
+"m j l j j l j j j j j l j l l l j j j j j j l j l j j j j j l l l j m l l j j j j j j j j l l j j j j l j l j l j l j j j j j j j l j j l j l j j j i.F+",
+"j j j j j j j j j j j j j j j j j j l j j j j j j j j j j j l j j j j j j j j l j j j j j j j j j j j j j j j j j j j l j j j j j j j j j j j j j n i.F+",
+"j j j j j j j j j p j j j j j j j j j j j j j j j j j j j j l j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j p j j n i.F+",
+"j j n j j j j p j p n j n j j n j j j j j j n n n j j j j j j j n j j j j j j j j j j j j j n j j p j j j p j j j j n j n j j j j j j j j j p j j n i.F+",
+"p j n p j p j p j p n p n p j j j j p j p n p p n p j p j j p j j j n j j n j p j p j n n p p p n p n r n p n j p n p p p j n j j p p j p n p r j e i.F+",
+"p p p p p p p p n p p p n p j r r r n p j p n j n p j n p p p j p n p p p p n p p j p n p p p j n r n n p p n p p r r p p j p p j n p p p n r n n e i.F+",
+"p p p p p p p p r n r r r n p p n r p p p r r r r r r p r r r t p p p p p n p p p p p r r r r r r r n r r n p p p p n p p r r p p p p p p p t r p e i.F+",
+"p p p p e e w e e e e e p p p r r r r r r r e e e e e r e e e t p p p p p t r r p r r r e e e r e e e e r r t p p t w e e e r r r t p p p p t e e e i.F+",
+"p p t t t e w e e r r v t r r r e e e v e w w w w r w e e r e w w v r r p t e r r p r r e e e e r w e w w e r t p p t r w e e e e w p t t e t p r r i.F+",
+"t w e p x w w r w w w p r r t w w r w x r v x r e r r e r w e e r t v w e v e e x x v e r v r r e v w w w v p p t v e w w w r v r v x w w e p t v e i.F+",
+"t r e p w w w w e x w t w w e v e r v n v e t v w w e t v v x w t t v v v t r v v r x e v v w v x v w r w x v v e t t w v x w e w x r v w v x v t e i.F+",
+"w v w w v x r v x x v w w w v v t w v v v v v w w v v v v r v w v e v e v t w r x r v v v e v e x r x r v v t w w w w v x r v v v v t t x r v t t x i.F+",
+"w w w v w v v v r x v x v x v v v v w v x v v v v v v v v v v w v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v v x v v v v v v v v v x i.F+",
+"x v v v v v v v v x v v v v x x v v v x v v x v v x v v v v v v v x v v x v v v x v v v x v x v v v v v v v x x v v v x v x v v v x v v v x x v x x i.F+",
+"x v x x x v x x x x v x x v x v x x x x v v v v v x x x x x v v x x v v x v x v v x x v x x v x x v x x v x v x v x v v x v v v v x x x x v v z z x i.F+",
+"x v x x x x x v x y v x x y x x v x x x y u y v v v v x y v x y x x x v x y x v x x y x x x y x x x x x x x x x x v x x v x x x x x x x x x y x x z i.F+",
+"y y y x v x y y x y y y x x x y x y y x y u y u u x y y x y y y y x y x y y x x y y y y x y x x y y y x x y y x y y x y y y v y x v x x x y y z x z i.F+",
+"y x y y y y y y y z z z y z z x y y y y A y y y y z x y y y y z y z y z y z y y y z y y z y y y y y y x z y z y y x y y y y y y x y y z y z z z z z i.F+",
+"u y y y y y z z z z z z z y y z y z z z z A u A y y y y z z y y y z y y y y z z y y z y z y y y z z x y y y y z y z z y y y z y y y y x y z z z z z i.F+",
+"A s z y y A z z z z z z z z z A z z z y A A y z z y y z y A y y A z z y z y z y y z y z y z y A y y y y y y y z y A y z z y A y z z z y z z z z z z i.F+",
+"z A B B A y z B z B z s A A z A A A A z y A s s z z A A A A A z A A A z y A A A z A z A A z A A z z A z y A y z A z A A z A A A A z A A A z A A z z i.F+",
+"z B z B B s s s z B z s B A A A A z A z A A z A A A A A z z A A z A A A A A A A A A z z z A A A A A A A A A A A A A A A A A A z A A A z A A A A A B i.F+",
+"s s A z B A B s s s B z B A A A s s z s s B s B A A z A B z A A A A A A A A A A A B A A B B s A A A A B A A A A B A B B A A A B B A A A B B B A B B i.F+",
+"A s A B B A s B B B B B B B A B A B B s s B A A A A B A B B A A A A A s B B E B A B B A B B A B A A B A B A A B B B A A B A B B B A A B A A B A A B i.F+",
+"B s B s A B A B B B B B B B A B D B B E B B B D E s A A A E s A B B s A A B B B D B B B B B A s A A A A B E E A B s s s A B E B B E H s B E s s A H i.F+",
+"B D B E D D D D B B H B D B E B D B B I H B A E E B s B s B E D D E B D B B E H z D D A D D E s E s E B D B B D E E B s s B D H B H B H H s E E D H i.F+",
+"H H H H H D D H H B H H D H H I I I D I B H E D B D D D B E E D H H H H D D D D D D H D B D E B E E D B D D H H H D D D D D D H H H H H H D E D D H i.F+",
+"H I H H H I H H H H H H H I I I B I B I B D D D H H B D D D D D H H H H H H H H H D D H D D I I D D D D D H H H H H H H D D H H H H I D D D H H I I i.F+",
+"H I H D H I H I H H K K H I I I I I K I D K H D D D I D I I D D I B I H I I H H H D D D H D D D I D H I D D I H I H H H I D I I I I H K H D H H I I i.F+",
+"I I H G G I I I H H I I H H H I K B D I I I H D D D I H I D K I K I K H H I H I D D I I I I D I I I D D I I I H K I K I I D D I H I I H K D D I D I i.F+",
+"H K I I H G I I H K I I I K I K I I I K H H I I D I I I I I K H I K I I I H I I I I I I I I I I D D I I I I K K H I K I D I I K H K H G K I I I I K i.F+",
+"K I I G I I I I K G G G I K I I I I I I I I I I I I G I G K K C K I I L I K I I G I K K I K G I K I I I I I I C K K I I I K I K I G G K I I K I I K i.F+",
+"G I G G K G G G K G L G L C L I J K J K K K I K K G L L G I L K K I I L G K K K K I C K I I G I I K J K I K K G C K K K K I K I J L G L K K K G G K i.F+",
+"J K K L G L G K J L L G G J K K I K I K K K I K K L L G K K L I L K I G C K K G K G K K G G G K K K C I G J K G G G K L L L L J J G J C G K L L L L i.F+",
+"K I K K K I K K L J G L G K J K K K K K K K K K K C K K J J J J C J J L L L K K K K K K J K K L J G K J K I K G J K I J G K K G L L L L J L L G L L i.F+",
+"K K J J J J J J L C J J J J K J J J J J J J J J J J K K J I J G J J J L C K K K K J K K J L C J J J J G J J J J J J J J J J J K J L C J J M C J R M i.F+",
+"J K J J L J L Y R R L J J J J Y J J J J L J L J L Y J J J J J J J J J L J J J K J J J J J J J J J J J J M J J J J J L J J J J M R M J J J J J J L R i.F+",
+"Y J J J J J J R L L  .J J M J R J J J J Y J J J J M J J M J R J J J J J J J J J Y J J J J J J R R J J Y R L J J L J J J M R L R L Y J R J J J K M Y i.F+",
+"R J R R Y M M L Y Y  .R Y J J J J J R R R R R R R R R R Y R R J R J J R Y J J J Y J J Y Y J J Y J J R J Y Y Y Y Y J Y R J Y Y Y R  .J J J R J J M Y i.F+",
+"R J R R  .M Y Y Y  .R Y R R J R R R R R R J R R J R ..J J R J R R R R R R R R Y Y J R R R R R J J R R R J R R R R R R R R Y Y Y R J R R Y J Y Y Y  .i.F+",
+"Y R R R  .Y Y Y Y ..Y R Y R R Y R Y R Y R R R Y Y R R R R R ..Y R R Y Y R R ..R Y R R R R R Y Y R R R R R R Y Y Y ..Y Y R R Y Y  .R Y ..R R ..R R Y i.F+",
+".. .R R Y Y Y Y R ..Y R  .R R R Y R R ....R ..R R M ..Y .... .Y ..R R Y R R Y .... .Y R ..Y  ... .R R R Y R R Y R Y .. .R R  .Y R R R ....R Y R .. .i.F+",
+"R Y Y ....Y  . . .Y .......... ..... .R R .. .R ....Y Y  .Y  .R R ....Y ..R R Y  .....R  ... .Y ..Y ....R .. .Y  ...R Y ..Y Y  .......R R R ..Y ..Y h.F+",
+"` R ..Y  . . . .....Y  ...Y  . ...Y  .` Y .. .` Y .. . . .R  .....Y  . .....Y ....Y  ...Y ..Y ` .. ...Y Y  ... . ......... ...` ..Y .. . . ... . .@.i.F+",
+" ... .@.@.@. ...Y `  .`  . ......... . ... . .` .... ...` ....R `  . ..... ... . . . . ... ...@.@.@.@.@.@...Y .. .Y  .Y  ...Y .. .@.@.`  . . .`  .@.i.F+",
+"`  ...@.Y @.@.@..... .`  ...`  . ..... .` ......@.@.@... ..... . .` ..` ....` .... . .......` @.Y ..@.Y `  . .......` ` ..`  . .@.Y .. . .` .... .@.i.F+",
+"` ` @.` ` ` Y @.` ..@.@. . .@.@...`  .` ..` ` ` ` Y @.` ` .. .....@.` @.` `  .` ..`  ...@. . .` ` ` ` ` .. .@.` ..`  .@.` ....` ` ..` ` ..@. .` ` @.i.F+",
+"` @.` ` @.` ` ` ` @.@.` @.` ` ` @.` ` ` ` ` @.@.` ` ` ` @.` ..` ` ` ` @.@.` ` ` @.` ` ` ` ` ` ` @.` ` @.` ` ` ` @.` ` ` ` @.` @.` ` ` @.` ` ..` @.@.i.F+",
+"` ` $.` @.` @.$.` @.$.$.@.` ` ` $.` @.$.` @.$.` $.` @.` ` @.$.` $.$.` ` $.@.$.@.$.` ` $.$.@.` @.` ` @.$.$.@.@.$.@.$.` @.` @.@.` @.@.` ` @.` ` ` ` @.i.F+",
+"$.@.` @.@.$.$.$.` $.@.` $.` $.$.` $.$.@.$.$.$.$.` @.$.` @.` ` $.@.@.$.` $.$.$.$.$.$.$.` @.$.` ` $.@.` ` ` $.$.$.$.@.$.$.` @.` @.` ` @.` $.$.` ` ` #.i.F+",
+"$.$.$.$.@.$.$.$.$.$.$.$.$.$.%.$.$.$.$.$.%.$.$.$.$.$.$.$.%.$.$.%.` $.$.$.$.` $.@.$.$.$.$.$.$.$.$.` $.$.$.$.$.$.$.$.$.` $.$.$.$.$.$.@.$.` $.$.$.$.$.#.i.F+",
+"#.$.$.$.#.#.#.#.#.%.#.#.#.#.%.#.$.$.%.$.$.%.#.#.#.$.$.$.%.#.#.%.#.#.#.$.#.#.#.$.$.$.#.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.#.#.#.#.$.$.$.#.$.$.#.$.#.#.#.i.F+",
+"$.%.%.$.#.#.#.%.%.%.%.#.#.&.#.&.$.#.%.#.#.%.%.#.%.*.$.#.%.%.#.%.#.#.#.#.%.#.%.$.%.#.#.%.$.#.$.$.$.#.%.$.$.$.#.#.%.*.#.#.$.#.#.#.%.#.$.$.#.%.%.*.#.#.i.F+",
+"%.%.%.$.*.#.;.&.&.#.%.#.&.#.#.*.#.%.#.#.&.#.%.#.%.*.$.%.%.#.#.*.#.#.%.#.#.#.%.$.%.%.%.%.%.%.%.$.#.#.%.%.%.%.%.%.%.%.*.*.*.&.&.$.%.$.%.%.%.%.#.%.%.%.i.F+",
+"%.%.%.%.%.&.&.#.&.%.#.%.%.%.%.*.*.*.*.*.*.*.*.%.%.%.%.%.*.&.%.&.%.#.%.%.*.%.#.*.%.%.%.$.%.%.%.#.#.%.%.%.%.%.#.%.*.%.%.#.*.#.%.%.%.$.%.%.%.%.%.%.%.%.i.F+",
+"%.%.%.%.%.*.#.&.&.;.#.%.%.%.%.*.#.%.%.#.#.%.*.#.%.&.&.;.#.&.#.%.%.%.%.%.*.#.%.*.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.*.%.%.%.%.%.*.%.%.%.%.%.%.%.%.%.%.*.i.F+",
+"%.%.%.&.%.%.&.&.&.&.%.%.%.%.%.&.%.%.%.*.*.&.&.=.&.&.&.&.*.;.%.%.&.%.%.%.%.*.*.*.*.*.&.%.%.%.=.%.%.&.%.%.*.%.%.%.*.%.%.*.%.*.%.*.%.&.%.%.%.%.%.%.%.*.i.F+",
+"%.%.*.=.&.>.=.#.>.;.>.;.*.%.*.%.&.%.*.;.&.&.&.&.%.&.;.&.&.>.&.&.*.&.*.;.*.%.%.&.;.&.=.=.&.=.&.;.*.*.%.%.%.%.&.*.*.;.*.*.*.&.*.&.%.*.*.%.%.%.*.%.%.&.i.F+",
+"=.;.%.*.&.;.=.=.=.&.;.=.;.*.*.;.;.;.;.&.*.;.;.;.=.;.>.&.&.;.=.;.*.*.;.;.=.*.;.;.;.&.&.&.&.&.=.*.;.&.=.*.*.&.&.=.*.;.%.;.%.*.=.=.=.=.&.%.=.&.*.*.=.=.i.F+",
+"=.*.;.*.>.;.&.;.>.&.>.*.%.;.*.;.;.&.;.&.=.=.;.;.;.&.&.=.;.>.;.;.;.;.=.*.>.&.;.;.=.=.=.&.;.*.;.=.&.;.;.=.&.*.;.;.*.*.&.;.;.=.&.&.;.&.=.=.&.=.*.%.*.>.i.F+",
+"&.=.;.;.;.=.=.&.>.&.=.>.>.=.;.;.;.=.=.=.=.&.=.=.=.=.=.=.&.>.>.;.;.;.;.;.&.=.&.=.;.&.>.>.>.=.;.;.;.=.;.=.=.=.=.=.;.;.;.;.;.=.=.=.;.&.;.&.;.=.;.=.=.>.i.F+",
+"=.=.=.=.=.=.=.=.=.=.>.&.=.;.;.=.=.=.=.;.=.=.=.=.=.=.=.=.=.>.&.=.=.=.=.=.=.=.=.=.;.=.>.&.=.=.=.=.>.>.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.>.>.i.F+",
+"=.=.>.=.>.>.=.=.>.>.=.=.=.=.=.>.=.=.=.>.>.=.>.=.=.>.=.=.=.>.=.>.=.=.=.=.>.=.=.=.=.>.>.>.=.=.=.=.=.>.=.=.=.,.>.=.=.=.>.=.=.=.=.=.>.>.=.>.=.=.>.,.>.~.i.F+",
+">.=.>.=.=.=.>.=.=.>.=.>.=.=.=.>.=.=.>.=.=.=.>.=.>.>.=.=.>.=.=.=.>.=.>.>.=.>.>.=.=.=.=.=.=.>.=.=.=.>.>.=.>.,.=.=.,.>.>.=.=.>.,.=.=.=.=.=.=.=.=.,.=.~.i.F+",
+">.=.=.>.=.>.>.=.>.>.>.=.>.=.=.=.=.>.=.>.>.=.>.=.=.=.>.>.=.=.>.=.>.=.=.>.>.>.=.=.>.>.=.>.>.=.=.=.=.,.=.>.>.,.=.=.=.,.>.>.>.=.,.=.>.>.>.=.>.>.=.>.,.~.i.F+",
+",.>.,.>.>.=.,.>.=.>.=.>.>.>.=.>.,.>.>.=.>.>.>.>.>.>.>.>.=.,.>.>.,.>.=.>.,.>.>.>.>.>.>.,.>.>.>.>.>.,.>.>.>.,.>.=.,.,.=.=.>.>.,.,.,.,.>.>.>.>.>.>.,.>.i.F+",
+",.,.,.>.,.,.,.].,.,.,.~.{.{.,.,.,.,.,.>.>.>.>.,.,.,.~.~.~.,.,.>.,.>.,.>.,.>.>.,.,.,.,.>.=.~.~.{.~.{.,.,.>.,.,.~.~.{.,.,.{.{.{.{.,.>.,.,.{.{.{.,.,.~.i.F+",
+",.,.,.,.].,.,.{.,.,.,.{.{.{.{.{.>.>.{.,.,.,.,.,.,.{.{.{.{.{.{.~.{.{.{.{.,.{.,.>.,.~.{.{.,.{.{.{.~.,.,.,.,.,.{.{.{.].~.{.{.].{.,.,.,.~.{.~.~.{.].{.{.i.F+",
+"{.{.{.{.].{.,.,.,.>.{.,.{.{.{.{.{.{.{.,.,.,.,.{.,.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.,.{.{.~.].{.{.{.{.{.{.{.].{.{.{.{.{.,.].~.{.~.{.{.{.].~.{.i.F+",
+"{.{.{.{.].{.].].{.,.,.,.{.{.{.{.{.{.,.,.{.{.,.,.,.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.].{.{.].{.{.{.{.].{.,.,.,.{.{.].{.{.{.{.{.].{.{.{.i.F+",
+"]./.].{.].{.{.].,.,.{.,.(.(.].{.].{.].{.{.{.].].,.{.{.].,.{.]./.{./.].{./.{.{.].{.{.{.{.].].{.].{.].].{.(./.{.{.{.].,.[./././.{.].].].{.{.]./.{.{.].i.F+",
+"{./.{.].(.(.{./.{.].]././.{.{./.{.].].,.].{.].].].].].].].(.].(.].{.{.].].]./.{.{./.{.{.].].].]./.{.].{.{.].{.].{.(.{./.{.{.].[.].{./.{.{././.{.].(.i.F+",
+"].]./.].{.(.{.]./.].].].].].]./.].].].{.].].]./.].].].].].(.{.(.].].{./.{.{.{././.].{./.].].].].].]./.{.(.{.].].{./././.].].{.].{.(./././.{././.{.(.i.F+",
+"/.{.].].].]./.].].].].].].].].].].].]./.].].].]././.[.].(.(.].].].].].]./.].]./.].].].]./.].].]./.]././.]./.]./.]./.].]././.].]./.{./.{./.{.].(.{.(.i.F+",
+"/.].].].]././.].].].]./.].].].].].].].].].].].].].].[.(.].(.].].].]./.]./.].]./.].].].]././.]./.].].].]./.].]././.].]./.]./.]././.].].]./.].(.]./.(.i.F+",
+"/.].].]./.[.].(.(.[.<.(.].]./.<.<.].[.<.[./././././.[.].(.}.(./.(.]./././.]./.].]./.].[.]./.<././.[.[.[././.]./././.]./.].}./.}./.].(././././.[.(.(.i.F+",
+"(.(./.(.(.]././.].].[.<.<.<./.]./.[./././.<.<.}.}./.(.<.(.(.(.(./.(.[.[././.[.[.]././.[.(.[.].[./.[.(.(.(././.[.]./././././.}.]./.(./.(.}.].(.}./.}.i.F+",
+"[.[.(.(.<.<.[.(.[.].[.<./.<.<././.}.|.|.}./.}./.<.[.<.(.]./.(.]./.<.<./.}.}.}.[././.[.[.<.<.<.<./.<.<././.<.<.<./.<.[.].}.].[.[./.[.<.<.<.[.[.<.<.}.i.F+",
+"[.<.<./.(./.<.<.<.<.<.}.<./.}.}.}.<./.|.|.}./.}.<./.<.(.[./.<.<.<.<./.<.<.}.}.}.<.<.<.<./.}.}.}.<.<./.[.}.}.}.<.<.<./.<.<.<.[.<.<.<././.<.<.<.}.}.|.i.F+",
+"}.}.<.<.<.<.<.<./.<./.|.}.}.}.}.}.|.|./.|./.<.<.}.<.[.[.<.<.<.}.}.|.}.<.<.}.}.}.}.<.<.}.<.}.}.|.}.}.<.<.}.}.}.}.}.}.}.}.}.}.}.}.}.}.|.}.}.<.<.}.|.|.i.F+",
+"}.}.}.<.}.<.|.<.<.|.<.<.|.}.}.|.}.|.|.}.}.|.|.}.|.<.<.<.<.}.}.|.|.}.}.<.<.|.|.|.}.}.}.|.<.}.}.|.}.|.}.}.}.}.}.}.}.}.|.}.}.}.<.|.|.}.|.}.}.<.}.}.}.|.i.F+",
+"<.<.|.|.|.|.}.|.<.<.|.<.}.}.|.|.|.|./.2.2./.<.|.<.|.|.|.<.}.|.}./.<.}.}.<.2.}.|./.|.}.|.<.|.|.}.|.|.|.|.|.<.}.<.|.<.|.|.<.}.|.}.|.|.}.2.<.<.<.}.2.}.i.F+",
+"<.|.<.|.|.|.|.|.}.|.|.|.|.|.|.}.}.|.|.|.|.2.|.|.<.|.<.|.|.2.2.|.2.|.|.|.|.2.|.2.|.<.|.<.|.<.}.|.|.}.|.}.2.<.|.|.|.<.<.|.2.|.:.}.|.}.|.|.<.|.|.|.2.}.i.F+",
+"|.|.|.<.<.|.<.|.|.|.|.|.|.|.2.|.|.2.|.}.2.|.2.|.|.<.|.|.|.2.}.|.|.<.|.|.|.2.}.2.|.|.|.|.|.|.2.|.|.|.|.2.|.|.|.|.<.<.|.|.2.}.|.|.|.|.}.2.|.<.|.|.2.:.i.F+",
+"|.|.|.|.|.|.|.|.|.|.2.|.|.|.|.|.|.|.|.3.|.3.|.2.|.2.|.2.|.|.2.:.|.|.|.2.2.|.|.3.|.2.|.|.|.|.|.2.:.|.|.2.|.|.|.|.:.|.|.|.2.|.|.|.|.3.|.2.|.|.|.|.|.2.i.F+",
+"2.|.:.|.2.|.:.|.|.1.|.2.1.2.2.3.2.|.|.|.2.|.|.2.|.|.2.|.|.|.2.3.:.|.|.2.|.|.|.|.2.2.:.|.|.|.2.1.:.|.2.1.|.2.:.|.1.1.|.|.2.|.3.:.|.:.2.2.|.|.|.|.|.2.i.F+",
+"2.|.2.1.1.2.2.:.|.:.|.:.2.|.3.|.2.2.3.|.3.2.2.2.2.:.2.|.2.:.:.|.|.:.|.|.1.1.|.2.2.3.3.2.:.|.2.1.|.:.3.|.1.2.2.|.|.:.2.2.2.|.|.|.2.:.|.2.:.2.2.|.3.2.i.F+",
+"3.2.3.2.1.2.2.|.2.1.2.2.2.1.2.2.2.|.2.2.2.|.2.1.2.:.|.1.1.2.1.1.2.|.1.|.1.|.2.1.:.3.|.3.3.2.2.2.:.|.2.2.1.1.|.2.1.|.1.:.|.|.|.2.1.1.2.2.2.:.:.3.:.1.i.F+",
+"2.:.3.:.2.2.1.1.2.2.:.|.3.2.1.1.2.1.1.1.1.2.1.|.2.2.1.1.:.1.2.2.1.|.1.2.2.1.1.1.2.1.:.:.3.1.1.:.4.1.1.:.1.2.2.2.1.1.2.1.2.1.2.2.|.2.|.1.1.1.1.|.1.3.i.F+",
+"1.1.2.2.2.2.:.:.2.2.2.1.1.1.:.2.2.1.:.1.:.2.1.1.1.1.:.2.2.1.:.2.1.2.1.1.2.1.3.:.1.:.2.1.3.3.3.1.2.:.2.2.1.2.2.1.|.2.:.2.1.:.2.2.2.2.1.:.1.|.1.1.1.1.i.F+",
+":.1.2.1.1.1.1._._.1.1.:.1.1.2.1.2.3.3.3.1.2.1.1.1.1.2.2.1.2.2.2.1.1.1.2.2.:.1.2.1.2.1.1.1.:.3.1.1.1.2.2.1.1.2.1.1.1.2.2.2.1.1.1.2.1.2.2.2.1.1.1.1.6.i.F+",
+"1.2.1.1.3.6.3.3.3.3.4.3.4.3.3.1.4.4.8.3.6.4.5.3.3.1.2.1.1.2.4.3.5.1.1.4.4.4.4.1.1.1._.3.1.1.6.3.3.1.1.1.1.1.1.1.5.4.3.6.4.4.3.4.3.4.4.3.3.4.3.4.6.3.i.F+",
+"5.5.1.3.3.6.3.3.6.3.4.4.5.5.4.4.5.3.5.3.4.3.6.3.4.4.1.1.4.4.4.4.5.3.3.5.4.5.4.3.5.3.6.3.6.3.6.3.3.6.4.4.6._.1.3.5.4.4.6.3.4.3.3.3.3.6.3.4.5.3.4.3.6.i.F+",
+"3.4.4.6.3.3.5.4.5.4.5.3.3.6.6.4.5.3.5.4.4.3.4.6.4.6.6.4.5.3.1.3.3.6.6.5.3.4.6.4.6.3.5.5.5.5.4.5.4.5.5.4.3.5.3.1.4.3.3.6.3.4.4.6.6.4.4.4.5.3.6.3.6.4.i.F+",
+"4.4.3.6.4.4.4.3.5.4.4.4.4.4.3.6.3.3.5.4.3.6.3.6.4.3.6.4.4.4.4.4.4.4.3.6.4.4.4.3.6.4.4.3.5.4.3.5.4.4.3.5.4.4.4.3.5.4.4.4.4.4.4.4.3.6.4.4.4.3.5.4.4.3.i.F+",
+"4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.5.5.5.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.i.F+",
+"6.4.6.6.4.5.4.5.4.4.4.4.4.5.4.4.5.5.4.5.4.5.4.4.5.6.6.4.6.4.6.4.4.5.4.4.4.4.4.4.4.4.4.4.4.4.5.5.5.8.5.8.5.6.8.5.5.4.5.5.8.5.6.4.6.4.4.5.5.5.4.4.4.4.i.F+",
+"4.4.7.4.5.4.4.7.8.7.4.5.4.4.5.8.6.4.6.6.6.4.5.4.6.8.7.8.4.8.4.6.4.6.5.6.8.5.6.5.4.7.6.4.7.5.7.5.8.8.5.5.8.5.5.5.8.5.8.5.5.8.7.5.4.8.7.5.5.4.4.5.4.4.i.F+",
+"6.4.4.4.7.6.6.5.4.6.7.6.6.6.7.6.8.7.8.4.8.6.6.8.8.6.6.7.7.6.4.5.6.8.5.8.6.5.8.5.5.6.6.6.4.7.3.5.8.7.8.8.7.5.5.7.8.5.5.5.5.5.5.5.6.6.5.5.7.8.8.5.5.7.i.D+",
+"8.5.6.5.4.6.6.7.7.6.6.6.8.4.7.6.8.6.7.6.6.6.4.7.4.6.6.6.6.6.7.4.8.4.5.8.5.7.4.8.4.4.8.5.4.4.7.5.5.8.8.7.5.8.7.5.5.5.7.8.6.8.8.4.8.8.6.5.5.5.8.8.8.5.i.D+",
+"6.8.8.8.7.7.7.8.6.7.7.7.7.7.8.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.7.7.5.i.D+",
+"7.7.C W.k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+k+6+k+6+k+6+k+k+k+o.} 8.7.7.i.D+",
+"8.7.Z K.K.K.Q.Q.)+J.T.Q.K.}+Q.Q.W.T.}+J.T.W.J.}+W.W.Q.T.1+K.T.Q.K.)+Q.Q.Q.T.}+J.T.Q.K.1+Q.W.J.T.Q.K.)+Q.Q.Q.T.}+)+T.T.T.T.T.K.T.1+P.T.Q.}+1+| 9._.7.i.D+",
+"8.8.Z K.7.q.v.l.l.y.y.k.v.l.l.u.k.y.u.q.v.l.q.y.q.g.q.k.l.u.v.D.k.p.q.g.l.v.k.E.x.q.l.k.u.p.g.q.x.B.C.k.q.l.v.k.l.q.g.q.w.l.q.l.l.k.y.k.]+,+~ 8.7.7.i.D+",
+"7.7.Z K.A.N.`.`.p.B.P.Z.C.I..+@+R.`.=+E.`.E.I.x.I.u.@+D.w.E.$+@+R. +R.E. +G.E.`.S.x.L.A.x.N.~+*+$+w.@+z.l.N.E.A.P.G.*+P.=+Y.w.C.E.!+>+]+~+]+! 7.7.7.i.D+",
+"7.7.Z K.$+S.@+#+v.'+X.$+L.I.Y.)+{+~+4+$+#+8+{+b+N.2+N.L.M.%+N. +X..+D.Z.D.)+J.Y.b+*+V.a+ +N.p.S.U.1+V.U.N.~+0+!+N.X.++X.V.#+Y.~+Y.)+>+G.>+~+! 7.7.7.i.D+",
+"7.7.Z K.p.C.!+V.v+p+u+y+x+p+u+u+u+u+u+u+x+u+u+u+u+u+y+u+u+z+x+y+y+y+y+p+z+p+x+x+x+x+x+x+y+x+x+x+x+x+y+x+y+x+x+w+x+x+x+w+y+y+x+y+y+v+]+b+.+8+! 7.7.7.i.D+",
+"7.7.Z K.B.'+P.R.j+/ ] , = % % % % % % % % = = ; - , ' / [ ] ] ] / / / [ 7 8 9 0 0 0 q O Q ^.b.a.N N W ^.^.^.^.!.!.a.a.a.a.b.a.j.a.s. +!+0+4+! 7.7.7.i.D+",
+"7.7.Z K.w.$+P.P.f+- * . % % % % % % % % % % = = = - = * * , ) ] ] / ] / 7 / 6 0 O O O O Q P Q Q W ^.W ^.^.a.^.a.a.b.b.b.b.b.c.c.a.U.<+M.'+g+! 9.7.0.i.D+",
+"7.9.Z K.v.=+*+b+6+] * c.x+v+v+v+v+D+v+B+v+v+v+E+D+w+i+; ' 5+E+A+v+v+v+v+p+p+y+w+w+v+w+v+y+i+8 U.r+w+w+x+w+x+v+x+x+x+x+y+x+x+x+U.P >+y..+]+]+! 7.7.7.i.D+",
+"7.7.C K.q.!+!+{+j+/ = 6+H+k+,+9+<+<+8+8+8+0+8+<+9+E+C+- / H+q+^+8+7+7+>+r+H+5+[+7+f+7+^+w+D+/ i+H+g+7+d+f+f+7+f+f+f+f+f+f+6+g+!.W >+*+`.{+W.! 9.7.9.i.D+",
+"7.7.Z K.y.D.0+P.j+) & ^+x+; # @ @ @ @ + + . & . + U.G+; ] H+f.& - , , * t.E+q - 7 7 / ' j+C+] i+H+9 7 7 7 8 9 9 9 9 6 6 6 6 0 N Q H.3+.+-+0+! 0.9.0.i.D+",
+"9.9.Z K.p.z.M.B.q+f.P j+y+- ' O 0 O 0 O , . * - Q m+G+, ] H+n.; / / 7 ' ^+D+^.] P P Q 6 i+D+] j+H+O ^.t.n.t.t.n.t.t.t.t.t.t.H.t.m.<+)+C.3+9+! 0.7.9.i.D+",
+"9.0.Z K.I.4+Z.~+H+H+H+H+r+- q+H+H+H+H+H+p+j.= & H+H+r+; / H+t.; / 7 8 ) <+H+!.] O O O 8 i+C+] j+H+0 t.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+7+]+d+'+! 0.0.9.i.D+",
+"9.0.Z K.C.Y.'+#+5+b.0 6+v+' , 0 0 9 9 P q+H+q+b., , ) ; 9 H+t.; / / 7 / 9 <.8 6 P P P 8 i+v+] j+H+O N b.b.c.b.c.b.b.c.c.c.c.c.c.!.U.{+'+>+b+! 0.7.0.i.D+",
+"9.0.Z K.S.Y.~+ +l+6 ' >+D+7 * = * * * & & b.w+H+5+9 = = 8 H+t., 8 8 8 9 7 / 6 O P Q O 8 i+v+] 6+H+9 0 6 6 0 6 0 6 O O O O O O W P H.=+]+G.3+! 7.0.0.i.D+",
+"0.0.Z K.y.N.$+@+i+^.8 f+C+0 - ' ' ' , , - & = u.r+H+5+9 / H+t., / 8 8 9 6 0 0 0 O O O 8 m+D+/ j+H+V.t.s.H.s.H.H.s.V.V.V.V.V.U.j.P s.-+I.~+8+! 0.0.0.i.D+",
+"0.0.Z K.q.V.p.{+m+a.6 <+H+O , ) ' ' ' ' ' ' , & , A.H+m./ H+s., 7 8 9 6 0 O 0 0 O Q Q 8 5+H+] 7+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+m.8 s.|+)+&+9+! 0.0.0.i.F+",
+"0.0.Z R.B.`.M.G.m+a.a.0 !.8 / / ] ' ) ) ] ' ] ] - = 9 ] ) N 9 / 7 8 9 9 0 0 O P Q Q Q P ^.!.8 Q b.b.a.b.b.b.c.b.c.b.).c.c.c.j.q Q s.L.a+X.0+! 0.0.0.h.D+",
+"0.0.Z K.q.S.4+.+n+a.b.Q 6 6 7 ] ' ' ' ' ' ] ' ' ' ' - ' ' ' ' / / 7 7 7 9 9 7 8 6 6 O P 0 6 O 0 6 9 0 6 O O 0 0 0 O O O O P Q a.N H.1+N.9+d+! 0.0.0.i.F+",
+"0.0.Z R.B.C.4+V.m+a.a.t.j.W f.f.a.c.b.] 8 ) 6 !.!.N c.a.Q 6 f.n.O 9 n.j.P 7 f.m.b.b.n.f.O f.n.j.m.n.W a.W j.H.H.f.m.t.n.c.m.H.t.P H.N.N.~+~+~ 0.0.0.h.D+",
+"0.d.Z K.l.Z.)+E.m+^.j.x+m+l+U.f+6+w+m+c.U.a.7+r+y+v+r+f+j+7+^+<+6 m.p+r+f+c.D+U.m+r+7+f+N 7+w+p+s.p+s.U.H.b+<+7+i+i+h+w+6+5+r+r+P H.$+#+[+,+! 0.0.0.i.D+",
+"0.0.Z Q.Z.E.!+{+i+N a.t.b.f.0 O O j.^.j.f.j.O N a.b.a.^.7 N / / ' 0 O O j.f.f.f.c.c.n.f.6 b.n.m.m.n.t.n.s.m.Q W c.t.t.j.b.t.t.H.0 t.4+L.'+0+! d.0.0.i.D+",
+"0.0.Z Q.M.R.$+U.q+j.j.c.b.^.a.W P q 0 0 6 0 8 6 9 9 0 q 0 0 O P Q P q 0 O N O N P P ^.^.^.^.N Q a.N ^.^.a.a.a.a.^.^.a.^.^.^.a.a.W V.1+-+2+9+~ d.d.0.i.F+",
+"0.0.Z Q.l.@+>+@+w+x+x+x+x+x+w+x+x+y+y+x+y+x+x+x+x+y+p+x+x+x+w+y+x+x+x+w+z+x+x+p+x+w+x+y+x+x+y+x+y+x+x+x+x+x+x+x+x+y+x+x+w+y+y+x+x+w+3+R.,+#+! d.d.0.h.D+",
+"0.0.Z Q.C.P.~+-+ +.+G.%+]+u.@+-+]+Y.Y.#+ +4+R. +R..+O.M.=+$+A. +~+@+P.O.z.-+N.=+3+X.2+&+E.*+'+ +R.4+x. +~+ +-+#+4+-+ + +~+-+b+$+N.1+y..+%+,+~ d.d.0.i.F+",
+"0.d.` Q.v.R.@+2+@+*+9+*+ + + +'+{+@+)+]+a+@+y.@+++'+E.D.-+-+&+!+ +X.'+2+Z.X. +#+{+~+X.@+,+G.&+-+E.E.9+*+!+.+E.N.@+ +d+u.>+)+O.L.8+P. +W.*+)+! d.d.0.h.D+",
+"0.d.Z Q.z. +Q.,+y.9+8+++8+,+++F.Q.Q.9+W. +9+Q.++A.&+++>+Q.++[+9+9+,+^+{+9+++~+>+,+,+,+9+~+F.,+,+F.{+++*+++~+9+++9+{+]+*+{+,+{+>+W.f+W.~+c+[+! 0.0.0.i.F+",
+"0.0.R P.T.T.h+h+e+k+k+h+h+9+e+h+h+e+e+e+h+e+h+e+e+h+h+e+e+e+h+e+h+e+e+h+h+e+e+e+h+e+h+e+e+h+h+e+e+e+h+e+h+h+e+e+e+h+e+h+e+k+h+9+k+e+9+h+k+q+! 0.0.0.h.D+",
+"0.0.Z Q.h+s+y+B+s+B+y+y+y+x+x+y+y+y+y+y+y+B+y+y+x+x+y+y+y+x+x+B+y+y+x+x+y+y+y+x+x+B+y+y+y+y+x+x+x+y+y+x+y+y+y+y+x+x+B+y+x+B+x+x+y+y+y+y+y+y+! 0.0.0.i.F+",
+"0.0.^ ~ ! > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ! 0.0.0.h.D+",
+"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.i.F+",
+"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.h.C+",
+"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.h.H+",
+"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.k.H+",
+"o.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.u.H+",
+"k+l+n+n+n+n+n+n+l+n+n+l+n+n+n+n+n+n+l+n+n+l+n+n+n+n+n+n+l+n+n+l+l+l+l+l+l+l+l+l+l+l+l+l+n+n+n+n+n+n+l+n+n+l+n+n+l+n+n+l+n+n+n+n+l+n+n+l+n+n+n+n+n+l+n+n+"};
diff --git a/hdspmixer/pixmaps/mute.xpm b/hdspmixer/pixmaps/mute.xpm
new file mode 100644 (file)
index 0000000..83c71e4
--- /dev/null
@@ -0,0 +1,59 @@
+/* XPM */
+char * mute_xpm[] = {
+"13 26 30 1",
+"      c None",
+".     c #1B7B1B",
+"+     c #2F5F2F",
+"@     c #434343",
+"#     c #7A817A",
+"$     c #DE8C00",
+"%     c #872100",
+"&     c #B35A00",
+"*     c #FFCC00",
+"=     c #FFFF00",
+"-     c #700909",
+";     c #272727",
+">     c #FFCC66",
+",     c #FFFFFF",
+"'     c #001B40",
+")     c #191919",
+"!     c #000D00",
+"~     c #000500",
+"{     c #000000",
+"]     c #3D3E3D",
+"^     c #4A1B00",
+"/     c #0B0000",
+"(     c #3B0C00",
+"_     c #5C4C1C",
+":     c #5C3C00",
+"<     c #3D1600",
+"[     c #6D3E00",
+"}     c #CDCDCD",
+"|     c #0D0000",
+"1     c #8E6E1E",
+".+@@@@@@@@@+#",
+"$$$$$$$$$$$$%",
+"&*=********-;",
+"&$>,>>>>>,>-;",
+"&$>,,>>>,,>-;",
+"&$>,,>>>,,>%;",
+"&$=,>,>,>,>%;",
+"&$>,>,>,>,>-;",
+"&&>,>>,>>,>%;",
+"&$=,>>,>>,>-;",
+"&$&>>>>>>>&%;",
+"&-;;'''''';';",
+";))))))))))))",
+"!~{{{{{{{{{~]",
+"^^^^^^^^^^^^{",
+"/(_::::::::{{",
+"<[[[[[[[[[[{{",
+"<[[}[[[[[}[{{",
+"<[[}}[[[}}[|{",
+"<[1}}[[[}}[|{",
+"<[[}[}[}[}[{{",
+"<<[}[}[}[}[|{",
+"<[1}[[}[[}[{{",
+"<[<}[[}[[}<|{",
+"<{{{{{{{{{{{{",
+"{{{{{{{{{{{{{"};
diff --git a/hdspmixer/pixmaps/output.xpm b/hdspmixer/pixmaps/output.xpm
new file mode 100644 (file)
index 0000000..83e4d9f
--- /dev/null
@@ -0,0 +1,468 @@
+/* XPM */
+char * output_xpm[] = {
+"36 208 257 2",
+"      c None",
+".     c #000000",
+"+     c #080808",
+"@     c #080810",
+"#     c #001008",
+"$     c #101010",
+"%     c #181010",
+"&     c #002010",
+"*     c #101818",
+"=     c #181818",
+"-     c #002918",
+";     c #202018",
+">     c #003118",
+",     c #202020",
+"'     c #202029",
+")     c #292020",
+"!     c #202920",
+"~     c #292920",
+"{     c #292929",
+"]     c #004120",
+"^     c #293131",
+"/     c #313131",
+"(     c #104A29",
+"_     c #393939",
+":     c #394139",
+"<     c #414141",
+"[     c #20524A",
+"}     c #4A4141",
+"|     c #414A41",
+"1     c #4A4A41",
+"2     c #4A4A4A",
+"3     c #524A41",
+"4     c #4A524A",
+"5     c #525252",
+"6     c #525A52",
+"7     c #5A5A52",
+"8     c #625A4A",
+"9     c #317B20",
+"0     c #5A625A",
+"a     c #62625A",
+"b     c #626A62",
+"c     c #6A6A62",
+"d     c #6A6A6A",
+"e     c #736A62",
+"f     c #737373",
+"g     c #7B736A",
+"h     c #737B73",
+"i     c #737B7B",
+"j     c #7B7B73",
+"k     c #7B7B7B",
+"l     c #7B8373",
+"m     c #7B837B",
+"n     c #83837B",
+"o     c #838383",
+"p     c #838B83",
+"q     c #8B8B83",
+"r     c #8B8B8B",
+"s     c #8B948B",
+"t     c #94948B",
+"u     c #949494",
+"v     c #949C94",
+"w     c #949C9C",
+"x     c #9C9C94",
+"y     c #9C9C9C",
+"z     c #9CA49C",
+"A     c #9CA4A4",
+"B     c #A4A49C",
+"C     c #A4A4A4",
+"D     c #A4ACA4",
+"E     c #ACACA4",
+"F     c #ACACAC",
+"G     c #B4B4AC",
+"H     c #BDBDB4",
+"I     c #C5C5BD",
+"J     c #CDCDCD",
+"K     c #D5D5CD",
+"L     c #DEDED5",
+"M     c #DEE6DE",
+"N     c #E6E6E6",
+"O     c #EEEEEE",
+"P     c #F6EEEE",
+"Q     c #F6F6F6",
+"R     c #F6FFFF",
+"S     c #FFFFFF",
+"T     c #6633FF",
+"U     c #666600",
+"V     c #666633",
+"W     c #666666",
+"X     c #666699",
+"Y     c #6666CC",
+"Z     c #6666FF",
+"`     c #669900",
+" .    c #669933",
+"..    c #669966",
+"+.    c #669999",
+"@.    c #6699CC",
+"#.    c #6699FF",
+"$.    c #66CC00",
+"%.    c #66CC33",
+"&.    c #66CC66",
+"*.    c #66CC99",
+"=.    c #66CCCC",
+"-.    c #66CCFF",
+";.    c #66FF00",
+">.    c #66FF33",
+",.    c #66FF66",
+"'.    c #66FF99",
+").    c #66FFCC",
+"!.    c #66FFFF",
+"~.    c #990000",
+"{.    c #990033",
+"].    c #990066",
+"^.    c #990099",
+"/.    c #9900CC",
+"(.    c #9900FF",
+"_.    c #993300",
+":.    c #993333",
+"<.    c #993366",
+"[.    c #993399",
+"}.    c #9933CC",
+"|.    c #9933FF",
+"1.    c #996600",
+"2.    c #996633",
+"3.    c #996666",
+"4.    c #996699",
+"5.    c #9966CC",
+"6.    c #9966FF",
+"7.    c #999900",
+"8.    c #999933",
+"9.    c #999966",
+"0.    c #999999",
+"a.    c #9999CC",
+"b.    c #9999FF",
+"c.    c #99CC00",
+"d.    c #99CC33",
+"e.    c #99CC66",
+"f.    c #99CC99",
+"g.    c #99CCCC",
+"h.    c #99CCFF",
+"i.    c #99FF00",
+"j.    c #99FF33",
+"k.    c #99FF66",
+"l.    c #99FF99",
+"m.    c #99FFCC",
+"n.    c #99FFFF",
+"o.    c #CC0000",
+"p.    c #CC0033",
+"q.    c #CC0066",
+"r.    c #CC0099",
+"s.    c #CC00CC",
+"t.    c #CC00FF",
+"u.    c #CC3300",
+"v.    c #CC3333",
+"w.    c #CC3366",
+"x.    c #CC3399",
+"y.    c #CC33CC",
+"z.    c #CC33FF",
+"A.    c #CC6600",
+"B.    c #CC6633",
+"C.    c #CC6666",
+"D.    c #CC6699",
+"E.    c #CC66CC",
+"F.    c #CC66FF",
+"G.    c #CC9900",
+"H.    c #CC9933",
+"I.    c #CC9966",
+"J.    c #CC9999",
+"K.    c #CC99CC",
+"L.    c #CC99FF",
+"M.    c #CCCC00",
+"N.    c #CCCC33",
+"O.    c #CCCC66",
+"P.    c #CCCC99",
+"Q.    c #CCCCCC",
+"R.    c #CCCCFF",
+"S.    c #CCFF00",
+"T.    c #CCFF33",
+"U.    c #CCFF66",
+"V.    c #CCFF99",
+"W.    c #CCFFCC",
+"X.    c #CCFFFF",
+"Y.    c #FF0000",
+"Z.    c #FF0033",
+"`.    c #FF0066",
+" +    c #FF0099",
+".+    c #FF00CC",
+"++    c #FF00FF",
+"@+    c #FF3300",
+"#+    c #FF3333",
+"$+    c #FF3366",
+"%+    c #FF3399",
+"&+    c #FF33CC",
+"*+    c #FF33FF",
+"=+    c #FF6600",
+"-+    c #FF6633",
+";+    c #FF6666",
+">+    c #FF6699",
+",+    c #FF66CC",
+"'+    c #FF66FF",
+")+    c #FF9900",
+"!+    c #FF9933",
+"~+    c #FF9966",
+"{+    c #FF9999",
+"]+    c #FF99CC",
+"^+    c #FF99FF",
+"/+    c #FFCC00",
+"(+    c #FFCC33",
+"_+    c #FFCC66",
+":+    c #FFCC99",
+"<+    c #FFCCCC",
+"[+    c #FFCCFF",
+"}+    c #FFFF00",
+"|+    c #FFFF33",
+"1+    c #FFFF66",
+"2+    c #FFFF99",
+"3+    c #FFFFCC",
+"4+    c #FFFFFF",
+"5+    c #000000",
+"6+    c #0D0D0D",
+"7+    c #1A1A1A",
+"8+    c #282828",
+"9+    c #353535",
+"0+    c #434343",
+"a+    c #505050",
+"b+    c #5D5D5D",
+"c+    c #6B6B6B",
+"d+    c #787878",
+"e+    c #868686",
+"f+    c #939393",
+"g+    c #A1A1A1",
+"h+    c #AEAEAE",
+"i+    c #BBBBBB",
+"j+    c #C9C9C9",
+"k+    c #D6D6D6",
+"l+    c #E4E4E4",
+"m+    c #F1F1F1",
+"n+    c #FFFFFF",
+"o+    c #0099FF",
+"p+    c #00CCFF",
+"q+    c #00FFFF",
+"r+    c #3300FF",
+"s+    c #3333FF",
+"t+    c #3366FF",
+"u+    c #3399FF",
+"v+    c #33CCFF",
+"w+    c #33FFFF",
+"x+    c #6600FF",
+"y+    c #6633FF",
+"z+    c #6666FF",
+"A+    c #6699FF",
+"B+    c #66CCFF",
+"C+    c #66FFFF",
+"D+    c #9900FF",
+"E+    c #9933FF",
+"F+    c #9966FF",
+"G+    c #9999FF",
+"H+    c #99CCFF",
+"2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 { ",
+"j g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g / ",
+"g F D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D a ",
+"e C r m m m m m m m m m m m m m m m m m m m m m m m m m m m m m r x z 6 ",
+"e C o < : _ / / ^ ^ { { { { { { { { { { { { { { { { ^ ^ / / _ : < z A 6 ",
+"e C p : / / ^ { { { ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' { { { ^ ^ / < D D 6 ",
+"e A p _ / { { ' , ; = ; = ; = ; = ; = ; = ; = ; = ; ; , ' { { / _ F D 6 ",
+"e A p / ^ { ' ; = = * * * * * * * * * * * * * * * * * = ; ' { ^ / F D 6 ",
+"e A p / { ' ; = * $ $ @ @ @ @ @ @ @ @ @ @ @ @ @ @ $ * * = ; ' { / F D 6 ",
+"e A p ^ { ' = * $ @ + + + + + + + + + + + + + + + + @ $ * = ' { ^ F D 6 ",
+"e A p ^ { , = * $ @ + + + + + + + + + + + + + + + + @ $ * = , { ^ F D 6 ",
+"e A p / { , = * $ @ + + + + + + + + + + + + + + + + @ % * = , { ^ F D 6 ",
+"e A p / { ' ; = * $ $ @ @ @ @ @ @ @ @ @ @ @ @ @ @ $ $ * = ; ' { / F D 6 ",
+"e A p / ^ { ' ; = = * * * * * * * * * * * * * * * * = = = ' { ^ / F D 5 ",
+"e A p _ ^ { { ' , ; = = = = = = = = = = = = = = ; = ; , ' { { / _ F D 5 ",
+"e A r < / / ^ { { { ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' { { { ^ / / : G D 5 ",
+"e A v < < _ / / ^ ^ { { { { { { { { { { { { { { { { ^ ^ / / _ < < G D 5 ",
+"e A A F H H H H H H H H H H H H H H H H H H H H H H H H H H H H H G C 5 ",
+"e z A D D F F F F F F F F F F F F F F F F F F F F F F F F F F F F C A 5 ",
+"e A s b / / / / / / / / / / / / / / / / / / / / / / / / / / / / b s y 5 ",
+"e z r 2 7 7 5 5 2 7 4 5 6 2 5 5 5 4 2 2 4 4 4 4 4 6 4 2 5 4 5 2 2 v z 5 ",
+"e z r 5 4 7 5 4 7 5 4 4 4 6 5 7 5 7 4 4 4 2 6 2 4 7 6 6 4 4 7 2 / z z 5 ",
+"e z r 6 4 5 4 5 2 5 2 7 6 2 2 7 2 7 4 4 2 5 5 5 4 4 4 4 5 5 7 | ! z z 5 ",
+"e z r 6 2 4 4 6 6 2 2 6 2 6 2 2 4 5 6 5 4 4 7 2 4 4 2 4 2 2 2 < { z z 5 ",
+"e z r 6 6 5 2 5 5 2 2 5 6 6 4 7 0 7 b j n j j l n j k g a 5 7 < { z z 5 ",
+"e z r 6 7 2 4 2 { , / < 2 4 2 2 0 4 c . . . . . . . . . . 2 5 2 ! z z 5 ",
+"e z r 6 7 7 4 < , g } 4 4 7 4 7 a 4 0 . . . . . . . . . . | 2 2 ! z z 5 ",
+"e z r 6 6 4 7 1 ~ 8 { 0 0 5 6 2 6 4 a . & # & & & # & - . | 4 : ~ z z 5 ",
+"e z q 6 5 6 2 2 { 3 ) b 7 4 7 4 a 4 7 . & & - - - > - ] . : 4 | { z z 5 ",
+"e z r 6 7 2 4 2 , 3 ) c b 7 7 2 0 7 c . > > ] - > ] ] ( . < 2 : ! z z 5 ",
+"e z r 6 6 4 2 2 { 3 ) e 0 2 2 2 a 4 0 . - > ] ] > ] ] ( . < 4 2 { z z 5 ",
+"e z r 6 6 2 2 < ~ 3 ) b 0 7 2 4 6 2 a . - - > > ] > ] ( . < | 2 ! z y 5 ",
+"e z r 6 4 5 4 : ~ 3 ) e 6 5 4 5 6 2 b . - > ] > > ] ] ( . | | 2 , y z 5 ",
+"e z p 6 4 2 2 | ! 3 ) b 6 7 4 4 7 5 b . - > > ] > ] ] ( . : | : ~ y y 5 ",
+"e z p 6 4 6 2 2 { 3 ) c 6 7 4 2 0 6 b . - > > > ] > ] ( . : 4 | { y y 5 ",
+"e z r 6 7 4 6 1 { 3 ) g 0 4 5 4 6 4 b . - > > > > ] ] ( . 2 < | ~ y y 5 ",
+"e z p 6 5 4 5 : ! 3 ) b b 2 2 4 7 6 0 . - > ] > > ] ] ( . | 5 : ! y y 5 ",
+"e z p 6 6 4 5 | { 3 ) c 0 4 6 4 a 2 a . - - > ] > > ] ( . | 2 | { y y 5 ",
+"e z p 5 4 5 4 2 { 3 ) g 7 2 5 4 0 4 a . - - ] ] > > ] ( . < 2 : ! y y 5 ",
+"e z p 6 2 7 6 2 { 3 ) c 7 5 5 2 5 7 7 . - - > ] > ] ] ( . : 5 : ! y y 5 ",
+"e z p 5 4 7 6 | { 3 ) b 0 2 5 4 5 7 c . - > > - ] > ] ( . | 2 | ! y y 5 ",
+"e z p 6 7 5 2 | { 3 ) b a 2 7 2 0 6 b . - - > > ] > ] ( . : | 2 , y y 5 ",
+"e z p 5 5 2 2 2 , 3 ) c b 2 5 7 7 5 a . - > > > > > ] ( . < 4 2 , y y 5 ",
+"e z p 5 7 2 4 < , 3 ) b 7 4 7 4 a 7 7 . > > ] ] ] > ] ( . 2 2 | { y y 5 ",
+"e z p 5 2 5 4 : ! 3 ) b 6 7 2 6 5 5 0 . > > > > > > ] ( . < 4 < { y y 5 ",
+"e z p 5 4 6 2 < ~ 3 ) e 0 4 5 4 7 4 a . - > ] > ] > ] ( . < | < ! y y 5 ",
+"e z p 5 2 6 7 2 ! 3 ) a b 5 2 7 6 7 b . - - > > > > ] ( . | | | ~ y y 5 ",
+"e z p 5 4 4 6 1 , 3 ) b 0 4 2 4 a 4 a . - - > > > ] ] ( . 2 | < , y y 5 ",
+"e z p 5 2 7 2 2 { 3 ) b 6 2 2 6 0 2 b . - - > > ] ] ] ( . < | 2 , y y 5 ",
+"e z p 5 4 4 6 2 { 3 ) e 0 4 2 5 6 5 a . > > ] > > > ] ( . | | < { y y 5 ",
+"e y p 5 4 7 4 < ~ 3 ) e 0 6 2 7 5 7 b . - > > ] > > ] ( . < 4 : { y y 5 ",
+"e y p 5 5 4 7 : ! 3 ) c b 2 2 4 5 2 a . - - ] ] > ] ] ( . 2 5 < { y y 5 ",
+"e y p 5 4 6 5 : ~ 3 ) a 0 4 2 4 6 4 b . > - ] > > > ] ( . | 4 < , y w 5 ",
+"e y p 5 4 7 7 < ! 3 ) b a 6 4 7 6 4 c . - > > - ] > ] ( . : 2 < ! w y 5 ",
+"e y p 5 5 4 4 < ~ 3 ) g 6 7 5 6 0 4 0 . - - > > > > > ( . 2 2 | ! y y 5 ",
+"e y p 5 2 6 5 | ! 3 ) c 6 5 7 2 5 7 0 . - ] > > > > ] ( . : 2 2 ~ w w 5 ",
+"e y p 5 6 4 7 2 , 3 ) c b 4 4 2 0 4 a . - - ] > ] > ] ( . : 2 2 { w w 5 ",
+"e y p 5 2 4 4 2 ~ 3 ) c 0 5 6 5 6 4 c . - - > > > > ] ( . : 4 < ~ w w 4 ",
+"e y p 5 5 5 6 < ! 3 ) b 6 4 4 7 0 7 a . - > > > > > ] ( . 2 | < , w w 4 ",
+"e y p 5 4 5 7 | , 3 ) c a 4 6 4 a 4 a . - > ] > > ] ] ( . : 5 < , w w 5 ",
+"e y p 5 6 6 4 < ! 3 ) c b 5 2 4 4 2 0 . - ] > > > ] ] ( . | 2 2 { w w 4 ",
+"e y p 5 4 4 4 | { 3 ) b 0 5 5 4 0 2 7 . - - > ] - > ] ( . : 4 < { w w 4 ",
+"e y p 5 2 2 7 : { 3 ) a a 5 5 4 6 4 a . - > ] > > > ] ( . 2 4 < { w w 4 ",
+"e y p 5 4 2 4 | { 3 ) e 6 6 6 7 6 5 0 . - - ] > ] ] ] ( . : 2 | ! w w 4 ",
+"e y p 5 4 5 7 2 { 3 ) b b 2 2 4 6 4 0 . - - > ] ] > ] ( . 2 2 < ! w w 4 ",
+"e y p 5 4 4 5 | { 3 ) b a 4 2 7 a 6 0 . - > > - > ] ] ( . 2 5 < ~ v v 4 ",
+"e y o 5 4 4 4 < { 3 ) a a 4 2 2 0 4 0 . - > > ] - > ] ( . | 5 : { v w 4 ",
+"e y o 5 4 5 7 : ~ 3 ) e a 4 5 4 6 2 c . - - ] > > > ] ( . | < | ~ v v 4 ",
+"e w o 5 2 6 7 | { 3 ) c 7 7 2 6 6 2 b . - > ] > > > ] ( . 2 | 2 { v v 4 ",
+"e w o 5 4 5 2 | ! 3 ) g 6 4 2 2 a 7 0 . - - ] > > > ] ( . | 5 2 ! v v 4 ",
+"e x o 5 5 2 6 < { 3 ) e a 7 4 6 5 6 7 . - > - > > > ] ( . : | | ~ v v 4 ",
+"e w o 5 7 5 4 : ~ 3 ) c 6 7 5 5 7 2 0 . - > > > > ] ] ( . 2 5 2 { v v 4 ",
+"e w o 5 7 6 5 < { 3 ) a b 6 5 4 0 5 a . > - > > > > ] ( . < 2 < ~ v v 4 ",
+"e w o 5 4 5 5 2 { 3 ) c 0 4 5 5 0 4 c . - - > ] ] > ] ( . | | | { v v 4 ",
+"e x o 5 2 4 7 2 , 3 ) a b 5 2 4 0 2 b . - - ] > > > ] ( . 2 2 < { v v 4 ",
+"e x o 5 5 4 2 2 { 3 ) a 6 4 7 6 a 4 b . > - > > > ] ] ( . | 4 | , v v 4 ",
+"e w o 5 2 4 5 < ~ 3 ) b 6 4 5 7 7 2 0 . - > ] > ] > ] ( . 2 4 | ! v v 4 ",
+"e x o 5 5 2 2 | ! 3 ) b 6 6 4 4 0 4 0 . - - ] ] ] ] ] ( . | | 2 ! v v 4 ",
+"e x o 5 7 2 7 2 ! 3 ) a b 5 4 4 a 7 a . & > ] > > ] ] ( . 2 | : { v v 4 ",
+"e w o 5 7 2 4 2 ! 3 ) a 0 6 4 6 5 7 7 . > > > > ] ] ] ( . | 4 < ~ v v 4 ",
+"e w o 5 5 4 5 | ! 3 ) c 6 6 5 4 7 5 0 . - > > > > > ] ( . < | | { v v 4 ",
+"e v o 5 7 4 6 2 ! 3 ) a b 4 7 4 5 5 b . - - ] ] ] ] ] ( . < 2 2 { v v 4 ",
+"e v o 5 4 6 6 2 { 3 ) a b 4 5 7 0 5 0 . > > > > ] ] ] ( . | 4 < , v v 4 ",
+"e v o 5 7 2 2 | ! 3 ) c a 5 4 2 a 6 0 . - - > - > ] ] ( . | < 2 ! v v 4 ",
+"e v o 5 6 2 2 < ~ 3 ) e 0 5 7 7 5 4 c . - - > > > ] ] ( . : 5 2 ~ v v 4 ",
+"e v o 5 4 4 6 < { 3 ) c a 4 5 7 7 6 b . - > > ] > > ] ( . | 2 2 ! v v 4 ",
+"e v o 5 6 4 2 | , 3 ) f 6 5 4 4 6 5 a . - - ] > > > ] ( . | 2 | ~ v v 4 ",
+"e v o 4 4 5 6 | { 3 ) b a 4 7 2 0 5 a . - > > ] > ] ] ( . < 2 2 ! v v 4 ",
+"e v o 5 5 6 4 | { 3 ) b 7 4 4 2 0 4 b . - > > > > ] ] ( . | | < , v u 4 ",
+"e v o 5 4 4 5 2 ! 3 ) b 0 6 2 7 a 7 b . - - ] > - > ] ( . | 4 2 , u v 4 ",
+"e v o 4 4 5 5 < { 3 ) c 0 4 5 6 0 2 a . > > > ] > ] ] ( . | 5 | ! u u 4 ",
+"e v o 5 5 5 7 2 ~ 3 ) g 6 2 2 4 0 2 0 . - > > ] > ] ] ( . 2 2 2 , v u 4 ",
+"e v o 4 7 2 6 : ~ 3 ) e 0 5 2 5 0 5 b . - - ] > ] ] ] ( . < | | ! u u 4 ",
+"e v m 4 2 2 2 : ~ 3 ) b 0 5 4 7 5 4 b . - - ] > > > ] ( . < 4 | ! u u 4 ",
+"e v m 5 4 2 4 | ! 3 ) e a 4 4 4 a 2 0 . - - > > > > ] ( . < 4 | { u u 4 ",
+"e v m 4 5 4 5 2 , 3 ) b 7 2 4 2 0 4 b . > > ] > > > ] ( . | | 2 ~ u u 4 ",
+"e v m 4 4 4 6 2 ! 3 ) b 6 6 4 5 a 4 0 . - > > ] > ] ] ( . 2 2 | , u u 4 ",
+"e v m 4 4 4 5 | ! 3 ) b 6 4 6 6 6 4 a . - > > ] > > ] ( . | 5 < ~ u u 4 ",
+"e v m 4 5 5 7 | ! 3 ) b 6 7 6 6 6 5 a . - - > ] > > > ( . < 4 2 , u u 4 ",
+"e v m 4 4 2 4 : { 3 ) c 7 7 4 4 5 7 0 . - - ] > > > ] ( . | | | { u u 4 ",
+"e v m 4 6 7 5 2 ! 3 ) b 6 5 4 5 0 6 b . - > ] > > ] ] ( . < 5 | ~ u u 4 ",
+"e v m 4 5 4 7 < ! 3 ) g 7 4 4 7 7 5 b . - - > ] > ] ] ( . 2 < 2 ! u u 4 ",
+"e v m 4 6 2 5 | { 3 ) c 0 2 6 7 a 4 0 . - - ] ] > ] ] ( . : | | ~ u u 4 ",
+"e u m 4 2 4 6 < { 3 ) c 7 4 2 7 6 4 b . - > > - ] ] ] ( . | 4 | { u u 4 ",
+"e v m 4 2 7 5 2 ! 3 ) e 6 5 4 5 a 2 c . - > > > ] - ] ( . < 5 2 { u u 4 ",
+"e u m 4 5 2 4 < , 3 ) c a 2 4 4 6 5 b . > > ] ] ] > ] ( . 2 5 < { u u 4 ",
+"e u m 4 4 4 4 | ~ 3 ) b 0 4 4 6 a 6 0 . - > > - ] > ] ( . 2 < | ~ u u 4 ",
+"e v m 4 4 6 4 | , 3 ) b 0 7 4 6 a 4 0 . - > ] ] ] > ] ( . : | | , u u 2 ",
+"e u m 4 6 2 6 : ! 3 ) b 6 4 6 2 7 5 0 . - - > > > > ] ( . 1 5 | , u u 4 ",
+"e u m 4 2 4 4 : { 3 ) c a 5 5 4 a 4 0 . - > > > > ] ] ( . < | | { u u 4 ",
+"e u m 4 4 2 2 | ~ 3 ) a 0 5 2 2 a 5 0 . - > > > > > ] ( . 2 5 | { u u 2 ",
+"e u m 4 4 2 2 | ! 3 ) c 0 4 5 7 5 2 a . - - > > > - ] ( . 2 4 < { u u 2 ",
+"e u m 4 6 6 4 : { 3 ) b 7 2 2 4 6 4 a . - - ] > > ] ] ( . : 5 2 , u u 2 ",
+"e u m 4 4 4 5 < { 3 ) c b 5 6 4 7 4 a . - > > > ] ] ] ( . 2 < < ~ t t 2 ",
+"e u m 4 5 7 4 2 ! 3 ) c b 5 6 4 0 2 c . - ] ] > ] > ] ( . 2 | | ! t t 2 ",
+"e u m 4 5 4 2 2 ~ 3 ) c a 5 6 4 0 4 c . > > > > - > ] ( . : 4 < ! t t 2 ",
+"e u m 4 6 5 4 | { 3 ) b 0 2 4 4 0 4 0 . - - ] > ] > > ( . | 2 | { t t 2 ",
+"e u m 4 4 2 5 : { 3 ) e a 2 4 4 7 7 a . - > ] > > > ] ( . : 4 : { t t 2 ",
+"e u m 4 7 4 7 | , 3 ) f 6 6 4 2 0 6 a . - - > > > ] ] ( . 2 5 2 ! s s 2 ",
+"e u m 4 4 2 6 | , 3 ) e a 4 4 4 6 4 b . > ] > > > ] ] ( . : 4 2 , s t 2 ",
+"e u m 4 4 2 5 < , 3 ) c 7 2 7 2 a 2 b . - > ] > > > ] ( . : | 2 ! t s 2 ",
+"e u m 4 7 6 2 | ! 3 ) e 0 2 4 7 7 6 7 . - > > > ] > ] ( . | 2 2 , t s 2 ",
+"e u m 4 7 4 6 : ~ 3 ) a 0 2 5 5 0 6 c . - > > ] ] ] ] ( . | 4 : ! s s 2 ",
+"e u m 4 4 5 5 : { 3 ) c 6 2 4 4 6 5 0 . - > > ] > ] ] ( . | < 2 ~ s s 2 ",
+"e u m 4 5 5 6 | , 3 ) b b 2 4 5 5 5 a . > > > > > > ] ( . | 4 2 { s s 2 ",
+"e u m 4 7 4 6 | ~ 3 ) c a 4 4 2 a 5 b . > - > ] ] > ] ( . 2 | 2 ~ s s 2 ",
+"e u m 4 2 6 7 : ! 3 ) b 0 2 6 4 0 4 c . > > > > ] > ] ( . : | | ! s s 2 ",
+"e t m 4 6 2 5 2 ~ 3 ) b 0 2 2 4 6 4 c . - > > > ] > ] ( . : 2 < , s s 2 ",
+"e t m 4 2 4 4 2 ! 3 ) a a 5 4 5 a 4 b . - > ] > ] > ] ( . < 4 | { s s 2 ",
+"e t m 4 4 5 4 | { 3 ) e 6 5 7 5 6 5 b . > > ] > ] ] ] ( . < 5 2 ~ s s 2 ",
+"e t m 4 2 5 7 : { 3 ) a b 4 5 6 0 4 0 . > > ] ] > > ] ( . 2 < < ! s s 2 ",
+"e t m 4 5 6 7 | ! 3 ) b a 2 4 4 5 4 c . & - > > ] > ] ( . | 5 : ! s s 2 ",
+"e t m 4 2 7 4 | ~ 3 ) c b 7 2 4 0 6 a . > > > ] ] ] ] ( . : 4 : , s s 2 ",
+"e t m 4 2 5 4 : { 3 ) a b 5 2 5 6 6 0 . > > > > ] ] ] ( . 2 | < { s s 2 ",
+"e s m 4 4 5 2 | { 3 ) b 6 2 5 4 5 7 b . - > > > > ] ] ( . 2 | : { s s 2 ",
+"e t k 4 5 7 6 2 { 3 ) e b 5 4 6 a 4 b . - - > ] ] ] ] ( . 2 | < { s s 2 ",
+"e t s 4 2 6 7 4 { 3 ) a a 7 5 2 4 6 0 . - > ] ] > > ] ( . < | 2 { s s 2 ",
+"e s s 4 4 5 5 5 ! 3 ) b 7 2 4 7 4 7 0 . - > > > > > ] ( . < 4 : ! s s 2 ",
+"e s s 4 5 4 4 2 { 3 ) b b 5 6 5 2 4 a . - > > ] > ] ] ( . < 5 | ~ s s 2 ",
+"e s s 2 5 2 2 5 ~ 3 ) b 0 4 5 5 6 6 7 . > > > > ] > ] ( . 2 | | { s s 2 ",
+"e s s 2 5 5 5 4 { 3 ) a 0 2 4 4 6 4 c . - - ] > > ] ] ( . 2 4 | { s r 2 ",
+"e s r 2 5 5 7 2 ! 3 ) b a 2 7 2 4 4 0 . - > > ] > ] ] ( . 1 | | ~ s s 2 ",
+"e s r 2 7 5 5 7 , 3 ) c b 2 5 5 6 2 0 . - > > ] ] ] ] ( . 2 4 : { r r 2 ",
+"e s r 2 5 4 5 4 { 3 ) c a 4 2 7 2 2 a . - - ] > > ] ] ( . : | 2 ~ r r 2 ",
+"e s r 2 5 2 2 7 ~ 3 ) c 7 2 4 4 2 4 0 . - > ] > ] > ] ( . 2 2 | ~ r r 2 ",
+"e s r 2 2 4 4 7 ! 3 ) b 7 2 2 4 4 7 7 . - > > > ] > ] ( . 2 2 | { r r 2 ",
+"e s r 2 5 7 2 4 { 3 ) c b 7 4 4 5 6 0 . - > > - > > ] ( . < 4 : , r r 2 ",
+"e s r 2 2 4 4 6 ~ 3 ) c a 2 6 6 2 7 a . > - ] > > > ] ( . < 2 2 ~ r r 2 ",
+"e s r 2 2 5 4 2 ! 3 ) b 6 7 2 6 2 5 0 . > > > > > > ] ( . < 4 < { r r 1 ",
+"e s r 2 4 2 5 4 ~ 3 ) c 0 4 4 2 2 4 b . - > > > ] > ] ( . : 2 < , r r 2 ",
+"e s r 2 7 4 5 4 ! 3 ) c b 4 2 4 4 7 b . - - ] > > > ] ( . < 5 : { r r 2 ",
+"e s r 2 4 6 5 5 ! 3 ) a a 5 4 5 4 6 0 . - > > > - ] ] ( . | 2 | ~ r r 1 ",
+"e r r 2 4 4 6 2 ! 3 ) c 6 7 4 4 2 4 0 . > - > ] > > ] ( . : | | ! r r 1 ",
+"e s r 2 6 6 2 7 ~ 3 ) c 0 4 2 5 2 7 0 . - > ] > > > ] ( . | 5 < , r r 1 ",
+"e r r 2 5 6 6 4 { 3 ) e b 7 4 5 4 2 0 . > - ] > > > ] ( . | | | ~ r r 1 ",
+"e r r 2 4 6 4 4 ! 3 ) e b 4 5 4 2 7 b . - > ] ] > > ] ( . 2 | | ! r r | ",
+"e r p 2 6 5 5 4 ~ 3 ) c 0 4 4 5 2 4 b . - - ] > ] ] > ( . 2 2 | { p p | ",
+"e r p 2 5 7 4 7 { 3 ) e b 6 2 2 6 5 0 . - - > > > ] ] ( . | 4 : , p r | ",
+"e r p 2 7 4 4 6 , 3 ) c 6 4 2 4 4 6 0 . - > ] > > > ] ( . : < 2 ~ r p 1 ",
+"e r p 1 5 6 6 5 { 3 ) g 6 4 7 4 2 5 a . - - > > ] > ] ( . | 4 : { p p | ",
+"e r p 1 4 6 5 2 ! 3 ) b 0 2 4 6 4 5 b . - - > > ] ] > ( . : | : ! p p | ",
+"e r p 1 4 5 4 6 { 3 ) c b 4 6 6 4 6 c . > > ] > > > ] ( . : | | , p p | ",
+"e r p 1 5 5 4 5 ! 3 ) e 6 4 2 7 4 7 a . - > ] > ] > ] ( . 2 2 : ~ p p | ",
+"e r p 1 7 6 6 2 ! 3 ) b a 5 2 5 5 2 0 . - > ] > ] ] ] ( . : < | { p p | ",
+"e r p 1 2 2 7 4 ~ 3 ) b 6 5 5 5 6 7 0 . > ] ( ( ( ( ( ( . | 2 < ~ p p | ",
+"e p p | 4 5 6 5 / _ = e 7 2 7 7 7 4 c . ] ( [ : 9 [ | : . < 2 : ! p p | ",
+"e p p | 7 4 2 2 4 ) + j b 5 4 4 4 4 5 . . . . . . . . . . : | < ! p p | ",
+"e p p | 5 5 5 5 6 g n n 6 4 5 5 5 2 4 | : _ < / / _ / / _ < 4 2 ~ p p | ",
+"e p p | 2 4 4 6 6 6 c 0 7 2 6 6 2 7 4 5 | 2 < 2 | | 2 2 < 2 4 2 ~ p p | ",
+"e p p | 5 4 5 6 6 4 7 7 4 7 2 4 4 4 7 5 2 5 4 4 2 2 4 5 4 4 4 : { p p | ",
+"e p p 5 4 4 _ _ : / / _ _ < : _ _ : : : _ : _ : / _ < / : < _ / ; p o | ",
+"e p o h _ * $ @ * @ $ $ $ $ $ $ $ % $ $ $ @ $ $ @ $ $ $ % $ $ $ $ p p | ",
+"e p p o o o o p p p p o o p o p o o o o p p o o p o o o o p o p o o o < ",
+"e p m k i i i i i i i i i i i i i i i i i i i i i i k i i i k k m o o | ",
+"e p f b b b b b b a b b b b b b a b b b a b b b b a a b a b a b f m o < ",
+"e p d < : _ / / ^ ^ { { { { { { { { { { { { { { { { ^ ^ / / / : < m p | ",
+"e p d : / ^ ^ { { { ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' { { { ^ / / : s r < ",
+"e p d / ^ ^ { ' , ; = ; = ; = ; = ; = ; = ; = ; = ; ; , ' { ^ / : u s < ",
+"e p d / ^ { ' ; = * * * * * * * * * * * * * * * * * = = ; ' { ^ / t r | ",
+"e p d ^ { ' ; = * * $ @ @ @ @ @ @ @ @ @ @ @ @ @ @ $ $ * = ; ' { / t r < ",
+"e p d ^ { ' = * $ @ + + + + + + + + + + + + + + + + @ $ * = , { ^ t r < ",
+"e o d { { , = * $ @ + + + + + + + + + + + + + + + + @ $ * = , { ^ t r | ",
+"e o d ^ { , = * % @ + + + + + + + + + + + + + + + + @ $ * = , { / t r < ",
+"e o d ^ { ' ; = * $ $ @ @ @ @ @ @ @ @ @ @ @ @ @ @ $ $ * = ; ' { / t r | ",
+"e o d / ^ { ' ; = = * * * * * * * * * * * * * * * * = = ; ' { ^ / t r < ",
+"e o d / ^ { { ' , = ; = = = = = = = = = = = = = = ; ; , ' { { / _ t r < ",
+"e o f : / / ^ { { { ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' { { { ^ / / : u r < ",
+"e o i < < _ / / ^ ^ { { { { { { { { { { { { { { { { ^ ^ ^ / _ < < y r < ",
+"e o p s z B D B B B B B B B B B B B B B B B B B B B B B B B C B C v p < ",
+"e o o r s s s s s s s s t t s s s s s s s s s s t t s t s s t s s p o < ",
+"e o m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m < ",
+"e o m : _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ m m < ",
+"e o m I K I I I I I I I I I I I I I I I I I I I I I I I I I I I I t m < ",
+"e o m I N R S S S S S S S S S S S S S S S S S S S S S S S S S S S 0 m < ",
+"e o m E L Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q R Q O : m < ",
+"e o m G L P O O O O O O O O O O O O O O O O O O O O O O O O O O L } m < ",
+"e m m E L P O O O O O O O O O O O O O O O O O O O O O O O O P O L | m : ",
+"e m m G L P O O O O O O O O O O O O O O O O O O O O O O O O P O L 1 m : ",
+"e m m E L P O O O O O O O O O O O O O O O O O O O O O O O O P O L 1 m : ",
+"e m m G L Q O O O O O O O O O O O O O O O O O O O O O O O O P O L 1 m : ",
+"e m m E L P O O O O O O O O O O O O O O O O O O O O O O O O P O L 1 m : ",
+"e m m G L P O O P P P P P P P P P P P P P P P P P P P P P P P O M } m < ",
+"e m m E L J L L L L L L L L L L L L L L L L L L L L L L L L M J E 1 k : ",
+"e m m H t e b c b b b b b b b b b b b b b b b b b b b b b b c a 0 1 m : ",
+"e m k c ; @ + + + + + + + + + + + + + + + + + + + + + + + + + + + @ m : ",
+"e m m k k m m k m m m m m k k k m k m m m m k m m k m m k m m k k k m : ",
+"e d 0 0 0 0 0 0 0 0 0 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 / ^ { { { { { { ^ { { ^ { { ^ { { ^ { { { { ^ { { ^ { { { { { ^ { { { "};
diff --git a/hdspmixer/pixmaps/over.xpm b/hdspmixer/pixmaps/over.xpm
new file mode 100644 (file)
index 0000000..6b0e7e3
--- /dev/null
@@ -0,0 +1,273 @@
+/* XPM */
+char * over_xpm[] = {
+"30 13 257 2",
+"      c None",
+".     c #000000",
+"+     c #080000",
+"@     c #080808",
+"#     c #080810",
+"$     c #001008",
+"%     c #101010",
+"&     c #181010",
+"*     c #002010",
+"=     c #101818",
+"-     c #181818",
+";     c #201818",
+">     c #002918",
+",     c #202018",
+"'     c #003118",
+")     c #202020",
+"!     c #202029",
+"~     c #292020",
+"{     c #202920",
+"]     c #392020",
+"^     c #292920",
+"/     c #292929",
+"(     c #004120",
+"_     c #293131",
+":     c #412920",
+"<     c #313129",
+"[     c #313131",
+"}     c #104A29",
+"|     c #393939",
+"1     c #394139",
+"2     c #414141",
+"3     c #20524A",
+"4     c #414152",
+"5     c #4A4141",
+"6     c #414A41",
+"7     c #4A4A41",
+"8     c #4A4A4A",
+"9     c #524A41",
+"0     c #4A524A",
+"a     c #525252",
+"b     c #734A29",
+"c     c #5A524A",
+"d     c #525A52",
+"e     c #5A5A52",
+"f     c #625A4A",
+"g     c #317B20",
+"h     c #5A625A",
+"i     c #62625A",
+"j     c #6A6252",
+"k     c #626A62",
+"l     c #6A6A62",
+"m     c #6A6A6A",
+"n     c #736A62",
+"o     c #737373",
+"p     c #7B736A",
+"q     c #737383",
+"r     c #9C7329",
+"s     c #737B73",
+"t     c #737B7B",
+"u     c #7B7B73",
+"v     c #7B7B7B",
+"w     c #AC6A5A",
+"x     c #7B8373",
+"y     c #7B837B",
+"z     c #83837B",
+"A     c #838383",
+"B     c #838B83",
+"C     c #8B8B83",
+"D     c #8B8B8B",
+"E     c #9C8B73",
+"F     c #8B948B",
+"G     c #94948B",
+"H     c #949494",
+"I     c #949C94",
+"J     c #949C9C",
+"K     c #9C9C94",
+"L     c #9C9C9C",
+"M     c #B49C83",
+"N     c #9CA49C",
+"O     c #9CA4A4",
+"P     c #A4A49C",
+"Q     c #A4A4A4",
+"R     c #C5A45A",
+"S     c #A4ACA4",
+"T     c #ACACA4",
+"U     c #ACACAC",
+"V     c #B4B4AC",
+"W     c #C5B48B",
+"X     c #BDBDB4",
+"Y     c #C5C5BD",
+"Z     c #D5C59C",
+"`     c #CDCDCD",
+" .    c #D5D5CD",
+"..    c #E6D5A4",
+"+.    c #F6CDCD",
+"@.    c #DEDED5",
+"#.    c #DEE6DE",
+"$.    c #E6E6E6",
+"%.    c #EEEEEE",
+"&.    c #F6EEEE",
+"*.    c #F6F6F6",
+"=.    c #F6FFFF",
+"-.    c #FFFFFF",
+";.    c #66FF00",
+">.    c #66FF33",
+",.    c #66FF66",
+"'.    c #66FF99",
+").    c #66FFCC",
+"!.    c #66FFFF",
+"~.    c #990000",
+"{.    c #990033",
+"].    c #990066",
+"^.    c #990099",
+"/.    c #9900CC",
+"(.    c #9900FF",
+"_.    c #993300",
+":.    c #993333",
+"<.    c #993366",
+"[.    c #993399",
+"}.    c #9933CC",
+"|.    c #9933FF",
+"1.    c #996600",
+"2.    c #996633",
+"3.    c #996666",
+"4.    c #996699",
+"5.    c #9966CC",
+"6.    c #9966FF",
+"7.    c #999900",
+"8.    c #999933",
+"9.    c #999966",
+"0.    c #999999",
+"a.    c #9999CC",
+"b.    c #9999FF",
+"c.    c #99CC00",
+"d.    c #99CC33",
+"e.    c #99CC66",
+"f.    c #99CC99",
+"g.    c #99CCCC",
+"h.    c #99CCFF",
+"i.    c #99FF00",
+"j.    c #99FF33",
+"k.    c #99FF66",
+"l.    c #99FF99",
+"m.    c #99FFCC",
+"n.    c #99FFFF",
+"o.    c #CC0000",
+"p.    c #CC0033",
+"q.    c #CC0066",
+"r.    c #CC0099",
+"s.    c #CC00CC",
+"t.    c #CC00FF",
+"u.    c #CC3300",
+"v.    c #CC3333",
+"w.    c #CC3366",
+"x.    c #CC3399",
+"y.    c #CC33CC",
+"z.    c #CC33FF",
+"A.    c #CC6600",
+"B.    c #CC6633",
+"C.    c #CC6666",
+"D.    c #CC6699",
+"E.    c #CC66CC",
+"F.    c #CC66FF",
+"G.    c #CC9900",
+"H.    c #CC9933",
+"I.    c #CC9966",
+"J.    c #CC9999",
+"K.    c #CC99CC",
+"L.    c #CC99FF",
+"M.    c #CCCC00",
+"N.    c #CCCC33",
+"O.    c #CCCC66",
+"P.    c #CCCC99",
+"Q.    c #CCCCCC",
+"R.    c #CCCCFF",
+"S.    c #CCFF00",
+"T.    c #CCFF33",
+"U.    c #CCFF66",
+"V.    c #CCFF99",
+"W.    c #CCFFCC",
+"X.    c #CCFFFF",
+"Y.    c #FF0000",
+"Z.    c #FF0033",
+"`.    c #FF0066",
+" +    c #FF0099",
+".+    c #FF00CC",
+"++    c #FF00FF",
+"@+    c #FF3300",
+"#+    c #FF3333",
+"$+    c #FF3366",
+"%+    c #FF3399",
+"&+    c #FF33CC",
+"*+    c #FF33FF",
+"=+    c #FF6600",
+"-+    c #FF6633",
+";+    c #FF6666",
+">+    c #FF6699",
+",+    c #FF66CC",
+"'+    c #FF66FF",
+")+    c #FF9900",
+"!+    c #FF9933",
+"~+    c #FF9966",
+"{+    c #FF9999",
+"]+    c #FF99CC",
+"^+    c #FF99FF",
+"/+    c #FFCC00",
+"(+    c #FFCC33",
+"_+    c #FFCC66",
+":+    c #FFCC99",
+"<+    c #FFCCCC",
+"[+    c #FFCCFF",
+"}+    c #FFFF00",
+"|+    c #FFFF33",
+"1+    c #FFFF66",
+"2+    c #FFFF99",
+"3+    c #FFFFCC",
+"4+    c #FFFFFF",
+"5+    c #000000",
+"6+    c #0D0D0D",
+"7+    c #1A1A1A",
+"8+    c #282828",
+"9+    c #353535",
+"0+    c #434343",
+"a+    c #505050",
+"b+    c #5D5D5D",
+"c+    c #6B6B6B",
+"d+    c #787878",
+"e+    c #868686",
+"f+    c #939393",
+"g+    c #A1A1A1",
+"h+    c #AEAEAE",
+"i+    c #BBBBBB",
+"j+    c #C9C9C9",
+"k+    c #D6D6D6",
+"l+    c #E4E4E4",
+"m+    c #F1F1F1",
+"n+    c #FFFFFF",
+"o+    c #0E4C00",
+"p+    c #0A0080",
+"q+    c #000403",
+"r+    c #BE0F17",
+"s+    c #0F3404",
+"t+    c #7B04BC",
+"u+    c #04BD0A",
+"v+    c #05050A",
+"w+    c #17F700",
+"x+    c #A0035A",
+"y+    c #019A14",
+"z+    c #64176E",
+"A+    c #186604",
+"B+    c #57019D",
+"C+    c #035917",
+"D+    c #01030B",
+"E+    c #0CF000",
+"F+    c #5C0072",
+"G+    c #00710C",
+"H+    c #B2006C",
+"2 1 | [ [ _ _ / / / / / / / / / / / / / / / / _ _ [ [ | 1 2 ",
+"1 [ [ _ / / / ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! / / / / _ [ 2 ",
+"| [ / / ! ) , - , - , - , - , - , - , - , - , / / _.u._./ | ",
+"[ _ / ! , - - = = = = = = = = = = = = = = = = = u.Y.Y.Y.u.2 ",
+"[ / ! , - = % % # # # # # # # # # # # # # # % : Y.Y.Y.Y.Y.b ",
+"_ / ! - = % # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ u.Y.Y.Y.Y.Y.u.",
+"_ / ) - = % # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ u.Y.Y.Y.Y.Y.u.",
+"[ / ) - = % # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ u.Y.Y.Y.Y.Y.u.",
+"[ / ! , - = % % # # # # # # # # # # # # # # % : Y.Y.Y.Y.Y.b ",
+"[ _ / ! , - - = = = = = = = = = = = = = = = = / u.Y.Y.Y.u.2 ",
+"| _ / / ! ) , - - - - - - - - - - - - - - , - = / _.u._./ | ",
+"2 [ [ _ / / / ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! / / : / / [ 1 ",
+"2 2 | [ [ _ _ / / / / / / / / / / / / / / / / _ _ [ [ | 2 2 "};
diff --git a/hdspmixer/pixmaps/peak.xpm b/hdspmixer/pixmaps/peak.xpm
new file mode 100644 (file)
index 0000000..88b20e3
--- /dev/null
@@ -0,0 +1,265 @@
+/* XPM */
+char * peak_xpm[] = {
+"8 5 257 2",
+"      c None",
+".     c #61FF48",
+"+     c #6FFF57",
+"@     c #7EFF57",
+"#     c #86FF5E",
+"$     c #93FF5E",
+"%     c #A4FF6C",
+"&     c #D4FF87",
+"*     c #16FF5D",
+"=     c #16FBFF",
+"-     c #42AFFF",
+";     c #45ADFF",
+">     c #45ADFF",
+",     c #41FF41",
+"'     c #41FF63",
+")     c #41FFB1",
+"!     c #42FDFF",
+"~     c #45F7FF",
+"{     c #45F7FF",
+"]     c #45FF45",
+"^     c #45FF65",
+"/     c #45FFAF",
+"(     c #45FFF9",
+"_     c #45FFFF",
+":     c #45FFFF",
+"<     c #45FF45",
+"[     c #45FF65",
+"}     c #45FFAF",
+"|     c #45FFF9",
+"1     c #45FFFF",
+"2     c #45FFFF",
+"3     c #45FF45",
+"4     c #45FF65",
+"5     c #45FFAF",
+"6     c #45FFF9",
+"7     c #45FFFF",
+"8     c #45FFFF",
+"9     c #EBE000",
+"0     c #FC00FC",
+"a     c #2C28FF",
+"b     c #5654FF",
+"c     c #5958FF",
+"d     c #5958FF",
+"e     c #5DFF16",
+"f     c #28FF28",
+"g     c #29FAFF",
+"h     c #55A8FF",
+"i     c #58A7FF",
+"j     c #58A7FF",
+"k     c #63FF41",
+"l     c #54FF54",
+"m     c #54FFAA",
+"n     c #55FDFF",
+"o     c #58F7FF",
+"p     c #58F7FF",
+"q     c #65FF45",
+"r     c #58FF58",
+"s     c #58FFA8",
+"t     c #58FFF8",
+"u     c #58FFFF",
+"v     c #58FFFF",
+"w     c #65FF45",
+"x     c #58FF58",
+"y     c #58FFA8",
+"z     c #58FFF8",
+"A     c #58FFFF",
+"B     c #58FFFF",
+"C     c #65FF45",
+"D     c #58FF58",
+"E     c #58FFA8",
+"F     c #58FFF8",
+"G     c #58FFFF",
+"H     c #58FFFF",
+"I     c #FF5916",
+"J     c #FF282C",
+"K     c #FF28FF",
+"L     c #AA54FF",
+"M     c #A958FF",
+"N     c #A958FF",
+"O     c #FFFB16",
+"P     c #FFFA29",
+"Q     c #FF54FF",
+"R     c #827FFF",
+"S     c #8582FF",
+"T     c #8582FF",
+"U     c #B1FF41",
+"V     c #AAFF54",
+"W     c #7FFF7F",
+"X     c #80FCFF",
+"Y     c #83F3FF",
+"Z     c #83F3FF",
+"`     c #AFFF45",
+" .    c #A8FF58",
+"..    c #83FF83",
+"+.    c #83FFF5",
+"@.    c #83FFFF",
+"#.    c #83FFFF",
+"$.    c #AFFF45",
+"%.    c #A8FF58",
+"&.    c #83FF83",
+"*.    c #83FFF5",
+"=.    c #83FFFF",
+"-.    c #83FFFF",
+";.    c #AFFF45",
+">.    c #A8FF58",
+",.    c #83FF83",
+"'.    c #83FFF5",
+").    c #83FFFF",
+"!.    c #83FFFF",
+"~.    c #FF6242",
+"{.    c #FF5456",
+"].    c #FF54AA",
+"^.    c #FF54FF",
+"/.    c #F858FF",
+"(.    c #F858FF",
+"_.    c #FFAF42",
+":.    c #FFA855",
+"<.    c #FF7F82",
+"[.    c #FF7FFF",
+"}.    c #F682FF",
+"|.    c #F682FF",
+"1.    c #FFFD42",
+"2.    c #FFFD55",
+"3.    c #FFFC80",
+"4.    c #D6D3D6",
+"5.    c #D6D5D7",
+"6.    c #D6D5D7",
+"7.    c #F9FF45",
+"8.    c #F8FF58",
+"9.    c #F5FF83",
+"0.    c #D6D7D6",
+"a.    c #D6D7D7",
+"b.    c #D6D7D7",
+"c.    c #F9FF45",
+"d.    c #F8FF58",
+"e.    c #F5FF83",
+"f.    c #D6D7D6",
+"g.    c #D6D7D7",
+"h.    c #D6D7D7",
+"i.    c #F9FF45",
+"j.    c #F8FF58",
+"k.    c #F5FF83",
+"l.    c #D6D7D6",
+"m.    c #D6D7D7",
+"n.    c #D6D7D7",
+"o.    c #FF6445",
+"p.    c #FF5859",
+"q.    c #FF58A9",
+"r.    c #FF58F8",
+"s.    c #FF58FF",
+"t.    c #FF58FF",
+"u.    c #FFAD45",
+"v.    c #FFA758",
+"w.    c #FF8285",
+"x.    c #FF82F6",
+"y.    c #FF82FF",
+"z.    c #FF82FF",
+"A.    c #FFF745",
+"B.    c #FFF758",
+"C.    c #FFF383",
+"D.    c #D7D5D6",
+"E.    c #D7D5D7",
+"F.    c #D7D5D7",
+"G.    c #FFFF45",
+"H.    c #FFFF58",
+"I.    c #FFFF83",
+"J.    c #D7D7D6",
+"K.    c #D8D8D8",
+"L.    c #D8D8D8",
+"M.    c #FFFF45",
+"N.    c #FFFF58",
+"O.    c #FFFF83",
+"P.    c #D7D7D6",
+"Q.    c #D8D8D8",
+"R.    c #D8D8D8",
+"S.    c #FFFF45",
+"T.    c #FFFF58",
+"U.    c #FFFF83",
+"V.    c #D7D7D6",
+"W.    c #D8D8D8",
+"X.    c #D8D8D8",
+"Y.    c #FF6445",
+"Z.    c #FF5859",
+"`.    c #FF58A9",
+" +    c #FF58F8",
+".+    c #FF58FF",
+"++    c #FF58FF",
+"@+    c #FFAD45",
+"#+    c #FFA758",
+"$+    c #FF8285",
+"%+    c #FF82F6",
+"&+    c #FF82FF",
+"*+    c #FF82FF",
+"=+    c #FFF745",
+"-+    c #FFF758",
+";+    c #FFF383",
+">+    c #D7D5D6",
+",+    c #D7D5D7",
+"'+    c #D7D5D7",
+")+    c #FFFF45",
+"!+    c #FFFF58",
+"~+    c #FFFF83",
+"{+    c #D7D7D6",
+"]+    c #D8D8D8",
+"^+    c #D8D8D8",
+"/+    c #FFFF45",
+"(+    c #FFFF58",
+"_+    c #FFFF83",
+":+    c #D7D7D6",
+"<+    c #D8D8D8",
+"[+    c #D8D8D8",
+"}+    c #FFFF45",
+"|+    c #FFFF58",
+"1+    c #FFFF83",
+"2+    c #D7D7D6",
+"3+    c #D8D8D8",
+"4+    c #D8D8D8",
+"5+    c #00EA00",
+"6+    c #00F500",
+"7+    c #00FF00",
+"8+    c #16FF16",
+"9+    c #2CFF2C",
+"0+    c #44FF44",
+"a+    c #5AFF5A",
+"b+    c #70FF70",
+"c+    c #B8CFB8",
+"d+    c #C1D1C1",
+"e+    c #CAD3CA",
+"f+    c #D2D6D2",
+"g+    c #D8D8D8",
+"h+    c #D8D8D8",
+"i+    c #D8D8D8",
+"j+    c #D8D8D8",
+"k+    c #D8D8D8",
+"l+    c #D8D8D8",
+"m+    c #D8D8D8",
+"n+    c #D8D8D8",
+"o+    c #2BFF2B",
+"p+    c #2D59FF",
+"q+    c #00ED00",
+"r+    c #FF7945",
+"s+    c #16FF16",
+"t+    c #C85BFF",
+"u+    c #45FF45",
+"v+    c #00EE00",
+"w+    c #45FF45",
+"x+    c #FF5A95",
+"y+    c #45FF45",
+"z+    c #CC43FF",
+"A+    c #41FF41",
+"B+    c #9158FF",
+"C+    c #36FF36",
+"D+    c #00EC00",
+"E+    c #45FF45",
+"F+    c #B833FF",
+"G+    c #45FF45",
+"H+    c #FF58B2",
+"9 A.A.A.A.A.A.9 ",
+"A.G.G.G.G.G.G.A.",
+"A.G.G.G.G.G.G.A.",
+"A.G.G.G.G.G.G.A.",
+"9 A.A.A.A.A.A.9 "};
diff --git a/hdspmixer/pixmaps/solo.xpm b/hdspmixer/pixmaps/solo.xpm
new file mode 100644 (file)
index 0000000..1bfb438
--- /dev/null
@@ -0,0 +1,57 @@
+/* XPM */
+char * solo_xpm[] = {
+"13 26 28 1",
+"      c None",
+".     c #3C3E2D",
+"+     c #2E3E23",
+"@     c #2E3623",
+"#     c #7A7F51",
+"$     c #690806",
+"%     c #7C2000",
+"&     c #272118",
+"*     c #532800",
+"=     c #F4BE91",
+"-     c #F44E10",
+";     c #23241A",
+">     c #151610",
+",     c #A85600",
+"'     c #FF0000",
+")     c #F4FDB7",
+"!     c #181818",
+"~     c #091809",
+"{     c #091009",
+"]     c #585949",
+"^     c #000000",
+"/     c #180000",
+"(     c #C9A1A8",
+"_     c #884129",
+":     c #482100",
+"<     c #D8D8D8",
+"[     c #090000",
+"}     c #020000",
+".++@+++++++.#",
+"$%%%%%%%%%%$&",
+"*%=--------;>",
+"*%,'')))'''&>",
+"*%'')''''''&>",
+"*%'')''''''&>",
+"*%'''))''''&>",
+"*%''''')'''&>",
+"*%''''')'''&>",
+"*%,')))-'''&>",
+"*%--------*&>",
+"*&>>>>>>>>>>>",
+">>>>>>>>>>>>>",
+"!~~{~~~~~~~!]",
+"^^^^^^^^^^^^^",
+"^/(________^^",
+"^/::::::///^^",
+"^/:::<<<///^^",
+"^/::<//////^^",
+"^/::<//////^^",
+"^/:::<<////^^",
+"^/:::::<///^^",
+"^/:::::<///^^",
+"^///<<<//[^^^",
+"^^^}}}}//^^^^",
+"^^^^^^^^^^^^^"};
diff --git a/hdspmixer/src/HDSPMixerAbout.cxx b/hdspmixer/src/HDSPMixerAbout.cxx
new file mode 100644 (file)
index 0000000..883e6f9
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerAbout.h"
+
+
+HDSPMixerAbout::HDSPMixerAbout(int w, int h, char *label, HDSPMixerWindow *win):Fl_Double_Window(w, h, label)
+{
+    basew = win;
+    text = new HDSPMixerAboutText(0,0,w,h);
+    end();
+    set_modal();
+}
+
diff --git a/hdspmixer/src/HDSPMixerAbout.h b/hdspmixer/src/HDSPMixerAbout.h
new file mode 100644 (file)
index 0000000..7138aa6
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerAbout_H
+#define HDSPMixerAbout_H
+
+#include <string.h>
+#include <FL/Fl_Double_Window.H>
+#include "HDSPMixerWindow.h"
+#include "HDSPMixerAboutText.h"
+
+class HDSPMixerWindow;
+class HDSPMixerAboutText;
+
+class HDSPMixerAbout:public Fl_Double_Window
+{
+private:
+    HDSPMixerAboutText *text;
+    HDSPMixerWindow *basew;
+public:
+    HDSPMixerAbout(int w, int h, char *label, HDSPMixerWindow *w);
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerAboutText.cxx b/hdspmixer/src/HDSPMixerAboutText.cxx
new file mode 100644 (file)
index 0000000..702658f
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerAboutText.h"
+
+HDSPMixerAboutText::HDSPMixerAboutText(int x, int y, int w, int h):Fl_Widget(x, y, w, h, "About Text")
+{
+       text = "HDSPMixer (C) 2003 Thomas Charbonnel <thomas@@undata.org>\n\n"
+              "Bitmaps by Ralf Brunner\n"
+              "Many thanks to Martin Björnsen, Matthias Carstens and Paul Davis\n\n"
+              "This Program is free software; you can redistribute it and/or modify\n"
+              "it under the terms of the GNU General Public License as published by\n"
+              "the Free Software Foundation; either version 2 of the License, or\n"
+              "(at your option) any later version.\n\n"
+              "This program is distributed in the hope that it will be useful,\n"
+              "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+              "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
+              "See the GNU General Public License for more details.\n\n"
+              "You should have received a copy of the GNU General Public License\n"
+              "along with this program; if not, write to the Free Software\n"
+              "Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\n";
+}
+
+void HDSPMixerAboutText::draw()
+{
+       fl_color(FL_BLACK);
+       fl_font(FL_HELVETICA, 10);
+       fl_draw(text, x(), y(), w(), h(), FL_ALIGN_LEFT);
+}
+
diff --git a/hdspmixer/src/HDSPMixerAboutText.h b/hdspmixer/src/HDSPMixerAboutText.h
new file mode 100644 (file)
index 0000000..75b96ce
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerAboutText_H
+#define HDSPMixerAboutText_H
+
+#include <FL/Fl_Widget.H>
+#include <FL/fl_draw.H>
+#include <FL/Fl.H>
+
+class HDSPMixerAboutText:public Fl_Widget
+{
+public:
+    HDSPMixerAboutText(int x, int y, int w, int h);
+    void draw();
+private:
+    char *text;
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerButtons.cxx b/hdspmixer/src/HDSPMixerButtons.cxx
new file mode 100644 (file)
index 0000000..0dcf173
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerButtons.h"
+
+HDSPMixerButtons::HDSPMixerButtons(int x, int y, int w, int h):Fl_Group(x, y, w, h)
+{
+    cardselector = new HDSPMixerCardSelector(x+6, y+227, 61, 13, 1);
+    master = new HDSPMixerMaster(x+6 , y+18 , 62, 12);
+    view = new HDSPMixerView(x+6, y+53, 13, 76);
+    presets = new HDSPMixerPresets(x+6, y+153, 61, 52);
+    end();
+    preset = 0;
+    input = 0;
+    playback = 0;
+    output = 0;
+    submix = 0;
+    save = 0;
+}
+
+void HDSPMixerButtons::draw_background()
+{
+    draw_background(x(), y(), w(), h());
+}
+
+void HDSPMixerButtons::draw_background(int xpos, int ypos, int w, int h)
+{
+    fl_push_clip(xpos, ypos, w, h);
+    fl_draw_pixmap(buttons_xpm, x(), y());
+    fl_pop_clip();
+}
+
+void HDSPMixerButtons::draw()
+{
+    Fl_Widget *const* a = array();
+    if (damage() & ~FL_DAMAGE_CHILD) {
+       draw_background();
+       for (int i=children(); i--;) {
+           Fl_Widget& o = **a++;
+           draw_child(o);
+       }
+    } else  {
+       for (int i=children(); i--;)  update_child(**a++);
+    }  
+}
+
+void HDSPMixerButtons::update_child(Fl_Widget& widget)
+{
+    if (widget.damage() && widget.visible() && widget.type() < FL_WINDOW && fl_not_clipped(widget.x(), widget.y(), widget.w(), widget.h())) {
+       draw_background(widget.x(), widget.y(), widget.w(), widget.h());
+       widget.draw();
+       widget.clear_damage();
+    }
+}
+
diff --git a/hdspmixer/src/HDSPMixerButtons.h b/hdspmixer/src/HDSPMixerButtons.h
new file mode 100644 (file)
index 0000000..d9bc36a
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerButtons_H
+#define HDSPMixerButtons_H
+
+#include <FL/Fl.H>
+#include <FL/Fl_Widget.H>
+#include <FL/Fl_Menu_Item.H>
+#include <FL/fl_draw.H>
+#include "HDSPMixerCardSelector.h"
+#include "HDSPMixerMaster.h"
+#include "HDSPMixerView.h"
+#include "HDSPMixerPresets.h"
+#include "pixmaps.h"
+
+class HDSPMixerCardSelector;
+class HDSPMixerMaster;
+class HDSPMixerView;
+class HDSPMixerPresets;
+
+class HDSPMixerButtons:public Fl_Group
+{
+private:
+    void update_child(Fl_Widget& widget);
+    void draw_background();
+    void draw_background(int x, int y, int w, int h);
+public:
+    HDSPMixerPresets *presets;
+    HDSPMixerCardSelector *cardselector;
+    HDSPMixerMaster *master;
+    HDSPMixerView *view;
+    int input, output, playback, submix, preset, save;
+    HDSPMixerButtons(int x, int y, int w, int h);
+    void draw();   
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerCard.cxx b/hdspmixer/src/HDSPMixerCard.cxx
new file mode 100644 (file)
index 0000000..10f4fe1
--- /dev/null
@@ -0,0 +1,288 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerCard.h"
+
+static void alsactl_cb(snd_async_handler_t *handler)
+{
+    int err, clock_value;
+    snd_ctl_t *ctl;
+    snd_ctl_event_t *event;
+    snd_ctl_elem_value_t *elemval;
+    snd_ctl_elem_id_t *elemid;
+    HDSPMixerCard *card;
+    
+    card = (HDSPMixerCard *)snd_async_handler_get_callback_private(handler);
+    
+    snd_ctl_elem_value_alloca(&elemval);
+    snd_ctl_elem_id_alloca(&elemid);
+    
+    ctl = snd_async_handler_get_ctl(handler);
+    
+    if ((err = snd_ctl_nonblock(ctl, 1))) {
+       printf("Error setting non blocking mode for card %s\n", card->name);
+       return;
+    }
+    
+    snd_ctl_event_malloc(&event);    
+    
+    while ((err = snd_ctl_read(ctl, event)) > 0) {
+       if (snd_ctl_event_elem_get_numid(event) == 11 && (card == card->basew->cards[card->basew->current_card])) {
+           /* We have a clock change and are the focused card */
+           snd_ctl_event_elem_get_id(event, elemid);
+           snd_ctl_elem_value_set_id(elemval, elemid);
+           if ((err = snd_ctl_elem_read(ctl, elemval)) < 0) {
+               fprintf(stderr, "Error reading snd_ctl_elem_t\n");
+               snd_ctl_event_free(event);
+               return;
+           }
+           clock_value = snd_ctl_elem_value_get_enumerated(elemval, 0);
+           if (clock_value == 0) {
+               int new_speed = card->getAutosyncSpeed();
+               if (new_speed >= 0 && new_speed != card->double_speed) card->setMode(new_speed);
+           }
+           if (clock_value > 3 && !card->double_speed) {
+               card->setMode(1);
+           } else if (clock_value < 4 && card->double_speed) {
+               card->setMode(0);
+           }
+       }
+       snd_ctl_event_clear(event);
+    }
+    
+    snd_ctl_event_free(event);
+}
+
+int HDSPMixerCard::getAutosyncSpeed()
+{
+    /*  FIXME : this is over simplistic, there are lots of crooked cases
+       It should always be possible to do what one wants executing the 
+       proper sequence of actions, though.
+    */
+
+    int err, external_rate;
+    snd_ctl_elem_value_t *elemval;
+    snd_ctl_elem_id_t * elemid;
+    snd_ctl_t *handle;
+    snd_ctl_elem_value_alloca(&elemval);
+    snd_ctl_elem_id_alloca(&elemid);
+    if ((err = snd_ctl_open(&handle, name, SND_CTL_NONBLOCK)) < 0) {
+       fprintf(stderr, "Error accessing ctl interface on card %s\n.", name);
+       return -1; 
+    }
+    
+    snd_ctl_elem_id_set_name(elemid, "External Rate");
+    snd_ctl_elem_id_set_numid(elemid, 17);
+    snd_ctl_elem_id_set_interface(elemid, SND_CTL_ELEM_IFACE_PCM);
+    snd_ctl_elem_id_set_device(elemid, 0);
+    snd_ctl_elem_id_set_subdevice(elemid, 0);
+    snd_ctl_elem_id_set_index(elemid, 0);
+    snd_ctl_elem_value_set_id(elemval, elemid);
+    snd_ctl_elem_read(handle, elemval);
+    external_rate = snd_ctl_elem_value_get_enumerated(elemval, 0);
+
+    snd_ctl_close(handle);
+
+    if (external_rate > 2 && external_rate < 6) {
+       return 1;
+    } else if (external_rate < 2) {
+       return 0;
+    }
+}
+
+int HDSPMixerCard::getSpeed()
+{
+    int err, val;
+    snd_ctl_elem_value_t *elemval;
+    snd_ctl_elem_id_t * elemid;
+    snd_ctl_t *handle;
+    snd_ctl_elem_value_alloca(&elemval);
+    snd_ctl_elem_id_alloca(&elemid);
+    if ((err = snd_ctl_open(&handle, name, SND_CTL_NONBLOCK)) < 0) {
+       fprintf(stderr, "Error accessing ctl interface on card %s\n.", name);
+       return -1; 
+    }
+    snd_ctl_elem_id_set_name(elemid, "Sample Clock Source");
+    snd_ctl_elem_id_set_numid(elemid, 11);
+    snd_ctl_elem_id_set_interface(elemid, SND_CTL_ELEM_IFACE_PCM);
+    snd_ctl_elem_id_set_device(elemid, 0);
+    snd_ctl_elem_id_set_subdevice(elemid, 0);
+    snd_ctl_elem_id_set_index(elemid, 0);
+    snd_ctl_elem_value_set_id(elemval, elemid);
+    snd_ctl_elem_read(handle, elemval);
+    val = snd_ctl_elem_value_get_enumerated(elemval, 0);
+    snd_ctl_close(handle);
+    switch (val) {
+    case 0:
+       /* Autosync mode : We need to determine sample rate */
+       return getAutosyncSpeed();
+       break;
+    case 1:
+    case 2:
+    case 3:
+       /* SR <= 48000 - normal speed */
+       return 0;
+    case 4:
+    case 5:
+    case 6:
+       /* SR > 48000 kHz - double speed */
+       return 1;
+       break;
+    default:
+       /* Should never happen */
+       return 0;
+    }
+    return 0;    
+}
+
+HDSPMixerCard::HDSPMixerCard(HDSP_IO_Type cardtype, int id)
+{
+    type = cardtype;
+    card_id = id;
+    snprintf(name, 6, "hw:%i", card_id);
+    double_speed = getSpeed();
+    if (double_speed < 0) {
+       fprintf(stderr, "Error trying to determine speed mode for card %s, exiting.\n", name);
+       exit(EXIT_FAILURE);
+    }
+    
+    /* Set channels and mappings */
+    adjustSettings();
+        
+    basew = NULL;
+}
+
+
+void HDSPMixerCard::adjustSettings() {
+    if (type == Multiface && !double_speed) {
+       channels = 18;
+       channel_map = channel_map_mf_ss;
+       dest_map = dest_map_mf_ss;
+       meter_map = channel_map_mf_ss;
+       lineouts = 2;
+    } else if (type == Multiface && double_speed) {
+       channels = 14;
+       /* FIXME : this is a workaround because the driver is wrong */
+       channel_map = meter_map_ds;
+       dest_map = dest_map_ds;
+       meter_map = meter_map_ds;
+       lineouts = 2;
+    } else if (type == Digiface && !double_speed) {
+       channels = 26;
+       channel_map = channel_map_df_ss;
+       dest_map = dest_map_df_ss;
+       meter_map = channel_map_df_ss;
+       lineouts = 2;
+    } else if (type == Digiface && double_speed) {
+       channels = 14;
+       channel_map = channel_map_ds;
+       dest_map = dest_map_ds;
+       meter_map = meter_map_ds;
+       lineouts = 2;
+    } else if (type == H9652 && !double_speed) {
+       channels = 26;
+       channel_map = channel_map_df_ss;
+       dest_map = dest_map_h9652_ss;
+       meter_map = channel_map_df_ss;
+       lineouts = 0;
+    } else if (type == H9652 && double_speed) {
+       channels = 14;
+       channel_map = channel_map_ds;
+       dest_map = dest_map_h9652_ds;
+       meter_map = meter_map_ds;
+       lineouts = 0;
+    } 
+    window_width = (channels+2)*STRIP_WIDTH;
+    window_height = FULLSTRIP_HEIGHT*2+SMALLSTRIP_HEIGHT+MENU_HEIGHT;
+} 
+
+void HDSPMixerCard::setMode(int mode)
+{
+    double_speed = mode;
+    adjustSettings();
+    actualizeStrips();
+
+    for (int i = 0; i < channels; ++i) {
+       basew->inputs->strips[i]->targets->setLabels();
+       basew->playbacks->strips[i]->targets->setLabels();
+       basew->outputs->strips[i]->setLabels();
+    }
+    for (int i = channels; i < channels+lineouts; ++i) {
+       basew->outputs->strips[i]->setLabels();    
+    }
+    
+    basew->inputs->buttons->position(STRIP_WIDTH*channels, basew->inputs->buttons->y());
+    basew->inputs->init_sizes();
+    basew->playbacks->empty->position(STRIP_WIDTH*channels, basew->playbacks->empty->y());
+    basew->playbacks->init_sizes();
+    basew->outputs->empty->position(STRIP_WIDTH*(channels+lineouts), basew->outputs->empty->y());    
+    basew->outputs->init_sizes();
+    basew->inputs->size(window_width, basew->inputs->h());
+    basew->playbacks->size(window_width, basew->playbacks->h());
+    basew->outputs->size(window_width, basew->outputs->h());
+    basew->scroll->init_sizes();
+    ((Fl_Widget *)(basew->menubar))->size(window_width, basew->menubar->h());
+    basew->size_range(MIN_WIDTH, MIN_HEIGHT, window_width, window_height);
+    basew->resize(basew->x(), basew->y(), window_width, basew->h());
+    basew->reorder();
+    basew->resetMixer();
+    basew->inputs->buttons->presets->preset_change(1);
+}
+
+void HDSPMixerCard::actualizeStrips()
+{
+    for (int i = 0; i < HDSP_MAX_CHANNELS; ++i) {
+       if (i < channels) {
+           basew->inputs->strips[i]->show();
+           basew->playbacks->strips[i]->show();
+           basew->outputs->strips[i]->show();
+       } else {
+           basew->inputs->strips[i]->hide();
+           basew->playbacks->strips[i]->hide();
+           basew->outputs->strips[i]->hide();
+       }
+    }
+    for (int i = channels; i < channels+lineouts; ++i) {
+       basew->outputs->strips[i]->show();
+    }
+    if (type != H9652) basew->outputs->empty->hide();
+}
+
+int HDSPMixerCard::initializeCard(HDSPMixerWindow *w)
+{
+    int err;
+    if ((err = snd_ctl_open(&cb_handle, name, SND_CTL_NONBLOCK)) < 0) {
+       fprintf(stderr, "Error opening ctl interface for card %s - exiting\n", name);
+       exit(EXIT_FAILURE);
+    }
+    if ((err = snd_async_add_ctl_handler(&cb_handler, cb_handle, alsactl_cb, this)) < 0) {
+       fprintf(stderr, "Error registering async ctl callback for card %s - exiting\n", name);
+       exit(EXIT_FAILURE);
+    }
+    if ((err = snd_ctl_subscribe_events(cb_handle, 1)) < 0) {
+       fprintf(stderr, "Error subscribing to ctl events for card %s - exiting\n", name);
+       exit(EXIT_FAILURE);
+    }
+    basew = w;
+    actualizeStrips();
+    return 0;
+}
+
diff --git a/hdspmixer/src/HDSPMixerCard.h b/hdspmixer/src/HDSPMixerCard.h
new file mode 100644 (file)
index 0000000..cc6d39d
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerCard_H
+#define HDSPMixerCard_H
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <alsa/asoundlib.h>
+#include <sound/hdsp.h>
+#include "mappings.h"
+#include "defines.h"
+#include "HDSPMixerWindow.h"
+
+class HDSPMixerWindow;
+
+class HDSPMixerCard
+{
+private:
+    snd_ctl_t *cb_handle;
+    snd_async_handler_t *cb_handler;
+public:
+    HDSPMixerWindow *basew;
+    char name[6];
+    HDSPMixerCard(HDSP_IO_Type cardtype, int id);
+    int channels, lineouts, window_width, window_height, card_id;
+    HDSP_IO_Type type;
+    char *channel_map;
+    char *dest_map;
+    char *meter_map;
+    int double_speed;
+    void setMode(int mode);
+    int initializeCard(HDSPMixerWindow *w);
+    int getSpeed();
+    int getAutosyncSpeed();
+    void actualizeStrips();
+    void adjustSettings();
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerCardSelector.cxx b/hdspmixer/src/HDSPMixerCardSelector.cxx
new file mode 100644 (file)
index 0000000..083f817
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerCardSelector.h"
+
+HDSPMixerCardSelector::HDSPMixerCardSelector(int x, int y, int w, int h, int cardnum):Fl_Widget(x, y, 61, 13)
+{
+    basew = (HDSPMixerWindow *)window();
+    card = cardnum;
+}
+
+
+void HDSPMixerCardSelector::draw() 
+{
+    switch (card) {
+       case 1:
+           fl_draw_pixmap(b_card1_xpm, x(), y());
+           return;
+       case 2:
+           fl_draw_pixmap(b_card2_xpm, x()+24, y());
+           return;
+       case 3:
+           fl_draw_pixmap(b_card3_xpm, x()+48, y());
+           return;
+       default:
+           return;
+    }    
+}
+
+int HDSPMixerCardSelector::handle(int e)
+{
+    int xpos = Fl::event_x()-x();
+    switch (e) {
+       case FL_PUSH:
+           if (xpos < 13 && card != 1) {
+                   card = 1;
+                   basew->current_card = 0;
+                   basew->cards[0]->setMode(basew->cards[0]->getSpeed());
+                   redraw();
+           } else if (xpos >= 24 && xpos < 37 && card != 2 && basew->cards[1] != NULL) {
+                   card = 2;
+                   basew->current_card = 1;
+                   basew->cards[1]->setMode(basew->cards[1]->getSpeed());
+                   redraw();
+           } else if (xpos >= 48 && card != 3 && basew->cards[2] != NULL) {
+                   card = 3;
+                   basew->current_card = 2;
+                   basew->cards[2]->setMode(basew->cards[2]->getSpeed());
+                   redraw();
+           }
+           return 1;
+       default:
+           return Fl_Widget::handle(e);
+    }    
+}
diff --git a/hdspmixer/src/HDSPMixerCardSelector.h b/hdspmixer/src/HDSPMixerCardSelector.h
new file mode 100644 (file)
index 0000000..9a5676e
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerCardSelector_H
+#define HDSPMixerCardSelector_H
+
+#include <FL/Fl.H>
+#include <FL/Fl_Widget.H>
+#include <FL/fl_draw.H>
+#include <FL/fl_ask.H>
+#include "HDSPMixerWindow.h"
+#include "pixmaps.h"
+
+class HDSPMixerWindow;
+
+class HDSPMixerCardSelector:public Fl_Widget
+{
+public:
+    int card;
+    HDSPMixerWindow *basew;
+    HDSPMixerCardSelector(int x, int y, int w, int h, int card);
+    void draw();
+    int handle(int e);
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerEmpty.cxx b/hdspmixer/src/HDSPMixerEmpty.cxx
new file mode 100644 (file)
index 0000000..49b9f06
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerEmpty.h"
+
+HDSPMixerEmpty::HDSPMixerEmpty(int x, int y, int w, int h, int type):Fl_Widget(x, y, w, h)
+{
+    linux_advertising = type;
+}
+
+void HDSPMixerEmpty::draw()
+{
+    if (fl_not_clipped(x(), y(), w(), h()) != 0) {
+        if (linux_advertising) {
+           fl_draw_pixmap(empty_linux_xpm, x(), y());
+       } else {
+           fl_draw_pixmap(empty_xpm, x(), y());
+       }
+    }  
+}
+
diff --git a/hdspmixer/src/HDSPMixerEmpty.h b/hdspmixer/src/HDSPMixerEmpty.h
new file mode 100644 (file)
index 0000000..3f497dd
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerEmpty_H
+#define HDSPMixerEmpty_H
+
+#include <FL/Fl_Widget.H>
+#include <FL/fl_draw.H>
+#include "pixmaps.h"
+
+class HDSPMixerEmpty:public Fl_Widget
+{
+private:
+    int linux_advertising;
+public:
+    HDSPMixerEmpty(int x, int y, int w, int h, int type);
+    void draw();   
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerFader.cxx b/hdspmixer/src/HDSPMixerFader.cxx
new file mode 100644 (file)
index 0000000..fb3db2e
--- /dev/null
@@ -0,0 +1,181 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerFader.h"
+
+HDSPMixerFader::HDSPMixerFader(int x, int y, double r, int id, int src):Fl_Widget(x, y, 13, 153)
+{
+    index = id;
+    source = src;
+    ndb = (int)(CF*(double)(log(0.5*(exp(3.0)-1)+1)*(double)(FADER_HEIGHT)/3.0));
+    non_submix_dest = 0;
+    dest = 0;
+    ref = r;
+    basew = (HDSPMixerWindow *)window();
+    anchor = lastpos = lasty = drag = shift_orig = y_orig = 0;
+    for (int i = 0; i < 14; i++) {
+       pos[i] = 0;
+    }
+}
+
+void HDSPMixerFader::draw()
+{
+    fl_draw_pixmap(Slider1_xpm, x(), y()+139-(int)(pos[dest]/CF));
+}
+
+int HDSPMixerFader::handle(int e)
+{
+    int button3 = Fl::event_button3();
+    int shift = Fl::event_shift();
+    int ctrl = Fl::event_ctrl();
+    int xpos = Fl::event_x()-x();
+    int ypos = Fl::event_y()-y();
+    switch (e) {
+       case FL_PUSH:
+           if (onSlider(ypos)) {
+               anchor = 144-ypos-(int)(pos[dest]/CF);
+               if (button3) relative->set(pos[dest]);
+               return 1;
+           }
+           anchor = 0;
+           if (ctrl) {
+               pos[dest] = ndb;
+           } else if (ypos < 7) {
+               pos[dest] = 137*CF;
+           } else if (ypos > 6 && ypos < 146) {
+               pos[dest] = (144-ypos)*CF;
+           } else if (ypos > 145) {
+               pos[dest] = 0;
+           } 
+           if (lastpos != pos[dest]) {
+               basew->setMixer(index, source, dest);
+               sendGain();
+               lastpos = pos[dest];
+           }
+           if (lasty != (int)(pos[dest]/CF)) {
+               redraw();
+               lasty = (int)(pos[dest]/CF);
+           }
+           if (button3) relative->set(pos[dest]);
+           shift_orig = pos[dest];
+           y_orig = ypos;
+           basew->checkState();
+           return 1;
+       case FL_DRAG:
+           ypos += anchor;
+           if (ctrl) {
+               pos[dest] = ndb;
+               shift_orig = pos[dest];
+               y_orig = ypos;
+           } else if ((ypos > 6 && ypos < 146) || drag) {
+               drag = 1;
+               if (shift) {
+                   pos[dest] = (y_orig-ypos)+shift_orig;
+                   if (pos[dest] < 0) pos[dest] = 0;
+                   if (pos[dest] > 137*CF) pos[dest] = 137*CF;
+               } else {
+                   if (ypos < 7) {
+                       pos[dest] = 137*CF;
+                   } else if (ypos > 144) {
+                       pos[dest] = 0;
+                   } else {
+                       pos[dest] = (144-ypos)*CF;
+                   }
+                   shift_orig = pos[dest];   
+                   y_orig = ypos;
+               }
+           }
+           if (lastpos != pos[dest]) {
+               basew->setMixer(index, source, dest);
+               sendGain();
+               lastpos = pos[dest];
+           }
+           if (lasty != (int)(pos[dest]/CF)) {
+               redraw();
+               lasty = (int)(pos[dest]/CF);
+           }
+           if (button3) relative->set(pos[dest]);
+           basew->checkState();
+           return 1;
+       case FL_RELEASE:
+           drag = 0;
+           anchor = 0;
+           return 1;   
+       default :
+           return Fl_Widget::handle(e);
+    }
+}
+
+int HDSPMixerFader::onSlider(int ypos)
+{
+    if (ypos > (139-(int)(pos[dest]/CF)) && ypos < (151-(int)(pos[dest]/CF))) {
+       return 1;
+    }
+    return 0;
+}
+
+void HDSPMixerFader::set(int p)
+{
+    if (p != pos[dest]) {
+       pos[dest] = lastpos = p;
+       basew->setMixer(index, source, dest);
+       sendGain();
+    }
+    if (lasty != (int)(pos[dest]/CF)) {
+       lasty = (int)(pos[dest]/CF);
+       redraw();
+    }
+}
+
+int HDSPMixerFader::posToInt(int p) {
+    double x, y;
+    
+    if (p == ndb) return 32768;
+    if (p == 137*CF) return 65535;
+    if (p == 0) return 0;
+    
+    x = ((double)(p)) / (double)(137*CF);
+    y = 65535.0 * (exp(3.0 * x) - 1.0) / (exp(3.0) - 1.0);
+    if (y > 65535.0) y = 65535.0;
+    if (y < 0.0) y = 0.0;
+    return (int)y;
+}
+
+void HDSPMixerFader::posToLog(char *s)
+{
+    double db, fpos;
+    
+    if (posToInt(pos[dest]) == 0) {
+       snprintf(s, 10, "-oo");
+       return;
+    }    
+    fpos = (double)posToInt(pos[dest]) / ref;
+    db = 20.0 * log10(fpos);
+    snprintf(s, 10, "%.1f", db);
+}
+
+void HDSPMixerFader::sendGain()
+{
+    char buf[10];
+    posToLog(buf);
+    gain->setText(buf);
+}
+
diff --git a/hdspmixer/src/HDSPMixerFader.h b/hdspmixer/src/HDSPMixerFader.h
new file mode 100644 (file)
index 0000000..3090dfa
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerFader_H
+#define HDSPMixerFader_H
+
+#include <math.h>
+#include <FL/Fl.H>
+#include <FL/Fl_Widget.H>
+#include <FL/fl_draw.H>
+#include "HDSPMixerWindow.h"
+#include "HDSPMixerIOMixer.h"
+#include "HDSPMixerOutput.h"
+#include "pixmaps.h"
+#include "defines.h"
+
+class HDSPMixerIOMixer;
+class HDSPMixerOutput;
+class HDSPMixerGain;
+class HDSPMixerWindow;
+
+class HDSPMixerFader:public Fl_Widget
+{
+private:
+    double ref;
+    int lastpos, lasty, drag, shift_orig, y_orig, anchor, source, index;
+    int onSlider(int ypos);
+    void posToLog(char *s);
+public:
+    int ndb;
+    int posToInt(int p);
+    int non_submix_dest;
+    int dest;
+    int pos[14];
+    HDSPMixerWindow *basew;
+    HDSPMixerFader *relative;
+    HDSPMixerGain *gain;
+    void set(int pos);
+    HDSPMixerFader(int x, int y, double r, int id, int src);
+    int handle(int e);
+    void draw();
+    void sendGain();
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerGain.cxx b/hdspmixer/src/HDSPMixerGain.cxx
new file mode 100644 (file)
index 0000000..9d43a73
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerGain.h"
+
+HDSPMixerGain::HDSPMixerGain(int x, int y, int parenttype):Fl_Widget(x, y, 30, 13)
+{
+    setText("-oo");
+}
+
+void HDSPMixerGain::draw()
+{
+    fl_color(FL_GREEN);
+    fl_font(FL_HELVETICA, 8);
+    fl_draw(text, x(), y(), w(), h(), FL_ALIGN_CENTER);
+}
+
+void HDSPMixerGain::setText(char *txt)
+{
+    strncpy(text, txt, 10);
+    redraw();
+}
diff --git a/hdspmixer/src/HDSPMixerGain.h b/hdspmixer/src/HDSPMixerGain.h
new file mode 100644 (file)
index 0000000..9f70778
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerGain_H
+#define HDSPMixerGain_H
+
+#include <FL/Fl_Widget.H>
+#include <FL/fl_draw.H>
+#include "HDSPMixerIOMixer.h"
+#include "HDSPMixerOutput.h"
+
+class HDSPMixerIOMixer;
+class HDSPMixerOutput;
+
+class HDSPMixerGain:public Fl_Widget
+{
+private:
+    int parent_iomixer;
+public:
+    HDSPMixerGain *relative;
+    char text[10];
+    HDSPMixerGain(int x, int y, int parenttype);
+    void draw();
+    void setText(char *txt);
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerIOMixer.cxx b/hdspmixer/src/HDSPMixerIOMixer.cxx
new file mode 100644 (file)
index 0000000..1c2621e
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerIOMixer.h"
+
+HDSPMixerIOMixer::HDSPMixerIOMixer(int x, int y, int w, int h, int ch, int type):Fl_Group(x, y, w, h)
+{
+    mixer_type = type;
+    if (type) {
+       sprintf(channel_name, "Out %d", ch);
+    } else {
+       sprintf(channel_name, "In %d", ch);
+    }
+    channel_num = ch;
+    if (channel_num%2) {
+       relative_num = channel_num+1;
+    } else {
+       relative_num = channel_num-1;
+    }
+    for (int j = 0; j < 3; ++j) {
+       for (int i = 0; i < 8; ++i) {
+           data[j][0][i] = new HDSPMixerStripData();
+           data[j][1][i] = new HDSPMixerStripData();
+       }
+    }
+    mutesolo = new HDSPMixerMuteSolo(x+3, y+3, 0, 0, channel_num, type);
+    gain = new HDSPMixerGain(x+3, y+207, 1);
+    peak = new HDSPMixerPeak(x+3, y+36, 1);
+    fader = new HDSPMixerFader(x+4, y+51, 32768.0, channel_num, type);
+    pan = new HDSPMixerPan(x+3, y+19, channel_num, type) ;
+    targets = new HDSPMixerSelector(x+3, y+240, 29, 10);
+    meter = new HDSPMixerMeter(x+20, y+59, true, peak);
+    end();
+}
+
+void HDSPMixerIOMixer::draw_background() 
+{
+    draw_background(x(), y(), w(), h());
+}
+
+void HDSPMixerIOMixer::draw_background(int xpos, int ypos, int w, int h)
+{
+    fl_push_clip(xpos, ypos, w, h);
+    fl_draw_pixmap(iomixer_xpm, x(), y());
+    fl_pop_clip();
+}
+
+void HDSPMixerIOMixer::draw()
+{
+    Fl_Widget *const* a = array();
+    if (damage() & ~FL_DAMAGE_CHILD) {
+       draw_background();
+       fl_color(FL_BLACK);
+       fl_font(FL_HELVETICA, 8);
+       fl_draw(channel_name, x()+4, y()+225, 27, 9, FL_ALIGN_CENTER);
+       for (int i=children(); i--;) {
+           Fl_Widget& o = **a++;
+           draw_child(o);
+       }
+    } else {
+       for (int i=children(); i--;) update_child(**a++);
+    }
+}
+
+void HDSPMixerIOMixer::update_child(Fl_Widget& widget) 
+{
+    if (widget.damage() && widget.visible() && widget.type() < FL_WINDOW && fl_not_clipped(widget.x(), widget.y(), widget.w(), widget.h())) {
+       if ((HDSPMixerMeter*)&widget == meter) {
+           ((HDSPMixerMeter *)&widget)->fine_draw = 1;
+       } else {
+           draw_background(widget.x(), widget.y(), widget.w(), widget.h());
+       }
+       widget.draw();
+       widget.clear_damage();
+    }
+}
+
diff --git a/hdspmixer/src/HDSPMixerIOMixer.h b/hdspmixer/src/HDSPMixerIOMixer.h
new file mode 100644 (file)
index 0000000..e7a805c
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerIOMixer_H
+#define HDSPMixerIOMixer_H
+
+#include <FL/Fl.H>
+#include <FL/Fl_Group.H>
+#include <FL/fl_draw.H>
+#include <stdio.h>
+#include "HDSPMixerWindow.h"
+#include "HDSPMixerSelector.h"
+#include "HDSPMixerPan.h"
+#include "HDSPMixerFader.h"
+#include "HDSPMixerGain.h"
+#include "HDSPMixerPeak.h"
+#include "HDSPMixerMuteSolo.h"
+#include "HDSPMixerStripData.h"
+#include "HDSPMixerMeter.h"
+#include "pixmaps.h"
+
+class HDSPMixerWindow;
+class HDSPMixerSelector;
+class HDSPMixerPan;
+class HDSPMixerFader;
+class HDSPMixerGain;
+class HDSPMixerPeak;
+class HDSPMixerMuteSolo;
+class HDSPMixerStripData;
+class HDSPMixerMeter;
+
+class HDSPMixerIOMixer:public Fl_Group
+{
+private:
+    int channel_num, relative_num, mixer_type;
+    char channel_name[6];
+    void update_child(Fl_Widget &widget);
+public:
+    HDSPMixerStripData *data[3][2][8]; /* data[card][mode(ds/ss)][preset number] */
+    HDSPMixerPan *pan;
+    HDSPMixerFader *fader;
+    HDSPMixerPeak *peak;
+    HDSPMixerGain *gain;
+    HDSPMixerMuteSolo *mutesolo;
+    HDSPMixerSelector *targets;
+    HDSPMixerMeter *meter;
+    HDSPMixerIOMixer(int x, int y, int w, int h, int channelnum, int type);
+    void draw();
+    void draw_background();
+    void draw_background(int x, int y, int w, int h);
+    void register_relatives();
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerInputs.cxx b/hdspmixer/src/HDSPMixerInputs.cxx
new file mode 100644 (file)
index 0000000..aafb698
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerInputs.h"
+
+HDSPMixerInputs::HDSPMixerInputs(int x, int y, int w, int h, int nchans):Fl_Group(x, y, w, h)
+{
+    int i;
+    for (i = 0; i < HDSP_MAX_CHANNELS; i += 2) {
+       strips[i] = new HDSPMixerIOMixer((i*STRIP_WIDTH), y, STRIP_WIDTH, FULLSTRIP_HEIGHT, i+1, 0); 
+       strips[i+1] = new HDSPMixerIOMixer(((i+1)*STRIP_WIDTH), y, STRIP_WIDTH, FULLSTRIP_HEIGHT, i+2, 0);
+       /* Setup stereo channel links */
+       strips[i]->pan->relative = strips[i+1]->pan;
+       strips[i+1]->pan->relative = strips[i]->pan;
+       strips[i]->mutesolo->relative = strips[i+1]->mutesolo;
+       strips[i+1]->mutesolo->relative = strips[i]->mutesolo;
+       strips[i]->fader->relative = strips[i+1]->fader;
+       strips[i+1]->fader->relative = strips[i]->fader;
+       strips[i]->fader->gain = strips[i]->gain;
+       strips[i+1]->fader->gain = strips[i+1]->gain;
+       strips[i]->gain->relative = strips[i+1]->gain;
+       strips[i+1]->gain->relative = strips[i]->gain;
+    }
+    buttons = new HDSPMixerButtons(nchans*STRIP_WIDTH, y, 2*STRIP_WIDTH, FULLSTRIP_HEIGHT);
+    end();
+    resizable(NULL);
+}
+
diff --git a/hdspmixer/src/HDSPMixerInputs.h b/hdspmixer/src/HDSPMixerInputs.h
new file mode 100644 (file)
index 0000000..74bc99f
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerInputs_H
+#define HDSPMixerInputs_H
+
+#include <FL/Fl_Group.H>
+#include "HDSPMixerIOMixer.h"
+#include "HDSPMixerButtons.h"
+
+class HDSPMixerButtons;
+class HDSPMixerIOMixer;
+
+class HDSPMixerInputs:public Fl_Group
+{
+public:
+    HDSPMixerButtons *buttons;
+    HDSPMixerIOMixer *strips[26];
+    HDSPMixerInputs(int x, int y, int w, int h, int nchannels);
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerMaster.cxx b/hdspmixer/src/HDSPMixerMaster.cxx
new file mode 100644 (file)
index 0000000..d926fc9
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerMaster.h"
+
+HDSPMixerMaster::HDSPMixerMaster(int x, int y, int w, int h):Fl_Widget(x, y, 62, 12)
+{
+    basew = (HDSPMixerWindow *)window();
+    solo = mute = solo_active = mute_active = 0;
+}
+
+
+void HDSPMixerMaster::draw() 
+{
+    if (mute && mute_active) {
+       fl_push_clip(x(), y(), 29, 10);
+       fl_draw_pixmap(b_mute_xpm, x(), y());
+       fl_pop_clip();
+    } else if (mute) {
+       fl_push_clip(x(), y(), 29, 10);
+       fl_draw_pixmap(b_mute_xpm, x(), y()-10);
+       fl_pop_clip();
+    }  
+    if (solo && solo_active) {
+       fl_push_clip(x()+32, y(), 29, 10);
+       fl_draw_pixmap(b_solo_xpm, x()+32, y());
+       fl_pop_clip();
+    } else if (solo) {
+       fl_push_clip(x()+32, y(), 29, 10);
+       fl_draw_pixmap(b_solo_xpm, x()+32, y()-10);
+       fl_pop_clip();
+    }  
+}
+
+int HDSPMixerMaster::handle(int e)
+{
+    int xpos = Fl::event_x()-x();
+    int ypos = Fl::event_y()-y();
+    switch (e) {
+       case FL_PUSH:
+           if (xpos >= 0 && xpos <= 29) {
+               if (mute) {
+                   mute = 0;
+               } else {
+                   mute = 1;
+               }
+               for (int i = 0; i < basew->cards[basew->current_card]->channels; i++) {
+                   basew->inputs->strips[i]->mutesolo->redraw();
+                   basew->playbacks->strips[i]->mutesolo->redraw();
+               }
+               basew->refreshMixer();
+               redraw();
+               basew->checkState();
+               return 1;
+           }
+           if (xpos >= 32) {
+               if (solo) {
+                   solo = 0;
+               } else {
+                   solo = 1;
+               }
+               for (int i = 0; i < basew->cards[basew->current_card]->channels; i++) {
+                   basew->inputs->strips[i]->mutesolo->redraw();
+                   basew->playbacks->strips[i]->mutesolo->redraw();
+               }
+               basew->refreshMixer();
+               redraw();
+               basew->checkState();
+               return 1;
+           }
+       default:
+           return Fl_Widget::handle(e);
+    }    
+}
+
diff --git a/hdspmixer/src/HDSPMixerMaster.h b/hdspmixer/src/HDSPMixerMaster.h
new file mode 100644 (file)
index 0000000..302f1e0
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerMaster_H
+#define HDSPMixerMaster_H
+
+#include <FL/Fl.H>
+#include <FL/Fl_Widget.H>
+#include <FL/fl_draw.H>
+#include "HDSPMixerWindow.h"
+#include "pixmaps.h"
+
+class HDSPMixerWindow;
+
+class HDSPMixerMaster:public Fl_Widget
+{
+private:
+    HDSPMixerWindow *basew;
+public:
+    int solo, mute, solo_active, mute_active;
+    HDSPMixerMaster(int x, int y, int w, int h);
+    void draw();
+    int handle(int e);
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerMeter.cxx b/hdspmixer/src/HDSPMixerMeter.cxx
new file mode 100644 (file)
index 0000000..97ac971
--- /dev/null
@@ -0,0 +1,193 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerMeter.h"
+
+HDSPMixerMeter::HDSPMixerMeter(int x, int y, bool not_output, HDSPMixerPeak *p):Fl_Widget(x, y, 8, METER_HEIGHT)
+{
+    basew = (HDSPMixerWindow *)window();
+    count = 0;
+    fine_draw = 0;
+    peaktext = p;
+    new_peak_height = peak_height = 0;
+    new_rms_height = rms_height = 0;
+    fast_peak_level = 1000.0;
+    slow_peak_level = 1000.0;
+    max_level = 1000.0;
+    peak_rms = not_output;
+}
+
+void HDSPMixerMeter::draw()
+{
+    if (!fine_draw) {
+       fl_push_clip(x(), y()+(METER_HEIGHT-new_rms_height), w(), new_rms_height);
+       fl_draw_pixmap(level_xpm, x(), y());
+       fl_pop_clip();
+    } else {
+       if (new_rms_height > rms_height) {
+           fl_push_clip(x(), y()+(METER_HEIGHT-new_rms_height), w(), new_rms_height-rms_height);
+           fl_draw_pixmap(level_xpm, x(), y());
+           fl_pop_clip();
+       } else if (new_rms_height < rms_height) {
+           fl_push_clip(x(), y()+(METER_HEIGHT-rms_height), w(), rms_height-new_rms_height);
+           if (peak_rms) {
+               fl_draw_pixmap(iomixer_xpm, x()-20, y()-59);
+           } else {
+               fl_draw_pixmap(output_xpm, x()-20, y()-27);
+           }
+           fl_pop_clip();    
+       }
+    }
+    rms_height = new_rms_height;
+    
+    if ((new_peak_height != peak_height || !fine_draw) && peak_rms) {
+       if ((rms_height <= (peak_height - PEAK_HEIGHT)) || rms_height == 0) { 
+           fl_push_clip(x(), y()+(METER_HEIGHT - peak_height), w(), PEAK_HEIGHT+1);
+           if (peak_rms) {
+               fl_draw_pixmap(iomixer_xpm, x()-20, y()-59);
+           } else {
+               fl_draw_pixmap(output_xpm, x()-20, y()-27);
+           }
+           fl_pop_clip();
+       } else if (rms_height >= peak_height) {
+           fl_push_clip(x(), y()+(METER_HEIGHT - peak_height), w(), PEAK_HEIGHT+1);
+           fl_draw_pixmap(level_xpm, x(), y());
+           fl_pop_clip();
+       } else {
+           fl_push_clip(x(), y()+(METER_HEIGHT - peak_height), w(), peak_height - rms_height);
+           if (peak_rms) {
+               fl_draw_pixmap(iomixer_xpm, x()-20, y()-59);
+           } else {
+               fl_draw_pixmap(output_xpm, x()-20, y()-27);
+           }
+           fl_pop_clip();
+           fl_push_clip(x(), y()+(METER_HEIGHT - peak_height)+(peak_height - rms_height), w(), PEAK_HEIGHT - (peak_height - rms_height));
+           fl_draw_pixmap(level_xpm, x(), y());
+           fl_pop_clip();          
+       }
+       
+       if (new_peak_height > 0) {
+           fl_push_clip(x(), y()+(METER_HEIGHT-new_peak_height), w(), ((new_peak_height > METER_HEIGHT) ? METER_HEIGHT : new_peak_height));
+           fl_draw_pixmap(peak_xpm, x(), y()+(METER_HEIGHT-new_peak_height));
+           fl_pop_clip();          
+       }       
+       peak_height = new_peak_height;
+    }
+    fine_draw = 0;
+}
+
+int HDSPMixerMeter::logToHeight(double db)
+{
+    double x;
+    int h;
+    double max_db;
+    
+    max_db = basew->setup->level_val ? 60.0 : 40.0;
+    
+    if (db < max_db) {
+       x = (db /max_db) * double(METER_HEIGHT);
+       h = METER_HEIGHT - (int)x;
+    } else {
+       h = 0;
+    }
+    if (h < 0) h = 0;
+    return h;
+}
+
+void HDSPMixerMeter::update(int peak, int overs, int64 rms)
+{
+    int p;
+    double fp, fr, db;
+    int over = 0;
+    
+    if (!visible()) return;
+    
+
+    count++;
+    
+    if (overs >= basew->setup->over_val) {
+       over = 1;
+    }
+    
+    peak >>= 8;
+    peak &= 0x7FFFFF;
+
+    if (peak != 0) {
+       fp = (double)peak / (double)(0x7FFFFF);
+       db = -20 * log10(fp);
+    } else {
+       db = 1000.0;
+    }
+
+    switch (basew->setup->rate_val) {
+       case 0:
+           fast_peak_level += 0.030 * 8.3;
+           break;
+       case 1:
+           fast_peak_level += 0.030 * 15;
+           break;
+       case 2:
+           fast_peak_level += 0.030 * 23.7;
+           break;
+    }
+       
+    if (fast_peak_level > 138.47) fast_peak_level = 1000.0;
+    
+    if (db > fast_peak_level)
+       db = fast_peak_level;
+    else 
+       fast_peak_level = db;
+
+    new_peak_height = logToHeight(db);
+    
+    fr = (double)rms;
+    fr /= ((double)(1125899638407184.0)*(double)(8191.0));
+    fr = sqrt(fr);
+    
+    if (!peak_rms) {
+       new_rms_height = new_peak_height;
+    } else {
+       fr = -20 * log10(fr);
+       if (basew->setup->rmsplus3_val) {
+           fr -= 3.010299957;
+           if (fr < 0.0) fr = 0.0;
+       }
+       if (basew->setup->numbers_val == 0) db = fr;
+       new_rms_height = logToHeight(fr);
+    }
+
+
+    if (new_rms_height != rms_height || (new_peak_height != peak_height && peak_rms)) {
+       /* FIXME: may not be SMP safe */
+       redraw();
+    }    
+    
+    if (db < max_level) max_level = db;
+
+    if (count > 15 || over) {
+       count = 0;
+       if (max_level != slow_peak_level) {
+           peaktext->update(max_level, over);
+           slow_peak_level = max_level;
+       }
+       max_level = 1000.0;
+    }
+}
diff --git a/hdspmixer/src/HDSPMixerMeter.h b/hdspmixer/src/HDSPMixerMeter.h
new file mode 100644 (file)
index 0000000..cf8a767
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerMeter_H
+#define HDSPMixerMeter_H
+
+#include <FL/Fl_Widget.H>
+#include <FL/fl_draw.h>
+#include "HDSPMixerWindow.h"
+#include "HDSPMixerPeak.h"
+#include "pixmaps.h"
+#include "defines.h"
+
+class HDSPMixerWindow;
+class HDSPMixerPeak;
+
+class HDSPMixerMeter:public Fl_Widget
+{
+private:
+    HDSPMixerWindow *basew;
+    HDSPMixerPeak *peaktext;
+    int logToHeight(double db);
+    double fast_peak_level, max_level, slow_peak_level; 
+    bool peak_rms;
+    int peak_height, rms_height, count, new_peak_height, new_rms_height;
+public:
+    int fine_draw;
+    void draw();
+    void update(int peak, int overs, int64 rms);
+    HDSPMixerMeter(int x, int y, bool not_output, HDSPMixerPeak *p);
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerMuteSolo.cxx b/hdspmixer/src/HDSPMixerMuteSolo.cxx
new file mode 100644 (file)
index 0000000..3e738ca
--- /dev/null
@@ -0,0 +1,137 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerMuteSolo.h"
+
+HDSPMixerMuteSolo::HDSPMixerMuteSolo(int x, int y, int muteinit, int soloinit, int idx, int src):Fl_Widget(x, y, 30, 13)
+{
+    basew = (HDSPMixerWindow *)window();
+    source = src;
+    index = idx;
+    mute = muteinit;
+    solo = soloinit;
+}
+
+void HDSPMixerMuteSolo::draw()
+{
+    int gmute = basew->inputs->buttons->master->mute;
+    int gsolo = basew->inputs->buttons->master->solo;
+    int gsolo_active = basew->inputs->buttons->master->solo_active;
+    if (solo && gsolo) {
+       fl_push_clip(x()+17, y(), 13, 13);
+       fl_draw_pixmap(solo_xpm, x()+17, y());
+       fl_pop_clip();
+    } else if (solo) {
+       fl_push_clip(x()+17, y(), 13, 13);
+       fl_draw_pixmap(solo_xpm, x()+17, y()-13);
+       fl_pop_clip();
+    }
+    if (((mute && gmute) || (gsolo && gsolo_active)) && !(solo && gsolo)) {
+       fl_push_clip(x(), y(), 13, 13);
+       fl_draw_pixmap(mute_xpm, x(), y());
+       fl_pop_clip();
+    } else if (mute) {
+       fl_push_clip(x(), y(), 13, 13);
+       fl_draw_pixmap(mute_xpm, x(), y()-13);
+       fl_pop_clip();
+    }
+}
+
+void HDSPMixerMuteSolo::setMute(int m)
+{
+    if (m != mute) {
+       mute = m;
+       if (mute) {
+           basew->inputs->buttons->master->mute_active++;
+       } else {
+           basew->inputs->buttons->master->mute_active--;
+       }
+       basew->refreshMixerStrip(index, source);
+       redraw();
+    }
+}
+
+void HDSPMixerMuteSolo::setSolo(int s)
+{
+    if (s != solo) {
+       solo = s;
+       if (solo) {
+           basew->inputs->buttons->master->solo_active++;
+       } else {
+           basew->inputs->buttons->master->solo_active--;
+       }
+       basew->refreshMixer();
+       redraw_all();
+    }
+}
+
+int HDSPMixerMuteSolo::handle(int e)
+{
+    int button3 = Fl::event_button3();
+    int xpos = Fl::event_x()-x();
+    switch (e) {
+       case FL_PUSH:
+           if (xpos < 13) {
+               if (mute) {
+                   mute = 0;
+                   basew->inputs->buttons->master->mute_active--;
+               } else {
+                   mute = 1;
+                   basew->inputs->buttons->master->mute_active++;
+               }
+               basew->inputs->buttons->master->redraw();
+               basew->refreshMixerStrip(index, source);
+               redraw();
+               if (button3)
+                   relative->setMute(mute);
+           } else if (xpos > 16) {
+               if (solo) {
+                   solo = 0;
+                   basew->inputs->buttons->master->solo_active--;
+               } else {
+                   solo = 1;
+                   basew->inputs->buttons->master->solo_active++;
+               }
+               basew->inputs->buttons->master->redraw();
+               redraw();
+               basew->refreshMixerStrip(index, source);
+               if (button3) {
+                   relative->setSolo(solo);
+               } else {
+                   basew->refreshMixer();
+                   redraw_all();
+               }       
+           }
+           basew->checkState();
+           return 1;
+       default:
+           return Fl_Widget::handle(e);
+    }   
+}
+
+void HDSPMixerMuteSolo::redraw_all()
+{
+    for (int i = 0; i < (basew->cards[basew->current_card]->channels); ++i) {
+       basew->inputs->strips[i]->mutesolo->redraw();
+       basew->playbacks->strips[i]->mutesolo->redraw();        
+    }
+}
+
diff --git a/hdspmixer/src/HDSPMixerMuteSolo.h b/hdspmixer/src/HDSPMixerMuteSolo.h
new file mode 100644 (file)
index 0000000..a8ab0a4
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerMuteSolo_H
+#define HDSPMixerMuteSolo_H
+
+#include <FL/Fl.H>
+#include <FL/Fl_Widget.H>
+#include "HDSPMixerWindow.h"
+#include "pixmaps.h"
+
+class HDSPMixerWindow;
+
+class HDSPMixerMuteSolo:public Fl_Widget
+{
+private:
+    HDSPMixerWindow *basew;
+public:
+    HDSPMixerMuteSolo *relative;
+    int solo, mute, index, source;
+    HDSPMixerMuteSolo(int x, int y, int m, int s, int idx, int src);
+    void draw();
+    int handle(int e);
+    void setSolo(int s);
+    void setMute(int m);
+    void redraw_all();
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerOutput.cxx b/hdspmixer/src/HDSPMixerOutput.cxx
new file mode 100644 (file)
index 0000000..1f914b4
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerOutput.h"
+
+HDSPMixerOutput::HDSPMixerOutput(int x, int y, int w, int h, int num):Fl_Group(x, y, w, h)
+{
+
+    for (int j = 0; j < 3; ++j) {
+       for (int i = 0; i < 8; ++i) {
+           data[j][0][i] = new HDSPMixerOutputData();
+           data[j][1][i] = new HDSPMixerOutputData();
+       }
+    }
+    basew = (HDSPMixerWindow *)window();
+    setLabels();
+    out_num = num;
+    fader = new HDSPMixerFader(x+4, y+19, 65535.0, out_num+1, 2);
+    peak = new HDSPMixerPeak(x+3, y+4, 0);
+    gain = new HDSPMixerGain(x+3, y+175, 0);
+    meter = new HDSPMixerMeter(x+20, y+27, false, peak);
+    end();
+}
+
+void HDSPMixerOutput::setLabels()
+{
+    HDSP_IO_Type type = basew->cards[basew->current_card]->type;
+    int ds = basew->cards[basew->current_card]->double_speed;
+    if (type == Multiface && !ds) {
+       labels = labels_mf_ss;
+    } else if (type == Multiface && ds) {
+       labels = labels_mf_ds;
+    } else if (!ds) {
+       labels = labels_df_ss;
+    } else if (ds) {
+       labels = labels_df_ds;
+    }
+}
+
+void HDSPMixerOutput::draw_background()
+{
+    draw_background(x(), y(), w(), h());
+}
+
+void HDSPMixerOutput::draw_background(int xpos, int ypos, int w, int h)
+{
+    fl_push_clip(xpos, ypos, w, h);
+    fl_draw_pixmap(output_xpm, x(), y());
+    fl_pop_clip();    
+}
+
+void HDSPMixerOutput::draw()
+{
+    Fl_Widget*const* a = array();
+    if (damage() & ~FL_DAMAGE_CHILD) {
+       draw_background();
+       fl_color(FL_BLACK);
+       fl_font(FL_HELVETICA, 8);
+       fl_draw(labels[out_num], x()+4, y()+193, 27, 9, FL_ALIGN_CENTER);
+       for (int i=children(); i--;) {
+           Fl_Widget& o = **a++;
+           draw_child(o);
+       }
+    } else {
+       for (int i=children(); i--;) update_child(**a++);
+    }
+}
+
+void HDSPMixerOutput::update_child(Fl_Widget& widget) {
+    if (widget.damage() && widget.visible() && widget.type() < FL_WINDOW && fl_not_clipped(widget.x(), widget.y(), widget.w(), widget.h())) {
+       if ((HDSPMixerMeter *)&widget == meter) {
+           ((HDSPMixerMeter *)&widget)->fine_draw = 1;
+       } else {
+           draw_background(widget.x(), widget.y(), widget.w(), widget.h());
+       }
+       widget.draw();
+       widget.clear_damage();
+    }
+}
+
diff --git a/hdspmixer/src/HDSPMixerOutput.h b/hdspmixer/src/HDSPMixerOutput.h
new file mode 100644 (file)
index 0000000..5953634
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerOutput_H
+#define HDSPMixerOutput_H
+
+#include <FL/Fl.H>
+#include <FL/Fl_Group.H>
+#include <FL/fl_draw.H>
+#include <sound/hdsp.h>
+#include "HDSPMixerFader.h"
+#include "HDSPMixerPeak.h"
+#include "HDSPMixerGain.h"
+#include "HDSPMixerMeter.h"
+#include "HDSPMixerOutputData.h"
+#include "HDSPMixerWindow.h"
+#include "pixmaps.h"
+
+class HDSPMixerFader;
+class HDSPMixerGain;
+class HDSPMixerPeak;
+class HDSPMixerMeter;
+class HDSPMixerOutputData;
+class HDSPMixerWindow;
+
+static char *labels_mf_ss[20] = {
+    "AN 1", "AN 2", "AN 3", "AN 4", "AN 5", "AN 6", "AN 7", "AN 8",
+    "A 1", "A 2", "A 3", "A 4", "A 5", "A 6", "A 7", "A 8",
+    "SP.L", "SP.R", "AN.L", "AN.R"
+};
+
+static char *labels_mf_ds[16] = {
+    "AN 1", "AN 2", "AN 3", "AN 4", "AN 5", "AN 6", "AN 7", "AN 8",
+    "A 1", "A 2", "A 3", "A 4",
+    "SP.L", "SP.R", "AN.L", "AN.R"
+};
+
+static char *labels_df_ss[28] = {
+    "A1 1", "A1 2", "A1 3", "A1 4", "A1 5", "A1 6", "A1 7", "A1 8",
+    "A2 1", "A2 2", "A2 3", "A2 4", "A2 5", "A2 6", "A2 7", "A2 8",
+    "A3 1", "A3 2", "A3 3", "A3 4", "A3 5", "A3 6", "A3 7", "A3 8",
+    "SP.L", "SP.R", "AN.L", "AN.R"
+};
+
+static char *labels_df_ds[16] = {
+    "A1 1", "A1 2", "A1 3", "A1 4",
+    "A2 1", "A2 2", "A2 3", "A2 4",
+    "A3 1", "A3 2", "A3 3", "A3 4",
+    "SP.L", "SP.R", "AN.L", "AN.R"
+};
+
+class HDSPMixerOutput:public Fl_Group
+{
+private:
+    int out_num;
+    char **labels;
+    HDSPMixerPeak *peak;
+    HDSPMixerWindow *basew;    
+    void update_child(Fl_Widget& widget);
+public:
+    HDSPMixerOutputData *data[3][2][8]; /* data[card][mode(ds/ss)][preset number] */
+    HDSPMixerFader *fader;
+    HDSPMixerGain *gain;
+    HDSPMixerMeter *meter;
+    HDSPMixerOutput(int x, int y, int w, int h, int out);
+    void draw();
+    void draw_background();
+    void draw_background(int x, int y, int w, int h);
+    void setLabels();
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerOutputData.cxx b/hdspmixer/src/HDSPMixerOutputData.cxx
new file mode 100644 (file)
index 0000000..b9ea338
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerOutputData.h"
+
+HDSPMixerOutputData::HDSPMixerOutputData()
+{
+    fader_pos = 0;
+}
+
diff --git a/hdspmixer/src/HDSPMixerOutputData.h b/hdspmixer/src/HDSPMixerOutputData.h
new file mode 100644 (file)
index 0000000..885047b
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerOutputData_H
+#define HDSPMixerOutputData_H
+
+class HDSPMixerOutputData
+{
+public:
+    int fader_pos;
+    HDSPMixerOutputData();
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerOutputs.cxx b/hdspmixer/src/HDSPMixerOutputs.cxx
new file mode 100644 (file)
index 0000000..ab282e9
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerOutputs.h"
+
+HDSPMixerOutputs::HDSPMixerOutputs(int x, int y, int w, int h, int nchans):Fl_Group(x, y, w, h)
+{
+    int i;
+    for (i = 0; i < HDSP_MAX_CHANNELS+2; i += 2) {
+       strips[i] = new HDSPMixerOutput((i*STRIP_WIDTH), y, STRIP_WIDTH, SMALLSTRIP_HEIGHT, i); 
+       strips[i+1] = new HDSPMixerOutput(((i+1)*STRIP_WIDTH), y, STRIP_WIDTH, SMALLSTRIP_HEIGHT, i+1);
+       /* Setup linked stereo channels */
+       strips[i]->fader->relative = strips[i+1]->fader;
+       strips[i+1]->fader->relative = strips[i]->fader;
+       strips[i]->fader->gain = strips[i]->gain;
+       strips[i+1]->fader->gain = strips[i+1]->gain;
+    }
+    empty = new HDSPMixerEmpty(nchans*STRIP_WIDTH, y, 2*STRIP_WIDTH, SMALLSTRIP_HEIGHT, 0);
+    end();
+    resizable(NULL);
+}
+
diff --git a/hdspmixer/src/HDSPMixerOutputs.h b/hdspmixer/src/HDSPMixerOutputs.h
new file mode 100644 (file)
index 0000000..f443525
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerOutputs_H
+#define HDSPMixerOutputs_H
+
+#include <FL/Fl_Group.H>
+#include "HDSPMixerOutput.h"
+#include "HDSPMixerEmpty.h"
+#include "defines.h"
+
+class HDSPMixerOutput;
+class HDSPMixerEmpty;
+
+class HDSPMixerOutputs:public Fl_Group
+{
+public:
+    HDSPMixerEmpty *empty;
+    HDSPMixerOutput *strips[28];
+    HDSPMixerOutputs(int x, int y, int w, int h, int nchannels);
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerPan.cxx b/hdspmixer/src/HDSPMixerPan.cxx
new file mode 100644 (file)
index 0000000..edbd488
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerPan.h"
+
+HDSPMixerPan::HDSPMixerPan(int x, int y, int id, int src):Fl_Widget(x, y, 30, 13)
+{
+    source = src;
+    index = id;
+    basew = (HDSPMixerWindow *)window();
+    dest =  x_orig = shift_orig = lastpos = lastx = drag = 0;
+    for (int i = 0; i < 14; i++) {
+       pos[i] = 0;
+    }
+}
+
+void HDSPMixerPan::draw()
+{ 
+    fl_draw_pixmap(Slider2_xpm, x()+(int)(pos[dest]/CF), y());
+}
+
+int HDSPMixerPan::handle(int e)
+{
+    int button3 = Fl::event_button3();
+    int shift = Fl::event_shift();
+    int ctrl = Fl::event_ctrl();
+    int xpos = Fl::event_x()-x();
+    int ypos = Fl::event_y()-y();
+    switch (e) {
+       case FL_PUSH:
+           if (xpos > 0 && xpos < 30) {
+               if (ctrl) {
+                   pos[dest] = 14*CF;
+               } else {
+                   pos[dest] = (xpos-1)*CF;
+               }
+               if (lastx != (int)(pos[dest]/CF)) {
+                   redraw();
+                   lastx = (int)(pos[dest]/CF);
+               }
+               if (lastpos != pos[dest]) {
+                   basew->setMixer(index, source, dest);
+                   sendText();
+                   lastpos = pos[dest];
+               }
+               if (button3) relative->set(28*CF-pos[dest]);
+               shift_orig = pos[dest];
+               x_orig = xpos;
+               basew->checkState();
+           }
+           return 1;
+       case FL_DRAG:
+           if (ctrl) {
+               pos[dest] = 14*CF;
+               shift_orig = pos[dest];
+               x_orig = xpos;
+           } else if ((xpos > 0 && xpos < 30) || drag) {
+               drag = 1;
+               if (shift) {
+                   pos[dest] = ((xpos-1)-x_orig)+shift_orig;
+                   if (pos[dest] < 0) pos[dest] = 0;
+                   if (pos[dest] > 28*CF) pos[dest] = 28*CF;
+               } else {
+                   if (xpos < 1) {
+                       pos[dest] = 0;
+                   } else if (xpos > 29) {
+                       pos[dest] = 28*CF;
+                   } else {
+                       pos[dest] = (xpos-1)*CF;
+                   }
+                   shift_orig = pos[dest];
+                   x_orig = xpos;
+               }
+           }
+           if (lastpos != pos[dest]) {
+               basew->setMixer(index, source, dest);
+               sendText();
+               lastpos = pos[dest];
+           }
+           if (lastx != (int)(pos[dest]/CF)) {
+               redraw();
+               lastx = (int)(pos[dest]/CF);
+           }
+           if (button3) relative->set(28*CF-pos[dest]);
+           basew->checkState();
+           return 1;
+       case FL_RELEASE:
+           drag = 0;
+           return 1;   
+       default :
+           return Fl_Widget::handle(e);
+    }
+}
+
+void HDSPMixerPan::panToText(char *s) 
+{
+    double x;
+    
+    x = (double)pos[dest] / (double)(28*CF);
+    
+    if (pos[dest] < 28*CF/2) {
+       x = 1.0 - x;
+       snprintf(s, 10, "L %.2f", x);
+    } else if (pos[dest] > 28*CF/2) {
+       snprintf(s, 10, "R %.2f", x);
+    } else {
+       snprintf(s, 10, "<C>");
+    } 
+}
+void HDSPMixerPan::sendText() {
+    char buf[10];
+    panToText(buf);
+    ((HDSPMixerIOMixer *)parent())->gain->setText(buf);
+}
+
+void HDSPMixerPan::set(int p)
+{
+    if (pos[dest] != p) {
+       pos[dest] = lastpos = p;
+       basew->setMixer(index, source, dest);
+       sendText();
+    }
+    if (lastx != (int)(pos[dest]/CF)) {
+       lastx = (int)(pos[dest]/CF);
+       redraw();
+    }
+}
+
diff --git a/hdspmixer/src/HDSPMixerPan.h b/hdspmixer/src/HDSPMixerPan.h
new file mode 100644 (file)
index 0000000..9a95acb
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerPan_H
+#define HDSPMixerPan_H
+
+#include <FL/Fl.H>
+#include <FL/Fl_Widget.H>
+#include <FL/fl_draw.H>
+#include "HDSPMixerIOMixer.h"
+#include "HDSPMixerWindow.h"
+#include "pixmaps.h"
+
+class HDSPMixerIOMixer;
+class HDSPMixerWindow;
+
+class HDSPMixerPan:public Fl_Widget
+{
+private:
+    int drag, shift_orig,  x_orig, lastpos, lastx;
+    void sendText();
+    void panToText(char *s);
+public:
+    int pos[14];
+    int dest;
+    int index;
+    int source;
+    HDSPMixerWindow *basew;
+    HDSPMixerPan *relative;
+    HDSPMixerPan(int x, int y, int id, int src);
+    int handle(int e);
+    void draw();
+    void set(int pos);
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerPeak.cxx b/hdspmixer/src/HDSPMixerPeak.cxx
new file mode 100644 (file)
index 0000000..71a0e44
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerPeak.h"
+
+HDSPMixerPeak::HDSPMixerPeak(int x, int y, int parenttype):Fl_Widget(x, y, 30, 13)
+{
+    parent_iomixer = parenttype;
+    over = 0;
+    snprintf(text, 10, "-oo");
+}
+
+void HDSPMixerPeak::draw()
+{
+    if (over) {
+        fl_draw_pixmap(over_xpm, x(), y());
+    }
+    fl_color(FL_GREEN);
+    fl_font(FL_HELVETICA, 8);
+    fl_draw(text, x(), y(), w(), h(), FL_ALIGN_CENTER);
+}
+
+void HDSPMixerPeak::update(double maxlevel, int ovr) {
+    if (ovr) {
+       snprintf(text, 10, "Ovr");
+       over = 1;
+    } else {
+       over = 0;
+       if (maxlevel <= 0.001) {
+           snprintf(text, 10, "0.00");
+       } else if (maxlevel == 1000.0) {
+           snprintf(text, 10, "-oo");
+       } else if (maxlevel >= 100.0) {
+           snprintf(text, 10, "-%.1f", maxlevel);
+       } else {
+           snprintf(text, 10, "-%.2f", maxlevel);
+       }
+    }
+    redraw();    
+}
+
diff --git a/hdspmixer/src/HDSPMixerPeak.h b/hdspmixer/src/HDSPMixerPeak.h
new file mode 100644 (file)
index 0000000..29293ec
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerPeak_H
+#define HDSPMixerPeak_H
+
+#include <FL/Fl_Widget.H>
+#include <FL/fl_draw.H>
+#include "HDSPMixerIOMixer.h"
+#include "HDSPMixerOutput.h"
+
+class HDSPMixerIOMixer;
+class HDSPMixerOutput;
+
+class HDSPMixerPeak:public Fl_Widget
+{
+private:
+    int parent_iomixer, over;
+    char text[10];
+public:
+    HDSPMixerPeak(int x, int y, int parenttype);
+    void draw();
+    void update(double maxlevel, int over);
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerPlaybacks.cxx b/hdspmixer/src/HDSPMixerPlaybacks.cxx
new file mode 100644 (file)
index 0000000..febf5f8
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerPlaybacks.h"
+
+HDSPMixerPlaybacks::HDSPMixerPlaybacks(int x, int y, int w, int h, int nchans):Fl_Group(x, y, w, h)
+{
+    int i;
+    for (i = 0; i < HDSP_MAX_CHANNELS; i += 2) {
+       strips[i] = new HDSPMixerIOMixer((i*STRIP_WIDTH), y, STRIP_WIDTH, FULLSTRIP_HEIGHT, i+1, 1); 
+       strips[i+1] = new HDSPMixerIOMixer(((i+1)*STRIP_WIDTH), y, STRIP_WIDTH, FULLSTRIP_HEIGHT, i+2, 1); 
+       /* Setup linked stereo channels */
+       strips[i]->pan->relative = strips[i+1]->pan;
+       strips[i+1]->pan->relative = strips[i]->pan;
+       strips[i]->mutesolo->relative = strips[i+1]->mutesolo;
+       strips[i+1]->mutesolo->relative = strips[i]->mutesolo;
+       strips[i]->fader->relative = strips[i+1]->fader;
+       strips[i+1]->fader->relative = strips[i]->fader;
+       strips[i]->fader->gain = strips[i]->gain;
+       strips[i+1]->fader->gain = strips[i+1]->gain;
+       strips[i]->gain->relative = strips[i+1]->gain;
+       strips[i+1]->gain->relative = strips[i]->gain;
+    }
+    empty = new HDSPMixerEmpty(nchans*STRIP_WIDTH, y, 2*STRIP_WIDTH, FULLSTRIP_HEIGHT, 1);
+    end();
+    resizable(NULL);
+}
+
diff --git a/hdspmixer/src/HDSPMixerPlaybacks.h b/hdspmixer/src/HDSPMixerPlaybacks.h
new file mode 100644 (file)
index 0000000..f13dc0d
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerPlaybacks_H
+#define HDSPMixerPlaybacks_H
+
+#include <FL/Fl_Group.H>
+#include "HDSPMixerIOMixer.h"
+#include "HDSPMixerEmpty.h"
+
+class HDSPMixerEmpty;
+class HDSPMixerIOMixer;
+
+class HDSPMixerPlaybacks:public Fl_Group
+{
+public:
+    HDSPMixerEmpty *empty;
+    HDSPMixerIOMixer *strips[26];
+    HDSPMixerPlaybacks(int x, int y, int w, int h, int nchannels);
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerPresetData.cxx b/hdspmixer/src/HDSPMixerPresetData.cxx
new file mode 100644 (file)
index 0000000..276d101
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerPresetData.h"
+
+HDSPMixerPresetData::HDSPMixerPresetData()
+{
+    input = 1;
+    playback = 1;
+    output = 1;
+    submix = 1;
+    submix_value = 0;
+    mute = 0;
+    solo = 0;
+    last_destination = 0;    
+    rmsplus3 = 0;
+    numbers = 0;
+    over = 3;
+    level = 0;
+    rate = 1;
+}
+
diff --git a/hdspmixer/src/HDSPMixerPresetData.h b/hdspmixer/src/HDSPMixerPresetData.h
new file mode 100644 (file)
index 0000000..58536d3
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerPresetData_H
+#define HDSPMixerPresetData_H
+
+class HDSPMixerPresetData
+{
+public:
+    int mute;
+    int solo;
+    int input;
+    int playback;
+    int output;
+    int submix;
+    int submix_value;
+    int last_destination;
+    int level;
+    int numbers;
+    int over;
+    int rate;
+    int rmsplus3;
+    HDSPMixerPresetData();
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerPresets.cxx b/hdspmixer/src/HDSPMixerPresets.cxx
new file mode 100644 (file)
index 0000000..c84714c
--- /dev/null
@@ -0,0 +1,259 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerPresets.h"
+
+static void saving_cb(void *arg)
+{
+    HDSPMixerWindow *w = (HDSPMixerWindow *)arg;
+    if (w->inputs->buttons->presets->presetmask == 0 && w->dirty) {
+       w->inputs->buttons->presets->presetmask = (int)pow(2, w->inputs->buttons->presets->preset-1);
+    }
+    if (w->inputs->buttons->presets->saving) {
+       w->inputs->buttons->presets->presetmask = ~(w->inputs->buttons->presets->presetmask); 
+       if (w->inputs->buttons->presets->save) {
+           w->inputs->buttons->presets->save = 0;
+        } else {
+           w->inputs->buttons->presets->save = 1;
+       }        
+       Fl::add_timeout(0.3, saving_cb, arg);
+    } else {
+       w->inputs->buttons->presets->save = 0;
+       w->inputs->buttons->presets->presetmask = (int)pow(2, w->inputs->buttons->presets->preset-1);
+    }
+    w->inputs->buttons->presets->redraw();
+}
+
+HDSPMixerPresets::HDSPMixerPresets(int x, int y, int w, int h):Fl_Widget(x, y, 61, 52)
+{
+    basew = (HDSPMixerWindow *)window();
+    preset = 1;
+    presetmask = PRE1;
+    save = 0;
+    saving = 0;
+}
+
+void HDSPMixerPresets::draw() 
+{
+    if (presetmask & PRE1) {
+       fl_draw_pixmap(b_pre1_xpm, x(), y());   
+    }
+    if (presetmask & PRE2) {
+       fl_draw_pixmap(b_pre2_xpm, x()+16, y());
+    }
+    if (presetmask & PRE3) {
+       fl_draw_pixmap(b_pre3_xpm, x()+32, y());
+    }
+    if (presetmask & PRE4) {
+       fl_draw_pixmap(b_pre4_xpm, x()+48, y());
+    }
+    if (presetmask & PRE5) {
+        fl_draw_pixmap(b_pre5_xpm, x(), y()+20);
+    }
+    if (presetmask & PRE6) {
+       fl_draw_pixmap(b_pre6_xpm, x()+16, y()+20);
+    }
+    if (presetmask & PRE7) {
+       fl_draw_pixmap(b_pre7_xpm, x()+32, y()+20);
+    }
+    if (presetmask & PRE8) {
+        fl_draw_pixmap(b_pre8_xpm, x()+48, y()+20);
+    }
+    if (save) {
+       fl_draw_pixmap(b_save_xpm, x(), y()+39);
+    }
+}
+
+int HDSPMixerPresets::handle(int e)
+{
+    int xpos = Fl::event_x()-x();
+    int ypos = Fl::event_y()-y();
+    switch (e) {
+       case FL_PUSH:
+           if (ypos < 13 && xpos < 13) {
+               preset_change(1);
+           } else if (xpos > 15 && xpos < 29 && ypos < 13) {
+               preset_change(2);
+           } else if (xpos > 31 && xpos < 45 && ypos < 13) {
+               preset_change(3);
+           } else if (xpos > 47 && ypos < 13) {
+               preset_change(4);
+           } else if (ypos > 19 && ypos < 33 && xpos < 13) {
+               preset_change(5);
+           } else if (ypos > 19 && ypos < 33 && xpos > 15 && xpos < 29) {
+               preset_change(6);
+           } else if (ypos > 19 && ypos < 33 && xpos > 31 && xpos < 45) {
+               preset_change(7);
+           } else if (ypos > 19 && ypos < 33 && xpos > 47) {
+               preset_change(8);
+           } else if (xpos < 12 && ypos > 38) {
+               if (saving) {
+                   saving = 0;
+                   save = 0;
+               } else {
+                   saving = 1;
+                   save = 1;
+                   Fl::add_timeout(0.3, saving_cb, (void *)basew);
+               }
+               redraw();
+           }
+           return 1;
+       default:
+           return Fl_Widget::handle(e);
+    }    
+}
+
+void HDSPMixerPresets::save_preset(int prst) {
+    int speed = basew->cards[basew->current_card]->double_speed;
+    int card = basew->current_card;
+    int p = prst-1;
+    basew->dirty = 0;
+    for (int i = 0; i < HDSP_MAX_CHANNELS; i++) {
+       for (int z = 0; z < HDSP_MAX_DEST; z++) {
+           basew->inputs->strips[i]->data[card][speed][p]->pan_pos[z] = basew->inputs->strips[i]->pan->pos[z];
+           basew->inputs->strips[i]->data[card][speed][p]->fader_pos[z] = basew->inputs->strips[i]->fader->pos[z];
+           basew->playbacks->strips[i]->data[card][speed][p]->pan_pos[z] = basew->playbacks->strips[i]->pan->pos[z];
+           basew->playbacks->strips[i]->data[card][speed][p]->fader_pos[z] = basew->playbacks->strips[i]->fader->pos[z];
+       }
+
+       basew->inputs->strips[i]->data[card][speed][p]->mute = basew->inputs->strips[i]->mutesolo->mute;
+       basew->inputs->strips[i]->data[card][speed][p]->solo = basew->inputs->strips[i]->mutesolo->solo;
+       basew->inputs->strips[i]->data[card][speed][p]->dest = basew->inputs->strips[i]->targets->selected;
+
+       basew->playbacks->strips[i]->data[card][speed][p]->mute = basew->playbacks->strips[i]->mutesolo->mute;
+       basew->playbacks->strips[i]->data[card][speed][p]->solo = basew->playbacks->strips[i]->mutesolo->solo;
+       basew->playbacks->strips[i]->data[card][speed][p]->dest = basew->playbacks->strips[i]->targets->selected;
+       
+       basew->outputs->strips[i]->data[card][speed][p]->fader_pos = basew->outputs->strips[i]->fader->pos[0];
+    }
+    /* Line outs */
+    basew->outputs->strips[HDSP_MAX_CHANNELS]->data[card][speed][p]->fader_pos = basew->outputs->strips[HDSP_MAX_CHANNELS]->fader->pos[0];
+    basew->outputs->strips[HDSP_MAX_CHANNELS+1]->data[card][speed][p]->fader_pos = basew->outputs->strips[HDSP_MAX_CHANNELS+1]->fader->pos[0];
+    
+    /* Global settings */    
+    basew->data[card][speed][p]->input = basew->inputs->buttons->view->input;
+    basew->data[card][speed][p]->output = basew->inputs->buttons->view->output;
+    basew->data[card][speed][p]->playback = basew->inputs->buttons->view->playback;
+    basew->data[card][speed][p]->submix = basew->inputs->buttons->view->submix;
+    basew->data[card][speed][p]->submix_value = basew->inputs->buttons->view->submix_value;
+    basew->data[card][speed][p]->solo = basew->inputs->buttons->master->solo;
+    basew->data[card][speed][p]->mute = basew->inputs->buttons->master->mute;
+    basew->data[card][speed][p]->over = basew->setup->over_val;
+    basew->data[card][speed][p]->rate = basew->setup->rate_val;
+    basew->data[card][speed][p]->level = basew->setup->level_val;
+    basew->data[card][speed][p]->numbers = basew->setup->numbers_val;
+    basew->data[card][speed][p]->rmsplus3 = basew->setup->rmsplus3_val;
+}
+
+void HDSPMixerPresets::restore_preset(int prst) {
+    int speed = basew->cards[basew->current_card]->double_speed;
+    int card = basew->current_card;
+    int p = prst-1;
+    basew->dirty = 0;
+    basew->inputs->buttons->master->solo_active = 0;
+    basew->inputs->buttons->master->mute_active = 0;
+    
+    for (int i = 0; i < HDSP_MAX_CHANNELS; i++) {
+       for (int z = 0; z < HDSP_MAX_DEST; z++) {
+           basew->inputs->strips[i]->pan->pos[z] = basew->inputs->strips[i]->data[card][speed][p]->pan_pos[z];
+           basew->inputs->strips[i]->fader->pos[z] = basew->inputs->strips[i]->data[card][speed][p]->fader_pos[z];
+           basew->playbacks->strips[i]->pan->pos[z] = basew->playbacks->strips[i]->data[card][speed][p]->pan_pos[z];
+           basew->playbacks->strips[i]->fader->pos[z] = basew->playbacks->strips[i]->data[card][speed][p]->fader_pos[z];
+       }
+       
+       basew->inputs->buttons->master->mute_active += (basew->inputs->strips[i]->mutesolo->mute = basew->inputs->strips[i]->data[card][speed][p]->mute);
+       basew->inputs->buttons->master->solo_active += (basew->inputs->strips[i]->mutesolo->solo = basew->inputs->strips[i]->data[card][speed][p]->solo);
+       basew->inputs->strips[i]->targets->selected = basew->inputs->strips[i]->data[card][speed][p]->dest;
+
+       basew->inputs->buttons->master->mute_active += (basew->playbacks->strips[i]->mutesolo->mute = basew->playbacks->strips[i]->data[card][speed][p]->mute);
+       basew->inputs->buttons->master->solo_active += (basew->playbacks->strips[i]->mutesolo->solo = basew->playbacks->strips[i]->data[card][speed][p]->solo);
+       basew->playbacks->strips[i]->targets->selected = basew->playbacks->strips[i]->data[card][speed][p]->dest;
+       
+       basew->outputs->strips[i]->fader->pos[0] = basew->outputs->strips[i]->data[card][speed][p]->fader_pos;
+    }
+    /* Line outs */
+    basew->outputs->strips[HDSP_MAX_CHANNELS]->fader->pos[0] = basew->outputs->strips[HDSP_MAX_CHANNELS+1]->data[card][speed][p]->fader_pos;
+    basew->outputs->strips[HDSP_MAX_CHANNELS+1]->fader->pos[0] = basew->outputs->strips[HDSP_MAX_CHANNELS+1]->data[card][speed][p]->fader_pos;
+
+    for (int i = 0; i < basew->cards[card]->channels; ++i) {
+       basew->inputs->strips[i]->fader->sendGain();
+       basew->inputs->strips[i]->redraw();
+       basew->playbacks->strips[i]->fader->sendGain();
+       basew->playbacks->strips[i]->redraw();
+       basew->outputs->strips[i]->fader->sendGain();
+       basew->outputs->strips[i]->redraw();
+    }
+    basew->outputs->strips[basew->cards[card]->channels]->fader->sendGain();
+    basew->outputs->strips[basew->cards[card]->channels]->redraw();
+    basew->outputs->strips[basew->cards[card]->channels+1]->fader->sendGain();
+    basew->outputs->strips[basew->cards[card]->channels+1]->redraw();
+
+    /* Global settings */
+    basew->inputs->buttons->view->input = basew->data[card][speed][p]->input;
+    basew->inputs->buttons->view->output = basew->data[card][speed][p]->output;
+    basew->inputs->buttons->view->playback = basew->data[card][speed][p]->playback; 
+    basew->inputs->buttons->view->submix = basew->data[card][speed][p]->submix;
+    basew->inputs->buttons->view->submix_value = basew->data[card][speed][p]->submix_value;
+    if (basew->inputs->buttons->view->submix) {
+       basew->setSubmix(basew->inputs->buttons->view->submix_value);
+       basew->menubar->mode(12, FL_MENU_TOGGLE|FL_MENU_VALUE);
+    } else {
+       basew->menubar->mode(12, FL_MENU_TOGGLE);
+    }
+    basew->inputs->buttons->master->solo = basew->data[card][speed][p]->solo;
+    basew->inputs->buttons->master->mute = basew->data[card][speed][p]->mute;
+    basew->inputs->buttons->redraw();
+    basew->reorder();
+    
+    basew->setup->over_val = basew->data[card][speed][p]->over;
+    basew->setup->rate_val = basew->data[card][speed][p]->rate;
+    basew->setup->numbers_val = basew->data[card][speed][p]->numbers;
+    basew->setup->rmsplus3_val = basew->data[card][speed][p]->rmsplus3;
+    basew->setup->level_val = basew->data[card][speed][p]->level;
+    basew->setup->updateValues();
+
+    if (basew->inputs->buttons->view->submix) {
+       basew->setSubmix(basew->inputs->buttons->view->submix_value);
+    } else {
+       basew->unsetSubmix();
+    }
+    basew->refreshMixer();
+
+#ifdef NON_MODAL_SETUP
+    if (basew->setup->shown()) {
+       basew->setup->redraw();
+    }
+#endif
+}
+
+void HDSPMixerPresets::preset_change(int p) {
+    preset = p;
+    basew->current_preset = preset-1;
+    presetmask = (int)pow(2, preset-1);
+    if (saving) {
+       saving = 0;
+       save_preset(p);
+    } else {
+       restore_preset(p);
+    }
+    redraw();
+}
+
diff --git a/hdspmixer/src/HDSPMixerPresets.h b/hdspmixer/src/HDSPMixerPresets.h
new file mode 100644 (file)
index 0000000..58737bb
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerPresets_H
+#define HDSPMixerPresets_H
+
+#include <math.h>
+#include <FL/Fl.H>
+#include <FL/Fl_Widget.H>
+#include <FL/fl_draw.H>
+#include "HDSPMixerWindow.h"
+#include "pixmaps.h"
+
+class HDSPMixerWindow;
+
+enum presets {
+    NONE = 0,
+    PRE1 = 1,
+    PRE2 = 2,
+    PRE3 = 4,
+    PRE4 = 8,
+    PRE5 = 16,
+    PRE6 = 32,
+    PRE7 = 64,
+    PRE8 = 128,
+};
+
+
+class HDSPMixerPresets:public Fl_Widget
+{
+private:
+    HDSPMixerWindow *basew;
+public:
+    int preset, presetmask, save, saving;
+    HDSPMixerPresets(int x, int y, int w, int h);
+    void draw();
+    int handle(int e);
+    void restore_preset(int preset);
+    void save_preset(int preset);
+    void preset_change(int preset);
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerSelector.cxx b/hdspmixer/src/HDSPMixerSelector.cxx
new file mode 100644 (file)
index 0000000..25259e1
--- /dev/null
@@ -0,0 +1,122 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerSelector.h"
+
+HDSPMixerSelector::HDSPMixerSelector(int x, int y, int w, int h):Fl_Menu_(x, y, w, h)
+{
+    max_dest = 0;
+    selected = 0;
+    basew = (HDSPMixerWindow *)window();
+    setLabels();
+    textfont(FL_HELVETICA);
+    textsize(8);
+    textcolor(FL_BLACK);
+}
+
+void HDSPMixerSelector::draw() {
+    fl_color(FL_WHITE);
+    fl_font(FL_HELVETICA, 8);
+    fl_draw((char *)mvalue()->label(), x(), y(), w(), h(), FL_ALIGN_CENTER);
+}
+
+int HDSPMixerSelector::handle(int e) {
+    const Fl_Menu_Item *item;
+    int xpos = Fl::event_x()-x();
+    int ypos = Fl::event_y()-y();
+    switch(e) {
+       case FL_PUSH:
+           for (int i = 0; i < max_dest; i++) {
+               if (((HDSPMixerIOMixer *)parent())->fader->pos[i] != 0) {
+                   mode(i, FL_MENU_TOGGLE|FL_MENU_VALUE);
+               } else {
+                   mode(i, FL_MENU_TOGGLE);
+               }
+           }    
+           if ((item = (menu()->popup(x(), y()+h(), 0, 0, this))) != NULL) {
+               value(item);
+               selected = value();
+               if (basew->inputs->buttons->view->submix) {
+                   basew->inputs->buttons->view->submix_value = value();
+                   for (int i = 0; i < HDSP_MAX_CHANNELS; i++) {
+                       basew->inputs->strips[i]->targets->value(value());
+                       basew->inputs->strips[i]->targets->redraw();
+                       basew->playbacks->strips[i]->targets->value(value());
+                       basew->playbacks->strips[i]->targets->redraw();
+                       basew->inputs->strips[i]->fader->dest = value();
+                       basew->inputs->strips[i]->fader->redraw();
+                       basew->inputs->strips[i]->fader->sendGain();
+                       basew->playbacks->strips[i]->fader->dest = value();
+                       basew->playbacks->strips[i]->fader->redraw();
+                       basew->playbacks->strips[i]->fader->sendGain();
+                       basew->inputs->strips[i]->pan->dest = value();
+                       basew->inputs->strips[i]->pan->redraw();
+                       basew->playbacks->strips[i]->pan->dest = value();
+                       basew->playbacks->strips[i]->pan->redraw();
+                   }
+               } else {
+                   ((HDSPMixerIOMixer *)parent())->fader->dest = value();
+                   ((HDSPMixerIOMixer *)parent())->fader->redraw();
+                   ((HDSPMixerIOMixer *)parent())->pan->dest = value();
+                   ((HDSPMixerIOMixer *)parent())->pan->redraw();
+                   ((HDSPMixerIOMixer *)parent())->fader->sendGain();
+               }
+               redraw();
+           }
+           basew->checkState();
+           return 1;
+       default:
+           return Fl_Menu_::handle(e);
+    }
+}
+
+void HDSPMixerSelector::setLabels()
+{
+    HDSP_IO_Type type;
+    int ds;
+    clear();
+    type = basew->cards[basew->current_card]->type;
+    ds = basew->cards[basew->current_card]->double_speed;
+    if (type == Multiface && !ds) {
+       max_dest = 10;
+       destinations = destinations_mf_ss;
+    } else if (type == Multiface && ds) {
+       max_dest = 8;
+       destinations = destinations_mf_ds;
+    } else if (type == Digiface && !ds) {
+       max_dest = 14;
+       destinations = destinations_df_ss;
+    } else if (type == Digiface && ds) {
+       max_dest = 8;
+       destinations = destinations_df_ds;
+    } else if (type == H9652 && !ds) {
+       max_dest = 13;
+       destinations = destinations_h9652_ss;
+    } else if (type == H9652 && ds) {
+       max_dest = 7;
+       destinations = destinations_h9652_ds;
+    }
+    for (int i = 0; i < max_dest; ++i) {
+       add(destinations[i], 0, 0, 0, FL_MENU_TOGGLE);
+    }
+    value(0);
+}
+
diff --git a/hdspmixer/src/HDSPMixerSelector.h b/hdspmixer/src/HDSPMixerSelector.h
new file mode 100644 (file)
index 0000000..b52a887
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerSelector_H
+#define HDSPMixerSelector_H
+
+#include <stdio.h>
+#include <FL/Fl.H>
+#include <FL/Fl_Menu_.H>
+#include <FL/Fl_Menu_Item.H>
+#include <FL/fl_draw.H>
+#include <sound/hdsp.h>
+#include "HDSPMixerWindow.h"
+#include "HDSPMixerIOMixer.h"
+#include "defines.h"
+
+class HDSPMixerWindow;
+class HDSPMixerIOMixer;
+
+static char *destinations_mf_ss[10] = {
+    "AN 1+2", "AN 3+4", "AN 5+6", "AN 7+8",
+    "A 1+2", "A 3+4", "A 5+6", "A 7+8",
+    "SPDIF", "Analog"
+};
+
+static char *destinations_mf_ds[8] = {
+    "AN 1+2", "AN 3+4", "AN 5+6", "AN 7+8",
+    "A 1+2", "A 3+4",
+    "SPDIF", "Analog"
+};
+
+static char *destinations_df_ss[14] = {
+    "A1 1+2", "A1 3+4", "A1 5+6", "A1 7+8",
+    "A2 1+2", "A2 3+4", "A2 5+6", "A2 7+8",
+    "A3 1+2", "A3 3+4", "A3 5+6", "A3 7+8",
+    "SPDIF", "Analog"
+};
+
+static char *destinations_df_ds[8] = {
+    "A1 1+2", "A1 3+4",
+    "A2 1+2", "A2 3+4",
+    "A3 1+2", "A3 3+4",
+    "SPDIF", "Analog"
+};
+
+static char *destinations_h9652_ss[13] = {
+    "A1 1+2", "A1 3+4", "A1 5+6", "A1 7+8",
+    "A2 1+2", "A2 3+4", "A2 5+6", "A2 7+8",
+    "A3 1+2", "A3 3+4", "A3 5+6", "A3 7+8",
+    "SPDIF"
+};
+
+static char *destinations_h9652_ds[7] = {
+    "A1 1+2", "A1 3+4",
+    "A2 1+2", "A2 3+4",
+    "A3 1+2", "A3 3+4",
+    "SPDIF"
+};
+
+class HDSPMixerSelector:public Fl_Menu_
+{
+private:
+    char **destinations;
+    HDSPMixerWindow *basew;
+public:
+    int max_dest;
+    int selected;
+    HDSPMixerSelector(int x, int y, int w, int h);
+    void draw();
+    int handle(int e);
+    void select(int element);
+    void setLabels();
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerSetup.cxx b/hdspmixer/src/HDSPMixerSetup.cxx
new file mode 100644 (file)
index 0000000..6fa3551
--- /dev/null
@@ -0,0 +1,195 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerSetup.h"
+
+static void rate_cb(Fl_Widget *widget, void *arg)
+{
+    HDSPMixerWindow *w = (HDSPMixerWindow *)arg;
+    const Fl_Menu_Item *i = ((Fl_Menu_ *)widget)->mvalue();
+    if (!strncmp("s", i->label(), 1)) {
+       w->setup->rate_val = 0;
+    } else if (!strncmp("m", i->label(), 1)) {
+       w->setup->rate_val = 1;
+    } else {
+       w->setup->rate_val = 2;
+    }
+    w->checkState();
+}
+
+static void ok_cb(Fl_Widget *widget, void *arg)
+{
+    HDSPMixerSetup *s = (HDSPMixerSetup *)arg;
+    s->hide();
+}
+
+
+static void peak_cb(Fl_Widget *widget, void *arg)
+{
+    HDSPMixerWindow *w = (HDSPMixerWindow *)arg;
+    w->setup->numbers_val = 1;
+    w->checkState();
+}
+
+static void rms_cb(Fl_Widget *widget, void *arg)
+{
+    HDSPMixerWindow *w = (HDSPMixerWindow *)arg;
+    w->setup->numbers_val = 0;
+    w->checkState();
+}
+
+
+static void fourty_cb(Fl_Widget *widget, void *arg)
+{
+    HDSPMixerWindow *w = (HDSPMixerWindow *)arg;
+    w->setup->level_val = 0;
+    w->checkState();
+}
+
+static void sixty_cb(Fl_Widget *widget, void *arg)
+{
+    HDSPMixerWindow *w = (HDSPMixerWindow *)arg;
+    w->setup->level_val = 1;
+    w->checkState();
+}
+
+static void over_cb(Fl_Widget *widget, void *arg)
+{
+    HDSPMixerWindow *w = (HDSPMixerWindow *)arg;
+    w->setup->over_val = (int)w->setup->over->value();
+    w->checkState();
+}
+
+
+static void rmsplus3_cb(Fl_Widget *widget, void *arg)
+{
+    HDSPMixerWindow *w = (HDSPMixerWindow *)arg;
+    if (w->setup->rmsplus3->value()) {
+       w->setup->rmsplus3_val = 1;
+    } else {
+       w->setup->rmsplus3_val = 0;
+    }
+    w->checkState();
+}
+
+
+HDSPMixerSetup::HDSPMixerSetup(int w, int h, char *label, HDSPMixerWindow *win):Fl_Double_Window(w, h, label)
+{
+    basew = win;
+    plm = new Fl_Group(10, 25, 380, 60, "Peak Level Meters");    
+    plm->labelfont(FL_HELVETICA);
+    plm->labelsize(12);
+    plm->align(FL_ALIGN_TOP_LEFT);
+    plm->box(FL_ENGRAVED_FRAME);
+    over = new Fl_Counter(30, 50, 50, 20, "FS samples for OVR  ");
+    over->callback((Fl_Callback *)over_cb, (void *)basew);
+    over->type(FL_SIMPLE_COUNTER);
+    over->bounds(1, 15);
+    over->step(1);
+    over->value(3);
+    over_val = 3;
+    over->labelfont(FL_HELVETICA);
+    over->labelsize(12);
+    over->align(FL_ALIGN_TOP_LEFT);
+    rate = new Fl_Choice(230, 50, 80, 20, "Release Rate  ");
+    rate->align(FL_ALIGN_TOP_LEFT);
+    rate->labelfont(FL_HELVETICA);
+    rate->labelsize(12);
+    rate->add("slow", 0, (Fl_Callback *)rate_cb, (void *)basew);
+    rate->add("medium", 0, (Fl_Callback *)rate_cb, (void *)basew);
+    rate->add("high", 0, (Fl_Callback *)rate_cb, (void *)basew);
+    rate->value(1);
+    rate_val = 1;
+    plm->end();
+    numbers = new Fl_Group(10, 110, 180, 60, "Numbers");
+    numbers->box(FL_ENGRAVED_FRAME);
+    numbers->labelfont(FL_HELVETICA);
+    numbers->labelsize(12);
+    numbers->align(FL_ALIGN_TOP_LEFT);    
+    rms = new Fl_Round_Button(30, 120, 60, 20, "RMS");
+    rms->labelfont(FL_HELVETICA);
+    rms->labelsize(12);
+    rms->callback((Fl_Callback *)rms_cb, (void *)basew);
+    rms->set();
+    numbers_val = 0;
+    rms->type(FL_RADIO_BUTTON);
+    peak = new Fl_Round_Button(30, 140, 60, 20, "Peak");
+    peak->labelfont(FL_HELVETICA);
+    peak->labelsize(12);
+    peak->type(FL_RADIO_BUTTON);
+    peak->callback((Fl_Callback *)peak_cb, (void *)basew);
+    numbers->end();
+    level = new Fl_Group(210, 110, 180, 60, "Minimum Level");
+    level->box(FL_ENGRAVED_FRAME);
+    level->labelfont(FL_HELVETICA);
+    level->labelsize(12);
+    level->align(FL_ALIGN_TOP_LEFT);
+    fourty = new Fl_Round_Button(230, 120, 60, 20, "-40 dB");
+    fourty->labelfont(FL_HELVETICA);
+    fourty->labelsize(12);
+    fourty->type(FL_RADIO_BUTTON);
+    fourty->set();
+    level_val = 0;
+    fourty->callback((Fl_Callback *)fourty_cb, (void *)basew);
+    sixty = new Fl_Round_Button(230, 140, 60, 20, "-60 dB");
+    sixty->labelfont(FL_HELVETICA);
+    sixty->labelsize(12);
+    sixty->type(FL_RADIO_BUTTON);
+    sixty->callback((Fl_Callback *)sixty_cb, (void *)basew);
+    level->end();
+    rmsplus3grp = new Fl_Group(10, 190, 180, 60);
+    rmsplus3grp->box(FL_ENGRAVED_FRAME);
+    rmsplus3 = new Fl_Check_Button(30, 210, 100, 20, "RMS +3dB");
+    rmsplus3->labelfont(FL_HELVETICA);
+    rmsplus3->labelsize(12);
+    rmsplus3->callback((Fl_Callback *)rmsplus3_cb, (void *)basew);
+    rmsplus3_val = 0;
+    rmsplus3grp->end();
+    ok = new Fl_Return_Button(270, 210, 60, 20, "OK");
+    ok->callback((Fl_Callback *)ok_cb, (void *)this);
+    end();
+#ifndef NON_MODAL_SETUP
+    set_modal();
+#endif
+}
+
+void HDSPMixerSetup::updateValues()
+{
+    rmsplus3->value(rmsplus3_val);
+    if (level_val) {
+       sixty->setonly();
+    } else {
+       fourty->setonly();
+    }
+    if (numbers_val) {
+       peak->setonly();
+    } else {
+       rms->setonly();
+    }
+    over->value(over_val);
+    rate->value(rate_val);    
+#ifdef NON_MODAL_SETUP
+    if (shown()) {
+       redraw();
+    }
+#endif
+}
+
diff --git a/hdspmixer/src/HDSPMixerSetup.h b/hdspmixer/src/HDSPMixerSetup.h
new file mode 100644 (file)
index 0000000..78d010d
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerSetup_H
+#define HDSPMixerSetup_H
+
+#include <string.h>
+#include <FL/Fl_Double_Window.H>
+#include <FL/Fl_Group.H>
+#include <FL/Fl_Counter.H>
+#include <FL/Fl_Choice.H>
+#include <FL/Fl_Round_Button.H>
+#include <FL/Fl_Check_Button.H>
+#include <FL/Fl_Return_Button.H>
+#include "HDSPMixerWindow.h"
+
+class HDSPMixerWindow;
+
+class HDSPMixerSetup:public Fl_Double_Window
+{
+public:
+    Fl_Group *plm;
+    Fl_Group *numbers;
+    Fl_Group *level;
+    Fl_Group *rmsplus3grp;
+    Fl_Counter *over;
+    Fl_Choice *rate;
+    Fl_Round_Button *rms;
+    Fl_Round_Button *peak;
+    Fl_Round_Button *fourty;
+    Fl_Round_Button *sixty;
+    Fl_Check_Button *rmsplus3;
+    Fl_Return_Button *ok;
+    int rate_val;
+    int over_val;
+    int level_val;
+    int numbers_val;
+    int rmsplus3_val;
+    HDSPMixerSetup(int w, int h, char *label, HDSPMixerWindow *w);
+    HDSPMixerWindow *basew;
+    void updateValues();
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerStripData.cxx b/hdspmixer/src/HDSPMixerStripData.cxx
new file mode 100644 (file)
index 0000000..7aa31ea
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerStripData.h"
+
+HDSPMixerStripData::HDSPMixerStripData() {
+    dest = mute = solo = 0;
+    for (int i = 0; i < 14; i++) {
+       fader_pos[i] = pan_pos[i] = 0;
+    }
+}
+
diff --git a/hdspmixer/src/HDSPMixerStripData.h b/hdspmixer/src/HDSPMixerStripData.h
new file mode 100644 (file)
index 0000000..3d6cdb8
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerStripData_H
+#define HDSPMixerStripData_H
+
+
+class HDSPMixerStripData
+{
+public:
+    int mute;
+    int solo;
+    int pan_pos[14];
+    int fader_pos[14];
+    int dest;
+    HDSPMixerStripData();
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerView.cxx b/hdspmixer/src/HDSPMixerView.cxx
new file mode 100644 (file)
index 0000000..7c6bb29
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerView.h"
+
+HDSPMixerView::HDSPMixerView(int x, int y, int w, int h):Fl_Widget(x, y, 13, 76)
+{
+    basew = (HDSPMixerWindow *)window();
+    submix = input = playback = output = 1;
+    submix_value = 0;
+}
+
+
+void HDSPMixerView::draw() 
+{
+    if (input) {
+       fl_draw_pixmap(b_blank_xpm, x(), y());
+    }
+    if (playback) {
+       fl_draw_pixmap(b_blank_xpm, x(), y()+20);
+    }
+    if (output) {
+       fl_draw_pixmap(b_blank_xpm, x(), y()+40);
+    }
+    if (submix) {
+       fl_draw_pixmap(b_blank_xpm, x(), y()+63);
+    }
+}
+
+int HDSPMixerView::handle(int e)
+{
+    int xpos = Fl::event_x()-x();
+    int ypos = Fl::event_y()-y();
+    switch (e) {
+       case FL_PUSH:
+           if (ypos < 13) {
+               if (input) {
+                   input = 0;
+                   basew->menubar->mode(9, FL_MENU_TOGGLE);
+                } else {
+                   basew->menubar->mode(9, FL_MENU_TOGGLE|FL_MENU_VALUE);
+                   input = 1;
+               }
+               redraw();
+               basew->reorder();
+           } else if (ypos >= 20 && ypos < 33) {
+               if (playback) {
+                   basew->menubar->mode(10, FL_MENU_TOGGLE);
+                   playback = 0;
+               } else {
+                   basew->menubar->mode(10, FL_MENU_TOGGLE|FL_MENU_VALUE);
+                   playback = 1;
+               }
+               redraw();
+               basew->reorder();
+           } else if (ypos >= 40 && ypos < 53) {
+               if (output) {
+                   basew->menubar->mode(11, FL_MENU_TOGGLE|FL_MENU_DIVIDER);
+                   output = 0;
+               } else {
+                   basew->menubar->mode(11, FL_MENU_TOGGLE|FL_MENU_VALUE|FL_MENU_DIVIDER);
+                   output = 1;
+               }
+               redraw();
+               basew->reorder();
+           } else if (ypos >= 63) {
+               if (submix) {
+                   basew->menubar->mode(12, FL_MENU_TOGGLE);
+                   submix = 0;
+                   basew->unsetSubmix();
+               } else {
+                   basew->menubar->mode(12, FL_MENU_TOGGLE|FL_MENU_VALUE);
+                   basew->setSubmix(submix_value);
+                   submix = 1;
+               }
+               redraw();
+               basew->reorder();
+           }
+           basew->checkState();
+           return 1;
+       default:
+           return Fl_Widget::handle(e);
+    }    
+}
+
diff --git a/hdspmixer/src/HDSPMixerView.h b/hdspmixer/src/HDSPMixerView.h
new file mode 100644 (file)
index 0000000..dfa492a
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerView_H
+#define HDSPMixerView_H
+
+#include <FL/Fl.H>
+#include <FL/Fl_Widget.H>
+#include <FL/fl_draw.H>
+#include "HDSPMixerWindow.h"
+#include "pixmaps.h"
+
+class HDSPMixerWindow;
+
+class HDSPMixerView:public Fl_Widget
+{
+private:
+    HDSPMixerWindow *basew;
+public:
+    int input, playback, output, submix, submix_value;
+    HDSPMixerView(int x, int y, int w, int h);
+    void draw();
+    int handle(int e);
+};
+
+#endif
+
diff --git a/hdspmixer/src/HDSPMixerWindow.cxx b/hdspmixer/src/HDSPMixerWindow.cxx
new file mode 100644 (file)
index 0000000..f426493
--- /dev/null
@@ -0,0 +1,972 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma implementation
+#include "HDSPMixerWindow.h"
+
+inline int64 swap_rms(int64 *rms)
+{
+    unsigned int *base = (unsigned int *)rms;
+    int64 ret = *base;
+    ret = (ret<<32) | *(base+1);
+    return ret;
+} 
+    
+static void readregisters_cb(void *arg)
+{
+    int err;
+    snd_hwdep_t *hw;
+    hdsp_peak_rms_t peak_rms;
+    
+    HDSPMixerWindow *w = (HDSPMixerWindow *)arg;
+
+    if (!w->visible()) {
+       Fl::add_timeout(0.03, readregisters_cb, w);
+       return;
+    }
+    
+    if ((err = snd_hwdep_open(&hw, w->cards[w->current_card]->name, SND_HWDEP_OPEN_READ)) < 0) {
+       fprintf(stderr, "Couldn't open hwdep device. Metering stopped\n");
+       return;
+    }
+
+    if ((err = snd_hwdep_ioctl(hw, SNDRV_HDSP_IOCTL_GET_PEAK_RMS, (void *)&peak_rms)) < 0) {
+       fprintf(stderr, "HwDep ioctl failed. Metering stopped\n");
+       snd_hwdep_close(hw);
+       return;
+    }
+
+    snd_hwdep_close(hw);
+    
+    if (w->inputs->buttons->input) {
+       for (int i = 0; i < w->cards[w->current_card]->channels; ++i) {
+           w->inputs->strips[i]->meter->update(peak_rms.input_peaks[(w->cards[w->current_card]->meter_map[i])] & 0xffffff00,
+                                               peak_rms.input_peaks[(w->cards[w->current_card]->meter_map[i])] & 0xf,
+                                               swap_rms(&peak_rms.input_rms[(w->cards[w->current_card]->meter_map[i])]) );
+       }
+    }
+    if (w->inputs->buttons->playback) {
+       for (int i = 0; i < w->cards[w->current_card]->channels; ++i) {
+           w->playbacks->strips[i]->meter->update(peak_rms.playback_peaks[(w->cards[w->current_card]->meter_map[i])] & 0xffffff00,
+                                                  peak_rms.playback_peaks[(w->cards[w->current_card]->meter_map[i])] & 0xf,
+                                                  swap_rms(&peak_rms.playback_rms[(w->cards[w->current_card]->meter_map[i])]) );
+       }
+    }
+    if (w->inputs->buttons->output) {
+       for (int i = 0; i < w->cards[w->current_card]->channels; ++i) {
+           w->outputs->strips[i]->meter->update(peak_rms.output_peaks[(w->cards[w->current_card]->meter_map[i])] & 0xffffff00,
+                                                peak_rms.output_peaks[(w->cards[w->current_card]->meter_map[i])] & 0xf,
+                                                0 );
+       }
+       for (int i = 0; i < w->cards[w->current_card]->lineouts; ++i) {
+           w->outputs->strips[w->cards[w->current_card]->channels+i]->meter->update(peak_rms.output_peaks[26+i] & 0xffffff00,
+                                                                                    peak_rms.output_peaks[26+i] & 0xf,
+                                                                                    0 );
+       } 
+    }
+    
+    Fl::add_timeout(0.03, readregisters_cb, w);
+}
+
+
+static void exit_cb(Fl_Widget *widget, void *arg)
+{
+    HDSPMixerWindow *w = (HDSPMixerWindow *)arg;
+    if (w->dirty) {
+       if (!fl_ask("There are unsaved changes, quit anyway ?")) return;
+    }
+    exit(EXIT_SUCCESS);
+}
+
+static void view_cb(Fl_Widget *widget, void *arg)
+{
+    const Fl_Menu_Item *item = ((Fl_Menu_ *)widget)->mvalue();    
+    HDSPMixerWindow *w = (HDSPMixerWindow *)arg;
+    if (!strncmp(item->label(), "Input", 5)) {
+       if (w->inputs->buttons->view->input) {
+           w->inputs->buttons->view->input = 0;
+       } else {
+           w->inputs->buttons->view->input = 1;
+       }
+    }
+    if (!strncmp(item->label(), "Playback", 8)) {
+       if (w->inputs->buttons->view->playback) {
+           w->inputs->buttons->view->playback = 0;
+       } else {
+           w->inputs->buttons->view->playback = 1;
+       }
+    }
+    if (!strncmp(item->label(), "Output", 6)) {
+       if (w->inputs->buttons->view->output) {
+           w->inputs->buttons->view->output = 0;
+       } else {
+           w->inputs->buttons->view->output = 1;
+       }
+    }
+    w->checkState();
+    w->reorder();
+}
+
+static void submix_cb(Fl_Widget *widget, void *arg)
+{
+    HDSPMixerWindow *w = (HDSPMixerWindow *)arg;
+    if (w->inputs->buttons->view->submix) {
+       w->inputs->buttons->view->submix = 0;
+       w->unsetSubmix();
+    } else {
+       w->inputs->buttons->view->submix = 1;
+       w->setSubmix(w->inputs->buttons->view->submix_value);
+    }
+    w->checkState();
+    w->inputs->buttons->view->redraw();
+}
+
+static void dirty_cb(void *arg)
+{
+    HDSPMixerWindow *w = (HDSPMixerWindow *)arg;
+    if (!w->inputs->buttons->presets->saving) {
+       if (w->inputs->buttons->presets->presetmask == (int)pow(2, w->inputs->buttons->presets->preset-1)) {
+           w->inputs->buttons->presets->presetmask = 0;
+       } else {
+           w->inputs->buttons->presets->presetmask = (int)pow(2, w->inputs->buttons->presets->preset-1);
+       }
+       w->inputs->buttons->presets->redraw();
+    }
+    if (w->dirty) {
+       Fl::add_timeout(0.3, dirty_cb, arg);
+    } else {
+       w->inputs->buttons->presets->presetmask = (int)pow(2, w->inputs->buttons->presets->preset-1);
+    }
+}
+
+static void setup_cb(Fl_Widget *widget, void *arg)
+{
+    HDSPMixerWindow *w = (HDSPMixerWindow *)arg;
+    w->setup->show();
+}
+
+static void about_cb(Fl_Widget *widget, void *arg)
+{
+    HDSPMixerWindow *w = (HDSPMixerWindow *)arg;
+    w->about->show();
+}
+
+static void open_cb(Fl_Widget *widget, void *arg)
+{
+    HDSPMixerWindow *w = (HDSPMixerWindow *)arg;
+    if (!(w->file_name = fl_file_chooser("Choose a file to load presets from :", "HDSPMixer preset file (*.mix)", NULL, 0))) return;
+    w->load();
+}
+
+static void save_cb(Fl_Widget *widget, void *arg)
+{
+    HDSPMixerWindow *w = (HDSPMixerWindow *)arg;
+    if (w->file_name == NULL) {
+       if (!(w->file_name = fl_file_chooser("Choose a file to save presets to :", "HDSPMixer preset file (*.mix)", NULL, 0))) return;
+    }
+    w->save();
+    snprintf(w->window_title, FL_PATH_MAX, "HDSPMixer - %s",  fl_filename_name(w->file_name));
+    w->label(w->window_title);
+}
+
+static void make_default_cb(Fl_Widget *widget, void *arg)
+{
+    HDSPMixerWindow *w = (HDSPMixerWindow *)arg;
+    if (w->file_name) {
+       w->prefs->set("default_file", w->file_name);
+       w->prefs->flush();
+    } else {
+       fl_alert("Please save to a file before setting to default");
+    }
+}
+
+static void restore_defaults_cb(Fl_Widget *widget, void *arg)
+{
+    HDSPMixerWindow *w = (HDSPMixerWindow *)arg;
+    int i = 0;
+    if (w->dirty) {
+       if (!fl_ask("There are unsaved changes, restore factory settings anyway ?")) return;
+    }
+    w->prefs->deleteEntry("default_file");
+    w->prefs->flush();
+    w->file_name = NULL;
+    snprintf(w->window_title, FL_PATH_MAX, "HDSPMixer");
+    w->label(w->window_title);
+    w->resetMixer();
+    while (w->cards[i] != NULL) {
+       w->restoreDefaults(i++);
+    }
+    w->inputs->buttons->presets->preset_change(1);
+}
+
+
+static void save_as_cb(Fl_Widget *widget, void *arg)
+{
+    HDSPMixerWindow *w = (HDSPMixerWindow *)arg;
+    if (!(w->file_name = fl_file_chooser("Choose a file to save presets to :", "HDSPMixer preset file (*.mix)", NULL, 0))) return;
+    w->save();
+}
+
+static void atclose_cb(Fl_Window *w, void *arg)
+{
+    if (strncmp("HDSPMixer", w->label(), 9) == 0) {
+       if (((HDSPMixerWindow *)w)->dirty) {
+           if (!fl_ask("There are unsaved changes, quit anyway ?")) return;
+       }
+       exit(EXIT_SUCCESS);
+    } 
+    w->hide();
+}
+
+static int handler_cb(int event)
+{
+    HDSPMixerWindow *w = NULL;
+    Fl_Window *fl_win = Fl::first_window();
+    while (1) {
+       if (fl_win->label()) {
+           if (strncmp("HDSPMixer", fl_win->label(), 9) == 0) {
+               w = (HDSPMixerWindow *)fl_win;
+               break;
+           }
+       }
+       if (fl_win = Fl::next_window(fl_win)) return 0;
+    }
+    if (!w) return 0;
+    int key = Fl::event_key();
+    switch (event) {
+    case FL_SHORTCUT:
+       if (key == FL_Escape) {
+           if (w->dirty) {
+               if (!fl_ask("There are unsaved changes, quit anyway ?")) return 1;
+           }
+           exit(EXIT_SUCCESS);
+       }
+       if (!w->setup->visible()) {
+           if (key == 'r' || key == 'R') {     
+               /* numbers should show peak values */
+               w->setup->numbers_val = 0;
+               w->checkState();
+               return 1;
+           } else if (key == 'e' || key == 'E') {      
+               /* numbers should show rms values */
+               w->setup->numbers_val = 1;
+               w->checkState();
+               return 1;
+           }
+           if (key == '0' || key == '0'+FL_KP) {
+               /* rms +0dB */
+               w->setup->rmsplus3_val = 0;
+               w->checkState();
+               return 1;
+           } else      if (key == '3' || key == '3'+FL_KP) {
+               /* rms +3B */
+               w->setup->rmsplus3_val = 1;
+               w->checkState();
+               return 1;
+           }
+           if (key == '4' || key == '4'+FL_KP) {
+               /* meter range is 40 dB */
+               w->setup->level_val = 0;
+               w->checkState();
+               return 1;
+           } else      if (key == '6' || key == '6'+FL_KP) {
+               /* meter range is 60 dB */
+               w->setup->level_val = 1;            
+               w->checkState();
+               return 1;
+           }
+       }
+       break; 
+    default:
+       return 0;
+    }
+    return 0;
+}
+
+void HDSPMixerWindow::save() 
+{
+    FILE *file;
+    if ((file = fopen(file_name, "w")) == NULL) {
+       fl_alert("Error opening file %s for saving", file_name);
+    }
+    if (dirty) {
+       inputs->buttons->presets->save_preset(current_preset+1);
+    }
+    for (int speed = 0; speed < 2; ++speed) {
+       for (int card = 0; card < 3; ++card) {
+           for (int preset = 0; preset < 8; ++preset) {
+               for (int channel = 0; channel < HDSP_MAX_CHANNELS; ++channel) {
+                   /* inputs pans and volumes */
+                   if (fwrite((void *)&(inputs->strips[channel]->data[card][speed][preset]->pan_pos[0]), sizeof(int), 14, file) != 14) {
+                       goto save_error;
+                   }
+                   if (fwrite((void *)&(inputs->strips[channel]->data[card][speed][preset]->fader_pos[0]), sizeof(int), 14, file) != 14) {
+                       goto save_error;
+                   }
+                   /* playbacks pans and volumes */
+                   if (fwrite((void *)&(playbacks->strips[channel]->data[card][speed][preset]->pan_pos[0]), sizeof(int), 14, file) != 14) {
+                       goto save_error;
+                   }
+                   if (fwrite((void *)&(playbacks->strips[channel]->data[card][speed][preset]->fader_pos[0]), sizeof(int), 14, file) != 14) {
+                       goto save_error;
+                   }
+                   /* inputs mute/solo/dest */
+                   if (fwrite((void *)&(inputs->strips[channel]->data[card][speed][preset]->mute), sizeof(int), 1, file) != 1) {
+                       goto save_error;
+                   }
+                   if (fwrite((void *)&(inputs->strips[channel]->data[card][speed][preset]->solo), sizeof(int), 1, file) != 1) {
+                       goto save_error;
+                   }
+                   if (fwrite((void *)&(inputs->strips[channel]->data[card][speed][preset]->dest), sizeof(int), 1, file) != 1) {
+                       goto save_error;
+                   }
+                   /* playbacks mute/solo/dest */
+                   if (fwrite((void *)&(playbacks->strips[channel]->data[card][speed][preset]->mute), sizeof(int), 1, file) != 1) {
+                       goto save_error;
+                   }
+                   if (fwrite((void *)&(playbacks->strips[channel]->data[card][speed][preset]->solo), sizeof(int), 1, file) != 1) {
+                       goto save_error;
+                   }
+                   if (fwrite((void *)&(playbacks->strips[channel]->data[card][speed][preset]->dest), sizeof(int), 1, file) != 1) {
+                       goto save_error;
+                   }
+                   /* outputs volumes */
+                   if (fwrite((void *)&(outputs->strips[channel]->data[card][speed][preset]->fader_pos), sizeof(int), 1, file) != 1) {
+                       goto save_error;
+                   }
+                   
+               }
+               /* Lineouts */              
+               if (fwrite((void *)&(outputs->strips[HDSP_MAX_CHANNELS]->data[card][speed][preset]->fader_pos), sizeof(int), 1, file) != 1) {
+                   goto save_error;
+               }
+               if (fwrite((void *)&(outputs->strips[HDSP_MAX_CHANNELS+1]->data[card][speed][preset]->fader_pos), sizeof(int), 1, file) != 1) {
+                   goto save_error;
+               }
+               /* Global settings */
+               if (fwrite((void *)&(data[card][speed][preset]->input), sizeof(int), 1, file) != 1) {
+                   goto save_error;
+               }
+               if (fwrite((void *)&(data[card][speed][preset]->output), sizeof(int), 1, file) != 1) {
+                   goto save_error;
+               }
+               if (fwrite((void *)&(data[card][speed][preset]->playback), sizeof(int), 1, file) != 1) {
+                   goto save_error;
+               }
+               if (fwrite((void *)&(data[card][speed][preset]->submix), sizeof(int), 1, file) != 1) {
+                   goto save_error;
+               }
+               if (fwrite((void *)&(data[card][speed][preset]->submix_value), sizeof(int), 1, file) != 1) {
+                   goto save_error;
+               }
+               if (fwrite((void *)&(data[card][speed][preset]->solo), sizeof(int), 1, file) != 1) {
+                   goto save_error;
+               }
+               if (fwrite((void *)&(data[card][speed][preset]->mute), sizeof(int), 1, file) != 1) {
+                   goto save_error;
+               }               
+           }
+       }
+    }
+    fclose(file);
+    return;
+save_error:
+    fclose(file);
+    fl_alert("Error saving presets to file %s", file_name);
+    return;
+}
+
+void HDSPMixerWindow::load()
+{
+    FILE *file;
+    if ((file = fopen(file_name, "r")) == NULL) {
+       fl_alert("Error opening file %s for reading", file_name);
+    }
+    for (int speed = 0; speed < 2; ++speed) {
+       for (int card = 0; card < 3; ++card) {
+           for (int preset = 0; preset < 8; ++preset) {
+               for (int channel = 0; channel < HDSP_MAX_CHANNELS; ++channel) {
+                   /* inputs pans and volumes */
+                   if (fread((void *)&(inputs->strips[channel]->data[card][speed][preset]->pan_pos[0]), sizeof(int), 14, file) != 14) {
+                       goto load_error;
+                   }
+                   if (fread((void *)&(inputs->strips[channel]->data[card][speed][preset]->fader_pos[0]), sizeof(int), 14, file) != 14) {
+                       goto load_error;
+                   }
+                   /* playbacks pans and volumes */
+                   if (fread((void *)&(playbacks->strips[channel]->data[card][speed][preset]->pan_pos[0]), sizeof(int), 14, file) != 14) {
+                       goto load_error;
+                   }
+                   if (fread((void *)&(playbacks->strips[channel]->data[card][speed][preset]->fader_pos[0]), sizeof(int), 14, file) != 14) {
+                       goto load_error;
+                   }
+                   /* inputs mute/solo/dest */
+                   if (fread((void *)&(inputs->strips[channel]->data[card][speed][preset]->mute), sizeof(int), 1, file) != 1) {
+                       goto load_error;
+                   }
+                   if (fread((void *)&(inputs->strips[channel]->data[card][speed][preset]->solo), sizeof(int), 1, file) != 1) {
+                       goto load_error;
+                   }
+                   if (fread((void *)&(inputs->strips[channel]->data[card][speed][preset]->dest), sizeof(int), 1, file) != 1) {
+                       goto load_error;
+                   }
+                   /* playbacks mute/solo/dest */
+                   if (fread((void *)&(playbacks->strips[channel]->data[card][speed][preset]->mute), sizeof(int), 1, file) != 1) {
+                       goto load_error;
+                   }
+                   if (fread((void *)&(playbacks->strips[channel]->data[card][speed][preset]->solo), sizeof(int), 1, file) != 1) {
+                       goto load_error;
+                   }
+                   if (fread((void *)&(playbacks->strips[channel]->data[card][speed][preset]->dest), sizeof(int), 1, file) != 1) {
+                       goto load_error;
+                   }
+                   /* outputs volumes */
+                   if (fread((void *)&(outputs->strips[channel]->data[card][speed][preset]->fader_pos), sizeof(int), 1, file) != 1) {
+                       goto load_error;
+                   }
+                   
+               }
+               /* Lineouts */              
+               if (fread((void *)&(outputs->strips[HDSP_MAX_CHANNELS]->data[card][speed][preset]->fader_pos), sizeof(int), 1, file) != 1) {
+                   goto load_error;
+               }
+               if (fread((void *)&(outputs->strips[HDSP_MAX_CHANNELS+1]->data[card][speed][preset]->fader_pos), sizeof(int), 1, file) != 1) {
+                   goto load_error;
+               }
+               /* Global settings */
+               if (fread((void *)&(data[card][speed][preset]->input), sizeof(int), 1, file) != 1) {
+                   goto load_error;
+               }
+               if (fread((void *)&(data[card][speed][preset]->output), sizeof(int), 1, file) != 1) {
+                   goto load_error;
+               }
+               if (fread((void *)&(data[card][speed][preset]->playback), sizeof(int), 1, file) != 1) {
+                   goto load_error;
+               }
+               if (fread((void *)&(data[card][speed][preset]->submix), sizeof(int), 1, file) != 1) {
+                   goto load_error;
+               }
+               if (fread((void *)&(data[card][speed][preset]->submix_value), sizeof(int), 1, file) != 1) {
+                   goto load_error;
+               }
+               if (fread((void *)&(data[card][speed][preset]->solo), sizeof(int), 1, file) != 1) {
+                   goto load_error;
+               }
+               if (fread((void *)&(data[card][speed][preset]->mute), sizeof(int), 1, file) != 1) {
+                   goto load_error;
+               }               
+           }
+       }
+    }
+    fclose(file);
+    snprintf(window_title, FL_PATH_MAX, "HDSPMixer - %s",  fl_filename_name(file_name));
+    label(window_title);
+    resetMixer();
+    inputs->buttons->presets->preset_change(1);
+    return;
+load_error:
+    fclose(file);
+    fl_alert("Error loading presets from file %s", file_name);
+    return;
+}
+
+void HDSPMixerWindow::restoreDefaults(int card)
+{
+    int phones;
+    int chnls[2];
+    int maxdest[2];
+    int ndb = inputs->strips[0]->fader->ndb;
+    switch (cards[card]->type) {
+    case Multiface:
+       chnls[0] = 18;
+       chnls[1] = 14;
+       maxdest[0] = 10;
+       maxdest[1] = 8;
+       phones = 1;
+       break;
+    case Digiface:
+       chnls[0] = 26;
+       chnls[1] = 14;
+       maxdest[0] = 14;
+       maxdest[1] = 8;
+       phones = 1;
+       break;
+    case H9652:
+       chnls[0] = 26;
+       chnls[1] = 14;
+       maxdest[0] = 13;
+       maxdest[1] = 7;
+       phones = 0;
+       break;
+    }
+    for (int preset = 0; preset < 8; ++preset) {
+       for (int speed = 0; speed < 2; ++speed) {
+           for (int i = 0; i < chnls[speed]; i+=2) {
+               for (int z = 0; z < maxdest[speed]; ++z) {
+                   inputs->strips[i]->data[card][speed][preset]->fader_pos[z] =  
+                   ((preset == 6 && z == maxdest[speed]-phones-1) || (i == z*2 && (preset > 1 && preset < 4)) || (((preset > 0 && preset < 4) || preset == 7) && phones && (z == maxdest[speed]-1))) ? ndb : 0;
+                   inputs->strips[i+1]->data[card][speed][preset]->fader_pos[z] = 
+                   ((preset == 6 && z == maxdest[speed]-phones-1) || (i == z*2 && (preset > 1 && preset < 4)) || (((preset > 0 && preset < 4) || preset == 7) && phones && (z == maxdest[speed]-1))) ? ndb : 0;
+                   inputs->strips[i]->data[card][speed][preset]->pan_pos[z] = 0;
+                   inputs->strips[i+1]->data[card][speed][preset]->pan_pos[z] = 28*CF;
+                   playbacks->strips[i]->data[card][speed][preset]->fader_pos[z] = 
+                   ((preset > 4 && preset < 7 && z == maxdest[speed]-phones-1) || i == z*2 || (phones && (z == maxdest[speed]-1))) ? ndb : 0;
+                   playbacks->strips[i+1]->data[card][speed][preset]->fader_pos[z] = 
+                   ((preset > 4 && preset < 7 && z == maxdest[speed]-phones-1) || i == z*2 || (phones && (z == maxdest[speed]-1))) ? ndb : 0;
+                   playbacks->strips[i]->data[card][speed][preset]->pan_pos[z] = 0;
+                   playbacks->strips[i+1]->data[card][speed][preset]->pan_pos[z] = 28*CF;
+               }
+               inputs->strips[i]->data[card][speed][preset]->dest = (int)floor(i/2);
+               inputs->strips[i+1]->data[card][speed][preset]->dest = (int)floor(i/2);
+               playbacks->strips[i]->data[card][speed][preset]->dest = (int)floor(i/2);
+               playbacks->strips[i+1]->data[card][speed][preset]->dest = (int)floor(i/2);
+               
+               outputs->strips[i]->data[card][speed][preset]->fader_pos = (preset != 4) ? 137*CF : 0;
+               outputs->strips[i+1]->data[card][speed][preset]->fader_pos = (preset != 4) ? 137*CF : 0;
+               if (preset > 4 && preset < 7) {
+                   outputs->strips[chnls[speed]-2]->data[card][speed][preset]->fader_pos = ndb;
+                   outputs->strips[chnls[speed]-1]->data[card][speed][preset]->fader_pos = ndb;    
+               }
+               if (preset == 3 || preset == 7) {
+                   inputs->strips[i]->data[card][speed][preset]->mute = 1;
+                   inputs->strips[i+1]->data[card][speed][preset]->mute = 1;
+                   if (preset == 7) {
+                       playbacks->strips[i]->data[card][speed][preset]->mute = 1;
+                       playbacks->strips[i+1]->data[card][speed][preset]->mute = 1;
+                   }
+               }
+           }
+           if (phones) {
+               outputs->strips[chnls[speed]]->data[card][speed][preset]->fader_pos = (preset != 4) ? ndb : 0;
+               outputs->strips[chnls[speed]+1]->data[card][speed][preset]->fader_pos = (preset != 4) ? ndb : 0;        
+           }
+           if (preset == 3 || preset == 7) {
+               data[card][speed][preset]->mute = 1;
+           }
+           if (preset > 4 && preset < 7) {
+               data[card][speed][preset]->submix_value = (maxdest[speed]-phones-1);
+           } else {
+               data[card][speed][preset]->submix = 0;
+           }
+       }
+    }
+}
+
+HDSPMixerWindow::HDSPMixerWindow(int x, int y, int w, int h, const char *label, HDSPMixerCard *hdsp_card1, HDSPMixerCard *hdsp_card2, HDSPMixerCard *hdsp_card3):Fl_Double_Window(x, y, w, h, label)
+{
+    int def, i;
+    cards[0] = hdsp_card1;
+    cards[1] = hdsp_card2;
+    cards[2] = hdsp_card3;
+    current_card = current_preset = 0;
+    prefs = new Fl_Preferences(Fl_Preferences::USER, "thomasATundata.org", "HDSPMixer");
+    if (!prefs->get("default_file", file_name_buffer, NULL, FL_PATH_MAX-1)) file_name = NULL;
+    else file_name = file_name_buffer;
+    for (int j = 0; j < 3; ++j) {
+       for (int i = 0; i < 8; ++i) {
+           data[j][0][i] = new HDSPMixerPresetData();
+           data[j][1][i] = new HDSPMixerPresetData();
+       }
+    }
+    buttons_removed = 0;
+    dirty = 0;
+    scroll = new Fl_Scroll(0, 0, w, h);
+    menubar = new Fl_Menu_Bar(0, 0, w, MENU_HEIGHT);
+    menubar->textfont(FL_HELVETICA);
+    menubar->textsize(12);
+    menubar->box(FL_THIN_UP_BOX);
+    menubar->add("&File/Open preset file", FL_CTRL+'o', (Fl_Callback *)open_cb, (void *)this);
+    menubar->add("&File/Save preset file", FL_CTRL+'s', (Fl_Callback *)save_cb, (void *)this);
+    menubar->add("&File/Save preset file as ...", 0, (Fl_Callback *)save_as_cb, (void *)this, FL_MENU_DIVIDER);
+    menubar->add("&File/Make current file default", 'd', (Fl_Callback *)make_default_cb, (void *)this);
+    menubar->add("&File/Restore factory settings", 'f', (Fl_Callback *)restore_defaults_cb, (void *)this, FL_MENU_DIVIDER);
+    menubar->add("&File/E&xit", FL_CTRL+'q', (Fl_Callback *)exit_cb, (void *)this);
+    menubar->add("&View/Input", 'i', (Fl_Callback *)view_cb, (void *)this, FL_MENU_TOGGLE|FL_MENU_VALUE);
+    menubar->add("&View/Playback", 'p', (Fl_Callback *)view_cb, (void *)this, FL_MENU_TOGGLE|FL_MENU_VALUE);
+    menubar->add("&View/Output", 'o', (Fl_Callback *)view_cb, (void *)this, FL_MENU_DIVIDER|FL_MENU_TOGGLE|FL_MENU_VALUE);
+    menubar->add("&View/Submix", 's', (Fl_Callback *)submix_cb, (void *)this, FL_MENU_TOGGLE|FL_MENU_VALUE);
+    menubar->add("&Options/Level Meter Setup", 'm', (Fl_Callback *)setup_cb, (void *)this);
+    menubar->add("&?/About", 0, (Fl_Callback *)about_cb, (void *)this);
+    inputs = new HDSPMixerInputs(0, MENU_HEIGHT, w, FULLSTRIP_HEIGHT, cards[0]->channels);
+    inputs->buttons->input = 1;
+    inputs->buttons->output = 1;
+    inputs->buttons->submix = 1;
+    inputs->buttons->playback = 1;
+    playbacks = new HDSPMixerPlaybacks(0, MENU_HEIGHT+FULLSTRIP_HEIGHT, w, FULLSTRIP_HEIGHT, cards[0]->channels);
+    outputs = new HDSPMixerOutputs(0, MENU_HEIGHT+FULLSTRIP_HEIGHT*2, w, SMALLSTRIP_HEIGHT, cards[0]->channels);
+    scroll->end();
+    end();
+    setup = new HDSPMixerSetup(400, 260, "Level Meters Setup", this);
+    about = new HDSPMixerAbout(340, 230, "About HDSPMixer", this);
+    i = 0;
+    while (cards[i] != NULL) {
+       cards[i++]->initializeCard(this);
+    }
+    size_range(MIN_WIDTH, MIN_HEIGHT, cards[current_card]->window_width, cards[current_card]->window_height);
+    resetMixer();
+    if (file_name) {
+       printf("Restoring last presets used\n");
+       load();
+    } else {
+       printf("Initializing default presets\n");
+       i = 0;
+       while (cards[i] != NULL) {
+           restoreDefaults(i++);
+       }
+       inputs->buttons->presets->preset_change(1);
+    }
+    Fl::atclose = atclose_cb;
+    Fl::add_handler(handler_cb);
+    Fl::add_timeout(0.030, readregisters_cb, this);
+}
+
+int HDSPMixerWindow::handle(int e) 
+{
+    return Fl_Double_Window::handle(e);
+}
+
+void HDSPMixerWindow::resize(int x, int y, int w, int h)
+{
+    Fl_Double_Window::resize(x, y, w, h);
+    scroll->resize (0, 0, w, h);
+}
+
+void HDSPMixerWindow::reorder()
+{
+    int xpos = scroll->x();
+    int ypos = scroll->y();
+    int ytemp = ypos+MENU_HEIGHT;
+    if (inputs->buttons->view->input) {
+        scroll->add(inputs);
+       inputs->add(*(inputs->buttons));
+       buttons_removed = 0;
+       inputs->buttons->position(inputs->buttons->x(), MENU_HEIGHT);
+       inputs->position(xpos, ytemp);
+       ytemp += FULLSTRIP_HEIGHT;
+    } else {
+       if (!buttons_removed) {
+           buttons_removed = 1;
+           playbacks->add(*(inputs->buttons));
+           inputs->buttons->position(playbacks->empty->x(), playbacks->empty->y());    
+       }
+       scroll->remove(*inputs);
+    }
+    if (inputs->buttons->view->playback) {
+       scroll->add(playbacks);
+       playbacks->position(xpos, ytemp);
+       ytemp += FULLSTRIP_HEIGHT;
+    } else {
+       scroll->remove(*playbacks);
+    }
+    if (inputs->buttons->view->output) {
+       scroll->add(outputs);
+       outputs->position(xpos, ytemp);
+       ytemp += SMALLSTRIP_HEIGHT;
+    } else {
+       scroll->remove(*outputs);
+    }
+    scroll->init_sizes();
+    resize(x(), y(), w(), ytemp);
+    size_range(MIN_WIDTH, MIN_HEIGHT, cards[current_card]->window_width, ytemp);
+}
+
+void HDSPMixerWindow::checkState()
+{
+    int speed = cards[current_card]->double_speed;
+    int p = inputs->buttons->presets->preset-1;    
+    int corrupt = 0;
+    /* Mixer strips */
+    for (int i = 0; i < HDSP_MAX_CHANNELS; ++i) {
+       for (int j = 0; j < HDSP_MAX_DEST; ++j) {
+           /* Inputs */
+           if (inputs->strips[i]->data[current_card][speed][p]->pan_pos[j] != inputs->strips[i]->pan->pos[j])
+               corrupt++;
+           if (inputs->strips[i]->data[current_card][speed][p]->fader_pos[j] != inputs->strips[i]->fader->pos[j])
+               corrupt++;
+           if (playbacks->strips[i]->data[current_card][speed][p]->pan_pos[j] != playbacks->strips[i]->pan->pos[j])
+               corrupt++;
+           if (playbacks->strips[i]->data[current_card][speed][p]->fader_pos[j] != playbacks->strips[i]->fader->pos[j])
+               corrupt++;
+       }
+       /* Inputs row */
+       if (inputs->strips[i]->data[current_card][speed][p]->mute != inputs->strips[i]->mutesolo->mute)
+           corrupt++;
+       if (inputs->strips[i]->data[current_card][speed][p]->solo != inputs->strips[i]->mutesolo->solo)
+           corrupt++;
+       if (inputs->strips[i]->data[current_card][speed][p]->dest != inputs->strips[i]->targets->selected)
+           corrupt++;
+       /* Playbacks row */
+       if (playbacks->strips[i]->data[current_card][speed][p]->mute != playbacks->strips[i]->mutesolo->mute)
+           corrupt++;
+       if (playbacks->strips[i]->data[current_card][speed][p]->solo != playbacks->strips[i]->mutesolo->solo)
+           corrupt++;
+       if (playbacks->strips[i]->data[current_card][speed][p]->dest != playbacks->strips[i]->targets->selected)
+           corrupt++;
+       /* Outputs row */
+       if (outputs->strips[i]->data[current_card][speed][p]->fader_pos != outputs->strips[i]->fader->pos[0])
+           corrupt++;
+    }
+    /* Line outs */
+    if (outputs->strips[HDSP_MAX_CHANNELS]->data[current_card][speed][p]->fader_pos != outputs->strips[HDSP_MAX_CHANNELS]->fader->pos[0])
+       corrupt++;
+    if (outputs->strips[HDSP_MAX_CHANNELS+1]->data[current_card][speed][p]->fader_pos != outputs->strips[HDSP_MAX_CHANNELS+1]->fader->pos[0])
+       corrupt++;
+    /* Global settings */
+    if (data[current_card][speed][p]->mute != inputs->buttons->master->mute)
+       corrupt++;
+    if (data[current_card][speed][p]->solo != inputs->buttons->master->solo)
+       corrupt++;
+    if (data[current_card][speed][p]->input != inputs->buttons->view->input)
+       corrupt++;
+    if (data[current_card][speed][p]->output != inputs->buttons->view->output)
+       corrupt++;
+    if (data[current_card][speed][p]->playback != inputs->buttons->view->playback)
+       corrupt++;
+    if (data[current_card][speed][p]->submix != inputs->buttons->view->submix)
+       corrupt++;
+    if (data[current_card][speed][p]->submix_value != inputs->buttons->view->submix_value)
+       corrupt++;
+    /* Setup options */
+    if (setup->over_val != data[current_card][speed][p]->over)
+       corrupt++;
+    if (setup->rate_val != data[current_card][speed][p]->rate)
+       corrupt++;
+    if (setup->level_val != data[current_card][speed][p]->level)
+       corrupt++;
+    if (setup->rmsplus3_val != data[current_card][speed][p]->rmsplus3)
+       corrupt++;
+    if (setup->numbers_val != data[current_card][speed][p]->numbers)
+       corrupt++;
+
+    if (corrupt) {
+       if (!dirty) {
+           dirty = 1;
+           snprintf(window_title, FL_PATH_MAX, "HDSPMixer - %s *",  fl_filename_name(file_name));
+           label(window_title);
+           Fl::add_timeout(0.3, dirty_cb, (void *)this); 
+       }
+    } else {
+       snprintf(window_title, FL_PATH_MAX, "HDSPMixer - %s",  fl_filename_name(file_name));
+       label(window_title);
+       dirty = 0;
+    }
+}
+
+void HDSPMixerWindow::setSubmix(int submix_value)
+{
+    for (int i = 0; i < cards[current_card]->channels; i++) {
+       inputs->strips[i]->targets->value(submix_value);
+       inputs->strips[i]->targets->redraw();
+       inputs->strips[i]->fader->dest = submix_value;
+       inputs->strips[i]->fader->redraw();
+       inputs->strips[i]->pan->dest = submix_value;
+       inputs->strips[i]->pan->redraw();
+       inputs->strips[i]->fader->sendGain();
+       playbacks->strips[i]->targets->value(submix_value);
+       playbacks->strips[i]->targets->redraw();
+       playbacks->strips[i]->fader->dest = submix_value;
+       playbacks->strips[i]->fader->redraw();
+       playbacks->strips[i]->pan->dest = submix_value;
+       playbacks->strips[i]->pan->redraw();
+       playbacks->strips[i]->fader->sendGain();
+    }
+}
+
+void HDSPMixerWindow::unsetSubmix()
+{
+    for (int i = 0; i < cards[current_card]->channels; i++) {
+       inputs->strips[i]->targets->value(inputs->strips[i]->targets->selected);
+       inputs->strips[i]->targets->redraw();
+       inputs->strips[i]->fader->dest = inputs->strips[i]->targets->selected;
+       inputs->strips[i]->fader->redraw();
+       inputs->strips[i]->pan->dest = inputs->strips[i]->targets->selected;
+       inputs->strips[i]->pan->redraw();
+       inputs->strips[i]->fader->sendGain();
+       playbacks->strips[i]->targets->value(playbacks->strips[i]->targets->selected);
+       playbacks->strips[i]->targets->redraw();
+       playbacks->strips[i]->fader->dest = playbacks->strips[i]->targets->selected;
+       playbacks->strips[i]->fader->redraw();
+       playbacks->strips[i]->pan->dest = playbacks->strips[i]->targets->selected;
+       playbacks->strips[i]->pan->redraw();
+       playbacks->strips[i]->fader->sendGain();
+    }
+}
+
+
+void HDSPMixerWindow::refreshMixer()
+{
+    int i, j;
+    for (i = 1; i <= cards[current_card]->channels; ++i) {
+       for (j = 0; j < inputs->strips[0]->targets->max_dest; ++j) {
+           setMixer(i, 0, j);
+           setMixer(i, 1, j);
+       }
+    }
+}
+
+void HDSPMixerWindow::refreshMixerStrip(int idx, int src)
+{
+    int i;
+    for (i = 0; i < inputs->strips[0]->targets->max_dest; ++i) {
+       setMixer(idx, src, i);
+    }
+}
+
+void HDSPMixerWindow::resetMixer()
+{
+    int i, j;
+    for (i = 0; i < 52 ; ++i) {
+       for (j = 0; j < 28; ++j) {
+           setGain(i, j, 0);
+       }
+    }
+    
+}
+
+void HDSPMixerWindow::setGain(int in, int out, int value)
+{
+    /* just a wrapper around the 'Mixer' ctl */
+
+    int err;
+    
+    snd_ctl_elem_id_t *id;
+    snd_ctl_elem_value_t *ctl;
+    snd_ctl_t *handle;
+    
+    snd_ctl_elem_value_alloca(&ctl);
+    snd_ctl_elem_id_alloca(&id);
+    snd_ctl_elem_id_set_name(id, "Mixer");
+    snd_ctl_elem_id_set_numid(id, 0);
+    snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP);
+    snd_ctl_elem_id_set_device(id, 0);
+    snd_ctl_elem_id_set_subdevice(id, 0);
+    snd_ctl_elem_id_set_index(id, 0);
+    snd_ctl_elem_value_set_id(ctl, id);
+
+    if ((err = snd_ctl_open(&handle, cards[current_card]->name, SND_CTL_NONBLOCK)) < 0) {
+        fprintf(stderr, "Alsa error: %s\n", snd_strerror(err));
+        return;
+    }
+
+    snd_ctl_elem_value_set_integer(ctl, 0, in);
+    snd_ctl_elem_value_set_integer(ctl, 1, out);
+    snd_ctl_elem_value_set_integer(ctl, 2, value);
+    if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
+        fprintf(stderr, "Alsa error: %s\n", snd_strerror(err));
+        return;
+    }
+    
+    snd_ctl_close(handle);
+    
+}
+
+void HDSPMixerWindow::setMixer(int idx, int src, int dst)
+{
+    /*  idx is the strip number (indexed fom 1)
+       src is the row (0 = inputs, 1 = playbacks, 2 = outputs)
+       dst is the destination stereo channel
+    */
+    int err,gsolo_active,gmute_active, gmute, gsolo;
+    snd_ctl_elem_id_t *id;
+    snd_ctl_elem_value_t *ctl;
+    snd_ctl_t *handle;
+
+    gsolo_active = inputs->buttons->master->solo_active;
+    gmute_active = inputs->buttons->master->mute_active;
+    gsolo = inputs->buttons->master->solo;
+    gmute = inputs->buttons->master->mute;
+    
+    if (src == 0 || src == 1) {
+           
+       double vol, pan, attenuation_l, attenuation_r, left_val, right_val;
+           
+       snd_ctl_elem_value_alloca(&ctl);
+       snd_ctl_elem_id_alloca(&id);
+       snd_ctl_elem_id_set_name(id, "Mixer");
+       snd_ctl_elem_id_set_numid(id, 0);
+       snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_HWDEP);
+       snd_ctl_elem_id_set_device(id, 0);
+       snd_ctl_elem_id_set_subdevice(id, 0);
+       snd_ctl_elem_id_set_index(id, 0);
+       snd_ctl_elem_value_set_id(ctl, id);
+    
+       if ((err = snd_ctl_open(&handle, cards[current_card]->name, SND_CTL_NONBLOCK)) < 0) {
+           fprintf(stderr, "Alsa error: %s\n", snd_strerror(err));
+           return;
+       }
+
+       if (src) {
+           if ((gmute && playbacks->strips[idx-1]->mutesolo->mute && !(playbacks->strips[idx-1]->mutesolo->solo && gsolo)) || (gsolo && gsolo_active && !(playbacks->strips[idx-1]->mutesolo->solo)) ) {
+               left_val = right_val = 0;
+               goto muted;
+           }
+       } else {
+           if ((gmute && inputs->strips[idx-1]->mutesolo->mute && !(inputs->strips[idx-1]->mutesolo->solo && gsolo)) || (gsolo && gsolo_active && !(inputs->strips[idx-1]->mutesolo->solo)) ) {
+               left_val = right_val = 0;
+               goto muted;
+           }
+       }
+
+       if (src) {
+           vol = playbacks->strips[idx-1]->fader->posToInt(playbacks->strips[idx-1]->fader->pos[dst]);
+           pan = (double)(playbacks->strips[idx-1]->pan->pos[dst])/(double)(PAN_WIDTH*CF);
+       } else {
+           vol = inputs->strips[idx-1]->fader->posToInt(inputs->strips[idx-1]->fader->pos[dst]);
+           pan = (double)(inputs->strips[idx-1]->pan->pos[dst])/(double)(PAN_WIDTH*CF);
+       }
+       attenuation_l = (double)(outputs->strips[dst*2]->fader->posToInt(outputs->strips[dst*2]->fader->pos[0]))/65535.0;
+       attenuation_r = (double)(outputs->strips[dst*2+1]->fader->posToInt(outputs->strips[dst*2+1]->fader->pos[0]))/65535.0;
+
+       left_val = attenuation_l* vol * (1.0 - pan);
+       right_val = attenuation_r* vol * pan;
+
+muted:         
+       snd_ctl_elem_value_set_integer(ctl, 0, src*26+cards[current_card]->channel_map[idx-1]);
+       snd_ctl_elem_value_set_integer(ctl, 1, cards[current_card]->dest_map[dst]);
+       snd_ctl_elem_value_set_integer(ctl, 2, (int)left_val);
+       if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
+           fprintf(stderr, "Alsa error: %s\n", snd_strerror(err));
+           return;
+       }
+       snd_ctl_elem_value_set_integer(ctl, 0, src*26+cards[current_card]->channel_map[idx-1]);
+       snd_ctl_elem_value_set_integer(ctl, 1, cards[current_card]->dest_map[dst]+1);
+       snd_ctl_elem_value_set_integer(ctl, 2, (int)right_val);
+       if ((err = snd_ctl_elem_write(handle, ctl)) < 0) {
+           fprintf(stderr, "Alsa error: %s\n", snd_strerror(err));
+           return;
+       }
+       snd_ctl_close(handle);
+       
+    } else if (src == 2) {
+       int i, vol, dest;
+       
+       dest = (int)floor((idx-1)/2);
+       
+       for (i = 0; i < cards[current_card]->channels; ++i) {
+           if ((vol = inputs->strips[i]->fader->posToInt(inputs->strips[i]->fader->pos[dest])) != 0) {
+               setMixer(i+1, 0, dest);
+           }
+           if ((vol = playbacks->strips[i]->fader->posToInt(playbacks->strips[i]->fader->pos[dest])) != 0) {
+               setMixer(i+1, 1, dest);
+           }
+       }
+    }    
+}
+
diff --git a/hdspmixer/src/HDSPMixerWindow.h b/hdspmixer/src/HDSPMixerWindow.h
new file mode 100644 (file)
index 0000000..a2edb6b
--- /dev/null
@@ -0,0 +1,96 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#pragma interface
+#ifndef HDSPMixerWindow_H
+#define HDSPMixerWindow_H
+
+#include <FL/Fl.H>
+#include <FL/Fl_Double_Window.H>
+#include <FL/Fl_Preferences.H>
+#include <FL/Fl_Scroll.H>
+#include <FL/Fl_Menu.H>
+#include <FL/Fl_Menu_Bar.H>
+#include <FL/Fl_File_Chooser.H>
+#include <FL/filename.H>
+#include <FL/fl_ask.H>
+#include <string.h>
+#include <stdlib.h>
+#include <math.h>
+#include <sys/ioctl.h>
+#include <alsa/asoundlib.h>
+#include <sound/hdsp.h>
+#include "HDSPMixerCard.h"
+#include "HDSPMixerInputs.h"
+#include "HDSPMixerOutputs.h"
+#include "HDSPMixerPresetData.h"
+#include "HDSPMixerPlaybacks.h"
+#include "HDSPMixerSetup.h"
+#include "HDSPMixerAbout.h"
+#include "defines.h"
+
+class HDSPMixerInputs;
+class HDSPMixerOutputs;
+class HDSPMixerPlaybacks;
+class HDSPMixerPresetData;
+class HDSPMixerSetup;
+class HDSPMixerAbout;
+class HDSPMixerCard;
+
+class HDSPMixerWindow:public Fl_Double_Window 
+{
+private:
+    int buttons_removed;
+public:
+    int current_card;
+    int current_preset;
+    int dirty;
+    char file_name_buffer[FL_PATH_MAX];
+    char window_title[FL_PATH_MAX];
+    char *file_name;
+    Fl_Preferences *prefs;
+    Fl_Menu_Bar *menubar;
+    Fl_Scroll *scroll;
+    HDSPMixerSetup *setup;
+    HDSPMixerAbout *about;
+    HDSPMixerPresetData *data[3][2][8]; /* data[card number][mode(ds/ss)][preset number] */
+    HDSPMixerCard *cards[3];
+    HDSPMixerInputs *inputs;
+    HDSPMixerPlaybacks *playbacks;
+    HDSPMixerOutputs *outputs;
+    HDSPMixerWindow(int x, int y, int w, int h, const char *label, class HDSPMixerCard *hdsp_card1, class HDSPMixerCard *hdsp_card2, class HDSPMixerCard *hdsp_card3);
+    void reorder();
+    int handle(int e);
+    void resize(int x, int y, int w, int h);
+    void checkState();
+    void setSubmix(int submix_value);
+    void unsetSubmix();
+    void setMixer(int idx, int src, int dest);
+    void refreshMixer();
+    void setGain(int in, int out, int value);
+    void resetMixer();
+    void restoreDefaults(int card);
+    void refreshMixerStrip(int idx, int src);
+    void save();
+    void load();
+};
+
+#endif
+
diff --git a/hdspmixer/src/Makefile.am b/hdspmixer/src/Makefile.am
new file mode 100644 (file)
index 0000000..6aa4a2a
--- /dev/null
@@ -0,0 +1,59 @@
+bin_PROGRAMS = hdspmixer
+hdspmixer_SOURCES = \
+       hdspmixer.cxx \
+       HDSPMixerWindow.cxx \
+       HDSPMixerWindow.h \
+       HDSPMixerInputs.cxx \
+       HDSPMixerInputs.h \
+       HDSPMixerOutputs.cxx \
+       HDSPMixerOutputs.h \
+       HDSPMixerPlaybacks.cxx \
+       HDSPMixerPlaybacks.h \
+       HDSPMixerButtons.cxx \
+       HDSPMixerButtons.h \
+       HDSPMixerEmpty.cxx \
+       HDSPMixerEmpty.h \
+       HDSPMixerOutput.cxx \
+       HDSPMixerOutput.h \
+       HDSPMixerIOMixer.cxx \
+       HDSPMixerIOMixer.h \
+       HDSPMixerSelector.cxx \
+       HDSPMixerSelector.h \
+       HDSPMixerPan.cxx \
+       HDSPMixerPan.h \
+       HDSPMixerFader.cxx \
+       HDSPMixerFader.h \
+       HDSPMixerGain.cxx \
+       HDSPMixerGain.h \
+       HDSPMixerPeak.cxx \
+       HDSPMixerPeak.h \
+       HDSPMixerCard.cxx \
+       HDSPMixerCard.h \
+       HDSPMixerCardSelector.cxx \
+       HDSPMixerCardSelector.h \
+       HDSPMixerMaster.cxx \
+       HDSPMixerMaster.h \
+       HDSPMixerView.cxx \
+       HDSPMixerView.h \
+       HDSPMixerPresets.cxx \
+       HDSPMixerPresets.h \
+       HDSPMixerMuteSolo.cxx \
+       HDSPMixerMuteSolo.h \
+       HDSPMixerStripData.cxx \
+       HDSPMixerStripData.h \
+       HDSPMixerOutputData.cxx \
+       HDSPMixerOutputData.h \
+       HDSPMixerPresetData.cxx \
+       HDSPMixerPresetData.h \
+       HDSPMixerSetup.cxx \
+       HDSPMixerSetup.h \
+       HDSPMixerAbout.cxx \
+       HDSPMixerAbout.h \
+       HDSPMixerAboutText.cxx \
+       HDSPMixerAboutText.h \
+       HDSPMixerMeter.cxx \
+       HDSPMixerMeter.h \
+       pixmaps.cxx \
+       pixmaps.h \
+       mappings.h \
+       defines.h
diff --git a/hdspmixer/src/defines.h b/hdspmixer/src/defines.h
new file mode 100644 (file)
index 0000000..1aefb7a
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef DEFINES_H
+#define DEFINES_H
+
+/* Uncomment this to make the setup window non-modal */
+//#define NON_MODAL_SETUP 1
+
+#define HDSP_MAX_CHANNELS 26
+#define HDSP_MAX_DEST    14
+
+#define STRIP_WIDTH      36
+#define FULLSTRIP_HEIGHT  253
+#define SMALLSTRIP_HEIGHT 208
+#define MENU_HEIGHT       20
+
+#define MIN_WIDTH  2*STRIP_WIDTH
+#define MIN_HEIGHT MENU_HEIGHT
+
+#define CF          8
+#define FADER_HEIGHT 137
+#define METER_HEIGHT 139
+#define PEAK_HEIGHT  4
+
+#define PAN_WIDTH 28
+
+typedef unsigned long long int int64;
+
+#endif
+
diff --git a/hdspmixer/src/hdspmixer.cxx b/hdspmixer/src/hdspmixer.cxx
new file mode 100644 (file)
index 0000000..34dc66b
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <errno.h>
+#include <alsa/asoundlib.h>
+#include <sound/hdsp.h>
+#include <FL/Fl.H>
+#include <FL/Fl_Preferences.H>
+#include "pixmaps.h"
+#include "HDSPMixerCard.h"
+#include "HDSPMixerWindow.h"
+#include "defines.h"
+
+int main(int argc, char **argv)
+{
+    HDSPMixerWindow *window;
+    HDSPMixerCard *hdsp_cards[3];
+    char *name;
+    int card;
+    int cards = 0;
+    
+    card = -1;
+    printf("\nHDSPMixer %s - Copyright (C) 2003 Thomas Charbonnel <thomas@undata.org>\n", VERSION);
+    printf("This program comes with ABSOLUTELY NO WARRANTY\n");
+    printf("HDSPMixer is free software, see the file COPYING for details\n\n");
+    printf("Looking for HDSP cards :\n");
+    while (snd_card_next(&card) >= 0) {
+       if (card < 0) {
+           break;
+       } else {
+
+           snd_card_get_longname(card, &name);
+           printf("Card %d : %s\n", card, name);
+           if (!strncmp(name, "RME Hammerfall DSP + Multiface", 30)) {
+               printf("Multiface found !\n");
+               hdsp_cards[cards] = new HDSPMixerCard(Multiface, card);
+               cards++;
+           } else if (!strncmp(name, "RME Hammerfall DSP + Digiface", 29)) {
+               printf("Digiface found !\n");
+               hdsp_cards[cards] = new HDSPMixerCard(Digiface, card);
+               cards++;
+           } else if (!strncmp(name, "RME Hammerfall HDSP 9652", 24)) {
+               printf("HDSP 9652 found !\n");
+               hdsp_cards[cards] = new HDSPMixerCard(H9652, card);
+               cards++;
+           } 
+       }
+    }
+    if (!cards) {
+       printf("No Hammerfall DSP card found.\n");
+       exit(EXIT_FAILURE);
+    }
+    for (int i = cards; i < 3; ++i) {
+       hdsp_cards[i] = NULL;
+    }
+    printf("%d Hammerfall DSP %s found.\n", cards, (cards > 1) ? "cards" : "card");
+    window = new HDSPMixerWindow(0, 0, hdsp_cards[0]->window_width, hdsp_cards[0]->window_height, "HDSPMixer", hdsp_cards[0], hdsp_cards[1], hdsp_cards[2]);
+    Fl::visual(FL_DOUBLE|FL_INDEX);
+    window->show(argc, argv);
+    return Fl::run();    
+}
diff --git a/hdspmixer/src/mappings.h b/hdspmixer/src/mappings.h
new file mode 100644 (file)
index 0000000..af2a370
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef mappings_H
+#define mappings_H
+
+static char channel_map_df_ss[26] = {
+    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+    18, 19, 20, 21, 22, 23, 24, 25
+};
+
+static char channel_map_mf_ss[26] = {
+    0, 1, 2, 3, 4, 5, 6, 7,
+    16, 17, 18, 19, 20, 21, 22, 23, 
+    24, 25,
+    -1, -1, -1, -1, -1, -1, -1, -1
+};
+
+static char meter_map_ds[26] = {
+    0, 1, 2, 3, 8, 9, 10, 11, 16, 17, 18, 19, 
+    24, 25,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
+};
+
+static char channel_map_ds[26] = {
+    1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 
+    24, 25,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
+};
+
+static char dest_map_mf_ss[10] = {
+    0, 2, 4, 6, 16, 18, 20, 22, 24, 26 
+};
+
+static char dest_map_ds[8] = {
+    0, 2, 8, 10, 16, 18, 24, 26 
+};
+
+static char dest_map_df_ss[14] = {
+    0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26 
+};
+
+static char dest_map_h9652_ss[13] = {
+    0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24 
+};
+
+static char dest_map_h9652_ds[7] = {
+    0, 2, 8, 10, 16, 18, 24 
+};
+
+#endif
+
diff --git a/hdspmixer/src/pixmaps.cxx b/hdspmixer/src/pixmaps.cxx
new file mode 100644 (file)
index 0000000..1dad981
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "pixmaps.h"
+
+#include "../pixmaps/Slider2.xpm"
+#include "../pixmaps/Slider1.xpm"
+#include "../pixmaps/b_blank.xpm"
+#include "../pixmaps/b_card1.xpm"
+#include "../pixmaps/b_card2.xpm"
+#include "../pixmaps/b_card3.xpm"
+#include "../pixmaps/b_mute.xpm"
+#include "../pixmaps/b_pre1.xpm"
+#include "../pixmaps/b_pre2.xpm"
+#include "../pixmaps/b_pre3.xpm"
+#include "../pixmaps/b_pre4.xpm"
+#include "../pixmaps/b_pre5.xpm"
+#include "../pixmaps/b_pre6.xpm"
+#include "../pixmaps/b_pre7.xpm"
+#include "../pixmaps/b_pre8.xpm"
+#include "../pixmaps/b_save.xpm"
+#include "../pixmaps/b_solo.xpm"
+#include "../pixmaps/buttons.xpm"
+#include "../pixmaps/empty.xpm"
+#include "../pixmaps/empty_linux.xpm"
+#include "../pixmaps/iomixer.xpm"
+#include "../pixmaps/level.xpm"
+#include "../pixmaps/monitor.xpm"
+#include "../pixmaps/mute.xpm"
+#include "../pixmaps/output.xpm"
+#include "../pixmaps/over.xpm"
+#include "../pixmaps/peak.xpm"
+#include "../pixmaps/solo.xpm"
+
diff --git a/hdspmixer/src/pixmaps.h b/hdspmixer/src/pixmaps.h
new file mode 100644 (file)
index 0000000..79b79e7
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ *   HDSPMixer
+ *    
+ *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *    
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef pixmaps_H
+#define pixmaps_H
+
+extern char * Slider1_xpm[];
+extern char * Slider2_xpm[];
+extern char * b_blank_xpm[];
+extern char * b_card1_xpm[];
+extern char * b_card2_xpm[];
+extern char * b_card3_xpm[];
+extern char * b_mute_xpm[];
+extern char * b_pre1_xpm[];
+extern char * b_pre2_xpm[];
+extern char * b_pre3_xpm[];
+extern char * b_pre4_xpm[];
+extern char * b_pre5_xpm[];
+extern char * b_pre6_xpm[];
+extern char * b_pre7_xpm[];
+extern char * b_pre8_xpm[];
+extern char * b_save_xpm[];
+extern char * b_solo_xpm[];
+extern char * buttons_xpm[];
+extern char * empty_xpm[];
+extern char * empty_linux_xpm[];
+extern char * iomixer_xpm[];
+extern char * level_xpm[];
+extern char * monitor_xpm[];
+extern char * mute_xpm[];
+extern char * output_xpm[];
+extern char * over_xpm[];
+extern char * peak_xpm[];
+extern char * solo_xpm[];
+
+#endif
+