[med-svn] r9 - in trunk/packages: . treeviewx treeviewx/branches treeviewx/branches/upstream treeviewx/branches/upstream/current treeviewx/branches/upstream/current/TreeLib treeviewx/branches/upstream/current/TreeLib/gport treeviewx/branches/upstream/current/bitmaps treeviewx/branches/upstream/current/bitmaps/mac treeviewx/branches/upstream/current/ncl-2.0 treeviewx/branches/upstream/current/ncl-2.0/data treeviewx/branches/upstream/current/ncl-2.0/html treeviewx/branches/upstream/current/ncl-2.0/src treeviewx/branches/upstream/current/tv.pbproj treeviewx/branches/upstream/current/tv.xcode

Charles Plessy charles-guest at costa.debian.org
Mon Mar 27 15:52:00 UTC 2006


Author: charles-guest
Date: 2006-03-27 15:51:50 +0000 (Mon, 27 Mar 2006)
New Revision: 9

Added:
   trunk/packages/treeviewx/
   trunk/packages/treeviewx/branches/
   trunk/packages/treeviewx/branches/upstream/
   trunk/packages/treeviewx/branches/upstream/current/
   trunk/packages/treeviewx/branches/upstream/current/AUTHORS
   trunk/packages/treeviewx/branches/upstream/current/COPYING
   trunk/packages/treeviewx/branches/upstream/current/ChangeLog
   trunk/packages/treeviewx/branches/upstream/current/INSTALL
   trunk/packages/treeviewx/branches/upstream/current/Makefile.am
   trunk/packages/treeviewx/branches/upstream/current/Makefile.in
   trunk/packages/treeviewx/branches/upstream/current/NEWS
   trunk/packages/treeviewx/branches/upstream/current/README
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/Makefile.am
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/Makefile.in
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/Parse.cpp
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/Parse.h
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/TreeLib.cpp
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/TreeLib.h
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gdefs.h
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gport.cpp
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gport.h
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/lcaquery.cpp
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/lcaquery.h
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/mast.cpp
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/mast.h
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/nodeiterator.h
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/ntree.cpp
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/ntree.h
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/profile.h
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/quartet.cpp
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/quartet.h
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/tokeniser.cpp
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/tokeniser.h
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/treedrawer.cpp
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/treedrawer.h
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/treeorder.cpp
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/treeorder.h
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/treereader.cpp
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/treereader.h
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/treewriter.cpp
   trunk/packages/treeviewx/branches/upstream/current/TreeLib/treewriter.h
   trunk/packages/treeviewx/branches/upstream/current/aclocal.m4
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/copy.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/internal.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/app.icns
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/copy.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/doc.icns
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/internal.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/new.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/next.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/open.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/paste.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/phylogram.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/previous.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/print.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/print_preview.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/rectangletree.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/saveas.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/slanttree.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/zoomin.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/zoomout.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/new.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/next.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/open.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/paste.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/phylogram.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/previous.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/print.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/print_preview.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/rectangletree.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/saveas.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/slanttree.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/treeview.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/zoomin.xpm
   trunk/packages/treeviewx/branches/upstream/current/bitmaps/zoomout.xpm
   trunk/packages/treeviewx/branches/upstream/current/configure
   trunk/packages/treeviewx/branches/upstream/current/configure.in
   trunk/packages/treeviewx/branches/upstream/current/depcomp
   trunk/packages/treeviewx/branches/upstream/current/install-sh
   trunk/packages/treeviewx/branches/upstream/current/missing
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/Makefile.am
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/Makefile.in
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPCombined.nex
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPMolecular.nex
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPMorph.nex
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPCombined.nex
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPMolecular.nex
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPMorph.nex
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/P95morph.nex
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/P95rbcl.nex
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/W98morph.nex
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/characters.nex
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/characters.ref.txt
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/distances.nex
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/kenrickcrane.nex
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/html/
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/html/NexusClassLibrary.html
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/Makefile.am
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/Makefile.in
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/allelesblock.cpp
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/allelesblock.h
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/assumptionsblock.cpp
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/assumptionsblock.h
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/charactersblock.cpp
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/charactersblock.h
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/datablock.cpp
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/datablock.h
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretedatum.cpp
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretedatum.h
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretematrix.cpp
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretematrix.h
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancedatum.cpp
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancedatum.h
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancesblock.cpp
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancesblock.h
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexus.cpp
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexus.h
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexusblock.cpp
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexusdefs.h
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexustoken.cpp
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexustoken.h
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsdate.cpp
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsdate.h
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsstring.cpp
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsstring.h
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/setreader.cpp
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/setreader.h
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/taxablock.cpp
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/taxablock.h
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/treesblock.cpp
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/treesblock.h
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/xnexus.cpp
   trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/xnexus.h
   trunk/packages/treeviewx/branches/upstream/current/tdoc.cpp
   trunk/packages/treeviewx/branches/upstream/current/tdoc.h
   trunk/packages/treeviewx/branches/upstream/current/tproject.h
   trunk/packages/treeviewx/branches/upstream/current/treeorder_dialog.cpp
   trunk/packages/treeviewx/branches/upstream/current/treeorder_dialog.h
   trunk/packages/treeviewx/branches/upstream/current/tv.cpp
   trunk/packages/treeviewx/branches/upstream/current/tv.h
   trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/
   trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/project.pbxproj
   trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/rpage.pbxuser
   trunk/packages/treeviewx/branches/upstream/current/tv.spec.in
   trunk/packages/treeviewx/branches/upstream/current/tv.xcode/
   trunk/packages/treeviewx/branches/upstream/current/tv.xcode/project.pbxproj
   trunk/packages/treeviewx/branches/upstream/current/tv.xcode/rpage.pbxuser
   trunk/packages/treeviewx/branches/upstream/current/tview.cpp
   trunk/packages/treeviewx/branches/upstream/current/tview.h
   trunk/packages/treeviewx/tags/
Log:
[svn-inject] Installing original source of treeviewx

Added: trunk/packages/treeviewx/branches/upstream/current/AUTHORS
===================================================================


Property changes on: trunk/packages/treeviewx/branches/upstream/current/AUTHORS
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/COPYING
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/COPYING	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/COPYING	2006-03-27 15:51:50 UTC (rev 9)
@@ -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.
+
+		    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.)
+
+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.
+
+  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.
+
+  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
+
+	    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.


Property changes on: trunk/packages/treeviewx/branches/upstream/current/COPYING
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ChangeLog
===================================================================


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ChangeLog
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/INSTALL
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/INSTALL	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/INSTALL	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,182 @@
+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, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+   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 at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+   The file `configure.in' is used to create `configure' by a program
+called `autoconf'.  You only need `configure.in' 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.  You can give `configure'
+initial values for variables by setting them in the environment.  Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+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 supports 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' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on.  Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+     CPU-COMPANY-SYSTEM
+
+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 host type.
+
+   If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+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.
+
+Operation Controls
+==================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+     Use and save the results of the tests in FILE instead of
+     `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
+     debugging `configure'.
+
+`--help'
+     Print a summary of the options to `configure', and exit.
+
+`--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.
+
+`--version'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`configure' also accepts some other, not widely useful, options.


Property changes on: trunk/packages/treeviewx/branches/upstream/current/INSTALL
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/Makefile.am
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/Makefile.am	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/Makefile.am	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,44 @@
+# $Id: Makefile.am,v 1.21 2005/08/30 11:48:53 rdmp1c Exp $
+
+# The root makefile. 
+
+TREELIBDIR	= TreeLib
+GPORTDIR	= $(TREELIBDIR)/gport
+
+# to do: add XML support back into Unix version (cf. TreeEdit)
+#EXPATPPDIR 	= $(TREELIBDIR)/expatpp
+#XMLPARSEDIR = $(EXPATPPDIR)/xmlparse
+
+NCLDIR		= ncl-2.0/src
+#LIBDIRS	= -L$(NCLDIR) 
+#-L$(XMLPARSEDIR)
+
+LIBS		= @LIBS@ -L$(NCLDIR) -lncl -L$(TREELIBDIR) -ltreelib
+#-lexpat
+INCLUDES 	= -I$(NCLDIR) -I$(TREELIBDIR) -I$(GPORTDIR) 
+#-I$(EXPATPPDIR) -I$(XMLPARSEDIR) -I$(EXPATPPDIR)/xmltok
+
+# We want to build the tree and NEXUS parsing code as separate libraries
+SUBDIRS = ncl-2.0 TreeLib
+
+# The actual TreeView X program
+bin_PROGRAMS = tv
+tv_SOURCES = tview.cpp tdoc.cpp tv.cpp treeorder_dialog.cpp
+
+
+# Include headers, bitmaps, icons, and IDE files in the distribution
+EXTRA_DIST = tdoc.h tproject.h tv.h tview.h treeorder_dialog.h \
+   bitmaps/paste.xpm bitmaps/new.xpm bitmaps/copy.xpm bitmaps/phylogram.xpm bitmaps/print_preview.xpm \
+   bitmaps/slanttree.xpm bitmaps/next.xpm bitmaps/previous.xpm bitmaps/rectangletree.xpm \
+   bitmaps/treeview.xpm bitmaps/open.xpm bitmaps/print.xpm bitmaps/saveas.xpm \
+   bitmaps/mac/copy.xpm bitmaps/mac/phylogram.xpm bitmaps/mac/print_preview.xpm \
+   bitmaps/mac/slanttree.xpm bitmaps/mac/next.xpm bitmaps/mac/previous.xpm bitmaps/mac/rectangletree.xpm \
+   bitmaps/mac/open.xpm bitmaps/mac/print.xpm bitmaps/mac/saveas.xpm  \
+   bitmaps/mac/internal.xpm bitmaps/mac/new.xpm bitmaps/mac/paste.xpm  \
+   bitmaps/mac/zoomin.xpm bitmaps/mac/zoomout.xpm bitmaps/zoomin.xpm bitmaps/zoomout.xpm bitmaps/internal.xpm \
+   tv.pbproj/project.pbxproj tv.pbproj/rpage.pbxuser \
+   tv.xcode/project.pbxproj tv.xcode/rpage.pbxuser \
+   bitmaps/mac/app.icns bitmaps/mac/doc.icns
+
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/Makefile.am
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/Makefile.in
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/Makefile.in	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/Makefile.in	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,657 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am,v 1.21 2005/08/30 11:48:53 rdmp1c Exp $
+
+# The root makefile. 
+
+SOURCES = $(tv_SOURCES)
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = .
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+bin_PROGRAMS = tv$(EXEEXT)
+subdir = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+	$(srcdir)/Makefile.in $(srcdir)/tv.spec.in \
+	$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
+	depcomp install-sh missing
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno configure.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES = tv.spec
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am_tv_OBJECTS = tview.$(OBJEXT) tdoc.$(OBJEXT) tv.$(OBJEXT) \
+	treeorder_dialog.$(OBJEXT)
+tv_OBJECTS = $(am_tv_OBJECTS)
+tv_LDADD = $(LDADD)
+DEFAULT_INCLUDES = -I. -I$(srcdir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
+SOURCES = $(tv_SOURCES)
+DIST_SOURCES = $(tv_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+	html-recursive info-recursive install-data-recursive \
+	install-exec-recursive install-info-recursive \
+	install-recursive installcheck-recursive installdirs-recursive \
+	pdf-recursive ps-recursive uninstall-info-recursive \
+	uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  { test ! -d $(distdir) \
+    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr $(distdir); }; }
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+ENT_FALSE = @ENT_FALSE@
+ENT_TRUE = @ENT_TRUE@
+EXEEXT = @EXEEXT@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+#LIBDIRS	= -L$(NCLDIR) 
+#-L$(XMLPARSEDIR)
+LIBS = @LIBS@ -L$(NCLDIR) -lncl -L$(TREELIBDIR) -ltreelib
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WX_CONFIG = @WX_CONFIG@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+TREELIBDIR = TreeLib
+GPORTDIR = $(TREELIBDIR)/gport
+
+# to do: add XML support back into Unix version (cf. TreeEdit)
+#EXPATPPDIR 	= $(TREELIBDIR)/expatpp
+#XMLPARSEDIR = $(EXPATPPDIR)/xmlparse
+NCLDIR = ncl-2.0/src
+#-lexpat
+INCLUDES = -I$(NCLDIR) -I$(TREELIBDIR) -I$(GPORTDIR) 
+#-I$(EXPATPPDIR) -I$(XMLPARSEDIR) -I$(EXPATPPDIR)/xmltok
+
+# We want to build the tree and NEXUS parsing code as separate libraries
+SUBDIRS = ncl-2.0 TreeLib
+tv_SOURCES = tview.cpp tdoc.cpp tv.cpp treeorder_dialog.cpp
+
+# Include headers, bitmaps, icons, and IDE files in the distribution
+EXTRA_DIST = tdoc.h tproject.h tv.h tview.h treeorder_dialog.h \
+   bitmaps/paste.xpm bitmaps/new.xpm bitmaps/copy.xpm bitmaps/phylogram.xpm bitmaps/print_preview.xpm \
+   bitmaps/slanttree.xpm bitmaps/next.xpm bitmaps/previous.xpm bitmaps/rectangletree.xpm \
+   bitmaps/treeview.xpm bitmaps/open.xpm bitmaps/print.xpm bitmaps/saveas.xpm \
+   bitmaps/mac/copy.xpm bitmaps/mac/phylogram.xpm bitmaps/mac/print_preview.xpm \
+   bitmaps/mac/slanttree.xpm bitmaps/mac/next.xpm bitmaps/mac/previous.xpm bitmaps/mac/rectangletree.xpm \
+   bitmaps/mac/open.xpm bitmaps/mac/print.xpm bitmaps/mac/saveas.xpm  \
+   bitmaps/mac/internal.xpm bitmaps/mac/new.xpm bitmaps/mac/paste.xpm  \
+   bitmaps/mac/zoomin.xpm bitmaps/mac/zoomout.xpm bitmaps/zoomin.xpm bitmaps/zoomout.xpm bitmaps/internal.xpm \
+   tv.pbproj/project.pbxproj tv.pbproj/rpage.pbxuser \
+   tv.xcode/project.pbxproj tv.xcode/rpage.pbxuser \
+   bitmaps/mac/app.icns bitmaps/mac/doc.icns
+
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .cpp .o .obj
+am--refresh:
+	@:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
+	      cd $(srcdir) && $(AUTOMAKE) --gnu  \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    echo ' $(SHELL) ./config.status'; \
+	    $(SHELL) ./config.status;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+tv.spec: $(top_builddir)/config.status $(srcdir)/tv.spec.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  if test -f $$p \
+	  ; then \
+	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+	   echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+	   $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+	  else :; fi; \
+	done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
+	done
+
+clean-binPROGRAMS:
+	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+tv$(EXEEXT): $(tv_OBJECTS) $(tv_DEPENDENCIES) 
+	@rm -f tv$(EXEEXT)
+	$(CXXLINK) $(tv_LDFLAGS) $(tv_OBJECTS) $(tv_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tdoc.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/treeorder_dialog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tv.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tview.Po at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@set fnord $$MAKEFLAGS; amf=$$2; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+	@set fnord $$MAKEFLAGS; amf=$$2; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	$(am__remove_distdir)
+	mkdir $(distdir)
+	$(mkdir_p) $(distdir)/. $(distdir)/bitmaps $(distdir)/bitmaps/mac $(distdir)/tv.pbproj $(distdir)/tv.xcode
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d "$(distdir)/$$subdir" \
+	    || $(mkdir_p) "$(distdir)/$$subdir" \
+	    || exit 1; \
+	    distdir=`$(am__cd) $(distdir) && pwd`; \
+	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+	    (cd $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$top_distdir" \
+	        distdir="$$distdir/$$subdir" \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+	-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
+	|| chmod -R a+r $(distdir)
+dist-gzip: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+
+dist-bzip2: distdir
+	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+	$(am__remove_distdir)
+
+dist-tarZ: distdir
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+	$(am__remove_distdir)
+
+dist-shar: distdir
+	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+	$(am__remove_distdir)
+
+dist-zip: distdir
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
+	$(am__remove_distdir)
+
+dist dist-all: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	case '$(DIST_ARCHIVES)' in \
+	*.tar.gz*) \
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+	*.tar.bz2*) \
+	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+	*.tar.Z*) \
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+	*.shar.gz*) \
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+	*.zip*) \
+	  unzip $(distdir).zip ;;\
+	esac
+	chmod -R a-w $(distdir); chmod a+w $(distdir)
+	mkdir $(distdir)/_build
+	mkdir $(distdir)/_inst
+	chmod a-w $(distdir)
+	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+	  && cd $(distdir)/_build \
+	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+	        distuninstallcheck \
+	  && chmod -R a-w "$$dc_install_base" \
+	  && ({ \
+	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+	  && rm -rf "$$dc_destdir" \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+	  && rm -rf $(DIST_ARCHIVES) \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+	$(am__remove_distdir)
+	@(echo "$(distdir) archives ready for distribution: "; \
+	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+	  sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
+distuninstallcheck:
+	@cd $(distuninstallcheck_dir) \
+	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+	   || { echo "ERROR: files left after uninstall:" ; \
+	        if test -n "$(DESTDIR)"; then \
+	          echo "  (check DESTDIR support)"; \
+	        fi ; \
+	        $(distuninstallcheck_listfiles) ; \
+	        exit 1; } >&2
+distcleancheck: distclean
+	@if test '$(srcdir)' = . ; then \
+	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+	  exit 1 ; \
+	fi
+	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+	  || { echo "ERROR: files left in build directory after distclean:" ; \
+	       $(distcleancheck_listfiles) ; \
+	       exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(PROGRAMS)
+installdirs: installdirs-recursive
+installdirs-am:
+	for dir in "$(DESTDIR)$(bindir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
+	check-am clean clean-binPROGRAMS clean-generic clean-recursive \
+	ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
+	dist-shar dist-tarZ dist-zip distcheck distclean \
+	distclean-compile distclean-generic distclean-recursive \
+	distclean-tags distcleancheck distdir distuninstallcheck dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-binPROGRAMS install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am install-man \
+	install-strip installcheck installcheck-am installdirs \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	maintainer-clean-recursive mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-recursive pdf pdf-am ps ps-am \
+	tags tags-recursive uninstall uninstall-am \
+	uninstall-binPROGRAMS uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: trunk/packages/treeviewx/branches/upstream/current/NEWS
===================================================================


Property changes on: trunk/packages/treeviewx/branches/upstream/current/NEWS
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/README
===================================================================


Property changes on: trunk/packages/treeviewx/branches/upstream/current/README
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/Makefile.am
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/Makefile.am	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/Makefile.am	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,20 @@
+
+noinst_LIBRARIES = libtreelib.a
+if ENT
+INCLUDES = -Igport -I../graph
+libtreelib_a_SOURCES = nodeiterator.h Parse.cpp Parse.h \
+   profile.h tokeniser.cpp tokeniser.h TreeLib.cpp TreeLib.h \
+   treedrawer.cpp treedrawer.h treereader.cpp treereader.h \
+   treewriter.cpp treewriter.h treeorder.cpp treeorder.h   \
+   ntree.cpp ntree.h  mast.cpp mast.h lcaquery.cpp lcaquery.h quartet.cpp quartet.h  \
+   gport/gport.cpp
+else
+INCLUDES = -Igport 
+
+libtreelib_a_SOURCES = nodeiterator.h Parse.cpp Parse.h \
+   profile.h tokeniser.cpp tokeniser.h TreeLib.cpp TreeLib.h \
+   treedrawer.cpp treedrawer.h treereader.cpp treereader.h \
+   treewriter.cpp treewriter.h treeorder.cpp treeorder.h
+endif
+
+EXTRA_DIST = gport/gport.h gport/gdefs.h gport/gport.cpp


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/Makefile.am
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/Makefile.in
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/Makefile.in	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/Makefile.in	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,431 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+SOURCES = $(libtreelib_a_SOURCES)
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = TreeLib
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+libtreelib_a_AR = $(AR) $(ARFLAGS)
+libtreelib_a_LIBADD =
+am__libtreelib_a_SOURCES_DIST = nodeiterator.h Parse.cpp Parse.h \
+	profile.h tokeniser.cpp tokeniser.h TreeLib.cpp TreeLib.h \
+	treedrawer.cpp treedrawer.h treereader.cpp treereader.h \
+	treewriter.cpp treewriter.h treeorder.cpp treeorder.h \
+	ntree.cpp ntree.h mast.cpp mast.h lcaquery.cpp lcaquery.h \
+	quartet.cpp quartet.h gport/gport.cpp
+ at ENT_FALSE@am_libtreelib_a_OBJECTS = Parse.$(OBJEXT) \
+ at ENT_FALSE@	tokeniser.$(OBJEXT) TreeLib.$(OBJEXT) \
+ at ENT_FALSE@	treedrawer.$(OBJEXT) treereader.$(OBJEXT) \
+ at ENT_FALSE@	treewriter.$(OBJEXT) treeorder.$(OBJEXT)
+ at ENT_TRUE@am_libtreelib_a_OBJECTS = Parse.$(OBJEXT) \
+ at ENT_TRUE@	tokeniser.$(OBJEXT) TreeLib.$(OBJEXT) \
+ at ENT_TRUE@	treedrawer.$(OBJEXT) treereader.$(OBJEXT) \
+ at ENT_TRUE@	treewriter.$(OBJEXT) treeorder.$(OBJEXT) \
+ at ENT_TRUE@	ntree.$(OBJEXT) mast.$(OBJEXT) lcaquery.$(OBJEXT) \
+ at ENT_TRUE@	quartet.$(OBJEXT) gport.$(OBJEXT)
+libtreelib_a_OBJECTS = $(am_libtreelib_a_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libtreelib_a_SOURCES)
+DIST_SOURCES = $(am__libtreelib_a_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+ENT_FALSE = @ENT_FALSE@
+ENT_TRUE = @ENT_TRUE@
+EXEEXT = @EXEEXT@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WX_CONFIG = @WX_CONFIG@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+noinst_LIBRARIES = libtreelib.a
+ at ENT_FALSE@INCLUDES = -Igport 
+ at ENT_TRUE@INCLUDES = -Igport -I../graph
+ at ENT_FALSE@libtreelib_a_SOURCES = nodeiterator.h Parse.cpp Parse.h \
+ at ENT_FALSE@   profile.h tokeniser.cpp tokeniser.h TreeLib.cpp TreeLib.h \
+ at ENT_FALSE@   treedrawer.cpp treedrawer.h treereader.cpp treereader.h \
+ at ENT_FALSE@   treewriter.cpp treewriter.h treeorder.cpp treeorder.h
+
+ at ENT_TRUE@libtreelib_a_SOURCES = nodeiterator.h Parse.cpp Parse.h \
+ at ENT_TRUE@   profile.h tokeniser.cpp tokeniser.h TreeLib.cpp TreeLib.h \
+ at ENT_TRUE@   treedrawer.cpp treedrawer.h treereader.cpp treereader.h \
+ at ENT_TRUE@   treewriter.cpp treewriter.h treeorder.cpp treeorder.h   \
+ at ENT_TRUE@   ntree.cpp ntree.h  mast.cpp mast.h lcaquery.cpp lcaquery.h quartet.cpp quartet.h  \
+ at ENT_TRUE@   gport/gport.cpp
+
+EXTRA_DIST = gport/gport.h gport/gdefs.h gport/gport.cpp
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  TreeLib/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  TreeLib/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libtreelib.a: $(libtreelib_a_OBJECTS) $(libtreelib_a_DEPENDENCIES) 
+	-rm -f libtreelib.a
+	$(libtreelib_a_AR) libtreelib.a $(libtreelib_a_OBJECTS) $(libtreelib_a_LIBADD)
+	$(RANLIB) libtreelib.a
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Parse.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TreeLib.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gport.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/lcaquery.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/mast.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ntree.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/quartet.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tokeniser.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/treedrawer.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/treeorder.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/treereader.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/treewriter.Po at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+gport.o: gport/gport.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT gport.o -MD -MP -MF "$(DEPDIR)/gport.Tpo" -c -o gport.o `test -f 'gport/gport.cpp' || echo '$(srcdir)/'`gport/gport.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/gport.Tpo" "$(DEPDIR)/gport.Po"; else rm -f "$(DEPDIR)/gport.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='gport/gport.cpp' object='gport.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o gport.o `test -f 'gport/gport.cpp' || echo '$(srcdir)/'`gport/gport.cpp
+
+gport.obj: gport/gport.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT gport.obj -MD -MP -MF "$(DEPDIR)/gport.Tpo" -c -o gport.obj `if test -f 'gport/gport.cpp'; then $(CYGPATH_W) 'gport/gport.cpp'; else $(CYGPATH_W) '$(srcdir)/gport/gport.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/gport.Tpo" "$(DEPDIR)/gport.Po"; else rm -f "$(DEPDIR)/gport.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='gport/gport.cpp' object='gport.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o gport.obj `if test -f 'gport/gport.cpp'; then $(CYGPATH_W) 'gport/gport.cpp'; else $(CYGPATH_W) '$(srcdir)/gport/gport.cpp'; fi`
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	$(mkdir_p) $(distdir)/gport
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-noinstLIBRARIES ctags distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/Parse.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/Parse.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/Parse.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,263 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: Parse.cpp,v 1.9 2002/02/23 12:22:32 rdmp1c Exp $
+ 
+#include <ctype.h>
+#include "Parse.h"
+
+// Return the next token in the string
+tokentype Parser::NextToken ()
+{
+	tokentype t;
+	token = "";
+
+	if (pos >= text.length())
+	{
+		t = ENDOFSTRING;
+	}
+	else
+	{
+		char ch = text[pos];
+
+		if (ch == '\'')
+		{
+			// Single quoted token
+			bool done = false;
+			pos++;
+			while (!done)
+			{
+				ch = text[pos++];
+				// Look ahead for double quote
+				if (ch == '\'')
+				{
+					ch = text[pos];
+					done = (ch != '\'');
+				}
+				if (!done && (ch != '\n') && (ch != '\r'))
+				{
+					token += ch;
+				}
+			}
+			t = STRING; //classify the token
+		}
+		else if (isalpha (ch))
+		{
+			while (isalnum (ch) || (ch == '_') || (ch == '.') && (pos < text.length()))
+			{
+				if (ch == '_')
+					token += ' ';
+				else
+					token += ch;
+				pos++;
+				ch = text[pos];
+			}
+			t = STRING; //classify the token
+		}
+		else
+		{
+			if (isdigit(ch) || (ch == '-'))
+			{
+            	t = ParseNumber();
+//				int stop = text.find_first_not_of ("01234567890-.Ee", pos);
+//				token = text.substr (pos, stop-pos);
+// 				pos = stop;
+//				t = NUMBER;
+			}
+			else
+			{
+				token += ch;
+				pos++;
+				switch (ch)
+				{
+					case '(': t = LPAR; 	 	break;
+					case ')': t = RPAR; 	 	break;
+					case ' ': t = SPACE; 	 	break;
+					case ',': t = COMMA; 	 	break;
+					case ';': t = SEMICOLON; 	break;
+					case ':': t = COLON;		break;
+					case '\t': t = TAB;		break;
+					case '\r':
+					case '\n': t = NEWLINE;	break;
+					default:  t = BAD; 		break;
+				}
+			}
+		}
+	}
+
+//    cout << "token = " << token << endl;
+
+	return (t);
+}
+
+//------------------------------------------------------------------------------
+// Parse a number (integer or real).
+tokentype Parser::ParseNumber ()
+{
+	enum {
+		start		= 0x0001, // 0
+		sign		= 0x0002, // 1
+        digit		= 0x0004, // 2
+		fraction	= 0x0008, // 3
+		expsymbol	= 0x0010, // 4
+		expsign		= 0x0020, // 5
+        exponent 	= 0x0040, // 6
+        bad			= 0x0080,
+        done		= 0x0100
+    } state;
+
+    tokentype result = BAD;
+
+	token = "";
+    state = start;
+
+    char curChar = text[pos]; 
+
+    while (!IsWhiteSpace (curChar)
+    	&& !(IsPunctuation (curChar) && (curChar != '-'))
+        && (state != bad)
+        && (state != done))
+    {
+    	if (isdigit (curChar))
+        {
+        	switch (state)
+            {
+            	case start:
+                case sign:
+                	state = digit;
+                    break;
+                case expsymbol:
+                case expsign:
+                	state = exponent;
+                    break;
+                default:
+                	break;
+            }
+        }
+        else if ((curChar == '-') || (curChar == '+'))
+        {
+        	switch (state)
+            {
+            	case start:
+                	state = sign;		// sign of number
+                    break;
+                case digit:
+                	state = done;		// minus sign is punctuation, such as 6-10
+                	break;
+                case expsymbol:
+                	state = expsign;	// sign of exponent
+                    break;
+                default:
+                	state = bad;		// syntax error
+                    break;
+            }
+        }
+        else if ((curChar == '.') && (state == digit))
+        	state = fraction;
+        else if (((curChar == 'E') || (curChar == 'e')) && (state & (digit | fraction)))
+        	state = expsymbol;
+        else
+        	state = bad;
+
+        if ((state != bad) && (state != done))
+        {
+        	token += curChar;
+            curChar = GetNextChar ();
+        }
+    }
+
+    int isNumber =  state & (digit | fraction | exponent | done);
+    if (isNumber)
+    {
+    	// We have a number
+		result = NUMBER;
+
+		if (IsPunctuation (curChar))
+        {
+//        	PutBack (curChar);
+//            if (!atEOL)
+//            	filecol--;
+        }
+	}        
+
+	else
+    {
+		// Not a number, but a string that starts with numbers, such as "00BW0762.1"
+//        cout << "Do something!" << endl;
+			do {
+				if (curChar == '_')
+					token += ' ';
+				else
+					token += curChar;
+            	curChar = GetNextChar ();
+ 			} while (isalnum (curChar) || (curChar == '_') || (curChar == '.') && (pos < text.length()));
+			result = STRING; //classify the token
+
+    }
+
+	return result;
+}
+
+
+//------------------------------------------------------------------------------
+bool Parser::IsPunctuation (char ch)
+{
+	char punctuation[22];
+	punctuation[0]  = '(';
+	punctuation[1]  = ')';
+	punctuation[2]  = '[';
+	punctuation[3]  = ']';
+	punctuation[4]  = '{';
+	punctuation[5]  = '}';
+	punctuation[6]  = '/';
+	punctuation[7]  = '\\';
+	punctuation[8]  = ',';
+	punctuation[9]  = ';';
+	punctuation[10] = ':';
+	punctuation[11] = '=';
+	punctuation[12] = '*';
+	punctuation[13] = '\'';
+	punctuation[14] = '"';
+	punctuation[15] = '`';
+	punctuation[16] = '+';
+	punctuation[17] = '-';
+	punctuation[18] = '<';
+	punctuation[19] = '>';
+	punctuation[20] = '!';
+	punctuation[21] = '#';
+	punctuation[22] = '\0';
+
+
+    return (bool)(strchr (punctuation, ch) != NULL);
+}
+
+
+//------------------------------------------------------------------------------
+bool Parser::IsWhiteSpace (char ch)
+{
+	char whitespace[4];
+	whitespace[0]  = ' ';
+	whitespace[1]  = '\t';
+	whitespace[2]  = '\n';
+	whitespace[3]  = '\0';
+
+    return (bool)(strchr (whitespace, ch) != NULL);
+}


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/Parse.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/Parse.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/Parse.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/Parse.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,86 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+ 
+ // $Id: Parse.h,v 1.7 2004/03/04 23:22:42 rdmp1c Exp $
+ 
+//
+// Simple string parser
+//
+
+
+#ifndef PARSE_H
+#define PARSE_H
+
+#ifdef __BORLANDC__
+	// Undefine __MINMAX_DEFINED so that min and max are correctly defined
+	#ifdef __MINMAX_DEFINED
+		#undef __MINMAX_DEFINED
+	#endif
+    // Ignore "Cannot create precompiled header: code in header" message
+    // generated when compiling string.cc
+    #pragma warn -pch
+#endif
+
+#include <string>
+
+#ifdef __BORLANDC__
+    #pragma warn .pch
+#endif
+
+
+using namespace std;
+
+enum tokentype {STRING, NUMBER, OTHER, ENDOFSTRING, BAD, SPACE, LPAR, RPAR,
+	COMMA, SEMICOLON, COLON, TAB, NEWLINE};
+
+class Parser
+{
+public:
+	Parser () { text = ""; token = ""; pos = 0; };
+	Parser (string s) { text = s; token = ""; pos = 0; };
+	Parser (char *s) { text = s; token = ""; pos = 0; };
+        virtual ~Parser () {};	
+	virtual tokentype NextToken ();
+	virtual string GetToken () { return token; };
+	virtual const char *GetTokenAsCstr () { return token.c_str(); };
+	virtual int GetPos () { return pos; };
+
+	virtual bool IsPunctuation (char ch);
+	virtual bool IsWhiteSpace (char ch);
+	virtual char GetNextChar () { return text[++pos]; };
+        virtual void PutBack (char ch) { pos--; };
+	virtual tokentype ParseNumber ();    
+protected:
+	string	text;
+	string	token;
+	int 	pos;
+};
+
+
+#ifdef __BORLANDC__
+	// Redefine __MINMAX_DEFINED so Windows header files compile
+	#ifndef __MINMAX_DEFINED
+			#define __MINMAX_DEFINED
+	#endif
+#endif
+
+
+#endif  // PARSE_H


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/Parse.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/TreeLib.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/TreeLib.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/TreeLib.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,1258 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+ 
+// $Id: TreeLib.cpp,v 1.26 2004/05/13 12:22:11 jcotton Exp $
+
+#include "TreeLib.h"
+#include "Parse.h"
+
+#include <vector>
+
+
+// Convert a string to a NEXUS format string
+std::string NEXUSString (const std::string s)
+{
+	std::string outputString ="";
+	bool enclose = false;
+	int i = 0;
+
+	if (isalpha (s[0]))
+	{
+		// First character is a letter, check the rest
+		i = 1;
+		while ((i < s.length()) && !enclose)
+		{
+			if (!isalnum (s[i]) && (s[i] != ' ') && (s[i] != '_') && (s[i] != '.'))
+				enclose = true;
+			i++;
+		}
+	}
+	else
+		enclose = true;
+
+	if (enclose)
+	{
+		outputString = "'";
+	}
+
+	i = 0;
+	while (i < s.length())
+	{
+		if (s[i] == '\'')
+			outputString += "''";
+		else if ((s[i] == ' ') && !enclose)
+			outputString += '_';
+		else
+			outputString += s[i];
+		i++;
+	}
+
+
+	if (enclose)
+	{
+		outputString += "'";
+	}
+	
+	return outputString;
+}
+
+
+
+
+//------------------------------------------------------------------------------
+Node::Node ()
+{
+	Child = Anc = Sib = NULL;
+	Label 	= "";
+	Weight 	= 0;
+	Length 	= 0.0;
+	Leaf 	= false;
+	Height 	= 0;
+	Marked 	= false;
+	Depth   = 0;
+	Degree	= 0;
+	PathLength = 0.0;
+	LeafNumber = 0;
+	LabelNumber = 0;
+}
+
+//------------------------------------------------------------------------------
+void Node::Copy (Node *theCopy)
+{
+	theCopy->SetLeaf (IsLeaf ());
+	theCopy->SetLabel (Label);
+	theCopy->SetIndex (Index);
+	theCopy->SetLeafNumber (LeafNumber);
+	theCopy->SetLabelNumber (LabelNumber);
+	theCopy->SetEdgeLength (Length);
+}
+
+///------------------------------------------------------------------------------
+// True if node is a left descendant of q
+bool Node::IsALeftDescendantOf (Node *q)
+{
+	NodePtr r = this;
+	while ((r) && (r != q->Child) && (r != q)) r = r->Anc;
+	return (r == q->Child);
+}
+
+//------------------------------------------------------------------------------
+// Return sibling node that is immediately to the LEFT of this node
+Node *Node::LeftSiblingOf ()
+{
+	NodePtr q = Anc->Child;
+	while (q->Sib != this)
+		q = q->Sib;
+	return q;
+}
+
+//------------------------------------------------------------------------------
+// Return the rightmost sibling of the node
+Node *Node::GetRightMostSibling ()
+{
+	Node *p = this;
+
+	while (p->Sib) p = p->Sib;
+	return (p);
+}
+
+//------------------------------------------------------------------------------
+Tree::Tree ()
+{
+	Root 			= NULL;
+	CurNode 		= NULL;
+	Leaves 		= 0;
+	Internals 		= 0;
+	Error 		= 0;
+	InternalLabels 	= false;
+	EdgeLengths 	= false;
+	Nodes 		= NULL;
+	Name 		= "";
+	Rooted 		= false;
+	Weight		= 1.0;
+}
+
+//------------------------------------------------------------------------------
+// Copy constructor
+Tree::Tree (const Tree &t)
+{
+	if (t.GetRoot() == NULL)
+    {
+		Root = NULL;
+        CurNode 		= NULL;
+        Leaves 		= 0;
+        Internals 		= 0;
+        Error 		= 0;
+        InternalLabels 	= false;
+        EdgeLengths 	= false;
+        Nodes 		= NULL;
+        Name 		= "";
+        Rooted 		= false;
+        Weight		= 1.0;
+    }
+    else
+    {
+		CurNode 		= t.GetRoot();   		
+		NodePtr placeHolder;  				
+		t.copyTraverse (CurNode, placeHolder );
+		Root 			= placeHolder;  
+		Leaves    		= t.GetNumLeaves ();
+		Internals 		= t.GetNumInternals ();
+		Name	  		= t.GetName ();
+		CurNode 		= NULL;
+		Error 		= 0;
+		InternalLabels 	= t.GetHasInternalLabels ();;
+		EdgeLengths 	= t.GetHasEdgeLengths ();
+		Nodes 		= NULL;
+		Rooted 		= t.IsRooted();
+		Weight		= t.GetWeight();
+	}
+}
+
+
+//------------------------------------------------------------------------------
+Tree::~Tree ()
+{
+	deletetraverse (Root);
+	delete [] Nodes;
+}
+
+//------------------------------------------------------------------------------
+void Tree::deletetraverse (NodePtr p)
+{
+	if (p)
+	{
+		deletetraverse (p->GetChild());
+		deletetraverse (p->GetSibling());
+		delete p;
+	}
+}
+
+//------------------------------------------------------------------------------
+/*
+	Return a copy of the subtree in rooted at RootedAt.
+    The function result is the root of the subtree.
+
+   Tree
+
+            x---y    b---c               x'--y'
+             \        \                   \
+              \        \                   \
+    RootedAt ->w--------a       ==>        CopyOfSubTree -> NULL
+               \
+                \
+
+    which corresponds to copying
+
+     x'    y'             x     y b     c
+      \   /                \   /   \   /
+       \ /                  \ /     \ /
+        w'       from        w       a
+                              \     /
+                               \   /
+                                \ /
+                                 v
+
+*/
+
+//------------------------------------------------------------------------------
+// This code needs Tree to be a friend of Node
+void Tree::copyTraverse (NodePtr p1, NodePtr &p2) const
+{
+	if (p1)
+	{
+		p2 = NewNode ();
+		p1->Copy (p2);
+
+		// Note the call to p2->child, not p2->GetChild(). Calling the field
+		// is essential because calling GetChild merely passes a temporary
+		// copy of the child, hence we are not actually creating a child of p2.
+		// We can access child directly by making Tree a friend of Node (see
+		// TreeLib.h).
+		copyTraverse (p1->GetChild(), p2->Child);
+		if (p2->GetChild())
+			p2->GetChild()->SetAnc (p2);
+
+		// Ensure we don't copy RootedAt sibling. If the sibling is NULL then
+		// we won't anyway, but this line ensures this for all cases.
+		if (p1 != CurNode)
+			copyTraverse (p1->GetSibling(), p2->Sib);  // note sib
+		if (p2->GetChild ())
+		{
+			NodePtr q = p2->GetChild()->GetSibling();
+			while (q)
+			{
+				q->SetAnc (p2);
+				q = q->GetSibling();
+			}
+		}
+	}
+}
+
+//------------------------------------------------------------------------------
+NodePtr Tree::CopyOfSubtree (NodePtr RootedAt) 
+{
+	CurNode = RootedAt;   // Store this to avoid copying too much of the tree
+	NodePtr placeHolder;  // This becomes the root of the subtree
+	copyTraverse (CurNode, placeHolder);
+	return placeHolder;
+}
+
+
+//------------------------------------------------------------------------------
+string Tree::GetErrorMsg ()
+{
+	string s = "No error";
+
+	switch (Error)
+	{
+		case errSYNTAX:
+			s = "Syntax error";
+			break;
+		case errENDOFSTRING:
+			s = "Syntax error";
+			break;
+		case errMISSINGLPAR:
+			s = "Missing '('";
+			break;
+		case errUNBALANCED:
+			s = "Unbalance parentheses";
+			break;
+		case errSTACKNOTEMPTY:
+			s = "Stack not empty";
+			break;
+		case errSEMICOLON:
+			s = "Expecting a semicolon";
+			break;
+		default:
+			break;
+	}
+	return s;
+}
+
+//------------------------------------------------------------------------------
+// Make CurNode a leaf, called by tree reading code
+void Tree::MakeCurNodeALeaf (int i)
+{
+	Leaves++;
+	CurNode->SetLeaf(true);
+	CurNode->SetWeight(1);
+//	CurNode->SetLabelNumber(i);
+	CurNode->SetLeafNumber(Leaves);
+//	Nodes[i - 1] = CurNode;
+}
+
+//m
+
+//------------------------------------------------------------------------------
+// Make a child of CurNode and make it CurNode
+void Tree::MakeChild ()
+{
+	NodePtr	q = NewNode();
+	CurNode->SetChild(q);
+	q->SetAnc(CurNode);
+	CurNode->IncrementDegree();
+	CurNode = q;
+	Internals++;
+}
+
+//------------------------------------------------------------------------------
+// Create a new node and make it the root of the tree, and set CurNode=Root.
+void Tree::MakeRoot ()
+{
+	CurNode   = NewNode();
+	Root 	  = CurNode;
+}
+
+//------------------------------------------------------------------------------
+// Make a sibling of CurNode and make CurNode the new node.
+void Tree::MakeSibling ()
+{
+	NodePtr	q = NewNode ();
+	NodePtr	ancestor = CurNode->GetAnc();
+	CurNode->SetSibling(q);
+	q->SetAnc(ancestor);
+	ancestor->AddWeight(CurNode->GetWeight());
+	ancestor->IncrementDegree();
+	CurNode = q;
+}
+
+
+
+//------------------------------------------------------------------------------
+int Tree::Parse (const char *TreeDescr)
+{
+	enum {stGETNAME, stGETINTERNODE, stNEXTMOVE,
+		stFINISHCHILDREN, stQUIT, stACCEPTED} state;
+
+	stack< NodePtr, vector<NodePtr> > stk;
+	NodePtr		q;
+	Parser		p ((char *)TreeDescr);
+	tokentype	token;
+	float 		f;
+
+	 // Initialise tree variables
+	Root 		= NULL;
+	Leaves 		= 0;
+	Internals 	= 0;
+	Error 		= 0;
+
+	// Create first node
+	CurNode		= NewNode();
+	Root		= CurNode;
+
+	 // Initialise FSA that reads tree
+	state = stGETNAME;
+	token = p.NextToken ();
+
+	while ((state != stQUIT) && (state != stACCEPTED))
+	{
+		switch (state)
+		{
+			case stGETNAME:
+				switch (token)
+				{
+					case SPACE:
+			                    case TAB:
+			                    case NEWLINE:
+						token = p.NextToken ();
+						break;
+					case STRING:
+						// to do: handle translation
+						Leaves++;
+						CurNode->SetLeaf (true);
+						CurNode->SetLeafNumber (Leaves);
+						CurNode->SetWeight (1);
+						CurNode->SetLabel (p.GetToken());
+						CurNode->SetDegree (0);
+						token = p.NextToken ();
+						state = stGETINTERNODE;
+						break;
+					case NUMBER:
+						// to do: handle translation
+						Leaves++;
+						CurNode->SetLeaf (true);
+						CurNode->SetLeafNumber (Leaves);
+						CurNode->SetWeight (1);
+						CurNode->SetLabel (p.GetToken());
+						CurNode->SetDegree (0);
+						token = p.NextToken ();
+						state = stGETINTERNODE;
+						break;
+					case LPAR:
+						state = stNEXTMOVE;
+						break;
+					case ENDOFSTRING:
+						Error = errENDOFSTRING;
+						state = stQUIT;
+						break;
+					default:
+						Error = errSYNTAX;
+						state = stQUIT;
+						break;
+				}
+				break;
+
+			case stGETINTERNODE:
+				switch (token)
+				{
+					case SPACE:
+					case TAB:
+					case NEWLINE:
+						token = p.NextToken ();
+						break;
+					case COLON:
+					case COMMA:
+					case RPAR:
+						state = stNEXTMOVE;
+						break;
+					case ENDOFSTRING:
+						Error = errENDOFSTRING;
+						state = stQUIT;
+						break;
+					default:
+						Error = errSYNTAX;
+						state = stQUIT;
+						break;
+				}
+				break;
+
+			case stNEXTMOVE:
+				switch (token)
+				{
+					case COLON:
+						token = p.NextToken ();
+						f = atof (p.GetTokenAsCstr());
+						CurNode->SetEdgeLength (f);
+						EdgeLengths = true;
+						token = p.NextToken ();
+						break;
+					case SPACE:
+					case TAB:
+					case NEWLINE:
+						token = p.NextToken ();
+						break;
+					// The next node encountered will be a sibling
+					// of Curnode and a descendant of the node on
+					// the top of the node stack.
+					case COMMA:
+						q = NewNode();
+						CurNode->SetSibling (q);
+						if (stk.empty())
+						{
+							Error = errMISSINGLPAR;
+							state = stQUIT;
+						}
+						else
+						{
+							q->SetAnc (stk.top());
+							stk.top()->AddWeight (CurNode->GetWeight());
+							stk.top()->IncrementDegree ();
+							CurNode = q;
+							state = stGETNAME;
+							token = p.NextToken ();
+						}
+						break;
+					// The next node will be a child of CurNode, hence
+					// we create the node and push CurNode onto the
+					// node stack.
+					case LPAR:
+						Internals++;
+						stk.push (CurNode);
+						q = NewNode();
+						CurNode->SetChild (q);
+						q->SetAnc (CurNode);
+						CurNode->IncrementDegree ();
+						CurNode = q;
+						token = p.NextToken ();
+						state = stGETNAME;
+						break;
+					// We've finished ready the descendants of the node
+					// at the top of the node stack so pop it off.
+					case RPAR:
+						if (stk.empty ())
+						{
+							Error = errUNBALANCED;
+							state = stQUIT;
+						}
+						else
+						{
+							q = stk.top();
+							q->AddWeight (CurNode->GetWeight());
+							CurNode = q;
+							stk.pop();
+							state = stFINISHCHILDREN;
+							token = p.NextToken ();
+						}
+						break;
+					// We should have finished the tree
+					case SEMICOLON:
+						if (stk.empty())
+						{
+							state = stACCEPTED;
+						}
+						else
+						{
+							Error = errSTACKNOTEMPTY;
+							state = stQUIT;
+						}
+						break;
+					case ENDOFSTRING:
+						Error = errENDOFSTRING;
+						state = stQUIT;
+						break;
+					default:
+						Error = errSYNTAX;
+						state = stQUIT;
+						break;
+				}
+				break;
+
+			case stFINISHCHILDREN:
+				switch (token)
+				{
+					case STRING:
+					case NUMBER:
+						// internal label
+						InternalLabels = true;
+						CurNode->SetLabel (p.GetToken());
+						token = p.NextToken ();
+						break;
+
+					case COLON:
+						token = p.NextToken ();
+						f = atof (p.GetTokenAsCstr());
+						CurNode->SetEdgeLength (f);
+						EdgeLengths = true;
+						token = p.NextToken ();
+						break;
+				
+					case SPACE:
+			                   case TAB:
+			                   case NEWLINE:
+						token = p.NextToken ();
+						break;
+
+					// We've completed traversing the descendants of the
+					// node at the top of the stack, so pop it off.
+					case RPAR:
+						if (stk.empty())
+						{
+							Error = errUNBALANCED;
+							state = stQUIT;
+						}
+						else
+						{
+							q = stk.top();
+							q->AddWeight (CurNode->GetWeight());
+							CurNode = q;
+							stk.pop();
+							token = p.NextToken ();
+						}
+						break;
+						
+					// The node at the top of the stack still has some
+					// descendants.
+					case COMMA:
+						q = NewNode();
+						CurNode->SetSibling (q);
+						if (stk.empty())
+						{
+							Error = errMISSINGLPAR;
+							state = stQUIT;
+						}
+						else
+						{
+							q->SetAnc (stk.top());
+							stk.top()->AddWeight (CurNode->GetWeight());
+							stk.top()->IncrementDegree ();
+							CurNode = q;
+							state = stGETNAME;
+							token = p.NextToken ();
+						}
+						break;
+					case SEMICOLON:
+						state = stNEXTMOVE;
+						break;
+					default:
+						if (stk.empty())
+						{
+							Error = errSEMICOLON;
+						}
+						else
+						{
+							Error = errSYNTAX;
+						}
+						state = stQUIT;
+						break;
+				}
+				break;
+		}
+	}
+	// Handle errors
+	if (state == stQUIT)
+	{
+		// Clean up to go here
+		return (p.GetPos());
+	}
+	else
+	{
+		Root->SetWeight(Leaves);
+		return (0);
+	}
+}
+
+
+
+//------------------------------------------------------------------------------
+int Tree::Read (istream &f)
+{
+	char ch = '\0';
+	string str = "";
+	while (f.good() && !f.eof() && (ch != ';'))
+	{
+		f.get (ch);
+		str += ch;
+	}
+	return Parse (str.c_str());
+}
+
+
+//------------------------------------------------------------------------------
+void Tree::Write (ostream &f)
+{
+	treeStream = &f;
+	traverse (Root);
+	f << ";";
+}
+
+//------------------------------------------------------------------------------
+void Tree::traverse (NodePtr p)
+{
+
+	if (p)
+	{
+		if (p->IsLeaf())
+		{
+			*treeStream << NEXUSString (p->GetLabel());
+
+			if (EdgeLengths)
+			{
+				*treeStream << ':' << p->GetEdgeLength ();
+			}
+		}
+		else
+		{
+			*treeStream << "(";
+		}
+
+		traverse (p->GetChild());
+		if (p->GetSibling())
+		{
+			*treeStream << ",";
+		}
+		else
+		{
+			if (p != Root)
+			{
+				*treeStream << ")";
+				// 29/3/96
+				if ((p->GetAnc()->GetLabel() != "") && InternalLabels)
+				{
+					*treeStream << '\'' << NEXUSString (p->GetAnc()->GetLabel ()) << '\'';
+				}
+				if (EdgeLengths && (p->GetAnc () != Root))
+				{
+					*treeStream << ':' << p->GetAnc()->GetEdgeLength ();
+				}
+			}
+		}
+		traverse (p->GetSibling());
+	}
+
+}
+
+
+
+//------------------------------------------------------------------------------
+void Tree::drawInteriorEdge (NodePtr p)
+{
+	NodePtr r = p->GetAnc ();
+	int stop = r->GetHeight();
+	if (p->IsTheChild ())
+	{
+		// Visiting ancestor for the first time, so draw the
+		// end symbol
+		if (r == Root)
+		{
+//			if (IsRooted ())
+				Line[stop] = TEE;   // «
+//			else
+//				Line[stop] = VBAR;  // Ò
+		}
+		else
+		{
+			Line[stop] = TEE;      // «
+		}
+
+
+		// Draw branch itself
+		if (r != Root)
+		{
+			// Line
+			int start = r->GetAnc()->GetHeight();
+			for (int i = start + 1; i < stop; i++)
+			{
+				Line[i] = HBAR; // €
+			}
+			// Start symbol
+			if (start == stop)
+				Line[start] = VBAR;     // Ò
+			else if (r->IsTheChild ())
+				Line[start] = LEFT;     // ò
+			else if (r->GetSibling ())
+				Line[start] = SIB;      // Ì
+			else Line[start] = RIGHT;  // Ë
+
+			//
+			fillInAncestors (r);
+		}
+	}
+	else
+	{
+		// Just draw nodes below
+		Line[stop] = VBAR;
+		fillInAncestors (p->GetSibling());
+	}
+
+	// Output the line
+	Line[stop + 1] = '\0';
+
+    drawLine (r, p->IsTheChild());
+
+/*
+
+	*treeStream << Line.c_str();
+
+//	*treeStream		<< "h=" << r->GetHeight() << " w= "
+//			<< r->GetWeight() << "-- ";
+
+
+	// Draw internal label, if present
+	string s = r->GetLabel();
+	if (s != "" && p->IsTheChild ())
+		*treeStream  << r->GetLabel();
+	 *treeStream  << endl;
+*/
+	// Clear the line for the next pass
+	for (int i = 0; i < (Leaves + 2); i++) // to do: get a better limit
+		Line[i] = ' ';
+}
+
+void Tree::drawLine (NodePtr p, bool isChild)
+{
+	*treeStream << Line.c_str();
+
+	if (p->IsLeaf())
+    {
+		* treeStream<< " " << p->GetLabel () <<endl;
+    }
+    else
+    {
+        // Draw internal label, if present
+        string s = p->GetLabel();
+        if (s != "" && isChild)
+            *treeStream  << p->GetLabel();
+
+	 	*treeStream  << endl;
+    }
+}
+
+
+
+//------------------------------------------------------------------------------
+void Tree::drawPendantEdge (NodePtr p)
+{
+		NodePtr q = p->GetAnc();
+		if (q == NULL)
+		{
+			// Handle the degenerate case of a tree with a single leaf
+			Line = (char) HBAR;
+			drawLine (p);	
+		}
+		else
+		{
+			int start = q->GetHeight();
+			int stop = p->GetHeight();
+			char	symbol;
+	
+			// Draw line between p and its ancestor
+			int i;
+			for (i = start + 1; i <= stop; i++)
+				Line[i] = (char)HBAR;      // €
+	
+			// Find appropriate symbol for link to ancestor
+			if (p == q->GetChild())
+			{
+				symbol = (char)LEFT;       // ò
+			}
+			else
+			{
+				// p is a sibling
+				if (p->GetSibling())
+					symbol = (char)SIB;     // Ì
+				else symbol = (char)RIGHT; // Ë
+			}
+			Line[start] = symbol;
+	
+			// Fill in ancestors
+			fillInAncestors (p);
+	
+			// Terminate line
+			Line[stop + 1] = '\0';
+	
+	
+			drawLine (p);
+	/*		// Output line and taxon name
+			*treeStream << Line.c_str() << " " << p->GetLabel ()
+	//			<< "h=" << p->GetHeight() << " w= "
+	//			<< p->GetWeight()
+				<<endl;
+	*/
+	
+			// Clear the line for the next pass
+			for (i = 0; i < (Leaves + 2); i++) // to do: get a better limit for this
+				Line[i] = ' ';
+		}
+}
+
+
+
+//------------------------------------------------------------------------------
+/*
+	{ Put a VBAR symbol ("Ò") into buffer where needed to
+	  represent branches of tree under p. Two cases:
+
+			.....  Ancestor
+			€€€€>  Sibling
+			<----  Child
+
+		  1. r is a sibling of the child of q, and q has a sibling, or
+
+					x€€€€sib€€€>r
+					 ò    .    .
+					  \   .   .
+						\  .  .
+				  child\ . .|
+						  \.. |
+							q€€|€€€sib€€€>
+							 \ |
+							  \| <- this branch passes under r
+								\
+
+
+		  2. r is q's child and q is a sibling of another node.
+
+						  r
+							ò
+							 \
+							 |\
+							 | \
+				  x€€€sib€|€>q
+							 | .
+							 |.<- this branch passes under r
+							 .
+							.
+
+	} */
+
+//------------------------------------------------------------------------------
+void Tree::fillInAncestors (NodePtr p)
+{
+
+	NodePtr q = p->GetAnc ();
+	NodePtr r = p;
+	while (q != Root)
+	{
+		if (
+			(q->GetSibling () && !(r->IsTheChild ()))
+			|| (!(q->IsTheChild ()) && r->IsTheChild())
+			)
+		{
+			if (r ==p && q->GetHeight() == q->GetAnc()->GetHeight())
+				Line[q->GetAnc()->GetHeight()] = SIB;
+			else
+            	Line[q->GetAnc()->GetHeight()] = VBAR;
+		}
+		r = q;
+		q = q->GetAnc ();
+	}
+}
+
+
+
+
+
+//------------------------------------------------------------------------------
+void Tree::drawAsTextTraverse (NodePtr p)
+{
+	if (p)
+	{
+		drawAsTextTraverse (p->GetChild ());
+		if (p->IsLeaf ())
+			drawPendantEdge (p);
+		if (p->GetSibling ())
+			drawInteriorEdge (p);
+		drawAsTextTraverse (p->GetSibling ());
+	}
+}
+
+//------------------------------------------------------------------------------
+void Tree::Draw (ostream &f)
+{
+	treeStream = &f;
+
+	if (Root)
+	{
+		string s (Leaves + 2, ' ');
+        Line = s;
+		MaxHeight = 0;
+		getNodeHeights (Root);
+		drawAsTextTraverse (Root);
+	}
+	else f << "(No tree)" << endl;
+}
+
+//------------------------------------------------------------------------------
+void Tree::getNodeHeights(NodePtr p)
+{
+	if (p)
+	{
+		p->SetHeight (Leaves - p->GetWeight ());
+		if (p->GetHeight() > MaxHeight)
+			MaxHeight = p->GetHeight();
+		getNodeHeights (p->GetChild());
+		getNodeHeights (p->GetSibling());
+	}
+}
+
+
+//------------------------------------------------------------------------------
+// Compute node depth (i.e, height above root). Based on COMPONENT 2.0 code, 
+// assumes count is set to 0 prior to calling code
+void Tree::getNodeDepth(NodePtr p)
+{
+	if (p)
+    {
+
+    	p->SetDepth (count);
+    	count++;
+        getNodeDepth (p->GetChild());
+		count--;
+        getNodeDepth (p->GetSibling());
+    }
+}
+
+//------------------------------------------------------------------------------
+// Compute node depth (i.e, height above root).
+void Tree::GetNodeDepths ()
+{
+	count = 0;
+	getNodeDepth (Root);
+}
+
+
+//------------------------------------------------------------------------------
+void Tree::markNodes(NodePtr p, bool on)
+{
+	if (p)
+	{
+		p->SetMarked (on);
+		markNodes (p->GetChild(), on);
+		markNodes (p->GetSibling(), on);
+	}
+}
+
+//------------------------------------------------------------------------------
+void Tree::MarkNodes (bool on)
+{
+	markNodes (Root, on);
+}
+
+//------------------------------------------------------------------------------
+void Tree::makeNodeList (NodePtr p)
+{
+	if (p)
+	{
+		makeNodeList (p->GetChild ());
+		makeNodeList (p->GetSibling ());
+		if (p->IsLeaf())
+		{
+			LeafList[p->GetLabel()] = p->GetLeafNumber()-1;
+			Nodes[p->GetLeafNumber()-1] = p;
+			p->SetIndex (p->GetLeafNumber()-1);
+		}
+		else
+		{
+			Nodes[count] = p;
+			p->SetIndex (count);
+			count++;
+		}
+		if (p != Root)
+		{
+		}
+	}
+}
+
+//------------------------------------------------------------------------------
+void Tree::MakeNodeList ()
+{
+	if (Nodes == NULL)
+	{
+		Nodes = new NodePtr [Leaves + Internals];
+		Nodes_dimension = Leaves + Internals;
+	}
+	else if (Nodes_dimension != Leaves + Internals)  //The tree size has changed since Nodes was allocated - need to allocate correct amount of space before re-building array!
+	{
+		delete Nodes; //Nodes has already been allocated - need to free it!
+		Nodes = new NodePtr [Leaves + Internals];
+		Nodes_dimension = Leaves + Internals;
+	}
+	count = Leaves;
+	makeNodeList (Root);
+}
+
+//------------------------------------------------------------------------------
+NodePtr Tree::GetLeafWithLabel (string s)
+{
+	NodePtr result = NULL;
+	
+	map<string, int, less<string> >::iterator index  = LeafList.find (s);
+	if (index != LeafList.end())
+		result = Nodes[LeafList[s]];
+		
+	return result;
+}
+
+//------------------------------------------------------------------------------
+// Add Node below Below. Doesn't update any clusters, weights, etc.
+void Tree::AddNodeBelow (NodePtr Node, NodePtr Below)
+{
+	NodePtr Ancestor = NewNode ();
+	Ancestor->SetChild (Node);
+	Node->SetAnc (Ancestor);
+	NodePtr q = Below->GetAnc ();
+	Internals++;
+	if (Node->IsLeaf())
+		Leaves++;
+	if (q == NULL || Below == q->GetChild())
+	{
+		Node->SetSibling (Below);
+		Ancestor->SetAnc (q);
+		Ancestor->SetSibling (Below->GetSibling());
+		Below->SetSibling (NULL);
+		Below->SetAnc (Ancestor);
+		if (q == NULL)
+			Root = Ancestor;
+		else
+			q->SetChild (Ancestor);
+	}
+	else
+	{
+		// Get left sibling of Below
+		NodePtr r = Below->LeftSiblingOf();
+		while (Below != r->GetSibling())
+			r = r->GetSibling();
+		Node->SetSibling (Below);
+		Ancestor->SetAnc (q);
+		Ancestor->SetSibling (Below->GetSibling());
+		Below->SetSibling (NULL);
+		Below->SetAnc (Ancestor);
+		r->SetSibling (Ancestor);
+	}
+}
+
+//------------------------------------------------------------------------------
+// Compute nodal heights based on path length from root, and store maximum
+// value in plot.maxheight. Used by drawing routines.
+void Tree::getPathLengths (NodePtr p)
+{
+	if (p)
+	{
+		if (p != Root)
+		{
+			float l = p->GetEdgeLength();
+			if (l < 0.000001) // suppress negative branch lengths
+				l = 0.0;
+			p->SetPathLength (p->GetAnc()->GetPathLength() + l);
+		}
+		if (p->GetPathLength() > MaxPathLength)
+			MaxPathLength = p->GetPathLength();
+		getPathLengths (p->GetChild());
+		getPathLengths (p->GetSibling());
+	}
+}
+
+//------------------------------------------------------------------------------
+// Fill in weight, degree, etc.
+void Tree::buildtraverse (NodePtr p)
+{
+	if (p)
+	{
+		p->SetWeight (0);
+		p->SetDegree (0);
+		buildtraverse (p->GetChild ());
+		buildtraverse (p->GetSibling ());
+		if (p->IsLeaf())
+		{
+			Leaves++;
+			p->SetWeight (1);
+		}
+		else
+		{
+			Internals++;
+		}
+		if (p != Root)
+		{
+			p->GetAnc()->AddWeight (p->GetWeight());
+			p->GetAnc()->IncrementDegree();
+		}
+	}
+}
+
+//------------------------------------------------------------------------------
+// Ensure fields like weight, degree, etc are correct
+void Tree::Update ()
+{
+	count = 0;
+	Leaves = Internals = 0;
+	buildtraverse (Root);
+}
+
+
+NodePtr Tree::RemoveNode (NodePtr Node)
+{
+	NodePtr result = NULL;
+
+	if (Node == Root)
+	{
+		if (Leaves == 1)
+		{
+			Root = NULL;
+			Node->SetAnc (NULL);
+			Leaves = Internals = 0;
+		}					
+		return result;
+	}
+
+	NodePtr p;
+	NodePtr Ancestor = Node->GetAnc();
+	
+	if (Ancestor->GetDegree() == 2)
+	{
+		// ancestor is binary, so remove node and its ancestor
+		if (Node->IsTheChild ())
+			p = Node->GetSibling();
+		else
+			p = Ancestor->GetChild();
+		NodePtr q = Ancestor->GetAnc();
+		p->SetAnc (q);
+		if (q != NULL)
+		{
+			if (Ancestor->IsTheChild())
+				q->SetChild (p);
+			else
+			{
+				NodePtr r = Ancestor->LeftSiblingOf ();
+				r->SetSibling (p);
+			}
+			p->SetSibling (Ancestor->GetSibling());
+			result = p;
+		}
+		else
+		{
+			// Ancestor is the root
+			Root = p;
+			p->SetSibling (NULL);
+			result = p;
+		}
+		delete Ancestor;
+		Internals--;
+		if (Node->IsLeaf())
+			Leaves--;
+		Node->SetAnc (NULL);
+		Node->SetSibling (NULL);
+	}
+	else
+	{
+		// polytomy, just remove node
+		NodePtr q;
+		if (Node->IsTheChild())
+		{
+			Ancestor->SetChild (Node->GetSibling());
+			q = Node->GetSibling ();
+		}
+		else
+		{
+			q = Node->LeftSiblingOf ();
+			q->SetSibling (Node->GetSibling ());
+		}
+		Node->SetSibling (NULL);
+		Node->SetAnc (NULL);
+		if (Node->IsLeaf())
+			Leaves--;
+		Ancestor->SetDegree (Ancestor->GetDegree() - 1);
+		result = q;
+	}
+}
+
+
+
+
+
+
+
+
+
+
+
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/TreeLib.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/TreeLib.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/TreeLib.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/TreeLib.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,343 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+// $Id: TreeLib.h,v 1.26 2004/05/13 12:22:11 jcotton Exp $
+
+
+#ifndef TREELIB_H
+#define TREELIB_H
+
+#ifdef __BORLANDC__
+	// Undefine __MINMAX_DEFINED so that min and max are correctly defined
+	#ifdef __MINMAX_DEFINED
+		#undef __MINMAX_DEFINED
+	#endif
+    // Ignore "Cannot create precompiled header: code in header" message
+    // generated when compiling string.cc
+    #pragma warn -pch
+#endif
+
+
+#include <fstream>
+#include <strstream>
+#include <string>
+#include <vector>
+#include <stack>
+#include <map>
+
+
+#ifdef __BORLANDC__
+    #pragma warn .pch
+#endif
+
+
+
+//using namespace std;
+
+// Graphics characters for drawing trees
+
+#ifdef __WIN32__
+	// OEM character set
+	//Compressed tree
+	#define HBAR 196  // Ä
+	#define VBAR 179  // ³
+	#define SIB  195  // Ã
+	#define BOT  192  // À
+	#define ROOT 218  // Ú
+	#define DOWN 194  // Â
+
+	// Regular tree
+	#define TEE  180  // ´
+	#define LEFT ROOT
+	#define RIGHT BOT
+
+#else
+    // ANSI character set
+	#define HBAR 45
+	#define VBAR 124
+	#define SIB  43
+	#define BOT  92
+	#define ROOT 43
+	#define DOWN 43
+	#define TEE  124
+//	#define LEFT 47  
+//	#define RIGHT 92
+	#define LEFT 43
+	#define RIGHT 43
+
+#endif
+
+std::string NEXUSString (const std::string s);
+
+
+class Tree;
+
+
+class Node
+{
+friend class Tree;
+public:
+	Node ();
+	virtual ~Node () {}; 
+	
+	virtual void 	AddWeight (int w) { Weight += w; };
+	virtual void	AppendLabel (char *s) { Label += s; };
+	virtual void	AppendLabel (std::string s) { Label += s; };
+
+	virtual void 	Copy (Node* theCopy);
+
+	virtual Node 	*GetAnc () { return Anc; };
+	virtual Node 	*GetChild () { return Child; };
+	virtual int 		GetDegree () { return Degree; };
+	virtual int 		GetDepth () { return Depth; };
+	virtual float	GetEdgeLength () { return Length; };
+	virtual int		GetHeight () { return Height; };
+	 virtual int		GetIndex () { return Index; };
+	virtual std::string 	GetLabel () { return Label; };
+	virtual int		GetLabelNumber () { return LabelNumber; };
+	virtual int		GetLeafNumber () { return LeafNumber; };
+	virtual float	GetPathLength () { return PathLength; };
+	virtual Node 	*GetRightMostSibling ();
+	virtual Node 	*GetSibling () { return Sib; };
+	virtual int 		GetWeight() { return Weight; };
+	
+	
+	virtual void 	IncrementDegree () { Degree++; };
+	virtual bool 	IsLeaf () { return Leaf; };
+	virtual bool 	IsALeftDescendantOf (Node *q);
+  	virtual bool 	IsMarked () { return Marked; };
+	virtual bool	IsTheChild () { return  (Anc->Child == this); };
+	
+	virtual Node	*LeftSiblingOf ();
+
+	virtual void 	SetAnc (Node *p) { Anc = p; };
+	virtual void 	SetChild (Node *p) { Child = p; };
+	virtual void 	SetDegree (int d) { Degree = d; };
+	virtual void 	SetDepth (int d) { Depth = d; };
+	virtual void	SetEdgeLength (float e) { Length = e; };
+	virtual void 	SetHeight (int h) { Height = h; };
+	virtual void 	SetIndex (int i) { Index = i;};
+	virtual void 	SetLeaf (bool on) { Leaf = on; };
+	virtual void 	SetLeafNumber (int i) { LeafNumber = i;};
+	virtual void 	SetLabel (std::string s) { Label = s; };
+	virtual void 	SetLabel (char *s) { Label = s; };
+	virtual void 	SetLabelNumber (int i) { LabelNumber = i;};
+	virtual void	SetMarked (bool on) { Marked = on; };
+	virtual void 	SetPathLength (float l) { PathLength = l;};
+	virtual void 	SetSibling (Node *p) { Sib = p; };
+	virtual void 	SetWeight (int w) { Weight = w; };
+
+
+
+protected:
+	Node 			*Child;
+	Node 			*Sib;
+	Node 			*Anc;
+	int 			Weight;
+	std::string		Label;
+	float			Length;
+	bool			Leaf;
+	int			Height;
+	bool			Marked;
+	int 			Degree;
+	int			LeafNumber;
+	int			Depth;
+	float			PathLength;
+	int			Index;
+	int			LabelNumber;
+};
+typedef Node *NodePtr;
+
+/**
+ *@typedef map <std::string, int, less<std::string> > IntegerNodeMap;
+ */
+typedef std::map<int, NodePtr, std::less <int> > IntegerNodeMap;
+
+
+#define errSYNTAX 			1
+#define errENDOFSTRING		2
+#define errMISSINGLPAR		3
+#define errUNBALANCED		4
+#define errSTACKNOTEMPTY	5
+#define errSEMICOLON		6
+
+
+class Tree
+{
+public:
+	Tree ();
+	Tree (const Tree &t);
+	virtual ~Tree ();
+
+	virtual void 	AddNodeBelow (NodePtr Node, NodePtr Below);
+
+	virtual NodePtr 	CopyOfSubtree (NodePtr RootedAt);
+
+#if defined __BORLANDC__ && (__BORLANDC__ < 0x0550)
+	virtual void 	Draw (ostream &f);
+#else
+ 	virtual void 	Draw (std::ostream &f);
+#endif
+
+	virtual NodePtr 	GetCurNode() { return CurNode; };
+	virtual int  	GetError () { return Error; };
+	virtual std::string	GetErrorMsg ();
+	virtual bool	GetHasEdgeLengths () const { return EdgeLengths; };
+	virtual bool 	GetHasInternalLabels () const { return InternalLabels; };
+	virtual NodePtr GetLeafWithLabel (std::string s);
+	virtual std::string  	GetName () const { return Name; };
+	virtual void 	GetNodeDepths ();
+	virtual int		GetNumInternals () const { return Internals; };
+	virtual int 	GetNumLeaves () const { return Leaves; };
+	virtual int		GetNumNodes () const { return Leaves + Internals; };
+	virtual NodePtr	GetRoot () const { return Root; };
+	virtual double	GetWeight() const { return Weight; };
+
+	virtual bool	IsRooted () const { return Rooted; };
+
+
+	virtual void	MakeChild ();
+	virtual void	MakeCurNodeALeaf (int i);
+	virtual void	MakeRoot ();
+	virtual void	MakeSibling ();
+   	virtual void 	MakeNodeList ();
+
+	virtual void	MarkNodes (bool on);
+	virtual NodePtr NewNode () const { return new Node; };
+
+	virtual int 	Parse (const char *TreeDescr);
+
+#if defined __BORLANDC__ && (__BORLANDC__ < 0x0550)
+	virtual int		Read (istream &f);
+#else
+	virtual int		Read (std::istream &f);
+#endif
+
+	virtual NodePtr 	RemoveNode (NodePtr Node);
+
+	virtual void	SetCurNode (NodePtr p) { CurNode = p; };
+	virtual void	SetEdgeLengths (bool on) { EdgeLengths = on; };
+	virtual void 	SetInternalLabels (bool on) { InternalLabels = on; };
+	virtual void	SetName (const std::string s) { Name = s; };
+	virtual void	SetNumInternals (const int n) { Internals = n; };
+	virtual void	SetNumLeaves (const int n) { Leaves = n; };
+	virtual void 	SetRoot (NodePtr r) { Root = r; };
+	virtual void	SetRooted (bool on) { Rooted = on; };
+	virtual void	SetWeight (const double w) { Weight = w; };
+
+	virtual void	Update ();
+
+
+#if defined __BORLANDC__ && (__BORLANDC__ < 0x0550)
+	virtual void	Write (ostream &f);
+#else
+	virtual void	Write (std::ostream &f);
+#endif
+
+	NodePtr		operator[] (const int i) { return Nodes[i]; };
+	
+
+
+protected:
+	NodePtr			Root;						// Root of tree
+	NodePtr			CurNode;					// Current node
+	int				Leaves;					// Number of leaves
+	int				Internals;					// Number of internal nodes
+	int				Error;
+	std::string			Name;					// Name of tree (e.g., for NEXUS trees)
+	NodePtr			*Nodes;					// Array of nodes
+	std::map<std::string, int, std::less<std::string> > LeafList;	// Quick lookup of leaves by label
+
+	bool				InternalLabels;				// Flag for displaying internal node labels
+	bool				EdgeLengths;				// Flag for displaying edge lengths
+	bool				Rooted;					// Flag for rooted/unrooted
+
+	std::string			Line;						// Buffer for drawing trees to text streams
+	int				MaxHeight;
+	float				MaxPathLength;
+	
+	double			Weight;
+
+	unsigned int     Nodes_dimension;             // stores the current dimension of the Nodes array - needed to rebuild Nodes if treesize changes JAC 13/05/04
+#if defined __BORLANDC__ && (__BORLANDC__ < 0x0550)
+	ostream				*treeStream;
+#else
+	std::ostream		*treeStream;				// Pointer to stream used to draw trees to
+#endif
+
+	int				count;
+
+	virtual void 		traverse (NodePtr p);
+
+	virtual void 		buildtraverse (NodePtr p);
+   	virtual void 		copyTraverse (NodePtr p1, NodePtr &p2) const;
+   	virtual void 		deletetraverse (NodePtr p);
+	virtual void 		drawAsTextTraverse (NodePtr p);
+	virtual void 		drawLine (NodePtr p, bool isChild = false);
+	virtual void 		fillInAncestors (NodePtr p);
+	virtual void 		drawPendantEdge (NodePtr p);
+	virtual void 		drawInteriorEdge (NodePtr p);
+	virtual void 		getNodeDepth(NodePtr p);
+	virtual void 		getNodeHeights (NodePtr p);
+	virtual void 		getPathLengths (NodePtr p);
+	virtual void		markNodes (NodePtr p, bool on);
+	virtual void 		makeNodeList (NodePtr p);
+
+};
+typedef Tree *TreePtr;
+
+#if defined __BORLANDC__ && (__BORLANDC__ < 0x0550)
+inline istream& operator >> (istream& is, Tree &tree)
+{
+	tree.Read (is);
+	return is;
+}
+
+inline ostream& operator << (ostream& os, Tree &tree)
+{
+	tree.Write (os);
+	return os;
+}
+#else
+inline std::istream& operator >> (std::istream& is, Tree &tree)
+{
+	tree.Read (is);
+	return is;
+}
+
+inline std::ostream& operator << (std::ostream& os, Tree &tree)
+{
+	tree.Write (os);
+	return os;
+}
+#endif
+
+
+#ifdef __BORLANDC__
+	// Redefine __MINMAX_DEFINED so Windows header files compile
+	#ifndef __MINMAX_DEFINED
+    		#define __MINMAX_DEFINED
+	#endif
+#endif
+
+
+#endif // TREELIB_H
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/TreeLib.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gdefs.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gdefs.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gdefs.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,38 @@
+#ifndef GDEFH
+#define GDEFH
+
+// Determine which platform we are building for
+
+
+
+#if __BORLANDC__  // Borland specific options
+	#define GPORT_WINDOWS 1 						// Windows
+	#define GPORT_MAC	  0
+#endif
+
+#ifdef __MWERKS__ //  Metrowerks specific options
+	#ifdef __INTEL__
+		#define GPORT_WINDOWS 1 					// Windows
+		#define GPORT_MAC	  0
+  		#define __WIN32__							// MetroWerks only supports Win32
+	#endif /* __INTEL__ */
+
+	#ifdef macintosh								// MacOS
+	#ifdef __WXMAC__
+		#define USE_WXWINDOWS 1						// wxWindows
+		#define GPORT_MAC     0	 					
+		#define GPORT_WINDOWS 0
+	#else	
+		#define GPORT_MAC     1	 					// Macintosh
+		#define GPORT_WINDOWS 0
+	#endif
+	#endif /* macintosh */
+#endif
+
+#ifdef __GNUC__
+		#define GPORT_MAC     0	 					// Assume gcc implies X windows
+		#define GPORT_WINDOWS 0
+#endif
+
+#endif
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gdefs.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gport.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gport.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gport.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,324 @@
+#include "gport.h"
+
+
+// System specific defines
+
+#if GPORT_MAC
+	// From MacTech 4(6) "Comments about PICTs"
+	#define picGrpBeg	140
+	#define picGrpEnd	141
+#endif
+
+
+// The global port
+GBasePort *Port = NULL;
+
+
+// A sensible default font
+GBaseFont::GBaseFont ()
+{
+    description = "Times-Roman";
+    name = "Times-Roman";
+    size = 10;
+    bold = false;
+    italic = true;
+}
+
+GPostscriptPort::GPostscriptPort ()
+{
+    PenWidth = 1;
+    DocumentFonts = "";
+    Device = devPostscript;
+    DisplayRect.SetRect (0, 0, 595-144, 842-144);
+}
+
+void GPostscriptPort::DrawArc (const GPoint &pt, const int radius,
+	const double startAngleDegrees, const double endAngleDegrees)
+{
+	PostscriptStream << "newpath" << endl;
+	PostscriptStream << pt.GetX() << " " << -pt.GetY()
+    	<< " " << radius
+        << " " << (360.0 -startAngleDegrees)
+        << " " << (360.0 - endAngleDegrees)
+        << " arcn" 		<< endl;
+	PostscriptStream << "stroke" 										<< endl;
+	PostscriptStream << endl;
+}
+
+
+void GPostscriptPort::DrawLine (const int x1, const int y1, const int x2, const int y2)
+{
+	PostscriptStream  << x2 << " " << -y2 << " " << x1 << " " << -y1 << " " << PenWidth << " DrawLine" << endl;
+}
+
+void GPostscriptPort::DrawCircle (const GPoint &pt, const int radius)
+{
+	PostscriptStream << "newpath" << endl;
+	PostscriptStream << pt.GetX() << " " << -pt.GetY() << " " << radius << " 0 360 arc" 		<< endl;
+	PostscriptStream << "stroke" 										<< endl;
+	PostscriptStream << endl;
+}
+
+
+void GPostscriptPort::DrawRect (const GRect &r)
+{
+	PostscriptStream << r.GetLeft() << " " << -r.GetTop() << " moveto" 	<< endl;
+	PostscriptStream << r.GetWidth() << " 0 rlineto" 					<< endl;
+	PostscriptStream << "0 " << -r.GetHeight() << " rlineto" 			<< endl;
+	PostscriptStream << -r.GetWidth() << " 0 rlineto" 					<< endl;
+	PostscriptStream << "0 " << r.GetHeight() << " rlineto"				<< endl;
+	PostscriptStream << "closepath" 									<< endl;
+	PostscriptStream << "stroke" 										<< endl;
+	PostscriptStream << endl;
+}
+
+void GPostscriptPort::DrawFilledRect (const GRect &r, double graylevel)
+{
+	PostscriptStream << r.GetLeft() << " " << -r.GetTop() << " moveto" 	<< endl;
+	PostscriptStream << r.GetWidth() << " 0 rlineto" 					<< endl;
+	PostscriptStream << "0 " << -r.GetHeight() << " rlineto" 			<< endl;
+	PostscriptStream << -r.GetWidth() << " 0 rlineto" 					<< endl;
+	PostscriptStream << "0 " << r.GetHeight() << " rlineto"				<< endl;
+	PostscriptStream << "closepath" 									<< endl;
+	PostscriptStream << "gsave"                                         << endl;
+	PostscriptStream << graylevel << " setgray fill"                    << endl;
+	PostscriptStream << "grestore"                                      << endl;
+	PostscriptStream << "stroke" 										<< endl;
+	PostscriptStream << endl;
+}
+
+void GPostscriptPort::DrawText (const int x, const int y, const char *text)
+{
+	PostscriptStream  << "(" << text << ") " << x << " " << -y << " DrawText" << endl;
+}
+
+
+void GPostscriptPort::GetPrintingRect (GRect &r)
+{
+    // A4, with 1" margin
+    r.SetRect (0, 0, 595-144, 842-144);
+}
+
+
+void GPostscriptPort::SetCurrentFont (GBaseFont &font)
+{
+    std::string face = font.GetName();
+    if (font.IsBold() || font.IsItalic())
+    {
+		face += "-";
+        if (font.IsBold())
+        	face += "Bold";
+        if (font.IsItalic())
+        	face += "Italic";
+    }
+/*
+	// Duh -- need to do this earlier, perhaps scan the list of
+    // fonts already created and output those...
+	// Store this font in the list of fonts we need for our document
+    int found = DocumentFonts.find_first_of (face, 0);
+    if ((found < 0) || (found > DocumentFonts.length()))
+    {
+    	if (DocumentFonts.length() > 0)
+        	DocumentFonts += ", ";
+		DocumentFonts += face;
+    }
+*/
+    PostscriptStream << endl;
+    PostscriptStream << "/" << face << " findfont" << endl;
+    PostscriptStream << font.GetSize () << " scalefont" << endl;
+    PostscriptStream << "setfont" << endl;
+    PostscriptStream << endl;
+}
+
+
+// Mac
+// Win
+// Postscript
+
+void GPostscriptPort::SetPenWidth (int w)
+{
+    PenWidth = w;
+    PostscriptStream << w << " setlinewidth" 						<< endl;
+    PostscriptStream << endl;
+}
+
+void GPostscriptPort::AddPSCommands(char* c)
+{
+	PostscriptStream << c;
+}
+
+void GPostscriptPort::StartPicture (char *pictFileName)
+{
+    PostscriptStream.open (pictFileName);
+        
+
+    // Postscript header
+    PostscriptStream << "%!PS-Adobe-2.0" 							<< endl;
+    PostscriptStream << "%%Creator: Roderic D. M. Page" 			<< endl;
+    PostscriptStream << "%%DocumentFonts: Times-Roman" 		 		<< endl;
+    PostscriptStream << "%%Title:" <<  pictFileName 				<< endl;
+    PostscriptStream << "%%BoundingBox: 0 0 595 842" 				<< endl; // A4
+    PostscriptStream << "%%Pages: 1" 								<< endl;
+    PostscriptStream << "%%EndComments" 							<< endl;
+    PostscriptStream << endl;
+
+    // Move origin to top left corner
+    PostscriptStream << "0 842 translate" << endl;
+    PostscriptStream << "72 -72 translate" << endl; // one inch margin
+
+    // Some definitions for drawing lines, etc.
+
+    // Drawline draws text with encaps that project...
+    PostscriptStream << "% Encapsulate drawing a line" 				<< endl;
+    PostscriptStream << "%    arguments x1 y1 x2 xy2 width" 		<< endl;
+    PostscriptStream << "/DrawLine {" 								<< endl;
+    PostscriptStream << "   gsave" 									<< endl;
+    PostscriptStream << "   setlinewidth" 							<< endl;
+    // We may not always want to set this as it works best with rectangular trees...
+//    PostscriptStream << "   2 setlinecap"							<< endl;
+    PostscriptStream << "   0 setgray" 								<< endl;
+    PostscriptStream << "   moveto" 								<< endl;
+    PostscriptStream << "   lineto" 								<< endl;
+    PostscriptStream << "   stroke" 								<< endl;
+    PostscriptStream << "   grestore" 								<< endl;
+    PostscriptStream << "   } bind def" 							<< endl;
+    PostscriptStream << endl;
+
+    PostscriptStream << "% Encapsulate drawing text" 				<< endl;
+    PostscriptStream << "%    arguments x y text" 					<< endl;
+    PostscriptStream << "/DrawText {" 								<< endl;
+    PostscriptStream << "  gsave 1 setlinewidth 0 setgray" 			<< endl;
+    PostscriptStream << "  moveto" 									<< endl;
+    PostscriptStream << "  show grestore" 							<< endl;
+	PostscriptStream << "} bind def" 								<< endl;
+    PostscriptStream << endl;
+
+}
+
+void GPostscriptPort::EndPicture ()
+{
+    PostscriptStream << "showpage" 									<< endl;
+    PostscriptStream << "%%Trailer" 								<< endl;
+    PostscriptStream << "%%end" 									<< endl;
+    PostscriptStream << "%%EOF" 									<< endl;
+    PostscriptStream.close ();
+}
+
+
+
+#if GPORT_MAC
+// Macintosh
+void GMacPort::BeginGroup ()
+{
+//	::PicComment (picGrpBeg, 0, NULL);
+}
+
+void GMacPort::EndGroup ()
+{
+//	::PicComment (picGrpEnd, 0, NULL);
+}
+#endif
+
+SVGPort::SVGPort ()
+{ 
+    fontString = "font-family:Times;font-size:12"; 
+    DisplayRect.SetRect (0, 0, 400, 400);
+}
+
+void SVGPort::DrawLine (const int x1, const int y1, const int x2, const int y2)
+{
+    svgStream << "<path style=\"stroke:black;";
+    svgStream << ";stroke-width:" << PenWidth;
+    svgStream << ";stroke-linecap:square";
+    svgStream << "\" "; 
+    
+    
+    svgStream << "d=\"M";
+    svgStream << x1 << " " << y1 << " " << x2 << " " << y2 << "\"/>";
+
+
+//    svgStream << "<g style=\"fill:none;stroke:black\"><path d=\"M";
+//    svgStream << x1 << " " << y1 << " " << x2 << " " << y2 << "\"/>";
+//    svgStream << "</g>" << endl;
+}
+
+void SVGPort::DrawCircle (const GPoint &pt, const int radius)
+{
+/*	PostscriptStream << "newpath" << endl;
+	PostscriptStream << pt.GetX() << " " << -pt.GetY() << " " << radius << " 0 360 arc" 		<< endl;
+	PostscriptStream << "stroke" 										<< endl;
+	PostscriptStream << endl;
+*/
+}
+
+
+void SVGPort::DrawRect (const GRect &r)
+{
+/*	PostscriptStream << r.GetLeft() << " " << -r.GetTop() << " moveto" 	<< endl;
+	PostscriptStream << r.GetWidth() << " 0 rlineto" 					<< endl;
+	PostscriptStream << "0 " << -r.GetHeight() << " rlineto" 			<< endl;
+	PostscriptStream << -r.GetWidth() << " 0 rlineto" 					<< endl;
+	PostscriptStream << "0 " << r.GetHeight() << " rlineto"				<< endl;
+	PostscriptStream << "closepath" 									<< endl;
+	PostscriptStream << "stroke" 										<< endl;
+	PostscriptStream << endl;
+*/
+}
+
+void SVGPort::DrawText (const int x, const int y, const char *text)
+{
+    svgStream << "<text x=\"" << x << "\" y=\"" << y << "\" style=\"" << fontString << "\" >"
+            << text << "</text>" << endl;
+}
+
+
+void SVGPort::StartPicture (char *pictFileName)
+{
+    svgStream.open (pictFileName);
+    
+    svgStream << "<?xml version=\"1.0\" standalone=\"no\"?>" << endl;
+    svgStream << "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 20010904//EN\" " << endl;
+    svgStream << "\"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\"> " << endl;
+
+    svgStream << "<svg width=\"" << DisplayRect.GetWidth() << "pt\" "
+        << "height=\"" << DisplayRect.GetHeight() << "pt\" >" << endl;
+        
+// <title>test</title>
+// <desc>test</desc>
+}
+
+void SVGPort::EndPicture ()
+{
+    svgStream << "</svg>" << endl;
+    svgStream.close ();
+}
+
+
+void SVGPort::GetPrintingRect (GRect &r)
+{
+    r = DisplayRect;
+}
+
+void SVGPort::SetCurrentFont (GBaseFont &font)
+{
+    fontString = "";
+    fontString += "font-family:";
+    fontString += font.GetName();
+	
+    char buf[32];
+    sprintf (buf, ";font-size:%d", font.GetSize());
+    fontString += buf;
+    
+    if (font.IsItalic())
+    {
+        fontString += ";font-style:italic";
+    }
+    if (font.IsBold())
+    {
+        fontString += ";font-weight:bold";
+    }
+
+}
+
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gport.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gport.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gport.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gport.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,311 @@
+#ifndef GPORTH
+#define GPORTH
+
+#ifdef __BORLANDC__
+	// Undefine __MINMAX_DEFINED so that min and max are correctly defined
+	#ifdef __MINMAX_DEFINED
+		#undef __MINMAX_DEFINED
+	#endif
+    // Ignore "Cannot create precompiled header: code in header" message
+    // generated when compiling string.cc
+    #pragma warn -pch
+#endif
+
+#include <iostream>
+#include <fstream>
+#include <string>
+
+#ifdef __BORLANDC__
+    #pragma warn .pch
+#endif
+
+
+using namespace std;
+
+
+#include "gdefs.h"
+
+// System specific includes here
+#if GPORT_WINDOWS
+#endif
+
+#if GPORT_MAC
+//	#include <Printing.h>
+#endif
+
+enum GPortDevice {devScreen, devPrinter, devPicture, devPostscript};
+
+
+
+
+/* Note that we always draw using the following coordinate system:
+
+(0,0)--------->(+x,0)
+  |
+  |
+  |
+ \/
+(+y,0)
+
+ Hence the origin is the top left hand corner, and y goes down rather than up.
+ This is typical for drawing to a window. Some systems have other coordinate
+ systems (such as Postscript). We make the translation internally.
+
+*/
+
+// A point
+class GPoint
+{
+public:
+    GPoint () { SetPoint (0, 0); };
+    GPoint (GPoint &p) { X = p.X; Y = p.Y; };
+    GPoint (const int x, const int y) { SetPoint (x, y); };
+    virtual int GetX () const { return X; };
+    virtual int GetY () const { return Y; };
+    virtual void Offset (const int xoff, const int yoff) { X += xoff; Y += yoff; };
+    virtual void SetPoint (const int x, const int y) { X = x; Y = y; };
+    virtual void SetX (int x) { X = x; };
+    virtual void SetY (int y) { Y = y; };
+    
+    int	operator== (const GPoint &p) { return (int) ( (X == p.X) && ( Y == p.Y)); };
+    int	operator!= (const GPoint &p) { return (int) ( (X != p.X) || ( Y != p.Y)); };
+protected:
+    int X;
+    int Y;
+};
+
+// A rectangle
+class GRect
+{
+public:
+    GRect () { left = top = right = bottom = 0; };
+    GRect (const int l, const int t, const int r, const int b) { SetRect (l, t, r, b); };
+    virtual int  GetLeft () const { return left; };
+    virtual int  GetTop () const { return top; };
+    virtual int  GetRight () const { return right; };
+    virtual int  GetBottom () const { return bottom; };
+    virtual int  GetWidth () const { return right - left; };
+    virtual int  GetHeight () const { return bottom - top; };
+
+    virtual void Inset (const int dx, const int dy) { left += dx; right -= dx; top += dy; bottom -= dy; };
+    virtual void Offset (const int dx, const int dy) { left += dx; right += dx; top += dy; bottom += dy; };
+    virtual bool PointInRect (GPoint &pt)
+    {
+    	return (((pt.GetX() >= left) && (pt.GetX() <= right)) &&
+        	((pt.GetY() >= top) && (pt.GetY() <= bottom)));
+    }
+
+    virtual void SetLeft (const int l) {left = l; };
+    virtual void SetTop (const int t) {top = t; };
+    virtual void SetRight (const int r) {right = r; };
+    virtual void SetBottom (const int b) {bottom = b; };
+    virtual void SetRect (const int l, const int t, const int r, const int b)
+    	{ left = l; top = t; right = r; bottom = b; };
+
+protected:
+    int left, top, right, bottom;
+};
+
+// Base class for system specific fonts
+class GBaseFont
+{
+public:
+    GBaseFont ();
+    virtual ~GBaseFont () {};
+    virtual std::string GetName () { return description; };
+    virtual std::string GetDescription () { return description; };
+    virtual int  GetSize () { return size; };
+    virtual bool IsBold () { return bold; };
+    virtual bool IsItalic () { return italic; };    
+protected:
+    std::string 	description;
+    std::string 	name;
+    int 		size;
+    bool 		bold;
+    bool 		italic;
+};
+typedef GBaseFont *GBaseFontPtr;
+
+typedef GBaseFont GFont ; // for now
+typedef GFont *GFontPtr;
+
+
+
+// Windows needs the two handles for screen and printer fonts
+// Mac just sets things
+// Postscript writes to the postscript stream
+
+
+// Virtual class to encapsulate printing
+class GBasePrinter
+{
+public:
+    GBasePrinter () {};
+    virtual ~GBasePrinter () {};
+    virtual void PrinterSetup () = 0;
+    virtual void AbortPrinting () = 0;
+    virtual void EndDoc ();
+    virtual bool EndPage ();
+    virtual void GetPrintingRect (GRect &r) = 0;
+    virtual void GetPhysicalPageRect (GRect &r) = 0;
+    virtual bool StartPage () = 0;
+    virtual bool StartDoc (char *jobname = "GBasePrinter") = 0;
+};
+
+// Windows  port VPort
+// Mac port VPort
+// Postscript - just write to file
+
+
+
+// Encapsulates the complete graphics system (screen drawing, picture files,
+// printing, clipboard).
+class GBasePort
+{
+public:
+    GBasePort () { Device = devScreen; PenWidth = 1;};
+    virtual ~GBasePort() {};
+    virtual void DrawArc (const GPoint &pt, const int radius,
+        const double startAngleDegrees, const double endAngleDegrees) = 0;
+    virtual void DrawCircle (const GPoint &pt, const int radius) = 0;
+    virtual void DrawLine (const int x1, const int y1, const int x2, const int y2) = 0;
+    virtual void DrawLinePts (const GPoint &pt1, const GPoint &pt2)
+        { DrawLine (pt1.GetX(), pt1.GetY(), pt2.GetX(), pt2.GetY()); };
+    virtual void DrawRect (const GRect &r) = 0;
+    virtual void DrawText (const int x, const int y, const char *s) = 0;
+    
+	// Display
+    virtual GPortDevice GetCurrentDevice () { return Device; };
+    virtual void GetDisplayRect (GRect &r) { r = DisplayRect; };
+    virtual void SetDisplayRect (GRect &r) { DisplayRect = r; };
+    
+    // Pen
+    virtual int  GetPenWidth () { return PenWidth; };
+    virtual void SetPenWidth (int w) { PenWidth = w; };
+    
+    // Fonts
+    virtual void SetCurrentFont (GBaseFont &font) = 0;
+    
+    // Pictures
+    virtual void StartPicture (char *pictFileName) = 0;
+    virtual void EndPicture () = 0;
+    
+    // Groups
+    virtual void BeginGroup () = 0;
+    virtual void EndGroup () = 0;
+    
+    // Printing
+    virtual void GetPrintingRect (GRect &r) = 0;
+	
+    
+protected:
+    // list of fonts
+    // printer class
+    //pens
+
+    int PenWidth;
+
+    // Device info
+    GPortDevice Device;
+    GRect	DisplayRect;
+};
+
+// Mac
+// Win
+// Postscript
+
+class GPostscriptPort : public GBasePort
+{
+public:
+    GPostscriptPort ();
+    virtual ~GPostscriptPort () {};
+    virtual void DrawArc (const GPoint &pt, const int radius,
+            const double startAngleDegrees, const double endAngleDegrees);
+    virtual void DrawCircle (const GPoint &pt, const int radius);
+    virtual void DrawLine (const int x1, const int y1, const int x2, const int y2);
+    virtual void DrawRect (const GRect &r);
+	virtual void DrawFilledRect (const GRect &r, double greylevel); //greylevel of fill - 0 is black, 1 is white
+    virtual void DrawText (const int x, const int y, const char *text);
+    
+    // Pen
+    virtual void SetPenWidth (int w);
+    
+    
+    // Fonts
+    virtual void SetCurrentFont (GBaseFont &font);
+    
+    // Pictures
+    virtual void StartPicture (char *pictFileName);
+    virtual void EndPicture ();
+    
+    // Groups
+    virtual void BeginGroup () {};
+    virtual void EndGroup () {};
+    
+    // Printing
+    virtual void GetPrintingRect (GRect &r);
+	
+	// Random
+	virtual void AddPSCommands (char* c);  //allow direct access to postscript file - needed for nice spacing in histogram
+
+protected:
+    ofstream 		PostscriptStream;
+    std::string 	DocumentFonts;
+};
+
+class GMacPort : public GBasePort
+{
+public:
+    // Groups
+    virtual void BeginGroup ();
+    virtual void EndGroup ();
+protected:
+};
+
+class SVGPort : public GBasePort
+{
+public:
+    SVGPort ();
+    virtual void DrawArc (const GPoint &pt, const int radius,
+        const double startAngleDegrees, const double endAngleDegrees) {};
+    virtual void DrawCircle (const GPoint &pt, const int radius);
+    virtual void DrawLine (const int x1, const int y1, const int x2, const int y2);
+    virtual void DrawRect (const GRect &r);
+    virtual void DrawText (const int x, const int y, const char *text);
+
+    // Pen
+    virtual void SetPenWidth (int w) {};
+
+
+    // Fonts
+    virtual void SetCurrentFont (GBaseFont &font);
+
+    // Pictures
+    virtual void StartPicture (char *pictFileName);
+    virtual void EndPicture ();
+
+    // Groups
+    virtual void BeginGroup () {};
+    virtual void EndGroup () {};
+
+    // Printing
+    virtual void GetPrintingRect (GRect &r);
+protected:
+    ofstream 		svgStream;
+    std::string 	fontString;
+};
+
+
+#ifndef USE_VC2
+extern GBasePort *Port; // for now
+#endif
+
+#ifdef __BORLANDC__
+	// Redefine __MINMAX_DEFINED so Windows header files compile
+	#ifndef __MINMAX_DEFINED
+    		#define __MINMAX_DEFINED
+	#endif
+#endif
+
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/gport/gport.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/lcaquery.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/lcaquery.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/lcaquery.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,55 @@
+#include "lcaquery.h"
+
+#define DEBUG_LCA 1
+#if DEBUG_LCA
+	#include <stdio.h>
+#endif
+
+LCAQuery::LCAQuery (Tree *tree)
+{
+	SetTree (tree);
+}
+
+void LCAQuery::SetTree (Tree *tree)
+{
+	t = tree;
+    Initialise ();
+}
+
+void SimpleLCAQuery::Initialise ()
+{
+    PreorderIterator <Node> n (t->GetRoot());
+
+	int count = 0;
+    Node *q = n.begin();
+    while (q)
+    {
+    	depth[q] = count++;
+
+#if DEBUG_LCA
+        if (!q->IsLeaf())
+        {
+        	char buf[32];
+            sprintf (buf, "%d", (count-1));
+            q->SetLabel (buf);
+        }
+#endif
+        q = n.next();
+    }
+}
+
+NodePtr SimpleLCAQuery::LCA (NodePtr i, NodePtr j)
+{
+	NodePtr p = i;
+    NodePtr q = j;
+
+	while (depth[p] != depth[q])
+    {
+    	if (depth[p] < depth[q])
+        	q = q->GetAnc();
+        else
+        	p = p->GetAnc();
+    }
+    return p;
+}
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/lcaquery.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/lcaquery.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/lcaquery.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/lcaquery.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,98 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: lcaquery.h,v 1.1 2002/03/14 14:11:42 rdmp1c Exp $
+ 
+/**
+ * @file lcaquery.h
+ *
+ * Classes to perform LCA queries on a tree
+ *
+ */
+
+#ifndef LCAQUERYH
+#define LCAQUERYH
+
+#ifdef __BORLANDC__
+	// Undefine __MINMAX_DEFINED so that min and max are correctly defined
+	#ifdef __MINMAX_DEFINED
+		#undef __MINMAX_DEFINED
+	#endif
+    // Ignore "Cannot create precompiled header: code in header" message
+    // generated when compiling string.cc
+    #pragma warn -pch
+#endif
+
+#include <vector>
+
+#include "TreeLib.h"
+#include "nodeiterator.h"
+
+/**
+ * @class LCAQuery
+ * Base class for performing LCA queries. Descendants of this class must
+ * override the abstract member function LCA.
+ */
+class LCAQuery
+{
+public:
+	LCAQuery () { t = NULL; };
+	LCAQuery (Tree *tree);
+    virtual ~LCAQuery () {};
+    virtual NodePtr LCA (NodePtr i, NodePtr j) = 0;
+    virtual void SetTree (Tree *tree);
+protected:
+	Tree *t;
+	virtual void Initialise () {};
+};
+
+/**
+ * @class SimpleLCAQuery
+ * Does naive LCA queries by going down the tree until we find the
+ * LCA.
+ */
+class SimpleLCAQuery : public LCAQuery
+{
+public:
+	SimpleLCAQuery () {};
+	SimpleLCAQuery (Tree *tree) :  LCAQuery (tree) { Initialise (); };
+	/**
+	 * Finds LCA by going down tree twowards root until we reach node
+     * with the same preorder number.
+     * @return LCA of nodes i and j
+	 */
+    virtual NodePtr LCA (NodePtr i, NodePtr j);
+protected:
+	std::map<Node *, int, std::less<Node *> > depth;
+	/**
+	 * Number the nodes in preorder (root = 0).
+	 */
+	virtual void Initialise ();
+};
+
+#if __BORLANDC__
+	// Redefine __MINMAX_DEFINED so Windows header files compile
+	#ifndef __MINMAX_DEFINED
+    		#define __MINMAX_DEFINED
+	#endif
+#endif
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/lcaquery.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/mast.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/mast.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/mast.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,295 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: mast.cpp,v 1.5 2005/05/24 22:55:16 rdmp1c Exp $
+ 
+/**
+ * @file mast.cpp
+ *
+ * Compute Maximum Agreement Subtree (MAST) between a pair of trees
+ *
+ */
+
+// Vital that this is included before <iomanip.h> or Borland C++ 5.5 complains that
+// min and max are alreday defined
+#include "mast.h" 
+ 
+#include <iomanip.h>
+ 
+#ifdef __GNUC__
+	#include <algo.h>
+#endif
+
+#define USE_MATCHING 1
+#if USE_MATCHING
+	#include "mwbmatching.h"
+#endif
+
+typedef std::vector <NNodePtr> NodeVector;
+
+int MAST (NTree &T1, NTree &T2)
+{
+	int result = 0;
+
+	// 1. create lists of the nodes in T1 and T2 in postorder
+    int count = 0;
+    NodeVector pot1;
+    NodeIterator <Node> n1 (T1.GetRoot());
+    Node *q = n1.begin();
+    while (q)
+    {
+    	q->SetIndex (count);
+		pot1.push_back ((NNode *)q);
+		count++;
+		q = n1.next();
+    }
+
+    count = 0;
+    NodeVector pot2;
+    NodeIterator <Node> n2 (T2.GetRoot());
+    q = n2.begin();
+    while (q)
+    {
+    	q->SetIndex (count);
+		pot2.push_back ((NNode *)q);
+		count++;
+        q = n2.next();
+    }
+
+	// Matrix to hold solutions
+    int **m;
+
+    m = new int *[T1.GetNumNodes()];
+    for (int i = 0; i < T1.GetNumNodes(); i++)
+    	m[i] = new int [T2.GetNumNodes()];
+
+    for (int i = 0; i < T1.GetNumNodes(); i++)
+    	for (int j = 0; j <T2.GetNumNodes(); j++)
+        	m[i][j] = 0;
+
+
+	// 2. Visit all pairs of nodes in T1 and T2
+     for (int i = 0; i < T1.GetNumNodes(); i++)
+     {
+    	for (int j = 0; j <T2.GetNumNodes(); j++)
+        {
+			if (pot1[i]->IsLeaf() || pot2[j]->IsLeaf())
+            {
+            	// Both are leaves, so MAST[i,j] is 1 if labels are identical
+            	if (pot1[i]->IsLeaf() && pot2[j]->IsLeaf())
+				{
+                	if ( pot1[i]->GetLabel() == pot2[j]->GetLabel())
+                    	m[i][j] = 1;
+				}
+				else
+				{
+            		// Only one is a leaf, so MAST[i,j] is 1 if leaf is element in cluster
+					IntegerSet common;
+					std::set_intersection (pot1[i]->Cluster.begin(), pot1[i]->Cluster.end(),
+						pot2[j]->Cluster.begin(), pot2[j]->Cluster.end(),
+						std::inserter (common, common.end()));
+					int w = common.size();
+                	m[i][j] = w;
+				}
+        	}
+            else
+            {
+            	// Both are internals so MAST[i,j] is MAX (diag, match)
+                std::vector <NodePtr> pchildren, qchildren;
+
+                // diag
+                int diag = 0;
+
+                // Get MAST of base of subtree in t1 and immediate children of
+                // base of subtree in t2, and at the same time store list of
+                // immediate children
+                NodePtr p = pot2[j]->GetChild();
+                while (p)
+                {
+                	qchildren.push_back(p);
+                	diag = std::max (diag, m[i][p->GetIndex()]);
+                    p = p->GetSibling();
+                }
+                // get MAST of base of subtree in t2 and immediate children of
+                // base of subtree in t1, and at the same time store list of
+                // immediate children
+                NodePtr q = pot1[i]->GetChild();
+                while (q)
+                {
+                	pchildren.push_back(q);
+                	diag = std::max (diag, m[q->GetIndex()][j]);
+                    q = q->GetSibling();
+                }
+
+                // maximum weighted bipartite matching
+				
+#if USE_MATCHING
+				int match = 0;
+				graph g;
+				g.make_directed();
+				
+				// Nodes for p and q children
+				map <int, node, less <int> > p_node;
+				map <int, node, less <int> > q_node;
+				for (int k = 0; k < pchildren.size(); k++)
+                {
+					node n = g.new_node();
+					p_node[k] = n;
+                }
+				for (int k = 0; k < qchildren.size(); k++)
+                {
+					node n = g.new_node();
+					q_node[k] = n;
+                }
+				// Edges
+				edge_map<int> weights(g, 0);
+
+				
+				for (int k = 0; k < pchildren.size(); k++)
+				{
+					for (int r = 0; r < qchildren.size(); r++)
+					{
+						int v = pchildren[k]->GetIndex();
+                        int w = qchildren[r]->GetIndex();
+						
+						// It seems that if the partition "from" is much larger than "to,
+						// the matching algorithm can blow up with a memory access error
+						// in fheap.c. Reversing the graph seems to help.
+						
+						edge e;
+						if (pchildren.size() < qchildren.size())
+							e = g.new_edge (p_node[k], q_node[r]);
+						else
+							e = g.new_edge (q_node[r], p_node[k]);
+						
+						weights[e] = m[v][w];
+					}
+				}
+				
+//				cout << "g" << endl;
+//				cout << g;
+//				g.save();
+//				cout << "Start matching...";
+				
+				if (g.number_of_nodes() == 0)
+				{
+					match = 0;
+				}
+				
+				else
+				{
+				
+				mwbmatching mwbm;
+				mwbm.set_vars (weights);
+				
+				if (mwbm.check(g) != algorithm::GTL_OK)
+				{
+					cout << "Maximum weight bipartite matching algorithm check failed" << endl;
+					exit(1);
+				}
+				else
+				{
+					if (mwbm.run(g) != algorithm::GTL_OK)
+					{
+						cout << "Error running maximum weight bipartite matching algorithm" << endl;
+						exit(1);
+					}
+					else
+					{
+						match = mwbm.get_mwbm();
+					}
+				}
+				}
+//				cout << "matching done (" << match << ")" << endl;
+#else
+                // For now (sigh) brute force generation of all matchings. Eventually
+                // will need to do this more efficiently
+                int n = std::max (pchildren.size(), qchildren.size());
+
+                // Store a vector of indices of children of subtree in t2.
+                // We will permute this to generate all matchings. If t2
+                // has fewer children than subtree in t1, vector will contain
+                // one or more "null" (-1) values.
+                std::vector <int> perm;
+                for (int k = 0; k < n; k++)
+                {
+                	if (k < qchildren.size())
+	                	perm.push_back (k);
+                    else
+                    	perm.push_back (-1);
+                }
+
+                // Generate all matchings
+
+                // First matching
+                int match = 0;
+               	for (int k = 0; k < n; k++)
+                {
+                    if ((k < pchildren.size()) && (perm[k] != -1))
+                    {
+                    	int v = pchildren[k]->GetIndex();
+                        int w = qchildren[perm[k]]->GetIndex();
+                        match += m[v][w];
+                    }
+                }
+
+                // Remaining matchings
+                while  (next_permutation (perm.begin(), perm.end()) )
+                {
+                	int this_match = 0;
+                    for (int k = 0; k < n; k++)
+                    {
+                        if ((k < pchildren.size()) && (perm[k] != -1))
+                        {
+                            int v = pchildren[k]->GetIndex();
+                            int w = qchildren[perm[k]]->GetIndex();
+                            this_match += m[v][w];
+                        }
+                    }
+                    match = std::max (match, this_match);
+                }
+#endif
+                m[i][j] = std::max (diag, match);
+            }
+		}
+     }
+
+     result = m[T1.GetNumNodes() - 1][T2.GetNumNodes() - 1];
+	 
+	 // Show matrix
+/*	 for (int i = 0; i < T1.GetNumNodes(); i++)
+	 {
+	 	cout << setw(3) << i << "|";
+		for (int j = 0; j < T2.GetNumNodes(); j++)
+			cout << setw(3) << m[i][j];
+		cout << endl;
+	}
+*/
+
+     // clean up
+    for (int i = 0; i < T1.GetNumNodes(); i++)
+       	delete [] m[i];
+
+    delete [] m;
+
+	return result;
+}
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/mast.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/mast.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/mast.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/mast.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,70 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: mast.h,v 1.1 2002/05/16 16:07:32 rdmp1c Exp $
+ 
+/**
+ * @file mast.h
+ *
+ * Compute Maximum Agreement Subtree (MAST) between a pair of trees
+ *
+ */
+#ifndef MASTH
+#define MASTH
+
+#ifdef __BORLANDC__
+	// Undefine __MINMAX_DEFINED so that min and max are correctly defined
+	#ifdef __MINMAX_DEFINED
+		#undef __MINMAX_DEFINED
+	#endif
+    // Ignore "Cannot create precompiled header: code in header" message
+    // generated when compiling string.cc
+    #pragma warn -pch
+#endif
+
+#include "nodeiterator.h"
+#include "ntree.h"
+
+/**
+ * @fn int MAST (NTree &T1, NTree &T2)
+ * @brief Computes the size of the maximum agreement subtree between two rooted trees
+ *
+ * MAST uses the dynamic programming algorithm of Steel and Warnow (1993) to compute
+ * the size of the largest agreement subtree. The algorithm has time complexity
+ * @f${\rm O}(n^{4.5} \log n + V)@f$ for two trees with @em n leaves, where @em V
+ * is the maximum number of nodes in the trees. This implementation would be much improved
+ * by using an efficient algorithm for maximum weight bipartite matching (rather than
+ * simply enumerating all @f$(k - 1)!@f$ possible matchings), and by using the
+ * sparsification techniques of Farach and Thorup (1997).
+ *
+ * @param T1 one tree
+ * @param T2 another tree
+ */
+int MAST (NTree &T1, NTree &T2);
+
+#if __BORLANDC__
+	// Redefine __MINMAX_DEFINED so Windows header files compile
+	#ifndef __MINMAX_DEFINED
+    		#define __MINMAX_DEFINED
+	#endif
+#endif
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/mast.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/nodeiterator.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/nodeiterator.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/nodeiterator.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,187 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: nodeiterator.h,v 1.5 2005/03/29 16:48:52 rdmp1c Exp $
+ 
+/**
+ * @file nodeiterator.h
+ *
+ * Iterate over nodes in a tree
+ *
+ */
+ 
+ 
+/*
+   29 March 2005
+   
+   Spent a day trying to get TreeView X to work with gcc 3.4.1 on Mandrake 10.1.
+   Even if it compiled, the phylogram display would cause a segmentation fault. 
+   Eventualy tracked it down to the PreorderIterator class. Essentially, in a
+   templated class the inherited members need to be explicity identified, e.g.
+   by something like B<T>::f. Hence, in PreorderIterator I can't refer to cur
+   but PreorderIterator<N>::cur works. Initially when trying to get it to build I
+   simply duplicated the members, but this caused TreeView X to crash.
+
+   For more on this "feature" see http://lists.debian.org/debian-gcc/2004/05/msg00435.html
+
+*/
+
+#ifndef NODEITERATORH
+#define NODEITERATORH
+
+#ifdef __BORLANDC__
+	// Undefine __MINMAX_DEFINED so that min and max are correctly defined
+	#ifdef __MINMAX_DEFINED
+		#undef __MINMAX_DEFINED
+	#endif
+    // Ignore "Cannot create precompiled header: code in header" message
+    // generated when compiling string.cc
+    #pragma warn -pch
+#endif
+
+#include <vector>
+#include <stack>
+
+/**
+ * @class NodeIterator
+ * Iterator class that visits nodes in a tree in post order. Uses a stack to keep
+ * track of place in tree. By making this a template class we can apply it to
+ * any descendant of the class Node.
+ *
+ */
+template <class N> class NodeIterator
+{
+public:
+	/**
+	 * Constructor takes the root of the tree as a parameter.
+     * @param r the root of the tree
+	 */
+	NodeIterator (N *r)  { root =  r; };
+    virtual ~NodeIterator () {};
+	/**
+	 * Initialises the iterator and returns the  first node.
+	 * @return The first node of the tree
+	 */
+    virtual N *begin ();
+ 	/**
+	 * Moves to the next node in the tree.
+	 * @return The next node in the tree, or NULL if all nodes have been visited.
+	 */
+   virtual N *next ();
+
+
+protected:
+	N *root;
+	N *cur;
+	std::stack < N *, std::vector<N *> > stk;
+};
+
+
+template <class N> class PreorderIterator : public NodeIterator<N>
+{
+public:
+    PreorderIterator (N *r) : NodeIterator<N> (r) {};
+    virtual ~PreorderIterator () {};
+    virtual N *begin ();
+    virtual N *next ();
+};
+
+
+
+template <class N> N *NodeIterator<N>::begin ()
+{
+	cur = root;
+	while (cur->GetChild())
+    {
+    	stk.push (cur);
+        cur = (N *)(cur->GetChild());
+    }
+    return cur;
+}
+
+template <class N> N *NodeIterator<N>::next ()
+{
+	if (stk.empty())
+    	cur = NULL;
+    else
+    {
+    	if (cur->GetSibling())
+        {
+        	N *p = (N *)(cur->GetSibling());
+            while (p->GetChild())
+            {
+            	stk.push (p);
+                p = (N *)(p->GetChild());
+            }
+            cur = p;
+		}
+        else
+        {
+        	cur = stk.top();
+            stk.pop();
+        }
+    }
+    return cur;
+}
+
+template <class N> N *PreorderIterator<N>::begin ()
+{
+	PreorderIterator<N>::cur = PreorderIterator<N>::root;
+    return PreorderIterator<N>::cur;
+}
+
+template <class N> N *PreorderIterator<N>::next ()
+{
+	if (PreorderIterator<N>::cur->GetChild())
+    {
+       	PreorderIterator<N>::stk.push (PreorderIterator<N>::cur);
+       	N *p = (N *)(PreorderIterator<N>::cur->GetChild());
+        PreorderIterator<N>::cur = p;
+    }
+    else
+    {
+      	while (!PreorderIterator<N>::stk.empty() && (PreorderIterator<N>::cur->GetSibling() == NULL))
+        {
+            PreorderIterator<N>::cur = PreorderIterator<N>::stk.top();
+        	PreorderIterator<N>::stk.pop();
+        }
+        if (PreorderIterator<N>::stk.empty())
+           	PreorderIterator<N>::cur = NULL;
+        else
+        {
+        	N *p = (N *)(PreorderIterator<N>::cur->GetSibling());
+            PreorderIterator<N>::cur = p;
+        }
+    }
+    return PreorderIterator<N>::cur;
+}
+
+
+#if __BORLANDC__
+	// Redefine __MINMAX_DEFINED so Windows header files compile
+	#ifndef __MINMAX_DEFINED
+    		#define __MINMAX_DEFINED
+	#endif
+#endif
+
+
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/nodeiterator.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/ntree.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/ntree.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/ntree.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,273 @@
+#include "ntree.h"
+
+#ifdef __GNUC__
+#include <algo.h>
+#endif
+
+enum SetRelations {IDENTITY = 0, DISJOINT, SUBSET, SUPERSET, OVERLAPPING};
+
+
+SetRelations Relationship (IntegerSet &one, IntegerSet &two);
+
+
+SetRelations Relationship (IntegerSet &one, IntegerSet &two)
+{
+	SetRelations result;
+
+/*        cout << " {";
+        std::copy (one.begin(), one.end(),
+                std::ostream_iterator<int>(cout, " "));
+        cout << "}";
+
+       cout << " {";
+        std::copy (two.begin(), two.end(),
+                std::ostream_iterator<int>(cout, " "));
+        cout << "}";
+*/
+    if (one == two)
+    	result = IDENTITY;
+    else if (std::includes (two.begin(), two.end(), one.begin(), one.end()))
+    	result = SUBSET; // one is a subset of two
+    else if (std::includes (one.begin(), one.end(), two.begin(), two.end()))
+    	result = SUPERSET; // two is a subset of one
+    else
+    {
+        IntegerSet common;
+        std::set_intersection (one.begin(), one.end(),
+            two.begin(), two.end(),
+            std::inserter (common, common.end()));
+        if (common.size() == 0)
+        	result = DISJOINT;
+        else
+        	result = OVERLAPPING;
+    }
+
+//    cout << "result=" << result << endl;
+
+    return result;
+}
+
+
+void NTree::BuildClustersTraverse (NNodePtr p)
+{
+	if (p)
+    {
+    	p->Cluster.erase (p->Cluster.begin(), p->Cluster.end());
+        BuildClustersTraverse ((NNodePtr)(p->GetChild()));
+        BuildClustersTraverse ((NNodePtr)(p->GetSibling()));
+        if (p->IsLeaf())
+        {
+        	switch (use)
+            {
+            	case useLeafNumber:
+        			p->Cluster.insert (p->GetLeafNumber());
+                    break;
+
+                case useLabelNumber:
+        			p->Cluster.insert (p->GetLabelNumber());
+                    break;
+            }
+        }
+        if (p !=Root)
+        {
+        	NNodePtr anc = (NNodePtr)(p->GetAnc());
+			std::set<int, less<int> > temp_set;
+			std::set_union(anc->Cluster.begin(), anc->Cluster.end(),
+				p->Cluster.begin(), p->Cluster.end(),
+				std::inserter(temp_set, temp_set.begin()));
+			anc->Cluster.swap(temp_set);
+        }
+    }
+}
+
+void NTree::BuildLeafLabelsTraverse (NNodePtr p)
+{
+	if (p)
+    {
+        BuildLeafLabelsTraverse ((NNodePtr)(p->GetChild()));
+        BuildLeafLabelsTraverse ((NNodePtr)(p->GetSibling()));
+        if (p->IsLeaf())
+        {
+			leaf_labels[p->GetLabel()] = p;
+        }
+    }
+}
+
+// debugging
+//------------------------------------------------------------------------------
+void NTree::ShowClustersTraverse (NNodePtr p)
+{
+	if (p)
+	{
+        ShowClustersTraverse ((NNodePtr)(p->GetChild()));
+        // Show clusters
+		cout << "{ ";
+		std::copy (p->Cluster.begin(), p->Cluster.end(),
+			std::ostream_iterator<int>(cout, " "));
+		cout << "}" << endl;
+        ShowClustersTraverse ((NNodePtr)(p->GetSibling()));
+	}
+}
+
+//------------------------------------------------------------------------------
+// Create a star tree with n leaves
+void NTree::StarTree (int n)
+{
+	Leaves = n;
+	Internals = 1;
+
+	Root = NewNode();
+	Root->SetWeight (n);
+	Root->SetDegree (n);
+
+	CurNode = NewNode();
+	CurNode->SetLeaf(true);
+	CurNode->SetLeafNumber(1);
+	CurNode->SetLabelNumber(1);
+
+	Root->SetChild (CurNode);
+	CurNode->SetAnc (Root);
+
+	// Remaining leaves
+	for (int i = 1; i < n; i++)
+	{
+		NodePtr q = NewNode ();
+		q->SetLeaf(true);
+		q->SetLeafNumber(i+1);
+		q->SetLabelNumber(i+1);
+		q->SetAnc (Root);
+		CurNode->SetSibling (q);;
+		CurNode = q;
+	}
+
+    MakeNodeList();
+    Update();
+    BuildLeafClusters ();
+
+}
+
+//------------------------------------------------------------------------------
+// Add cluster to a tree
+int NTree::AddCluster (IntegerSet &b, char *label)
+{
+	Error = 0;
+	int n = b.size();
+	if (n > 1 && n < ((NNodePtr)Root)->Cluster.size())
+	{
+		// non trivial set
+		NNodePtr p = (NNodePtr)Root;
+		NNodePtr q = (NNodePtr)(p->GetChild());
+        bool done = false;
+		SetRelations r;
+
+		// locate insertion point
+		while (q && !done)
+		{
+			r = Relationship (b, q->Cluster);
+
+			switch (r)
+			{
+				case IDENTITY:
+					done = true;
+					Error = 1; // we already have this cluster
+					break;
+
+				case SUBSET:
+					p = q;
+					q = (NNodePtr)(q->GetChild());
+					break;
+
+				case DISJOINT:
+					p = q;
+					q = (NNodePtr)(q->GetSibling());
+					break;
+
+				case SUPERSET:
+					done = true;
+					break;
+
+				case OVERLAPPING:
+					done = true;
+					Error = 2; // can't be a part of a tree
+					break;
+
+				default:
+					break;
+			}
+		}
+
+		if (Error == 0)
+		{
+			// Create node
+			NNodePtr nunode = (NNodePtr)NewNode ();
+			Internals++;
+			nunode->SetWeight(n);
+			nunode->Cluster = b;
+
+			if (label)
+				nunode->SetLabel (label);
+
+
+			// Insert node in tree
+			switch (r)
+			{
+				case SUBSET:
+                	p->SetChild (nunode);
+                    nunode->SetAnc (p);
+					break;
+
+				case DISJOINT:
+					p->SetSibling (nunode);
+                    nunode->SetAnc (p->GetAnc());
+					break;
+
+				case SUPERSET:
+					if (q == p->GetChild())
+					{
+                    	p->SetChild (nunode);
+                        nunode->SetChild (q);
+                        nunode->SetAnc (p);
+                        q->SetAnc (nunode);
+					}
+					else
+					{
+	                   	p->SetSibling (nunode);
+                        nunode->SetChild (q);
+                        nunode->SetAnc (p->GetAnc());
+                        q->SetAnc (nunode);
+					}
+
+                    NNodePtr tmp = q;
+                    NNodePtr s = (NNodePtr)(q->GetSibling());
+                    NNodePtr t = (NNodePtr)(q->GetAnc());
+
+                    while (s)
+                    {
+                    	r = Relationship (s->Cluster, b);
+                        if ((r == IDENTITY) || (r == SUBSET))
+                        {
+                        	s->SetAnc(nunode);
+                            tmp = s;
+                            s = (NNodePtr)(s->GetSibling());
+                        }
+                        else
+                        {
+                        	t->SetSibling (s);
+                            tmp->SetSibling (s->GetSibling());
+                            t = s;
+                            t->SetSibling (NULL);
+                            s = (NNodePtr)(tmp->GetSibling());
+                       }
+                    }
+                    break;
+
+//					checkSiblings (q, nunode->cluster);
+				}
+//			nunode->GetDegreeOf ();
+//			nunode->anc->degree = nunode->degree - nunode->degree - 1;
+		}
+	}
+	return Error;
+}
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/ntree.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/ntree.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/ntree.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/ntree.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,98 @@
+//$Id: ntree.h,v 1.7 2004/04/20 17:13:49 rdmp1c Exp $
+ 
+#ifndef NTREEH
+#define NTREEH
+
+#include "TreeLib.h"
+#include "gtree.h"
+
+#include <set>
+#include <map>
+
+/**
+ *@typedef  std::set <int, std::less<int> > IntegerSet;
+ */
+typedef std::set <int, std::less<int> > IntegerSet;
+
+class NTree;
+
+/**
+ * @class NNode
+ * A node with a cluster of all descendants of that node.
+ */
+class NNode : public Node
+{
+friend class NTree;
+public:
+	NNode () {};
+	/**
+	 * A set of indices of all descendants of this node.
+	 */		
+	IntegerSet Cluster;
+};
+typedef NNode *NNodePtr;
+
+/**
+ *@typedef std::map <string, NNodePtr, less <std::string> > NNodeLabelMap;
+ */
+typedef std::map <string, NNodePtr, less <std::string> > NNodeLabelMap;
+
+/**
+ * @class NTree
+ * NTree implements an n-tree, i.e. a tree in which each node has a cluster.
+ *
+ * In the standard definition of a n-tree the clusters are subsets of
+ * @f$S=\{1,\ldots,n\}@f$, where n is the number of leaves in the tree. BuildLeafClusters
+ * creates clusters that satisfy this condition. However, in some applications (such as
+ * supertrees) the clusters may be subsets of a larger set @f$L \supset S at f$. 
+ * BuildLabelClusters creates clusters where the members are the indices of the leaf
+ * labels in a larger list (such as the set of labels in a set of trees with overlapping
+ * leaf sets). In this case the clusters are subsets of @f$S=\{1,\ldots,m\}@f$, 
+ * where @f$m \geq n at f$.
+ */
+class NTree : public Tree
+{
+public:
+	/**
+	 * A map between leaf labels in the profile and a unique integer index
+	 */	
+	NNodeLabelMap leaf_labels;	
+	enum { useLeafNumber, useLabelNumber } use;
+	NTree () { use = useLeafNumber; };
+	/**
+	 * Create all node clusters, where each cluster is a subset of @f$\{1,\ldots,n\}@f$.
+	 * Clusters contain the index of the corresponding node in the node list for
+	 * this tree.
+	 */	
+	virtual void BuildLeafClusters ()
+    {
+    	use = useLeafNumber;
+        BuildClustersTraverse ((NNodePtr)Root);
+    };
+	/**
+	 * Create all node clusters, where each cluster is a subset of @f$\{1,\ldots,m\}@f$,
+	 * where @f$m \geq n at f$.
+	 * Clusters contain the index of the label of each node.
+	 */	
+	virtual void BuildLabelClusters ()
+    {
+    	use = useLabelNumber;
+        BuildClustersTraverse ((NNodePtr)Root);
+    };
+	virtual NodePtr NewNode () const { return new NNode; };
+	/**
+	 * Output the clusters for debugging.
+	 */		
+	virtual void ShowClusters () { ShowClustersTraverse ((NNodePtr)Root); };
+	virtual void BuildLeafLabels () { BuildLeafLabelsTraverse ((NNodePtr)Root); };
+	
+    virtual void StarTree (int n);
+	virtual int AddCluster (IntegerSet &b, char *label = NULL);    
+protected:
+	virtual void BuildClustersTraverse (NNodePtr p);
+	virtual void BuildLeafLabelsTraverse (NNodePtr p);
+	virtual void ShowClustersTraverse (NNodePtr p);
+};
+
+#endif // NTREEH
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/ntree.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/profile.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/profile.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/profile.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,840 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+ 
+ // $Id: profile.h,v 1.30 2005/08/31 08:55:59 rdmp1c Exp $
+ 
+/**
+ * @file profile.h
+ *
+ * Storage of trees
+ *
+ */
+#ifndef PROFILE_H
+#define PROFILE_H
+
+#ifdef __BORLANDC__
+	// Undefine __MINMAX_DEFINED so that min and max are correctly defined
+	#ifdef __MINMAX_DEFINED
+		#undef __MINMAX_DEFINED
+	#endif
+    // Ignore "Cannot create precompiled header: code in header" message
+    // generated when compiling string.cc
+    #pragma warn -pch
+#endif
+
+#include "TreeLib.h"
+
+#include "treereader.h"
+#include "treewriter.h"
+
+// NCL includes
+#include "nexusdefs.h"
+#include "xnexus.h"
+#include "nexustoken.h"
+#include "nexus.h"
+#include "taxablock.h"
+#include "assumptionsblock.h"
+#include "treesblock.h"
+#include "discretedatum.h"
+#include "discretematrix.h"
+#include "charactersblock.h"
+#include "datablock.h"
+
+#if USE_XML
+	#include "xml.h"
+#endif
+
+#if USE_VC2
+	#include "VMsg.h"
+#endif
+
+#if USE_WXWINDOWS
+   	#include "wx/wx.h"
+#endif
+
+#if (__BORLANDC__ < 0x0550)
+	#include <time.h>
+#else
+	#include <ctime>
+#endif    
+
+
+
+/**
+ *@typedef std::map <std::string, int, std::less<std::string> > LabelMap;
+ */
+typedef std::map <std::string, int, std::less<std::string> > LabelMap;
+
+
+/**
+ * @class Profile
+ * Encapsulates reading and storing a set of trees.
+ *
+ */
+template <class T> class Profile
+{
+public:
+	/**
+	 * A map between leaf labels in the profile and a unique integer index
+	 */	
+	LabelMap Labels;
+	/**
+	 * For each leaf label the number of trees in the profile that have the corresponding leaf
+	 */	
+	LabelMap LabelFreq;
+	
+	/**
+	 * Constructor
+	 */
+	Profile () {};
+	/**
+	 * Destructor
+	 */
+	virtual ~Profile () {};
+
+	/**
+	 * @brief The ith tree in the profile
+	 *
+	 * @param i the index of the tree in the range 0 - (n-1)
+	 * @return The tree
+	 */
+	 virtual T GetIthTree (int i) { return Trees[i]; };
+	/**
+	 * @brief The name of the ith tree in the profile
+	 *
+	 * @param i the index of the tree in the range 0 - (n-1)
+	 * @return The tree
+	 */
+	 virtual std::string GetIthTreeName (int i) { return Trees[i].GetName(); };
+	/**
+	 * @return The number of labels in the profile
+	 */
+	virtual int GetNumLabels () { return Labels.size(); };
+	/**
+	 * @return The number of trees in the profile
+	 */
+	virtual int GetNumTrees () { return Trees.size(); };
+	/**
+	 * @brief The index of a leaf label
+	 * @param s A leaf label
+	 * @return The index of the leaf label
+	 */
+	virtual int GetIndexOfLabel (std::string s);
+	/**
+	 * @brief The unique index of a leaf label
+	 * @param i A leaf index
+	 * @return The ith leaf label
+	 * @sa Profile::GetIndexOfLabel
+	 */
+	virtual std::string GetLabelFromIndex (int i) { return LabelIndex[i]; };
+
+	/**
+	 * @brief Assign a unique integer index to each leaf label in the profile
+	 */
+	virtual void MakeLabelList ();
+	/**
+	 * @brief Count the number of trees each leaf label occurs in
+	 */
+	virtual void MakeLabelFreqList ();
+	/**
+	 * @brief Read a NEXUS file and store the trees in Profile::trees. 
+	 
+	 * If a TAXA block is
+	 * present then the leaf labels are stored in Labels in the same order as in
+	 * the TAXA block, otherwise Profile::MakeLabelList is called to assign a unique integer
+	 * index to each label.
+	 *
+	 * @param f input stream in NEXUS format
+	 * @return true if sucessful
+	 */
+	virtual bool ReadNEXUS (std::istream &f);
+	/**
+	 * @brief Read a PHYLIP tree file and store the trees in Profile::trees. 
+	 *
+	 * @param f input stream in PHYLIP format
+	 * @return true if sucessful
+	 */
+ 	virtual bool ReadPHYLIP (std::istream &f);
+	/**
+	 * @brief Read a set of trees from an input stream
+	 * At present PHYLIP, NEXUS, and a subset of PhyloXML
+	 * formats are supported.
+	 * @param f input stream 
+	 * @return true if successful
+	 */
+	virtual bool ReadTrees (std::istream &f);
+#if USE_XML
+	/**
+	 * @brief Read a XML file and store the trees in Profile::trees. 
+	 * XML format is based on "XML for phylogenetic and population genetic data"
+	 * (see http://evolve.zoo.ox.ac.uk/PhyloXML/).
+	 *
+	 * @param f input stream in PHYLIP format
+	 * @return true if sucessful
+	 */
+ 	virtual bool ReadXML (std::istream &f);
+#endif
+	/**
+	 * @brief Output leaf labels.
+	 *
+	 * @param f output stream
+	 */
+	virtual void ShowLabelList (std::ostream &f);
+
+	/**
+	 * @brief Output trees as dendrograms.
+	 *
+	 * @param f output stream
+	 */
+    	virtual void ShowTrees (std::ostream &f);
+	/**
+	 * @brief Write a set of trees to an output stream
+	 * @param f output stream 
+	 * @param format file format to use (at present nexus only)
+	 * @return true if successful
+	 */
+	virtual bool WriteTrees (std::ostream &f, const int format = 0, const char *endOfLine = "\n");
+
+protected:
+	/**
+	 * The trees
+	 *
+	 */
+	std::vector <T> Trees;
+	/**
+	 * The leaf labels stored as a vector so they can be accessed by an index value
+	 *
+	 */
+	std::vector <std::string> LabelIndex;
+	
+#if USE_XML
+	virtual bool xmlTraverse (XMLElementPtr p);
+	virtual bool xmlCleanup (XMLElementPtr p);
+	virtual void postProcessXMLTree (int tree_num);
+#endif
+	
+	int curTreeNumber;
+	IntegerNodeMap node_map;
+};
+
+//------------------------------------------------------------------------------
+template <class T> int Profile<T>::GetIndexOfLabel (std::string s)
+{
+	return Labels[s];
+}
+
+//------------------------------------------------------------------------------
+template <class T> void Profile<T>::MakeLabelList ()
+{
+	for (int i = 0; i < Trees.size(); i++)
+	{
+    	T t = Trees[i];
+		t.MakeNodeList();
+		for (int j = 0; j < t.GetNumLeaves(); j++)
+		{
+			std::string s = t[j]->GetLabel();
+			
+			if (Labels.find (s) == Labels.end ())
+			{
+				int index = Labels.size();
+//				cout << "Labels.size() = " << Labels.size();
+				Labels[s] = index;
+				LabelIndex.push_back (s);
+//				cout << "Labels[s] =" << Labels[s] << endl;
+			}
+		} 
+	}
+/*	cout << endl << "Number of labels = " << Labels.size() << endl;
+	LabelMap::iterator it = Labels.begin();
+	LabelMap::iterator end = Labels.end();
+	while (it != end)
+	{
+		cout << (*it).first << " - " << (*it).second << endl;
+		it++;
+	}*/
+}
+
+
+//------------------------------------------------------------------------------
+template <class T> void Profile<T>::ShowLabelList (std::ostream &f)
+{
+	f << std::endl << "Number of labels = " << Labels.size() << std::endl;
+	LabelMap::iterator it = Labels.begin();
+	LabelMap::iterator end = Labels.end();
+	while (it != end)
+	{
+		f << (*it).first << " - " << (*it).second << std::endl;
+		it++;
+	}
+	f << std::endl;
+}
+
+//------------------------------------------------------------------------------
+template <class T> void Profile<T>::MakeLabelFreqList ()
+{
+//	cout << "MakeLabelListFreq" << endl;
+	for (int i = 0; i < Trees.size(); i++)
+	{
+		T t = Trees[i];
+		t.MakeNodeList();
+		for (int j = 0; j < t.GetNumLeaves(); j++)
+		{
+			std::string s = t[j]->GetLabel();
+			LabelMap::iterator there = LabelFreq.find (s);
+			
+			if (there == Labels.end ())
+			{
+				LabelFreq[s] = 1;
+			}
+			else
+			{
+				LabelFreq[s] += 1;
+			}
+		} 
+	}
+/*	cout << "Frequency of labels" << endl;
+	LabelMap::iterator it = LabelFreq.begin();
+	LabelMap::iterator end = LabelFreq.end();
+	while (it != end)
+	{
+		cout << (*it).first << " - " << (*it).second << endl;
+		it++;
+	}*/
+}
+
+/**
+ * @class MyNexus
+ * Extends Nexus class to output progress to cout
+ *
+ */
+class MyNexus : public Nexus
+{
+public:
+	MyNexus () : Nexus() { isOK = true; };
+	
+#if (USE_VC2 || USE_WXWINDOWS)
+
+	#if USE_VC2
+		virtual void EnteringBlock( nxsstring blockName ) { }
+		virtual void ExitingBlock( nxsstring blockName ) { };
+		virtual void SkippingBlock( nxsstring blockName ) {  };
+		virtual void SkippingDisabledBlock( nxsstring blockName ) { };
+		virtual void ExecuteStarting() { };
+		virtual void ExecuteStopping() { };
+		virtual void OutputComment( nxsstring comment ) {};
+	 	virtual void NexusError( nxsstring& msg, streampos pos, long line, long col )
+		{
+			char buf[256];
+			sprintf (buf,"%s at line %d, column %d", msg.c_str(), line, col);
+			Message (MSG_ERROR, "Error reading NEXUS file", buf);
+			isOK = false;
+		};
+	#endif
+
+	
+	#if USE_WXWINDOWS
+	#if 1
+	   	 virtual void EnteringBlock( nxsstring blockName ) { }
+	   	 virtual void ExitingBlock( nxsstring blockName ) { };
+	   	 virtual void SkippingBlock( nxsstring blockName ) {  };
+	   	 virtual void SkippingDisabledBlock( nxsstring blockName ) { };
+		virtual void ExecuteStarting() { };
+		virtual void ExecuteStopping() { };
+	#else // debugging NEXUS reader
+	   	 virtual void EnteringBlock( nxsstring blockName ) { wxLogMessage ("Entering %s block", blockName.c_str()); }
+	   	 virtual void ExitingBlock( nxsstring blockName ) { wxLogMessage ("Exiting %s block", blockName.c_str()); };
+	   	 virtual void SkippingBlock( nxsstring blockName ) { wxLogWarning ("Skipping %s block", blockName.c_str());  };
+	   	 virtual void SkippingDisabledBlock( nxsstring blockName ) {  wxLogWarning ("Skipping disabled %s block", blockName.c_str());  };
+		virtual void ExecuteStarting() { wxLogMessage ("Starting to execute NEXUS file"); };
+		virtual void ExecuteStopping() { wxLogMessage ("Finished executing NEXUS file"); };
+	#endif
+		virtual void OutputComment( nxsstring comment ) { std::cout << comment << std::endl;};
+	 	virtual void NexusError( nxsstring& msg, std::streampos pos, long line, long col )
+		{
+			wxLogError (wxT("%s at line %d, column %d"), msg.c_str(), line, col);
+			isOK = false;
+		};
+	#endif
+
+#else
+	virtual void EnteringBlock( nxsstring blockName ) { cout << "   Entering " << blockName << " block..."; };
+	virtual void ExitingBlock( nxsstring blockName ) { cout << "done" << endl; };
+	virtual void SkippingBlock( nxsstring blockName ) { cout << "   (Skipping " << blockName << " block)" << endl; };
+	virtual void SkippingDisabledBlock( nxsstring blockName ) { cout << "   (Skipping disabled " << blockName << " block)" << endl; };
+	virtual void ExecuteStarting() { cout << "Starting to execute NEXUS file" << endl; };
+	virtual void ExecuteStopping() { cout << "Finished executing NEXUS file" << endl; };
+	virtual void OutputComment( nxsstring comment ) { cout << comment << endl;};
+	virtual void NexusError( nxsstring& msg, streampos pos, long line, long col )
+	{
+   		cerr << "Error: " << msg << " line " << line << ", col " << col << endl;
+		isOK = false;
+	};
+#endif
+	bool GetIsOK () { return isOK; };
+
+protected:
+	bool isOK;
+};
+
+//------------------------------------------------------------------------------
+template <class T> bool Profile<T>::ReadNEXUS (std::istream &f)
+{
+	bool result = false;
+
+	TaxaBlock* taxa;
+	DataBlock *data;
+	CharactersBlock *characters;
+	AssumptionsBlock *assumptions;
+	TreesBlock *trees;
+
+	taxa = new TaxaBlock();
+	assumptions = new AssumptionsBlock (*taxa);
+	data = new DataBlock (*taxa, *assumptions);
+	characters = new CharactersBlock (*taxa, *assumptions);
+	trees = new TreesBlock (*taxa);
+
+	MyNexus nexus;
+	nexus.Add( taxa );
+	nexus.Add( data );
+	nexus.Add( characters );
+	nexus.Add( trees );
+    
+
+
+    // Set to binary to handle Mac and Unix files
+#ifdef __MWERKS__
+#elif __BORLANDC__
+	f.setf (ios::binary);
+#elif __GNUC__
+	#if __GNUC__ < 3
+		f.setf (ios::binary);
+	#endif
+#endif
+
+	NexusToken token (f);
+    
+
+	try 
+	{
+    		nexus.Execute (token);
+	}
+	catch (XNexus x)
+	{
+		std::cout << x.msg << " (line " << x.line << ", column " << x.col << ")" << std::endl;
+	}    	
+
+	if (nexus.GetIsOK() && (trees->GetNumTrees() > 0))
+	{
+
+		// Display information about the trees
+#if (USE_WXWINDOWS || USE_VC2)
+#else
+		trees->Report (std::cout);
+		std::cout << endl;
+#endif
+		// Store the trees themselves
+		int i = 0;
+		int error = 0;
+		while ((i < trees->GetNumTrees()) && (error == 0))
+		{ 
+			T t;
+			std::string tstr;
+//			if (trees->HasTranslationTable())
+//				tstr = trees->GetTranslatedTreeDescription (i);
+//			else
+				tstr = trees->GetTreeDescription (i);
+			tstr += ";";
+			error = t.Parse (tstr.c_str());
+			if (error == 0)
+			{
+				t.SetName (trees->GetTreeName (i));
+				t.SetRooted (trees->IsRootedTree (i));
+				t.SetWeight (trees->GetTreeWeight (i));
+				
+				if (trees->HasTranslationTable())
+				{
+					t.MakeNodeList();
+					for (int k = 0; k < t.GetNumLeaves (); k++)
+					{
+						std::string skey = t[k]->GetLabel();
+						if (skey != "")
+						{
+							nxsstring svalue = trees->GetTranslatedLabel(skey);
+							if (svalue != "")
+								t[k]->SetLabel (svalue);
+						}
+					}
+				}
+				
+				
+				
+				Trees.push_back (t);
+			}
+			else
+			{
+#if USE_WXWINDOWS
+				wxLogError ( wxT("Error in description of tree %d: %s"), (i+1), t.GetErrorMsg().c_str());
+#elif USE_VC2
+				char buf[256];
+				sprintf (buf, "Reading tree %d: %s", (i+1), t.GetErrorMsg().c_str());
+				Message (MSG_ERROR, "Error in tree description", buf);
+#else
+				cerr << "Error in tree description " << (i + 1) << t.GetErrorMsg() << endl;
+#endif
+				return false;
+			}           
+			 i++;
+		}
+        
+		// Assign each label a unique index
+		if (taxa->GetNumTaxonLabels() == 0)
+		{
+			// No taxa block in NEXUS file
+			MakeLabelList ();
+		}
+		else
+		{
+			// Store the labels in the same order encountered in the
+			// NEXUS file
+			for (int i = 0; i < taxa->GetNumTaxonLabels (); i++)
+			{
+				Labels[taxa->GetTaxonLabel (i)] = i;
+				LabelIndex.push_back (taxa->GetTaxonLabel (i));
+			}
+		}
+		result = true;
+	}
+	return result;
+}
+
+
+//------------------------------------------------------------------------------
+template <class T> bool Profile<T>::ReadTrees (std::istream &f)
+{
+	bool result = false;
+
+	char ch = (char)f.peek ();
+	if (ch == '#')
+		result = ReadNEXUS (f);
+	else if (strchr ("([", ch))
+		result = ReadPHYLIP (f);
+#if USE_XML
+	else if (ch == '<')
+		result = ReadXML (f);
+#endif
+	return result;
+}
+
+//------------------------------------------------------------------------------
+template <class T> bool Profile<T>::ReadPHYLIP (std::istream &f)
+{
+	Tokeniser p (f);
+	PHYLIPReader tr (p);
+	bool ok = true;
+	while (ok)
+	{
+		T t;
+
+		try
+		{
+			ok = tr.Read (&t);
+		}
+		catch (XTokeniser x)
+		{
+#if USE_WXWINDOWS 
+			wxLogError (wxT("%s at line %d, column %d"), x.msg.c_str(), x.line, x.col);           
+#elif USE_VC2
+			char buf[256];
+			sprintf (buf, "%s at line %d, column %d", x.msg.c_str(), x.line, x.col);
+			Message (MSG_ERROR, "Error reading tree file", buf);
+#else
+			std::cerr << x.msg << " (line " << x.line << ", column " << x.col << ")" << std::endl;
+#endif
+		 	return false;
+		}
+
+		if (ok)
+			Trees.push_back (t);
+	}
+	
+	bool result = (Trees.size() > 0);
+	
+	if (result)
+	{
+		// Build a list of labels in the profile, such that each label 
+		// is assigned a unique index    	
+		MakeLabelList ();
+	}
+	return result;
+}
+
+//------------------------------------------------------------------------------
+template <class T> void Profile<T>::ShowTrees (std::ostream &f)
+{
+	for (int i = 0; i < Trees.size(); i++)
+	{
+		T t = Trees[i];
+		t.Update ();
+		t.Draw (f);
+	}
+}
+
+//------------------------------------------------------------------------------
+template <class T> bool Profile<T>::WriteTrees (std::ostream &f, const int format, const char *endOfLine)
+{
+	bool result = true;
+	
+	// Simple nexus tree file
+	f << "#nexus" << endOfLine;
+	f << endOfLine;
+	f << "begin trees;";
+		
+	// Date the file
+	f << " [Treefile written ";
+	time_t timer = time(NULL);
+	struct tm* tblock = localtime(&timer);
+	char time_buf[64];
+	strncpy (time_buf, asctime(tblock), sizeof (time_buf));
+	char *q = strrchr (time_buf, '\n');
+	if (q)
+		*q = '\0';
+	f << time_buf << "]" << endOfLine;
+
+	for (int i = 0; i < Trees.size(); i++)
+	{
+		T t = Trees[i];
+		f << "\ttree ";
+		if (t.GetName() != "")
+			f << NEXUSString (t.GetName());
+		else
+			f << "tree_" << (i+1);
+		f << " = ";
+		if (t.IsRooted())
+			f << "[&R] ";
+		else
+			f << "[&U] ";
+			
+		// Tree
+		NewickTreeWriter tw (&t);
+		tw.SetStream (&f);
+		tw.Write();	
+		f << endOfLine;		
+			
+//		f << t << endOfLine;
+	}
+	f << "end;" << endOfLine;
+	
+	return true;
+}
+
+
+#if USE_XML
+//------------------------------------------------------------------------------
+template <class T> void Profile<T>::postProcessXMLTree (int tree_num)
+{
+	IntegerNodeMap::iterator it = node_map.begin();
+	IntegerNodeMap::iterator end = node_map.end();
+	
+	if (it != end)
+	{
+	    // Dump tree
+	    int nodeCount = 0;
+	    int leafCount = 0;
+		NodePtr root = NULL;
+		while (it != end)
+		{
+			nodeCount++;
+			int index = it->first;
+			NodePtr p = it->second;
+			
+			if (p->GetAnc() == NULL)
+				Trees[tree_num].SetRoot (p);
+
+			if (p->GetChild() == NULL)
+			{
+				p->SetLeaf (true);
+				p->SetLeafNumber (++leafCount);
+			}
+			else
+			{
+				if (p->GetLabel() != "")
+					Trees[tree_num].SetInternalLabels (true);
+			}
+			
+			it++;
+		}
+		Trees[tree_num].SetNumLeaves (leafCount);
+		Trees[tree_num].SetNumInternals (nodeCount - leafCount);
+	}
+}
+
+
+
+//------------------------------------------------------------------------------
+template <class T> bool Profile<T>::xmlTraverse (XMLElementPtr p)
+{
+	if (p)
+    {
+        string attrname, attrvalue;
+        if (p->name == "tree")
+        {
+          	attrname = "rooted";
+            std::string rooted = p->attributes[attrname];
+
+            // Finish any previous tree. If we are processing a new <tree> tag,
+            // then now is our chance to finish the previous tre
+            if (curTreeNumber > 0)
+            {
+            	postProcessXMLTree (curTreeNumber - 1);
+            }
+            
+            // Clean up node list
+            node_map.erase(node_map.begin(), node_map.end());
+            
+            // Create new tree
+            T t;
+            t.SetRooted (true);
+			Trees.push_back(t); 
+	        Trees[curTreeNumber].SetRooted (rooted == "true");
+			
+			curTreeNumber++;
+	    }
+        
+        if (p->name == "node")
+        {
+          	attrname = "name";
+            std::string node_name = p->attributes[attrname];
+          	attrname = "id";
+            std::string node_id = p->attributes[attrname];
+
+            // Create node, set its attributes, use a map to access it by its id
+            int i = atoi (node_id.c_str());
+            Node *p = Trees[curTreeNumber-1].NewNode();
+            node_map[i] =  p;
+            if (node_name != "")
+            	p->SetLabel (node_name);
+            p->SetIndex (i);
+	    }
+        if (p->name == "edge")
+        {
+          	attrname = "source";
+            attrvalue = p->attributes[attrname];
+            int source = atoi (attrvalue.c_str());
+            
+          	attrname = "target";
+            attrvalue = p->attributes[attrname];
+            int target = atoi (attrvalue.c_str());
+
+            // join ancestor-descendant pair, set any attributes of this edge
+			Node *s = node_map[target];
+			Node *q = node_map[source];
+			s->SetAnc (q);
+			if (q->GetChild())
+			{
+				Node *r = q->GetChild();
+				r = r->GetRightMostSibling();
+				r->SetSibling (s);
+			}
+			else 
+				q->SetChild (s);   
+			
+			
+          	attrname = "length";
+            attrvalue = p->attributes[attrname];
+            if (attrvalue != "")
+            {
+	            float length = atof (attrvalue.c_str());
+	            s->SetEdgeLength (length);
+	            Trees[curTreeNumber-1].SetEdgeLengths (true);
+			}
+	    }
+	    
+        if (p->name == "newick")
+        {
+            // parse Newick description 
+    		Trees[curTreeNumber - 1].Parse (p->data.c_str());
+	    }
+
+		xmlTraverse (p->child);
+        xmlTraverse (p->sib);
+    }
+}
+
+
+//------------------------------------------------------------------------------
+template <class T> bool Profile<T>::xmlCleanup (XMLElementPtr p)
+{
+	if (p)
+    {
+		xmlCleanup (p->child);
+        xmlCleanup (p->sib);
+        delete p;
+    }
+}
+
+
+//------------------------------------------------------------------------------
+template <class T> bool Profile<T>::ReadXML (istream &f)
+{
+	bool result = true;
+  
+    XMLElementPtr Root;
+	myParser parser;
+
+	char buf[BUFSIZ];
+  
+	while (f.good())
+	{
+		f.getline (buf, sizeof (buf));
+		if (!parser.XML_Parse(buf, strlen (buf), false)) 
+		{
+#if USE_WXWINDOWS 
+			wxLogError ("%s at line %d", XML_ErrorString(parser.XML_GetErrorCode()), parser.XML_GetCurrentLineNumber());           
+#elif USE_VC2
+			char buf[256];
+			sprintf (buf, "%s at line %d", XML_ErrorString(parser.XML_GetErrorCode()), parser.XML_GetCurrentLineNumber());
+			Message (MSG_ERROR, "Error reading tree file", buf);
+#else
+			cerr << XML_ErrorString(parser.XML_GetErrorCode()) << " at line " << parser.XML_GetCurrentLineNumber() << endl;
+#endif
+			return false;
+		}
+	}  
+	
+	// Parsed XML file OK, so now extract trees	and clean up
+	curTreeNumber = 0;
+	xmlTraverse (parser.Root);	
+	postProcessXMLTree (curTreeNumber - 1);	
+	xmlCleanup (parser.Root);
+
+	return result;
+}
+#endif // USE_XML
+
+#if __BORLANDC__
+	// Redefine __MINMAX_DEFINED so Windows header files compile
+	#ifndef __MINMAX_DEFINED
+    		#define __MINMAX_DEFINED
+	#endif
+#endif
+
+#endif
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/profile.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/quartet.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/quartet.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/quartet.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,754 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: quartet.cpp,v 1.2 2002/03/14 16:37:13 rdmp1c Exp $
+ 
+/**
+ * @file quartet.cpp
+ *
+ * Compute quartet distance between two trees.
+ *
+ */
+
+#include "quartet.h"
+#include "nodeiterator.h"
+#include "lcaquery.h"
+
+#include <iomanip.h>
+#ifdef __GNUC__
+	#include <algo.h>
+#endif
+
+
+#define DEBUG_QUARTETS 0
+
+
+class ECODE
+{
+public:
+	ECODE (Tree *tree);
+    ~ECODE ();
+	virtual void EncodeNode (NNodePtr r);
+    virtual void EncodeTree (int ni, int nj);
+	virtual bool Visit (NNodePtr p);
+    void Write (ostream &s);
+	virtual int  GetLeaves () { return n; };
+	int *E[3];
+protected:
+    int vertex;
+    int subtree;
+    int n;
+	int i;
+	int j;
+	Tree * t;
+    SimpleLCAQuery lca;
+    IntegerSet mVisited;
+};
+
+class TCODE : public ECODE
+{
+public:
+	TCODE (Tree *tree) : ECODE (tree) {};
+    virtual void EncodeTree (int ni, int nj);
+	virtual bool Visit (NNodePtr p);
+};
+
+
+
+
+// Local routines
+
+long n_choose_2 (int n);
+long n_choose_3 (int n);
+long n_choose_4 (int n);
+void RadixSort (ECODE &E1, ECODE &E2, int &s, int &r, int &x);
+
+
+
+// Store a tuple representing the vertex and subtree codes in the two trees
+class Tuple
+{
+public:
+	int Leaf;
+    int Vertex1;
+    int Subtree1;
+    int Vertex2;
+    int Subtree2;
+    Tuple () { Leaf = Vertex1 = Subtree1 = Vertex2 = Subtree2 = 0; };
+    int operator< (const Tuple &t) const
+    {
+    	if (Vertex1 < t.Vertex1)
+        	return 1;
+        else if (Vertex1 > t.Vertex1)
+        	return 0;
+        else // Vertex1 ==
+        {
+        	if (Subtree1 < t.Subtree1)
+            	return 1;
+            else if (Subtree1 > t.Subtree1)
+            	return 0;
+            else // Subtree1 ==
+            {
+                if (Vertex2 < t.Vertex2)
+                    return 1;
+                else if (Vertex2 > t.Vertex2)
+                    return 0;
+                else // Vertex2 ==
+                {
+                    if (Subtree2 < t.Subtree2)
+                        return 1;
+                    else if (Subtree2 > t.Subtree2)
+                        return 0;
+                    else return 0;
+                }
+            }
+        }
+
+ 	};
+
+    int operator== (const Tuple &t) const
+    {
+    	return (
+        	(t.Vertex1 == Vertex1)
+        && (t.Subtree1 == Subtree1)
+       	&& (t.Vertex2 == Vertex2)
+       	&& (t.Subtree2 == Subtree2) );
+    };
+};
+
+
+//------------------------------------------------------------------------------
+long n_choose_2 (int n)
+{
+	if (n < 2)
+		return 0;
+	else
+		return  (n * (n-1)) / 2;
+}
+
+
+//------------------------------------------------------------------------------
+long n_choose_3 (int n)
+{
+	if (n < 3)
+		return 0;
+	else
+		return  (n * (n-1) * (n-2)) / 6;
+}
+
+//------------------------------------------------------------------------------
+long n_choose_4 (int n)
+{
+	if (n < 4)
+		return 0;
+	else
+		return  (n * (n-1) * (n-2) * (n-3)) / 24;
+}
+
+
+//------------------------------------------------------------------------------
+ECODE::ECODE (Tree *tree)
+{
+	t = tree;
+
+    n = t->GetNumLeaves();
+
+    E[0] = new int [n+1];
+    E[1] = new int [n+1];
+    E[2] = new int [n+1];
+
+	for (int k = 1; k <=n; k++)
+	{
+		E[0][k] = k;
+		E[1][k] = 0;
+		E[2][k] = 0;
+	}
+	vertex = subtree = 0;
+
+    lca.SetTree (t);
+}
+
+//------------------------------------------------------------------------------
+ECODE::~ECODE ()
+{
+	delete [] E[0];
+	delete [] E[1];
+	delete [] E[2];
+}
+
+//------------------------------------------------------------------------------
+// Node should be encoded if it is not on the path <i,j> and its cluster is
+// not a subset of {1..i}
+bool ECODE::Visit (NNodePtr p)
+{
+    return (!p->IsMarked() && !(p->Cluster <= mVisited));
+/*	SetRelations s = p->ClusterRelationship (Visited);
+	return (!p->IsFlag (NF_MARKED) && (s != rdmpIDENTITY && s != rdmpSUBSET));
+*/
+}
+
+
+//------------------------------------------------------------------------------
+/*    isit desc of node and encode.
+	  Each node that does not
+	  include i or j as a descendant
+	  is a new subtree of the current
+	  vertex:
+
+			    i    a b  c
+				 \   |  \/
+				  \  |  /
+			  	   \ 1 2
+					\|/
+					 +
+
+			  + = vertex
+			  1 = subtree 1
+			  2 = subtree 2
+
+	  A vertex with no subtrees meeting the
+	  requirements of ECODE::Visit is irrelevant
+	  to the problem. These cases are flagged by
+	  subtree=0.
+*/
+void ECODE::EncodeNode (NNodePtr r)
+{
+	subtree = 0;
+	NNodePtr q = r;
+	while (q)
+	{
+		if (Visit (q))
+		{
+			subtree++;
+
+            IntegerSet::iterator nit = q->Cluster.begin();
+            IntegerSet::iterator nend = q->Cluster.end();
+            while (nit != nend)
+            {
+            	if ((*nit) >= i)
+                {
+	            	E[1][*nit] = vertex;
+    	        	E[2][*nit] = subtree;
+                }
+                nit++;
+            }
+		}
+		q = (NNodePtr)(q->GetSibling ());
+	}
+}
+
+
+
+//------------------------------------------------------------------------------
+/*
+	  Visit each node on path <i,j> and encode
+		desc leaves. Note that leaves below lub(i,j)
+		are also "descendants" of lub (i,j) since T
+		is an unrooted tree. These leaves are all
+		on the same subtree.
+
+				 i = 2
+				 j = 4
+
+				  1  5 2    3   4
+				   \/   \   |   /
+					\    \  |  /
+					 \    \ | /
+					  \    \|/
+					   \    +
+						\  /
+						 \/
+
+				 is really
+
+					 2---+---4
+						 / \
+						/   \
+				    1--+     3
+					   |
+					   5
+
+	
+
+*/
+void ECODE::EncodeTree (int ni, int nj)
+{
+	i = ni;
+	j = nj;
+	NNodePtr inode = (NNode *)(*t)[i - 1];
+	NNodePtr jnode = (NNode *)(*t)[j - 1];
+
+    NNodePtr lub = (NNode *)lca.LCA (inode, jnode);
+    vertex = 1;
+
+    mVisited.erase(mVisited.begin(), mVisited.end());
+    for (int k = 1; k <= i; k++)
+    	mVisited.insert (k);
+
+    // Mark path ij
+ 	NNodePtr q = inode;
+    while (q != lub)
+    {
+        q->SetMarked (true);
+        q = (NNode *)(q->GetAnc());
+    }
+	q = jnode;
+    while (q != lub)
+    {
+        q->SetMarked (true);
+        q = (NNode *)(q->GetAnc());
+    }
+
+
+
+	// i -- lub(i,j)
+    q = (NNode *)(inode->GetAnc());
+    while (q->IsMarked())
+    {
+        EncodeNode ((NNode *)(q->GetChild()));
+        if (subtree)
+        	vertex++;
+        q = (NNode *)(q->GetAnc());
+    }
+
+
+	// j--lub(i,j)
+    q = (NNode *)(jnode->GetAnc());
+    while (q->IsMarked())
+    {
+        EncodeNode ((NNode *)(q->GetChild()));
+        if (subtree)
+        	vertex++;
+        q = (NNode *)(q->GetAnc());
+    }
+
+	// visit lub (i,j)
+	EncodeNode ((NNode *)(q->GetChild()));
+	subtree++;
+
+	for (int k = i + 1; k <= n; k++)
+	{
+    	bool kIsElement = (q->Cluster.find(k) != q->Cluster.end());
+		if ((k != j) && !kIsElement)
+		{
+			E[1][k] = vertex;
+			E[2][k] = subtree;
+		}
+	}
+
+    // Unmark path between i and j
+ 	q = inode;
+    while (q != lub)
+    {
+        q->SetMarked (false);
+        q = (NNode *)(q->GetAnc());
+    }
+	q = jnode;
+    while (q != lub)
+    {
+        q->SetMarked (false);
+        q = (NNode *)(q->GetAnc());
+    }
+}
+
+
+//------------------------------------------------------------------------------
+void ECODE::Write (ostream &s)
+{
+	s << endl;
+	int k;
+	for (k = 1; k <= n; k++)
+		s << setw(3) << E[0][k];
+	s << endl;
+	for (k = 1; k <= n; k++)
+		s << "---";
+	s << endl;
+	for (k = 1; k <= n; k++)
+		s << setw(3) << E[1][k];
+	s << endl;
+	for (k = 1; k <= n; k++)
+		s << setw(3) << E[2][k];
+	s << endl;
+}
+
+
+//------------------------------------------------------------------------------
+// Replace original code from Douchette and COMPONENT by a simple use of
+// STL.
+void RadixSort (ECODE &E1, ECODE &E2, int &s, int &r, int &x)
+{
+	std::vector <Tuple> E;
+	for (int i = 1; i <= E1.GetLeaves (); i++)
+    {
+    	Tuple t;
+        t.Vertex1 = E1.E[1][i];
+        t.Subtree1 = E1.E[2][i];
+        t.Vertex2 = E2.E[1][i];
+        t.Subtree2 = E2.E[2][i];
+		E.push_back (t);
+    }
+
+#if DEBUG_QUARTETS
+    // Show
+    cout << "Before sort" << endl;
+	for (int i = 0; i < E.size(); i++)
+    {
+    	cout << " " << i;
+    }
+    cout << endl;
+	for (int i = 0; i < E.size(); i++)
+    {
+    	cout << "--";
+    }
+    cout << endl;
+	for (int i = 0; i < E.size(); i++)
+    {
+    	cout << " " << E[i].Vertex1;
+    }
+    cout << endl;
+	for (int i = 0; i < E.size(); i++)
+    {
+    	cout << " " << E[i].Subtree1;
+    }
+    cout << endl;
+	for (int i = 0; i < E.size(); i++)
+    {
+    	cout << "--";
+    }
+    cout << endl;
+ 	for (int i = 0; i < E.size(); i++)
+    {
+    	cout << " " << E[i].Vertex2;
+    }
+    cout << endl;
+	for (int i = 0; i < E.size(); i++)
+    {
+    	cout << " " << E[i].Subtree2;
+    }
+    cout << endl;
+	for (int i = 0; i < E.size(); i++)
+    {
+    	cout << "==";
+    }
+   cout << endl;
+#endif
+
+   sort (E.begin(), E.end());
+
+#if DEBUG_QUARTETS
+
+       // Show
+    cout << "After sort" << endl;
+	for (int i = 0; i < E.size(); i++)
+    {
+    	cout << " " << i;
+    }
+    cout << endl;
+	for (int i = 0; i < E.size(); i++)
+    {
+    	cout << "--";
+    }
+    cout << endl;
+	for (int i = 0; i < E.size(); i++)
+    {
+    	cout << " " << E[i].Vertex1;
+    }
+    cout << endl;
+	for (int i = 0; i < E.size(); i++)
+    {
+    	cout << " " << E[i].Subtree1;
+    }
+    cout << endl;
+	for (int i = 0; i < E.size(); i++)
+    {
+    	cout << "--";
+    }
+    cout << endl;
+ 	for (int i = 0; i < E.size(); i++)
+    {
+    	cout << " " << E[i].Vertex2;
+    }
+    cout << endl;
+	for (int i = 0; i < E.size(); i++)
+    {
+    	cout << " " << E[i].Subtree2;
+    }
+    cout << endl;
+	for (int i = 0; i < E.size(); i++)
+    {
+    	cout << "==";
+    }
+   cout << endl;
+#endif
+
+   // Count
+
+	int a = 0;
+	int b = 0;
+	int c = 0;
+	int d = 0;
+	s = 0;
+	r = 0;
+	x = 0;
+	int insubtree1 = 0;
+	int insubtree2 = 0;
+	int innode2 = 0;
+
+	for (int k = 0; k < E.size(); k++)
+	{
+    	if (E[k].Vertex1 != 0)
+        {
+			if (  (d != E[k].Subtree2)
+				|| (c != E[k].Vertex2)
+				|| (b != E[k].Subtree1)
+				|| (a != E[k].Vertex1))
+			{
+				s += n_choose_2 (insubtree2);
+				r += insubtree2 * innode2;
+				innode2 += insubtree2;
+				insubtree2 = 0;
+				d = E[k].Subtree2;
+			}
+
+			if (   (c != E[k].Vertex2)
+				|| (b != E[k].Subtree1)
+				|| (a != E[k].Vertex1))
+			{
+				innode2 = 0;
+				c = E[k].Vertex2;
+			}
+
+			if (  (b != E[k].Subtree1) || (a != E[k].Vertex1))
+			{
+				x += n_choose_2 (insubtree1);
+				insubtree1 = 0;
+				b = E[k].Subtree1;
+				a = E[k].Vertex1;
+			}
+		insubtree1++;
+		insubtree2++;
+		}
+	}
+	s += n_choose_2 (insubtree2);
+	x += n_choose_2 (insubtree1);
+	r += insubtree2 * innode2;
+#if DEBUG_QUARTETS
+    cout << "s=" << s << " x=" << x << " r=" << r << endl;
+#endif
+}
+
+
+//------------------------------------------------------------------------------
+void ShowQTRecord (ostream &s, QTValues &QR)
+{
+	s 	<< setprecision (3) << setw (6) << setiosflags (ios::right)
+		<< setw (6)<< QR.SD << " "
+		<< setw (6)<< QR.EA << " "
+		<< setw (6)<< QR.DC << " "
+		<< setw (6)<< QR.SJA << " "
+		<< setw (8)<< QR.n
+		<< setw (8)<< QR.s
+		<< setw (8)<< QR.d
+		<< setw (8)<< QR.r1
+		<< setw (8)<< QR.r2
+		<< setw (8)<< QR.u
+		<< setw (8)<< endl;
+}
+
+//------------------------------------------------------------------------------
+void ShowHeader (ostream &s)
+{
+	s << "    SD     EA     DC    SJA        n       s       d      r1      r2       u" << endl;
+	s << "----------------------------------------------------------------------------" << endl;
+}
+
+//------------------------------------------------------------------------------
+void SummaryStats (QTValues &QR)
+{
+	QR.d  = QR.x1 - (QR.s + QR.r1);
+	QR.u  = QR.n - (QR.s + QR.d + QR.r1 + QR.r2);
+	QR.SD = float (2 * QR.d + QR.r1 + QR.r2)/ float (2 * QR.d + 2* QR.s + QR.r1 + QR.r2);
+	QR.EA = float (QR.d + QR.r1 + QR.r2 + QR.u)/ float (QR.n);
+	QR.DC = float (QR.d) / float (QR.n);
+	int tmp = QR.d + QR.s;
+	if (tmp == 0)
+		QR.SJA = -1;
+	else
+		QR.SJA = float (QR.d) / float (QR.d + QR.s);
+}
+
+//------------------------------------------------------------------------------
+void CompareQuartets (NTree &t1, NTree &t2, QTValues &QR)
+{
+	// Clear indices
+	QR.SD = 0.0;
+	QR.EA = 0.0;
+	QR.SJA = 0.0;
+	QR.DC = 0.0;
+	QR.d = 0;
+	QR.s = 0;
+	QR.r1 = 0;
+	QR.r2 = 0;
+	QR.x1 = 0;
+	QR.u = 0;
+	QR.n = n_choose_4 (t1.GetNumLeaves ());
+ 	for (int i = 1; i < t1.GetNumLeaves (); i++)
+	{
+		for (int j = i + 1; j <= t1.GetNumLeaves (); j++)
+		{
+			int SS, RR1, RR2, XX1, XX2;
+
+//            cout << "i=" << i << " (" << t1[i-1]->GetLabel() << ") " << " j=" << j << " (" << t1[j-1]->GetLabel() << ") "<< endl;
+//           cout << "i=" << i << " (" << t2[i-1]->GetLabel() << ") " << " j=" << j << " (" << t2[j-1]->GetLabel() << ") "<< endl;
+
+            ECODE E1 (&t1);
+            ECODE E2 (&t2);
+
+            E1.EncodeTree (i, j);
+            E2.EncodeTree (i, j);
+			RadixSort (E1, E2, SS, RR1, XX1);
+
+            QR.s += SS;
+            QR.r1 += RR1;
+            QR.x1 += XX1;
+
+ 			RadixSort (E2, E1, SS, RR2, XX2);
+            QR.r2 += RR2;
+        }
+ 	}
+
+}
+
+//------------------------------------------------------------------------------
+// Node should be encoded if it is not on the path <j,root>.
+bool TCODE::Visit (NNodePtr p)
+{
+    return (!p->IsMarked());
+}
+
+
+//------------------------------------------------------------------------------
+/*
+	{ Doucette's algorithm for quartets takes each
+	  pair of leaves in the tree and hangs the
+	  remaining subtrees from the path connecting
+	  those two leaves, e.g.:
+
+			  1   2   3   4        1---*---*---4
+               \   \   \   /            |   |
+				\   \   \ /     =       |   |
+				 \   \   *              2   3
+				  \   \ /
+					\   *
+					 \ /
+					  *
+
+	  In triplets, one "leaf" is always the root,
+	  so the path is simply those nodes between the
+	  leaf and the root, e.g.:
+
+			  1   2   3   4        root---*---*---*---4
+			  \   \   \   /               |   |   |
+				\   \   \ /     =          |   |   |
+				 \   \   *                 1   2   3
+				  \   \ /
+					\   *
+					 \ /
+					  *
+					  |
+					  |
+					root
+*/
+void TCODE::EncodeTree (int ni, int nj)
+{
+	i = 1; // Set to 1 so we can use ECODE::Encode
+	j = nj;
+
+	NNodePtr jnode = (NNode *)(*t)[j - 1];
+
+
+    // Mark path to root
+ 	NNodePtr q = jnode;
+    while (q != NULL)
+    {
+        q->SetMarked (true);
+        q = (NNode *)(q->GetAnc());
+    }
+
+    vertex = 1;
+	q = (NNode *)(jnode->GetAnc());
+    while (q)
+    {
+    	if (q->IsMarked())
+        {
+	        EncodeNode ((NNode *)(q->GetChild()));
+        	if (subtree)
+        		vertex++;
+        }
+        q = (NNode *)(q->GetAnc());
+    }
+
+ 	q = jnode;
+    while (q != NULL)
+    {
+        q->SetMarked (false);
+        q = (NNode *)(q->GetAnc());
+    }
+
+}
+
+//------------------------------------------------------------------------------
+void CompareTriplets (NTree &t1, NTree &t2, QTValues &QR)
+{
+	// Clear indices
+	QR.SD = 0.0;
+	QR.EA = 0.0;
+	QR.SJA = 0.0;
+	QR.DC = 0.0;
+	QR.d = 0;
+	QR.s = 0;
+	QR.r1 = 0;
+	QR.r2 = 0;
+	QR.x1 = 0;
+	QR.u = 0;
+	QR.n = n_choose_3 (t1.GetNumLeaves ());
+ 	for (int j = 1; j <= t1.GetNumLeaves (); j++)
+	{
+        int SS, RR1, RR2, XX1, XX2;
+
+//        cout << "j=" << j << endl;
+
+        TCODE E1 (&t1);
+        TCODE E2 (&t2);
+
+        E1.EncodeTree (1, j);
+        E2.EncodeTree (1, j);
+        RadixSort (E1, E2, SS, RR1, XX1);
+
+        QR.s += SS;
+        QR.r1 += RR1;
+        QR.x1 += XX1;
+
+        RadixSort (E2, E1, SS, RR2, XX2);
+        QR.r2 += RR2;
+ 	}
+
+}


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/quartet.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/quartet.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/quartet.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/quartet.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,85 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: quartet.h,v 1.1 2002/03/14 14:11:42 rdmp1c Exp $
+ 
+/**
+ * @file quartet.h
+ *
+ * Compute quartet distance between two trees. Algorithm is based on
+ *   Doucette, C. R. 1985. An efficient algorithm to
+ *	  compute quartet dissimilarity measures. Unpubl.
+ *	  BSc(Hons) dissertation, Dept. Computer Science,
+ *	  Memorial University of Newfoundland.
+ *
+ *
+ */
+
+#ifndef QUARTETH
+#define QUARTETH
+
+#ifdef __BORLANDC__
+	// Undefine __MINMAX_DEFINED so that min and max are correctly defined
+	#ifdef __MINMAX_DEFINED
+		#undef __MINMAX_DEFINED
+	#endif
+    // Ignore "Cannot create precompiled header: code in header" message
+    // generated when compiling string.cc
+    #pragma warn -pch
+#endif
+
+#include <vector>
+
+#include "ntree.h"
+
+
+// Values
+typedef struct  {
+	int u;		// unresolved in T1 and T2
+	int d;      // resolved but different
+	int s;      // resolved and same
+	int r1;     // resolved in T1 but not T2
+	int r2;     // resolved in T2 but not T1
+	int x1;     // total resolved in T1
+	int n;      // maximum no. of quartets/triplets
+	float SD;   // symmetric difference
+	float EA;   // explicitly agree
+	float SJA;  // strict joint assertions
+	float DC;   // do not conflict
+}QTValues;
+
+
+void SummaryStats (QTValues &QR);
+void ShowHeader (ostream &s);
+void ShowQTRecord (ostream &s, QTValues &QR);
+void CompareQuartets (NTree &t1, NTree &t2, QTValues &QR);
+void CompareTriplets (NTree &t1, NTree &t2, QTValues &QR);
+
+
+
+#if __BORLANDC__
+	// Redefine __MINMAX_DEFINED so Windows header files compile
+	#ifndef __MINMAX_DEFINED
+    		#define __MINMAX_DEFINED
+	#endif
+#endif
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/quartet.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/tokeniser.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/tokeniser.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/tokeniser.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,582 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+ 
+// $Id: tokeniser.cpp,v 1.14 2005/09/05 07:44:48 rdmp1c Exp $
+
+#include "tokeniser.h"
+#include <ctype.h>
+#include <string.h>
+
+//------------------------------------------------------------------------------
+#if defined __BORLANDC__ && (__BORLANDC__ < 0x0550)
+Tokeniser::Tokeniser (istream& i ) : in(i)
+#else
+Tokeniser::Tokeniser (std::istream& i ) : in(i)
+#endif
+{
+	curChar 	= '\0';
+	filecol    	= 1L;
+	fileline    	= 1L;
+	filepos     	= 0L;
+	atEOF		= false;
+	atEOL		= false;
+	token		= "";
+	
+#ifdef __MWERKS__
+	putBuffer = '\0';
+#endif
+
+	modifierPHYLIP = false;
+	
+}
+
+Tokeniser::~Tokeniser ()
+{
+}
+
+//------------------------------------------------------------------------------
+bool Tokeniser::IsPunctuation (char ch)
+{
+	char punctuation[23];
+	punctuation[0]  = '(';
+	punctuation[1]  = ')';
+	punctuation[2]  = '[';
+	punctuation[3]  = ']';
+	punctuation[4]  = '{';
+	punctuation[5]  = '}';
+	punctuation[6]  = '/';
+	punctuation[7]  = '\\';
+	punctuation[8]  = ',';
+	punctuation[9]  = ';';
+	punctuation[10] = ':';
+	punctuation[11] = '=';
+	punctuation[12] = '*';
+	punctuation[13] = '\'';
+	punctuation[14] = '"';
+	punctuation[15] = '`';
+	punctuation[16] = '+';
+	punctuation[17] = '-';
+	punctuation[18] = '<';
+	punctuation[19] = '>';
+	punctuation[20] = '!';
+	punctuation[21] = '#';
+	punctuation[22] = '\0';
+
+
+	return (bool)(strchr (punctuation, ch) != NULL);
+}
+
+
+//------------------------------------------------------------------------------
+bool Tokeniser::IsWhiteSpace (char ch)
+{
+	char whitespace[4];
+	whitespace[0]  = ' ';
+	whitespace[1]  = '\t';
+	whitespace[2]  = '\n';
+	whitespace[3]  = '\0';
+
+	return (bool)(strchr (whitespace, ch) != NULL);
+}
+
+//------------------------------------------------------------------------------
+char Tokeniser::GetNextChar ()
+{
+	int ch;
+#ifdef __MWERKS__
+	if (putBuffer != '\0')
+	{
+		ch = putBuffer;
+		putBuffer = '\0';
+	}
+	else
+		ch = in.get();	
+#else
+	ch = in.get();
+#endif
+	int failed = in.bad();
+	if( failed )
+		throw XTokeniser ( "Unknown error reading data file (check to make sure file exists)" );
+
+	//	cout << "[" << (char)ch << "]" << endl;
+
+	if( ch == 13 || ch == 10 )
+	{
+		fileline++;
+		filecol = 1L;
+
+		if( ch == 13 && (int)in.peek() == 10 )
+			ch = in.get();
+
+		atEOL = true;
+	}
+	else if( ch == EOF )
+	{
+		atEOF = true;
+	}
+	else
+	{
+		filecol++;
+		atEOL = false;
+	}
+
+	filepos = in.tellg();
+
+
+
+	if (atEOF )
+		return '\0';
+	else if (atEOL )
+		return '\n';
+	else
+   	return (char)ch;
+}
+
+
+
+//------------------------------------------------------------------------------
+Tokeniser::tokentype Tokeniser::GetNextToken ()
+{
+	tokentype TokenType = EMPTY;
+
+	while ((TokenType == EMPTY) && !in.bad() && !atEOF)
+	{
+		curChar = GetNextChar ();
+
+		if (IsWhiteSpace (curChar))
+		{
+		// skip white space
+		}
+		else
+		{
+			if (IsPunctuation (curChar))
+			{
+ 				// classify punctuation token
+				switch (curChar)
+				{
+					case '[': ParseComment (); break;
+					case '\'':
+						if (ParseString ())
+							TokenType = STRING;
+						else TokenType = BAD;
+						break;
+					case '(':
+						TokenType = LPAR;
+						break;
+					case ')':
+						TokenType = RPAR;
+						break;
+					case '{':
+						TokenType = LPAR;
+						break;
+					case '}':
+						TokenType = RPAR;
+						break;
+					case '!':
+						TokenType = BANG;
+						break;
+					case '#':
+						TokenType = HASH;
+						break;
+					case '=':
+						TokenType = EQUALS;
+						break;
+					case ';':
+						TokenType = SEMICOLON;
+						break;
+					case ',':
+						TokenType = COMMA;
+						break;
+					case '*':
+						TokenType = ASTERIX;
+						break;
+					case ':':
+						TokenType = COLON;
+						break;
+					case '-':
+						TokenType = MINUS;
+						break;
+					case '"':
+						TokenType = DOUBLEQUOTE;
+						break;
+					case '/':
+						TokenType = BACKSLASH;
+						break;
+					default:
+						TokenType = OTHER;
+						break;
+				}
+			}
+			else
+			{
+            	// It's either a number, or a string
+				if (isdigit (curChar))
+				{
+					TokenType = ParseNumber();
+				}
+				else
+                {
+					if (ParseToken ())
+						TokenType = STRING;
+					else TokenType = BAD;
+				}
+			}
+		}
+	}
+
+	if ((TokenType != STRING) && (TokenType != NUMBER))
+	{
+		token = "";
+		token += curChar;
+	}
+	return TokenType;
+}
+
+//------------------------------------------------------------------------------
+bool Tokeniser::ParseString ()
+{
+	bool done = false;
+	 char lastChar = '\0';
+	token = "";
+
+  	while (!done && !atEOF)
+	{
+		curChar = GetNextChar ();
+
+		if (curChar=='\'')
+		{
+			if (lastChar == '\0')		// first time we've encountered a quote
+				lastChar = '\'';
+			else if (lastChar == '\'')	// second single quote
+			{
+				token += curChar;
+				lastChar = '\0';
+			}
+	        }
+	        else
+	        {
+		        	if (lastChar == '\'')
+		          {
+			// end of quoted string indicated by single quote that doesn't
+		                // follow another single quote
+		                done = true;
+			}
+			else
+			{
+				lastChar = '\0';
+				if (curChar == '_')
+					token += ' ';
+				else
+					token += curChar;
+			}
+		}
+	}
+#ifdef __MWERKS__
+	putBuffer = curChar;
+#else
+	in.putback (curChar);
+#endif
+ 	filecol--;
+	return (done);
+}
+
+
+//------------------------------------------------------------------------------
+// Parse a number (integer or real).
+Tokeniser::tokentype Tokeniser::ParseNumber ()
+{
+	enum {
+		start		= 0x0001, // 0
+		sign		= 0x0002, // 1
+		digit		= 0x0004, // 2
+		fraction	= 0x0008, // 3
+		expsymbol	= 0x0010, // 4
+		expsign		= 0x0020, // 5
+		exponent 	= 0x0040, // 6
+		bad			= 0x0080,
+		done		= 0x0100
+    } state;
+
+    tokentype result = BAD;
+
+	token = "";
+	state = start;
+
+	while (!IsWhiteSpace (curChar)
+		&& !(IsPunctuation (curChar) && (curChar != '-'))
+		&& (state != bad)
+		&& (state != done))
+	{
+		if (isdigit (curChar))
+		{
+			switch (state)
+			{
+				case start:
+				case sign:
+					state = digit;
+					break;
+				case expsymbol:
+				case expsign:
+					state = exponent;
+					break;
+				default:
+					break;
+			}
+		}
+		else if ((curChar == '-') || (curChar == '+'))
+		{
+			switch (state)
+			{
+				case start:
+					state = sign;		// sign of number
+					break;
+				case digit:
+					state = done;		// minus sign is punctuation, such as 6-10
+					break;
+				case expsymbol:
+					state = expsign;	// sign of exponent
+					break;
+				default:
+					state = bad;		// syntax error
+					break;
+			}
+		}
+		else if ((curChar == '.') && (state == digit))
+        			state = fraction;
+		else if (((curChar == 'E') || (curChar == 'e')) && (state & (digit | fraction)))
+			state = expsymbol;
+		else
+			state = bad;
+
+		if ((state != bad) && (state != done))
+		{
+			token += curChar;
+			curChar = GetNextChar ();
+		}
+	}
+
+	int isNumber =  state & (digit | fraction | exponent | done);
+	if (isNumber)
+	{
+		// We have a number
+		result = NUMBER;
+
+		if (IsPunctuation (curChar))
+		{
+#ifdef __MWERKS__
+			putBuffer = curChar;
+#else
+			in.putback (curChar);
+#endif
+			if (!atEOL)
+				filecol--;
+		}
+	}
+	else
+    {
+		// Not a number, but a string that starts with numbers, such as "00BW0762.1"
+			do {
+				if (curChar == '_')
+					token += ' ';
+				else
+					token += curChar;
+            	curChar = GetNextChar ();
+ 			} while (isalnum (curChar) || (curChar == '_') || (curChar == '.'));
+			if (IsPunctuation (curChar))
+			{
+#ifdef __MWERKS__
+				putBuffer = curChar;
+#else
+				in.putback (curChar);
+#endif
+				if (!atEOL)
+					filecol--;
+			}
+
+			result = STRING; //classify the token
+
+    }
+
+
+	return  result;
+}
+
+
+
+
+
+//------------------------------------------------------------------------------
+bool Tokeniser::ParseToken ()
+{
+	token = "";
+	while ((curChar != '\0') && !IsWhiteSpace(curChar) 
+		&& !(IsPunctuation (curChar) && (curChar != '-')))
+	{
+		if (curChar == '_')
+			token += ' ';
+		else
+			token += curChar;
+		curChar = GetNextChar ();
+	}
+	if (!atEOL)
+	{
+#ifdef __MWERKS__
+		putBuffer = curChar;
+#else
+		in.putback (curChar);
+#endif
+		filecol--;
+	}
+	return true;
+
+}
+
+//------------------------------------------------------------------------------
+// Parse a NEXUS-style comment
+bool Tokeniser::ParseComment ()
+{
+	bool echo = false;
+	comment = "";
+
+	curChar = GetNextChar ();
+	echo = (curChar == '!');
+	if (echo)
+		curChar =  GetNextChar ();
+
+	while ((curChar != '\0') && (curChar != ']'))
+	{
+		comment += curChar;
+		curChar = GetNextChar();
+	}
+
+	if (echo)
+#if defined __BORLANDC__ && (__BORLANDC__ < 0x0550)
+		cout << comment;
+#else
+		std::cout << comment;
+#endif
+
+	return true;
+}
+
+//------------------------------------------------------------------------------
+bool Tokeniser::IsPHYLIPEndOfToken (char ch)
+{
+	char end[5];
+	end[0]  = ':';
+	end[1]  = ',';
+	end[2]  = ')';
+	end[3]  = '\n';
+	end[4]  = '\r';
+
+	return (bool)(strchr (end, ch) != NULL);
+}
+
+
+//------------------------------------------------------------------------------
+// PHYLIP will take all sorts of rubbish in the taxon name, so just grab a string
+Tokeniser::tokentype Tokeniser::GetNextPHYLIPToken ()
+{
+    tokentype TokenType = BAD;
+
+	token = "";
+	
+	
+	do {
+		curChar = in.get ();
+        if (curChar == '\n')
+        {
+        	if ((int)in.peek() == 10 )
+				curChar = in.get();
+        	fileline++;
+        	filecol = 1L;
+        }
+        else if (curChar == '\r')
+        {
+       		fileline++;
+        		filecol = 1L;
+        }
+        else
+        	filecol++;
+  	} while ( in.good () && (( curChar == '\n') || (curChar == '\r') || (curChar == ' ') || (curChar == '\t')));
+	if (curChar == '(')
+	{
+		TokenType = LPAR;
+	}
+	else
+	{
+		if (curChar == '\'')
+		{
+			ParseString ();
+		}
+		else
+		{
+			token += curChar;
+			curChar = in.get();
+			while ( ( (curChar) && (curChar != ',') && (curChar != ')')
+            	&& (curChar != '\n') && (curChar != '\r') && (curChar != ':')))
+			{
+				token += curChar;
+				curChar = in.get();
+				filecol++;
+			}
+			in.putback (curChar);
+		}
+		TokenType = STRING;
+	}
+	return TokenType;
+}
+
+/*
+//------------------------------------------------------------------------------
+char Tokeniser::PeekNextChar ()
+{
+	int ch;
+	ch = in.peek();
+	int failed = in.bad();
+ 	if( failed )
+		throw XTokeniser ( "Unknown error reading data file (check to make sure file exists)" );
+
+	if( ch == 13 || ch == 10 )
+	{
+		atEOL = true;
+	}
+	else if( ch == EOF )
+    {
+		atEOF = true;
+    }
+	else
+    {
+		atEOL = false;
+	}
+   if (atEOF )
+      return '\0';
+   else if (atEOL )
+      return '\n';
+   else
+   	return (char)ch;
+}
+*/
+
+
+
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/tokeniser.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/tokeniser.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/tokeniser.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/tokeniser.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,169 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+ 
+ // $Id: tokeniser.h,v 1.14 2003/09/17 13:05:57 rdmp1c Exp $
+ 
+#ifndef TOKENISER_H
+#define TOKENISER_H
+
+#include <iostream>
+#include <fstream>
+
+
+#ifdef __BORLANDC__
+	// Undefine __MINMAX_DEFINED so that min and max are correctly defined
+	#ifdef __MINMAX_DEFINED
+		#undef __MINMAX_DEFINED
+	#endif
+    // Ignore "Cannot create precompiled header: code in header" message
+    // generated when compiling string.cc
+    #pragma warn -pch
+#endif
+
+#include <string>
+
+
+class XTokeniser
+{
+public:
+	std::string msg;
+#if (defined( __MWERKS__ ) || (defined __BORLANDC__  && (__BORLANDC__ < 0x0550)))
+	long       pos;
+#else
+	std::streampos  pos;
+#endif
+	long line;
+	long col;
+
+#if (defined( __MWERKS__ ) || (defined __BORLANDC__  && (__BORLANDC__ < 0x0550)))
+	XTokeniser( std::string s, long fp = 0, long fl = 0L, long fc = 0L )
+#else
+	XTokeniser( std::string s, std::streampos fp = 0, long fl = 0L, long fc = 0L )
+#endif
+	{
+		msg = s;
+		pos = fp;
+		line = fl;
+		col = fc;
+	};
+};
+
+
+class Tokeniser
+{
+#if defined __BORLANDC__ && (__BORLANDC__ < 0x0550)
+	istream&		in;
+#else
+	std::istream&		in;
+#endif
+    char 			curChar;
+	std::string		token;
+	std::string		comment;
+#if (defined( __MWERKS__ ) || (defined __BORLANDC__  && (__BORLANDC__ < 0x0550)))
+	long       filepos;
+#else
+	std::streampos  filepos;
+#endif
+
+	long       fileline;
+	long       filecol;
+	bool       atEOF;
+	bool       atEOL;
+	
+#ifdef __MWERKS__
+	char	putBuffer;
+#endif
+
+	bool modifierPHYLIP;
+
+public:
+	enum tokentype
+	{
+		EMPTY,
+		STRING,			// a text token
+		NUMBER,			// a real or integer number
+		OTHER,
+		BAD,
+		SPACE,			//
+		LPAR,			// (
+		RPAR,			// )
+		COMMA,			// ,
+		SEMICOLON,		// ;
+		EQUALS,			// =
+		MINUS,			// -
+		ASTERIX,			// *
+		BACKSLASH,		// /
+		LCURLY,			// {
+		RCURLY,			// }
+		DOUBLEQUOTE,		// "
+		BANG,			// !
+		HASH,			// #
+		COLON			// :
+	};
+
+	Tokeniser ();
+#if defined __BORLANDC__ && (__BORLANDC__ < 0x0550)
+	Tokeniser(istream& i);
+#else
+	Tokeniser(std::istream& i);
+#endif    
+	virtual ~Tokeniser();
+	bool       	AtEOF() { return atEOF; };
+	bool      	AtEOL() { return atEOL; };
+	long       	GetFileColumn() { return filecol; };
+#if (defined( __MWERKS__ ) || (defined __BORLANDC__  && (__BORLANDC__ < 0x0550)))
+	long     	GetFilePosition() { return filepos; };
+#else
+	std::streampos  GetFilePosition() { return filepos; };
+#endif
+	long       	GetFileLine() { return fileline; };
+	char 	  	GetNextChar ();
+	tokentype 	GetNextToken ();
+	tokentype	GetNextPHYLIPToken ();
+	std::string GetToken () { return token; };
+	bool 		IsPHYLIPEndOfToken (char ch);
+	virtual bool IsPunctuation (char ch);
+	virtual bool IsWhiteSpace (char ch);
+	bool 		ParseComment ();
+	tokentype	ParseNumber ();
+	bool 		ParseString ();
+	bool		ParseToken ();
+		
+	// don't use these functions as they will bugger up keeping track of
+	// file positions.
+	//	char PeekNextChar ();
+	//    void PutBack (char ch) { in.putback (ch); };
+#if (__BORLANDC__ < 0x0550)
+	bool TokenEquals (std::string s) { return s.compare (token); };
+#else
+	bool TokenEquals (std::string s) { return (token == s); };
+#endif
+};
+
+#if __BORLANDC__ 
+	// Redefine __MINMAX_DEFINED so Windows header files compile
+	#ifndef __MINMAX_DEFINED
+    		#define __MINMAX_DEFINED
+	#endif
+#endif
+
+#endif
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/tokeniser.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treedrawer.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/treedrawer.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/treedrawer.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,753 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+// $Id: treedrawer.cpp,v 1.18 2005/09/06 13:00:14 rdmp1c Exp $
+
+#include <math.h>
+#include <stdio.h>
+
+#include "treedrawer.h"
+
+#ifndef M_PI
+	#define M_PI		3.14159265358979323846	// define pi
+#endif
+
+#define DEGREES_TO_RADIANS(d) ((d / 180.0) * M_PI)
+#define RADIANS_TO_DEGREES(r) ((180.0 * r) / M_PI)
+
+//------------------------------------------------------------------------------
+TreeDrawer::TreeDrawer (Tree *tree)
+{
+	t = tree;
+    rooted = true;
+    showInternalLabels = true;
+    showLeafLabels = true;
+    left = 0.0;
+    top = 0.0;
+    width = 400.0;
+    height = 400.0;
+    leafCount = 0;
+    NodeIterator <Node> n (t->GetRoot());
+    Node *q = n.begin();
+    while (q)
+    {
+    	if (q->IsLeaf ())
+        {
+        	point p;
+        	node_coordinates[q] = p;
+        }
+        q = n.next();
+    }
+}
+
+//------------------------------------------------------------------------------
+void TreeDrawer::CalcLeaf (Node *p)
+{
+	node_coordinates[p].y = top + (double)leafCount * leafGap;
+    lastY = node_coordinates[p].y;
+    leafCount++;
+
+    // Cladogram
+	node_coordinates[p].x = left + width;
+}
+
+//------------------------------------------------------------------------------
+void TreeDrawer::CalcInternal (Node *p)
+{
+	// Cladogram
+	node_coordinates[p].x = left + (double)nodeGap * (double)(t->GetNumLeaves() - p->GetWeight());
+
+    // Slant
+    node_coordinates[p].y = lastY - (((double)(p->GetWeight() - 1) * leafGap) / 2.0);
+}
+
+
+//------------------------------------------------------------------------------
+void TreeDrawer::CalcCoordinates ()
+{
+	double l = t->GetNumLeaves();
+    leafGap = height / (l - 1.0);
+	if (rooted)
+    	nodeGap = width / l;
+    else
+    	nodeGap = width / (l - 1.0);
+	leafCount = 0;
+
+    if (rooted)
+    {
+    	// Allow for edge below root
+    	left += nodeGap;
+        width -= nodeGap;
+    }
+
+    NodeIterator <Node> n (t->GetRoot());
+    Node *q = n.begin();
+    while (q)
+    {
+    	if (q->IsLeaf ())
+        {
+        	CalcLeaf (q);
+        }
+        else
+        {
+			CalcInternal (q);
+        }
+
+        q = n.next();
+    }
+
+}
+
+//------------------------------------------------------------------------------
+void TreeDrawer::DrawLeaf (Node *p)
+{
+	// cladogram (slant)
+    NodePtr anc = p->GetAnc();
+    if (anc)
+    {
+    	DrawLine (node_coordinates[p], node_coordinates[anc]);
+    }
+    DrawLeafLabel (p);
+}
+
+//------------------------------------------------------------------------------
+void TreeDrawer::DrawInternal (Node *p)
+{
+	// cladogram (slant)
+    NodePtr anc = p->GetAnc();
+    if (anc)
+    {
+    	DrawLine (node_coordinates[p], node_coordinates[anc]);
+    }
+    DrawInternalLabel (p);
+}
+
+
+//------------------------------------------------------------------------------
+void TreeDrawer::DrawLeafLabel (Node *p)
+{
+	if (showLeafLabels && (p->GetLabel() != ""))
+    {
+    	point pt = node_coordinates[p];
+
+#if USE_PORT
+		pt.x += font.GetSize()/2;
+       	pt.y += font.GetSize()/3;
+#endif
+		DrawText (pt, p->GetLabel());
+	}
+}
+
+//------------------------------------------------------------------------------
+void TreeDrawer::DrawInternalLabel (Node *p)
+{
+	if (showInternalLabels && (p->GetLabel() != ""))
+		DrawText (node_coordinates[p], p->GetLabel());
+}
+
+
+
+//------------------------------------------------------------------------------
+void TreeDrawer::Draw ()
+{
+    NodeIterator <Node> n (t->GetRoot());
+    Node *q = n.begin();
+    while (q)
+    {
+    	if (q->IsLeaf ())
+        {
+        	DrawLeaf (q);
+        }
+        else
+        {
+			DrawInternal (q);
+        }
+
+        q = n.next();
+    }
+    if (rooted)
+    {
+    	DrawRoot ();
+    }
+}
+
+//------------------------------------------------------------------------------
+void TreeDrawer::DrawRoot ()
+{
+    	// Draw edge below root
+    	point pt2 = node_coordinates[t->GetRoot()];
+        point pt1 = pt2;
+        pt1.x -= nodeGap;
+        DrawLine (pt1, pt2);
+}
+
+//------------------------------------------------------------------------------
+void TreeDrawer::DrawLine (point pt1, point pt2)
+{
+#if USE_WXWINDOWS
+	dc->DrawLine ((int)pt1.x, (int)pt1.y, (int)pt2.x, (int)pt2.y);
+#endif
+
+#if USE_VC2
+	Port.DrawLine ((int)pt1.x, (int)pt1.y, (int)pt2.x, (int)pt2.y);
+#endif
+
+#if USE_PORT
+	Port->DrawLine ((int)pt1.x, (int)pt1.y, (int)pt2.x, (int)pt2.y);
+#endif
+
+}
+
+//------------------------------------------------------------------------------
+void TreeDrawer::DrawText (point pt, std::string s)
+{
+#if wxUSE_UNICODE
+	std::wstring formatedString = L"";
+#else
+	std::string formatedString = "";
+#endif
+	
+	int i = 0;
+	while (i < s.size())
+	{
+		if (s[i] == '_')
+			formatedString += ' ';
+		else
+			formatedString += s[i];
+		i++;
+	}
+
+#if USE_VC2
+	pt.x += Port.GetMaxCharWidth()/2;
+	pt.y += Port.GetFontHeight()/2;
+	Port.DrawText (pt.x, pt.y, (char *)formatedString.c_str());
+#endif		
+
+#if USE_WXWINDOWS
+	// We add a new level of scope to avoid a "Declaration of 's' shadows a parameter"
+	// error in gcc, which is probably a gcc bug
+	{
+		wxCoord w, h, descent;
+		wxString s (formatedString.c_str(), wxSTRING_MAXLEN);
+		pt.x += dc->GetCharWidth();
+		pt.y -= dc->GetCharHeight()/2;
+		dc->DrawText (s, (int)pt.x, (int)pt.y);
+	}
+#endif		
+
+
+#if USE_PORT
+	Port->DrawText (pt.x, pt.y, (char *)formatedString.c_str());
+#endif
+}
+
+
+//------------------------------------------------------------------------------
+void TreeDrawer::SetPenWidth (int width)
+{
+#if USE_VC2
+	::PenSize (width, width);
+#endif
+
+#if USE_PORT
+#endif
+}
+
+
+//------------------------------------------------------------------------------
+void RectangleTreeDrawer::CalcCoordinates ()
+{
+	t->MakeNodeList();
+    maxDepth = 0;
+    // Clear internal node depths
+    for (int i = t->GetNumLeaves(); i < t->GetNumNodes(); i++)
+    {
+    	(*t)[i]->SetDepth(0);
+    }
+    for (int i = 0; i < t->GetNumLeaves();  i++)
+    {
+    	NodePtr p = (*t)[i]->GetAnc();
+        int count = 1;
+        while (p)
+        {
+        	if (count > p->GetDepth())
+            {
+            	p->SetDepth(count);
+                if (count > maxDepth)
+                	maxDepth = count;
+            }
+            count++;
+            p = p->GetAnc();
+        }
+    }
+
+ 	double l = t->GetNumLeaves();
+    leafGap = height / (l - 1.0);
+	l = maxDepth + 1.0;
+	if (rooted)
+    	nodeGap = width / l;
+    else
+    	nodeGap = width / (l - 1.0);
+	leafCount = 0;
+
+    if (rooted)
+    {
+    	// Allow for edge below root
+    	left += nodeGap;
+        width -= nodeGap;
+    }
+
+    NodeIterator <Node> n (t->GetRoot());
+    Node *q = n.begin();
+    while (q)
+    {
+    	if (q->IsLeaf ())
+        {
+        	CalcLeaf (q);
+        }
+        else
+        {
+			CalcInternal (q);
+        }
+
+        q = n.next();
+    }
+
+}
+
+
+//------------------------------------------------------------------------------
+void RectangleTreeDrawer::CalcInternal (Node *p)
+{
+	// Cladogram
+	node_coordinates[p].x = left +  (double)nodeGap * (double)(maxDepth - p->GetDepth());
+
+    // Rectangular style
+    node_coordinates[p].y =
+	    node_coordinates[p->GetChild()].y + (node_coordinates[p->GetChild()->GetRightMostSibling()].y - node_coordinates[p->GetChild()].y)/2.0;
+}
+
+//------------------------------------------------------------------------------
+void RectangleTreeDrawer::DrawLeaf (Node *p)
+{
+    NodePtr anc = p->GetAnc();
+    if (anc)
+    {
+    	point pt;
+        pt.x = node_coordinates[anc].x;
+        pt.y = node_coordinates[p].y;
+    	DrawLine (node_coordinates[p], pt);
+    }
+    DrawLeafLabel (p);
+}
+
+//------------------------------------------------------------------------------
+void RectangleTreeDrawer::DrawInternal (Node *p)
+{
+	// cladogram (slant)
+    NodePtr anc = p->GetAnc();
+    if (anc)
+    {
+   		point pt;
+        pt.x = node_coordinates[anc].x;
+        pt.y = node_coordinates[p].y;
+    	DrawLine (node_coordinates[p], pt);
+    }
+
+    point pt1, pt2;
+    pt1.x = node_coordinates[p].x;
+    pt1.y = node_coordinates[p->GetChild()].y;
+    pt2.x = node_coordinates[p].x;
+    pt2.y = node_coordinates[p->GetChild()->GetRightMostSibling()].y;
+    DrawLine (pt1, pt2);
+
+    DrawInternalLabel (p);
+}
+
+
+
+//------------------------------------------------------------------------------
+void PhylogramDrawer::CalcCoordinates ()
+{
+	// 1. Get path lengths
+	mMaxPathLength = 0.0;
+	t->GetRoot()->SetPathLength (t->GetRoot()->GetEdgeLength()); // modify for rooted?
+
+
+    // duh! this needs to be preorder!!!!!!!!!
+
+    PreorderIterator <Node> n (t->GetRoot());
+    Node *q = n.begin();
+    while (q)
+    {
+       	double d = q->GetEdgeLength();
+        if (d < 0.00001)
+        	d = 0.0;
+        if (q != t->GetRoot())
+	    	q->SetPathLength (q->GetAnc()->GetPathLength() + d);
+		if (q->GetPathLength() > mMaxPathLength)
+			mMaxPathLength = q->GetPathLength();
+        q = n.next();
+    }
+
+    // Is the tree ultrametric? (should really be a method of the tree class...)
+    mUltrametric = true;
+    NodeIterator <Node> u (t->GetRoot());
+    q = u.begin();
+    while (q && mUltrametric)
+    {
+        if (q->IsLeaf())
+        {
+            double d = q->GetPathLength() - mMaxPathLength;
+#if (__GNUC__ == 3 && __GNUC_MINOR__ > 3) || __GNUC__ > 3	    
+		// fabs is no longer in the std namespace in gcc 3.4 or greater (sigh)
+            mUltrametric = (fabs(d) <= 0.0001);
+#else
+            mUltrametric = (std::fabs(d) <= 0.0001);
+#endif	    
+//            cout << mMaxPathLength << ":" << q->GetPathLength() << " " << d << endl;
+        }
+        q = u.next();
+    }
+            
+
+    // Allow for scale bar
+
+#if USE_VC2
+	scalebar_space = Port.GetFontHeight() * 2;
+#endif		
+
+#if USE_WXWINDOWS
+	scalebar_space = dc->GetCharHeight() * 2;
+#endif		
+
+
+#if USE_PORT
+	scalebar_space = font.GetSize() * 2;
+#endif
+
+	height -= scalebar_space;
+
+ 	double l = t->GetNumLeaves();
+    leafGap = height / (l - 1.0);
+	leafCount = 0;
+
+    NodeIterator <Node> po (t->GetRoot());
+    q = po.begin();
+    while (q)
+    {
+    	if (q->IsLeaf ())
+        {
+        	CalcLeaf (q);
+        }
+        else
+        {
+			CalcInternal (q);
+        }
+
+        q = po.next();
+    }
+
+}
+
+
+//------------------------------------------------------------------------------
+void PhylogramDrawer::CalcInternal (Node *p)
+{
+    node_coordinates[p].x = left +  (p->GetPathLength() / mMaxPathLength) * width;
+
+    // Rectangular style
+    node_coordinates[p].y =
+    node_coordinates[p->GetChild()].y + (node_coordinates[p->GetChild()->GetRightMostSibling()].y - node_coordinates[p->GetChild()].y)/2.0;
+}
+
+//------------------------------------------------------------------------------
+void PhylogramDrawer::CalcLeaf (Node *p)
+{
+    node_coordinates[p].x = left +  (p->GetPathLength() / mMaxPathLength) * width;
+    node_coordinates[p].y = top + (double)leafCount * leafGap;
+    lastY = node_coordinates[p].y;
+    leafCount++;
+
+}
+
+//------------------------------------------------------------------------------
+void PhylogramDrawer::Draw ()
+{
+    TreeDrawer::Draw ();
+    DrawScaleBar ();
+}
+
+//------------------------------------------------------------------------------
+void PhylogramDrawer::DrawScaleBar ()
+{
+    point pt1, pt2;
+    // Draw scale bar using "log" scale
+    float m = log10 (mMaxPathLength);
+    int i = (int) m;
+    if (!mUltrametric)
+        i -= 1;
+    float bar = pow (10.0, i);
+    float scalebar = (bar / mMaxPathLength) * (float)width;
+    //int scalebar = (int)((bar / mMaxPathLength) * width);
+
+
+    // Pen to draw scale line
+#if USE_WXWINDOWS
+    wxPen scale_pen (*wxBLACK, 1, wxSOLID);
+    dc->SetPen (scale_pen);
+#endif
+
+    
+    if (mUltrametric)
+    {
+      // Draw scale bar that is the length of the tree
+      pt1.x = left;
+      pt1.y = top + height + scalebar_space;
+      pt2.x = left + width;
+      pt2.y = pt1.y;
+
+      // Draw
+      DrawLine (pt1, pt2);
+
+
+      // Draw ticks and labels
+     int num_ticks = (int)(mMaxPathLength/bar);
+     int tick_height = scalebar_space/3;
+     for (int k = 0; k <= num_ticks; k++)
+     {
+         pt1.x = left + width - scalebar * (float)k;
+         pt1.y = top + height + scalebar_space;
+         pt2.x = pt1.x;
+         pt2.y = pt1.y - tick_height;
+         DrawLine (pt1, pt2);
+
+         // Label
+#if wxUSE_UNICODE
+        wchar_t buf[16];
+        if (i >= 0)
+        {
+            swprintf (buf, wcslen(buf), L"%d", int (bar * k));
+        }
+        else
+        {
+            int j = abs (i);
+            swprintf (buf, wcslen(buf), L"%.*f", j, bar * (float)k);
+        }
+#else
+        char buf[16];
+        if (i >= 0)
+        {
+            sprintf (buf, "%d", int (bar * k));
+        }
+        else
+        {
+            int j = abs (i);
+            sprintf (buf, "%.*f", j, bar * (float)k);
+        }
+#endif
+
+#if USE_WXWINDOWS
+        wxCoord w, h;
+        wxString s (buf, wxSTRING_MAXLEN);
+        dc->GetTextExtent (s, &w, &h);
+        int x = (int)pt2.x;
+        int y = (int)pt2.y;
+        x -= w/2;
+        y -= h;
+        dc->DrawText (s, x, y);
+#else
+        std::string s = buf;
+        DrawText (pt2, buf);
+
+#endif
+     }
+    }
+    else
+    {
+        // Simple bar to indicate scale
+        pt1.x = left;
+        pt1.y = top + height + scalebar_space/2;
+        pt2 = pt1;
+        pt2.x += scalebar;
+
+        // Draw
+        DrawLine (pt1, pt2);
+
+        // Text to the right a la PAUP*
+        char buf[64];
+        if (i >= 0)
+        {
+            sprintf (buf, "%d", int (bar));
+        }
+        else
+        {
+            int j = abs (i);
+            sprintf (buf, "%.*f", j, bar);
+        }
+        std::string s = buf;
+        DrawText (pt2, buf);
+    }
+}
+
+
+//------------------------------------------------------------------------------
+void PhylogramDrawer::DrawRoot ()
+{
+    // Draw edge below root
+    point pt2 = node_coordinates[t->GetRoot()];
+    point pt1 = pt2;
+    pt1.x -= (t->GetRoot()->GetPathLength() / mMaxPathLength) * width;
+    DrawLine (pt1, pt2);
+}
+
+
+
+
+//------------------------------------------------------------------------------
+void CircleTreeDrawer::CalcLeaf (Node *p)
+{
+    node_angle[p] = leaf_angle * (double)leafCount;
+    node_radius[p] = leaf_radius;
+    leafCount++;
+
+    node_coordinates[p].x = node_radius[p] * cos (node_angle[p]);
+    node_coordinates[p].y = node_radius[p] * sin (node_angle[p]);
+}
+
+//------------------------------------------------------------------------------
+void CircleTreeDrawer::CalcInternal (Node *p)
+{
+    double left_angle = node_angle[p->GetChild()];
+    double right_angle = node_angle[p->GetChild()->GetRightMostSibling()];
+    node_angle[p] = left_angle + (right_angle - left_angle)/2.0;
+    node_radius[p] = nodeGap * (double)(maxDepth - p->GetDepth());
+
+    node_coordinates[p].x = node_radius[p] * cos (node_angle[p]);
+    node_coordinates[p].y = node_radius[p] * sin (node_angle[p]);
+
+    NodePtr q = p->GetChild();
+    while (q)
+    {
+    	point pt;
+        node_backarc[q] = pt;
+    	node_backarc[q].x = node_radius[p] * cos (node_angle[q]);
+        node_backarc[q].y = node_radius[p] * sin (node_angle[q]);
+        q = q->GetSibling();
+    }
+}
+
+
+//------------------------------------------------------------------------------
+void CircleTreeDrawer::CalcCoordinates ()
+{
+    t->MakeNodeList();
+    maxDepth = 0;
+    // Clear internal node depths
+    for (int i = t->GetNumLeaves(); i < t->GetNumNodes(); i++)
+    {
+    	(*t)[i]->SetDepth(0);
+    }
+    for (int i = 0; i < t->GetNumLeaves();  i++)
+    {
+    	NodePtr p = (*t)[i]->GetAnc();
+        int count = 1;
+        while (p)
+        {
+        	if (count > p->GetDepth())
+            {
+            	p->SetDepth(count);
+                if (count > maxDepth)
+                	maxDepth = count;
+            }
+            count++;
+            p = p->GetAnc();
+        }
+    }
+
+    leaf_angle = 2 * M_PI / t->GetNumLeaves();
+    left = top = 0.0;
+    width = height = 400.0;
+    leaf_radius = width / 2.0;
+    leafCount = 0;
+    nodeGap = leaf_radius / double(maxDepth);
+    origin.x = 0.0;
+    origin.y = 0.0;
+
+    NodeIterator <Node> n (t->GetRoot());
+    Node *q = n.begin();
+    while (q)
+    {
+    	if (q->IsLeaf ())
+        {
+        	CalcLeaf (q);
+        }
+        else
+        {
+			CalcInternal (q);
+        }
+
+        q = n.next();
+    }
+
+    // Translate
+    origin.x = left + (width/2.0);
+    origin.y = top + (height/2.0);
+    q = n.begin();
+    while (q)
+    {
+    	node_coordinates[q].x += origin.x;
+        node_coordinates[q].y += origin.y;
+    	node_backarc[q].x += origin.x;
+        node_backarc[q].y += origin.y;
+        q = n.next();
+    }
+
+
+}
+
+//------------------------------------------------------------------------------
+void CircleTreeDrawer::DrawLeaf (Node *p)
+{
+	DrawLine (node_coordinates[p], node_backarc[p]);
+    DrawLeafLabel (p);
+}
+
+//------------------------------------------------------------------------------
+void CircleTreeDrawer::DrawInternal (Node *p)
+{
+    NodePtr anc = p->GetAnc();
+    if (anc)
+    {
+    	DrawLine (node_coordinates[p], node_backarc[p]);
+        double left_angle = node_angle[p->GetChild()];
+    	double right_angle = node_angle[p->GetChild()->GetRightMostSibling()];
+#if USE_PORT
+        GPoint pt;
+        pt.SetX((int)origin.x);
+        pt.SetY((int)origin.y);
+        Port->DrawArc (pt, node_radius[p], RADIANS_TO_DEGREES(left_angle), RADIANS_TO_DEGREES(right_angle));
+#endif
+    }
+    DrawInternalLabel (p);
+}
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treedrawer.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treedrawer.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/treedrawer.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/treedrawer.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,284 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+// $Id: treedrawer.h,v 1.8 2004/03/16 07:07:40 rdmp1c Exp $
+
+ /**
+ * @file treedrawer.h
+ *
+ * Classes to draw trees to a graphics device
+ *
+ */
+
+#ifndef TREEDRAWERH
+#define TREEDRAWERH
+
+#ifdef __BORLANDC__
+	// Undefine __MINMAX_DEFINED so that min and max are correctly defined
+	#ifdef __MINMAX_DEFINED
+		#undef __MINMAX_DEFINED
+	#endif
+    // Ignore "Cannot create precompiled header: code in header" message
+    // generated when compiling string.cc
+    #pragma warn -pch
+#endif
+
+#include <map>
+
+#include "TreeLib.h"
+#include "nodeiterator.h"
+#include "gport.h"
+
+#if USE_VC2
+	#define USE_PORT 0
+	#include "VPort.h"
+#elif USE_WXWINDOWS
+	#define USE_PORT 0
+   	#include "wx/wx.h"
+#else
+	#define USE_PORT 1
+#endif
+
+/**
+ * @class point
+ * An x, y point in real number coodinates
+ */
+class point
+{
+public:
+    double x;
+    double y;
+    point () { x = y = 0.0; };
+};
+
+/**
+ * @class TreeDrawer
+ * Base class for tree drawer object
+ */
+class TreeDrawer
+{
+public:
+    TreeDrawer (Tree *tree);
+    virtual ~TreeDrawer () {};
+    /**
+     * Calculate coordinates for internal nodes. For a slanted cladogram
+     * internal node are spaced along the x-axis by their "weight", and along the
+     * y-axis they are placed in the middle of their descendant leaves
+     * @param p the internal node being visited
+     */
+    virtual void CalcInternal (Node *p);
+    /**
+     * Calculate coordinates for leaf nodes. For a slanted cladogram
+     * all leaves have the same coordinate on the x-aixs, and are spaced
+     * evenly along the y-axis
+     * @param p the leaf being visited
+     */
+    virtual void CalcLeaf (Node *p);
+ 	/**
+	 * Calculate coordinates for tree drawing. Tree is traversed in post order.
+	 */
+    virtual void CalcCoordinates ();
+ 	/**
+	 * Draw tree by traversing it in post-order and calling DrawLeaf and
+     * DrawInternal.
+     */
+    virtual void Draw();
+ 	/**
+	 * Draw a line connecting the leaf with its immediate ancestor.
+     */
+    virtual void DrawLeaf (Node *p);
+ 	/**
+	 * Draw leaf label (if showLeafLabels is true)
+     */
+	virtual void DrawLeafLabel (Node *p);
+ 	/**
+	 * Draw a line connecting internal node with its immediate ancestor.
+     */
+    virtual void DrawInternal (Node *p);
+ 	/**
+	 * Draw intenral label (if it exists and if showInternalLabels is true)
+     */
+	virtual void DrawInternalLabel (Node *p);
+    /**
+     * Draw a line to the graphics device connecting the two points pt1 and pt2.
+     * @param pt1 start of the line
+     * @param pt2 end of the line
+     */
+    virtual void DrawLine (point pt1, point pt2);
+    /**
+     * Draw a line representing the root of the tree.
+     */
+    virtual void DrawRoot ();
+    /**
+     * Draw a text to the graphics device.
+     * @param pt posuition for text
+     * @param s text to draw
+     */
+    virtual void DrawText (point pt, std::string s);
+
+    virtual void SetRect (int l, int t, int right, int bottom)
+    {
+    	left = (double) l;
+        top = (double) t;
+        width = (double)(right - l);
+        height = (double)(bottom - t);
+    }
+    
+#if USE_WXWINDOWS
+	virtual void SetDC (wxDC *wxdc) { dc = wxdc; };
+#endif
+
+#if USE_PORT
+    virtual void SetFont (GBaseFont f) { font = f; };
+#endif
+    /**
+     * Toggle drawing of tree as rooted. For a cladogram this toggles the display
+     * of a short branch below the root node.
+     */
+    virtual void SetDrawRooted (bool on = true) { rooted = on; };
+    /**
+     * Toggle drawing of internal labels.
+     */
+    virtual void SetDrawInternalLabels (bool on = true) { showInternalLabels = on; };
+    /**
+     * Toggle drawing of leaf labels.
+     */
+    virtual void SetDrawLeafLabels (bool on = true) { showLeafLabels = on; };
+    
+    virtual void SetPenWidth (int width);
+
+protected:
+    Tree * t;
+    std::map<Node *, point, std::less<Node *> > node_coordinates;
+    double left, top, width, height;
+    double leafGap, lastY, nodeGap;
+    int leafCount;
+    bool rooted;
+    bool showInternalLabels;
+    bool showLeafLabels;
+
+#if USE_PORT
+    GBaseFont font;
+#endif
+
+#if USE_WXWINDOWS
+    wxDC	*dc;
+#endif
+
+};
+
+/**
+ * @class RectangleTreeDrawer
+ * Draw rectangular trees
+ */
+class RectangleTreeDrawer : public TreeDrawer
+{
+public:
+    RectangleTreeDrawer (Tree *tree) : TreeDrawer (tree) {};
+    virtual ~RectangleTreeDrawer () {};
+
+    /**
+     * Calculate coordinates for internal nodes. For a rectangular cladogram we
+     * find the longest path from the root to a leaf, and space the internal nodes
+     * evenly. This gives a nicer look than using weights.
+     * @param p the internal node being visited
+     */
+    virtual void CalcInternal (Node *p);
+    virtual void CalcCoordinates ();
+    virtual void DrawLeaf (Node *p);
+    virtual void DrawInternal (Node *p);
+protected:
+    int maxDepth;
+
+};
+
+/**
+ * @class PhylogramDrawer
+ * Draw phylograms
+ */
+class PhylogramDrawer : public RectangleTreeDrawer
+{
+public:
+    PhylogramDrawer (Tree *tree) : RectangleTreeDrawer (tree) { mUltrametric = false; };
+    virtual ~PhylogramDrawer () {};
+    /**
+     * Calculate coordinates for internal nodes.
+     * @param p the internal node being visited
+     */
+    virtual void CalcInternal (Node *p);
+    virtual void CalcLeaf (Node *p);
+    virtual void CalcCoordinates ();
+    /**
+     * Draw tree by traversing it in post-order and calling DrawLeaf and
+     * DrawInternal.
+     */
+    virtual void Draw();
+//    virtual void DrawLeaf (Node *p);
+//    virtual void DrawInternal (Node *p);
+    virtual void DrawRoot ();
+    virtual void DrawScaleBar ();
+protected:
+	double mMaxPathLength;
+	int scalebar_space;
+    bool mUltrametric;
+};
+
+/**
+ * @class CircleTreeDrawer
+ * Draw circle trees
+ */
+class CircleTreeDrawer  : public RectangleTreeDrawer
+{
+public:
+    CircleTreeDrawer (Tree *tree) : RectangleTreeDrawer (tree) {};
+    virtual ~CircleTreeDrawer () {};
+
+    virtual void CalcInternal (Node *p);
+    virtual void CalcLeaf (Node *p);
+    virtual void CalcCoordinates ();
+
+//    virtual void Draw();
+
+    virtual void DrawLeaf (Node *p);
+//	virtual void DrawLeafLabel (Node *p);
+    virtual void DrawInternal (Node *p);
+//	virtual void DrawInternalLabel (Node *p);
+//   virtual void DrawText (point pt, std::string s);
+
+protected:
+    double leaf_angle;
+    double leaf_radius;
+    point origin;
+    std::map<Node *, double, std::less<Node *> > node_angle;
+    std::map<Node *, double, std::less<Node *> > node_radius;
+    std::map<Node *, point, std::less<Node *> > node_backarc;
+};
+
+
+
+#if __BORLANDC__
+	// Redefine __MINMAX_DEFINED so Windows header files compile
+	#ifndef __MINMAX_DEFINED
+    		#define __MINMAX_DEFINED
+	#endif
+#endif
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treedrawer.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treeorder.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/treeorder.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/treeorder.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,151 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+// $Id: treeorder.cpp,v 1.2 2005/02/23 14:19:00 rdmp1c Exp $
+
+#include "treeorder.h"
+
+#include <iostream>
+
+//------------------------------------------------------------------------------
+void TreeOrder::Order ()
+{
+    NodeIterator <Node> n (t->GetRoot());
+    Node *q = n.begin();
+    while (q)
+    {
+    	if (!q->IsLeaf ())
+			SortDescendants (q);
+
+        q = n.next();
+    }
+}
+
+//------------------------------------------------------------------------------
+void TreeOrder::SortDescendants (NodePtr node)
+{
+	NodePtr head = node->GetChild ();
+	NodePtr tail = head;
+	while (tail->GetSibling () != NULL)
+	{
+		NodePtr p = tail->GetSibling ();
+		if (MustSwap (head, p))
+		{
+			tail->SetSibling (p->GetSibling ());
+			p->SetSibling (head);
+			head = p;
+			p->GetAnc()->SetChild (p);
+		}
+		else
+		{
+			NodePtr q = head;
+			NodePtr r = q->GetSibling ();
+			while (MustSwap (p, r))
+			{
+				q = r;
+				r = q->GetSibling ();
+			}
+			if (p == r)
+				tail = p;
+			else
+			{
+				tail->SetSibling (p->GetSibling ());
+				p->SetSibling (r);
+				q->SetSibling (p);
+			}
+		}
+	}
+}
+
+//------------------------------------------------------------------------------
+bool LeftOrder::MustSwap (NodePtr p, NodePtr q)
+{
+	return (p->GetWeight() < q->GetWeight());
+}
+
+
+//------------------------------------------------------------------------------
+bool RightOrder::MustSwap (NodePtr p, NodePtr q)
+{
+	return (p->GetWeight() > q->GetWeight());
+}
+
+//------------------------------------------------------------------------------
+bool AlphaOrder::MustSwap (NodePtr p, NodePtr q)
+{
+	return (labels[p] > labels[q]);
+}
+
+//------------------------------------------------------------------------------
+void AlphaOrder::Order ()
+{
+    NodeIterator <Node> n (t->GetRoot());
+    Node *q = n.begin();
+    while (q)
+    {
+    	if (q->IsLeaf ())
+        	labels[q] = q->GetLabel();
+        q = n.next();
+    }
+	q = n.begin();
+    while (q)
+    while (q)
+    {
+    	if (!q->IsLeaf ())
+        {
+			SortDescendants (q);
+            labels[q] = labels[q->GetChild()];
+        }
+
+        q = n.next();
+    }
+}
+
+//------------------------------------------------------------------------------
+void ThorneOrder::Order ()
+{
+	if (outgroup->GetSibling() != NULL)
+	{
+		NodePtr q = t->GetRoot()->GetChild()->GetRightMostSibling();
+		
+		//std::cout << "OG" << outgroup->GetLabel() << std::endl;
+
+		if (outgroup == t->GetRoot()->GetChild())
+		{
+			t->GetRoot()->SetChild(outgroup->GetSibling());
+		}
+		else
+		{
+			NodePtr p = outgroup->LeftSiblingOf();
+			p->SetSibling (outgroup->GetSibling());
+		}
+		q->SetSibling (outgroup);
+		outgroup->SetSibling (NULL);
+	}
+	
+}
+
+//------------------------------------------------------------------------------
+bool ThorneOrder::MustSwap (NodePtr p, NodePtr q)
+{
+	return (p == outgroup);
+}
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treeorder.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treeorder.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/treeorder.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/treeorder.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,173 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+ // $Id: treeorder.h,v 1.4 2005/02/23 14:19:00 rdmp1c Exp $
+ 
+/**
+ * @file treeorder.h
+ *
+ * Classes to reorder nodes in a tree
+ *
+ */
+
+#ifndef TREEORDERH
+#define TREEORDERH
+
+#ifdef __BORLANDC__
+	// Undefine __MINMAX_DEFINED so that min and max are correctly defined
+	#ifdef __MINMAX_DEFINED
+		#undef __MINMAX_DEFINED
+	#endif
+    // Ignore "Cannot create precompiled header: code in header" message
+    // generated when compiling string.cc
+    #pragma warn -pch
+#endif
+
+#include <map>
+
+#include "TreeLib.h"
+#include "nodeiterator.h"
+
+
+/**
+ * @class TreeOrder
+ * Base class for ordering tree. By overiding the MustSwap fucntion, any
+ * ordering can be described.
+ */
+class TreeOrder
+{
+public:
+	TreeOrder () {};
+	/**
+	 * Constructor takes a tree as a parameter.
+     * @param tree tree to be ordered.
+     */
+	TreeOrder (Tree *tree) { t = tree; };
+        virtual ~TreeOrder() {};
+ 	/**
+	 * Order the tree. Call this method to reorder nodes. The tree is traversed
+     * in post order, and for each internal node SortDescendants is called. How the
+     * nodes are sorted is determined by MustSwap, so normally Order will not need
+     * to be overridden in descendant classes.
+	 */
+	virtual void Order ();
+protected:
+ 	Tree *t;
+ 	/**
+	 * Test whether nodes p and q need to be swapped. This is an abstract
+     * function that must be overriden in descendant classes. This function
+     * determines how the tree is ordered.
+     * @param p a node in the tree
+     * @param q another node in the tree that is a sibling of q
+	 * @return True if p and q must be swapped.
+	 */
+	virtual bool MustSwap (NodePtr p, NodePtr q) = 0;
+ 	/**
+	 * Sort descendants of node according to criterion defined in MustSwap.
+     * @param node the node whose descendants are being sorted.
+	 */
+	virtual void SortDescendants (NodePtr node);
+};
+
+
+
+/**
+ * @class LeftOrder
+ * Extends Treeorder to order trees by placing "heavier" nodes to the left.
+ */
+class LeftOrder : public  TreeOrder
+{
+public:
+	LeftOrder (Tree *tree) : TreeOrder (tree) {};
+        virtual ~LeftOrder() {};
+protected:
+	virtual bool MustSwap (NodePtr p, NodePtr q);
+
+};
+
+/**
+ * @class RightOrder
+ * Extends Treeorder to order trees by placing "heavier" nodes to the right.
+ */
+class RightOrder : public  TreeOrder
+{
+public:
+	RightOrder (Tree *tree) : TreeOrder (tree) {};
+        virtual ~RightOrder() {};
+protected:
+	virtual bool MustSwap (NodePtr p, NodePtr q);
+
+};
+
+
+/**
+ * @class AlphaOrder
+ * Extends Treeorder to order trees by sorting nodes alphabetically.
+ */
+class AlphaOrder : public  TreeOrder
+{
+public:
+	AlphaOrder (Tree *tree) : TreeOrder (tree) {};
+        virtual ~AlphaOrder() {};
+	/**
+	 * Order the tree. Extends ancestral method by storing "lowest" label
+     * found in any descendant of a given node using a map.
+	 */
+    virtual void Order ();
+protected:
+	std::map<Node *, std::string, std::less<Node *> > labels;
+	virtual bool MustSwap (NodePtr p, NodePtr q);
+
+};
+
+/**
+ * @class ThorneOrder
+ * Extends Treeorder to order in form required by Jeff Thorne's programs
+ * estabranches and multidivtime. That is, the outgroup is the rightmost
+ * node of the tree.
+ */
+class ThorneOrder : public  TreeOrder
+{
+public:
+	ThorneOrder (Tree *tree) : TreeOrder (tree) { outgroup = t->GetRoot()->GetChild(); };
+	virtual ~ThorneOrder() {};
+	virtual void SetOutgroup (NodePtr o) { outgroup = o; };
+	/**
+	 * Order the tree. Extends ancestral method by storing "lowest" label
+     * found in any descendant of a given node using a map.
+	 */
+    virtual void Order ();
+protected:
+	virtual bool MustSwap (NodePtr p, NodePtr q);
+	NodePtr outgroup;
+
+};
+
+
+#if __BORLANDC__
+	// Redefine __MINMAX_DEFINED so Windows header files compile
+	#ifndef __MINMAX_DEFINED
+    		#define __MINMAX_DEFINED
+	#endif
+#endif
+
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treeorder.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treereader.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/treereader.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/treereader.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,360 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+ 
+ // $Id: treereader.cpp,v 1.5 2003/09/10 12:58:16 rdmp1c Exp $
+
+#include "treereader.h"
+
+#if __MWERKS__
+	#include <string.h>
+	#include <stdlib.h>
+#endif
+
+//------------------------------------------------------------------------------
+TreeReader::TreeReader (Tokeniser &p) : parser (p)
+{
+}
+
+//------------------------------------------------------------------------------
+Tokeniser::tokentype TreeReader::GetTaxonName ()
+{
+	return parser.GetNextToken ();
+}
+
+//------------------------------------------------------------------------------
+// Parse the edge length token.
+bool TreeReader::LabelEdge ()
+{
+	bool result = false;
+	Tokeniser::tokentype token = parser.GetNextToken ();
+
+	// Handle negative branch lengths by peeking at the token. If
+	// it is a '-' then call ParseNumber to ensure it handles the sign
+	// correctly.
+	if (token == Tokeniser::MINUS)
+		result = parser.ParseNumber();
+	 else
+		result = (token == Tokeniser::NUMBER);
+
+	if (result)
+	{
+		// Convert token to a number
+		char number_string[128], *endptr;
+
+		strncpy (number_string, parser.GetToken().c_str(), sizeof (number_string));
+		double value = strtod (number_string, &endptr);
+		if (*endptr == '\0' || endptr == NULL)
+		{
+#ifdef __BORLANDC__
+			if (value == HUGE_VAL)
+			{
+				errormsg = "The number ";
+				errormsg += parser.GetToken();
+				errormsg += " caused strtod to report a HUGE_VAL error";
+			}
+else
+			{
+#endif
+				// Set -ve branch lengths to zero
+				if (value < 0.0)
+				value = 0.0;
+				tree->GetCurNode()->SetEdgeLength (value);
+				tree->SetEdgeLengths (true);
+#ifdef __BORLANDC__
+			}
+#endif
+		}
+		else
+		{
+			errormsg = "The token ";
+			errormsg += parser.GetToken();
+			errormsg += " is not a valid number";
+		}
+	}
+	return result;
+}
+
+
+//------------------------------------------------------------------------------
+// Label the current leaf
+bool TreeReader::LabelLeaf (std::string s)
+{
+	tree->MakeCurNodeALeaf (tree->GetNumLeaves() + 1);
+	tree->GetCurNode()->SetLabel (s);
+	return true;
+}
+
+//------------------------------------------------------------------------------
+// Label the current internal node
+void TreeReader::LabelInternalNode (std::string s)
+{
+	tree->GetCurNode()->SetLabel (s);
+	tree->SetInternalLabels (true);
+}
+
+//------------------------------------------------------------------------------
+// Uses a simple pushdown automaton to read Newick-style trees
+bool TreeReader::Read (TreePtr t)
+{
+	// States of pushdown automaton that reads trees
+	enum statetype
+	{
+		GETNAME,
+		GETINTERNODE,
+		NEXTMOVE,
+		DOSIBLING,
+		FINISHCHILDREN,
+		ACCEPTED,
+		CLEANUP,
+		QUIT
+	} state;
+
+	std::stack< NodePtr, std::vector<NodePtr> > stk;
+	Tokeniser::tokentype 	token;
+
+	tree = t;
+	tree->MakeRoot();
+	token = parser.GetNextToken ();
+
+	if (token == Tokeniser::EMPTY)
+		return false;
+
+	// Parse the tree description
+	state = GETNAME;
+	while ((state != QUIT) && (state != ACCEPTED))
+	{
+		switch (state)
+		{
+			case GETNAME:
+				switch (token)
+				{
+					case Tokeniser::STRING:
+					case Tokeniser::NUMBER:
+						LabelLeaf (parser.GetToken());
+						token = parser.GetNextToken ();
+						state = GETINTERNODE;
+						break;
+					case Tokeniser::LPAR:
+						state = NEXTMOVE;
+						break;
+					default:
+						errormsg = "Syntax error [GETNAME]: expecting a \"(\" or leaf name, got \"";
+						errormsg += parser.GetToken();
+						errormsg += "\" instead";
+						state = QUIT;
+						break;
+				}
+				break;
+
+			case GETINTERNODE:
+				switch (token)
+				{
+					case Tokeniser::COLON:
+					case Tokeniser::COMMA:
+					case Tokeniser::RPAR:
+						state = NEXTMOVE;
+						break;
+					default:
+						errormsg = "Syntax error [GETINTERNODE]: expecting one of \":,)\", got ";
+						errormsg += parser.GetToken();
+						errormsg += " instead";
+						state = QUIT;
+						break;
+				}
+				break;
+
+			case NEXTMOVE:
+				switch (token)
+				{
+					case Tokeniser::COLON:
+						if (LabelEdge ())
+							token = parser.GetNextToken ();
+						else
+							state = QUIT;
+						break;
+					// The next node encountered will be a sibling
+					// of Curnode and a descendant of the node on
+					// the top of the node stack.
+					case Tokeniser::COMMA:
+						if (stk.empty())
+						{
+							errormsg = "Tree description unbalanced, this \")\" has no matching \"(\"";
+							state = QUIT;
+						}
+						else
+						{
+							tree->MakeSibling ();
+							//token = parser.GetNextToken ();
+							token = GetTaxonName();
+							state = GETNAME;
+						}
+						break;
+					// The next node will be a child of CurNode, hence
+					// we create the node and push CurNode onto the
+					// node stack.
+					case Tokeniser::LPAR:
+						stk.push (tree->GetCurNode());
+						tree->MakeChild();
+						//token = parser.GetNextToken ();
+						token = GetTaxonName();
+						state = GETNAME;
+						break;
+					// We've finished ready the descendants of the node
+					// at the top of the node stack so pop it off.
+					case Tokeniser::RPAR:
+						if (stk.empty())
+						{
+							errormsg = "Tree description unbalanced (an extra \")\")";
+							state = QUIT;
+						}
+						else
+						{
+							NodePtr q = stk.top();
+							q->AddWeight(tree->GetCurNode()->GetWeight());
+							tree->SetCurNode (q);
+							stk.pop ();
+							token = parser.GetNextToken ();
+							state = FINISHCHILDREN;
+						}
+						break;
+					// We should have finished the tree
+					case Tokeniser::SEMICOLON:
+						if (stk.empty())
+						{
+							state = ACCEPTED;
+						}
+						else
+						{
+							errormsg = "Tree description ended prematurely (stack not empty)";
+							state = QUIT;
+						}
+						break;
+					default:
+						errormsg = "Syntax error [NEXTMOVE]: expecting one of \":,();\", got ";
+						errormsg += parser.GetToken();
+						errormsg += " instead";
+						state = QUIT;
+						break;
+				}
+				break;
+
+			case FINISHCHILDREN:
+				switch (token)
+				{
+					case Tokeniser::STRING:
+					case Tokeniser::NUMBER:
+						LabelInternalNode (parser.GetToken());
+						token = parser.GetNextToken ();
+						break;
+					case Tokeniser::COLON:
+						if (LabelEdge ())
+							token = parser.GetNextToken ();
+						else
+							state = QUIT;
+						break;
+					// We've completed traversing the descendants of the
+					// node at the top of the stack, so pop it off.
+					case Tokeniser::RPAR:
+						if (stk.empty())
+						{
+							errormsg = "Tree description unbalanced, this \")\" has no matching \"(\"";
+							state = QUIT;
+						}
+						else
+						{
+							NodePtr q = stk.top();
+							q->AddWeight(tree->GetCurNode()->GetWeight());
+							tree->SetCurNode (q);
+							stk.pop ();
+							token = parser.GetNextToken ();
+						}
+						break;
+
+					// The node at the top of the stack still has some
+					// descendants.
+					case Tokeniser::COMMA:
+						if (stk.empty())
+						{
+							errormsg = "Tree description unbalanced, missing a \"(\"";
+							state = QUIT;
+						}
+						else
+						{
+							tree->MakeSibling ();
+							//token = parser.GetNextToken ();
+							token = GetTaxonName();
+							state = GETNAME;
+						}
+						break;
+					case Tokeniser::SEMICOLON:
+						state = NEXTMOVE;
+						break;
+					default:
+						if (stk.empty())
+						{
+							errormsg = "Tree description unbalanced";
+							state = QUIT;
+						}
+						else
+						{
+							errormsg = "Syntax error [FINISHCHILDREN]: expecting one of \":,();\" or internal label, got ";
+							errormsg += parser.GetToken();
+							errormsg += " instead";
+						}
+						state = QUIT;
+						break;
+				}
+				break;
+		}
+	}
+	// Handle errors
+	if (state == QUIT)
+	{
+		// Clean memory here...
+
+		// ... then throw exception
+		 throw XTokeniser (errormsg, parser.GetFilePosition(),
+			parser.GetFileLine (), parser.GetFileColumn());
+	}
+	else
+	{
+		tree->GetRoot()->SetWeight(tree->GetNumLeaves());
+		doAdjust ();
+	}
+    return true;
+}
+
+//------------------------------------------------------------------------------
+Tokeniser::tokentype PHYLIPReader::GetTaxonName ()
+{
+	return parser.GetNextPHYLIPToken ();
+}
+
+
+//------------------------------------------------------------------------------
+// Unrooted PHYLIP trees have degree > 2
+void PHYLIPReader::doAdjust ()
+{
+	tree->SetRooted (tree->GetRoot()->GetDegree() == 2);
+}
+
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treereader.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treereader.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/treereader.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/treereader.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,67 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+ 
+// $Id: treereader.h,v 1.4 2003/10/21 10:58:45 rdmp1c Exp $
+
+#ifndef TREEREADER_H
+#define TREEREADER_H
+
+#include "TreeLib.h"
+#include "tokeniser.h"
+
+class TreeReader
+{
+public:
+	TreeReader (Tokeniser &p);
+	virtual ~TreeReader () {};
+
+	virtual bool Read (TreePtr t);
+	virtual bool MoreTrees() { return true; };
+
+protected:
+	Tokeniser &parser;
+	Tree *tree;
+	std::string errormsg;
+
+
+	virtual void 	doAdjust() = 0;
+
+	virtual Tokeniser::tokentype GetTaxonName ();
+	virtual bool 	LabelEdge ();
+	virtual bool 	LabelLeaf (std::string s);
+	virtual void 	LabelInternalNode (std::string s);
+
+//	virtual int 	ReadName() { return 0; };
+};
+
+class PHYLIPReader : public TreeReader
+{
+public:
+	PHYLIPReader (Tokeniser &p) : TreeReader (p) { };
+	virtual ~PHYLIPReader () {};
+	virtual Tokeniser::tokentype GetTaxonName ();
+protected:
+	virtual void 	doAdjust();
+};
+
+#endif
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treereader.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treewriter.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/treewriter.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/treewriter.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,207 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+ 
+ // $Id: treewriter.cpp,v 1.4 2005/02/23 14:32:44 rdmp1c Exp $
+
+#include "treewriter.h"
+
+//------------------------------------------------------------------------------
+void NewickTreeWriter::WriteLeftParenthesis ()
+{
+	*f << '(';
+}
+
+//------------------------------------------------------------------------------
+void NewickTreeWriter::WriteRightParenthesis ()
+{
+	*f << ')';
+}
+
+//------------------------------------------------------------------------------
+void NewickTreeWriter::WriteSiblingSymbol ()
+{
+	*f << ',';
+}
+
+//------------------------------------------------------------------------------
+void NewickTreeWriter::WriteLeaf ()
+{
+	*f << NEXUSString (cur->GetLabel());
+	if (t->GetHasEdgeLengths () && writeEdgeLengths)
+		*f << ":" << cur->GetEdgeLength();
+}
+
+
+//------------------------------------------------------------------------------
+void NewickTreeWriter::WriteInternal ()
+{
+	if (cur->GetLabel() != "")
+		*f << NEXUSString (cur->GetLabel());
+	if (t->GetHasEdgeLengths () && writeEdgeLengths)
+		*f << ":" << cur->GetEdgeLength();
+}
+
+//------------------------------------------------------------------------------
+void NewickTreeWriter::WriteEndOfTree ()
+{
+	*f << ';';
+}
+
+
+//------------------------------------------------------------------------------
+void NewickTreeWriter::Write ()
+{
+	cur = t->GetRoot();
+
+    while (cur)
+    {
+        if (cur->GetChild())
+        {
+            WriteLeftParenthesis ();
+            stk.push (cur);
+            cur = cur->GetChild();
+        }
+        else
+        {
+            WriteLeaf ();
+            while (!stk.empty() && (cur->GetSibling() == NULL))
+            {
+                WriteRightParenthesis ();
+                cur = stk.top();
+                WriteInternal ();
+                stk.pop();
+            }
+            if (stk.empty())
+                cur = NULL;
+            else
+            {
+                WriteSiblingSymbol ();
+                cur = cur->GetSibling();
+            }
+        }
+    }
+    WriteEndOfTree ();
+}
+
+
+//------------------------------------------------------------------------------
+void XMLTreeWriter::Write ()
+{
+    OpenTree();
+
+	cur = t->GetRoot();
+        count = 0;
+
+    while (cur)
+    {
+        if (cur->GetChild())
+        {
+             count++;
+             OpenNode();
+             NodeInfo();
+                
+            stk.push (cur);
+            cur = cur->GetChild();
+        }
+        else
+        {
+            count++;
+            OpenNode();
+            NodeInfo();
+            CloseNode();
+            while (!stk.empty() && (cur->GetSibling() == NULL))
+            {
+                CloseNode();
+                cur = stk.top();
+                stk.pop();
+            }
+            if (stk.empty())
+                cur = NULL;
+            else
+            {
+                cur = cur->GetSibling();
+            }
+        }
+    }
+    CloseTree();
+
+}
+
+void TreeBolicTreeWriter::OpenTree ()
+{
+    *f << "<tree>" << std::endl;
+    *f << "<nodes>" << std::endl;
+}
+
+void TreeBolicTreeWriter::CloseTree ()
+{
+    *f << "</tree>" << std::endl;
+    *f << "</nodes>" << std::endl;
+}
+
+void TreeBolicTreeWriter::OpenNode ()
+{
+    *f << std::string (stk.size() * 3, ' ') << "<node id = \"" << count << "\">" << std::endl;
+}
+
+void TreeBolicTreeWriter::CloseNode ()
+{
+    *f << std::string (stk.size() * 3, ' ') << "</node>" << std::endl;
+}
+
+void TreeBolicTreeWriter::NodeInfo ()
+{
+    // label
+    if (cur->GetLabel() != "")
+        *f << std::string (stk.size() * 3 + 3, ' ') << "<label>" << cur->GetLabel() << "</label>" << std::endl;
+}
+
+//------------------------------------------------------------------------------
+void ThorneTreeWriter::WriteLeaf ()
+{
+	*f << formatLabel (cur->GetLabel());
+}
+
+
+//------------------------------------------------------------------------------
+void ThorneTreeWriter::WriteInternal ()
+{
+}
+
+std::string ThorneTreeWriter::formatLabel(std::string s)
+{	
+	std::string  sub = s.substr(0,30);
+	std::string thorne_label = "";
+	int k = 0;
+	while (k < sub.length())
+	{
+		switch (sub[k])
+		{
+			case '\'': thorne_label += '_'; break;
+			case ' ': thorne_label += '_'; break;
+			default: thorne_label += sub[k]; break;
+		}
+		k++;
+	}
+	return thorne_label;
+}
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treewriter.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treewriter.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/TreeLib/treewriter.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/TreeLib/treewriter.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,171 @@
+/*
+ * TreeLib
+ * A library for manipulating phylogenetic trees.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+ 
+// $Id: treewriter.h,v 1.5 2005/02/23 14:36:08 rdmp1c Exp $
+
+#ifndef TREEWRITER_H
+#define TREEWRITER_H
+
+#include "TreeLib.h"
+#include "nodeiterator.h"
+
+#include <iostream>
+
+/**
+ * @class NewickTreeWriter
+ * Base class for writing Newick format tree descriptions.
+ *
+ */
+class NewickTreeWriter
+{
+public:
+	NewickTreeWriter (Tree *tree) { t = tree; writeEdgeLengths = true; };
+        virtual ~NewickTreeWriter () {};
+	
+	/**
+	 * Toggle on or off the writing of edge lengths in the tree description.
+	 */	
+	virtual void SetWriteEdgeLengths (bool on) { writeEdgeLengths = on; };
+	/**
+	 * Set output stream to which the tree description is written
+	 * @param s pointer to the stream
+	 */	
+	virtual void SetStream (std::ostream *s) { f = s; };
+	/**
+	 * Write the tree description.
+	 */	    
+    virtual void Write ();
+protected:
+	std::ostream *f;
+	Node *cur;
+	std::stack < Node *, std::vector<Node *> > stk;
+	Tree * t;
+	
+	/**
+	 * Write the symbol signalling the end of the tree description. By default this is ';'
+	 */	
+	virtual void WriteEndOfTree ();
+	/**
+	 * Write '('
+	 */	
+    virtual void WriteLeftParenthesis ();
+	/**
+	 * Write ')'
+	 */	
+    virtual void WriteRightParenthesis ();
+	/**
+	 * Write the sibling symbol. By default this is ','
+	 */	
+    virtual void WriteSiblingSymbol ();
+	/**
+	 * Write leaf node.
+	 */	
+    virtual void WriteLeaf ();
+	/**
+	 * Write internal node.
+	 */	
+    virtual void WriteInternal ();
+    
+    bool writeEdgeLengths;
+
+};
+
+/**
+ * @class XMLTreeWriter
+ * Abstract base class for writing XML tree descriptions.
+ *
+ */
+class XMLTreeWriter
+{
+public:
+	XMLTreeWriter (Tree *tree) { t = tree; count = 0; };
+        virtual ~XMLTreeWriter () {};
+	
+	/**
+	 * Set output stream to which the tree description is written
+	 * @param s pointer to the stream
+	 */	
+	virtual void SetStream (std::ostream *s) { f = s; };
+	/**
+	 * Write the tree description.
+	 */	    
+        virtual void Write ();
+        
+        virtual void OpenNode() = 0;
+        virtual void NodeInfo () = 0;
+        virtual void CloseNode() = 0;
+        virtual void OpenTree() = 0;
+        virtual void CloseTree() = 0;
+
+protected:
+	std::ostream *f;
+	Node *cur;
+	std::stack < Node *, std::vector<Node *> > stk;
+	Tree * t;
+        int count;
+
+};
+
+/**
+ * @class TreeBolicTreeWriter
+ * Writing TreeBolic XML tree description.
+ *
+ */
+class TreeBolicTreeWriter : public XMLTreeWriter
+{
+public:
+	TreeBolicTreeWriter (Tree *tree) : XMLTreeWriter (tree) {};
+        virtual ~TreeBolicTreeWriter () {};
+        virtual void OpenNode();
+        virtual void NodeInfo ();
+        virtual void CloseNode();
+        virtual void OpenTree();
+        virtual void CloseTree();
+};
+
+
+/**
+ * @class ThorneTreeWriter
+ * Writing tree for Jeff Thorne's multidivtime tree description.
+ *
+ */
+class ThorneTreeWriter : public NewickTreeWriter
+{
+public:
+	ThorneTreeWriter (Tree *tree) : NewickTreeWriter (tree) {};
+	virtual ~ThorneTreeWriter () {};
+	/**
+	 * Write leaf node.
+	 */	
+    virtual void WriteLeaf ();
+	/**
+	 * Write internal node.
+	 */	
+    virtual void WriteInternal ();
+protected:
+	std::string formatLabel (std::string s);
+};
+
+
+
+#endif
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/TreeLib/treewriter.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/aclocal.m4
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/aclocal.m4	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/aclocal.m4	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,1020 @@
+# generated automatically by aclocal 1.9.2 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+#                                                        -*- Autoconf -*-
+# Copyright (C) 2002, 2003  Free Software Foundation, Inc.
+# Generated from amversion.in; do not edit by hand.
+
+# 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, 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
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION so it can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+	 [AM_AUTOMAKE_VERSION([1.9.2])])
+
+# AM_AUX_DIR_EXPAND
+
+# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+
+# 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, 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.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL                                              -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
+
+# 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, 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.
+
+# serial 6
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+	[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])
+AC_SUBST([$1_FALSE])
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# serial 7						-*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
+
+# 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, 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.
+
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
+       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
+       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                   [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])
+])
+
+# Generate code to set up dependency tracking.   -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+#   Free Software Foundation, Inc.
+
+# 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, 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.
+
+#serial 2
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # So let's grep whole file.
+  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+    dirpart=`AS_DIRNAME("$mf")`
+  else
+    continue
+  fi
+  # Extract the definition of DEPDIR, am__include, and am__quote
+  # from the Makefile without running `make'.
+  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  am__include=`sed -n 's/^am__include = //p' < "$mf"`
+  test -z "am__include" && continue
+  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n 's/^U = //p' < "$mf"`
+  # Find all dependency output files, they are included files with
+  # $(DEPDIR) in their names.  We invoke sed twice because it is the
+  # simplest approach to changing $(DEPDIR) to its actual value in the
+  # expansion.
+  for file in `sed -n "
+    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`AS_DIRNAME(["$file"])`
+    AS_MKDIR_P([$dirpart/$fdir])
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake.                            -*- Autoconf -*-
+
+# This macro actually does too much some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
+
+# 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, 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.
+
+# serial 11
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.58])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+   test -f $srcdir/config.status; then
+  AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+              [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+	      		     [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+                  [_AM_DEPENDENCIES(CC)],
+                  [define([AC_PROG_CC],
+                          defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                  [_AM_DEPENDENCIES(CXX)],
+                  [define([AC_PROG_CXX],
+                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $1 | $1:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+
+# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+
+# 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, 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.
+
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+#                                                          -*- Autoconf -*-
+# Copyright (C) 2003  Free Software Foundation, Inc.
+
+# 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, 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.
+
+# serial 1
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes.	-*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+
+# 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, 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.
+
+# serial 2
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+#  -*- Autoconf -*-
+
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+
+# 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, 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.
+
+# serial 3
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
+
+# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+
+# 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, 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.
+
+# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
+# created by `make install' are always world readable, even if the
+# installer happens to have an overly restrictive umask (e.g. 077).
+# This was a mistake.  There are at least two reasons why we must not
+# use `-m 0755':
+#   - it causes special bits like SGID to be ignored,
+#   - it may be too restrictive (some setups expect 775 directories).
+#
+# Do not use -m 0755 and let people choose whatever they expect by
+# setting umask.
+#
+# We cannot accept any implementation of `mkdir' that recognizes `-p'.
+# Some implementations (such as Solaris 8's) are not thread-safe: if a
+# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
+# concurrently, both version can detect that a/ is missing, but only
+# one can create it and the other will error out.  Consequently we
+# restrict ourselves to GNU make (using the --version option ensures
+# this.)
+AC_DEFUN([AM_PROG_MKDIR_P],
+[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+  # We used to keeping the `.' as first argument, in order to
+  # allow $(mkdir_p) to be used without argument.  As in
+  #   $(mkdir_p) $(somedir)
+  # where $(somedir) is conditionally defined.  However this is wrong
+  # for two reasons:
+  #  1. if the package is installed by a user who cannot write `.'
+  #     make install will fail,
+  #  2. the above comment should most certainly read
+  #     $(mkdir_p) $(DESTDIR)$(somedir)
+  #     so it does not work when $(somedir) is undefined and
+  #     $(DESTDIR) is not.
+  #  To support the latter case, we have to write
+  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+  #  so the `.' trick is pointless.
+  mkdir_p='mkdir -p --'
+else
+  # On NextStep and OpenStep, the `mkdir' command does not
+  # recognize any option.  It will interpret all options as
+  # directories to create, and then abort because `.' already
+  # exists.
+  for d in ./-p ./--version;
+  do
+    test -d $d && rmdir $d
+  done
+  # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+  if test -f "$ac_aux_dir/mkinstalldirs"; then
+    mkdir_p='$(mkinstalldirs)'
+  else
+    mkdir_p='$(install_sh) -d'
+  fi
+fi
+AC_SUBST([mkdir_p])])
+
+# Helper functions for option handling.                    -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003  Free Software Foundation, Inc.
+
+# 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, 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.
+
+# serial 2
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+#
+# Check to make sure that the build environment is sane.
+#
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
+
+# 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, 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.
+
+# serial 3
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$[*]" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$[*]" != "X $srcdir/configure conftest.file" \
+      && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+alias in your environment])
+   fi
+
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# AM_PROG_INSTALL_STRIP
+
+# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+
+# 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, 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.
+
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004  Free Software Foundation, Inc.
+
+# 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, 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.
+
+# serial 1
+
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+     [m4_case([$1], [ustar],, [pax],,
+              [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+  case $_am_tool in
+  gnutar)
+    for _am_tar in tar gnutar gtar;
+    do
+      AM_RUN_LOG([$_am_tar --version]) && break
+    done
+    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+    am__untar="$_am_tar -xf -"
+    ;;
+  plaintar)
+    # Must skip GNU tar: if it does not support --format= it doesn't create
+    # ustar tarball either.
+    (tar --version) >/dev/null 2>&1 && continue
+    am__tar='tar chf - "$$tardir"'
+    am__tar_='tar chf - "$tardir"'
+    am__untar='tar xf -'
+    ;;
+  pax)
+    am__tar='pax -L -x $1 -w "$$tardir"'
+    am__tar_='pax -L -x $1 -w "$tardir"'
+    am__untar='pax -r'
+    ;;
+  cpio)
+    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+    am__untar='cpio -i -H $1 -d'
+    ;;
+  none)
+    am__tar=false
+    am__tar_=false
+    am__untar=false
+    ;;
+  esac
+
+  # If the value was cached, stop now.  We just wanted to have am__tar
+  # and am__untar set.
+  test -n "${am_cv_prog_tar_$1}" && break
+
+  # tar/untar a dummy directory, and stop if the command works
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  echo GrepMe > conftest.dir/file
+  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+  rm -rf conftest.dir
+  if test -s conftest.tar; then
+    AM_RUN_LOG([$am__untar <conftest.tar])
+    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+  fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/copy.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/copy.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/copy.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,53 @@
+/* XPM */
+static char * copy_xpm[] = {
+"24 24 26 1",
+" 	c None",
+".	c #000000",
+"+	c #B4B4B4",
+"@	c #F8F8F8",
+"#	c #F6F6F6",
+"$	c #C3C3C3",
+"%	c #E9E9E9",
+"&	c #989898",
+"*	c #828282",
+"=	c #8A8A8A",
+"-	c #E8E8E8",
+";	c #636363",
+">	c #5A5A5A",
+",	c #6B6B6B",
+"'	c #B3B3B3",
+")	c #FFFFFF",
+"!	c #D6D6D6",
+"~	c #818181",
+"{	c #A7A7A7",
+"]	c #8F8F8F",
+"^	c #C6C6C6",
+"/	c #808080",
+"(	c #E7E7E7",
+"_	c #6D6D6D",
+":	c #767676",
+"<	c #F5F5F5",
+"                        ",
+" .............          ",
+" .+@@@@@@@@@#$.         ",
+" .@%%%%%%%%%%%.         ",
+" .@&**=%+*%*+%.         ",
+" .@%%%%%%%%---.         ",
+" .@;>%,*+-............  ",
+" .@%%%%%%.'))))))))))!. ",
+" .@&**%*~.)))))))))))). ",
+" .@%%%%%-.){]]&)^])]^). ",
+" .@;>>%,/.)))))))))))). ",
+" .@%%%%%(.)_;):]^)^])). ",
+" .@&**%*~.)))))))))))). ",
+" .<%%%%%-.){]])]]^)&]). ",
+" .$%%%%%-.)))))))))))). ",
+"  ........)_;;):]^)^]). ",
+"         .)))))))))))). ",
+"         .){]])]]^)&]). ",
+"         .)))))))))))). ",
+"         .!))))))))))!. ",
+"         .............. ",
+"                        ",
+"                        ",
+"                        "};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/copy.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/internal.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/internal.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/internal.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,30 @@
+/* XPM */
+static char *internal_xpm[]={
+"24 24 3 1",
+". c None",
+"# c #000000",
+"a c #808080",
+"........................",
+"........................",
+"........................",
+"........................",
+"........................",
+"......##########........",
+"......#.................",
+"......#.................",
+"......#.a#a.#...........",
+"......#.#.#.#...........",
+"....###.#.#.##a.a#......",
+"......#.###.#.#.#.......",
+"......#.#.#.##a.a#......",
+"......#.................",
+"......#.................",
+"......#.................",
+"......##########........",
+"........................",
+"........................",
+"........................",
+"........................",
+"........................",
+"........................",
+"........................"};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/internal.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/app.icns
===================================================================
(Binary files differ)


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/app.icns
___________________________________________________________________
Name: svn:executable
   + 
Name: svn:mime-type
   + application/octet-stream

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/copy.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/copy.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/copy.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,26 @@
+/* XPM */
+static char * copy_xpm[] = {
+/* columns rows colors chars-per-pixel */
+"16 16 4 1",
+"  c None",
+"a c Black",
+"b c #000080",
+"d c #F8FCF8",
+/* pixels */
+"                ",
+" aaaaaa         ",
+" addddaa        ",
+" addddada       ",
+" adaadabbbbbb   ",
+" adddddbddddbb  ",
+" adaaaabddddbdb ",
+" adddddbdaadbbbb",
+" adaaaabdddddddb",
+" adddddbdaaaaadb",
+" aaaaaabdddddddb",
+"       bdaaaaadb",
+"       bdddddddb",
+"       bbbbbbbbb",
+"                ",
+"                "
+};
\ No newline at end of file


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/copy.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/doc.icns
===================================================================
(Binary files differ)


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/doc.icns
___________________________________________________________________
Name: svn:executable
   + 
Name: svn:mime-type
   + application/octet-stream

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/internal.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/internal.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/internal.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,30 @@
+/* XPM */
+static char *internal_xpm[]={
+"24 24 3 1",
+". c None",
+"# c #000000",
+"a c #808080",
+"........................",
+"........................",
+"........................",
+"........................",
+"........................",
+"......##########........",
+"......#.................",
+"......#.................",
+"......#.a#a.#...........",
+"......#.#.#.#...........",
+"....###.#.#.##a.a#......",
+"......#.###.#.#.#.......",
+"......#.#.#.##a.a#......",
+"......#.................",
+"......#.................",
+"......#.................",
+"......##########........",
+"........................",
+"........................",
+"........................",
+"........................",
+"........................",
+"........................",
+"........................"};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/internal.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/new.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/new.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/new.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,24 @@
+/* XPM */
+static char *new_xpm[] = {
+/* columns rows colors chars-per-pixel */
+"16 15 3 1",
+"  c None",
+". c Black",
+"X c Gray100",
+/* pixels */
+"                ",
+"   ........     ",
+"   .XXXXXX..    ",
+"   .XXXXXX.X.   ",
+"   .XXXXXX....  ",
+"   .XXXXXXXXX.  ",
+"   .XXXXXXXXX.  ",
+"   .XXXXXXXXX.  ",
+"   .XXXXXXXXX.  ",
+"   .XXXXXXXXX.  ",
+"   .XXXXXXXXX.  ",
+"   .XXXXXXXXX.  ",
+"   .XXXXXXXXX.  ",
+"   ...........  ",
+"                "
+};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/new.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/next.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/next.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/next.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,25 @@
+/* XPM */
+static char * next_xpm[] = {
+/* columns rows colors chars-per-pixel */
+"16 16 2 1",
+"  c None",
+"a c Black",
+/* pixels */
+"                ",
+"                ",
+"                ",
+"      a         ",
+"      aa        ",
+"      aaa       ",
+"      aaaa      ",
+"      aaaaa     ",
+"      aaaaaa    ",
+"      aaaaa     ",
+"      aaaa      ",
+"      aaa       ",
+"      aa        ",
+"      a         ",
+"                ",
+"                "
+};
+ 
\ No newline at end of file


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/next.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/open.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/open.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/open.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,27 @@
+/* XPM */
+static char * open_xpm[] = {
+/* columns rows colors chars-per-pixel */
+ "16 15 5 1",
+"  c None",
+"a c Black",
+"b c #808000",
+"c c #F8FC00",
+"d c #F8FCF8",
+/* pixels */
+"                ",
+"          aaa   ",
+"         a   a a",
+"              aa",
+"  aaa        aaa",
+" acdcaaaaaaa    ",
+" adcdcdcdcda    ",
+" acdcdcdcdca    ",
+" adcdcaaaaaaaaaa",
+" acdcabbbbbbbbba",
+" addabbbbbbbbba ",
+" acabbbbbbbbba  ",
+" aabbbbbbbbba   ",
+" aaaaaaaaaaa    ",
+"                "
+};
+                  


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/open.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/paste.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/paste.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/paste.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,30 @@
+/* XPM */
+static char *paste_xpm[] =
+{
+/* width height ncolors chars_per_pixel */
+"16 16 6 1",
+/* colors */
+"  c none",
+"B c #008080",
+"C c #C0C0C0",
+"D c #808080",
+"E c #FFFF00",
+"F c Black",
+/* pixels */
+"                ",
+"     FFFF       ",
+" FFFFFEEFFFFF   ",
+"FDDDFEFFEFDDDF  ",
+"FDDFCCCCCCFDDF  ",
+"FDDFFFFFFFFDDF  ",
+"FDDDDDDDDDDDDF  ",
+"FDDDDDBBBBBBBF  ",
+"FDDDDDB     BB  ",
+"FDDDDDB     B B ",
+"FDDDDDB BBB BBB ",
+"FDDDDDB       B ",
+"FDDDDDB BBBBB B ",
+" FFFFFB       B ",
+"      BBBBBBBBB ",
+"                "
+};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/paste.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/phylogram.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/phylogram.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/phylogram.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,24 @@
+/* XPM */
+static char * phylogram_xpm[] = {
+        /* columns rows colors chars-per-pixel */
+        "16 16 2 1",
+        "  c None",
+        "a c Black",
+        /* pixels */
+        "                ",
+        "                ",
+        "    aaaaaaa     ",
+        "    a           ",
+        "  aaa           ",
+        "  a a           ",
+        "  a aaa         ",
+        "  a             ",
+        "  a             ",
+        "  a             ",
+        "  a    aaaaaa   ",
+        "  a    a        ",
+        "  aaaaaa        ",
+        "       a        ",
+        "       aaaaaaa  ",
+        "                "
+        };
\ No newline at end of file


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/phylogram.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/previous.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/previous.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/previous.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,24 @@
+/* XPM */
+static char * previous_xpm[] = {
+        /* columns rows colors chars-per-pixel */
+        "16 16 2 1",
+        "  c None",
+        "a c Black",
+        /* pixels */
+        "                ",
+        "                ",
+        "                ",
+        "         a      ",
+        "        aa      ",
+        "       aaa      ",
+        "      aaaa      ",
+        "     aaaaa      ",
+        "    aaaaaa      ",
+        "     aaaaa      ",
+        "      aaaa      ",
+        "       aaa      ",
+        "        aa      ",
+        "         a      ",
+        "                ",
+        "                "
+        };
\ No newline at end of file


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/previous.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/print.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/print.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/print.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,27 @@
+/* XPM */
+static char * print_xpm[] = {
+       /* columns rows colors chars-per-pixel */
+        "16 15 6 1",
+        "  c None",
+        "a c Black",
+        "b c #FFFFFF",
+        "d c #C0C0C0",
+        "e c #808000",
+        "f c #FFFF00",
+        /* pixels */
+        "                ",
+        "     aaaaaaaaa  ",
+        "    abbbbbbbba  ",
+        "    abaaaaaba   ",
+        "   abbbbbbbba   ",
+        "   abaaaaabaaaa ",
+        "  abbbbbbbbadada",
+        " aaaaaaaaaadadaa",
+        "addddddddddadada",
+        "aaaaaaaaaaaaadda",
+        "addddddeeeddada ",
+        "addddddfffddaaa ",
+        "aaaaaaaaaaaaada ",
+        " adddddddddada  ",
+        "  aaaaaaaaaaa   "
+        };
\ No newline at end of file


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/print.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/print_preview.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/print_preview.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/print_preview.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,28 @@
+/* XPM */
+static char * print_preview_xpm[] = {
+       /* columns rows colors chars-per-pixel */
+        "16 16 6 1",
+        "  c None",
+        "a c Black",
+        "b c #FFFFFF",
+        "d c #C0C0C0",
+        "e c #808080",
+        "f c #00FFFF",
+        /* pixels */
+        "aaaaaaaaa       ",
+        "abbbbbbbaa      ",
+        "abbbbbbbada     ",
+        "abbbbbbbaaaa    ",
+        "abbbbbbbbbba    ",
+        "abbbbbbbaaaa    ",
+        "abbbbbbaeddea   ",
+        "abbbbbaeffdeba  ",
+        "abbbbbadfddeda  ",
+        "abbbbbaddddeda  ",
+        "abbbbbaeddfeba  ",
+        "abbbbbbaeddeab  ",
+        "abbbbbbbaaaaaaa ",
+        "abbbbbbbbbba aaa",
+        "aaaaaaaaaaaa  aa",
+        "                "
+        };
\ No newline at end of file


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/print_preview.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/rectangletree.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/rectangletree.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/rectangletree.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,24 @@
+/* XPM */
+static char * rectangletree_xpm[] = {
+        /* columns rows colors chars-per-pixel */
+        "16 16 2 1",
+        "  c None",
+        "a c Black",
+        /* pixels */
+        "                ",
+        "                ",
+        "        aaaa    ",
+        "        a       ",
+        "   aaaaaa       ",
+        "   a    a       ",
+        "   a    aaaa    ",
+        "   a            ",
+        "   a            ",
+        "   a            ",
+        "   a    aaaa    ",
+        "   a    a       ",
+        "   aaaaaa       ",
+        "        a       ",
+        "        aaaa    ",
+        "                "
+        };
\ No newline at end of file


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/rectangletree.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/saveas.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/saveas.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/saveas.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,25 @@
+/* XPM */
+/* columns rows colors chars-per-pixel */
+static char * saveas_xpm[] = {
+"16 15 4 1",
+"  c None",
+"a c Black",
+"b c #808000",
+"c c #808080",
+/* pixels */
+"                ",
+" aaaaaaaaaaaaaa ",
+" aba        a a ",
+" aba        aaa ",
+" aba        aba ",
+" aba        aba ",
+" aba        aba ",
+" aba        aba ",
+" abbaaaaaaaacba ",
+" abbbbbbbbbbbba ",
+" abbaaaaaaaaaba ",
+" abbaaaaaa  aba ",
+" abbaaaaaa  aba ",
+" abbaaaaaa  aba ",
+"  aaaaaaaaaaaaa "
+};
\ No newline at end of file


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/saveas.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/slanttree.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/slanttree.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/slanttree.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,24 @@
+/* XPM */
+static char * slanttree_xpm[] = {
+        /* columns rows colors chars-per-pixel */
+        "16 16 2 1",
+        "  c None",
+        "a c Black",
+        /* pixels */
+        "                ",
+        "                ",
+        "          a     ",
+        "         a      ",
+        "        a       ",
+        "       a a      ",
+        "      a   a     ",
+        "     a          ",
+        "    a           ",
+        "     a          ",
+        "      a         ",
+        "       a a      ",
+        "        a       ",
+        "         a      ",
+        "          a     ",
+        "                "
+        };
\ No newline at end of file


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/slanttree.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/zoomin.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/zoomin.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/zoomin.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,26 @@
+/* XPM */
+static const char *zoomin_xpm[] = {
+"16 16 6 1",
+"  c Gray0",
+". c #939393",
+"X c Gray63",
+"o c #aeaeae",
+"O c None",
+"+ c Gray100",
+"OOOo    XXoOOOOO",
+"Oo  ++++  XoOOOO",
+"O ++++++++ XoOOO",
+"o +++  +++ XXoOO",
+" ++++  ++++ XoOO",
+" ++      ++ XoOO",
+" ++      ++ XoOO",
+" ++++  ++++ XoOO",
+"o +++  +++ .oOOO",
+"O ++++++++ .oOOO",
+"Oo  ++++   .oOOO",
+"OOOo    O   XoOO",
+"OOOOOOOOOO   XoO",
+"OOOOOOOOOOO   XO",
+"OOOOOOOOOOOO   O",
+"OOOOOOOOOOOOO  O"
+};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/zoomin.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/zoomout.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/zoomout.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/zoomout.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,26 @@
+/* XPM */
+static const char *zoomout_xpm[] = {
+"16 16 6 1",
+"  c Gray0",
+". c #939393",
+"X c Gray63",
+"o c #aeaeae",
+"O c None",
+"+ c Gray100",
+"OOOOo    XXoOOOO",
+"OOo  ++++  XoOOO",
+"OO ++++++++ XoOO",
+"Oo ++++++++ XXoO",
+"O ++++++++++ XoO",
+"O ++      ++ XoO",
+"O ++      ++ XoO",
+"O ++++++++++ XoO",
+"Oo ++++++++ .oOO",
+"OO ++++++++ .oOO",
+"OOo  ++++   .oOO",
+"OOOOo    O   XoO",
+"OOOOOOOOOOO   Xo",
+"OOOOOOOOOOOO   X",
+"OOOOOOOOOOOOO   ",
+"OOOOOOOOOOOOOO  "
+};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/mac/zoomout.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/new.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/new.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/new.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,154 @@
+/* XPM */
+static char * new_xpm[] = {
+"24 24 127 2",
+"  	c None",
+". 	c #000000",
+"+ 	c #D3D3D3",
+"@ 	c #F6F6F6",
+"# 	c #FFFFFF",
+"$ 	c #F9F9F9",
+"% 	c #DADADA",
+"& 	c #585858",
+"* 	c #C7C7C7",
+"= 	c #D1D1D1",
+"- 	c #D6D6D6",
+"; 	c #FEFEFE",
+"> 	c #FDFDFD",
+", 	c #C0C0C0",
+"' 	c #E1E1E1",
+") 	c #F0F0F0",
+"! 	c #9B9B9B",
+"~ 	c #FCFCFB",
+"{ 	c #FBFBFB",
+"] 	c #AFAFAE",
+"^ 	c #E9E9E9",
+"/ 	c #DFDFDF",
+"( 	c #8F8F8F",
+"_ 	c #FAFAF9",
+": 	c #F9F9F8",
+"< 	c #A4A4A3",
+"[ 	c #F4F4F4",
+"} 	c #CFCFCF",
+"| 	c #A2A2A2",
+"1 	c #F8F8F7",
+"2 	c #F8F7F6",
+"3 	c #9E9E9E",
+"4 	c #F7F6F5",
+"5 	c #F6F6F4",
+"6 	c #F4F3F2",
+"7 	c #DEDDDC",
+"8 	c #D3D2D0",
+"9 	c #B7B7B5",
+"0 	c #9F9E9D",
+"a 	c #706F6F",
+"b 	c #65625A",
+"c 	c #F5F4F3",
+"d 	c #F2F2F0",
+"e 	c #E4E4E2",
+"f 	c #DAD9D7",
+"g 	c #D8D8D6",
+"h 	c #CDCCCA",
+"i 	c #AFAEAC",
+"j 	c #88847B",
+"k 	c #F3F3F1",
+"l 	c #EFEFED",
+"m 	c #EEEDEB",
+"n 	c #EDECEA",
+"o 	c #E9E8E6",
+"p 	c #D5D4D3",
+"q 	c #C4C3C2",
+"r 	c #8F8A81",
+"s 	c #F6F5F4",
+"t 	c #F5F5F3",
+"u 	c #F1F1EF",
+"v 	c #F1F0EE",
+"w 	c #ECEBE9",
+"x 	c #EAE9E7",
+"y 	c #E5E4E2",
+"z 	c #E4E3E0",
+"A 	c #D2D1CE",
+"B 	c #8D887E",
+"C 	c #F3F2F1",
+"D 	c #F0F0EE",
+"E 	c #F0EFED",
+"F 	c #EFEEEC",
+"G 	c #E8E7E5",
+"H 	c #E5E4E1",
+"I 	c #E2E1DE",
+"J 	c #E1DFDC",
+"K 	c #979288",
+"L 	c #A49E93",
+"M 	c #E8E7E4",
+"N 	c #E7E6E3",
+"O 	c #E3E2DF",
+"P 	c #E2E0DD",
+"Q 	c #E1E0DC",
+"R 	c #E0DFDB",
+"S 	c #A19C90",
+"T 	c #EDEDEB",
+"U 	c #EBEAE8",
+"V 	c #E9E8E5",
+"W 	c #E6E4E1",
+"X 	c #E3E2DE",
+"Y 	c #DFDEDA",
+"Z 	c #DEDDD9",
+"` 	c #DDDCD8",
+" .	c #A19B90",
+"..	c #E7E5E2",
+"+.	c #E4E3DF",
+"@.	c #DCDBD7",
+"#.	c #E6E5E2",
+"$.	c #E5E4E0",
+"%.	c #E2E1DD",
+"&.	c #DBD9D5",
+"*.	c #D9D7D3",
+"=.	c #9F998D",
+"-.	c #E4E2DF",
+";.	c #DDDBD7",
+">.	c #DCDAD6",
+",.	c #D8D6D2",
+"'.	c #9E988D",
+").	c #EDEDED",
+"!.	c #E1E0DD",
+"~.	c #E0DEDA",
+"{.	c #D8D6D1",
+"].	c #D7D5D1",
+"^.	c #9D978B",
+"/.	c #E1DFDB",
+"(.	c #DEDCD8",
+"_.	c #D7D6D1",
+":.	c #D5D3CE",
+"<.	c #9B958A",
+"[.	c #999891",
+"}.	c #A39E92",
+"|.	c #A39D92",
+"1.	c #A39D91",
+"2.	c #A29C90",
+"3.	c #A19B8F",
+"4.	c #9D978C",
+"5.	c #9B968A",
+"6.	c #676359",
+"                                                ",
+"      . . . . . . . . . . . . .                 ",
+"    . + @ # # # # # # # # $ % & .               ",
+"    . @ # # # # # # # # # # * = - .             ",
+"    . # # # # # # # ; # ; > , ' ) ! .           ",
+"    . # # # # # ; > ~ > ~ { ] ^ # / ( .         ",
+"    . # # # ; > ~ { _ { _ : < ) # [ } | .       ",
+"    . # ; > ~ { _ : 1 : 1 2 3 . . . . . . .     ",
+"    . # ~ { _ : 1 2 4 2 4 5 6 7 8 9 0 a b .     ",
+"    . # _ : 1 2 4 5 c 5 c 6 d e f g h i j .     ",
+"    . # 1 2 4 5 c 6 k 6 k d l m n o p q r .     ",
+"    . # s t 6 6 k d u d u v m w x y z A B .     ",
+"    . # 6 C d D l v E v E F w G H z I J K .     ",
+"    . # 6 C d D l v E v E F w G H z I J L .     ",
+"    . # D l l F m n n n n w M N O P Q R S .     ",
+"    . # T n w w w U V U V V H W X Y Z `  ..     ",
+"    . # U o o G M M N M N ..+.X R Z ` @. ..     ",
+"    . # N #.#.#.H W $.W $.+.%.R Z @.&.*.=..     ",
+"    . $ z O X -.+.%.X %.X Q Q Z ;.>.*.,.'..     ",
+"    . ).!.J Q R %.R Q R Q Y ~.;.>.*.{.].^..     ",
+"    . = /.~.Y Z R Z ~.Z ~.(.(.>.>.,._.:.<..     ",
+"    . [.}.L |.1.|.S 2.S 2.3. .=.=.4.4.5.6..     ",
+"      . . . . . . . . . . . . . . . . . .       ",
+"                                                "};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/new.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/next.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/next.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/next.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,32 @@
+/* XPM */
+static char * next_xpm[] = {
+/* width height ncolors cpp [x_hot y_hot] */
+"24 24 2 1 0 0",
+/* colors */
+" 	s none	m none	c none",
+".	s iconColor1	m black	c black",
+/* pixels */
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"        .               ",
+"        ..              ",
+"        ...             ",
+"        ....            ",
+"        .....           ",
+"        ......          ",
+"        .......         ",
+"        ........        ",
+"        .......         ",
+"        ......          ",
+"        .....           ",
+"        ....            ",
+"        ...             ",
+"        ..              ",
+"        .               ",
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"                        "};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/next.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/open.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/open.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/open.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,200 @@
+/* XPM */
+static char * open_xpm[] = {
+"24 24 173 2",
+"  	c None",
+". 	c #000000",
+"+ 	c #010100",
+"@ 	c #B5B8A5",
+"# 	c #E4E7D2",
+"$ 	c #878A76",
+"% 	c #33342B",
+"& 	c #0B0B0B",
+"* 	c #E2E5CF",
+"= 	c #CFD4AF",
+"- 	c #CED3AE",
+"; 	c #B2B696",
+"> 	c #2D2D25",
+", 	c #23241D",
+"' 	c #9D9F90",
+") 	c #C6CAA6",
+"! 	c #C4C9A5",
+"~ 	c #C6CBA7",
+"{ 	c #C7CCA8",
+"] 	c #C9CEA9",
+"^ 	c #555847",
+"/ 	c #1A1B15",
+"( 	c #20201A",
+"_ 	c #D4D6C2",
+": 	c #BEC2A0",
+"< 	c #B3B896",
+"[ 	c #B0B595",
+"} 	c #B3B797",
+"| 	c #B6BB99",
+"1 	c #BBC09E",
+"2 	c #BCC19F",
+"3 	c #81856C",
+"4 	c #3E3F32",
+"5 	c #010101",
+"6 	c #DADDC8",
+"7 	c #AFB494",
+"8 	c #AAAF8F",
+"9 	c #A3A789",
+"0 	c #A6AA8B",
+"a 	c #A9AD8E",
+"b 	c #A7AB8D",
+"c 	c #A4A88A",
+"d 	c #A1A588",
+"e 	c #AAAD96",
+"f 	c #B3B5A5",
+"g 	c #B8BBAA",
+"h 	c #BABCAB",
+"i 	c #C1C3B2",
+"j 	c #C7CAB7",
+"k 	c #CACDBB",
+"l 	c #BABDA8",
+"m 	c #0C0C09",
+"n 	c #DDDFCB",
+"o 	c #969B7E",
+"p 	c #9DA286",
+"q 	c #95987C",
+"r 	c #96997E",
+"s 	c #9A9D81",
+"t 	c #999D80",
+"u 	c #9DA184",
+"v 	c #A5AA8B",
+"w 	c #A4A98A",
+"x 	c #A3A889",
+"y 	c #A2A588",
+"z 	c #A2A587",
+"A 	c #9FA386",
+"B 	c #9B9E83",
+"C 	c #898D74",
+"D 	c #D8DBC9",
+"E 	c #84866E",
+"F 	c #7D8169",
+"G 	c #151612",
+"H 	c #D7DAC9",
+"I 	c #797D67",
+"J 	c #3D3F34",
+"K 	c #E0E0D9",
+"L 	c #EBEDDD",
+"M 	c #E8EBD9",
+"N 	c #E7EAD8",
+"O 	c #E3E6D4",
+"P 	c #DEE1D0",
+"Q 	c #DADCCC",
+"R 	c #DADCD1",
+"S 	c #2B2C28",
+"T 	c #D7DAC6",
+"U 	c #6F735E",
+"V 	c #0D0D0D",
+"W 	c #F4F4EC",
+"X 	c #CACFAB",
+"Y 	c #C6CBA8",
+"Z 	c #C2C6A4",
+"` 	c #ABB091",
+" .	c #23251E",
+"..	c #494B3D",
+"+.	c #DCDCD4",
+"@.	c #EAECDD",
+"#.	c #CDD2AD",
+"$.	c #CCD1AC",
+"%.	c #CACFAA",
+"&.	c #BABF9D",
+"*.	c #B5B999",
+"=.	c #81836C",
+"-.	c #070806",
+";.	c #D5D8C4",
+">.	c #161616",
+",.	c #F2F2EA",
+"'.	c #C9CEAA",
+").	c #C8CDA9",
+"!.	c #C4C9A6",
+"~.	c #C1C5A3",
+"{.	c #BCC09F",
+"].	c #B6BB9A",
+"^.	c #B0B494",
+"/.	c #9DA185",
+"(.	c #535445",
+"_.	c #B6B8A7",
+":.	c #747470",
+"<.	c #ECECE2",
+"[.	c #C3C8A5",
+"}.	c #C2C7A4",
+"|.	c #C0C5A2",
+"1.	c #BFC4A1",
+"2.	c #BDC2A0",
+"3.	c #B9BD9C",
+"4.	c #B9BE9D",
+"5.	c #A9AD8F",
+"6.	c #A3A78A",
+"7.	c #80836D",
+"8.	c #020201",
+"9.	c #A6A998",
+"0.	c #B8BC9B",
+"a.	c #AFB394",
+"b.	c #ACB091",
+"c.	c #A8AC8E",
+"d.	c #A6AA8C",
+"e.	c #9FA286",
+"f.	c #9B9F83",
+"g.	c #9A9D82",
+"h.	c #8A8D75",
+"i.	c #4F5243",
+"j.	c #070705",
+"k.	c #9E9F91",
+"l.	c #E5E6DA",
+"m.	c #ADB192",
+"n.	c #A5A98C",
+"o.	c #9FA387",
+"p.	c #999D81",
+"q.	c #95987E",
+"r.	c #92957B",
+"s.	c #8C8F76",
+"t.	c #8A8D74",
+"u.	c #71735F",
+"v.	c #080908",
+"w.	c #E3E5D9",
+"x.	c #C0C3AF",
+"y.	c #94987C",
+"z.	c #8F9379",
+"A.	c #8B8F75",
+"B.	c #8A8E74",
+"C.	c #888C73",
+"D.	c #858970",
+"E.	c #868971",
+"F.	c #82866E",
+"G.	c #80836C",
+"H.	c #7D8069",
+"I.	c #797C66",
+"J.	c #727560",
+"K.	c #717460",
+"L.	c #71745F",
+"M.	c #6A6D59",
+"N.	c #434538",
+"O.	c #080907",
+"P.	c #050504",
+"                                                ",
+"                                                ",
+"                                                ",
+"    . . . . . . .                               ",
+"  + @ # # # # # $ %                             ",
+"  & * = = = - - ; >                             ",
+", ' * ) ! ~ { ] ] ^ /                           ",
+"( _ : < [ } | 1 2 3 4 5 . . . . . . .           ",
+", 6 7 8 9 0 8 a b c d e f g h i j k l .         ",
+"m n o p q r s t r u v w x y 9 z A B C .         ",
+". D E F G . . . . . . . . . . . . . . . 5 5     ",
+". H I J K L M M M M M M M M M M M N O P Q R S   ",
+". T U V W = = = = = = = = = - - - X Y Z 1 `  .  ",
+". T ..+. at .#.- - #.- #.#.#.#.#.$.%.Y Z &.*.=.-.  ",
+". ;.>.,.X %.X %.'.%.'.{ ).).Y !.~.{.].^./.(.m   ",
+". _.:.<.[.}.}.Z |.Z 1.2.|.2.3.4.} [ 5.6.7.8.    ",
+". 9.+.0.0.*.} } [ [ a.a.a.b.c.d.e.f.g.h.i.j.    ",
+". k.l.m.5.d.n.6.6.d o.e.f.p.q.r.s.t.t.u.v.      ",
+". w.x.y.z.A.B.C.C.D.E.F.G.H.I.J.K.L.M.N.O.      ",
+"  . . . . . . . . . . . . . . . . . . P.        ",
+"                                                ",
+"                                                ",
+"                                                ",
+"                                                "};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/open.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/paste.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/paste.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/paste.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,156 @@
+/* XPM */
+static char * paste_xpm[] = {
+"24 24 129 2",
+"  	c None",
+". 	c #000000",
+"+ 	c #B9B9B9",
+"@ 	c #FEFEFE",
+"# 	c #F9F9F9",
+"$ 	c #757575",
+"% 	c #F5F5E8",
+"& 	c #565651",
+"* 	c #FFFFFF",
+"= 	c #A0A0A0",
+"- 	c #939393",
+"; 	c #7C7C7C",
+"> 	c #C5C5BB",
+", 	c #CFC6A0",
+"' 	c #D7CEAA",
+") 	c #ADA689",
+"! 	c #4B483C",
+"~ 	c #6D6D6D",
+"{ 	c #6C6C6C",
+"] 	c #A9A9A9",
+"^ 	c #3D3A30",
+"/ 	c #979178",
+"( 	c #C1B898",
+"_ 	c #8A793D",
+": 	c #C3BB9A",
+"< 	c #AFA78A",
+"[ 	c #444236",
+"} 	c #FAFAFA",
+"| 	c #EFEFEF",
+"1 	c #C7C7C7",
+"2 	c #D8D8D8",
+"3 	c #D2D2D2",
+"4 	c #7B7B7B",
+"5 	c #302E26",
+"6 	c #89846C",
+"7 	c #C4BC9A",
+"8 	c #847235",
+"9 	c #C5C5C5",
+"0 	c #A7A7A7",
+"a 	c #ADADAD",
+"b 	c #9A9A9A",
+"c 	c #9B9B9B",
+"d 	c #868686",
+"e 	c #424242",
+"f 	c #847033",
+"g 	c #C9C09E",
+"h 	c #464337",
+"i 	c #35332A",
+"j 	c #2D2B23",
+"k 	c #C6BE9D",
+"l 	c #826F33",
+"m 	c #7F7964",
+"n 	c #4C493C",
+"o 	c #171612",
+"p 	c #13120F",
+"q 	c #3E3B31",
+"r 	c #282210",
+"s 	c #474438",
+"t 	c #B3B3B3",
+"u 	c #D6D6D6",
+"v 	c #B7AE90",
+"w 	c #B1AA8C",
+"x 	c #37352B",
+"y 	c #151410",
+"z 	c #C9C9C9",
+"A 	c #E5E5E5",
+"B 	c #C6C6C6",
+"C 	c #B9B293",
+"D 	c #11100D",
+"E 	c #313131",
+"F 	c #B3D2BA",
+"G 	c #7BA676",
+"H 	c #618159",
+"I 	c #434035",
+"J 	c #8D8D8D",
+"K 	c #B4B4B4",
+"L 	c #2E2E2E",
+"M 	c #AFD2B6",
+"N 	c #79A674",
+"O 	c #62825A",
+"P 	c #888888",
+"Q 	c #BABABA",
+"R 	c #AAA48B",
+"S 	c #A5A086",
+"T 	c #A19A7F",
+"U 	c #312F26",
+"V 	c #AED2B6",
+"W 	c #78A672",
+"X 	c #608158",
+"Y 	c #DEDEDE",
+"Z 	c #252525",
+"` 	c #1D1D1D",
+" .	c #3E3E3E",
+"..	c #AFD2B7",
+"+.	c #545454",
+"@.	c #383838",
+"#.	c #AFA88C",
+"$.	c #050403",
+"%.	c #3D3D3D",
+"&.	c #688C60",
+"*.	c #6B9061",
+"=.	c #83A07A",
+"-.	c #464646",
+";.	c #12110E",
+">.	c #ABABAB",
+",.	c #484848",
+"'.	c #B1D2B8",
+").	c #ACD2B4",
+"!.	c #618458",
+"~.	c #618057",
+"{.	c #2B2B2B",
+"].	c #A9A489",
+"^.	c #A39E85",
+"/.	c #B0D2B7",
+"(.	c #57734A",
+"_.	c #212121",
+":.	c #797979",
+"<.	c #EBE7D0",
+"[.	c #282828",
+"}.	c #7AA674",
+"|.	c #222222",
+"1.	c #C0C0C0",
+"2.	c #D2C9A5",
+"3.	c #A29053",
+"4.	c #8E7C3D",
+"5.	c #88793B",
+"6.	c #806C2F",
+"7.	c #78652B",
+"8.	c #251F0C",
+"              . . . .                           ",
+"  . . . . . . + @ # $ . . . . . .               ",
+". % % % % % & * = - ; & > % % % , .             ",
+". % ' ' ' ) ! * ~ { ] ^ / ( ' ' _ .             ",
+". % : : < [ } | 1 2 3 4 5 6 < 7 8 .             ",
+". % ' ' ! 9 0 0 a b c d e ! ) ' f .             ",
+". % g : 6 h i j j j j j 5 6 < k l .             ",
+". % ' ' ' / / / / / / / / ( ' ' l .             ",
+". % g : : : : m n o p p p p ^ q r . . . .       ",
+". % ' ' ' ' ' s t * * * * * * * * * * * u .     ",
+". % v w w w w x * * * * * * * * * * * * * .     ",
+". % ' ' ' ' ' y * 0 z A . . . . . * z B * .     ",
+". % C w w w w D * * * * E F G H . 1 * * * .     ",
+". % ' ' ' ' ' I * J K * L M N O . P Q * * .     ",
+". % R S T T T U * * * * L V W X . c * * * .     ",
+". % ' ' ' ' ' I * Y Z `  ...W O . +. at .z * .     ",
+". % #.S T T T $.* * %...F M W &.*.=.-.c * .     ",
+". % ' ' ' ' ' ;.* + >.,.'.).W !.~.{.d 1 * .     ",
+". % ].^.T T T U * * * 1 ,./.W (._.:.1 * * .     ",
+". <.' ' ' ' ' I * 0 z A 1 [.}.|.P B 1.0 * .     ",
+". 2.3.4.5.6.7.8.* * * * * 1 @.c 1 * * * * .     ",
+"  . . . . . . . u * * * * * * * * * * * u .     ",
+"                . . . . . . . . . . . . .       ",
+"                                                "};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/paste.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/phylogram.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/phylogram.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/phylogram.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,32 @@
+/* XPM */
+static char * phylogram_xpm[] = {
+/* width height ncolors cpp [x_hot y_hot] */
+"24 24 2 1 0 0",
+/* colors */
+" 	s none	m none	c none",
+".	s iconColor1	m black	c black",
+/* pixels */
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"      ......            ",
+"      .                 ",
+"      .                 ",
+"      .                 ",
+"      .   .........     ",
+"      .   .             ",
+"      .   .             ",
+"      .....             ",
+"          .   ..        ",
+"          .   .         ",
+"          .....         ",
+"              .         ",
+"              ..        ",
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"                        "};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/phylogram.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/previous.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/previous.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/previous.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,32 @@
+/* XPM */
+static char * previous_xpm[] = {
+/* width height ncolors cpp [x_hot y_hot] */
+"24 24 2 1 0 0",
+/* colors */
+" 	s none	m none	c none",
+".	s iconColor1	m black	c black",
+/* pixels */
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"               .        ",
+"              ..        ",
+"             ...        ",
+"            ....        ",
+"           .....        ",
+"          ......        ",
+"         .......        ",
+"        ........        ",
+"         .......        ",
+"          ......        ",
+"           .....        ",
+"            ....        ",
+"             ...        ",
+"              ..        ",
+"               .        ",
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"                        "};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/previous.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/print.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/print.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/print.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,165 @@
+/* XPM */
+static char * print_xpm[] = {
+"24 24 138 2",
+"  	c None",
+". 	c #000000",
+"+ 	c #BABABA",
+"@ 	c #FFFFFF",
+"# 	c #F6F6F6",
+"$ 	c #8D8D8D",
+"% 	c #A6A6A6",
+"& 	c #B5B5B5",
+"* 	c #DADADA",
+"= 	c #838383",
+"- 	c #7A7A7A",
+"; 	c #797979",
+"> 	c #9F9F9F",
+", 	c #5C5C5C",
+"' 	c #878787",
+") 	c #7D7D7D",
+"! 	c #9A9A9A",
+"~ 	c #A7A7A7",
+"{ 	c #EDEDED",
+"] 	c #E9E9E9",
+"^ 	c #949494",
+"/ 	c #999999",
+"( 	c #E4E4E4",
+"_ 	c #A1A1A1",
+": 	c #C2C2C2",
+"< 	c #E1E1E1",
+"[ 	c #C8C8C8",
+"} 	c #CCCCCC",
+"| 	c #87847C",
+"1 	c #EAE8E3",
+"2 	c #8D8982",
+"3 	c #53524C",
+"4 	c #807D74",
+"5 	c #AAA9A5",
+"6 	c #BAB5AB",
+"7 	c #F3F3F3",
+"8 	c #C3C1BD",
+"9 	c #8B8B89",
+"0 	c #E6E5E1",
+"a 	c #F9F9F8",
+"b 	c #FAFAF9",
+"c 	c #F9F9F7",
+"d 	c #F7F6F5",
+"e 	c #F7F7F4",
+"f 	c #F6F5F4",
+"g 	c #F2F1EE",
+"h 	c #F0EFEC",
+"i 	c #E5E5E4",
+"j 	c #DFDED9",
+"k 	c #A4A3A1",
+"l 	c #6C6B6A",
+"m 	c #F5F4F3",
+"n 	c #BEBEBE",
+"o 	c #D5D5D5",
+"p 	c #B6B6B6",
+"q 	c #D3D3D3",
+"r 	c #D4D4D3",
+"s 	c #B7B7B7",
+"t 	c #D4D4D4",
+"u 	c #A9A9A9",
+"v 	c #CDCDCB",
+"w 	c #B5B5B4",
+"x 	c #DCDAD3",
+"y 	c #6B6B6A",
+"z 	c #999896",
+"A 	c #918F87",
+"B 	c #999895",
+"C 	c #E6E4E1",
+"D 	c #F0EEEC",
+"E 	c #FAFAFA",
+"F 	c #FAF9F9",
+"G 	c #F9F8F7",
+"H 	c #F8F7F6",
+"I 	c #F8F8F7",
+"J 	c #F4F3F1",
+"K 	c #F2F1EF",
+"L 	c #565655",
+"M 	c #858482",
+"N 	c #9C9B99",
+"O 	c #6B6A68",
+"P 	c #585858",
+"Q 	c #5E5C57",
+"R 	c #524F4B",
+"S 	c #4A4845",
+"T 	c #4B4A46",
+"U 	c #4B4946",
+"V 	c #4A4844",
+"W 	c #494743",
+"X 	c #484642",
+"Y 	c #474541",
+"Z 	c #464440",
+"` 	c #514F4B",
+" .	c #53514E",
+"..	c #7B7A77",
+"+.	c #797771",
+"@.	c #949391",
+"#.	c #989694",
+"$.	c #868480",
+"%.	c #6E6C66",
+"&.	c #706D67",
+"*.	c #5C5955",
+"=.	c #67645F",
+"-.	c #5B5954",
+";.	c #585651",
+">.	c #5D5B56",
+",.	c #595652",
+"'.	c #53504C",
+").	c #575450",
+"!.	c #595752",
+"~.	c #5C5956",
+"{.	c #5B5956",
+"].	c #61615E",
+"^.	c #696861",
+"/.	c #77756F",
+"(.	c #7E7B77",
+"_.	c #979690",
+":.	c #96938D",
+"<.	c #807E77",
+"[.	c #7D7A74",
+"}.	c #787770",
+"|.	c #716F6A",
+"1.	c #6E6C67",
+"2.	c #595753",
+"3.	c #63615C",
+"4.	c #686661",
+"5.	c #6F6E68",
+"6.	c #6D6C66",
+"7.	c #72716B",
+"8.	c #76746F",
+"9.	c #6A6963",
+"0.	c #8B8880",
+"a.	c #B2AFA8",
+"b.	c #B6B3AD",
+"c.	c #BFBDB6",
+"d.	c #BDBBB4",
+"e.	c #B0AEA6",
+"f.	c #ABA8A2",
+"g.	c #9C9991",
+"                                                ",
+"            . . . . . . . . . . . .             ",
+"          . + @ @ @ @ @ @ @ @ @ @ + .           ",
+"          . @ @ @ @ @ @ @ @ @ @ @ # .           ",
+"          . @ $ % & @ * @ @ @ @ @ # .           ",
+"          . @ @ @ @ @ @ @ @ @ @ @ # .           ",
+"          . @ = - % @ ; > * + , @ # .           ",
+"          . @ @ @ @ @ @ @ @ @ @ @ # .           ",
+"          . @ ' ) ! > * @ * ~ * @ # .           ",
+"          . # # # # # # # # # # # { .           ",
+"        . . ] ^ / % ( ^ _ ( % : ( < . .         ",
+"      . @ . [ } } } } } } } } } [ : . | .       ",
+"    . @ 1 2 3 . . . . . . . . . . 4 | 5 6 .     ",
+"  . @ @ 7 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 1 .   ",
+"  . 8 9 0 a b a c d e b b f g g h i 1 > j 6 .   ",
+"  . k l m n o p q p r s t u q & v w x y z A .   ",
+"  . B y C D d a E F a G H I I J J J K L M A .   ",
+"  . N O P Q R S T U U U V W X Y W Z `  ...+..   ",
+"  . @.#.$.%.&.*.=.-.;.-.>.,.'.).!.~.{.].^./..   ",
+"  . (._.:.A <.[.}./.|./.|.1.2.3.4.5.6.7.8.9..   ",
+"    . . . . . . . . . . . . . . . . . . . .     ",
+"    . 0.a.b.c.c.c.c.c.d.e.a.f.e.g.g.g.4 4 .     ",
+"      . . . . . . . . . . . . . . . . . .       ",
+"                                                "};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/print.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/print_preview.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/print_preview.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/print_preview.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,223 @@
+/* XPM */
+static char * print_preview_xpm[] = {
+"24 24 196 2",
+"  	c None",
+". 	c #000000",
+"+ 	c #BABABA",
+"@ 	c #FFFFFF",
+"# 	c #F6F6F6",
+"$ 	c #8D8D8D",
+"% 	c #A6A6A6",
+"& 	c #B5B5B5",
+"* 	c #DADADA",
+"= 	c #828282",
+"- 	c #797979",
+"; 	c #A4A4A4",
+"> 	c #FDFDFD",
+", 	c #787878",
+"' 	c #9E9E9E",
+") 	c #5C5C5C",
+"! 	c #FEFEFE",
+"~ 	c #FAFAFA",
+"{ 	c #F2F2F2",
+"] 	c #AFAFAF",
+"^ 	c #47473F",
+"/ 	c #0A0A09",
+"( 	c #4B4B43",
+"_ 	c #BBBBBB",
+": 	c #F8F8F8",
+"< 	c #7C7C7C",
+"[ 	c #484848",
+"} 	c #34342E",
+"| 	c #9D9D8D",
+"1 	c #CFCFB9",
+"2 	c #C4C4AF",
+"3 	c #8D8D7F",
+"4 	c #353530",
+"5 	c #9F9F9F",
+"6 	c #E2E2E2",
+"7 	c #CFCFCF",
+"8 	c #46463F",
+"9 	c #9C9C8C",
+"0 	c #E2E2D0",
+"a 	c #EDEDE7",
+"b 	c #C0C0AC",
+"c 	c #B2B29F",
+"d 	c #828274",
+"e 	c #4C4C44",
+"f 	c #EDEDED",
+"g 	c #C8C8C8",
+"h 	c #747474",
+"i 	c #090908",
+"j 	c #D5D5BF",
+"k 	c #FBFBFA",
+"l 	c #C3C3AE",
+"m 	c #B5B5A2",
+"n 	c #A6A695",
+"o 	c #9C9C8F",
+"p 	c #080807",
+"q 	c #E4E4E4",
+"r 	c #E1E1E1",
+"s 	c #9D9D9D",
+"t 	c #090909",
+"u 	c #CACAB5",
+"v 	c #DDDDD0",
+"w 	c #B7B7A4",
+"x 	c #AAAA98",
+"y 	c #9B9B8B",
+"z 	c #AEAEA3",
+"A 	c #C2C2C2",
+"B 	c #87847C",
+"C 	c #EAE8E3",
+"D 	c #848079",
+"E 	c #45443F",
+"F 	c #474740",
+"G 	c #929283",
+"H 	c #BABAA7",
+"I 	c #ADAD9B",
+"J 	c #9F9F8E",
+"K 	c #ACACA1",
+"L 	c #CFCFCB",
+"M 	c #4C4C45",
+"N 	c #807D74",
+"O 	c #AAA9A5",
+"P 	c #BAB5AB",
+"Q 	c #F3F3F3",
+"R 	c #DBDBDB",
+"S 	c #C9C9C9",
+"T 	c #838383",
+"U 	c #34342F",
+"V 	c #878779",
+"W 	c #A0A090",
+"X 	c #AEAEA2",
+"Y 	c #C3C3BE",
+"Z 	c #010101",
+"` 	c #C3C1BD",
+" .	c #8B8B89",
+"..	c #E6E5E1",
+"+.	c #F4F4F3",
+"@.	c #E6E6E5",
+"#.	c #D1D1D1",
+"$.	c #C4C4C2",
+"%.	c #8B8B8A",
+"&.	c #414141",
+"*.	c #A09F9D",
+"=.	c #404040",
+"-.	c #B5B5B4",
+";.	c #DFDED9",
+">.	c #A4A3A1",
+",.	c #6C6B6A",
+"'.	c #F5F4F3",
+").	c #BDBDBD",
+"!.	c #A7A7A7",
+"~.	c #979797",
+"{.	c #B0B0AF",
+"].	c #9B9B9B",
+"^.	c #B6B6B6",
+"/.	c #8C8C8C",
+"(.	c #B3B3B3",
+"_.	c #171717",
+":.	c #AEACA7",
+"<.	c #6A6A69",
+"[.	c #999896",
+"}.	c #918F87",
+"|.	c #999895",
+"1.	c #6B6B6A",
+"2.	c #E6E4E1",
+"3.	c #F0EEEC",
+"4.	c #F6F5F4",
+"5.	c #EAE9E9",
+"6.	c #E9E9E8",
+"7.	c #EBEAE9",
+"8.	c #E6E5E4",
+"9.	c #D4D4D4",
+"0.	c #CACAC9",
+"a.	c #979696",
+"b.	c #9C9C9C",
+"c.	c #545454",
+"d.	c #50504F",
+"e.	c #858482",
+"f.	c #9C9B99",
+"g.	c #6B6A68",
+"h.	c #585858",
+"i.	c #5E5C57",
+"j.	c #524F4B",
+"k.	c #494744",
+"l.	c #4A4945",
+"m.	c #4A4845",
+"n.	c #484642",
+"o.	c #43413D",
+"p.	c #3D3B38",
+"q.	c #393834",
+"r.	c #393836",
+"s.	c #757575",
+"t.	c #4C4C4C",
+"u.	c #7B7A77",
+"v.	c #797771",
+"w.	c #949391",
+"x.	c #989694",
+"y.	c #868480",
+"z.	c #6E6C66",
+"A.	c #706D67",
+"B.	c #5C5955",
+"C.	c #67645F",
+"D.	c #5B5954",
+"E.	c #585651",
+"F.	c #5C5A55",
+"G.	c #56534F",
+"H.	c #4C4945",
+"I.	c #4A4744",
+"J.	c #484743",
+"K.	c #4B4A48",
+"L.	c #848484",
+"M.	c #7D7D7D",
+"N.	c #696861",
+"O.	c #77756F",
+"P.	c #7E7B77",
+"Q.	c #979690",
+"R.	c #96938D",
+"S.	c #807E77",
+"T.	c #7D7A74",
+"U.	c #787770",
+"V.	c #716F6A",
+"W.	c #6D6B66",
+"X.	c #565450",
+"Y.	c #5A5954",
+"Z.	c #585752",
+"`.	c #605F5A",
+" +	c #676660",
+".+	c #72716B",
+"++	c #76746F",
+"@+	c #6A6963",
+"#+	c #8B8880",
+"$+	c #B2AFA8",
+"%+	c #B6B3AD",
+"&+	c #BFBDB6",
+"*+	c #BDBBB4",
+"=+	c #B0AEA6",
+"-+	c #ABA8A2",
+";+	c #9C9991",
+"                                                ",
+"            . . . . . . . . . . . .             ",
+"          . + @ @ @ @ @ @ @ @ @ @ + .           ",
+"          . @ @ @ @ @ @ @ @ @ @ @ # .           ",
+"          . @ $ % & @ * @ @ @ @ @ # .           ",
+"          . @ @ @ @ @ @ @ @ @ @ @ # .           ",
+"          . @ = - ; > , ' * + ) @ # .           ",
+"          . ! ~ { ] ^ / / ( _ @ @ # .           ",
+"          . : < [ } | 1 2 3 4 5 @ # .           ",
+"          . 6 7 8 9 0 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 / g A . B .       ",
+"    . @ C D E . F G H I J K L M . N B O P .     ",
+"  . @ @ Q { R S T U V W X Y Z Z @ @ @ @ @ C .   ",
+"  . `  ...+. at .#.$.%.( / / &.*.=.Z -.C 5 ;.P .   ",
+"  . >.,.'.).7 !.& ~.{.].^./.(.' =._.:.<.[.}..   ",
+"  . |.1.2.3.4.+.f 5.6.7.8.9.0.a.b.c.Z d.e.}..   ",
+"  . f.g.h.i.j.k.l.m.m.m.n.o.p.q.r.s.t.t.u.v..   ",
+"  . w.x.y.z.A.B.C.D.E.D.F.G.H.I.J.K.L.M.N.O..   ",
+"  . P.Q.R.}.S.T.U.O.V.O.V.W.X.Y.Z.`. +.+++ at +.   ",
+"    . . . . . . . . . . . . . . . . . . . .     ",
+"    . #+$+%+&+&+&+&+&+*+=+$+-+=+;+;+;+N N .     ",
+"      . . . . . . . . . . . . . . . . . .       ",
+"                                                "};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/print_preview.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/rectangletree.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/rectangletree.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/rectangletree.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,32 @@
+/* XPM */
+static char * rectangletree_xpm[] = {
+/* width height ncolors cpp [x_hot y_hot] */
+"24 24 2 1 0 0",
+/* colors */
+" 	s none	m none	c none",
+".	s iconColor1	m black	c black",
+/* pixels */
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"      .............     ",
+"      .                 ",
+"      .                 ",
+"      .                 ",
+"      .   .........     ",
+"      .   .             ",
+"      .   .             ",
+"      .....             ",
+"          .   .....     ",
+"          .   .         ",
+"          .....         ",
+"              .         ",
+"              .....     ",
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"                        "};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/rectangletree.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/saveas.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/saveas.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/saveas.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,123 @@
+/* XPM */
+static char * saveas_xpm[] = {
+"24 24 96 2",
+"  	c None",
+". 	c #000000",
+"+ 	c #F4CB34",
+"@ 	c #E3A445",
+"# 	c #E79E3C",
+"$ 	c #574C2A",
+"% 	c #F6F9FF",
+"& 	c #ABD5FF",
+"* 	c #CCCCCC",
+"= 	c #5F542E",
+"- 	c #C5E1FF",
+"; 	c #6699CC",
+"> 	c #999999",
+", 	c #524828",
+"' 	c #B4D9FF",
+") 	c #FFFFFF",
+"! 	c #203141",
+"~ 	c #E3A647",
+"{ 	c #2C4258",
+"] 	c #223446",
+"^ 	c #646464",
+"/ 	c #35506B",
+"( 	c #2B4258",
+"_ 	c #656565",
+": 	c #8D8D8D",
+"< 	c #45678A",
+"[ 	c #3A5876",
+"} 	c #D2AA71",
+"| 	c #6B6B6B",
+"1 	c #8C8C8C",
+"2 	c #9E9E9A",
+"3 	c #4E769D",
+"4 	c #4E4015",
+"5 	c #696966",
+"6 	c #686868",
+"7 	c #7C7C7C",
+"8 	c #B5B5B5",
+"9 	c #EFEFEF",
+"0 	c #060605",
+"a 	c #AAAAAA",
+"b 	c #A7A7A7",
+"c 	c #C6C6C6",
+"d 	c #E7E7E7",
+"e 	c #5C8AB8",
+"f 	c #EBF1F8",
+"g 	c #F5F5F5",
+"h 	c #BBCAD7",
+"i 	c #6496C8",
+"j 	c #5C8BB9",
+"k 	c #5B89B7",
+"l 	c #5A87B5",
+"m 	c #6598CB",
+"n 	c #8EA4BC",
+"o 	c #B8B8B8",
+"p 	c #C2C2C2",
+"q 	c #DFDFDF",
+"r 	c #72787D",
+"s 	c #2E465F",
+"t 	c #436587",
+"u 	c #6090C0",
+"v 	c #263A4F",
+"w 	c #304961",
+"x 	c #CBCBCB",
+"y 	c #25394C",
+"z 	c #4A7095",
+"A 	c #426385",
+"B 	c #6294C5",
+"C 	c #C1C1C1",
+"D 	c #2E455D",
+"E 	c #436688",
+"F 	c #B3B3B3",
+"G 	c #233648",
+"H 	c #486D91",
+"I 	c #556B81",
+"J 	c #5E8EBD",
+"K 	c #C0C0C0",
+"L 	c #293E54",
+"M 	c #466A8E",
+"N 	c #B4B4B4",
+"O 	c #9F9F9F",
+"P 	c #233649",
+"Q 	c #496E93",
+"R 	c #3A5977",
+"S 	c #4A5B6C",
+"T 	c #3C5B7A",
+"U 	c #919191",
+"V 	c #B2B2B2",
+"W 	c #808080",
+"X 	c #7D7D7D",
+"Y 	c #777777",
+"Z 	c #626262",
+"` 	c #575757",
+" .	c #192735",
+"..	c #344E69",
+"+.	c #36516D",
+"@.	c #263A4E",
+"                                                ",
+"                                      . .       ",
+"                                    . + @ .     ",
+"        . . . . . . . . . . . . . . + # $ .     ",
+"      . % & * * * * * * * * * * . + # = .       ",
+"      . - ; > > > > > > > > > . + # , . .       ",
+"      . ' ; ) ) ) ) ) ) ) ) . + # , . ! .       ",
+"      . ' ; ) ) ) ) ) ) ) . + ~ = . { ] .       ",
+"      . ' ; ) * * * * * . + # = . ^ / ( .       ",
+"      . ' ; ) ) ) ) ) . + # $ . _ : < [ .       ",
+"      . ' ; ) ) ) ) ) . } = . | 1 2 3 [ .       ",
+"      . ' ; ) * * * . 4 . . 5 6 7 8 3 [ .       ",
+"      . ' ; ) ) ) 9 0 . a b 8 c d d e [ .       ",
+"      . ' ; f ) g d d d d d d d d h e [ .       ",
+"      . ' ; ; i j e e e e e k l e e e [ .       ",
+"      . ' ; m n o o p q d * r s t e e [ .       ",
+"      . ' ; u o o v w d x o a y z A e [ .       ",
+"      . ' B e o C D E C o o F G H E e [ .       ",
+"      . I J e K q L M o o N O P Q E e R .       ",
+"        . S T U V W W X Y Z `  .w ..+. at ..       ",
+"          . . . . . . . . . . . . . . .         ",
+"                                                ",
+"                                                ",
+"                                                "};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/saveas.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/slanttree.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/slanttree.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/slanttree.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,32 @@
+/* XPM */
+static char * slanttree_xpm[] = {
+/* width height ncolors cpp [x_hot y_hot] */
+"24 24 2 1 0 0",
+/* colors */
+" 	s none	m none	c none",
+".	s iconColor1	m black	c black",
+/* pixels */
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"              .         ",
+"             .          ",
+"            .           ",
+"           .            ",
+"          .   .         ",
+"         .   .          ",
+"        .   .           ",
+"         . .            ",
+"          .   .         ",
+"           . .          ",
+"            .           ",
+"             .          ",
+"              .         ",
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"                        ",
+"                        "};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/slanttree.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/treeview.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/treeview.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/treeview.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,39 @@
+/* XPM */
+static char *treeview_xpm[] = {
+"32 32 4 1",
+"# c #000000000000",
+"  c None",
+"a c #FFFFFFFF0000",
+"b c #808080808080",
+"                                ",
+"                                ",
+"                                ",
+"                                ",
+"                                ",
+"                                ",
+"                                ",
+"  #####       #####       ##### ",
+" #aaa#b#     #aaa#b      #aaa#b ",
+"#####bbb#   #####b      #####b  ",
+" #aaa#bbb# #aaa#b      #aaa#b   ",
+"  #aaa#bbb#aaa#b      #aaa#b    ",
+"   #aaa#b#aaa#b      #aaa#b     ",
+"    #aaa#aaa#b      #aaa#b      ",
+"     #aaaaa#b#     #aaa#b       ",
+"      #aaa#bbb#   #aaa#b        ",
+"       #aaa#bbb# #aaa#b         ",
+"        #aaa#bbb#aaa#b          ",
+"         #aaa#b#aaa#b           ",
+"          #aaa#aaa#b            ",
+"           #aaaaa#b#            ",
+"            #aaa#bbb#           ",
+"             #aaa#bbb#          ",
+"              #aaa#bbb#         ",
+"               #aaa#bbb#        ",
+"                #aaa#bbb#       ",
+"                 #aaa#b#        ",
+"                  #####         ",
+"                                ",
+"                                ",
+"                                ",
+"                                "};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/treeview.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/zoomin.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/zoomin.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/zoomin.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,33 @@
+/* XPM */
+static char *zoomin_xpm[]={
+"24 24 6 1",
+". c None",
+"a c #000000",
+"d c #939393",
+"b c #a1a1a1",
+"# c #aeaeae",
+"c c #ffffff",
+"........................",
+"........................",
+"........................",
+"........................",
+".......#aaaabb#.........",
+".....#aaccccaab#........",
+".....accccccccab#.......",
+"....#acccaacccabb#......",
+"....accccaaccccab#......",
+"....accaaaaaaccab#......",
+"....accaaaaaaccab#......",
+"....accccaaccccab#......",
+"....#acccaacccad#.......",
+".....accccccccad#.......",
+".....#aaccccaaad#.......",
+".......#aaaa.aaab#......",
+"..............aaab#.....",
+"...............aaab.....",
+"................aaa.....",
+".................aa.....",
+"........................",
+"........................",
+"........................",
+"........................"};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/zoomin.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/bitmaps/zoomout.xpm
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/bitmaps/zoomout.xpm	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/bitmaps/zoomout.xpm	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,33 @@
+/* XPM */
+static char *zoomout_xpm[]={
+"24 24 6 1",
+". c None",
+"a c #000000",
+"d c #939393",
+"b c #a1a1a1",
+"# c #aeaeae",
+"c c #ffffff",
+"........................",
+"........................",
+"........................",
+"........................",
+".......#aaaabb#.........",
+".....#aaccccaab#........",
+".....accccccccab#.......",
+"....#accccccccabb#......",
+"....accccccccccab#......",
+"....accaaaaaaccab#......",
+"....accaaaaaaccab#......",
+"....accccccccccab#......",
+"....#accccccccad#.......",
+".....accccccccad#.......",
+".....#aaccccaaad#.......",
+".......#aaaa.aaab#......",
+"..............aaab#.....",
+"...............aaab.....",
+"................aaa.....",
+".................aa.....",
+"........................",
+"........................",
+"........................",
+"........................"};


Property changes on: trunk/packages/treeviewx/branches/upstream/current/bitmaps/zoomout.xpm
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/configure
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/configure	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/configure	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,3992 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.59.
+#
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+	 case $as_dir in
+	 /*)
+	   if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+	     CONFIG_SHELL=$as_dir/$as_base
+	     export CONFIG_SHELL
+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+	   fi;;
+	 esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='	' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_config_libobj_dir=.
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete.  It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+
+ac_unique_file="tview.cpp"
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE RANLIB ac_ct_RANLIB ENT_TRUE ENT_FALSE WX_CONFIG LIBOBJS LTLIBOBJS'
+ac_subst_files=''
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+ac_prev=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_option in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    eval "enable_$ac_feature=no" ;;
+
+  -enable-* | --enable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "enable_$ac_feature='$ac_optarg'" ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "with_$ac_package='$ac_optarg'" ;;
+
+  -without-* | --without-*)
+    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/-/_/g'`
+    eval "with_$ac_package=no" ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+    eval "$ac_envvar='$ac_optarg'"
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+	      localstatedir libdir includedir oldincludedir infodir mandir
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then its parent.
+  ac_confdir=`(dirname "$0") 2>/dev/null ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$0" : 'X\(//\)[^/]' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$0" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r $srcdir/$ac_unique_file; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+  if test "$ac_srcdir_defaulted" = yes; then
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+   { (exit 1); exit 1; }; }
+  else
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+  fi
+fi
+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+  { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+   { (exit 1); exit 1; }; }
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_CXX_set=${CXX+set}
+ac_env_CXX_value=$CXX
+ac_cv_env_CXX_set=${CXX+set}
+ac_cv_env_CXX_value=$CXX
+ac_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_env_CXXFLAGS_value=$CXXFLAGS
+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_cv_env_CXXFLAGS_value=$CXXFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+_ACEOF
+
+  cat <<_ACEOF
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+			  [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+			  [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR           user executables [EPREFIX/bin]
+  --sbindir=DIR          system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR       program executables [EPREFIX/libexec]
+  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
+  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
+  --libdir=DIR           object code libraries [EPREFIX/lib]
+  --includedir=DIR       C header files [PREFIX/include]
+  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
+  --infodir=DIR          info documentation [PREFIX/info]
+  --mandir=DIR           man documentation [PREFIX/man]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors
+
+Some influential environment variables:
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
+              headers in a nonstandard directory <include dir>
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+_ACEOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  ac_popdir=`pwd`
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d $ac_dir || continue
+    ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+    cd $ac_dir
+    # Check for guested configure; otherwise get Cygnus style configure.
+    if test -f $ac_srcdir/configure.gnu; then
+      echo
+      $SHELL $ac_srcdir/configure.gnu  --help=recursive
+    elif test -f $ac_srcdir/configure; then
+      echo
+      $SHELL $ac_srcdir/configure  --help=recursive
+    elif test -f $ac_srcdir/configure.ac ||
+	   test -f $ac_srcdir/configure.in; then
+      echo
+      $ac_configure --help
+    else
+      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi
+    cd $ac_popdir
+  done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+  cat <<\_ACEOF
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit 0
+fi
+exec 5>config.log
+cat >&5 <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.59.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  echo "PATH: $as_dir"
+done
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_sep=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    2)
+      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+      # Get rid of the leading space.
+      ac_sep=" "
+      ;;
+    esac
+  done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Be sure not to use single quotes in there, as some shells,
+# such as our DU 5.0 friend, will then `close' the trap.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+{
+  (set) 2>&1 |
+    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      sed -n \
+	"s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+      ;;
+    *)
+      sed -n \
+	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+}
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=$`echo $ac_var`
+      echo "$ac_var='"'"'$ac_val'"'"'"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------- ##
+## Output files. ##
+## ------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=$`echo $ac_var`
+	echo "$ac_var='"'"'$ac_val'"'"'"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      sed "/^$/d" confdefs.h | sort
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      echo "$as_me: caught signal $ac_signal"
+    echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core &&
+  rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+     ' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+  if test "x$prefix" != xNONE; then
+    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+  else
+    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+  fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+  if test -r "$ac_site_file"; then
+    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . $cache_file;;
+      *)                      . ./$cache_file;;
+    esac
+  fi
+else
+  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in `(set) 2>&1 |
+	       sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+  eval ac_new_val="\$ac_env_${ac_var}_value"
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	{ echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	{ echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
+echo "$as_me:   former value:  $ac_old_val" >&2;}
+	{ echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
+echo "$as_me:   current value: $ac_new_val" >&2;}
+	ac_cache_corrupted=:
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+am__api_version="1.9"
+ac_aux_dir=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+  if test -f $ac_dir/install-sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f $ac_dir/install.sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f $ac_dir/shtool; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	    break 3
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+done
+
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  We don't cache a
+    # path for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the path is relative.
+    INSTALL=$ac_install_sh
+  fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$*" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$*" != "X $srcdir/configure conftest.file" \
+      && test "$*" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      { { echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&5
+echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&2;}
+   { (exit 1); exit 1; }; }
+   fi
+
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+test "$program_prefix" != NONE &&
+  program_transform_name="s,^,$program_prefix,;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s,\$,$program_suffix,;$program_transform_name"
+# Double any \ or $.  echo might interpret backslashes.
+# By default was `s,x,x', remove it if useless.
+cat <<\_ACEOF >conftest.sed
+s/[\\$]/&&/g;s/;s,x,x,$//
+_ACEOF
+program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+rm conftest.sed
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+  # We used to keeping the `.' as first argument, in order to
+  # allow $(mkdir_p) to be used without argument.  As in
+  #   $(mkdir_p) $(somedir)
+  # where $(somedir) is conditionally defined.  However this is wrong
+  # for two reasons:
+  #  1. if the package is installed by a user who cannot write `.'
+  #     make install will fail,
+  #  2. the above comment should most certainly read
+  #     $(mkdir_p) $(DESTDIR)$(somedir)
+  #     so it does not work when $(somedir) is undefined and
+  #     $(DESTDIR) is not.
+  #  To support the latter case, we have to write
+  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+  #  so the `.' trick is pointless.
+  mkdir_p='mkdir -p --'
+else
+  # On NextStep and OpenStep, the `mkdir' command does not
+  # recognize any option.  It will interpret all options as
+  # directories to create, and then abort because `.' already
+  # exists.
+  for d in ./-p ./--version;
+  do
+    test -d $d && rmdir $d
+  done
+  # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+  if test -f "$ac_aux_dir/mkinstalldirs"; then
+    mkdir_p='$(mkinstalldirs)'
+  else
+    mkdir_p='$(install_sh) -d'
+  fi
+fi
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AWK+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  echo "$as_me:$LINENO: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$AWK" && break
+done
+
+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.make <<\_ACEOF
+all:
+	@echo 'ac_maketemp="$(MAKE)"'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+  eval ac_cv_prog_make_${ac_make}_set=yes
+else
+  eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  SET_MAKE=
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+   test -f $srcdir/config.status; then
+  { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE=tv
+ VERSION=0.5.1
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  STRIP=$ac_ct_STRIP
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  echo "$as_me:$LINENO: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_CXX" && break
+done
+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+  CXX=$ac_ct_CXX
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+     "checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+echo "$as_me:$LINENO: checking for C++ compiler default output file name" >&5
+echo $ECHO_N "checking for C++ compiler default output file name... $ECHO_C" >&6
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+  (eval $ac_link_default) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Find the output, starting from the most likely.  This scheme is
+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+# resort.
+
+# Be careful to initialize this variable, since it used to be cached.
+# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+ac_cv_exeext=
+# b.out is created by i960 compilers.
+for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+	;;
+    conftest.$ac_ext )
+	# This is the source file.
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	# FIXME: I believe we export ac_cv_exeext for Libtool,
+	# but it would be cool to find out if it's true.  Does anybody
+	# maintain Libtool? --akim.
+	export ac_cv_exeext
+	break;;
+    * )
+	break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: C++ compiler cannot create executables
+See \`config.log' for more details." >&5
+echo "$as_me: error: C++ compiler cannot create executables
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether the C++ compiler works" >&5
+echo $ECHO_N "checking whether the C++ compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { echo "$as_me:$LINENO: error: cannot run C++ compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run C++ compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+  fi
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  export ac_cv_exeext
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
+GXX=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cxx_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cxx_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+for ac_declaration in \
+   '' \
+   'extern "C" void std::exit (int) throw (); using std::exit;' \
+   'extern "C" void std::exit (int); using std::exit;' \
+   'extern "C" void exit (int) throw ();' \
+   'extern "C" void exit (int);' \
+   'void exit (int);'
+do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+  echo '#ifdef __cplusplus' >>confdefs.h
+  echo $ac_declaration      >>confdefs.h
+  echo '#endif'             >>confdefs.h
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+          ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+
+
+echo "$as_me:$LINENO: result: $_am_result" >&5
+echo "${ECHO_T}$_am_result" >&6
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then
+  enableval="$enable_dependency_tracking"
+
+fi;
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+
+
+if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+
+
+depcc="$CXX"  am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+
+
+if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
+else
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
+fi
+
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	    break 3
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+done
+
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  We don't cache a
+    # path for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the path is relative.
+    INSTALL=$ac_install_sh
+  fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+#AC_ARG_PROGRAM
+
+# We need ranlib to make the library, and we need to define make
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  RANLIB=$ac_ct_RANLIB
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.make <<\_ACEOF
+all:
+	@echo 'ac_maketemp="$(MAKE)"'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+  eval ac_cv_prog_make_${ac_make}_set=yes
+else
+  eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  SET_MAKE=
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+
+# Ensure that we set ENT (and set it to false). This flag affects
+# the Makefile for TreeLib
+
+
+if false; then
+  ENT_TRUE=
+  ENT_FALSE='#'
+else
+  ENT_TRUE='#'
+  ENT_FALSE=
+fi
+
+
+
+
+# Extract the first word of "wx-config", so it can be a program name with args.
+set dummy wx-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_WX_CONFIG+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $WX_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_WX_CONFIG="$WX_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_WX_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_WX_CONFIG" && ac_cv_path_WX_CONFIG="no"
+  ;;
+esac
+fi
+WX_CONFIG=$ac_cv_path_WX_CONFIG
+
+if test -n "$WX_CONFIG"; then
+  echo "$as_me:$LINENO: result: $WX_CONFIG" >&5
+echo "${ECHO_T}$WX_CONFIG" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if [ "$WX_CONFIG" = "no" ] ; then
+   { { echo "$as_me:$LINENO: error: \"Could not find wx-config: is wxWindows installed?\"" >&5
+echo "$as_me: error: \"Could not find wx-config: is wxWindows installed?\"" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+CXXFLAGS="$CXXFLAGS -Wno-deprecated"
+
+echo "$as_me:$LINENO: checking wxWindows version" >&5
+echo $ECHO_N "checking wxWindows version... $ECHO_C" >&6
+wx_version=`$WX_CONFIG --version`
+echo "$as_me:$LINENO: result: $wx_version" >&5
+echo "${ECHO_T}$wx_version" >&6
+case "$wx_version" in
+   2.2.*)  { echo "$as_me:$LINENO: WARNING: wxWindows is older than 2.3., setting CXXFLAGS using --cflags" >&5
+echo "$as_me: WARNING: wxWindows is older than 2.3., setting CXXFLAGS using --cflags" >&2;}
+           CXXFLAGS="$CXXFLAGS `$WX_CONFIG --cflags` -DUSE_WXWINDOWS"
+           ;;
+   *)      CXXFLAGS="$CXXFLAGS `$WX_CONFIG --cxxflags` -DUSE_WXWINDOWS"
+           ;;
+esac
+
+LIBS="$LIBS `$WX_CONFIG --libs`"
+
+# Do we have SVG support?
+# Set this to 0 when building an RPM on Linux,
+# otherwise test for existence of SVG library.
+# The reason for this is wxGTK RPMs from wxWidgets.org
+# do  not have the required SVG library (which is a contribution)
+echo "$as_me:$LINENO: checking whether we will use SVG" >&5
+echo $ECHO_N "checking whether we will use SVG... $ECHO_C" >&6
+USE_SVG=1
+WX_SVG_LIB=
+if test "$USE_SVG" = 0 ; then
+   echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+else
+   echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+      case "$wx_version" in
+     2.4.*) WX_SVG_LIB=`$WX_CONFIG --basename`_dcsvg-`echo ${wx_version} | sed -e "s:\.[0-9]\{1,\}$::"`
+           ;;
+     *)    WX_SVG_LIB=`$WX_CONFIG --basename`_svg-`echo ${wx_version} | sed -e "s:\.[0-9]\{1,\}$::"`
+           ;;
+  esac
+
+
+
+as_ac_Lib=`echo "ac_cv_lib_$WX_SVG_LIB''_main" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for main in -l$WX_SVG_LIB" >&5
+echo $ECHO_N "checking for main in -l$WX_SVG_LIB... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Lib+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$WX_SVG_LIB  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_Lib=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Lib=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Lib'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6
+if test `eval echo '${'$as_ac_Lib'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_LIB$WX_SVG_LIB" | $as_tr_cpp` 1
+_ACEOF
+
+  LIBS="-l$WX_SVG_LIB $LIBS"
+
+else
+  { echo "$as_me:$LINENO: WARNING: \"library required for SVG support not found\"" >&5
+echo "$as_me: WARNING: \"library required for SVG support not found\"" >&2;}
+fi
+
+fi
+
+
+if test "$USE_SVG" = 1 ; then
+   CXXFLAGS="$CXXFLAGS -DUSE_SVG"
+   LIBS="$LIBS -l$WX_SVG_LIB"
+fi
+
+                                                  ac_config_files="$ac_config_files Makefile ncl-2.0/Makefile ncl-2.0/src/Makefile TreeLib/Makefile tv.spec"
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+  (set) 2>&1 |
+    case `(ac_space=' '; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;;
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n \
+	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+} |
+  sed '
+     t clear
+     : clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
+  if test -w $cache_file; then
+    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+    cat confcache >$cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[	 ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[	 ]*$//;
+}'
+fi
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then we branch to the quote section.  Otherwise,
+# look for a macro that doesn't take arguments.
+cat >confdef2opt.sed <<\_ACEOF
+t clear
+: clear
+s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*([^)]*)\)[	 ]*\(.*\),-D\1=\2,g
+t quote
+s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\),-D\1=\2,g
+t quote
+d
+: quote
+s,[	 `~#$^&*(){}\\|;'"<>?],\\&,g
+s,\[,\\&,g
+s,\],\\&,g
+s,\$,$$,g
+p
+_ACEOF
+# We use echo to avoid assuming a particular line-breaking character.
+# The extra dot is to prevent the shell from consuming trailing
+# line-breaks from the sub-command output.  A line-break within
+# single-quotes doesn't work because, if this script is created in a
+# platform that uses two characters for line-breaks (e.g., DOS), tr
+# would break.
+ac_LF_and_DOT=`echo; echo .`
+DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`
+rm -f confdef2opt.sed
+
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_i=`echo "$ac_i" |
+	 sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+  # 2. Add them.
+  ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+  ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${ENT_TRUE}" && test -z "${ENT_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"ENT\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"ENT\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+	 case $as_dir in
+	 /*)
+	   if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+	     CONFIG_SHELL=$as_dir/$as_base
+	     export CONFIG_SHELL
+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+	   fi;;
+	 esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='	' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.  Logging --version etc. is OK.
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.59.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number, then exit
+  -q, --quiet      do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=FILE[:TEMPLATE]
+		   instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf at gnu.org>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.59,
+  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+INSTALL="$INSTALL"
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "x$1" : 'x\([^=]*\)='`
+    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  -*)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  *) # This is not an option, so the user has probably given explicit
+     # arguments.
+     ac_option=$1
+     ac_need_defaults=false;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --vers* | -V )
+    echo "$ac_cs_version"; exit 0 ;;
+  --he | --h)
+    # Conflict between --help and --header
+    { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit 0 ;;
+  --debug | --d* | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+    ac_need_defaults=false;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1" ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+  echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+  exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+#
+# INIT-COMMANDS section.
+#
+
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+  case "$ac_config_target" in
+  # Handling of arguments.
+  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+  "ncl-2.0/Makefile" ) CONFIG_FILES="$CONFIG_FILES ncl-2.0/Makefile" ;;
+  "ncl-2.0/src/Makefile" ) CONFIG_FILES="$CONFIG_FILES ncl-2.0/src/Makefile" ;;
+  "TreeLib/Makefile" ) CONFIG_FILES="$CONFIG_FILES TreeLib/Makefile" ;;
+  "tv.spec" ) CONFIG_FILES="$CONFIG_FILES tv.spec" ;;
+  "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./confstat$$-$RANDOM
+  (umask 077 && mkdir $tmp)
+} ||
+{
+   echo "$me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+  # Protect against being on the right side of a sed subst in config.status.
+  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s, at SHELL@,$SHELL,;t t
+s, at PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s, at PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s, at PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s, at PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s, at PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s, at PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s, at exec_prefix@,$exec_prefix,;t t
+s, at prefix@,$prefix,;t t
+s, at program_transform_name@,$program_transform_name,;t t
+s, at bindir@,$bindir,;t t
+s, at sbindir@,$sbindir,;t t
+s, at libexecdir@,$libexecdir,;t t
+s, at datadir@,$datadir,;t t
+s, at sysconfdir@,$sysconfdir,;t t
+s, at sharedstatedir@,$sharedstatedir,;t t
+s, at localstatedir@,$localstatedir,;t t
+s, at libdir@,$libdir,;t t
+s, at includedir@,$includedir,;t t
+s, at oldincludedir@,$oldincludedir,;t t
+s, at infodir@,$infodir,;t t
+s, at mandir@,$mandir,;t t
+s, at build_alias@,$build_alias,;t t
+s, at host_alias@,$host_alias,;t t
+s, at target_alias@,$target_alias,;t t
+s, at DEFS@,$DEFS,;t t
+s, at ECHO_C@,$ECHO_C,;t t
+s, at ECHO_N@,$ECHO_N,;t t
+s, at ECHO_T@,$ECHO_T,;t t
+s, at LIBS@,$LIBS,;t t
+s, at INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s, at INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s, at INSTALL_DATA@,$INSTALL_DATA,;t t
+s, at CYGPATH_W@,$CYGPATH_W,;t t
+s, at PACKAGE@,$PACKAGE,;t t
+s, at VERSION@,$VERSION,;t t
+s, at ACLOCAL@,$ACLOCAL,;t t
+s, at AUTOCONF@,$AUTOCONF,;t t
+s, at AUTOMAKE@,$AUTOMAKE,;t t
+s, at AUTOHEADER@,$AUTOHEADER,;t t
+s, at MAKEINFO@,$MAKEINFO,;t t
+s, at install_sh@,$install_sh,;t t
+s, at STRIP@,$STRIP,;t t
+s, at ac_ct_STRIP@,$ac_ct_STRIP,;t t
+s, at INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
+s, at mkdir_p@,$mkdir_p,;t t
+s, at AWK@,$AWK,;t t
+s, at SET_MAKE@,$SET_MAKE,;t t
+s, at am__leading_dot@,$am__leading_dot,;t t
+s, at AMTAR@,$AMTAR,;t t
+s, at am__tar@,$am__tar,;t t
+s, at am__untar@,$am__untar,;t t
+s, at CXX@,$CXX,;t t
+s, at CXXFLAGS@,$CXXFLAGS,;t t
+s, at LDFLAGS@,$LDFLAGS,;t t
+s, at CPPFLAGS@,$CPPFLAGS,;t t
+s, at ac_ct_CXX@,$ac_ct_CXX,;t t
+s, at EXEEXT@,$EXEEXT,;t t
+s, at OBJEXT@,$OBJEXT,;t t
+s, at DEPDIR@,$DEPDIR,;t t
+s, at am__include@,$am__include,;t t
+s, at am__quote@,$am__quote,;t t
+s, at AMDEP_TRUE@,$AMDEP_TRUE,;t t
+s, at AMDEP_FALSE@,$AMDEP_FALSE,;t t
+s, at AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
+s, at CXXDEPMODE@,$CXXDEPMODE,;t t
+s, at am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t
+s, at am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t
+s, at RANLIB@,$RANLIB,;t t
+s, at ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s, at ENT_TRUE@,$ENT_TRUE,;t t
+s, at ENT_FALSE@,$ENT_FALSE,;t t
+s, at WX_CONFIG@,$WX_CONFIG,;t t
+s, at LIBOBJS@,$LIBOBJS,;t t
+s, at LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+  cat >>$CONFIG_STATUS <<\_ACEOF
+  # Split the substitutions into bite-sized pieces for seds with
+  # small command number limits, like on Digital OSF/1 and HP-UX.
+  ac_max_sed_lines=48
+  ac_sed_frag=1 # Number of current file.
+  ac_beg=1 # First line for current file.
+  ac_end=$ac_max_sed_lines # Line after last line for current file.
+  ac_more_lines=:
+  ac_sed_cmds=
+  while $ac_more_lines; do
+    if test $ac_beg -gt 1; then
+      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    else
+      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    fi
+    if test ! -s $tmp/subs.frag; then
+      ac_more_lines=false
+    else
+      # The purpose of the label and of the branching condition is to
+      # speed up the sed processing (if there are no `@' at all, there
+      # is no need to browse any of the substitutions).
+      # These are the two extra sed commands mentioned above.
+      (echo ':t
+  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+      if test -z "$ac_sed_cmds"; then
+	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+      else
+	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+      fi
+      ac_sed_frag=`expr $ac_sed_frag + 1`
+      ac_beg=$ac_end
+      ac_end=`expr $ac_end + $ac_max_sed_lines`
+    fi
+  done
+  if test -z "$ac_sed_cmds"; then
+    ac_sed_cmds=cat
+  fi
+fi # test -n "$CONFIG_FILES"
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+	cat >$tmp/stdin
+	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+  esac
+
+  if test x"$ac_file" != x-; then
+    { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    configure_input=
+  else
+    configure_input="$ac_file.  "
+  fi
+  configure_input=$configure_input"Generated from `echo $ac_file_in |
+				     sed 's,.*/,,'` by configure."
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+	 # Absolute (can't be DOS-style, as IFS=:)
+	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 echo "$f";;
+      *) # Relative
+	 if test -f "$f"; then
+	   # Build tree
+	   echo "$f"
+	 elif test -f "$srcdir/$f"; then
+	   # Source tree
+	   echo "$srcdir/$f"
+	 else
+	   # /dev/null tree
+	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+  sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s, at configure_input@,$configure_input,;t t
+s, at srcdir@,$ac_srcdir,;t t
+s, at abs_srcdir@,$ac_abs_srcdir,;t t
+s, at top_srcdir@,$ac_top_srcdir,;t t
+s, at abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s, at builddir@,$ac_builddir,;t t
+s, at abs_builddir@,$ac_abs_builddir,;t t
+s, at top_builddir@,$ac_top_builddir,;t t
+s, at abs_top_builddir@,$ac_abs_top_builddir,;t t
+s, at INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+  rm -f $tmp/stdin
+  if test x"$ac_file" != x-; then
+    mv $tmp/out $ac_file
+  else
+    cat $tmp/out
+    rm -f $tmp/out
+  fi
+
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_COMMANDS section.
+#
+for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+  ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+  ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+  ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
+$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_dest" : 'X\(//\)[^/]' \| \
+	 X"$ac_dest" : 'X\(//\)$' \| \
+	 X"$ac_dest" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_dest" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+
+  { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
+echo "$as_me: executing $ac_dest commands" >&6;}
+  case $ac_dest in
+    depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # So let's grep whole file.
+  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+    dirpart=`(dirname "$mf") 2>/dev/null ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$mf" : 'X\(//\)[^/]' \| \
+	 X"$mf" : 'X\(//\)$' \| \
+	 X"$mf" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  else
+    continue
+  fi
+  # Extract the definition of DEPDIR, am__include, and am__quote
+  # from the Makefile without running `make'.
+  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  am__include=`sed -n 's/^am__include = //p' < "$mf"`
+  test -z "am__include" && continue
+  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n 's/^U = //p' < "$mf"`
+  # Find all dependency output files, they are included files with
+  # $(DEPDIR) in their names.  We invoke sed twice because it is the
+  # simplest approach to changing $(DEPDIR) to its actual value in the
+  # expansion.
+  for file in `sed -n "
+    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`(dirname "$file") 2>/dev/null ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$file" : 'X\(//\)[^/]' \| \
+	 X"$file" : 'X\(//\)$' \| \
+	 X"$file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    { if $as_mkdir_p; then
+    mkdir -p $dirpart/$fdir
+  else
+    as_dir=$dirpart/$fdir
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
+echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+ ;;
+  esac
+done
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || { (exit 1); exit 1; }
+fi
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/configure
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/configure.in
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/configure.in	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/configure.in	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,83 @@
+# $Id: configure.in,v 1.19 2005/08/31 14:08:28 rdmp1c Exp $
+
+dnl Process this file with autoconf to produce a configure script
+
+AC_INIT(tview.cpp)
+AM_INIT_AUTOMAKE(tv, 0.5.1)
+AC_PROG_CXX
+AC_LANG_CPLUSPLUS
+AC_PROG_INSTALL
+#AC_ARG_PROGRAM
+
+# We need ranlib to make the library, and we need to define make
+AC_PROG_RANLIB
+AC_PROG_MAKE_SET
+
+# Ensure that we set ENT (and set it to false). This flag affects
+# the Makefile for TreeLib
+AM_CONDITIONAL(ENT, false)
+
+
+
+dnl We need wxWindows to be installed
+AC_PATH_PROG(WX_CONFIG, wx-config, no)
+if [[ "$WX_CONFIG" = "no" ]] ; then
+   AC_MSG_ERROR("Could not find wx-config: is wxWindows installed?")
+fi
+
+dnl Set compiler flagsthat don't relate to wxWindows
+CXXFLAGS="$CXXFLAGS -Wno-deprecated"
+
+dnl We use wx-config to set the compiler flags. In wxWindows 2.2.x
+dnl this was done using `wx-config --cflags` regardless of whether
+dnl the code is C or C++. Version 2.3.x uses --cxxflags for C++.
+dnl Because --cxxflags is not a valid option for wx-config prior 
+dnl to 2.3.x, we need to check which version of wxWindows we are 
+dnl using and set $CXXFLAGS accordingly.
+dnl
+AC_MSG_CHECKING(wxWindows version)
+wx_version=`$WX_CONFIG --version`
+AC_MSG_RESULT($wx_version)
+case "$wx_version" in
+   2.2.*)  AC_MSG_WARN([wxWindows is older than 2.3., setting CXXFLAGS using --cflags])
+           CXXFLAGS="$CXXFLAGS `$WX_CONFIG --cflags` -DUSE_WXWINDOWS"
+           ;;
+   *)      CXXFLAGS="$CXXFLAGS `$WX_CONFIG --cxxflags` -DUSE_WXWINDOWS"
+           ;;
+esac
+
+LIBS="$LIBS `$WX_CONFIG --libs`"
+
+# Do we have SVG support? 
+# Set this to 0 when building an RPM on Linux,
+# otherwise test for existence of SVG library. 
+# The reason for this is wxGTK RPMs from wxWidgets.org
+# do  not have the required SVG library (which is a contribution)
+AC_MSG_CHECKING(whether we will use SVG)
+USE_SVG=1
+WX_SVG_LIB=
+if test "$USE_SVG" = 0 ; then
+   AC_MSG_RESULT(no)
+else
+   AC_MSG_RESULT(yes)
+
+  dnl Andreas Pokorny provided this patch to test for the presence of SVG support.
+  dnl Note that the name of the contributed SVG library changed between 2.4 and 2.6 (sigh)
+  case "$wx_version" in
+     2.4.*) WX_SVG_LIB=[`$WX_CONFIG --basename`_dcsvg-`echo ${wx_version} | sed -e "s:\.[0-9]\{1,\}$::"`]
+           ;;
+     *)    WX_SVG_LIB=[`$WX_CONFIG --basename`_svg-`echo ${wx_version} | sed -e "s:\.[0-9]\{1,\}$::"`]
+           ;;
+  esac
+
+  AC_CHECK_LIB($WX_SVG_LIB, main,  [], [AC_MSG_WARN("library required for SVG support not found")])
+fi
+
+
+if test "$USE_SVG" = 1 ; then
+   CXXFLAGS="$CXXFLAGS -DUSE_SVG"
+   LIBS="$LIBS -l$WX_SVG_LIB"
+fi
+
+AC_OUTPUT(Makefile ncl-2.0/Makefile ncl-2.0/src/Makefile TreeLib/Makefile tv.spec)
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/configure.in
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/depcomp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/depcomp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/depcomp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,522 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2004-05-31.23
+
+# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
+
+# 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, 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.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva at dcc.unicamp.br>.
+
+case $1 in
+  '')
+     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by `PROGRAMS ARGS'.
+  object      Object file output by `PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputing dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake at gnu.org>.
+EOF
+    exit 0
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit 0
+    ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like `#:fec' to the end of the
+    # dependency line.
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> $depfile
+    echo >> $depfile
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> $depfile
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
+  tmpdepfile="$stripped.u"
+  if test "$libtool" = yes; then
+    "$@" -Wc,-M
+  else
+    "$@" -M
+  fi
+  stat=$?
+
+  if test -f "$tmpdepfile"; then :
+  else
+    stripped=`echo "$stripped" | sed 's,^.*/,,'`
+    tmpdepfile="$stripped.u"
+  fi
+
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+
+  if test -f "$tmpdepfile"; then
+    outname="$stripped.o"
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
+    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using \ :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      # Dependencies are output in .lo.d with libtool 1.4.
+      # With libtool 1.5 they are output both in $dir.libs/$base.o.d
+      # and in $dir.libs/$base.o.d and $dir$base.o.d.  We process the
+      # latter, because the former will be cleaned when $dir.libs is
+      # erased.
+      tmpdepfile1="$dir.libs/$base.lo.d"
+      tmpdepfile2="$dir$base.o.d"
+      tmpdepfile3="$dir.libs/$base.d"
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1="$dir$base.o.d"
+      tmpdepfile2="$dir$base.d"
+      tmpdepfile3="$dir$base.d"
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+      exit $stat
+   fi
+
+   if test -f "$tmpdepfile1"; then
+      tmpdepfile="$tmpdepfile1"
+   elif test -f "$tmpdepfile2"; then
+      tmpdepfile="$tmpdepfile2"
+   else
+      tmpdepfile="$tmpdepfile3"
+   fi
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a tab and a space in the [].
+      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for `:'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  "$@" $dashmflag |
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no
+  for arg in "$@"; do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix="`echo $object | sed 's/^.*\././'`"
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o,
+  # because we must use -o when running libtool.
+  "$@" || exit $?
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+	set fnord "$@"
+	shift
+	shift
+	;;
+    *)
+	set fnord "$@" "$arg"
+	shift
+	shift
+	;;
+    esac
+  done
+  "$@" -E |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
+  echo "	" >> "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:


Property changes on: trunk/packages/treeviewx/branches/upstream/current/depcomp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/install-sh
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/install-sh	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/install-sh	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,322 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2004-09-10.20
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.  It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+chmodcmd="$chmodprog 0755"
+chowncmd=
+chgrpcmd=
+stripcmd=
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=
+dst=
+dir_arg=
+dstarg=
+no_target_directory=
+
+usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+-c         (ignored)
+-d         create directories instead of installing files.
+-g GROUP   $chgrpprog installed files to GROUP.
+-m MODE    $chmodprog installed files to MODE.
+-o USER    $chownprog installed files to USER.
+-s         $stripprog installed files.
+-t DIRECTORY  install into DIRECTORY.
+-T         report an error if DSTFILE is a directory.
+--help     display this help and exit.
+--version  display version info and exit.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
+"
+
+while test -n "$1"; do
+  case $1 in
+    -c) shift
+        continue;;
+
+    -d) dir_arg=true
+        shift
+        continue;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+        shift
+        shift
+        continue;;
+
+    --help) echo "$usage"; exit 0;;
+
+    -m) chmodcmd="$chmodprog $2"
+        shift
+        shift
+        continue;;
+
+    -o) chowncmd="$chownprog $2"
+        shift
+        shift
+        continue;;
+
+    -s) stripcmd=$stripprog
+        shift
+        continue;;
+
+    -t) dstarg=$2
+	shift
+	shift
+	continue;;
+
+    -T) no_target_directory=true
+	shift
+	continue;;
+
+    --version) echo "$0 $scriptversion"; exit 0;;
+
+    *)  # When -d is used, all remaining arguments are directories to create.
+	# When -t is used, the destination is already specified.
+	test -n "$dir_arg$dstarg" && break
+        # Otherwise, the last argument is the destination.  Remove it from $@.
+	for arg
+	do
+          if test -n "$dstarg"; then
+	    # $@ is not empty: it contains at least $arg.
+	    set fnord "$@" "$dstarg"
+	    shift # fnord
+	  fi
+	  shift # arg
+	  dstarg=$arg
+	done
+	break;;
+  esac
+done
+
+if test -z "$1"; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call `install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
+
+for src
+do
+  # Protect names starting with `-'.
+  case $src in
+    -*) src=./$src ;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    src=
+
+    if test -d "$dst"; then
+      mkdircmd=:
+      chmodcmd=
+    else
+      mkdircmd=$mkdirprog
+    fi
+  else
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dstarg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+
+    dst=$dstarg
+    # Protect names starting with `-'.
+    case $dst in
+      -*) dst=./$dst ;;
+    esac
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+	echo "$0: $dstarg: Is a directory" >&2
+	exit 1
+      fi
+      dst=$dst/`basename "$src"`
+    fi
+  fi
+
+  # This sed command emulates the dirname command.
+  dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+  # Make sure that the destination directory exists.
+
+  # Skip lots of stat calls in the usual case.
+  if test ! -d "$dstdir"; then
+    defaultIFS='
+	 '
+    IFS="${IFS-$defaultIFS}"
+
+    oIFS=$IFS
+    # Some sh's can't handle IFS=/ for some reason.
+    IFS='%'
+    set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+    IFS=$oIFS
+
+    pathcomp=
+
+    while test $# -ne 0 ; do
+      pathcomp=$pathcomp$1
+      shift
+      if test ! -d "$pathcomp"; then
+        $mkdirprog "$pathcomp"
+	# mkdir can fail with a `File exist' error in case several
+	# install-sh are creating the directory concurrently.  This
+	# is OK.
+	test -d "$pathcomp" || exit
+      fi
+      pathcomp=$pathcomp/
+    done
+  fi
+
+  if test -n "$dir_arg"; then
+    $doit $mkdircmd "$dst" \
+      && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
+      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
+      && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
+      && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
+
+  else
+    dstfile=`basename "$dst"`
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+    trap '(exit $?); exit' 1 2 13 15
+
+    # Copy the file name to the temp name.
+    $doit $cpprog "$src" "$dsttmp" &&
+
+    # and set any options; do chmod last to preserve setuid bits.
+    #
+    # If any of these fail, we abort the whole thing.  If we want to
+    # ignore errors from any of these, just make sure not to ignore
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
+      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
+      && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
+      && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
+
+    # Now rename the file to the real destination.
+    { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
+      || {
+	   # The rename failed, perhaps because mv can't rename something else
+	   # to itself, or perhaps because mv is so ancient that it does not
+	   # support -f.
+
+	   # Now remove or move aside any old file at destination location.
+	   # We try this two ways since rm can't unlink itself on some
+	   # systems and the destination file might be busy for other
+	   # reasons.  In this case, the final cleanup might fail but the new
+	   # file should still install successfully.
+	   {
+	     if test -f "$dstdir/$dstfile"; then
+	       $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
+	       || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
+	       || {
+		 echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+		 (exit 1); exit
+	       }
+	     else
+	       :
+	     fi
+	   } &&
+
+	   # Now rename the file to the real destination.
+	   $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+	 }
+    }
+  fi || { (exit 1); exit; }
+done
+
+# The final little trick to "correctly" pass the exit status to the exit trap.
+{
+  (exit 0); exit
+}
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:


Property changes on: trunk/packages/treeviewx/branches/upstream/current/install-sh
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/missing
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/missing	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/missing	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,353 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2004-09-07.08
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004
+#   Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+
+# 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, 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.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+run=:
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case "$1" in
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  # Exit code 63 means version mismatch.  This often happens
+  # when the user try to use an ancient version of a tool on
+  # a file that requires a minimum version.  In this case we
+  # we should proceed has if the program had been absent, or
+  # if --run hadn't been passed.
+  if test $? = 63; then
+    run=:
+    msg="probably too old"
+  fi
+  ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  tar          try tar, gnutar, gtar, then tar without non-portable flags
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake at gnu.org>."
+    exit 0
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit 0
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case "$1" in
+  lex|yacc)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  tar)
+    if test -n "$run"; then
+       echo 1>&2 "ERROR: \`tar' requires --run"
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       exit 1
+    fi
+    ;;
+
+  *)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
+    fi
+    ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case "$1" in
+  aclocal*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case "$f" in
+      *:*) touch_files="$touch_files "`echo "$f" |
+				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+	   sed 's/\.am$/.in/' |
+	   while read f; do touch "$f"; done
+    ;;
+
+  autom4te)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
+    test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo "#! /bin/sh"
+	echo "# Created by GNU Automake missing as a replacement of"
+	echo "#  $ $@"
+	echo "exit 0"
+	chmod +x $file
+	exit 1
+    fi
+    ;;
+
+  bison|yacc)
+    echo 1>&2 "\
+WARNING: \`$1' $msg.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if [ $# -ne 1 ]; then
+        eval LASTARG="\${$#}"
+	case "$LASTARG" in
+	*.y)
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" y.tab.c
+	    fi
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" y.tab.h
+	    fi
+	  ;;
+	esac
+    fi
+    if [ ! -f y.tab.h ]; then
+	echo >y.tab.h
+    fi
+    if [ ! -f y.tab.c ]; then
+	echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex|flex)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if [ $# -ne 1 ]; then
+        eval LASTARG="\${$#}"
+	case "$LASTARG" in
+	*.l)
+	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" lex.yy.c
+	    fi
+	  ;;
+	esac
+    fi
+    if [ ! -f lex.yy.c ]; then
+	echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+	 you modified a dependency of a manual page.  You may need the
+	 \`Help2man' package in order for those modifications to take
+	 effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    if test -z "$file"; then
+	file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
+    fi
+    if [ -f "$file" ]; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo ".ab help2man is required to generate this page"
+	exit 1
+    fi
+    ;;
+
+  makeinfo)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    if test -z "$file"; then
+      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+    fi
+    touch $file
+    ;;
+
+  tar)
+    shift
+
+    # We have already tried tar in the generic part.
+    # Look for gnutar/gtar before invocation to avoid ugly error
+    # messages.
+    if (gnutar --version > /dev/null 2>&1); then
+       gnutar "$@" && exit 0
+    fi
+    if (gtar --version > /dev/null 2>&1); then
+       gtar "$@" && exit 0
+    fi
+    firstarg="$1"
+    if shift; then
+	case "$firstarg" in
+	*o*)
+	    firstarg=`echo "$firstarg" | sed s/o//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+	case "$firstarg" in
+	*h*)
+	    firstarg=`echo "$firstarg" | sed s/h//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+    fi
+
+    echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+         You may want to install GNU tar or Free paxutils, or check the
+         command line arguments."
+    exit 1
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:


Property changes on: trunk/packages/treeviewx/branches/upstream/current/missing
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/Makefile.am
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/Makefile.am	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/Makefile.am	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,16 @@
+# $Id: Makefile.am,v 1.2 2005/03/29 11:38:25 rdmp1c Exp $
+
+# The root makefile. We simply list the subdirectory with the source (src has its
+# own makefile, and we list any additional files (in their subdirectories) that
+# we want to distribute.
+
+SUBDIRS = src
+
+# Include base HTML documentation, and the example NEXUS files in the distribution
+EXTRA_DIST = html/NexusClassLibrary.html \
+   data/LPCombined.nex data/P95rbcl.nex data/distances.nex \
+   data/GPCombined.nex data/LPMolecular.nex data/W98morph.nex data/kenrickcrane.nex \
+   data/GPMolecular.nex data/LPMorph.nex data/characters.nex \
+   data/GPMorph.nex data/P95morph.nex data/characters.ref.txt
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/Makefile.am
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/Makefile.in
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/Makefile.in	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/Makefile.in	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,433 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am,v 1.2 2005/03/29 11:38:25 rdmp1c Exp $
+
+# The root makefile. We simply list the subdirectory with the source (src has its
+# own makefile, and we list any additional files (in their subdirectories) that
+# we want to distribute.
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = ncl-2.0
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+	html-recursive info-recursive install-data-recursive \
+	install-exec-recursive install-info-recursive \
+	install-recursive installcheck-recursive installdirs-recursive \
+	pdf-recursive ps-recursive uninstall-info-recursive \
+	uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+ENT_FALSE = @ENT_FALSE@
+ENT_TRUE = @ENT_TRUE@
+EXEEXT = @EXEEXT@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WX_CONFIG = @WX_CONFIG@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+SUBDIRS = src
+
+# Include base HTML documentation, and the example NEXUS files in the distribution
+EXTRA_DIST = html/NexusClassLibrary.html \
+   data/LPCombined.nex data/P95rbcl.nex data/distances.nex \
+   data/GPCombined.nex data/LPMolecular.nex data/W98morph.nex data/kenrickcrane.nex \
+   data/GPMolecular.nex data/LPMorph.nex data/characters.nex \
+   data/GPMorph.nex data/P95morph.nex data/characters.ref.txt
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  ncl-2.0/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  ncl-2.0/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@set fnord $$MAKEFLAGS; amf=$$2; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+	@set fnord $$MAKEFLAGS; amf=$$2; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	$(mkdir_p) $(distdir)/data $(distdir)/html
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d "$(distdir)/$$subdir" \
+	    || $(mkdir_p) "$(distdir)/$$subdir" \
+	    || exit 1; \
+	    distdir=`$(am__cd) $(distdir) && pwd`; \
+	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+	    (cd $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$top_distdir" \
+	        distdir="$$distdir/$$subdir" \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+	clean clean-generic clean-recursive ctags ctags-recursive \
+	distclean distclean-generic distclean-recursive distclean-tags \
+	distdir dvi dvi-am html html-am info info-am install \
+	install-am install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am install-man \
+	install-strip installcheck installcheck-am installdirs \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	maintainer-clean-recursive mostlyclean mostlyclean-generic \
+	mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+	uninstall uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPCombined.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPCombined.nex	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPCombined.nex	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,2940 @@
+#NEXUS 
+[MacClade 3.01 registered to Brent D. Mishler, Duke University]
+
+[**The final matrix GP-COMB used in the Ann .Mo. Bot. 81: 451-483 (Mishler et al. 1994)
+ green plant synthesis paper.]
+
+BEGIN DATA;
+DIMENSIONS  NTAX=59 NCHAR=2289;
+FORMAT DATATYPE=DNA MISSING=? GAP=-  INTERLEAVE  SYMBOLS="0 1 2 3 4 5 6 7";
+OPTIONS  MSTAXA=UNCERTAIN ;
+
+MATRIX
+
+[                          10        20        30        40        50]
+[                          .         .         .         .         .]
+
+Glycine_max       TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTGTAAGTATGAACTAA   [50]
+Oryza_sativa      TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTGCAAGTATGAACTAA   [50]
+Zamia_pumila      TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTGTCAGTATGAACTAT   [50]
+Psilotum_n        ??????????????????????????????????????????????????   [50]
+Equisetum_ar      ??????????????????????????????????????????????????   [50]
+Atrichum_angus    ??????????????????????????????????????????????????   [50]
+Notothylas_bre    ??????????????????????????????????????????????????   [50]
+Phaeoceros_lae    ??????????????????????????????????????????????????   [50]
+Porella_pi        ??????????????????????????????????????????????????   [50]
+Conocephal_con    ??????????????????????????????????????????????????   [50]
+Asterella_tene    ??????????????????????????????????????????????????   [50]
+Riccia            ??????????????????????????????????????????????????   [50]
+Klebsormid_fla    ??????????????????????????????????????????????????   [50]
+Coleochaet_nit    ??????????????????????????????????????????????????   [50]
+Fissidens_taxi    ??????????????????????????????????????????????????   [50]
+Plagiomnium_cu    ????????????????????????????????TGTGTAAGTATAAACT-C   [49]
+Micromonas_pus    ??????????????????????????????????????????????????   [50]
+Mantoniel_squa    ??????????????????????????????????????????????????   [50]
+Nephroselm_pyr    ??????????????????????????????????????????????????   [50]
+Pedinomonas_mi    ??????????????????????????????????????????????????   [50]
+Tetraselm_cart    ??????????????????????????????????????????????????   [50]
+Enteromorpha      ??????????????????????????????????????????????????   [50]
+Ulva_fasci        ??????????????????????????????????????????????????   [50]
+Ulothrix_zo       ??????????????????????????????????????????????????   [50]
+Cympolia_barba    ??????????????????????????????????????????????????   [50]
+Batophora_oers    ??????????????????????????????????????????????????   [50]
+Codium_decort     ??????????????????????????????????????????????????   [50]
+Cladophoro        ??????????????????????????????????????????????????   [50]
+Blastophysa_rh    ??????????????????????????????????????????????????   [50]
+Trentepohlia      ??????????????????????????????????????????????????   [50]
+Cephaleuro_par    ???????C-TGTCTCAAAGA-TAAGCCATGCATGTCTAAGTATAA---GC   [45]
+Characium_vac     TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC   [50]
+Dunaliella_par    TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC   [50]
+Chlamyd_reinha    TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC   [50]
+Volvox_carteri    TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC   [50]
+Chlorococc_min    TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC   [50]
+Draparn_plum      ??????????????????????????????????????????????????   [50]
+Uronema_belk      ??????????????????????????????????????????????????   [50]
+Chlamydom_moew    ??????????????????????????????????????????????????   [50]
+Stephanos_pl      ??????????????????????????????????????????????????   [50]
+Carteria_rad      ??????????????????????????????????????????????????   [50]
+Gonium_pecto      ??????????????????????????????????????????????????   [50]
+Chlorella_kess    TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC   [50]
+Chlorella_vulg    TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC   [50]
+Protothec_wic     TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAA--TGG   [48]
+Chlorella_prot    TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTGAGTATAACCTG-   [49]
+Chlorella_min     TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC   [50]
+Neochloris_aqu    TCATATGCTTGTCTCAAAGATTAACCCATGCATGTCTAAGTATAAACTGC   [50]
+Neochloris_vig    TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC   [50]
+Pediastrum_dup    TCATATGCTTGTCTCAGAGATTAAGCCATGCATGTCTAAGTATAAACTGC   [50]
+Scenedesm_obl     TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC   [50]
+Characium_hin     TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC   [50]
+Chlorella_fus     TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC   [50]
+Ankistrodesmus    TCATATGCTTRTCTCAAAGATTAAGCCATGCATGTC?AAGTATAAACTGC   [50]
+Pseudotreb_gig    ??????????????????????????????????????????????????   [50]
+Pleurastr_terr    ??????????????????????????????????????????????????   [50]
+Characium_per     TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC   [50]
+Parietochl_pse    TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC   [50]
+Friedmannia_is    TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGC   [50]
+
+[                          60        70        80        90        100]
+[                          .         .         .         .         .]
+
+Glycine_max       TTCA-GACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTGTT   [99]
+Oryza_sativa      TTC-GAACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTGTT   [99]
+Zamia_pumila      TTT-GGACGGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTCTT   [99]
+Psilotum_n        ?????????????????GCGAATGGCTCATTAAATCAGTTATAGTTTCTT   [100]
+Equisetum_ar      ?????????????????GCGAATGGCTGATTAAATCAGTTATAGTTTCTT   [100]
+Atrichum_angus    ????????????????????????????ATTAAATCAGTTATAGTTTCTT   [100]
+Notothylas_bre    ??????????????????????????????????????????????????   [100]
+Phaeoceros_lae    ??????????????????????????????????????????????????   [100]
+Porella_pi        ????????????????????????????????????????????????TT   [100]
+Conocephal_con    ??????????????????????????????????????????????????   [100]
+Asterella_tene    ???????CTGTGAAACTGCGAATGGCTC-TTAAATC-GTTATAGTTTCTT   [98]
+Riccia            ??????????????????????????????????????????????????   [100]
+Klebsormid_fla    ??????????????????????????????????????????????????   [100]
+Coleochaet_nit    ??????????????????????TGGCTCATTAAATCAGTTATAGTTT-TT   [99]
+Fissidens_taxi    ?????????????????????????????????????GTTATAGTTTCTT   [100]
+Plagiomnium_cu    TTTTGTACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTCTT   [99]
+Micromonas_pus    ????????????????????????????????????????AT-GTTTCTT   [99]
+Mantoniel_squa    ??????????????????????????????????????????????????   [100]
+Nephroselm_pyr    ??????????????????????????????????????????????????   [100]
+Pedinomonas_mi    ?????????????????????????????????????GAAATA-TTTCTT   [99]
+Tetraselm_cart    ????????????????????????????????????????ATAGTTTATT   [100]
+Enteromorpha      ????????????????????????????ATTAAATCAGTTAGAGTTTATT   [100]
+Ulva_fasci        ????????????????????????????????????????AGAGTTTATT   [100]
+Ulothrix_zo       ??????????????????????????????????????????????????   [100]
+Cympolia_barba    ??????????????????????????????????????????????????   [100]
+Batophora_oers    ??????????????????????????????????????????????????   [100]
+Codium_decort     ??????????????????????????????????????????????????   [100]
+Cladophoro        ??????????????????????????????????????????????????   [100]
+Blastophysa_rh    ??????????????????????????????????????????????????   [100]
+Trentepohlia      ???????CTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTC-ATT   [99]
+Cephaleuro_par    TTTA-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTT-ATT   [93]
+Characium_vac     TT-A-TACGGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT   [98]
+Dunaliella_par    TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT   [98]
+Chlamyd_reinha    TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT   [98]
+Volvox_carteri    TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT   [98]
+Chlorococc_min    TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT   [98]
+Draparn_plum      ??????????????????????????????????????????????????   [100]
+Uronema_belk      ???????????????????????????????????????????GTTTATT   [100]
+Chlamydom_moew    ????????????????????????????ATTAAATCAGTTATAATTTATT   [100]
+Stephanos_pl      ?????????????????GCGAATGGCTCATTAAATCAGTTATAGTTTATT   [100]
+Carteria_rad      ?????????????????GCGAATGGCTCATTAAATCAGTTATAGTTTATT   [100]
+Gonium_pecto      ????????????????????????GCTCATTAAATCAG-TATAGTTTATT   [99]
+Chlorella_kess    TTTA-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT   [99]
+Chlorella_vulg    TTTA-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT   [99]
+Protothec_wic     TT-A-TACTATGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT   [96]
+Chlorella_prot    TTTACTACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT   [99]
+Chlorella_min     TTTA-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT   [99]
+Neochloris_aqu    TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT   [98]
+Neochloris_vig    TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT   [98]
+Pediastrum_dup    TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT   [98]
+Scenedesm_obl     TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT   [98]
+Characium_hin     TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT   [98]
+Chlorella_fus     TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT   [98]
+Ankistrodesmus    TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT   [98]
+Pseudotreb_gig    ????????????????????????????????????????????????TT   [100]
+Pleurastr_terr    ??????????????????????????????????TCAGTTATAGTTTATT   [100]
+Characium_per     TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT   [98]
+Parietochl_pse    TT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT   [98]
+Friedmannia_is    TTTA-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATT   [99]
+
+[                          110       120       130       140       150]
+[                          .         .         .         .         .]
+
+Glycine_max       TGATGGTATC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [144]
+Oryza_sativa      TGATGGTACG-TGCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [144]
+Zamia_pumila      TGATGGTACTCTGCTACAC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [145]
+Psilotum_n        TGATGGTACCTTGCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [146]
+Equisetum_ar      TGATGGTACCTTGCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [146]
+Atrichum_angus    T-ATGGTACCTTGCTACTC---GGATAACCGTAGTA--TTCTA-AGCTAA   [143]
+Notothylas_bre    ????????CCTT-CTACTC---GGATAAC-G-AGTAA-TTCTA-AGCTAA   [142]
+Phaeoceros_lae    ?GATGGTACCTTGCTACTC---GGATAACC--AGTAA-TTCTA-AGCTAA   [143]
+Porella_pi        TGATGGTACCTTGCTACTC---GGATAACC-TAGTAA-TTCTAGAGCTAA   [145]
+Conocephal_con    ??????????????????????????????????????????????????   [150]
+Asterella_tene    TGATGGTGCCTT-CTACTC---GGATAACCG-AGTAA-TTCTAGAGCTAA   [142]
+Riccia            ?????????TTTACTACTC---GGATAACC-TAGTAA-TTCTAG-GCTAA   [144]
+Klebsormid_fla    ????????CCTTA-TACTC---GGATAACCGTAGTAAGTTCTA-AGCTAA   [145]
+Coleochaet_nit    TGATGGTAGCC---TACTC---GGATAACC-T-GTAA-TTCTAGAGCTAT   [140]
+Fissidens_taxi    T-ATGGTACCTTGCTACTC---GGATAACCGTAGTAA-TTCTA-AGCTAA   [144]
+Plagiomnium_cu    TGATGGTACCTTGCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [145]
+Micromonas_pus    TGGTGGTGTTTTACTACAT---GGATAACCGTAGTAA-TTCT-G-GCTAA   [143]
+Mantoniel_squa    ???????????????????????????????????AA-TACATGCG-T--   [146]
+Nephroselm_pyr    ????????CCTT-CT-CTC---GGAT?ACCGTAGTA---TCT-G-GCTAA   [140]
+Pedinomonas_mi    TGATGGTGAAAATCTACAC---GGATACCCGT-GTA--TTCT-GAGCTAA   [142]
+Tetraselm_cart    TGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [145]
+Enteromorpha      TGATGGTACCACACTACTC---GGATAACCGTAGTAA-AGCTACAGCTAA   [146]
+Ulva_fasci        TGATGGTACCACACTACTC----GATAACCGTAGTAA-AGCTAC-GCTAA   [144]
+Ulothrix_zo       ???????????????????????GATAACCGTAGTAA-TTCTAGA-CTAA   [148]
+Cympolia_barba    ??????????????????????????????????????????????????   [150]
+Batophora_oers    ??????????????????????????????????????????????????   [150]
+Codium_decort     ??????????????????????????????????????????????????   [150]
+Cladophoro        ??????????????????????????????????????????????????   [150]
+Blastophysa_rh    ??????TAC-TTGCTACTT---GGATAACC--AGTAA-TTCAGAAGCTAA   [143]
+Trentepohlia      T-ATGGTGT-TT-CTACTC---GGATAACC--AGGAA-AACTAGAGCTAA   [140]
+Cephaleuro_par    TGATGGTG-TTTGTTACTC---GGATAACCGTAGGA----CTAGAGCTAA   [135]
+Characium_vac     TGATGGTACC-TCTTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [143]
+Dunaliella_par    TGATGGTACCTT--TACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [142]
+Chlamyd_reinha    TGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [143]
+Volvox_carteri    TGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [143]
+Chlorococc_min    TGATGGTACC-TATTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [143]
+Draparn_plum      ????????????CTTACTC---GGATAACTGTAGTAA-TTCTA-AGCTAA   [145]
+Uronema_belk      TGATGATACCTT--TCCTC----GATAACCGT-GTA--TTCTAGAGCTAA   [141]
+Chlamydom_moew    TGATGGTAC-TTACTACTT---GGATAACCGTAGTAA-TTCTAGAGCTAA   [145]
+Stephanos_pl      TGATGGTACCTT--TACTC---GGATAACCGTAGTAA-TTCTAG-GCTAA   [143]
+Carteria_rad      TGATGGTAC-TTGGTACTC---GGATAACTGTACCAA-AG-TAGAGCTAA   [144]
+Gonium_pecto      TGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [144]
+Chlorella_kess    TGATGGTACCTTACTAC-C---GGATAACCGTAGTAA-TTCTAGAGCTAA   [144]
+Chlorella_vulg    TGATGGTAC-TTACTACTC---GGATACCCGTAGTAA-ATCTAGAGCTAA   [144]
+Protothec_wic     TGATGGTACC-TACTACTC---GGATACCCGTAGTAA-TTCTAGAGCTAA   [141]
+Chlorella_prot    TGATGGTACC-TGCTACTG---GGATACCCGTAGTAA-TTCTAGAGCTAA   [144]
+Chlorella_min     TGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [144]
+Neochloris_aqu    TGATGGTACC-TCCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [143]
+Neochloris_vig    TGATGGTACC-TCCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [143]
+Pediastrum_dup    TGATGGTACCTT-CTACTC---GGATACCCGTAGTAA-TTCTAGAGCTAA   [143]
+Scenedesm_obl     TGGTGGTACCTTACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [144]
+Characium_hin     TGATGGTACCTT-CTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [143]
+Chlorella_fus     TGGTGGTACCTTACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [144]
+Ankistrodesmus    TGATGGTACC--TCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [142]
+Pseudotreb_gig    TGATGGTGCCTTACT-CTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [145]
+Pleurastr_terr    TGATGGTACACTACTACTC---GGATAACCGTAGTAA-TTCTAGGGCTAA   [146]
+Characium_per     TGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [143]
+Parietochl_pse    TGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [143]
+Friedmannia_is    TGATGGTACC--CTTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAA   [143]
+
+[                          160       170       180       190       200]
+[                          .         .         .         .         .]
+
+Glycine_max       TACGTGCAACAAACCCCGACTTC--TGGAAGGGATGCATTTATTAGATAA   [192]
+Oryza_sativa      TACGTGCAACAAACCCCGACTTCC-GGG-AGGGGCGCATTTATTAGATAA   [192]
+Zamia_pumila      TACGTGCACCAAATCCCGACTTTT-TG-AAGGGACGCATCTATTAGATAA   [193]
+Psilotum_n        TACGTGCACCAACTCCCGACTTC--CGG-AGGGACGCATTTATTAGATAA   [193]
+Equisetum_ar      TACGTGCACCAACTCCCGACTTC--TGG--GGGA-GCATTTATTAGATAA   [191]
+Atrichum_angus    TACGTGCACAAACTCCCGACCTC--TGGAAGGG-CG-TTTTATTAGATAA   [189]
+Notothylas_bre    -ACGTGCAACAACTCCCGACTC---TGGAAGG-AG--ATTTATTAGATAA   [185]
+Phaeoceros_lae    T-CGTGCAACAACTCCCGGCTTT--TGG-AGGG-TGT-TTT-TTAG-TAA   [185]
+Porella_pi        TACGTGCACCAACTCCCGACTTC--TGGAAGGG-CGTATTTATTAGATAA   [192]
+Conocephal_con    ?ACGTGCACC-AGGCTCGAC----?TGGAAGGGG----TTTTTTAGATAA   [191]
+Asterella_tene    TACGTGCACCAACGCCCGACTTT-CCGGAAGGG--TGTTTTATTAGATAA   [189]
+Riccia            TACGTGCACCAACGCCCGACTTCG-CGGAAGGGCTGTATTTATTGGATAA   [193]
+Klebsormid_fla    TACGTGCACCAAATCCCGACTTC--TGGAAG?ACGTGATTTATTAGATAA   [193]
+Coleochaet_nit    ACCGTGC-CC--ATCC-GACTTC--TGGAAGG--GGTATTTGTTAGATAA   [182]
+Fissidens_taxi    TACGTGCACAAACTCC-GACTCG-?TGGA-GGGACG-ATTTATTAGATAA   [190]
+Plagiomnium_cu    TACGTGCACAAAATCCCGACTGG---G?AAGGGA??GATTTATTGGATAA   [192]
+Micromonas_pus    TACATGC-GTAAATCCCGACTTC---GGAAGGGACGTATTTATTAGAT-A   [188]
+Mantoniel_squa    -----------AATCCCGAC-TC---GG--GGG--GT-TTTATTAGAT--   [174]
+Nephroselm_pyr    TACGTGC-GCAACACCCGACTTC---GGAAGGGTTGT-TATATTAGATAA   [185]
+Pedinomonas_mi    TACGT-C-GTAA---CTCCATT----GG-AGG-T----TTT-TT-G-TCC   [174]
+Tetraselm_cart    TACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATTT   [192]
+Enteromorpha      TACGTGC-GTAACTCCCGACYC---CG-AAGGGACGT-TTTATTAGATTC   [190]
+Ulva_fasci        TACGTGC-GTAACTCCCGACTTA--CG-AAGGGACG-ATTTATTAGATTC   [189]
+Ulothrix_zo       TACGTGT-GTAAATCCCGACT?A--CG-AAGGGACGTATTTATTA?ATCC   [194]
+Cympolia_barba    ??????????????????????????????????????????????????   [200]
+Batophora_oers    ??????????????????????????????????????????????????   [200]
+Codium_decort     ??????????????????????????????????????????????????   [200]
+Cladophoro        ??????????????????????????????????????????????????   [200]
+Blastophysa_rh    TACAT-C-GCGGATCCCAGACTTC-TGGAAGGGACGTATTTATTAGATAA   [190]
+Trentepohlia      TACGTGC-GTAAATCCCGACCTCC---GAAGGGACGTATTTATTAGATAA   [186]
+Cephaleuro_par    TACGTGC-GTAAATCCCGA--TC---GGAAGGGA-G-ATTTATTAGATAA   [177]
+Characium_vac     TACGTGC-GTAAATCCCGACTTA--TGGAAGGGACGTATTTATTAGATAA   [190]
+Dunaliella_par    TACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAA   [189]
+Chlamyd_reinha    TACGTGC-GCACAACCCGACTTC--TGGAAGGGTCGTATTTATTAGATAA   [190]
+Volvox_carteri    TACGTGC-GCACAACCCGACTTC--TGGAAGGGTCGTATTTATTAGATAA   [190]
+Chlorococc_min    TACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAA   [190]
+Draparn_plum      TACGTGCTTCAAGTCCCAACTTC--TGGAAGGG---TGGTTATAAGA-GT   [189]
+Uronema_belk      TACGTGC-GCAACTCCCGACTTC--TGG--GGGA-GTGTT-ATTAGATCT   [184]
+Chlamydom_moew    TACATGCGGATAATCCCAACTTC--TGGAAGGGACGTATTTATTAGATAA   [193]
+Stephanos_pl      TACGTGC-GTAAATCCCGACTTC--TGGAAGGGA-GTATTTATTAGATAA   [189]
+Carteria_rad      TACGTGC-GTAAATCCCGACTCA--C-GAAGGGACGTATTTATTAGATAA   [190]
+Gonium_pecto      TACGTGC-GCACAACCCGACTTC--TGGAAGGGTCGTATTTATTAGATAA   [191]
+Chlorella_kess    TACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATTT   [191]
+Chlorella_vulg    TACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAA   [191]
+Protothec_wic     TACGTGC-GCACATCCCGACTTC--TGGAAGGGACGTATTTATTAGATCC   [188]
+Chlorella_prot    TACCTGC-GCAAACCCCGACTTTGGTGGAAGGGGTGTATTTATTAGATCC   [193]
+Chlorella_min     TACGTGC-GCAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAT   [191]
+Neochloris_aqu    TACGTGC-GTAAAACCCGACTTC--TGGAAGGGTCGTATATATTAGATAA   [190]
+Neochloris_vig    TACGTGC-GTAAAACCCGACTTC--TGGAAGGGTCGTATATATTAGATAA   [190]
+Pediastrum_dup    TACGTGC-GTAAAACCCGACTTC--TGGAAGGGTCGTATATATTAGATAA   [190]
+Scenedesm_obl     TACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATATATTAGATAA   [191]
+Characium_hin     TACGTGC-GTAAAACCCGACTTC--TGGAAGGGTCGTATATATTAGATAA   [190]
+Chlorella_fus     TACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATATATTAGATAA   [191]
+Ankistrodesmus    TACGTGC-GCAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAA   [189]
+Pseudotreb_gig    TACGTGC-GCACATCCCGACTCC----GAAGGGA-G--TTTATTAGATAA   [187]
+Pleurastr_terr    TACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAA   [193]
+Characium_per     TACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAA   [190]
+Parietochl_pse    TACGTGC-GCACATCCCGACTTC--TGGAAGGGACGTATTTATTAGATTA   [190]
+Friedmannia_is    TACGTGC-GTAAACCCCGACTTC--TGGAAGGGGCGTATTTATTAGATAA   [190]
+
+[                          210       220       230       240       250]
+[                          .         .         .         .         .]
+
+Glycine_max       AAGGTCAACACAGGC-TCTGCCTGTGCT-TTGATGATTCATGATAACTCG   [240]
+Oryza_sativa      AAGGCTGACGCGGGC-TCCGCCCGCGAT-CCGATGATTCATGATAACTCG   [240]
+Zamia_pumila      AAGGCCGATGCGGGC-TTTGCCCGGCGT-TTGGTGAATCATGATACCTTG   [241]
+Psilotum_n        AAGGCCGATGCGGGC-TT-GCCCGGTTATGC-GT-ATTCATGATAACTCT   [239]
+Equisetum_ar      AAGGCCGATGCGGGC-TGTGCCCGGTAA----CGGATTC--GATAACTTC   [234]
+Atrichum_angus    AAGGCCGATGC-GGC-TT-GCCCGGTAT-TCGGTGACTCA-GATAACTCG   [234]
+Notothylas_bre    AAG---GATG---GC-TT-GTCCCGTTT-A--CTGAATC-TGATAACTCC   [223]
+Phaeoceros_lae    AAG---GA-GCGG-C-TT-GTCCCGGTTTACGGTGAA-CW-GATAACTCC   [226]
+Porella_pi        AAGACCGATGCGGGC--T-GCCCGGTGTTGCGGTGAATCATGATAACTCG   [239]
+Conocephal_con    AAGACCGATGGGGGTGCT-GCC-GGTGATTC-GGGA-TC-TGATAACTCG   [236]
+Asterella_tene    AAGACCGATG---GC-TT-GCC-CGGTGATT-CGGAATCATGATAACTCG   [232]
+Riccia            AAGGCCGATG-GGGC-TTGCCCCGGTGTTT-CGTGAATCATGATAACTCG   [240]
+Klebsormid_fla    AAGGCCAATGCGGGC-TT--CCCGGTATTGCGGTGAATCATGATAACTCG   [240]
+Coleochaet_nit    AAGACCAAT----GC-TC-GCCCGGTGTT-CGGTGAATC--GATAACTCC   [223]
+Fissidens_taxi    AAGGC-GA-T-C-------GCC-GGTGTT---GCGAATCA-GATAAC?AG   [225]
+Plagiomnium_cu    AAGGCCGA-TGCGGGCT-TGCCCGGTTC-GCGG-GAC----GATAAC--G   [232]
+Micromonas_pus    AAGAC--AC----------CTC--GTCT-GCGGTGAATCATGATAACTTC   [223]
+Mantoniel_squa    AAGACC-AC----------CTCG-TTCT-GCGGTGAATCA-GAT-ACTT-   [208]
+Nephroselm_pyr    AAGACCGAC----CT-TCG-GCG-TTCT-TCGGTGAATCATGATATTTCC   [227]
+Pedinomonas_mi    -AACC-AGC-----C-TT-GGGG--TTT-TCTGTGAATC-TGATACTTTC   [211]
+Tetraselm_cart    AAG-CGG-C---AGC-TTT-C---GTC---CGGTGAA-CA-GATAACTTC   [227]
+Enteromorpha      -AGACCGAC-CGTGC-TTGCCGTCTTT----GGTGAATCATGGTAACTTC   [233]
+Ulva_fasci        AAGGCCGAC-TGC---TTGACGTCTTT----GGTGAATCATGGTAACTTC   [231]
+Ulothrix_zo       AAGAC?GAC-CGC---TTG-CACCTTT----GGTGAATCATA-TAACTTC   [234]
+Cympolia_barba    ??????????????????????????????????????????????????   [250]
+Batophora_oers    ??????????????????????????????????????????????????   [250]
+Codium_decort     ??????????????????????????????????????????????????   [250]
+Cladophoro        ??????????????????????????????????????????????????   [250]
+Blastophysa_rh    AAGGCYGAC-CGGGC-TT---CCCGAGTGCAGGTGACT-ATGATAGACAT   [234]
+Trentepohlia      GAGGCCGGAACGCGC-TTAGGCCCGCT--TCGGTGAATCATAATA-ACTT   [232]
+Cephaleuro_par    GAGGC-GAC-CGGGC-TT-GTCCCGCT--TCGGTGA-TC-TGATAACTCA   [219]
+Characium_vac     AAGGCCAGC-CGGGC-T-TGCCCGACCC-TAGGCGAATCATGATAACTTC   [236]
+Dunaliella_par    AAGGCCAGC-CGGGC-T-TGCCCGACTC-TTGGCGAATCATGATAACTTC   [235]
+Chlamyd_reinha    AAGGCCAGC-CGGGC-TCTGCCCGACCT-GCGGTGAATCATGATAACTTC   [237]
+Volvox_carteri    AAGGCCAGC-CGGGC-TTTGCCCGTTGA-ATGGTGAATCATGATAACTTC   [237]
+Chlorococc_min    AAGGCCAGC-CGGGC-T-TGCCCGACCT-ATGGCGAATCATGATAACTTC   [236]
+Draparn_plum      AAGGCCAA--ACGCT---CTCCCGATTT---GA-GAC-----ATAAGTCC   [225]
+Uronema_belk      -AGGC-A------GC----TCCCGACA----GGTGA-TCATG-TAACTCC   [216]
+Chlamydom_moew    AAGGCCAGC-CGTGC-T-TGCACGATCC-TGGTTGATTCATGATAACTTC   [239]
+Stephanos_pl      AAGGCCAGC-GAGGC-TTGCTCGACTCTT-GG-CGAATCATGATAACTTG   [235]
+Carteria_rad      AAGGCCAGC-CGGGC-T-TGCCCGACTTTT-GGCGACTCATGATAACTTC   [236]
+Gonium_pecto      AAGGCCAGC----GC-TTTGCCCGACT--GCGGTGAATCATGATAACTTC   [234]
+Chlorella_kess    AAGGCCGAC-CCGGC-TCTGCCGGTCTC-GCGGTGAATCATGATAACTTC   [238]
+Chlorella_vulg    AAGGCCGAC-CGGGCTTCTGCCCGACTC-GCGGTGAATCATGATAACTTC   [239]
+Protothec_wic     AAGGCCGAC-CGGGC-T-TGCCCGACTC-GCGGTGAATCATGATAACTTT   [234]
+Chlorella_prot    AAGGCCGAC-CGGGC-TC-GCCCGACTC-GCGGTGACTCATGATAACTTT   [239]
+Chlorella_min     AAGGCCGAC-CGGGC-TCTGCCCGACTC-GCGGTGAATCATGATAACTTC   [238]
+Neochloris_aqu    AAGACC-AG-CCGGAC-TTTGTCCGACCCGCGGTGACTCATGATATCTTC   [237]
+Neochloris_vig    AAGACC-AG-CCGGAC-TTTG????GCCCGCGGTGACTCATGATATCTTC   [237]
+Pediastrum_dup    AAGGCCGAGCCG??C-TTTGTCCGACCC-GCGGTGAATCATGATATCTTC   [238]
+Scenedesm_obl     AAGGCCGAC-CGAGC-TTTGCTCGACCC-GCGGTGAATCATGATATCTTC   [238]
+Characium_hin     AAGGCCGAC-CGGGC-TTGCCCGACCC--GCGGTGAATCATGATATCTTC   [236]
+Chlorella_fus     AAGGCCGAC-CGGGC-TT?GCCCGACCC-GCGGTGAATCATGATATCTTC   [238]
+Ankistrodesmus    AAGGCCGAC-CGGGC-TCTGCCCGACCC-GCGGTGAATCATGATAACTTC   [236]
+Pseudotreb_gig    AAGGC-GAG-CCGGG-GC--CCCGAGAC-GCGGTGAATCA-GATAAC--C   [228]
+Pleurastr_terr    AAGGCCGAC-CGGACTC-G-TCCGACCC-GCGGTGAA-CCTGATAACTTC   [238]
+Characium_per     AAGGCCGAC-CGGGC-T-TGCCCGACTC-GCGGTGAATCATGATAACTTC   [236]
+Parietochl_pse    AAGGCCGAC-CGGGC-TCTGCCCGACTC-GCGGTGACTCATGATAACTTC   [237]
+Friedmannia_is    AAGGCCGAC-CGGGC-TTTGCCCGACTC-GCGGTGAATCATGATAACTTC   [237]
+
+[                          260       270       280       290       300]
+[                          .         .         .         .         .]
+
+Glycine_max       TCGGATCGCACGGCCTTTGTGCCGGCGACGCATCATTCAAATTTCTGCCC   [290]
+Oryza_sativa      ACGGATCGCACGGCCCTCGTGCCGGCGACGCATCATTCAAATTTCTGCCC   [290]
+Zamia_pumila      ATGGATTGCATGGCCCTCGAGCCGGCGACGCTTCATTCAAATTTCTGCCC   [291]
+Psilotum_n        GCGAATCGCACGGCC???????????????????????????????????   [289]
+Equisetum_ar      CCGGATCGCACGGCCT????ACGGGTGA??????????????????????   [284]
+Atrichum_angus    TCGAATCGCACGGCCTTA????????????????????????????????   [284]
+Notothylas_bre    TCGAATCGCACGGCCCT?????????????????????????????????   [273]
+Phaeoceros_lae    TCGGATCGCACGGCCCT?????????????????????????????????   [276]
+Porella_pi        TCGAATCGCACGGCC???????????????????????????????????   [289]
+Conocephal_con    ACGAATCGCACGGCC???????????????????????????????????   [286]
+Asterella_tene    ACGAATCGCACGGCCT??????????????????????????????????   [282]
+Riccia            ACGAATCGCACGGCCCCC????????????????????????????????   [290]
+Klebsormid_fla    TCGAATCGCACGGCCTTTGCGCTG??????????????????????????   [290]
+Coleochaet_nit    TCG?ATCGCACGGCCT??????????????????????????????????   [273]
+Fissidens_taxi    TCGAATCGACCC??????????????????????????????????????   [275]
+Plagiomnium_cu    TCGAATCGCA-GGCCG??????????????????????????????????   [281]
+Micromonas_pus    -CGGATCGCATGGCTTCAA???????????????????????????????   [272]
+Mantoniel_squa    -CGGATC-CATGGCTTCAA?GCCG?CGATGTTCCATTCAAATTTCTGCCC   [256]
+Nephroselm_pyr    ACGGATCGCAT--CTTCCC???????????????????????????????   [275]
+Pedinomonas_mi    ??????????????????????????????????????????????????   [261]
+Tetraselm_cart    ACGAATCGCATGGCCTCCGCGCCGGCGATGTTTCATTCAAATTTCTGCCC   [277]
+Enteromorpha      ACGAATCGCA-GG--TTTACCCCGG?????????????????????????   [280]
+Ulva_fasci        ACGAATCGCAGGG--TTTATC?????????????????????????????   [279]
+Ulothrix_zo       ACGAATCGCATGG-CCTTGTGC-GGC????????????????????????   [282]
+Cympolia_barba    ??????????????????????????????????????????????????   [300]
+Batophora_oers    ??????????????????????????????????????????????????   [300]
+Codium_decort     ??????????????????????????????????????????????????   [300]
+Cladophoro        ??????????????????????????????????????????????????   [300]
+Blastophysa_rh    CACACGAATC????????????????????????????????????????   [284]
+Trentepohlia      CAC--GAATCG---CTG-GTC---GAACYGA???????????????????   [273]
+Cephaleuro_par    ACGA-TCG------CTG-GTCCGTGAACCGC???????????????????   [261]
+Characium_vac     ACGAATCGCATGCCCTC-GTGGCGGCGATGTTTCATTCAAATTTCTGCCC   [285]
+Dunaliella_par    ACGAATCGCACGGC-TTCGTGCCGGCGATGTTTCATTCAAATTTCTGCCC   [284]
+Chlamyd_reinha    ACGAATCGTATGGGCTC-GTCCCGACGATGTTTCATTCAAATTTCTGCCC   [286]
+Volvox_carteri    ACGAATCGTATGGCCAC-GTGCCGACGATGTTTCATTCAAATTTCTGCCC   [286]
+Chlorococc_min    ACGGACCGCATGGCCTT-GTCGCGGCGGCGTTTCATTCAAATTTCTGCCC   [285]
+Draparn_plum      ACG-ATCGCA--GCCT--GGTGACGGGTGA????????????????????   [270]
+Uronema_belk      ACGAATCGC--GGCC---GCGC????????????????????????????   [261]
+Chlamydom_moew    ACGAATCGCATGGCCTT-GTGCCGGC????????????????????????   [288]
+Stephanos_pl      ACGAATCGCATGGCCTG-GTAACGGGTGA?????????????????????   [284]
+Carteria_rad      ACGAATCGCATGGCCTG-GTAACGGGTGA?????????????????????   [285]
+Gonium_pecto      ACGAATCGTATGGCCTG-GTAACGGGTGA?????????????????????   [283]
+Chlorella_kess    ACGAATCGCATGGCCTT-GCGCCGGCGATGTTTCATTCAAATTTCTGCCC   [287]
+Chlorella_vulg    ACGAATCGCATGGCCTT-GTGCCGGCGATGTTTCATTCAAATTTCTGCCC   [288]
+Protothec_wic     ACGAATCGCATGGCCTTTGTGCCGGCGATGTTTCATTCAAATTTCTGCCC   [284]
+Chlorella_prot    ACGAATCGCATGGTCTCTGCACCGGCGATGTTTCATTCAAATTTCTGCCC   [289]
+Chlorella_min     ACGAATCGCATGGCCTC-GTGCCGGCGATGTTTCATTCAAATTTCTGCCC   [287]
+Neochloris_aqu    ACGAATCGCATGGCCTT-GTGCACGGCATGTTTCATTCAAATTTCTGCCC   [286]
+Neochloris_vig    ACGAATCGCATGGCCTT-GTG????CGATGTTTCATTCAAATTTCTGCCC   [286]
+Pediastrum_dup    ACGAATCGCATGGCCTT-GCGCCGGCGATGTTTCATTCAAATTTCTGCCC   [287]
+Scenedesm_obl     ACGAAGCGCATGGCCTT-GTGCCGGCGCTGTTCCATTCAAATTTCTGCCC   [287]
+Characium_hin     ACGAATCGCATAGCCTT-GTGCTAGCGA-GTTTCATTCAAATTTCTGCCC   [284]
+Chlorella_fus     ACGAAGCGCATGGCCTT-GCGCCGGCGCTGTTCCATTCAAATTTCTGCCC   [287]
+Ankistrodesmus    ACGAATCGCATAGCCTC-GTGCTGGCGATGTTTCATTCAAATTTCTGCCC   [285]
+Pseudotreb_gig    ACGAATCG--TAGCCTT-GTGCCGC?????????????????????????   [275]
+Pleurastr_terr    ACGAATCGCATGGCCTT-GC-CC???????????????????????????   [286]
+Characium_per     ACGAATCGCACAGCCTT-GTGCTGGCGATGTTTCATTCAAATTTCTGCCC   [285]
+Parietochl_pse    ACGAATCGCAT-GCCTTCGTGCCGGCGATGTTTCATTCAAATTTCTGCCC   [286]
+Friedmannia_is    ACGAATCGCATGGCCTT-GTGCCGGCGATGTTTCATTCAAATTTCTGCCC   [286]
+
+[                          310       320       330       340       350]
+[                          .         .         .         .         .]
+
+Glycine_max       TATCAACTTTCGATGGTAGGATAGTGGCCTACCATGGTGGTGACGGGTGA   [340]
+Oryza_sativa      TATCAACTTTCGATGGTAGGATAGGGGCCTACCATGGTGGTGACGGGTGA   [340]
+Zamia_pumila      TATCAACTTTCGATGGCAGGATAGAGGCCTACCATGGTGGTGACGGGTGA   [341]
+Psilotum_n        ?????????????????????????????????????TGGTGACGGGTGA   [339]
+Equisetum_ar      ??????????????????????????????????????????????????   [334]
+Atrichum_angus    ??????????????????????????????????????????????????   [334]
+Notothylas_bre    ??????????????????????????????????????????????????   [323]
+Phaeoceros_lae    ?????????????????????????????????????????????????A   [326]
+Porella_pi        ??????????????????????????????????????????????????   [339]
+Conocephal_con    ??????????????????????????????????????????????????   [336]
+Asterella_tene    ??????????????????????????????????????????????????   [332]
+Riccia            ??????????????????????????????????????????????????   [340]
+Klebsormid_fla    ????????????????????????????????????????TAACGGGTGA   [340]
+Coleochaet_nit    ??????????????????????????????????????????????????   [323]
+Fissidens_taxi    ????????????????????????????????????????TGACGGGTGA   [325]
+Plagiomnium_cu    ??????????????????????????????????????????????????   [331]
+Micromonas_pus    ??????????????????????????????????????????????????   [322]
+Mantoniel_squa    TATCAACTTTCGACGGTAGGATAGAGGCCTACCGTGGTGTTCACGGGTGA   [306]
+Nephroselm_pyr    ??????????????????????????????????????????????????   [325]
+Pedinomonas_mi    ????????????????????????????????????????????CGGTGA   [311]
+Tetraselm_cart    TATCAATTTGCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA   [327]
+Enteromorpha      ??????????????????????????????????????????????????   [330]
+Ulva_fasci        ??????????????????????????????????????????????????   [329]
+Ulothrix_zo       ??????????????????????????????????????????????????   [332]
+Cympolia_barba    ??????????????????????????????????????????????????   [350]
+Batophora_oers    ??????????????????????????????????????????????????   [350]
+Codium_decort     ??????????????????????????????????????????????????   [350]
+Cladophoro        ???????????????????????TTGGACTAC-A-CCT-T--ACG-GTAG   [344]
+Blastophysa_rh    ?????????????????????????GGCCTACCACGGTATCGACGGGTGA   [334]
+Trentepohlia      ??????????????????????????????????????????????????   [323]
+Cephaleuro_par    ??????????????????????????????????????????????????   [311]
+Characium_vac     TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA   [335]
+Dunaliella_par    TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA   [334]
+Chlamyd_reinha    TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA   [336]
+Volvox_carteri    TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA   [336]
+Chlorococc_min    TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA   [335]
+Draparn_plum      ??????????????????????????????????????????????????   [320]
+Uronema_belk      ??????????????????????????????????????????????????   [311]
+Chlamydom_moew    ??????????????????????????????????????????ACGGCTGA   [338]
+Stephanos_pl      ??????????????????????????????????????????????????   [334]
+Carteria_rad      ??????????????????????????????????????????????????   [335]
+Gonium_pecto      ??????????????????????????????????????????????????   [333]
+Chlorella_kess    TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA   [337]
+Chlorella_vulg    TATCAACTTTTGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA   [338]
+Protothec_wic     TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA   [334]
+Chlorella_prot    TATCAACTTT-GTCGGTAGGATAGAGGCCTACCGAGGTGTTCACGGGTGA   [338]
+Chlorella_min     TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA   [337]
+Neochloris_aqu    TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA   [336]
+Neochloris_vig    TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA   [336]
+Pediastrum_dup    TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA   [337]
+Scenedesm_obl     TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA   [337]
+Characium_hin     TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA   [334]
+Chlorella_fus     TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA   [337]
+Ankistrodesmus    TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA   [335]
+Pseudotreb_gig    ??????????????????????????????????????????????????   [325]
+Pleurastr_terr    ??????????????????????????????????????????????????   [336]
+Characium_per     TATCAACTTTCGATGGTAACGTAGTGGGTTACCATGGTGGTAACGGGTGA   [335]
+Parietochl_pse    TATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGA   [336]
+Friedmannia_is    TATCAACTTTCGATGGTTGGATAGAGGCCAACCATGGTGGTAACGGGTGA   [336]
+
+[                          360       370       380       390       400]
+[                          .         .         .         .         .]
+
+Glycine_max       CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [390]
+Oryza_sativa      CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [390]
+Zamia_pumila      CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCCGAGAAACGGCTACCA   [391]
+Psilotum_n        CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [389]
+Equisetum_ar      CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [384]
+Atrichum_angus    ???AGAATT----TTCGATTCCGGA-AGGGAGCCTGAGAA-CGGCTACCA   [378]
+Notothylas_bre    ????????????GTTCGATTCCGGAGAGGGA--C-GAGAAACGGCTACCA   [370]
+Phaeoceros_lae    CGGA-AATTAGGGTTCGATTCCGGA-A-GGAGCCTGAGAAACGGCTACCA   [373]
+Porella_pi        ??????????????????????????????????????AAACGGCTACCA   [389]
+Conocephal_con    ?????????????????????????????GAGCCTGAGAAACAGCTACCA   [386]
+Asterella_tene    ??????????????????????????AGGGAGCCTGAG?AACGGCTACCA   [382]
+Riccia            ??????????????????????????????????????????????????   [390]
+Klebsormid_fla    CGGAGAATT?GGGTTCGATTCCGGAGA?GGAGCCTGAGAAACGGCTACCA   [390]
+Coleochaet_nit    ??????????????????????GGAGAGGGAGCCTGAGAAACGGCTACCA   [373]
+Fissidens_taxi    CGGA?AATTAGGGTTCGATTCCG-A-A-GGAGCCTGAG---CGGCTACCA   [369]
+Plagiomnium_cu    ???????????????????????GA-A-GGAGCCT-AG---CGGCTACCA   [375]
+Micromonas_pus    ??????????????????????????????????????????????????   [372]
+Mantoniel_squa    CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [356]
+Nephroselm_pyr    ?????????????????????????????????????????CGGCTACCA   [375]
+Pedinomonas_mi    CG??GAATT?GGGTTCGTTCCGG--GAGGGAGCCTGAGAAACGGCTACC-   [358]
+Tetraselm_cart    CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [377]
+Enteromorpha      ??????ATTAGG?TTCGATTCCGGA?AGGGAGCCT?AGG--CGGCTACCA   [378]
+Ulva_fasci        ????GGATTAGGGTTCGATTCCGGAGA--GAGCCTGAG---CGGCTACCA   [374]
+Ulothrix_zo       ?GGAGTATTAGT?TTCTTTTCCGGAGA--CA-CCTGAG---C-GCTACCA   [375]
+Cympolia_barba    ???????TATGGGTTTGATTCCGGAGAGGGAGCTTGAGA-CTGGCTACCA   [399]
+Batophora_oers    ?GGAGGTTGAGGGTTTGATTCCGGATT-GGA-CCTGAGA--CGGC--CC-   [393]
+Codium_decort     ??????ATC-GGGTTTGGTTCCGGAGA--GAGCCTGAGGC-CGGCTACCA   [396]
+Cladophoro        CGGAGGATTAGGGTTCGGATTCCGGAGGGGAGCCTG-GA--CGGCTACCA   [391]
+Blastophysa_rh    CGGAGGATTAGGGTTCGATTCCGGAGGGGGAGCCTGAGA-ACGGCTACCA   [383]
+Trentepohlia      ??????????????????????????????????????????????????   [373]
+Cephaleuro_par    ???????????????????????????GGGAGCCTGAGAAACGGCTACCA   [361]
+Characium_vac     CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [385]
+Dunaliella_par    CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [384]
+Chlamyd_reinha    CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAGATGGCTACCA   [386]
+Volvox_carteri    CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAGATGGCTACCA   [386]
+Chlorococc_min    CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [385]
+Draparn_plum      CGGAGGATTAGGGTTCGGTTCCGGA-AGGGAGCCTGAGAAATGGCTACCA   [369]
+Uronema_belk      ?????????????TTCGATTCCGGAGA--GAGCCTGAGGAACGGCTACCA   [359]
+Chlamydom_moew    C----AATCAGGGTTCGATTCCGG-GAGGGAGCCT-AG---CGGCT-CCA   [378]
+Stephanos_pl      CGG-GGATTAGGGTTCGATTCCGG-GAGGGAGCCTGAGAAACGGCTACCA   [382]
+Carteria_rad      CGGAGGATTAGGGTTCGATTCCGGAGA-GGAGCCTGAGAGATGGCTACCA   [384]
+Gonium_pecto      CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAGATGGCTACCA   [383]
+Chlorella_kess    CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [387]
+Chlorella_vulg    CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [388]
+Protothec_wic     CGGAGGATCAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [384]
+Chlorella_prot    CGGAGGATCAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [388]
+Chlorella_min     CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [387]
+Neochloris_aqu    CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [386]
+Neochloris_vig    CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [386]
+Pediastrum_dup    CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [387]
+Scenedesm_obl     CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [387]
+Characium_hin     CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [384]
+Chlorella_fus     CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [387]
+Ankistrodesmus    CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [385]
+Pseudotreb_gig    ????GGATTAGGGTTCG?TTCCGGAGAGGGAGCCTGAG---CGGCT-CCA   [371]
+Pleurastr_terr    ??????ATTAGGGTTCGATTCCGG-GAGGGAGCCTGAG---CGGCTACCA   [382]
+Characium_per     CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [385]
+Parietochl_pse    CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA   [386]
+Friedmannia_is    CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAGACGGCTACCA   [386]
+
+[                          410       420       430       440       450]
+[                          .         .         .         .         .]
+
+Glycine_max       -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGG   [438]
+Oryza_sativa      -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGG   [438]
+Zamia_pumila      -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGG   [439]
+Psilotum_n        -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCC-GAC-CGGG   [435]
+Equisetum_ar      -CATCCAAGGAAGGCAGCGGGCGCGCAAATTACCC-AATCC-GACACGGG   [431]
+Atrichum_angus    -CATCCA---AAGGCAG-?-??-?-?--ATT-CCC-AATCC-GAC--GGG   [413]
+Notothylas_bre    -CATCC--?--AGGCAG---????----ATTACCC-AATCC-GA---GGG   [403]
+Phaeoceros_lae    -CATCC-AG-AAGGCA-CA--CGCGC--ATTACCC-AATCC-GAC-CGGG   [412]
+Porella_pi        -CATCCAAGG-AGGCAGCCGG-GCG---ATTACCC-AATACCGACACAGG   [432]
+Conocephal_con    -CATCCAAGGA-GGCAGCAGGCGCG---ATTACCC-AATCCCGACACGGG   [430]
+Asterella_tene    -CATCC-AG-AAGGCAG-A---GC-C--ATTACCC-AATCC-GAC-----   [415]
+Riccia            ???????????????????????CGCAAATTACCC-A-TCC-GAC-----   [432]
+Klebsormid_fla    -CATCCAAGGAAGGCAGCAGGCGCGC--ATT-CCC-AATCCTG-T-CAGG   [433]
+Coleochaet_nit    -CATCCAAGGA?GGCAG--GGCGCG--GATTACCC-AATCCTGATACAGG   [417]
+Fissidens_taxi    -CATCC--GGAAGGCAGC--GCGCGC--ATTACCC-AATCC-GA---GGG   [407]
+Plagiomnium_cu    -CATCC-AGGAAGGC--C----------ATTACCC-AACTCCGA---GGG   [407]
+Micromonas_pus    ??????????????????????????????????????????????????   [422]
+Mantoniel_squa    -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGG   [404]
+Nephroselm_pyr    -CATCCAA--AAGGC-GC--GCGCGC--ATTA-CC-AATCCTGAC-CAGG   [414]
+Pedinomonas_mi    -CATC-AAGGAAGGC-GCGGGCGCGC--ATTACCC-AATCC-GAGA--GG   [399]
+Tetraselm_cart    -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGG   [425]
+Enteromorpha      GCATCCGAGGAAGGCAGC-GGCGCGCAAATTACCC-AATCCTG--GCAGG   [424]
+Ulva_fasci        -CATCC-A--AAGGCAGCA-GCGCGCAAATTACCC-AATCCTGA---AGG   [415]
+Ulothrix_zo       --ATCC-GGAACGGCAG--GGCGC----AT--CCC-CTTCCT-----AG-   [407]
+Cympolia_barba    -CATCCAAGG-AGGCAGC-GGCGCGAAAATTACCC-AATCTAGATATTGT   [445]
+Batophora_oers    --YTTCC-GG--GGC-GC-GGCGC----ATY-CCC-AATC--GACATTGT   [428]
+Codium_decort     --CATCC-GGAAGGC-GC--GCGCGC-AATTACCC-AATCCCC--CGGGT   [436]
+Cladophoro        -CATCC-AGG-AGGCAGCAGGCGCGC--ATTACCC-AATCC-AAC--AGG   [432]
+Blastophysa_rh    -CAACCAAGGTAGG-AGCAGGCGCG---ATTACCC-AATCCTGAC-CGGG   [426]
+Trentepohlia      ??????????????????????????????????????????????????   [423]
+Cephaleuro_par    -CATCCAAGGAA-GCAGCAGGCGCGC--ATTACCCAAATCCCAAGGT--G   [405]
+Characium_vac     -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCCGACACGGG   [433]
+Dunaliella_par    -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCCAACACGGG   [432]
+Chlamyd_reinha    -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCCGACACGGG   [434]
+Volvox_carteri    -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCCGACACGGG   [434]
+Chlorococc_min    -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCCGACACGGG   [433]
+Draparn_plum      -CATCCAAGGAAGGCAGC-GGCGCGC-AATTACCC-AATCCTGACA--GG   [413]
+Uronema_belk      -CATCC--GGAAGGC-GC---CGCGC--ATTACCC-AATCC-GA---GGG   [395]
+Chlamydom_moew    --ATCC--GGAAGGC-GC-?-CGCGT-AATTACCC-AATCC------GGG   [413]
+Stephanos_pl      -CATCC-AGGAAGGCAGCAGGCGCGC--ATTACCC-AATCCGAA---GGG   [424]
+Carteria_rad      -CATCCAAGGAAGGCAGCA-GCGCGC--ATTACCC-AATCCTAAC-CGGG   [428]
+Gonium_pecto      -CATC--AGGAAGGC----GGCGCGC--ATTACCC-AATCCGAC---GGG   [420]
+Chlorella_kess    -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGG   [435]
+Chlorella_vulg    -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGG   [436]
+Protothec_wic     -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGG   [432]
+Chlorella_prot    -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGG   [436]
+Chlorella_min     -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGG   [435]
+Neochloris_aqu    -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGG   [434]
+Neochloris_vig    -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGG   [434]
+Pediastrum_dup    -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGATACGGG   [435]
+Scenedesm_obl     -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGATACGGG   [435]
+Characium_hin     -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGG   [432]
+Chlorella_fus     -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGATACGGG   [435]
+Ankistrodesmus    -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGATACGGG   [433]
+Pseudotreb_gig    -CATC---GGAAGGCAGC--GCGC-C--ATTACCC-AATCCTG-T-CAGG   [409]
+Pleurastr_terr    -CATCCA-GGAAGGCAGC--GCGCGC--ATTACCC-AATCCTGA---GGG   [422]
+Characium_per     -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATACTGACACAGT   [433]
+Parietochl_pse    -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGG   [434]
+Friedmannia_is    -CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGG   [434]
+
+[                          460       470       480       490       500]
+[                          .         .         .         .         .]
+
+Glycine_max       GAGGTAGTGACAATAAATAACAATACCGGGCTC-ATTGAGTCTGGTAATT   [487]
+Oryza_sativa      GAGGTAGTGACAATAAATAACAATACCGGGCGCTTTAGTGTCTGGTAATT   [488]
+Zamia_pumila      GAGGTAGTGACAATAAATAACAATACTGGGCTCATC-GAGTCTGGTAATT   [488]
+Psilotum_n        GAGGTAGTGACAATAAATAA-AATACTGGGCTTTTCAAAGTCTGGTAATT   [484]
+Equisetum_ar      GAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATT   [481]
+Atrichum_angus    GAGGTAGT-ACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATT   [462]
+Notothylas_bre    GAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATT   [453]
+Phaeoceros_lae    GAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATT   [462]
+Porella_pi        ?AGGTAGTGACAATAAATAACAATACTGGGCTTTACCAAGTCTGGTAATT   [482]
+Conocephal_con    G-GGT-GTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATT   [478]
+Asterella_tene    GAGG-AGTGACAATAAATAACAATACTGGGCT-TTACAAGTCTGGTAATT   [463]
+Riccia            GA--TAGTGACAATAAATAACAATAGTGGGCT-TTACAA-TC--GTAATT   [476]
+Klebsormid_fla    GAGGTAGTGAC-ATAAATAACAATGCTGGGCTTTTCAAAGTCTGGCAATT   [482]
+Coleochaet_nit    GAGGTAG--ACAATAAATAACA-TACTGGGCTTTTA-AAGTCTGGT?ATT   [463]
+Fissidens_taxi    GAGGTAGT-ACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATT   [456]
+Plagiomnium_cu    GAGGTAGTGACAATAAATAACAATACTGGGC--TTACGGGCCCG---ATT   [452]
+Micromonas_pus    ??????????????????????????????????????????????????   [472]
+Mantoniel_squa    GAGGTAGTGACAATAAATAACAATATCGGGGTTTTTCAA???????????   [454]
+Nephroselm_pyr    GAGGTAGTGAC-ATAAATAACAATACCGGGCTTTTTCAAGTCTGGTAATT   [463]
+Pedinomonas_mi    GAGG-AGTGGACAGAAATATCGTGACTGTGCCCTTGTGGCAGAGTCTTCG   [448]
+Tetraselm_cart    GAGGTAGTGACAATAAATAACAATACCGGGCTTTT-CAA???????????   [474]
+Enteromorpha      GAGGTAGTGACAATAAATATCA-TTCTGGGC-CACTTG-GTCCGGTAATT   [471]
+Ulva_fasci        GAGGTA-TGACAATAAATATCAATTCTGGGC-CACAT--GTCCGGTAATT   [461]
+Ulothrix_zo       -AGAT-GTGACAATA-AT-AC-ATACTGC-C-CA---G-GTCYGGT?ATT   [446]
+Cympolia_barba    GAGGTAGTGACAATAAATAACAATGTTGGACTTGTAAA-GTTTGGTAATT   [494]
+Batophora_oers    GAG-T-GTG-CGACAAATAACAATGCCGGGC-TTATCAAGTTTGGTAATT   [474]
+Codium_decort     GAGGT-GTGACGAGACATAACAACGACGTGC-TCAACGAGTGGG-TCGAT   [483]
+Cladophoro        GAGGT-GTG-C--GAAATAGCAAT--CGAGCATTT---CTCTG--CAATT   [471]
+Blastophysa_rh    GAGGTAGTGACAATAAATAACAGTATCTGGC-TCT-CAGTCCG-ATGCTT   [473]
+Trentepohlia      ??????????????????????????????????????????????????   [473]
+Cephaleuro_par    GAGGTGGTGG???GAAATAACGATGCTCCGGCCTCTG-GTCGGG?TAATC   [454]
+Characium_vac     GAGGTAGTGACAATAAATAACAATACTGGGCATTT--ATGTCTGGTAATT   [481]
+Dunaliella_par    GAGGTAGTGACAATAAATAACAATACCGGGCATTT--TTGTCTGGTAATT   [480]
+Chlamyd_reinha    GAGGTAGTGACAATAAATAACAATACCGGGCGCTTC-GCGTCTGGTAATT   [483]
+Volvox_carteri    GAGGTAGTGACAATAAATAACAATACCGGGCGCTTA-GCGTCTGGTAATT   [483]
+Chlorococc_min    GAGGTAGTGACAATAAATAACAATGCGGGGCCTA---TGGTCTTGCAATT   [480]
+Draparn_plum      GAGGTAGT-ACAATAAATAACAATACCGGGCATTAA-ATGTCTGGTAATT   [461]
+Uronema_belk      G-GG--GTGACAATAAATAACAATACCGGGCATTT--ATGTCTGGT--TT   [438]
+Chlamydom_moew    GAGGT--TGACAATAAATAACAATA-TCGGGCATCCAATGTCTGATAATT   [460]
+Stephanos_pl      GAGGTAGTGA-AAT-AATAACAATACCGGGCATTT--ATGTCTGGTAATT   [470]
+Carteria_rad      GAGGTAGTGACAATAAATAACAATACTGGGCATTT--TTGTCTGGTAATT   [476]
+Gonium_pecto      GAGGTAGTGACAATAAATAACAATACCGG--TC----GCGTCTGGTAATT   [464]
+Chlorella_kess    GAGGTAGTGACAATAAATAACAATACCGGGCCTTTTCAGGTCTGGTAATT   [485]
+Chlorella_vulg    GAGGTAGTGACAATAAATAACAATACTGGGCCTTTTCAGGTCTGGTAATT   [486]
+Protothec_wic     GAGGTAGTGACAATAAATAACAATACCGGGCCT-CACAGGTCTGGTAATT   [481]
+Chlorella_prot    GAGGTAGTGACAATAAATAACAATACCGGGCCT-CACAGGTCTGGTAATT   [485]
+Chlorella_min     GAGGTAGTGACAATAAATAACAATACCGGGCCT-TTCAGGTCTGGTAATT   [484]
+Neochloris_aqu    GAGGTAGTGACAATAAATAACAATACCGGGCACATC-GTGTCTGGTAATT   [483]
+Neochloris_vig    GAGGTAGTGACAATAAATAACAATACCGGGCACATC-GTGTCTGGTAATT   [483]
+Pediastrum_dup    GAGGTAGTGACAATAAATAACAATACTGGGCACTTC-GTGTCTGGTAATT   [484]
+Scenedesm_obl     GAGGTAGTGACAATAAATAACAATACCGGGCATTTT-ATGTCTGGTAATT   [484]
+Characium_hin     GAGGTAGTGACAATAAATAACAATACCGGGCACATC-GTGTCTGGTAATT   [481]
+Chlorella_fus     GAGGTAGTGACAATAAATAACAATACCGGGCATTTC-ATGTCTGGTAATT   [484]
+Ankistrodesmus    GAGGTAGTGACAATAAATAACAATACCGGGCWTTCA-ATGTCTGGTAATT   [482]
+Pseudotreb_gig    GAGGTA-TGACAATAAATAACAATACCGGGCTTTTTCAAGTCTGGTAATT   [458]
+Pleurastr_terr    GAGGTAGTGACAATAAATAACAATACCGGGCATTTA-ATGTCTGGTAATT   [471]
+Characium_per     GAGGTAGTGACAAAAAATATCGATGGTGGGCTCTTTCGAGTTTGCCAATT   [483]
+Parietochl_pse    GAGGTAGTGACAATAAATAACTATGCTTGGCTC-TTCGAGTCGGGCAATA   [483]
+Friedmannia_is    GAGGTAGTGACAATAAATAACAATACCGGGCTTTTTCAAGTCTGGTAATT   [484]
+
+[                          510       520       530       540       550]
+[                          .         .         .         .         .]
+
+Glycine_max       GGAATGAGTACAATCTAAATCCCTTAACGATGGATCCATTGAAGGGCAAG   [537]
+Oryza_sativa      GGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAG   [537]
+Zamia_pumila      GGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAG   [537]
+Psilotum_n        GGAATGAGTACAATCTAAACCC????????????????????????????   [534]
+Equisetum_ar      GGAATGAGTACAATCTAAATCC????????????????????????????   [531]
+Atrichum_angus    GGAATGAGTACAATCTAAATCCCTTAA--A????????????????????   [510]
+Notothylas_bre    GGAATGAGTACAATCTAAATCCCTTAA--A????????????????????   [501]
+Phaeoceros_lae    GGAATGA-TACAATCTAAATCCCTTAAC??????????????????????   [511]
+Porella_pi        GGAATGAGTACAATCTAAATCC????????????????????????????   [532]
+Conocephal_con    GGAATGAGAACAATCTAAATC?????????????????????????????   [528]
+Asterella_tene    GGAATGAGTACAATCTAAATCCC???????????????????????????   [513]
+Riccia            GGAA--AGTACAATCTAAATCCCTTA????????????????????????   [524]
+Klebsormid_fla    GGAATG????????????????????????????????????????????   [532]
+Coleochaet_nit    GGAATGAGTACAATCTAAATCTC???????????????????????????   [513]
+Fissidens_taxi    GGAATGAGTACAATCTAAATCCCTTAA--A????????????????????   [504]
+Plagiomnium_cu    GG--TGAGTA?AATCT-AATCCCTTAA???????????????????????   [499]
+Micromonas_pus    ??????????????????????????????????????????????????   [522]
+Mantoniel_squa    ??????????????????????????????????????????????????   [504]
+Nephroselm_pyr    GGAATG????????????????????????????????????????????   [513]
+Pedinomonas_mi    ??????????????????????????????????????????????????   [498]
+Tetraselm_cart    ??????????????????????????????????????????????????   [524]
+Enteromorpha      GGAATG????????????????????????????????????????????   [521]
+Ulva_fasci        GGAAT?AGTACAATGTAAA?CCCT-AAC-A????????????????????   [509]
+Ulothrix_zo       GGAATGAGTACAATCTAAATCCCTTA????????????????????????   [496]
+Cympolia_barba    GTAATG------GAGTAA-TCC-TTGAAC?????????????????????   [536]
+Batophora_oers    GGAATGAGT--AACGTAAAYGCCTTA????????????????????????   [522]
+Codium_decort     GG--TG-GA--AACTTAAAATCCC-CA???????????????????????   [527]
+Cladophoro        GAAATGAGAA-AATTTAAACCACTTAAC-A---ATC??????????????   [516]
+Blastophysa_rh    GGAAT-A-TA-AATCTAAATCCCTTAAC-A????????????????????   [519]
+Trentepohlia      ??????????????????????????????????????????????????   [523]
+Cephaleuro_par    GGAATGAGAA--ATTTA??TCCCTTA????????????????????????   [502]
+Characium_vac     GGAATGAGTACAATGTAAATATCTTAACGA-GTATCCATTGGAGGGCAAG   [530]
+Dunaliella_par    GGAATGAGTACAATCTAAATCCCTTAACGA-GTATCCATTGGAGGGCAAG   [529]
+Chlamyd_reinha    GGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAG   [532]
+Volvox_carteri    GGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAG   [532]
+Chlorococc_min    GGAATGAGAACAATGTAAATATCTTAACGA-GTATCCATTGGAGGGCAAG   [529]
+Draparn_plum      GGA??GA?TAC?ATCTAAATCC????????????????????????????   [511]
+Uronema_belk      GGAATGAGTACAATCTAA??CCCTTAA???????????????????????   [488]
+Chlamydom_moew    GGAATG????????????????????????????????????????????   [510]
+Stephanos_pl      GGA-TGAGTACAATGTAAATAT????????????????????????????   [519]
+Carteria_rad      GGAATGAGTACAATCTAAATCC????????????????????????????   [526]
+Gonium_pecto      GGA?TGAGT?CAATCTAAATCC????????????????????????????   [514]
+Chlorella_kess    GGAATGAGTACAATCTAAACCCCTTAACGA-GGATCAATTGGAGGGCAAG   [534]
+Chlorella_vulg    GGAATGAGTACAATCTAAACCCCTTAACGA-GGATCAATTGGAGGGCAAG   [535]
+Protothec_wic     GGAATGAGTACAACCTAAACACCTTAACGA-GGATCAATTGGAGGGCAAG   [530]
+Chlorella_prot    GGAATGAGTACAATCTAAACCCCTTAACGA-GGATCAATTGGAGGGCAAG   [534]
+Chlorella_min     GGAATGAGTACAATCTAAACCCCTTAACGA-GGATCAATTGGAGGGCAAG   [533]
+Neochloris_aqu    GGAATGAGTACAATCTAAATCCCTTAACGA-GTATCCATTGGAGGGCAAG   [532]
+Neochloris_vig    GGAATGAGTACAATCTAAATCCCTTAACGA-GTATCCATTGGAGGGCAAG   [532]
+Pediastrum_dup    GGAATGAGTACAATCTAAATCCCTTAACGA-GTATCCATTGGAGGGCAAG   [533]
+Scenedesm_obl     GGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAG   [533]
+Characium_hin     GGAATGAGTACAATCTAAATCCCTTAACGA-GTATCAATTGGAGGGCAAG   [530]
+Chlorella_fus     GGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAG   [533]
+Ankistrodesmus    GGAATGAGTACAATTTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAG   [531]
+Pseudotreb_gig    GGAT??????????????????????????????????????????????   [508]
+Pleurastr_terr    GGAATG????????????????????????????????????????????   [521]
+Characium_per     GGAATGAGTACAATCTAAATCCCTTAACGA-GGATCAATTGGAGGGCAAG   [532]
+Parietochl_pse    GGAATGAGTACAATCTAAATCCCTTAACGA-GGATCAATTGGAGGGCAAG   [532]
+Friedmannia_is    GGAATGAGTACAATCTAAATCCCTTAACGA-GGATCAATTGGAGGGCAAG   [533]
+
+[                          560       570       580       590       600]
+[                          .         .         .         .         .]
+
+Glycine_max       TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [587]
+Oryza_sativa      TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [587]
+Zamia_pumila      TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [587]
+Psilotum_n        ??????????????????????????????????????????????????   [584]
+Equisetum_ar      ??????????????????????????????????????????????????   [581]
+Atrichum_angus    ??????????????????????????????????????????????????   [560]
+Notothylas_bre    ??????????????????????????????????????????????????   [551]
+Phaeoceros_lae    ??????????????????????????????????????????????????   [561]
+Porella_pi        ??????????????????????????????????????????????????   [582]
+Conocephal_con    ??????????????????????????????????????????????????   [578]
+Asterella_tene    ??????????????????????????????????????????????????   [563]
+Riccia            ??????????????????????????????????????????????????   [574]
+Klebsormid_fla    ??????????????????????????????????????????????????   [582]
+Coleochaet_nit    ??????????????????????????????????????????????????   [563]
+Fissidens_taxi    ??????????????????????????????????????????????????   [554]
+Plagiomnium_cu    ??????????????????????????????????????????????????   [549]
+Micromonas_pus    ??????????????????????????????????????????????????   [572]
+Mantoniel_squa    ??????????????????????????????????????????????????   [554]
+Nephroselm_pyr    ??????????????????????????????????????????????????   [563]
+Pedinomonas_mi    ??????????????????????????????????????????????????   [548]
+Tetraselm_cart    ??????????????????????????????????????????????????   [574]
+Enteromorpha      ??????????????????????????????????????????????????   [571]
+Ulva_fasci        ??????????????????????????????????????????????????   [559]
+Ulothrix_zo       ??????????????????????????????????????????????????   [546]
+Cympolia_barba    ??????????????????????????????????????????????????   [586]
+Batophora_oers    ??????????????????????????????????????????????????   [572]
+Codium_decort     ??????????????????????????????????????????????????   [577]
+Cladophoro        ??????????????????????????????????????????????????   [566]
+Blastophysa_rh    ??????????????????????????????????????????????????   [569]
+Trentepohlia      ??????????????????????????????????????????????????   [573]
+Cephaleuro_par    ??????????????????????????????????????????????????   [552]
+Characium_vac     TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [580]
+Dunaliella_par    TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [579]
+Chlamyd_reinha    TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [582]
+Volvox_carteri    TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [582]
+Chlorococc_min    TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [579]
+Draparn_plum      ??????????????????????????????????????????????????   [561]
+Uronema_belk      ??????????????????????????????????????????????????   [538]
+Chlamydom_moew    ??????????????????????????????????????????????????   [560]
+Stephanos_pl      ??????????????????????????????????????????????????   [569]
+Carteria_rad      ??????????????????????????????????????????????????   [576]
+Gonium_pecto      ??????????????????????????????????????????????????   [564]
+Chlorella_kess    TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [584]
+Chlorella_vulg    TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [585]
+Protothec_wic     TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [580]
+Chlorella_prot    TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [584]
+Chlorella_min     TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [583]
+Neochloris_aqu    TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [582]
+Neochloris_vig    TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [582]
+Pediastrum_dup    TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [583]
+Scenedesm_obl     TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [583]
+Characium_hin     TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [580]
+Chlorella_fus     TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [583]
+Ankistrodesmus    TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [581]
+Pseudotreb_gig    ??????????????????????????????????????????????????   [558]
+Pleurastr_terr    ??????????????????????????????????????????????????   [571]
+Characium_per     TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [582]
+Parietochl_pse    TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [582]
+Friedmannia_is    TCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAG   [583]
+
+[                          610       620       630       640       650]
+[                          .         .         .         .         .]
+
+Glycine_max       TTGTTGCAGTTAAAAAGCTCGTAGTTGGACCTTGGGTTGGGTCGATC-GG   [636]
+Oryza_sativa      TTGTTGCAGTTAAAAAGCTCGTAGTTGGACCTTGGGCGCGGCCGGGCCGG   [637]
+Zamia_pumila      TTGTTGCAGTTAAAAAGCTCGTAGTTGGATCTTGGGACGGCCCGGCC-GG   [636]
+Psilotum_n        ??????????????????????????????????????????????????   [634]
+Equisetum_ar      ??????????????????????????????????????????????????   [631]
+Atrichum_angus    ??????????????????????????????????????????????????   [610]
+Notothylas_bre    ??????????????????????????????????????????????????   [601]
+Phaeoceros_lae    ??????????????????????????????????????????????????   [611]
+Porella_pi        ??????????????????????????????????????????????????   [632]
+Conocephal_con    ??????????????????????????????????????????????????   [628]
+Asterella_tene    ??????????????????????????????????????????????????   [613]
+Riccia            ??????????????????????????????????????????????????   [624]
+Klebsormid_fla    ??????????????????????????????????????????????????   [632]
+Coleochaet_nit    ??????????????????????????????????????????????????   [613]
+Fissidens_taxi    ??????????????????????????????????????????????????   [604]
+Plagiomnium_cu    ??????????????????????????????????????????????????   [599]
+Micromonas_pus    ??????????????????????????????????????????????????   [622]
+Mantoniel_squa    ??????????????????????????????????????????????????   [604]
+Nephroselm_pyr    ??????????????????????????????????????????????????   [613]
+Pedinomonas_mi    ??????????????????????????????????????????????????   [598]
+Tetraselm_cart    ??????????????????????????????????????????????????   [624]
+Enteromorpha      ??????????????????????????????????????????????????   [621]
+Ulva_fasci        ??????????????????????????????????????????????????   [609]
+Ulothrix_zo       ??????????????????????????????????????????????????   [596]
+Cympolia_barba    ??????????????????????????????????????????????????   [636]
+Batophora_oers    ??????????????????????????????????????????????????   [622]
+Codium_decort     ??????????????????????????????????????????????????   [627]
+Cladophoro        ??????????????????????????????????????????????????   [616]
+Blastophysa_rh    ??????????????????????????????????????????????????   [619]
+Trentepohlia      ??????????????????????????????????????????????????   [623]
+Cephaleuro_par    ??????????????????????????????????????????????????   [602]
+Characium_vac     TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGATGTGTTGTCGC-GG   [629]
+Dunaliella_par    TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTGTAGC-GG   [628]
+Chlamyd_reinha    TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGGTGGTGC-GG   [631]
+Volvox_carteri    TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGGTGGTGC-GG   [631]
+Chlorococc_min    TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGACCACGC-GG   [628]
+Draparn_plum      ??????????????????????????????????????????????????   [611]
+Uronema_belk      ??????????????????????????????????????????????????   [588]
+Chlamydom_moew    ??????????????????????????????????????????????????   [610]
+Stephanos_pl      ??????????????????????????????????????????????????   [619]
+Carteria_rad      ??????????????????????????????????????????????????   [626]
+Gonium_pecto      ??????????????????????????????????????????????????   [614]
+Chlorella_kess    TTGCTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGCGGGGCCTGCC-GG   [633]
+Chlorella_vulg    TTGCTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGACCTGCC-GG   [634]
+Protothec_wic     TTGCTGCAGTTAAAAAGCTCGTAGTTGGATTTCGAGGTCGTCCTGCT-GG   [629]
+Chlorella_prot    TTGCTGCAGTTAAAAAGCTCGTAGTCGAACTTCGGGGGGCCCGGGCC-GG   [633]
+Chlorella_min     TTGCTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGGCACGTC-GG   [632]
+Neochloris_aqu    TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GG   [631]
+Neochloris_vig    TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GG   [631]
+Pediastrum_dup    TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GG   [632]
+Scenedesm_obl     TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GG   [632]
+Characium_hin     TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GG   [629]
+Chlorella_fus     TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GG   [632]
+Ankistrodesmus    TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTAGGTTCCATC-GG   [630]
+Pseudotreb_gig    ??????????????????????????????????????????????????   [608]
+Pleurastr_terr    ??????????????????????????????????????????????????   [621]
+Characium_per     TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGCGGAGCC-GA   [631]
+Parietochl_pse    TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTCGCGCC-GG   [631]
+Friedmannia_is    TTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGCGCTACC-GG   [632]
+
+[                          660       670       680       690       700]
+[                          .         .         .         .         .]
+
+Glycine_max       TCCGCC-TCC--GTGTGCACCGGTC-GGCT--GTCCCTTCTGCCGGCGAT   [680]
+Oryza_sativa      TCCGCC-TCACGGCAGGCACCGACCTGCT--CGACCCTTCTGCCGGCGAT   [684]
+Zamia_pumila      TCCGCT-TTTTTGGGTGTGCACCGGCCGTTTCGTCCCTTTTGTTGGCGGC   [685]
+Psilotum_n        ??????????????????????????????????????????????????   [684]
+Equisetum_ar      ??????????????????????????????????????????????????   [681]
+Atrichum_angus    ??????????????????????????????????????????????????   [660]
+Notothylas_bre    ??????????????????????????????????????????????????   [651]
+Phaeoceros_lae    ??????????????????????????????????????????????????   [661]
+Porella_pi        ??????????????????????????????????????????????????   [682]
+Conocephal_con    ??????????????????????????????????????????????????   [678]
+Asterella_tene    ??????????????????????????????????????????????????   [663]
+Riccia            ??????????????????????????????????????????????????   [674]
+Klebsormid_fla    ??????????????????????????????????????????????????   [682]
+Coleochaet_nit    ??????????????????????????????????????????????????   [663]
+Fissidens_taxi    ??????????????????????????????????????????????????   [654]
+Plagiomnium_cu    ??????????????????????????????????????????????????   [649]
+Micromonas_pus    ??????????????????????????????????????????????????   [672]
+Mantoniel_squa    ??????????????????????????????????????????????????   [654]
+Nephroselm_pyr    ??????????????????????????????????????????????????   [663]
+Pedinomonas_mi    ??????????????????????????????????????????????????   [648]
+Tetraselm_cart    ??????????????????????????????????????????????????   [674]
+Enteromorpha      ??????????????????????????????????????????????????   [671]
+Ulva_fasci        ??????????????????????????????????????????????????   [659]
+Ulothrix_zo       ??????????????????????????????????????????????????   [646]
+Cympolia_barba    ??????????????????????????????????????????????????   [686]
+Batophora_oers    ??????????????????????????????????????????????????   [672]
+Codium_decort     ??????????????????????????????????????????????????   [677]
+Cladophoro        ??????????????????????????????????????????????????   [666]
+Blastophysa_rh    ??????????????????????????????????????????????????   [669]
+Trentepohlia      ??????????????????????????????????????????????????   [673]
+Cephaleuro_par    ??????????????????????????????????????????????????   [652]
+Characium_vac     TCTGCC-TCT-GGTACGTACTGCGTTCGA---GCATCTTTCTGCTGGGGA   [674]
+Dunaliella_par    TCAGCC-TTT-GGTGAGTACTGCTACGGC---CCACCTTTCTGCCGGGGA   [673]
+Chlamyd_reinha    TCCGCC-TCT-GGTGTGCACTGCTCTGCT---CCACCTTCCTGCCGGGGA   [676]
+Volvox_carteri    TCCGCC-TCT-GGTGTGCACTGCTCTGCT---CCACCTTCCTGCCGGGGA   [676]
+Chlorococc_min    TCTGCC-TCT-GGTACGTACTGCGCCTGG---CCACCTTTCTGCTGGGGA   [673]
+Draparn_plum      ??????????????????????????????????????????????????   [661]
+Uronema_belk      ??????????????????????????????????????????????????   [638]
+Chlamydom_moew    ??????????????????????????????????????????????????   [660]
+Stephanos_pl      ??????????????????????????????????????????????????   [669]
+Carteria_rad      ??????????????????????????????????????????????????   [676]
+Gonium_pecto      ??????????????????????????????????????????????????   [664]
+Chlorella_kess    TCCGCCGTTTCGGTGTGCACTGGCAGGGC----CGCCTTGTTGCCGGGGA   [679]
+Chlorella_vulg    TCCGCCGTTTCGGTGTGCACTGGCAGGGC---TCACCTTGTTGCCGGGGA   [681]
+Protothec_wic     TCCGCCGTTTCGGTGTGCACTGGCGCGGC---GGTCTTTGTTGCTGGGGA   [676]
+Chlorella_prot    TCCCCCCGCCCTCTGCGCACTGGCATGGCG--CCCCCCTGTTGCTGGGGA   [681]
+Chlorella_min     TCCGCCGTTTCGGTGTGCACTGGCGGGGC---CCACCTTGTTGCCGGGGA   [679]
+Neochloris_aqu    TCCGCC-TAT-GGTGAGTACTGCTATGGC---CTTCCTTTCTGCCGGGGA   [676]
+Neochloris_vig    TCCGCC-TCT-GGTGAGTACTGCTATGGC---CTTCCTTTCTGCCGGGGA   [676]
+Pediastrum_dup    TCCGCC-TAT-GGTGAGTACTGCTACGGC---CTCCCTTTCTGCCGGGGA   [677]
+Scenedesm_obl     TCCGCC-TAT-GGTGAGTACTGCTATGGC---CTTCCTTTCTGTCGGGGA   [677]
+Characium_hin     TCCGCC-TAT-GGTGAGTACTGCTATGGC---CTTCCTTTCTGCCGGGGA   [674]
+Chlorella_fus     TCCGCC-TAT-GGTGAGTACTGCTATGGC---CTTCCTTTCTGTCGGGGA   [677]
+Ankistrodesmus    TCCGCC-TAT-GGTGAGTACTGCTGTGGC---CTTCCTTTTTGCCGGGGA   [675]
+Pseudotreb_gig    ??????????????????????????????????????????????????   [658]
+Pleurastr_terr    ??????????????????????????????????????????????????   [671]
+Characium_per     TCTGCCCTTTGGGTATGCATTGGCTTTGC---CTATCTTGCTGCCGGGGA   [678]
+Parietochl_pse    TCCGCCGTTTCGGTGTGCACTGGCGTGGC---CCACCTTGCTGCCGGGGA   [678]
+Friedmannia_is    TCCGCCGATTCGGTGTGCACTGGTCGCGC---CCATCTTGCTGCCGGGGA   [679]
+
+[                          710       720       730       740       750]
+[                          .         .         .         .         .]
+
+Glycine_max       GCG---CTCCTGTCCTTAACTGGCCGGG-TCGTGCC-TCC-GGTGCTGTT   [724]
+Oryza_sativa      GCG---CTCCTGGCCTTAACTGGCCGGGTTCGTGCC-TCC-GGCGCCGTT   [729]
+Zamia_pumila      GCG---CACCTGGCCTTAACTGTCTGGG-TCGCGGT-TCC--ACGCTGTT   [728]
+Psilotum_n        ??????????????????????????????????????????????????   [734]
+Equisetum_ar      ??????????????????????????????????????????????????   [731]
+Atrichum_angus    ??????????????????????????????????????????????????   [710]
+Notothylas_bre    ??????????????????????????????????????????????????   [701]
+Phaeoceros_lae    ??????????????????????????????????????????????????   [711]
+Porella_pi        ??????????????????????????????????????????????????   [732]
+Conocephal_con    ??????????????????????????????????????????????????   [728]
+Asterella_tene    ??????????????????????????????????????????????????   [713]
+Riccia            ??????????????????????????????????????????????????   [724]
+Klebsormid_fla    ??????????????????????????????????????????????????   [732]
+Coleochaet_nit    ??????????????????????????????????????????????????   [713]
+Fissidens_taxi    ??????????????????????????????????????????????????   [704]
+Plagiomnium_cu    ??????????????????????????????????????????????????   [699]
+Micromonas_pus    ??????????????????????????????????????????????????   [722]
+Mantoniel_squa    ??????????????????????????????????????????????????   [704]
+Nephroselm_pyr    ??????????????????????????????????????????????????   [713]
+Pedinomonas_mi    ??????????????????????????????????????????????????   [698]
+Tetraselm_cart    ??????????????????????????????????????????????????   [724]
+Enteromorpha      ??????????????????????????????????????????????????   [721]
+Ulva_fasci        ??????????????????????????????????????????????????   [709]
+Ulothrix_zo       ??????????????????????????????????????????????????   [696]
+Cympolia_barba    ??????????????????????????????????????????????????   [736]
+Batophora_oers    ??????????????????????????????????????????????????   [722]
+Codium_decort     ??????????????????????????????????????????????????   [727]
+Cladophoro        ??????????????????????????????????????????????????   [716]
+Blastophysa_rh    ??????????????????????????????????????????????????   [719]
+Trentepohlia      ??????????????????????????????????????????????????   [723]
+Cephaleuro_par    ??????????????????????????????????????????????????   [702]
+Characium_vac     CGAG--CTCCTGGGCTTAATTGTCTGGG-ACTCGGAATC--AGCGAAGTG   [719]
+Dunaliella_par    CGTG--CTCCTGGGCTTAACTGTCCGGG-ACACGGAATC--GGCGAGGTT   [718]
+Chlamyd_reinha    CGGG--CTCCTGGGCTTCACTGTCTGGG-ACTCGGAGTC--GGCGAGGTT   [721]
+Volvox_carteri    CGGG--CTCCTGGGCTTCACTGTATGGG-ACTCGGAGTC--GGCGAGGTT   [721]
+Chlorococc_min    CG-C--CTCCTGGGCTTCACTGTCTGGGGGGTGGGAGTC--AGCGAAGTG   [718]
+Draparn_plum      ??????????????????????????????????????????????????   [711]
+Uronema_belk      ??????????????????????????????????????????????????   [688]
+Chlamydom_moew    ??????????????????????????????????????????????????   [710]
+Stephanos_pl      ??????????????????????????????????????????????????   [719]
+Carteria_rad      ??????????????????????????????????????????????????   [726]
+Gonium_pecto      ??????????????????????????????????????????????????   [714]
+Chlorella_kess    CGGG--CTCCTGGGCTTCACTGTCCGGG-ACTCGGAGTC--GGCGCTGTT   [724]
+Chlorella_vulg    CGGG--CTCCTGGGCTTCACTGTCCGGG-ACTCGGAGTC--GGCGCTGTT   [726]
+Protothec_wic     CGTG--CTCCTGGGCTTCACTGTCCGGG-ACTCGGAGTC--AGCGAGGTT   [721]
+Chlorella_prot    CGGCG-CTCCTGGGCTTTGCTGTCCGGG-GCCCGGAGTC--AGCGAGGTT   [727]
+Chlorella_min     CGGG--CTCCTGGGATTCA-TTTCCTGGGACTCGGAGTC--GGCGAGGTT   [724]
+Neochloris_aqu    CGGG--CTCCTGGGCTTAACTGTCCGGG-ACTCGGAGTC--GGCGTTGTT   [721]
+Neochloris_vig    CGG---CTCCTGGGCTTGACTGTCCGGG-ACTCGGAGTC--GGCGTTGTT   [720]
+Pediastrum_dup    CGAG--TTGCTGGGCTTCACTGTCCGGT-GCTTGGAGTC--GGCGTTGTT   [722]
+Scenedesm_obl     CGGG--CTTCTGGGCTTCACTGTCCGGG-ACTCGGAGTC--GACGTGGTT   [722]
+Characium_hin     CGGG--CTCCTGGGATTAACTTATCGGG-ACTCGGAGTC--GGCGTTGTT   [719]
+Chlorella_fus     CGGG--CTTCTGGGCTTAATTGTCCGGG-ACTCGGAGTC--GACGTGGTT   [722]
+Ankistrodesmus    CGGT--CTCCTGGGCTTCACTGTCCGGG-AATCGGAGTC--GGCGATGAT   [720]
+Pseudotreb_gig    ??????????????????????????????????????????????????   [708]
+Pleurastr_terr    ??????????????????????????????????????????????????   [721]
+Characium_per     -GGCG-CTCCTGGGCTTCATTGCTCGGG-ACGTTTAGTC--GGCGAGGTT   [723]
+Parietochl_pse    CGGG--CTCCTGGGCTTCACTGTCCGGG-ACTCGGAGTC--GGCGAGGTT   [723]
+Friedmannia_is    CAGG--CTGCTGGGCTTAACTGTCTGGC-ACCTGGAGTC--GGCGAGGTT   [724]
+
+[                          760       770       780       790       800]
+[                          .         .         .         .         .]
+
+Glycine_max       ACTTTGAAGAAATTAGAGTGCTCAAAGCAAGC-CTACGCTCTGTATACAT   [773]
+Oryza_sativa      ACTTTGAAGAAATTAGAGTGCTCAAAGCAAGC-CATCGCTCTGGATACAT   [778]
+Zamia_pumila      ACTTTGAAAAAATTAGAGTGCTCAAAGCAAGC-TTATGCTCTGAATACAT   [777]
+Psilotum_n        ??????????????????????????????????????????????????   [784]
+Equisetum_ar      ??????????????????????????????????????????????????   [781]
+Atrichum_angus    ??????????????????????????????????????????????????   [760]
+Notothylas_bre    ??????????????????????????????????????????????????   [751]
+Phaeoceros_lae    ??????????????????????????????????????????????????   [761]
+Porella_pi        ??????????????????????????????????????????????????   [782]
+Conocephal_con    ??????????????????????????????????????????????????   [778]
+Asterella_tene    ??????????????????????????????????????????????????   [763]
+Riccia            ??????????????????????????????????????????????????   [774]
+Klebsormid_fla    ??????????????????????????????????????????????????   [782]
+Coleochaet_nit    ??????????????????????????????????????????????????   [763]
+Fissidens_taxi    ??????????????????????????????????????????????????   [754]
+Plagiomnium_cu    ??????????????????????????????????????????????????   [749]
+Micromonas_pus    ??????????????????????????????????????????????????   [772]
+Mantoniel_squa    ??????????????????????????????????????????????????   [754]
+Nephroselm_pyr    ??????????????????????????????????????????????????   [763]
+Pedinomonas_mi    ??????????????????????????????????????????????????   [748]
+Tetraselm_cart    ??????????????????????????????????????????????????   [774]
+Enteromorpha      ??????????????????????????????????????????????????   [771]
+Ulva_fasci        ??????????????????????????????????????????????????   [759]
+Ulothrix_zo       ??????????????????????????????????????????????????   [746]
+Cympolia_barba    ??????????????????????????????????????????????????   [786]
+Batophora_oers    ??????????????????????????????????????????????????   [772]
+Codium_decort     ??????????????????????????????????????????????????   [777]
+Cladophoro        ??????????????????????????????????????????????????   [766]
+Blastophysa_rh    ??????????????????????????????????????????????????   [769]
+Trentepohlia      ??????????????????????????????????????????????????   [773]
+Cephaleuro_par    ??????????????????????????????????????????????????   [752]
+Characium_vac     ACCTTGAGCAAACAAGAGTGTTCAAAGCAAGC-CTACGCTCTGAATTTTT   [768]
+Dunaliella_par    ACTTTGAGTAAATTAGAGTGTTCAAAGCAAGC-CTACGCTCTGAATACAT   [767]
+Chlamyd_reinha    ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACAT   [770]
+Volvox_carteri    ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACAT   [770]
+Chlorococc_min    ACCTTGAGCAAACAAGAGAGTTCAAAGCAAGC-CTACGCTCTGAATTTTT   [767]
+Draparn_plum      ??????????????????????????????????????????????????   [761]
+Uronema_belk      ??????????????????????????????????????????????????   [738]
+Chlamydom_moew    ??????????????????????????????????????????????????   [760]
+Stephanos_pl      ??????????????????????????????????????????????????   [769]
+Carteria_rad      ??????????????????????????????????????????????????   [776]
+Gonium_pecto      ??????????????????????????????????????????????????   [764]
+Chlorella_kess    ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACAT   [773]
+Chlorella_vulg    ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACAT   [775]
+Protothec_wic     ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-TACCGCTCTGAATACAT   [770]
+Chlorella_prot    ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-ATCCGCTCTGAATACAT   [776]
+Chlorella_min     ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACAT   [773]
+Neochloris_aqu    ACTTTGAGTAAATTGGAGTGTTCAAAGCAAGC-CTGCGCTCTGAACATTT   [770]
+Neochloris_vig    ACTTTGAGTAAATTGGAGTGTTCAAAGCAAGC-CTGCGCTCTGAACATTT   [769]
+Pediastrum_dup    ACTTTGAGTAAATTAGAGTGTTCAAAGCAACG-ATACGCCCTGAATACTT   [771]
+Scenedesm_obl     ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-TTACGCCA-GAATACTT   [770]
+Characium_hin     ACTTTGAGTAAATTAGAGTGTTCAAAGCAAGC-CTGCGCTCTGAATACTT   [768]
+Chlorella_fus     ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-TTACGCCCTGAATACTT   [771]
+Ankistrodesmus    ACTTTGAGTAAATTAGAGTGTTCAAAGCAAGC-CTACGCTCTGAATACTT   [769]
+Pseudotreb_gig    ??????????????????????????????????????????????????   [758]
+Pleurastr_terr    ??????????????????????????????????????????????????   [771]
+Characium_per     ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTTTGCATACAT   [772]
+Parietochl_pse    ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACAT   [772]
+Friedmannia_is    ACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACAT   [773]
+
+[                          810       820       830       840       850]
+[                          .         .         .         .         .]
+
+Glycine_max       TAGCATGGGATAACACCACAGGATTCTGATCCTATTGTGTTGGCCTTCGG   [823]
+Oryza_sativa      TAGCATGGGATAACATCATAGGATTCCGGTCCTATTGTGTTGGCCTTCGG   [828]
+Zamia_pumila      TAGCATGGAATAACGGTATAGGATTCTGGTCCTATTGCGTTGGCCTTCGG   [827]
+Psilotum_n        ??????????????????????????????????????????????????   [834]
+Equisetum_ar      ??????????????????????????????????????????????????   [831]
+Atrichum_angus    ??????????????????????????????????????????????????   [810]
+Notothylas_bre    ??????????????????????????????????????????????????   [801]
+Phaeoceros_lae    ??????????????????????????????????????????????????   [811]
+Porella_pi        ??????????????????????????????????????????????????   [832]
+Conocephal_con    ??????????????????????????????????????????????????   [828]
+Asterella_tene    ??????????????????????????????????????????????????   [813]
+Riccia            ??????????????????????????????????????????????????   [824]
+Klebsormid_fla    ??????????????????????????????????????????????????   [832]
+Coleochaet_nit    ??????????????????????????????????????????????????   [813]
+Fissidens_taxi    ??????????????????????????????????????????????????   [804]
+Plagiomnium_cu    ??????????????????????????????????????????????????   [799]
+Micromonas_pus    ??????????????????????????????????????????????????   [822]
+Mantoniel_squa    ??????????????????????????????????????????????????   [804]
+Nephroselm_pyr    ??????????????????????????????????????????????????   [813]
+Pedinomonas_mi    ??????????????????????????????????????????????????   [798]
+Tetraselm_cart    ??????????????????????????????????????????????????   [824]
+Enteromorpha      ??????????????????????????????????????????????????   [821]
+Ulva_fasci        ??????????????????????????????????????????????????   [809]
+Ulothrix_zo       ??????????????????????????????????????????????????   [796]
+Cympolia_barba    ??????????????????????????????????????????????????   [836]
+Batophora_oers    ??????????????????????????????????????????????????   [822]
+Codium_decort     ??????????????????????????????????????????????????   [827]
+Cladophoro        ??????????????????????????????????????????????????   [816]
+Blastophysa_rh    ??????????????????????????????????????????????????   [819]
+Trentepohlia      ??????????????????????????????????????????????????   [823]
+Cephaleuro_par    ??????????????????????????????????????????????????   [802]
+Characium_vac     TAGCATGGAATCACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTAG   [817]
+Dunaliella_par    TAGCATGGAATAACACGATAGGACTCTGG-CTTATCTTGTTGGTCTGTAA   [816]
+Chlamyd_reinha    TAGCATGGAATAACACGATAGGACTCTGG-CCTATCT-GTTGGTCTGTGG   [818]
+Volvox_carteri    TAGCATGGAATAACACGATAGGACTCTGG-CCTATCT-GTTGGTCTGTGG   [818]
+Chlorococc_min    TAGCATGGAATCACACGATAGGACTGTGG-CCTATCTTGTTGGTCTGTGG   [816]
+Draparn_plum      ??????????????????????????????????????????????????   [811]
+Uronema_belk      ??????????????????????????????????????????????????   [788]
+Chlamydom_moew    ??????????????????????????????????????????????????   [810]
+Stephanos_pl      ??????????????????????????????????????????????????   [819]
+Carteria_rad      ??????????????????????????????????????????????????   [826]
+Gonium_pecto      ??????????????????????????????????????????????????   [814]
+Chlorella_kess    TAGCATGGAATAACACGATAGGACTCTGG-CCTATCCTGTTGGTCTGTAG   [822]
+Chlorella_vulg    TAGCATGGAATAACACGATAGGACTCTGG-CCTATCCTGTTGGTCTGTAG   [824]
+Protothec_wic     TAGCATGGAATAACATGATAGGACTCTGG-CTTATCTTGTTGGTCTGTAA   [819]
+Chlorella_prot    TAGCATGGAATAACATGATAGGACTCTGG-CTTATCACGTTGGTCTGTAA   [825]
+Chlorella_min     TAGCATGGAATAACACGATAGGACTCTGG-CCTATCCTGTTGGTCTGTAG   [822]
+Neochloris_aqu    TAGCATGGAATAACACGATAGGACTCTGG-CCTATCCTGTTGGTCTGTAG   [819]
+Neochloris_vig    TAGCATGGAATAACACGATAGGACTCTGG-CCTATCCTGTTGGTCTGTAG   [818]
+Pediastrum_dup    TAGCATGGAATAACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTAG   [820]
+Scenedesm_obl     TAGCATGGAATAACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTAG   [819]
+Characium_hin     TAGCATGGAATAACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTAG   [817]
+Chlorella_fus     TAGCATGGAATAACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTAG   [820]
+Ankistrodesmus    TAGCATGGAATATCGCGATAGGACTCTGG-CCTATCTCGTTGGTCTGTAG   [818]
+Pseudotreb_gig    ??????????????????????????????????????????????????   [808]
+Pleurastr_terr    ??????????????????????????????????????????????????   [821]
+Characium_per     CAGCATGGAATATCACGAGAGGACTCTGG-CCTATCTTGTTGGTCTGTGG   [821]
+Parietochl_pse    TAGCATGGAATAACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTGG   [821]
+Friedmannia_is    TAGCATGGAATAACACGATAGGACTCTGG-CCTATCTCGTTGGTCTGTGG   [822]
+
+[                          860       870       880       890       900]
+[                          .         .         .         .         .]
+
+Glycine_max       GATCGGA-GTAATGATTAACAGGGACAGTCGGGGGCATTCGTATTTCATA   [872]
+Oryza_sativa      GATCGGA-GTAATGATTAATAGGGACAGTCGGGGGCATTCGTATTTCATA   [877]
+Zamia_pumila      GACCGGA-GTAATGATTAACAGGGACGGTCGGGGGCATTCGTATTTCATT   [876]
+Psilotum_n        ??????????????????????????????????????????????????   [884]
+Equisetum_ar      ??????????????????????????????????????????????????   [881]
+Atrichum_angus    ??????????????????????????????????????????????????   [860]
+Notothylas_bre    ??????????????????????????????????????????????????   [851]
+Phaeoceros_lae    ??????????????????????????????????????????????????   [861]
+Porella_pi        ??????????????????????????????????????????????????   [882]
+Conocephal_con    ??????????????????????????????????????????????????   [878]
+Asterella_tene    ??????????????????????????????????????????????????   [863]
+Riccia            ??????????????????????????????????????????????????   [874]
+Klebsormid_fla    ??????????????????????????????????????????????????   [882]
+Coleochaet_nit    ??????????????????????????????????????????????????   [863]
+Fissidens_taxi    ??????????????????????????????????????????????????   [854]
+Plagiomnium_cu    ??????????????????????????????????????????????????   [849]
+Micromonas_pus    ??????????????????????????????????????????????????   [872]
+Mantoniel_squa    ??????????????????????????????????????????????????   [854]
+Nephroselm_pyr    ??????????????????????????????????????????????????   [863]
+Pedinomonas_mi    ??????????????????????????????????????????????????   [848]
+Tetraselm_cart    ??????????????????????????????????????????????????   [874]
+Enteromorpha      ??????????????????????????????????????????????????   [871]
+Ulva_fasci        ??????????????????????????????????????????????????   [859]
+Ulothrix_zo       ??????????????????????????????????????????????????   [846]
+Cympolia_barba    ??????????????????????????????????????????????????   [886]
+Batophora_oers    ??????????????????????????????????????????????????   [872]
+Codium_decort     ??????????????????????????????????????????????????   [877]
+Cladophoro        ??????????????????????????????????????????????????   [866]
+Blastophysa_rh    ??????????????????????????????????????????????????   [869]
+Trentepohlia      ??????????????????????????????????????????????????   [873]
+Cephaleuro_par    ??????????????????????????????????????????????????   [852]
+Characium_vac     GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT   [866]
+Dunaliella_par    GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT   [865]
+Chlamyd_reinha    GACCGGA-GTAATGATTAAGAGGGGTAGTCGGGGGCATTCGTATTCCGTT   [867]
+Volvox_carteri    GATCGGA-GTAATGATTAAGAGGGGTAGTCGGGGGCATTCGTATTCCGTT   [867]
+Chlorococc_min    GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT   [865]
+Draparn_plum      ??????????????????????????????????????????????????   [861]
+Uronema_belk      ??????????????????????????????????????????????????   [838]
+Chlamydom_moew    ??????????????????????????????????????????????????   [860]
+Stephanos_pl      ??????????????????????????????????????????????????   [869]
+Carteria_rad      ??????????????????????????????????????????????????   [876]
+Gonium_pecto      ??????????????????????????????????????????????????   [864]
+Chlorella_kess    GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCGAT   [871]
+Chlorella_vulg    GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT   [873]
+Protothec_wic     GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT   [868]
+Chlorella_prot    GACCGGA-GTAATGATTGAGAGGGACAGTCGGGGGCATTCGTATTTCATT   [874]
+Chlorella_min     GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT   [871]
+Neochloris_aqu    GACCAGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT   [868]
+Neochloris_vig    GACCAGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT   [867]
+Pediastrum_dup    GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT   [869]
+Scenedesm_obl     GACCGGA-GTAATGATTAAGAG?GACAGTCGGGGGCATTCGTATTTCATT   [868]
+Characium_hin     GACCAGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT   [866]
+Chlorella_fus     GACTGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT   [869]
+Ankistrodesmus    GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT   [867]
+Pseudotreb_gig    ??????????????????????????????????????????????CATT   [858]
+Pleurastr_terr    ??????????????????????????????????????????????????   [871]
+Characium_per     GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT   [870]
+Parietochl_pse    GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT   [870]
+Friedmannia_is    GACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATT   [871]
+
+[                          910       920       930       940       950]
+[                          .         .         .         .         .]
+
+Glycine_max       GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACAACTGCGAAAGCA   [922]
+Oryza_sativa      GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACAACTGCGAAAGCA   [927]
+Zamia_pumila      GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACCACTGCGAAAGCA   [926]
+Psilotum_n        ??????????????????????????????????????????????????   [934]
+Equisetum_ar      ??????????????????????????????????????????????????   [931]
+Atrichum_angus    ????????????????????????????????????CTTCTGCGAAAGCA   [910]
+Notothylas_bre    ??????????????????????????????????????????????????   [901]
+Phaeoceros_lae    ??????????????????????????????????????????????????   [911]
+Porella_pi        ??????????????????????????????????????????????????   [932]
+Conocephal_con    ??????????????????????????????????????????????????   [928]
+Asterella_tene    ????????????????????????????????????CTTCTGCGAAAGCA   [913]
+Riccia            ????????????????????????????????????????????AAAGCA   [924]
+Klebsormid_fla    ??????????????????????????????????????????????????   [932]
+Coleochaet_nit    ??????????????????????????????????????????????????   [913]
+Fissidens_taxi    ??????????????????????????????????????????????????   [904]
+Plagiomnium_cu    ????????TGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCA   [899]
+Micromonas_pus    ??????????????????????????????????????????????????   [922]
+Mantoniel_squa    ??????????????????????????????????????????????????   [904]
+Nephroselm_pyr    ??????????????????????????????????????????????????   [913]
+Pedinomonas_mi    ??????????????????????????????????????????????????   [898]
+Tetraselm_cart    ???????????????????????????????????????????????GCA   [924]
+Enteromorpha      ??????????????????????????????????????????????????   [921]
+Ulva_fasci        ??????????????????????????????????????????????????   [909]
+Ulothrix_zo       ???????????????????????????????????????????????GCA   [896]
+Cympolia_barba    ????????????????????????????????????????????AAAGCA   [936]
+Batophora_oers    ???????????????????????????????GGATCCAACTGCGAAAGCA   [922]
+Codium_decort     ???????????????????????????????????CCTAAGCGAAAGCAG   [927]
+Cladophoro        ???????????????????????????????????????TGCGAAAGCA-   [915]
+Blastophysa_rh    ??????????????????????????CCGATAGACGAACCATCTGAAGAT   [919]
+Trentepohlia      ???????????????????????ACGGAAGACGAACTTCTGCGAAAGCAT   [923]
+Cephaleuro_par    ??????????????????????????????????????????????????   [902]
+Characium_vac     GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCA   [916]
+Dunaliella_par    GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCA   [915]
+Chlamyd_reinha    GTCAGAGGTGAAATTCTTGGATTTACGGAAGACGAACATCTGCGAAAGCA   [917]
+Volvox_carteri    GTCAGAGGTGAAATTCTTGGATTTACGGAAGACGAACATCTGCGAAAGCA   [917]
+Chlorococc_min    GTCAGAGGTGAAATTCTTGGATTTATGAAACACGAACATCTGCGAAAGCA   [915]
+Draparn_plum      ??????????????????????????????????????????????????   [911]
+Uronema_belk      ???????????????????????????????????????????GAAAGCA   [888]
+Chlamydom_moew    ????????TGAAATTCTTGGATTTCGGAAAGACCTACCACTGCGAA?GCA   [910]
+Stephanos_pl      ??????????????????????????????????????????????????   [919]
+Carteria_rad      ??????????????????????????????????????????????????   [926]
+Gonium_pecto      ??????????????????????????????????????????????????   [914]
+Chlorella_kess    GTCAGAGGTGAAATTCTTGGATTTTCGAAAGACGAACTACTGCGAAAGCA   [921]
+Chlorella_vulg    GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA   [923]
+Protothec_wic     GTCAGAGGTGAAATTCTTGGATTTATGAAAGAC?AACTACTGCGAAAGCA   [918]
+Chlorella_prot    GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA   [924]
+Chlorella_min     GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA   [921]
+Neochloris_aqu    GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA   [918]
+Neochloris_vig    GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA   [917]
+Pediastrum_dup    GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA   [919]
+Scenedesm_obl     GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA   [918]
+Characium_hin     GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA   [916]
+Chlorella_fus     GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA   [919]
+Ankistrodesmus    GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA   [917]
+Pseudotreb_gig    GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCA   [908]
+Pleurastr_terr    ??????????????????????????????????????????????????   [921]
+Characium_per     GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCA   [920]
+Parietochl_pse    GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCA   [920]
+Friedmannia_is    GTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAACG   [921]
+
+[                          960       970       980       990       1000]
+[                          .         .         .         .         .]
+
+Glycine_max       TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG   [972]
+Oryza_sativa      TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG   [977]
+Zamia_pumila      TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG   [976]
+Psilotum_n        ?????????????????????????AAGAACGAAAGTTGGG--CTCGAAG   [982]
+Equisetum_ar      ?????????????????????????AAGAACGAAAGTTGG---CTCGAAG   [978]
+Atrichum_angus    TTTGCCAAGGATGTTTTCATTAATCAAG???GAAAGTTGGGGGCTCGAAG   [960]
+Notothylas_bre    ????????????????????????????????AAAGTTGGGG-CTCGAAG   [950]
+Phaeoceros_lae    ???????????????????????????????GAAAGTTGGG--CTCGAAG   [959]
+Porella_pi        ?????????????????????????AA?AAC?AAAGTTGGG--CTCGAA-   [979]
+Conocephal_con    ??????AAGGATGTTT--ATTAA--AA-AA-GAAA-TTG-------GAAG   [964]
+Asterella_tene    TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG   [963]
+Riccia            TTTGCCAAGGATGTTTTCATTAAT-AACAA--AAAGTTGG?GGCTCGAAG   [971]
+Klebsormid_fla    ??????AAGGATGTTTTCATTAAT---GA--GAAAGTTGGGGGCTCGAAG   [977]
+Coleochaet_nit    ?????????????????CATTAATCAAGAA-GAAAGTTGGGGGCTCGAAG   [962]
+Fissidens_taxi    ???????????????????????????????????????????CTCGAAG   [954]
+Plagiomnium_cu    TTTGCCAAGGATGTTTTCGTTAATCAA-AA-GAAAGTTGGGGGCTCGAAG   [947]
+Micromonas_pus    ????????????????????????????????AAAGTTGGGGGCTCGAAG   [972]
+Mantoniel_squa    ?????????????????????????????????????????????????G   [954]
+Nephroselm_pyr    ????????????????????????????????????????GGGCTCGGAG   [963]
+Pedinomonas_mi    ???????????????????????????????????????GGGGATCGAAG   [948]
+Tetraselm_cart    TTTGTCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG   [974]
+Enteromorpha      ????????????????????????????????????????GGGCTCGAAG   [971]
+Ulva_fasci        ???????????????????????????????????????GGGGCTCGAAG   [959]
+Ulothrix_zo       TT-GCCAAGGATGTTTTCATTGATCAACAA-GAAAGTTGGGGGCTC----   [940]
+Cympolia_barba    TTTGTCAAGGGTATCTTCATTGATCAAGAAC---AGTTGGGGGATCG--G   [981]
+Batophora_oers    TTCC----GGGCGCTCTCGTTGATCAAGAAC---AGTTGGGGGATCGAAG   [965]
+Codium_decort     TCGCCAAGGACACTTCCTTGTGATCAAGA-CGAAAGTT--GGGATCGAAG   [974]
+Cladophoro        TTGCCAAGGACGCTTTCATTA-GTCAAGGACGAAAGTCGGGGGATCGAAG   [964]
+Blastophysa_rh    TTGCCAAGGATCGTTTTCTTTGATC------GAAAGTTGGGGGCTCGAAG   [963]
+Trentepohlia      TTG-CAAGGATGTTTTCATT-GATCAAGAA-GAAAGTCGG-GGCTCGAAG   [969]
+Cephaleuro_par    ??????????????????????????????????GTCGG-GGGCTCG-CG   [950]
+Characium_vac     TTTGCCAAGGATGTTTTCATTGATCAAGAACGAAAGTTGGGGGCTCGAAG   [966]
+Dunaliella_par    TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG   [965]
+Chlamyd_reinha    TTGGCCAAGGATACTTTCATTGATCAAGAACGAAAGTTGGGGGCTCGAAG   [967]
+Volvox_carteri    TTTGCCAAGGATACTTTCATTGATCAAGAACGAAAGTTGGGGGCTCGAAG   [967]
+Chlorococc_min    TTTGCCAAGGATGTTTTCATTGATCAAGAACGAAAGTTGGGGGCTCGAAG   [965]
+Draparn_plum      ?????????????????????????AA???CGAAAGTT-GGGGCTCGAAG   [960]
+Uronema_belk      TTTGCCAAGT?TGTCTTCATTAATCAA-AA-GAAAGTTGGGGGCTCGAAG   [936]
+Chlamydom_moew    TTTGCCAAGGATGTTTTCATT?ATCAAGAA?GAAAGTAGGGGGCTCGAAG   [960]
+Stephanos_pl      ???????????????????????????????????????????CTCGAAG   [969]
+Carteria_rad      ?????????????????????????AA-A--GAAA-TTGG-GGCTCGAAG   [971]
+Gonium_pecto      ??????????????????????????????????????????GCTCGAAG   [964]
+Chlorella_kess    TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG   [971]
+Chlorella_vulg    TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG   [973]
+Protothec_wic     TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG   [968]
+Chlorella_prot    TTTGCCAAGGATGTTTTCATTGATCAAGAACGAAAGTTGGGGGCTCGAAG   [974]
+Chlorella_min     TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG   [971]
+Neochloris_aqu    TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG   [968]
+Neochloris_vig    TTTGCCAAGGATGTTT-CATTAATCAAGAACGAAAGTTGGGGGCTCGAAG   [966]
+Pediastrum_dup    TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG   [969]
+Scenedesm_obl     TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG   [968]
+Characium_hin     TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG   [966]
+Chlorella_fus     TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG   [969]
+Ankistrodesmus    TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG   [967]
+Pseudotreb_gig    TTTGCCAAGGATGTTTTCATTAATC--GAA-GAAAGTTGGGGGCTCGAAG   [955]
+Pleurastr_terr    ???????????????????????????????GAAAGTT-GGGGCTC-AAG   [969]
+Characium_per     TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG   [970]
+Parietochl_pse    TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG   [970]
+Friedmannia_is    TTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAG   [971]
+
+[                          1010      1020      1030      1040      1050]
+[                          .         .         .         .         .]
+
+Glycine_max       ACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CCAGGG   [1020]
+Oryza_sativa      ACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CCAGGG   [1025]
+Zamia_pumila      ACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CCAGGG   [1024]
+Psilotum_n        ACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGG-   [1029]
+Equisetum_ar      AC-ATCA?ATACCG-TCCTAGTCTCAACCATAAACGA-GC?GA-CTAGGG   [1024]
+Atrichum_angus    ACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1008]
+Notothylas_bre    ACGATCAGATAC---TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [996]
+Phaeoceros_lae    ACGAT-AG-TACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1005]
+Porella_pi        ACGAT-AGATACCG-TCCTAGTCTCAACCATAAACGATGCCGAGCTAGGG   [1027]
+Conocephal_con    ACGATCAGATACC---CCTAGTCTCAACCATAAACGATGCCGA-CTAG--   [1008]
+Asterella_tene    ACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGG-   [1010]
+Riccia            ACGATCAGATACC--TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1018]
+Klebsormid_fla    ACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1025]
+Coleochaet_nit    ACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGACCTAGG-   [1010]
+Fissidens_taxi    ACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1002]
+Plagiomnium_cu    ACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [995]
+Micromonas_pus    ATGATTAGATA--A-TCCTAGTCTCAACCATAAACGATGC?GA-CTAGGG   [1018]
+Mantoniel_squa    ATGATTA-ATAC-A-TC-TAGTCTC-ACCATAAACGGAYCYGA-CWA--G   [996]
+Nephroselm_pyr    ATGATTAG---CCA-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1008]
+Pedinomonas_mi    ACGATCAGATACC--TC-TAGTCTCTACCATAAACTAT-CCGA-CTAGGG   [993]
+Tetraselm_cart    ACGATTAGATACCG-TCCTAGTCTC-ACCAT-AACGA--CCGA-C-AGGG   [1017]
+Enteromorpha      ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGAT-CCGA-CCAGGG   [1018]
+Ulva_fasci        ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1007]
+Ulothrix_zo       ----TYAGATACCG-TCG-AG-C-CAACCATAA-CGAYGCC-A--TAGG-   [977]
+Cympolia_barba    ATGATTAGATACCA-TCCTAGTCTCAACCATAAACCATGCCAA-TTAGGG   [1029]
+Batophora_oers    ATGATTAGATACCA-TCCTAGTCTCAACCATAAACTATGCCAA-Y-AGGG   [1012]
+Codium_decort     ATGATT--ATACCG-TCGTAGTCCCAACTGTAAACTATGCCAT-CTGGGG   [1020]
+Cladophoro        ACGATTAGATA-CG-TCGTAGTCTCGACCATAAACGATGCCAA-TTAGGG   [1011]
+Blastophysa_rh    ATGATTAGATACCGGTCGTAGTCTCAACCATAAAC-ATGCCCA-CTA--G   [1009]
+Trentepohlia      ACGATTAGATACCG-TCGTAGTCTCGACCATAAACGATGCCGA-CTAGGG   [1017]
+Cephaleuro_par    -CGCTT-GGTACCG-TCGTAGTCTCGACCATAAACGATGCCG--CTAGGG   [995]
+Characium_vac     ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1014]
+Dunaliella_par    ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1013]
+Chlamyd_reinha    ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1015]
+Volvox_carteri    ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1015]
+Chlorococc_min    ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1013]
+Draparn_plum      ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGG-   [1007]
+Uronema_belk      ACGATTAGATACCG-T-GTAGTCTCAACCATAAACGATGCCGA-CTAGG-   [982]
+Chlamydom_moew    ACGATTAGATACCG-TCGTAGTCTCTACCATAAACGATGCCGA-CCAGGG   [1008]
+Stephanos_pl      ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1017]
+Carteria_rad      ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1019]
+Gonium_pecto      ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1012]
+Chlorella_kess    ACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1019]
+Chlorella_vulg    ACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1021]
+Protothec_wic     ACGATTAGATACCG-TCCTAGTCTCAACCGTAAACGATGCCGA-CTAGGG   [1016]
+Chlorella_prot    ACGATTAGATACCG-TCCTAGTCTCAACCGTAAACGATGCCGA-CTCGGG   [1022]
+Chlorella_min     ACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1019]
+Neochloris_aqu    ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1016]
+Neochloris_vig    ACGATTAGATACCG-TCGTAGACTCAACCATAAACGATGCCGA-CTAGGG   [1014]
+Pediastrum_dup    ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1017]
+Scenedesm_obl     ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1016]
+Characium_hin     ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1014]
+Chlorella_fus     ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1017]
+Ankistrodesmus    ACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1015]
+Pseudotreb_gig    ACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1003]
+Pleurastr_terr    WCGATT-GATACCG-T--TAGWCTCAAY--TA-WCGATGCC-A--TAGG-   [1008]
+Characium_per     ACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1018]
+Parietochl_pse    ACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1018]
+Friedmannia_is    ACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGG   [1019]
+
+[                          1060      1070      1080      1090      1100]
+[                          .         .         .         .         .]
+
+Glycine_max       ATCAGCGGATGTTGCTTTTAGGACTCCGCTGGCACCTTAT-GAGAAATCG   [1069]
+Oryza_sativa      ATCGGCGGATGTTGCTTATAGGACTCCGCCGGCACCTTAT-GAGAAATCA   [1074]
+Zamia_pumila      ATCGGCGGATGTTGCTCTAAGGACTCCGCCGGCACCTTAT-GAGAAATCA   [1073]
+Psilotum_n        -TC-GCGGATGTTACCTTGATGACTCCGCCGGCACCTTAT--AGAAATC-   [1074]
+Equisetum_ar      ATT--CGGATGTTACTTCAATGACTCTGCCGGCACCTTAT-GAGAAATCA   [1071]
+Atrichum_angus    ATTTGCGGGTGTTAATTTGATGACCCCG-AAGCACCTTAT-GAGAAATC-   [1055]
+Notothylas_bre    ATTGGCGGGTGTTAATTAGATGACTCCGCCAGCACCTTAT-GAGAAATCA   [1045]
+Phaeoceros_lae    ATTGGCGGATGTTAATTAGATGACTCCGCCAGCACCTTAT-GAGAAATCA   [1054]
+Porella_pi        ATTG--GGATGTTAATTTGATGACTCCGC-AGCACCTTAT-GAGAAATCA   [1073]
+Conocephal_con    ATC--CGGATGT?CTTTTGATGACTCCGCCGGCACCTCCA-GAGAAATCA   [1055]
+Asterella_tene    ATCG--GGATGT?GATTAGATGACTCCGCCGGCACCTCCATGAGAAATCA   [1058]
+Riccia            ATCGGCGGATGT?GATTTGATGACTCCGCCGGCACCTCCT-GAGAAATCA   [1067]
+Klebsormid_fla    ATTGGCGGATGTTAATTTGATGACTCCGCCAGCACCTTAT-GAGAAATC-   [1073]
+Coleochaet_nit    ATCAACGGATGTTAATTTAATGACTCCGCCAGCACCTTAT--AGAAA-CA   [1057]
+Fissidens_taxi    ATTGGCGGGTGTTGATTTGATGACCCCGCCAGCACCTTGA-GAGAAAT--   [1049]
+Plagiomnium_cu    ATTGGCGGGTGTTGATTCGATGACCCCGCCAGCACCTTAT-GAGAAATC-   [1043]
+Micromonas_pus    A--GGCGGATGTTAATT-GATGACTCCGC-AGCACCTTAT-GAGAAATCA   [1063]
+Mantoniel_squa    ATTCAC--ATCTTAAT---AT--CTC--CCA-CACCTTAT--A-AAATC-   [1032]
+Nephroselm_pyr    ATTGGCAGATGTTAGTTCGATGACTCTGCCAGCACCTTAT--AGAAATC-   [1055]
+Pedinomonas_mi    ATTGGTGGACGTT-GTTTT?CGACTCCATCAGCACCTTAT-GAGAAATCA   [1041]
+Tetraselm_cart    ATTGGCAGA--TT--TT--ATG--TCTGCCAGCACCTTAT-GAGAAAT-A   [1057]
+Enteromorpha      ATTGCCGGGTGTTTTTTTGATGACTCCGCCAGCACCTCAT-GAGAAATCA   [1067]
+Ulva_fasci        ATTGGCGGGGTGTTTTTTTATGACTCCGC-AGCACCTCAT-GAGAAATCA   [1055]
+Ulothrix_zo       AT-GGCGGGYGTTTTTTT--TG-CTCCGC-ACA-CCTTAT-GAGAAATCA   [1020]
+Cympolia_barba    ATCGTTGAGC-GTTGATTAGTGACCTCGTCGGCACCATAT-TAGAAATTA   [1077]
+Batophora_oers    ATCGGC-GGGGT-CTTTA-C-GTGTCCTCGTCGGCCCCTT-GAGAAA-CA   [1056]
+Codium_decort     ATCGG--GGCTG-ATGAATTGCCG-CCG-GCACCCTCCGA-GAAATTAAA   [1064]
+Cladophoro        ATTGGA-GGGCGGATAGATAT-CCTCCTCCAGCACCTTCC-GCGAAAGCA   [1058]
+Blastophysa_rh    ATCAGG-AG--ATTTAT-TTCGACTTCTCCGGCACTCCAT-GAGAAATCA   [1054]
+Trentepohlia      ATCGGA-GG-TTTTTTTTA-TGACCTCTCCGG-ACCT--A-CAGAAATCA   [1060]
+Cephaleuro_par    ATCGGA-GGTGGGTTTTTTATG-CCTCTCCGGGCACCTTC-GAGAAATCA   [1042]
+Characium_vac     ATTGGCAGGTGTTCAATTGATGACCCTGCCAGCACCTTAT-GAGAAATCA   [1063]
+Dunaliella_par    ATTGGCAGGTGTTTCGTTGATGACCCTGCCAGCACCTTAT-GAGAAATCA   [1062]
+Chlamyd_reinha    ATTGGCAGATGTTCTTTTGATGACTCTGCCAGCACCTTAT-GAGAAATCA   [1064]
+Volvox_carteri    ATTGGCAGATGTTCTTTTGATGACTCTGCCAGCACCTTAT-GAGAAATCA   [1064]
+Chlorococc_min    ATTGGCGGGCGTCCTTTTGATGACCCCGCCGGCACCTTAT-GAGAAATCA   [1062]
+Draparn_plum      ATCGGT?GGAGTTTTTTCGAT-ACTCCATGGGCACCTTAT-GAGAAATC-   [1054]
+Uronema_belk      ATCGGTGGA--TTTTTT-----ACTCCGTGGGCACCTTAT-GAGAAATC-   [1023]
+Chlamydom_moew    ATTGGCAGGTGTTCCTTTGATGACCCTGCCAGCACCTTGA-GAGAAATCA   [1057]
+Stephanos_pl      ATTGGCAGGTGTTTCGTTGATGACCCTGCCAGCACCTTAT-GAGAAATC-   [1065]
+Carteria_rad      ATTGGCAGGCGTTTTGTTAACGACCCTGC-AGCACCTTAT--AGAAATC-   [1065]
+Gonium_pecto      ATTGGCAGATGTTCCTTTGATGACTCTGCCAGCACCTTAT-GAGAAATCA   [1061]
+Chlorella_kess    ATCGGCGGATGTTTCTTCGATGACTCCGCCGGCACCTTAT-GAGAAATCA   [1068]
+Chlorella_vulg    ATCGGCGGATGTTTCTTCGATGACTCCGCCGGCACCTTAT-GAGAAATCA   [1070]
+Protothec_wic     ATCGGCGGACGTTCTATCGATGACTCCGCCGGCACCTTAT-GAGAAATCA   [1065]
+Chlorella_prot    ATCGGTGGTCGTTCATTCAATGACACCACCGGCACCTCAT-GAGAAATCA   [1071]
+Chlorella_min     ATCGGCGGGTGTTCTTTTGATGACCCCGCCGGCACCTTAT-GAGAAATCA   [1068]
+Neochloris_aqu    ATTGGCGGACGTTTCATTGATGACTCCGCCAGCACCTTAT-GAGAAATCA   [1065]
+Neochloris_vig    ATTTGCGGACGTTTCATTGATGACTCCGCCAGCACCTTGT-GAGAAATCA   [1063]
+Pediastrum_dup    ATTGGCGGATGTTTTTTTGATGACTCCGCCAGCACCTTAT-GAGAAATCA   [1066]
+Scenedesm_obl     ATTGGCGAATGTTTTTTTAATGACTTCGCCAGCACCTTAT-GAGAAATCA   [1065]
+Characium_hin     ATTGGCGAACGTTTCATTGATGACTTCGCCAGAACCTTAT-GAGAAATCA   [1063]
+Chlorella_fus     ATTGGCGAATGTTTTTTTAATGACTTCGCCAGCACCTTAT-GAGAAATCA   [1066]
+Ankistrodesmus    ATTGGAGGATGTTCTTTTGATGACTTCTCCAGCACCTTAT-GAGAAATCA   [1064]
+Pseudotreb_gig    ATTGGCGGGTGTTCTTTCGATGACCCCGCCAGCACCTTAT-GAGAAATC-   [1051]
+Pleurastr_terr    ATTGTGCCGATGTTTATTCAATTACTCCGCCACACCTYAT-GA-AAATC-   [1055]
+Characium_per     ATTGGCGGACGTTCATTCGATGACTCCGCCAGCACCTTAT-GAGAAATCA   [1067]
+Parietochl_pse    ATTGGCGGATGTTTTATCGATGACTCCGCCAGCACCTTAT-GAGAAATCA   [1067]
+Friedmannia_is    ATTGGCGGGTGTTCTATCGATGACCCCGCCAGCACCTTAT-GAGAAATCA   [1068]
+
+[                          1110      1120      1130      1140      1150]
+[                          .         .         .         .         .]
+
+Glycine_max       AAGTCTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1119]
+Oryza_sativa      AAGTCTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1124]
+Zamia_pumila      AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1123]
+Psilotum_n        AAGTCTTTGGGTTCCGGGGGGA????????????????????????????   [1124]
+Equisetum_ar      AAGTCTTTGGGTTCC----GGA-T??????????????????????????   [1116]
+Atrichum_angus    AAGTATTTGGGTTCCGGGGGGAGTATG???????????????????????   [1105]
+Notothylas_bre    AAGTTTTTGGGTTCCGG?????????????????????????????????   [1095]
+Phaeoceros_lae    AAGTTTTTGGGTTCCGGGGGGAGTAT????????????????????????   [1104]
+Porella_pi        AAGTTTTTGGGTTCC???????????????????????????????????   [1123]
+Conocephal_con    AA-TTTTTGGGTTCC???????????????????????????????????   [1104]
+Asterella_tene    AAGTTTTTGGGTTCCGGGGGGAG-ATG???????????????????????   [1107]
+Riccia            AAGTTTTTGGGTTCCGGGGGGAGTAT????????????????????????   [1117]
+Klebsormid_fla    -AGTTTTTGGGTTCCGGGGGGA-TATGGTC????????????????????   [1121]
+Coleochaet_nit    AAGTTCTTGGGTTCC???????????????????????????????????   [1107]
+Fissidens_taxi    AAGTTTTTGGGTTCCGGGGGGAGTATG???????????????????????   [1099]
+Plagiomnium_cu    -AGTTTTTGGGTTCCGGGGGGAGTATG???????????????????????   [1092]
+Micromonas_pus    AA-TTTTTGGGTTCCGGGA???????????????????????????????   [1112]
+Mantoniel_squa    AA-TTTTT??????????????????????????????????????????   [1081]
+Nephroselm_pyr    AAGTTTTTGGGTTCC???????????????????????????????????   [1105]
+Pedinomonas_mi    AAGTCTTT??????????????????????????????????????????   [1091]
+Tetraselm_cart    AAGTTTTTGGGTT?????????????????????????????????????   [1107]
+Enteromorpha      AAGTCTTTGGGTTCCGGGGGGAG?ATGG??????????????????????   [1117]
+Ulva_fasci        AAGTTTTTGGGTTCCGGGGGGA?TATGGTC?CAA????????????????   [1105]
+Ulothrix_zo       AAGTYTTTGGGYTCCGGGGAG??TATGGTC????????????????????   [1070]
+Cympolia_barba    TAAATCTACAGGCTTGGGGGGGAA??????????????????????????   [1127]
+Batophora_oers    TAAATTTGGGCTCCGGG???TAGTATGGT?????????????????????   [1106]
+Codium_decort     AGATCTTGGGCTTCCGGGGAGC?TAGTGCTCAGTGTGGTG??????????   [1114]
+Cladophoro        AAATTTATG?CTTC?GGGGGGAGTAT????????????????????????   [1108]
+Blastophysa_rh    AAGTCTTTGGGTTC????????????????????????????????????   [1104]
+Trentepohlia      AAGTT--TGGGTTCC???????????????????????????????????   [1108]
+Cephaleuro_par    AAGTTGTTGGGTTCC?GGGGGAGTATGG??????????????????????   [1092]
+Characium_vac     AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1113]
+Dunaliella_par    AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1112]
+Chlamyd_reinha    AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1114]
+Volvox_carteri    AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1114]
+Chlorococc_min    AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1112]
+Draparn_plum      AAGTCTTTGGGTTCCGGGGGGA????????????????????????????   [1104]
+Uronema_belk      -A-TCTTTGGGTTCCGGGGGGA-TAT????????????????????????   [1070]
+Chlamydom_moew    GAGTCTTTGGGTTCCGGGGGGAGTATGG??????????????????????   [1107]
+Stephanos_pl      -AGTTTTTGGGTTCC?GGGGGA????????????????????????????   [1114]
+Carteria_rad      -A-TTTTTGGGTTCCGGGGGGA????????????????????????????   [1113]
+Gonium_pecto      AA-TTTTTGG-TTCCGGGGGGAGGA?????????????????????????   [1109]
+Chlorella_kess    AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1118]
+Chlorella_vulg    AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1120]
+Protothec_wic     AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1115]
+Chlorella_prot    AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1121]
+Chlorella_min     AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1118]
+Neochloris_aqu    AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1115]
+Neochloris_vig    AAGTTTTTGGGT--CGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1111]
+Pediastrum_dup    AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1116]
+Scenedesm_obl     AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1115]
+Characium_hin     AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1113]
+Chlorella_fus     AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1116]
+Ankistrodesmus    AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1114]
+Pseudotreb_gig    -AGTTTTTGGGTTCCGGGGGGAGTATGG??????????????????????   [1100]
+Pleurastr_terr    AAGWWTTT---TTCC??GGGGAGTATG???????????????????????   [1102]
+Characium_per     AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1117]
+Parietochl_pse    AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1117]
+Friedmannia_is    AAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGG   [1118]
+
+[                          1160      1170      1180      1190      1200]
+[                          .         .         .         .         .]
+
+Glycine_max       AATTGACGGAA-GGGCA-CCACCAGGAGTGGAGCCTGCGGCT-AATTTGA   [1166]
+Oryza_sativa      AATTGACGGAA-GGGCA-CCACCAGGCGTGGGGCCTGCGGCTTAATTTGA   [1172]
+Zamia_pumila      AATTGACGGAA-GGGCA-CCACCAGGAGTGGAGCCTGCGGCTTAATTTGA   [1171]
+Psilotum_n        ??????????????????????????????????????????????????   [1174]
+Equisetum_ar      ??????????????????????????????????????????????????   [1166]
+Atrichum_angus    ??????????????????????????????????????????????????   [1155]
+Notothylas_bre    ??????????????????????????????????????????????????   [1145]
+Phaeoceros_lae    ??????????????????????????????????????????????????   [1154]
+Porella_pi        ??????????????????????????????????????????????????   [1173]
+Conocephal_con    ??????????????????????????????????????????????????   [1154]
+Asterella_tene    ??????????????????????????????????????????????????   [1157]
+Riccia            ??????????????????????????????????????????????????   [1167]
+Klebsormid_fla    ??????????????????????????????????????????????????   [1171]
+Coleochaet_nit    ??????????????????????????????????????????????????   [1157]
+Fissidens_taxi    ??????????????????????????????????????????????????   [1149]
+Plagiomnium_cu    ??????????????????????????????????????????????????   [1142]
+Micromonas_pus    ??????????????????????????????????????????????????   [1162]
+Mantoniel_squa    ??????????????????????????????????????????????????   [1131]
+Nephroselm_pyr    ??????????????????????????????????????????????????   [1155]
+Pedinomonas_mi    ??????????????????????????????????????????????????   [1141]
+Tetraselm_cart    ??????????????????????????????????????????????????   [1157]
+Enteromorpha      ??????????????????????????????????????????????????   [1167]
+Ulva_fasci        ??????????????????????????????????????????????????   [1155]
+Ulothrix_zo       ??????????????????????????????????????????????????   [1120]
+Cympolia_barba    ??????????????????????????????????????????????????   [1177]
+Batophora_oers    ??????????????????????????????????????????????????   [1156]
+Codium_decort     ??????????????????????????????????????????????????   [1164]
+Cladophoro        ??????????????????????????????????????????????????   [1158]
+Blastophysa_rh    ??????????????????????????????????????????????????   [1154]
+Trentepohlia      ??????????????????????????????????????????????????   [1158]
+Cephaleuro_par    ??????????????????????????????????????????????????   [1142]
+Characium_vac     AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA   [1161]
+Dunaliella_par    AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA   [1160]
+Chlamyd_reinha    AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA   [1162]
+Volvox_carteri    AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA   [1162]
+Chlorococc_min    AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA   [1160]
+Draparn_plum      ??????????????????????????????????????????????????   [1154]
+Uronema_belk      ??????????????????????????????????????????????????   [1120]
+Chlamydom_moew    ??????????????????????????????????????????????????   [1157]
+Stephanos_pl      ??????????????????????????????????????????????????   [1164]
+Carteria_rad      ??????????????????????????????????????????????????   [1163]
+Gonium_pecto      ??????????????????????????????????????????????????   [1159]
+Chlorella_kess    AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA   [1166]
+Chlorella_vulg    AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA   [1168]
+Protothec_wic     AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA   [1163]
+Chlorella_prot    AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA   [1169]
+Chlorella_min     AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA   [1166]
+Neochloris_aqu    AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA   [1163]
+Neochloris_vig    AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA   [1159]
+Pediastrum_dup    AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA   [1164]
+Scenedesm_obl     AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA   [1163]
+Characium_hin     AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA   [1161]
+Chlorella_fus     AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA   [1164]
+Ankistrodesmus    AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA   [1162]
+Pseudotreb_gig    ??????????????????????????????????????????????????   [1150]
+Pleurastr_terr    ??????????????????????????????????????????????????   [1152]
+Characium_per     AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA   [1165]
+Parietochl_pse    AATTGACGGAAAGGGCAGCCACCAGGCGTGGAGCCTGCGGCTTAATTTGA   [1167]
+Friedmannia_is    AATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGA   [1166]
+
+[                          1210      1220      1230      1240      1250]
+[                          .         .         .         .         .]
+
+Glycine_max       CTCAACACGGGGAAACTTACCAGGTCCAGACATAGTAAGG-TTGACAGAC   [1215]
+Oryza_sativa      CTCAACACGGGGAAACTTACCAGGTCCAGACATAGCAAGGATTGACAGAC   [1222]
+Zamia_pumila      CTCAACACGGGGAAACTTACCAGGTCCAGACATAGCAAGGATTGACAGAT   [1221]
+Psilotum_n        ??????????????????????????????????????GGATTGACAGAT   [1224]
+Equisetum_ar      ??????????????????????????????????????????TGACAGAT   [1216]
+Atrichum_angus    ??????????????????????????????????????????????????   [1205]
+Notothylas_bre    ??????????????????????????????????????????????????   [1195]
+Phaeoceros_lae    ??????????????????????????????????????????????????   [1204]
+Porella_pi        ??????????????????????????????????????????????????   [1223]
+Conocephal_con    ??????????????????????????????????????????????????   [1204]
+Asterella_tene    ??????????????????????????????????????????????????   [1207]
+Riccia            ????????????????????????????????????????????????AT   [1217]
+Klebsormid_fla    ??????????????????????????????????????????????????   [1221]
+Coleochaet_nit    ??????????????????????????????????????????????????   [1207]
+Fissidens_taxi    ??????????????????????????????????????????????????   [1199]
+Plagiomnium_cu    ??????????????????????????????????????????????????   [1192]
+Micromonas_pus    ??????????????????????????????????????????????????   [1212]
+Mantoniel_squa    ??????????????????????????????????????????????????   [1181]
+Nephroselm_pyr    ??????????????????????????????????????????????????   [1205]
+Pedinomonas_mi    ??????????????????????????????????????????????????   [1191]
+Tetraselm_cart    ??????????????????????????????????????????????????   [1207]
+Enteromorpha      ????????????AAACTTACCAGGTCCAGACATGGA---GATTGACAGAT   [1214]
+Ulva_fasci        ??????????????????????????????????????????????????   [1205]
+Ulothrix_zo       ??????????????????????????????????????????????????   [1170]
+Cympolia_barba    ????????????????????????????????????????????????TT   [1227]
+Batophora_oers    ??????????????????????????????????????????????????   [1206]
+Codium_decort     ??????????????????????????????????????????????????   [1214]
+Cladophoro        ??????????????????????????????????????????????AGAT   [1208]
+Blastophysa_rh    ??????????????????????????????????????????????????   [1204]
+Trentepohlia      ??????????????????????????????????????????????????   [1208]
+Cephaleuro_par    ????????????AAACTTACCAGGTCCAGACATGGT-AG-AT-GACAGAT   [1189]
+Characium_vac     CTCAACACGGGGAAACTTACCAGGTCCAGACACGGGGAGGATTGACAGAT   [1211]
+Dunaliella_par    CTCAACACGGGAAAACTTACCAGGTCCAGACACGGGGAGGATTGACAGAT   [1210]
+Chlamyd_reinha    CTCAACACGGGGAAACTTACCAGGTCCAGACACGGGAAGGATTGACAGAT   [1212]
+Volvox_carteri    CTCAACACGGGGAAACTTACCAGGTCCAGACACGGGAAGGATTGACAGAT   [1212]
+Chlorococc_min    CTCAACACGGGGAAACTTACCAGGTCCAGACACGGGGAGGATTGACAGAT   [1210]
+Draparn_plum      ??????????????????????????????????????????????????   [1204]
+Uronema_belk      ??????????????????????????????????????????????????   [1170]
+Chlamydom_moew    ??????????????????????????????????????????????AGAT   [1207]
+Stephanos_pl      ??????????????????????????????????????????????????   [1214]
+Carteria_rad      ????????????????????????????????????????????ACAGAT   [1213]
+Gonium_pecto      ??????????????????????????????????????????TGACAGAT   [1209]
+Chlorella_kess    CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT   [1216]
+Chlorella_vulg    CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT   [1218]
+Protothec_wic     CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT   [1213]
+Chlorella_prot    CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT   [1219]
+Chlorella_min     CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT   [1216]
+Neochloris_aqu    CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT   [1213]
+Neochloris_vig    CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT   [1209]
+Pediastrum_dup    CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT   [1214]
+Scenedesm_obl     CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT   [1213]
+Characium_hin     CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT   [1211]
+Chlorella_fus     CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT   [1214]
+Ankistrodesmus    CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT   [1212]
+Pseudotreb_gig    ??????????????????????????????????????????????????   [1200]
+Pleurastr_terr    ??????????????????????????????????????????????????   [1202]
+Characium_per     CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT   [1215]
+Parietochl_pse    CTCAACACGGGAAAACTTACCAGGTCCAGACATGTGAAGGATTGACAGAT   [1217]
+Friedmannia_is    CTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGAT   [1216]
+
+[                          1260      1270      1280      1290      1300]
+[                          .         .         .         .         .]
+
+Glycine_max       TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCCTTCTTAGT   [1265]
+Oryza_sativa      TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT   [1272]
+Zamia_pumila      TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT   [1271]
+Psilotum_n        TGAGAGCTCTTTCTTGGTTCTATGGGTGGT---G-ATGGCCGTT---AGT   [1267]
+Equisetum_ar      TGAGAGCTCTTTCTTGATTCTATGGGTGGTAGTGCATGGCCGTTCTTAGT   [1266]
+Atrichum_angus    ??????CTCTTTCTTGATTCTATGGGTGGT-GTGCATGGCCGTT-TT-GT   [1252]
+Notothylas_bre    ??????????????????????????????????CA-GGCCGTT-TTAGT   [1243]
+Phaeoceros_lae    ?????????????????????????????T--TGCATGGCCGTT-TTAGT   [1251]
+Porella_pi        ???????????????????????????????????????CC-----TAGT   [1268]
+Conocephal_con    ??????CTCTTTCTT-ATTCTATGGGT--T--TGCAT---CGTTCTTAGT   [1246]
+Asterella_tene    ??????????????????????????????????????????????????   [1257]
+Riccia            TGAGAGCTCTTTCTTGATTCTATGGGT--T--TGCATGGCCG-TCTTAGT   [1262]
+Klebsormid_fla    ??????????????????????????????????????????????????   [1271]
+Coleochaet_nit    ???????????????????????????????????AT--CCAGTTTTCGT   [1255]
+Fissidens_taxi    ??????CTCTTTCTTGATTCTATGGGTG-T-GTGCATGGCCGTT-TTAGT   [1246]
+Plagiomnium_cu    ??AGAGCTCTTTCTTGGTTCTATGGGTGGT-GTGCATGGCCGTT-TTAGT   [1240]
+Micromonas_pus    ?????????????????????????????T-GTGCATGGCCGTTCTT-GT   [1260]
+Mantoniel_squa    ?????????????????????????????T-G-GCWTGGCCGTT-TT-GT   [1227]
+Nephroselm_pyr    ??????????????????????????????????CATGGCCGTTCTTAGT   [1255]
+Pedinomonas_mi    ?????????????????????????????????GCATGGCCGTTCTTAGT   [1241]
+Tetraselm_cart    ????????????????????TATGGGTG-T-GTGCATGGCCGTTCTTAGT   [1255]
+Enteromorpha      TGAGAGCTCTTTCTTGGTTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT   [1264]
+Ulva_fasci        ???????????????????CTATGGGT-GTGGTGCATG-CCGTTCTTAGT   [1253]
+Ulothrix_zo       ?????????????????????ATGG-TAGTTG---ATGGCCGTTCT--GT   [1214]
+Cympolia_barba    TGAT-GC--TTTCTTGATTCT-TGGGTGGTGGTGCATGGCC-TTTTT-GT   [1271]
+Batophora_oers    ?????????TTTCTTGATT--A-GGGT--------ATGGCCATTCTTAGT   [1245]
+Codium_decort     ??????CTCTTTCTTGATTCC-TGA-TGGTG-TGCATGGCCGATCTCAGC   [1261]
+Cladophoro        TGATAGCTCTTT-AAGATTTTTTGGATGGTG--GCATGGCCGTTCTTAGT   [1255]
+Blastophysa_rh    ??????????????????????????????T-TGCATGGCCGTTCTTAGT   [1253]
+Trentepohlia      ??????????????????????????????TGTGCATGGCCGTTCTT-GT   [1257]
+Cephaleuro_par    TGATAGCTCTTTCTTGGTTCTATGGGTGTGGGGGCATGGCCGTTCTTAGT   [1239]
+Characium_vac     TGAGAGCTCTTTCTTGATTCTGTGGGTGGTGGTGCATGGCCGTTCTTAGT   [1261]
+Dunaliella_par    TGAGAGCTCTTTCTTGATTCTGTGGGTGGTGGTGCATGGC?GTTCTTAGT   [1260]
+Chlamyd_reinha    TGAGAGCTCTTTCTTGATTCTGTGGGTGGTGGTGCATGGCCGTTCTTAGT   [1262]
+Volvox_carteri    TGAGAGCTCTTTCTTGATTCTGTGGGTGGTGGTGCATGGCCGTTCTTAGT   [1262]
+Chlorococc_min    TGAGAGCTCTTTCTTGATTCTGTGGGTGGTGGTGCATGGCCGTTCTTAGT   [1260]
+Draparn_plum      ????????????????????????????????????TGGCCGTTCTTAGT   [1254]
+Uronema_belk      ?????????????????TTCTATGG-TGGTG?TG?ATGGCCGTTCTTAGT   [1219]
+Chlamydom_moew    T?AGAGCTCTTT?TTGATTCT-TGGGTGGTGGTGCATGGCCGTTCTTAGT   [1256]
+Stephanos_pl      ??????CTCTTTCTTGATTCT-TGGGTGGT-GTGC-TGGCCGTTCTTAGT   [1261]
+Carteria_rad      TGAGAGCTCTTTCTTGATTCT-TGGGTGGT--TGCATGGCCGTTCTTAGT   [1260]
+Gonium_pecto      TGAGAGCTCTTTCTTGATTCTGTGGGTG-T--TGCATGGCCGTTCTTAGT   [1256]
+Chlorella_kess    TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT   [1266]
+Chlorella_vulg    TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT   [1268]
+Protothec_wic     TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT   [1263]
+Chlorella_prot    TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT   [1269]
+Chlorella_min     TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT   [1266]
+Neochloris_aqu    TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT   [1263]
+Neochloris_vig    TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT   [1259]
+Pediastrum_dup    TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATAGGCGTTCTTAGT   [1264]
+Scenedesm_obl     TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT   [1263]
+Characium_hin     TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT   [1261]
+Chlorella_fus     TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT   [1264]
+Ankistrodesmus    TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT   [1262]
+Pseudotreb_gig    ??????????????????????????????????????GCCGTTCTTAGT   [1250]
+Pleurastr_terr    ?????????????????????????????TGGTGCATGGCCGTTCTTAGT   [1252]
+Characium_per     TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT   [1265]
+Parietochl_pse    TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT   [1267]
+Friedmannia_is    TGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGT   [1266]
+
+[                          1310      1320      1330      1340      1350]
+[                          .         .         .         .         .]
+
+Glycine_max       TGGTGGAGCGATTTGTCTGGTT-AATTCCGTTAACCAACGAGACCTCAGC   [1314]
+Oryza_sativa      TGGTGGAGCGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC   [1321]
+Zamia_pumila      TGGTGGAGCGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCGGC   [1320]
+Psilotum_n        TGGTGGAG-G-TTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC   [1314]
+Equisetum_ar      TGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC   [1315]
+Atrichum_angus    TGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAAC-AACGAGACCTCAGC   [1300]
+Notothylas_bre    TGGTGGAGTGA-TTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC   [1291]
+Phaeoceros_lae    TGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC   [1300]
+Porella_pi        TGGTGGAG-G--TTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC   [1314]
+Conocephal_con    TGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC   [1295]
+Asterella_tene    TGGTGG-GTGATTTGTCTGGTT-AATTCCGTTAACGAAGGAGACCTCAGC   [1305]
+Riccia            TGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC   [1311]
+Klebsormid_fla    ????????????????????????????????AACGAACGAGACCTCAGC   [1321]
+Coleochaet_nit    TCW-GGAGTGATTTGTCTG-TT-AATTC?G?TAACGAAGGAG?CCTCAGC   [1302]
+Fissidens_taxi    TGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC   [1295]
+Plagiomnium_cu    TGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC   [1289]
+Micromonas_pus    TGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC   [1309]
+Mantoniel_squa    TGGTGGAGTGATT--TCTGGTT-AATTCCGTTAAC-AAC-AGACCTCWGC   [1272]
+Nephroselm_pyr    TGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGC   [1304]
+Pedinomonas_mi    TGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCGAC   [1290]
+Tetraselm_cart    TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1304]
+Enteromorpha      TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAA-GAGACCTCAGC   [1312]
+Ulva_fasci        TGGTGGGTTGCCTTGTCAGGTT-GATTC-GGTAACGAACGAGACCTCAGC   [1301]
+Ulothrix_zo       TGATGGGTCTGGCCTTC---TT-GATTCCGGTAA----CGA-ACY-YA-C   [1253]
+Cympolia_barba    TCGTGGGTTGCCCTGTCTGGTT-GACTCCGTTAACGAACGAGATCTCAAC   [1320]
+Batophora_oers    TC-TGGGTTATCTTGTCTGGTT-GACTCCGTTAACCA---A-ACCTCAGC   [1289]
+Codium_decort     CG-TGGGTTGACCT-TCAGGTT-C-CTCCGGTAAY-Y-C-AGACCTCGAC   [1304]
+Cladophoro        TCGTGGATTGATTTGTCAGGTT-G-TTCCGG--ACGGA-G-GACCC--GC   [1297]
+Blastophysa_rh    TGGTGGGTTGGCTTGTCAGGTT-GATTCCGGT-ACGAACGAGACCTCCGC   [1301]
+Trentepohlia      TGGT-GGTTGGCTTGT---GTT-GATTCCGGTAACGAACGAGACCTCAGC   [1302]
+Cephaleuro_par    TGGTGGGTTGGCTTGTCGGGTT-GATTCCGGGAACGAACGAGACCTCAGC   [1288]
+Characium_vac     TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1310]
+Dunaliella_par    TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1309]
+Chlamyd_reinha    TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1311]
+Volvox_carteri    TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1311]
+Chlorococc_min    TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1309]
+Draparn_plum      TGGTGGGTTGCCTTGTCAGGTT-GATTC-GG-AACGAACG-GACCTCAGC   [1300]
+Uronema_belk      TGGTGGGTTGCCTTGTCAGGTT-GATTC?GGTAACGAACGAGACC-CAGC   [1267]
+Chlamydom_moew    TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1305]
+Stephanos_pl      TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1310]
+Carteria_rad      TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1309]
+Gonium_pecto      TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1305]
+Chlorella_kess    TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1315]
+Chlorella_vulg    TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1317]
+Protothec_wic     TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1312]
+Chlorella_prot    TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1318]
+Chlorella_min     TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1315]
+Neochloris_aqu    TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1312]
+Neochloris_vig    TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1308]
+Pediastrum_dup    TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1313]
+Scenedesm_obl     TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1312]
+Characium_hin     TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1310]
+Chlorella_fus     TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1313]
+Ankistrodesmus    TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1311]
+Pseudotreb_gig    TGGTGGG-TGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1298]
+Pleurastr_terr    TGGT?GGTTGCCTTGTCAGGTT-GATTCCGGTAACGAAGGAGACCTCAGC   [1301]
+Characium_per     TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1314]
+Parietochl_pse    TGGTGGGTTGCCTTGTCAGGTTCGATTCCGGTAACGAACGAGACCTCAGC   [1317]
+Friedmannia_is    TGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGC   [1315]
+
+[                          1360      1370      1380      1390      1400]
+[                          .         .         .         .         .]
+
+Glycine_max       CTGCTAAATAGCTAT--------------------------AGCTTCTTA   [1338]
+Oryza_sativa      CTGCTAACTAGCTATGCGGAGCCATCCCTCCGCAGCT----AGCTTCTTA   [1367]
+Zamia_pumila      CTGCTAACTAGCTACGCGGAGGGTTTCTTTCGTGGCC----AGCTTCTTA   [1366]
+Psilotum_n        CTGCTAACTAGTTACGCGAAGGATCCTCTTCGTGGCC----AACTT-TTA   [1359]
+Equisetum_ar      CTGCTAACTAGTTACGCGAAGACTTGTCTTCGTGGCC----AACTTCTTA   [1361]
+Atrichum_angus    CTGCTAACTAGTTACACGAAGAATC-TCTTTGTGGCC----AACTT-TTA   [1344]
+Notothylas_bre    CTGCTAACTAGTTACAC-AAGAACCTTCTTCGTGGCC----AACTTCTTA   [1336]
+Phaeoceros_lae    CTGCTAACTAGTTACACGAAGAACCTTCTTCGTGGCC----AACTTCTTA   [1346]
+Porella_pi        CTGCTAACTAGTTACACGAAGAATCTTCTTTGTGGCC----AACTT-TTA   [1359]
+Conocephal_con    CTGCTAACTA-CTACGCGAGTCCATTTTTTGTCCTGCGC--AGCTT-TTA   [1341]
+Asterella_tene    CTGCTAACTA-CTACGCGGGGGTWCTCCCCTGCGGCC----AGCTT-TTA   [1349]
+Riccia            CTGCTAACTAGCTACGCGGGGGTTCTCCCTGCGGCC-----AGCTT---A   [1353]
+Klebsormid_fla    CTGCTAACTAGTTACACGGAGATTCTTCTCCGTGGCC----AACTTCTTA   [1367]
+Coleochaet_nit    CTGCTAACTAGGCTAACGTTTTGTTGGGAC------------ACTTGTTA   [1340]
+Fissidens_taxi    CTGCTAACTAGTTACGCGAAGGATTTCTCTCCTTGGCGGCCAACTTCTTA   [1345]
+Plagiomnium_cu    CTGCTAACTAGTTACGCGAAGGATTTCCTCCTTTGCGGCC-AACTTC--A   [1336]
+Micromonas_pus    CTGCTAAATAGTCATACGCTACTCT-TAGCGCAGT------GACTTCTTA   [1352]
+Mantoniel_squa    CTGCTAAATAGTCATACGCTACTCT-TAGCGCAGT------GACTTCTTA   [1315]
+Nephroselm_pyr    CTGCTAAATAGTCACGCGATGCTCCTGCATGGCGGCG----GACTT-TTA   [1349]
+Pedinomonas_mi    CTGCTAAATAGGTTCAGTATCGATGCGTCGATGCTTG----GAGCTTTTA   [1336]
+Tetraselm_cart    CTGCTAAATAGTTACTCCTACTTTGGTAGGAGGTG------AACTT-TTA   [1347]
+Enteromorpha      CTGCTAAATAGTGACGATTGCTCGGCAGTCGCG--------CGCTT-TTA   [1353]
+Ulva_fasci        CTGCTAAATAGTGACGTCTGCTTCGGCAGTCGCG-------CGCTTGTTA   [1344]
+Ulothrix_zo       C-GCTAAA-AGTTCCYTYGGCAGTTGGCA------------CACTT-TTA   [1288]
+Cympolia_barba    CTACTAAATAGTATTACATCATTGTAGAAATATAT------ACCTTCTTA   [1364]
+Batophora_oers    CT-CTAAA-A-CGGCCTCTCCTTAGGAGTGC----------CCCYTCYTA   [1326]
+Codium_decort     CTGCCAAATAGCACCGGCCCTTCCGATGGC-----------ACCTTCTTG   [1343]
+Cladophoro        CTACTAACTAGCTCTACCTGAACTTCAGGTAGCC-------AGCTT-TTA   [1339]
+Blastophysa_rh    CTGCTAAATAGCCACTCCGGGGGCCC---------------GGCTTCTTA   [1336]
+Trentepohlia      CTGCTAAATAGTA-CTTTCGGTT---CCCA-GC--------AACTTCTTA   [1339]
+Cephaleuro_par    CTGCTAAATAGTTGCCCCCGCCTCGGTGGGGGTCGA-----GACTTGTTA   [1333]
+Characium_vac     CTGCTAAATAGTAAC--------------------------TACTTCTTA   [1334]
+Dunaliella_par    CTACTAAATAGTCAC--------------------------GACTTCTTA   [1333]
+Chlamyd_reinha    CTGCTAAATAGTCAG--------------------------GACTTCTTA   [1335]
+Volvox_carteri    CTGCTAAATAGTCAGCATGACTGCGGTGCGCA---------GACTTCTTA   [1352]
+Chlorococc_min    CTGCTAAATAGTCAC--------------------------GACTTCTTA   [1333]
+Draparn_plum      CTGCTAAATAGTCACCTTCTCGCGGCAGGC-----------CACTTC--A   [1337]
+Uronema_belk      CTGCTAAATAGTCACC-----GCGGCAGGA-----------GACTT-TTA   [1300]
+Chlamydom_moew    CTGCTAAATAGTCGGCGGTCCTTTCTGGATCGCCTC-----GACTTCTTA   [1350]
+Stephanos_pl      CTGCTAAATAGTCACGGGACCTTGGTACACGCTT-------GACTT-TTA   [1352]
+Carteria_rad      CTGCTAAATAGTCACGATTGCTTTTTGGCAGTCGGCA----GACTTCTTA   [1355]
+Gonium_pecto      CTGCTAAATAGTCAGCATCCTGCGGTGCGCA----------GACTT-TTA   [1344]
+Chlorella_kess    CTGCTAAATAGTCAC--------------------------GACTTCTTA   [1339]
+Chlorella_vulg    CTGCTAAATAGTCAC--------------------------GACTTCTTA   [1341]
+Protothec_wic     CTGCTAAATAGTGCT--------------------------TACTTCTTA   [1336]
+Chlorella_prot    CTGCTAAATAGTTTT--------------------------AACTTCTTA   [1342]
+Chlorella_min     CTGCTAAATAGTCAC--------------------------GACTTCTTA   [1339]
+Neochloris_aqu    CTGCTAAATAGTCAC--------------------------GACTTCTTA   [1336]
+Neochloris_vig    CTGCTAAATAGT???--------------------------GACTTCTTA   [1332]
+Pediastrum_dup    CTGCTAAATAGTCAC--------------------------GACTTCTTA   [1337]
+Scenedesm_obl     CTGCTAAATAGTCTC--------------------------GACTTCTTA   [1336]
+Characium_hin     CTGCTAAATAGTCCG--------------------------GACTTCTTA   [1334]
+Chlorella_fus     CTGCTAAATAGTCCT--------------------------GACTTCTTA   [1337]
+Ankistrodesmus    CTGCTAAATAGTCAC--------------------------GACTTCTTA   [1335]
+Pseudotreb_gig    CTGCTAAATAGTCACGGCTGCTTTYCAGTCGGCA-------GACTT-TTA   [1340]
+Pleurastr_terr    CTGCTAAATAGTC-CTAATCTTCTCGCGGTTAGCT------GACTT?TTA   [1344]
+Characium_per     CTGCTAAATAGTC-C--------------------------GACTTCTTA   [1337]
+Parietochl_pse    CTGCTAAATAGTCAC--------------------------GACTTCTTA   [1341]
+Friedmannia_is    CTGCTAAATAGTCAC--------------------------GACTTCTTA   [1339]
+
+[                          1410      1420      1430      1440      1450]
+[                          .         .         .         .         .]
+
+Glycine_max       GAGGGACTATGGCCGCTTAGGCCAC----GGAAGTTTGAGGCAATAACAG   [1384]
+Oryza_sativa      GAGGGACTATGGCCGTTTAGGCCAC----GGAAGTTTGAGGCAATAACAG   [1413]
+Zamia_pumila      GAGGGACTATGGCCGTTTAGGCCAT----GGAAGTTTGAGGCAATAACAG   [1412]
+Psilotum_n        GAGGGACTATGGCCGCCTAGGCCAT----GGA??????????????????   [1405]
+Equisetum_ar      GAGGGACTATGGCCGTCTAGGCCAT----GGA??????????????????   [1407]
+Atrichum_angus    GAGGGACTATTGGCGTCT-GCCAAT----GGAA?????????????????   [1389]
+Notothylas_bre    GAGGGACTATTTGCGTCTA-CGAAT----GGAA?????????????????   [1381]
+Phaeoceros_lae    GAGGGACTATTTGCGTCTAGCGAAT----GGAA?????????????????   [1392]
+Porella_pi        GAGGGACTATT--CGTCTAGCCAAT----GGA??????????????????   [1403]
+Conocephal_con    GAGGGACT---GG--TC--GCC-AC----GGAA?????????????????   [1379]
+Asterella_tene    GAGGGACTGTCGGCGTCTAGCCGA-----GGA??????????????????   [1394]
+Riccia            GAGGGACT--CGG--TCTAGCCGAC----GGAA?????????????????   [1395]
+Klebsormid_fla    GAGGGACTATTTGGCGTCTACAGCCAAT-GGAA?TTTGA???????????   [1416]
+Coleochaet_nit    GAGGGACTGTGAGGCGCTTAGCTCAT---GGA??????????????????   [1387]
+Fissidens_taxi    GAGGGACTATCGGCGTCT-AGCCGAT---GGAA?TTT?A???????????   [1391]
+Plagiomnium_cu    GAGGGACTATCGGCGTC---GCCGAT---GGAAG?TTGA???????????   [1380]
+Micromonas_pus    GAGGGACTATGTGCGTTT-GCACAT----GGAA-TT??????????????   [1396]
+Mantoniel_squa    GAGGGACTATGTGCGTTTWGCACAT----GGAA-TTTGA???????????   [1360]
+Nephroselm_pyr    GAGGGACTATCGGTATT-A-CCGAT----GGA??????????????????   [1393]
+Pedinomonas_mi    GAGGGACT-TCGGATCC-A-CCGGT----GGAAGT???????????????   [1379]
+Tetraselm_cart    GAGGGACTATTGGCGTTT-GCCAAT----GGAAGTTA?????????????   [1392]
+Enteromorpha      GAGGGACTGTTGGCG-TCTAGCCAAT---GGAAGTAT?????????????   [1399]
+Ulva_fasci        GAGGGACTGTTGGCG-TCTAGCCAATT--GGAAGTATGA???????????   [1391]
+Ulothrix_zo       GAGGGACT-TTGGCG-TCT-GCCAAT---GGAAGTAT-A???????????   [1331]
+Cympolia_barba    GGGGAACTATC-AGTT-CAAACCGAT---GGAAG????????????????   [1409]
+Batophora_oers    -A-GGAC--TCGGCG--CAA??????????????????????????????   [1370]
+Codium_decort     GAGGGACTGGCGCGAGAGCCGGACGCG???????????????????????   [1393]
+Cladophoro        GAGGGACTCTCGGAA-TGAAACCAA----GGAA?????????????????   [1384]
+Blastophysa_rh    GAGGGACTATGGCTCGAATAGGCCAT---GGAA?????????????????   [1383]
+Trentepohlia      -A---ACTATTACATCA?????????????????????????????????   [1385]
+Cephaleuro_par    GAGGGACTATTAGCG-ATTTTCA--CTAATT--AA-T?????????????   [1377]
+Characium_vac     GAGGGACTATTGGCG-TTTAGTCAAT---GGAAGTGTGAGGCAATAACAG   [1380]
+Dunaliella_par    GAGGGACTATTGGCG-TTTAGCCAAT---GGAAGTGTGAGGCAATAACAG   [1379]
+Chlamyd_reinha    GAGGGACTATTGGCG-TTTAGCCAAT---GGAAGTATGAGGCGATAACAG   [1381]
+Volvox_carteri    GAGGGACTATTGGCG-TTCAGCCAAT---GGAAGTATGAGGCGATAACAG   [1398]
+Chlorococc_min    GAGGGACTATTGGCG-TTTAGCCAGT---GGAAGTGTGAGGCAATAACAG   [1379]
+Draparn_plum      GAGGGACTATTGCCG-TTTAGGC???????????????????????????   [1386]
+Uronema_belk      GAGGGACTATTGTC---TTAGGCAAT---GAAGTA???????????????   [1344]
+Chlamydom_moew    GAGGGACTATTGACGTT-TAGTCAAT---GGAAG????????????????   [1396]
+Stephanos_pl      GAGGGACTATTGGCGTTACAGTCAAT---GGA??????????????????   [1399]
+Carteria_rad      GAGGGACTATTGTCG-TTTAGGCAG?????????????????????????   [1404]
+Gonium_pecto      GAGGGACTATTGGCG-TTCAGCCAAT---GGA??????????????????   [1390]
+Chlorella_kess    GAGGGACTATTGGCG-A-TAGCCAAT---GGAAGCATGAGGCAATAACAG   [1384]
+Chlorella_vulg    GAGGGACTATTGGCG-A-TAGCCAAT---GGAAGCATGAGGCAATAACAG   [1386]
+Protothec_wic     GAGGGACTATTGGCG-A-TAGCCAAT---GGAAGCTTGAGGCAATAACAG   [1381]
+Chlorella_prot    GAGGGACTCTCGGCG-A-TAGCCGAG---GGAAGCTTGAGGCAATAACAG   [1387]
+Chlorella_min     GAGGGACTATTGGCG-A-TAGCCAGT---GGAAGCATGAGGCAATAACAG   [1384]
+Neochloris_aqu    GAGGGACTATTGGCG-TTTAGTCAAT---GGAAGTATGAGGCAATAACAG   [1382]
+Neochloris_vig    GAGGGACTATTGGCG--TTAGTCAATT--GGAAGTATGAGGCAATAACAG   [1378]
+Pediastrum_dup    GAGGGACTATTGGCG-TTTAGTCAAT---GGAAGTATGAGGCAATAACAG   [1383]
+Scenedesm_obl     GAGGGACTATTGGCG--TTAGTCAAT---GGAAGTATGAGGCAATAACAG   [1381]
+Characium_hin     GAGGGACTATTGACG-TTTAGTCAAT---GGAAGTATGAGGCAATAACAG   [1380]
+Chlorella_fus     GAGGGACTATTGGCG--TTAGTCAAT---GGAAGTATGAGGCAATAACAG   [1382]
+Ankistrodesmus    GAGGGACTGTTGGCG--TTAGCCAAC---GGAAGTATGAGGCAATAACAG   [1380]
+Pseudotreb_gig    GAGGGACTTTTGGCG-ACTAGCCAAA---GGAAGTGTG????????????   [1386]
+Pleurastr_terr    GAGGGACTATTGGCG-TTT-GTCAAT---GGAA-TAT?????????????   [1388]
+Characium_per     GAGGGACTTTCGGCG-TTTAGCCGAA---GGAAGTGTGAGGCGATAACAG   [1383]
+Parietochl_pse    GAGGGACTCTCGGCG-ACTAGCCGAT---GGAAGTGTGAGGCGATAACAG   [1387]
+Friedmannia_is    GAGGGACTTTTGGCGCCTTAGCCAAA---GGAAGTGTGAGGCGATAACAG   [1386]
+
+[                          1460      1470      1480      1490      1500]
+[                          .         .         .         .         .]
+
+Glycine_max       GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG   [1433]
+Oryza_sativa      GTCTGTGATGCCCTTAGATGTTCTGGG--CGCACGCGCGCTACACTGATG   [1461]
+Zamia_pumila      GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG   [1461]
+Psilotum_n        ??????????????????????????????????????????????????   [1455]
+Equisetum_ar      ??????????????????????????????????????????????????   [1457]
+Atrichum_angus    ??????????????????????????????????????????????????   [1439]
+Notothylas_bre    ??????????????????????????????????????????????????   [1431]
+Phaeoceros_lae    ??????????????????????????????????????????????????   [1442]
+Porella_pi        ??????????????????????????????????????????????????   [1453]
+Conocephal_con    ??????????????????????????????????????????????????   [1429]
+Asterella_tene    ??????????????????????????????????????????????????   [1444]
+Riccia            ??????????????????????????????????????????????????   [1445]
+Klebsormid_fla    ??????????????????????????????????????????????????   [1466]
+Coleochaet_nit    ??????????????????????????????????????????????????   [1437]
+Fissidens_taxi    ??????????????????????????????????????????????????   [1441]
+Plagiomnium_cu    ??????????????????????????????????????????????????   [1430]
+Micromonas_pus    ??????????????????????????????????????????????????   [1446]
+Mantoniel_squa    ??????????????????????????????????????????????????   [1410]
+Nephroselm_pyr    ??????????????????????????????????????????????????   [1443]
+Pedinomonas_mi    ??????????????????????????????????????????????????   [1429]
+Tetraselm_cart    ??????????????????????????????????????????????????   [1442]
+Enteromorpha      ??????????????????????????????????????????????????   [1449]
+Ulva_fasci        ??????????????????????????????????????????????????   [1441]
+Ulothrix_zo       ??????????????????????????????????????????????????   [1381]
+Cympolia_barba    ??????????????????????????????????????????????????   [1459]
+Batophora_oers    ??????????????????????????????????????????????????   [1420]
+Codium_decort     ??????????????????????????????????????????????????   [1443]
+Cladophoro        ??????????????????????????????????????????????????   [1434]
+Blastophysa_rh    ??????????????????????????????????????????????????   [1433]
+Trentepohlia      ??????????????????????????????????????????????????   [1435]
+Cephaleuro_par    ?????????????????????????????CGCACGCGCGCTACACTGATG   [1427]
+Characium_vac     GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG   [1429]
+Dunaliella_par    GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG   [1428]
+Chlamyd_reinha    GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGACG   [1430]
+Volvox_carteri    GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGACG   [1447]
+Chlorococc_min    GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG   [1428]
+Draparn_plum      ??????????????????????????????????????????????????   [1436]
+Uronema_belk      ??????????????????????????????????????????????????   [1394]
+Chlamydom_moew    ??????????????????????????????????????????????????   [1446]
+Stephanos_pl      ??????????????????????????????????????????????????   [1449]
+Carteria_rad      ??????????????????????????????????????????????????   [1454]
+Gonium_pecto      ??????????????????????????????????????????????????   [1440]
+Chlorella_kess    GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG   [1433]
+Chlorella_vulg    GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG   [1435]
+Protothec_wic     GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG   [1430]
+Chlorella_prot    GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACAATGATG   [1436]
+Chlorella_min     GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG   [1433]
+Neochloris_aqu    GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG   [1431]
+Neochloris_vig    GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG   [1427]
+Pediastrum_dup    GTCTGTGATGCCCTTAGATGTTCTGGGGCCGCACGTGCGCTACACTGATG   [1433]
+Scenedesm_obl     GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG   [1430]
+Characium_hin     GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG   [1429]
+Chlorella_fus     GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG   [1431]
+Ankistrodesmus    GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCAC-CGCGCTACACTGACG   [1428]
+Pseudotreb_gig    ??????????????????????????????????????????????????   [1436]
+Pleurastr_terr    ??????????????????????????????????????????????????   [1438]
+Characium_per     GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGACG   [1432]
+Parietochl_pse    GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG   [1436]
+Friedmannia_is    GTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATG   [1435]
+
+[                          1510      1520      1530      1540      1550]
+[                          .         .         .         .         .]
+
+Glycine_max       TATTCAACGAGTCTATAGCCTTGGCCGACAGGTCCGGGTAATCTTTG-AA   [1482]
+Oryza_sativa      TATCCAACGAGTATATAGCCTGGTCCGACAGGCCCGGGTAATCTTGGGAA   [1511]
+Zamia_pumila      TATTCAACGAGTCTATAACCTGGGCCGGGAGGTCCGGGAAATCTGGCGAA   [1511]
+Psilotum_n        ??????????????????????????????????????????????????   [1505]
+Equisetum_ar      ??????????????????????????????????????????????????   [1507]
+Atrichum_angus    ??????????????????????????????????????????????????   [1489]
+Notothylas_bre    ??????????????????????????????????????????????????   [1481]
+Phaeoceros_lae    ????????????????????????????????????????ATCTTTG-AA   [1491]
+Porella_pi        ??????????????????????????????????????????????????   [1503]
+Conocephal_con    ??????????????????????????????????????????????????   [1479]
+Asterella_tene    ??????????????????????????????????????????????????   [1494]
+Riccia            ??????????????????????????????????????????????????   [1495]
+Klebsormid_fla    ??????????????????????????????????????????????????   [1516]
+Coleochaet_nit    ??????????????????????????????????????????????????   [1487]
+Fissidens_taxi    ???????????????????????????????????????AATCTTCTGAA   [1491]
+Plagiomnium_cu    ??????????????????????????????????????????????????   [1480]
+Micromonas_pus    ??????????????????????????????????????????????????   [1496]
+Mantoniel_squa    ??????????????????????????????????????????????????   [1460]
+Nephroselm_pyr    ??????????????????????????????????????????????????   [1493]
+Pedinomonas_mi    ??????????????????????????????????????????????????   [1479]
+Tetraselm_cart    ??????????????????????????????????????????????????   [1492]
+Enteromorpha      ??????????????????????????????????????????????????   [1499]
+Ulva_fasci        ????????????????????????????ACAGAGTCGGGTAATCTT-G-A   [1489]
+Ulothrix_zo       ??????????????????????????????????????????????????   [1431]
+Cympolia_barba    ????????????????????????????????????GG?AATCTATG-CA   [1508]
+Batophora_oers    ??????????????????????????????????????????????????   [1470]
+Codium_decort     ??????????????????????????????????????????????????   [1493]
+Cladophoro        ??????????????????????????????????????????????????   [1484]
+Blastophysa_rh    ??????????????????????????????????????????????????   [1483]
+Trentepohlia      ??????????????????????????????????????????????????   [1485]
+Cephaleuro_par    TATTCAACGAGTCTATAGCCTTGGCCGACAGGTCCGGGTAATCTTTG-AA   [1476]
+Characium_vac     CATTCAACGAGCCTAT--CCTTGGCCGAGAGGTCCGGGTAATCTTTG-AA   [1476]
+Dunaliella_par    CATTCAACGAGCCTAT--CCTTGGCCGAGAGGTCCGGGTAATCTTTG-AA   [1475]
+Chlamyd_reinha    CGACCAACGAGCCTAT--CCTTGGCCGAGAGGCCCGGGTAATCTT-GTAA   [1477]
+Volvox_carteri    CGACCAACGAGCCTAT--CCTTGGCCGAGAGGCCCGGGTAATCTT-GTAA   [1494]
+Chlorococc_min    CATTCAACGAGCCTAT--CCTTGGCCGAGAGGCCCGGGTAATCTTTG-AA   [1475]
+Draparn_plum      ??????????????????????????????????????????????????   [1486]
+Uronema_belk      ??????????????????????????????????????????????????   [1444]
+Chlamydom_moew    ????????????????????????-?????????????????????????   [1495]
+Stephanos_pl      ??????????????????????????????????????????????????   [1499]
+Carteria_rad      ??????????????????????????????????????????????????   [1504]
+Gonium_pecto      ??????????????????????????????????????????????????   [1490]
+Chlorella_kess    CAATCAACGAGCCTAG--CCTTGGCCGAGAGGCCCGGGTAATCTTTG-AA   [1480]
+Chlorella_vulg    CATTCAACGAGCCTAG--CCTTGGCCGAGAGGCCCGGGTAATCTTCG-AA   [1482]
+Protothec_wic     CATGCAACGAGCCTAG--CCTTGGCCGAGAGGCCCGGGTAATCTCAT-AA   [1477]
+Chlorella_prot    CGGTCAACGAGCCCAG--CCTTGGCCGACAGGCCCGGGTAATCTCGC-AA   [1483]
+Chlorella_min     CATTCAGCGAGCCTAG--CCTTGACCGAGAGGTCCGGGTAATCTTTG-AA   [1480]
+Neochloris_aqu    CGTTCAACAAGCCTAT--CCTTGACCGAGAGGTCCGGGTAATCTTTG-AA   [1478]
+Neochloris_vig    CGTTCAACAAGCCTAT--CCTTGACCGAGAG---CGGGTAATCTTTG-AA   [1471]
+Pediastrum_dup    CATTCAACGAGCCTAT--CCTTGACCGAGAGGTCCGGGTAATCTTTG-AA   [1480]
+Scenedesm_obl     CATTCAACAAGCCTAT--CCTTGACCGAAGGGTCTGGGTAATCTTTG-AA   [1477]
+Characium_hin     CATTCAACGAGCCTAT--CCTTGGCCGAGAGGTCCGGGTAATCTTTG-AA   [1476]
+Chlorella_fus     CATTCAACAAGCCTAT--CCTTGACCGAAAGGTCCGGGTAATCTTTG-AA   [1478]
+Ankistrodesmus    CATTCAACGAGCCTAT--CCTTGACCGAGAGGTCTGGGTAATCTGTG-AA   [1475]
+Pseudotreb_gig    ??????????????????????????????????????????????????   [1486]
+Pleurastr_terr    ??????????????????????????????????????????????????   [1488]
+Characium_per     CATTCAACGAGTCTAT--CCTTGGCCGAGAGGTCCGGGTAATCTGAG-AA   [1479]
+Parietochl_pse    CATTCAACGAGCCTAG--CCTTGGCCGACAGGCCCGGGTAATCTTGC-AA   [1483]
+Friedmannia_is    CAATCAACGAGCCTAT--CCTTGACCGACAGGTCCGGGTAATCTTTG-AA   [1482]
+
+[                          1560      1570      1580      1590      1600]
+[                          .         .         .         .         .]
+
+Glycine_max       ATTTCATCGTGATGGGGATAGATCATTGCAATTGTTGGTCTTCAACGAGG   [1532]
+Oryza_sativa      ATTTCATCGTGATGGGGATAGATCATTGCAATTGTTGGTCTTCAACGAGG   [1561]
+Zamia_pumila      ATTTCATCGTGATGGGGATAGATCATTGCAATTATTGATCTTCAACGAGG   [1561]
+Psilotum_n        ?????????????????????????????????????GTCTTCAAC-A-G   [1553]
+Equisetum_ar      ??????????????????????????????????????TCTTCAACTAGG   [1557]
+Atrichum_angus    ?????????????????ATAGATCATTGC-ATTATTGATCTTCAA--A-G   [1535]
+Notothylas_bre    ???????????????GGA-AGATCATTGC-ATTATTGATCTTCAAC-AGG   [1528]
+Phaeoceros_lae    ATTTCATCGTGAT--GGATAGATCATTGCAATTATTGATCTT-AA----G   [1534]
+Porella_pi        ??????????????????????????????????????TCTTCAAC-AGG   [1552]
+Conocephal_con    ??????????????????TAGATCATT?C?ATT?TTGATCTTGAA-----   [1524]
+Asterella_tene    ??????????????????????????????????????????????????   [1544]
+Riccia            ?????????????????????????TTGC?ATTATTGATCTTCAAC-A-G   [1543]
+Klebsormid_fla    ??????????????????????????????????????????????????   [1566]
+Coleochaet_nit    ????????????????????????????????????G-TCTCGAACGA-G   [1535]
+Fissidens_taxi    ATTTCATCGTGAT--GGATAGATCATTGCAATTATTGATCTTCAAC-A-G   [1537]
+Plagiomnium_cu    ?????????????????????ATCATTGC-ATTATTGATCTTCAAC---G   [1526]
+Micromonas_pus    ???????????????????????????????????????????????AG-   [1545]
+Mantoniel_squa    ??????????????????????????????????????????????????   [1510]
+Nephroselm_pyr    ???????????????????????????????????????????????AGG   [1543]
+Pedinomonas_mi    ??????????????????????????????????????????????????   [1529]
+Tetraselm_cart    ??????????????????????????????????????????????????   [1542]
+Enteromorpha      ??????????????????????????????????????????????????   [1549]
+Ulva_fasci        AACT--ATCGT--TGGGA---AACATTGCAATTATTGTTCTTCAAC-AGG   [1531]
+Ulothrix_zo       ??????????????????????????????????????????????????   [1481]
+Cympolia_barba    CATGCTTCGTGAT?AGGACGAATATTGGAATTGTT-ATTCTTTAACG--G   [1555]
+Batophora_oers    ??????????????????????????????????????????-???????   [1519]
+Codium_decort     ?????????????????????????????????????????????????G   [1543]
+Cladophoro        ??????????????????????????????????????????C-ACGAGG   [1533]
+Blastophysa_rh    ??????????????????????AC-TGCAATT-T--GGTCT-CAACG--G   [1526]
+Trentepohlia      ??????????????????????????????????????????-???????   [1534]
+Cephaleuro_par    ATTTCATCGTGATGGGGATAGATCATTGCAATTGTTGGTCTTCAACGAGG   [1526]
+Characium_vac     ACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG   [1526]
+Dunaliella_par    ACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG   [1525]
+Chlamyd_reinha    ACCGCGTCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG   [1527]
+Volvox_carteri    ACCGCGTCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG   [1544]
+Chlorococc_min    ACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG   [1525]
+Draparn_plum      ????????????????????????????????????????????????GG   [1536]
+Uronema_belk      ????????????????????????????????????AGTCTTCAAC-A-G   [1492]
+Chlamydom_moew    ????????????????????????????????????????????????GG   [1545]
+Stephanos_pl      ?????????????????????????????????????????????????G   [1549]
+Carteria_rad      ??????????????????????????????????????TCTT-AACGAGG   [1553]
+Gonium_pecto      ??????????????????????????????????????????????ACGG   [1540]
+Chlorella_kess    ACTGCATCGTGATGGGGATAGATTATTGCAATTATTAATCTTCAACGAGG   [1530]
+Chlorella_vulg    ACTGCATCGTGATGGGGATAGATTATTGCAATTATTAATCTTCAACGAGG   [1532]
+Protothec_wic     CCTGCATCGTGATGGGGATAGATTATTGCAATTATTAATCTTCAACGAGG   [1527]
+Chlorella_prot    CCCGCATCGTGATGGGGATAGATCATTGCAATTATTGATCTTCAACGAGG   [1533]
+Chlorella_min     TCTGCATCGTGATGGGGATAGATTATTGCAATTATTAATCTTCAACGAGG   [1530]
+Neochloris_aqu    ACCGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG   [1528]
+Neochloris_vig    ACCGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG   [1521]
+Pediastrum_dup    ACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG   [1530]
+Scenedesm_obl     ACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG   [1527]
+Characium_hin     ACTGCATCGTGATGGGGCTAGACTTTTGCAATTATTAGTCTTCAACGAGG   [1526]
+Chlorella_fus     ACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG   [1528]
+Ankistrodesmus    ACTGCGTCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGG   [1525]
+Pseudotreb_gig    ??????????????????????????????????????????????????   [1536]
+Pleurastr_terr    ?????????????????????????????????????GTCTTCAACGAGG   [1538]
+Characium_per     ACTGCGTCGTGACGGGGCTAGATTATTGCAATTATTAATCTTCAACGAGG   [1529]
+Parietochl_pse    ACTGCATCGTGATGGGGCTAGATTATTGCAATTATTAATCTTCAACGAGG   [1533]
+Friedmannia_is    ACTGCATCGTGATGGGGATAGATTATTGCAATTATTAATCTTCAACGAGG   [1532]
+
+[                          1610      1620      1630      1640      1650]
+[                          .         .         .         .         .]
+
+Glycine_max       AATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCC   [1581]
+Oryza_sativa      AATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCC   [1610]
+Zamia_pumila      AATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCC   [1610]
+Psilotum_n        AATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCC   [1602]
+Equisetum_ar      AATTCCTAGTAAGC-CGAGTCATCAGCTCGCGTTGACTA--GTCCCTGCC   [1604]
+Atrichum_angus    AATTCC-AGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC   [1583]
+Notothylas_bre    AAT-CCT-GTAAGCGCGAGTCATCAGCTCGCGTT-ACTAC-GTCCCTGCC   [1574]
+Phaeoceros_lae    AATT--TAGTAAGCGCGAGTCATCAGCTCG-GTTGACTA--GTCCCTGCC   [1579]
+Porella_pi        AAT-CCTAGTAAGC-CGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCC   [1599]
+Conocephal_con    AATTCC--GTA--CGCGAGTC-T----TCGCGCTGATT-C-GTCCCTGCC   [1563]
+Asterella_tene    ?????????????????AGTCATCAGCTCGCGTTGACTAC-GTCCCTGCC   [1593]
+Riccia            AATTCC-AGTAA---CGAGTCGAACAGTCGCGCTGACTAC-GTCCCTGCC   [1588]
+Klebsormid_fla    ???????????????????????????TCGCGTTGATTTA-GTCCCTGCC   [1615]
+Coleochaet_nit    AATACCTAGTAAGCGCTCGTCATCAGCGTGCGCT-ACTAC-GTCCCTGCC   [1583]
+Fissidens_taxi    AATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCC   [1586]
+Plagiomnium_cu    AATTCC-AGTAAGCGCGAGTCATCAGCTCG-GTTGACTAC--TCCCTGCC   [1572]
+Micromonas_pus    AATGCCT-GTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC   [1593]
+Mantoniel_squa    ??????????????????????????????????????????????????   [1560]
+Nephroselm_pyr    AATGCCT-GTAA--GCGAGTCATCAGCTCGCGTTGATTA--GTCCCTGCC   [1588]
+Pedinomonas_mi    ?????????????????????????????????????????GTCCCTGTC   [1579]
+Tetraselm_cart    ???????????????????TCATCAGATCGCGTTGATTA--GTCCCTGCC   [1590]
+Enteromorpha      ????CCTAGTAAGCGCGAGTCATCATCTCGCGTTGATTAC-GTCCCTGCC   [1598]
+Ulva_fasci        AATGCCTAGTAAG--CGAGTCATCATCTCGCGTTGATTAC-GTCCCTGCC   [1578]
+Ulothrix_zo       ?????????????????????????????G-GTT-ATTA---TCCCT-CC   [1525]
+Cympolia_barba    AATGCCTAGTAAGTACCAGTCATCAACCGGTGTTGATTAT-GTCCCTGCT   [1604]
+Batophora_oers    ????????????????????????AGCTTGCGTTGATTA----CCCTGCC   [1565]
+Codium_decort     AATGCCTAGTA---CCGGGT--GGATCCCGCGACGATTGC-GTCCCTGCC   [1587]
+Cladophoro        AATGC-T-GT-AGCGCGAGTCATCAACTCGCGTTGATTAC-GTCCCTGCC   [1579]
+Blastophysa_rh    AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC   [1575]
+Trentepohlia      ??????????????????????????????CGTTGATTAT---CCCTGCC   [1581]
+Cephaleuro_par    AATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCC   [1575]
+Characium_vac     AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC   [1575]
+Dunaliella_par    AATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC   [1574]
+Chlamyd_reinha    AATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC   [1576]
+Volvox_carteri    AATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC   [1593]
+Chlorococc_min    AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC   [1574]
+Draparn_plum      AATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTACCGTCCCTGCC   [1586]
+Uronema_belk      AATGCCTAGTAAGCG--AGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC   [1539]
+Chlamydom_moew    AATGCCTAGTAAGCGTGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC   [1594]
+Stephanos_pl      AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC   [1598]
+Carteria_rad      AATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC   [1602]
+Gonium_pecto      AATGCCTAGTAAGCGCGAGTCATCAGCTCG-GTTGATTAC-GTCCCTGCC   [1588]
+Chlorella_kess    AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC   [1579]
+Chlorella_vulg    AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC   [1581]
+Protothec_wic     AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC   [1576]
+Chlorella_prot    AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC   [1582]
+Chlorella_min     AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC   [1579]
+Neochloris_aqu    AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC   [1577]
+Neochloris_vig    AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC   [1570]
+Pediastrum_dup    AATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC   [1579]
+Scenedesm_obl     AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC   [1576]
+Characium_hin     AATGCCTAGTAAGCGCGATTCATCAGATCGCGTTGATTAC-GTCCCTGCC   [1575]
+Chlorella_fus     AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC   [1577]
+Ankistrodesmus    AATGCCTAGTAGGCGCGATTCATCAGATCGCGCCGATTAC-GTCCCTGCC   [1574]
+Pseudotreb_gig    ????CCTAGTAAGCG--AGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC   [1583]
+Pleurastr_terr    AATGCCTAGTAAGCG--AGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC   [1585]
+Characium_per     AATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCC   [1578]
+Parietochl_pse    AATGCCTAGTAAGGCCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC   [1582]
+Friedmannia_is    AATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCC   [1581]
+
+[                          1660      1670      1680      1690      1700]
+[                          .         .         .         .         .]
+
+Glycine_max       CTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA   [1628]
+Oryza_sativa      CTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA   [1657]
+Zamia_pumila      CTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGATCC---GGTGA   [1657]
+Psilotum_n        CTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA   [1649]
+Equisetum_ar      CTTTGTACACACTGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA   [1651]
+Atrichum_angus    CTTTGTACACACC-CCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA   [1629]
+Notothylas_bre    CTTTGTACACAC-GCC-GTCGCTCCTACCGATTGAATGGTCC---GGTGA   [1619]
+Phaeoceros_lae    CTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA   [1626]
+Porella_pi        CTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCC----GTGA   [1643]
+Conocephal_con    CTTTGT-C-C-CCGCCC--CGCTCCT-CCGATTGAATGGTCC---GGTGA   [1604]
+Asterella_tene    CTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA   [1639]
+Riccia            CTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA   [1635]
+Klebsormid_fla    CTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAATGATCC---GGTGA   [1661]
+Coleochaet_nit    CTTTGTACACAC-GCCCGTCGCTCCTACCGATAGAATGCTCC---GGTGA   [1629]
+Fissidens_taxi    CTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA   [1631]
+Plagiomnium_cu    CTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA   [1617]
+Micromonas_pus    CTTTGTACACACC-CCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA   [1639]
+Mantoniel_squa    ??????????????????????????????????????????????????   [1610]
+Nephroselm_pyr    CTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATG-TGC--TGGT?A   [1633]
+Pedinomonas_mi    CTTTGTAC-CAC-GCCCGT-GCTACTACCGATTGAATC-TTT---GGTGA   [1622]
+Tetraselm_cart    CTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATG-TG--TTGGTGA   [1635]
+Enteromorpha      CTTTGTACACACCGCCCGTCGCTCCTACCGATTGAACG-TGC--TG--GA   [1643]
+Ulva_fasci        CTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAACG-TGC--TGGTGA   [1624]
+Ulothrix_zo       CTTTGTACA-AC--CCCGTC---CC--CCGATTGAATG--GC-GTAAAGA   [1564]
+Cympolia_barba    CTTTGT-CTCACCGCC-GTCGCTTGATCCGACGTTAC-AGT---TGGTGA   [1648]
+Batophora_oers    CTYT--AC-CAC--CC-GTCGCTTGATCCTGTCTTGC-A-T----YGTGA   [1603]
+Codium_decort     CTTTGTACACAC-GCC-GTCGCT-GATACTGATGGCAG-AAC--TGG--A   [1629]
+Cladophoro        GTTTGTACACACCGCCCGTCGCTCC-ACCGATTGGGTG-TGCG-T---GA   [1623]
+Blastophysa_rh    CTTTGT-C-C-CCGCC-GTCGCTCCTACC-ATT-GATG-TGC--TGGTGA   [1616]
+Trentepohlia      ----GTAC-C-CC-CCCGT-GCTCCTTCCGATTGGGTG-TGG--TGGTGA   [1620]
+Cephaleuro_par    CTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA   [1622]
+Characium_vac     CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1622]
+Dunaliella_par    CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1621]
+Chlamyd_reinha    CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1623]
+Volvox_carteri    CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1640]
+Chlorococc_min    CTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAGTG-TGC--TGGTGA   [1620]
+Draparn_plum      CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-T-C--TGGT-A   [1631]
+Uronema_belk      CTTTGTACACAC-GCCCGTCGCTCCT-CCGATTGGGTG-TGT--GGGTGA   [1584]
+Chlamydom_moew    CTTTGTACWYWC-GCCCGTYGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1640]
+Stephanos_pl      CTTTGTACACACCGCCCGTCGCTCC-ACCGATTGGGTG-TGC--TGGTGA   [1644]
+Carteria_rad      CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1649]
+Gonium_pecto      CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1635]
+Chlorella_kess    CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1626]
+Chlorella_vulg    CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1628]
+Protothec_wic     CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1623]
+Chlorella_prot    CTTTGTACACACCGCCCGTCGCTCCTACCGATTGAGTG-TGC--TGGTGA   [1629]
+Chlorella_min     CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1626]
+Neochloris_aqu    CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1624]
+Neochloris_vig    CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1617]
+Pediastrum_dup    CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1626]
+Scenedesm_obl     CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1623]
+Characium_hin     CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1622]
+Chlorella_fus     CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1624]
+Ankistrodesmus    CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1621]
+Pseudotreb_gig    CTTTGTACACAC-GCCCGTCGCTCCTACCGATTGGGTG-TGC--T-GTGA   [1628]
+Pleurastr_terr    CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1632]
+Characium_per     CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1625]
+Parietochl_pse    CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGA   [1629]
+Friedmannia_is    CTTTGTACACACCGCCCGTCGCTCCTACCGATTGGATG-TGC--TGGTGA   [1628]
+
+[                          1710      1720      1730      1740      1750]
+[                          .         .         .         .         .]
+
+Glycine_max       AGTGTTCGG--ATTGCGGT-------------------------------   [1645]
+Oryza_sativa      AGTGTTCGG--ATCGCGGCGACGGGGGCGGTTCGCCGCCCCCGACGTCGC   [1705]
+Zamia_pumila      AGTGTTCGG--ATCGTGCCGACGACGGCGGTTCGCTGGGCGCGACGTCGC   [1705]
+Psilotum_n        AGTTTTCGG--ATTGCGGCGAGCGGTCCGCCGGCACGTTGT---------   [1688]
+Equisetum_ar      AGTTTTCGG--ATT-CGGCGACGCTGGCGGT-CGCCGGCGACGTTGT---   [1694]
+Atrichum_angus    AGTTTTCGG--ATCG--GG-TG-ATCGGGTT-G-GTTCGG?GACTTGT--   [1669]
+Notothylas_bre    AGTTTTCGG--ATTG-CGGCGACACCGGGTCACCGCCGGGGACGTT-T--   [1663]
+Phaeoceros_lae    AGTTTTCGG--ATTG-CGGCG?ACA?CGGGT?ACCGCCGGGACGTTGT--   [1671]
+Porella_pi        AGTTTTCGG--ATTGCGGCGACGCGGCGGTTCGCTGCCGGGACGTTGT--   [1689]
+Conocephal_con    AGAGTTCGG--A-CG-CGGCG?ACGTGC?GTCGCCGCCGGGACGTTGT--   [1648]
+Asterella_tene    -GAGTTCGG--ATCG-CGGCGACGCGCGGTTCGCCGCCGGGACGTTG---   [1682]
+Riccia            -GAGTTCGG--ATCG----CGAC-----GTTCGCCGC-GGGACGTTGT--   [1670]
+Klebsormid_fla    AGTTTTCGG--ATTGCGGCTACTGGTCCGCCGCCGAAGAAGCTGTGAG--   [1707]
+Coleochaet_nit    AGCATTCGG--ATCGCCACCGGCGGGCAACTCCGGAGACGGCATG-----   [1672]
+Fissidens_taxi    AGTTTTCGG--ATTG-CG?CG?AC?GGGTTCGCCGCGCGCTGT-------   [1671]
+Plagiomnium_cu    AGTTTTCGG--ATCG-CG??A?C????GTTCGCCGC?GG?GACGTTGT--   [1662]
+Micromonas_pus    AGCGTTCGG--ACCGT-GGCTTTCTGA??G?TTCG?CCGTCGGATGGCCT   [1686]
+Mantoniel_squa    ??????????????????????????????????????????????????   [1660]
+Nephroselm_pyr    GGAGTCCGG--AT?AT???GCGGGTGGGTCC?GCCG?C?TCCGCCCGT--   [1679]
+Pedinomonas_mi    GGCTCACGG--ACTGTCGTGCTTCCTTCCTCGTGTTGGTTGTACTTC---   [1667]
+Tetraselm_cart    GGAGTT?GG--ATTGGCAGTTTGTGGTGG?TTCG?CCACTGCTTACAGCT   [1683]
+Enteromorpha      AGCGTTAGG--ACTGG--AACCTTGGGCCGGTCTCCTGCCCATGGTTTC-   [1688]
+Ulva_fasci        AGCGTTAGG--ACTGGAACTTTGGCCGGTCTCCTGCCCATTGTTTC----   [1668]
+Ulothrix_zo       TTTGCGGAATTGCT-TTCACGTTAGTTCCAAGCTCTTACCAC--------   [1605]
+Cympolia_barba    ACTGTTTGG--ATTATCCTTGTTCCGTGAAGACGTTACAGGTT-------   [1689]
+Batophora_oers    AAAGTTTGG--AT--GYCTTCCGAAA?CGGTTACGCCTA-----------   [1638]
+Codium_decort     A--CCGGGG--ACGC-GCC?TTT??TGGGAGCCCCGCT------------   [1662]
+Cladophoro        AAT-TTCGG--ATTAGACAACCTACCGT?AGGG?GTCGT?T---------   [1661]
+Blastophysa_rh    AGCA-ACG---ACT-TGGA?CACCCTCGGGT?ATTTGC------------   [1649]
+Trentepohlia      AGAGTTCGG--ACTGGACCAGGCTAGCAATA--CCC--TTG--------G   [1656]
+Cephaleuro_par    AGTGTTCGG--ATTGCGGCGACGTGAGCGGTTCGCTGCCCGCGACGTTGT   [1670]
+Characium_vac     AGTGTTCGG--ACTGGCT--------------------------------   [1638]
+Dunaliella_par    AGTGTTTGG--ACTG-GTT-------------------------------   [1637]
+Chlamyd_reinha    AGTGTTCGG--ATTGAGCT-------------------------------   [1640]
+Volvox_carteri    AGTGTTCGG--ATTGACTTTGACTGGGGCAACCTGGTCATGGTT------   [1682]
+Chlorococc_min    AGTGTTCGG--ACTTGCG--------------------------------   [1636]
+Draparn_plum      AGCGTTCGG--A-TGAAGCGGTGGGACTCTCCTGCCCTCCC---------   [1669]
+Uronema_belk      AGCGCTCGG--AT?GGGGCGGTCGGAGTCTCCCACCCCCT----------   [1622]
+Chlamydom_moew    AGTGTTCGG--ATTGGCTTTGAGGGG-TGG-CAACTCCCCAG-AGCC---   [1682]
+Stephanos_pl      AGTGTTGGG--ATTGACTT--AGTGG-TGGGCA-CTCCA-TGTTGTT---   [1684]
+Carteria_rad      AGTGTTCGG--ATCGGA-GTCCTTGGCTGG-CAACAGTTGAGGTTTCT--   [1693]
+Gonium_pecto      AGTGTTCGG--ATTGATC--GGCTGG---GGCAACTCGGCCTTGATT---   [1675]
+Chlorella_kess    AGTGTTCGG--ATTGGC???????????????????????????GC-C--   [1671]
+Chlorella_vulg    AGTGTTCGG--ATTGGC???????????????????????????GC-C--   [1673]
+Protothec_wic     AGTGTTCGG--ATTGGC???????????????????????????GC-C--   [1668]
+Chlorella_prot    AGTGTTCGG--ATTGGC???????????????????????????GC-C--   [1674]
+Chlorella_min     AGTGTTCGG--ATTGGC???????????????????????????GC-C--   [1671]
+Neochloris_aqu    AGTGTTCGG--ATTGGCC??????????????????????????????--   [1670]
+Neochloris_vig    AGTGTTCGG--ATTGGC???????????????????????????GC-C--   [1662]
+Pediastrum_dup    AGTGTTCGG--ATTGGCC??????????????????????????????--   [1672]
+Scenedesm_obl     AGTGTTCGG--ATTGGC???????????????????????????GC-C--   [1668]
+Characium_hin     AGTGTTCGG--ATTGGCC??????????????????????????????--   [1668]
+Chlorella_fus     AGTGTTCGG--ATTGGC???????????????????????????GC-C--   [1669]
+Ankistrodesmus    AGTGTTCGG--ATTGGC???????????????????????????GC-C--   [1666]
+Pseudotreb_gig    AGCGTTCGG--ATTGCGTTAGTCGGGTTTTCCGCCTCCTCTCACT-----   [1671]
+Pleurastr_terr    AAAGTTTGG--ACTGGCGGTAGGCGGGTGGTTCGCCATCTGCTGCTGCC-   [1679]
+Characium_per     AGTGTTCGG--ATCGGCT??????????????????????????????--   [1671]
+Parietochl_pse    AGTGTTCGG--ATTGGCC??????????????????????????????--   [1675]
+Friedmannia_is    AGTGTTCGG--ATTGGCC??????????????????????????????--   [1674]
+
+[                          1760      1770      1780      1790      1800]
+[                          .         .         .         .         .]
+
+Glycine_max       GAGAAGTCCACTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAG   [1695]
+Oryza_sativa      GAGAAGTCCATTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAG   [1755]
+Zamia_pumila      GAGAAGTTCATTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAG   [1755]
+Psilotum_n        GAGAAGTTCATTAAACCTTATCATTTAGAGGAA?????????????????   [1738]
+Equisetum_ar      GAGAAGTTCATTGAACCTTACCATTTAGAG????????????????????   [1744]
+Atrichum_angus    GAGAA-TTCATTAAA--TTATCATTTAGAGGAA?????????????????   [1716]
+Notothylas_bre    GA-AA-TTCATTAAACCTTATCATTTA?A?????????????????????   [1711]
+Phaeoceros_lae    GAGAAG-TCATTAAACCTTATC-TTTAGAGGAA?????????????????   [1719]
+Porella_pi        GAGAAGTTTATTAAACCTTATCATTTA?A?????????????????????   [1739]
+Conocephal_con    GAGAAGTTCTTT-AACCTTATCA-TTAGA?????????????????????   [1696]
+Asterella_tene    GA-AAGTTCTTTAAACCTTATCA???????????????????????????   [1731]
+Riccia            GAGAAGTTCTTTAAACCTTATC-TTTAGA?????????????????????   [1719]
+Klebsormid_fla    GCAAGGTTCATTAAACCTTATCATTTAGAGGA??????????????????   [1757]
+Coleochaet_nit    -AGAA-TT-GTTGAACCTTATCGTTTAGAGGA??????????????????   [1719]
+Fissidens_taxi    GAGAAGTTCATTAAACCTTATCATTTAGA--A??????????????????   [1719]
+Plagiomnium_cu    GAGAAG-TCATTAAACCTTATCATTTA-AG????????????????????   [1710]
+Micromonas_pus    GGGAAGTTCGTT-AACCTTATCA???????????????????????????   [1735]
+Mantoniel_squa    ??????????????????????????????????????????????????   [1710]
+Nephroselm_pyr    CAGAAGTTCTTCAAACCCTCGCATTTAGAG????????????????????   [1729]
+Pedinomonas_mi    GGGAAGT--ATACA--CCTGATGATTAGAGGA??????????????????   [1713]
+Tetraselm_cart    GAGAAGTTCTCCAAACCCCCCCATT-AG??????????????????????   [1732]
+Enteromorpha      --GAATTTCGTT-AACCCTC--GTTTAGAG-A??????????????????   [1732]
+Ulva_fasci        GGGAATTTCGTT-AACCCTCCC????????????????????????????   [1717]
+Ulothrix_zo       GAGAAGTT-ATT-AACCCTCCCA???????????????????????????   [1653]
+Cympolia_barba    --GAAATTCGGTGAACC-----ACCTGTTAT???????????????????   [1732]
+Batophora_oers    --GAA-TTCTCTTAACC-----ACCT-TTA????????????????????   [1679]
+Codium_decort     AACCACTTTTCTAA????????????????????????????????????   [1712]
+Cladophoro        GAGAAGTTCATTAACCCTTCACC?AGAG?AA???????????????????   [1711]
+Blastophysa_rh    GGGAAATGTGTTAAACCCTCCCATCTA?A?????????????????????   [1699]
+Trentepohlia      GGAAGTCCGTTTAAACCCTCCCTA??????????????????????????   [1706]
+Cephaleuro_par    GAGAAGTCCACTGAACCTTATCATTTAGAGGAAGGA??????????????   [1720]
+Characium_vac     GGGAAGAACATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG   [1688]
+Dunaliella_par    GGGAAGAACATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG   [1687]
+Chlamyd_reinha    GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG   [1690]
+Volvox_carteri    GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG   [1732]
+Chlorococc_min    GGGAAGAACATTAAACCCTCCCACTTAGAGGAAGGAGAAGTCGTAACAAG   [1686]
+Draparn_plum      GAGAAGTTCGTTAAACCCTCCCACC?????????????????????????   [1719]
+Uronema_belk      GAGAAGTCCGTTAAACCCTCCCACCTA-AGGAA?????????????????   [1671]
+Chlamydom_moew    GAGAAGATCATTAAACCCTCCCACCTAGAG????????????????????   [1732]
+Stephanos_pl      GAGAACAACATTAAACCCTCCCACCTAGA--???????????????????   [1732]
+Carteria_rad      GAGAAGTTCATTAAACCCTCCC????????????????????????????   [1743]
+Gonium_pecto      GAAAAGTTCATTAAACCCTCCCAC??????????????????????????   [1725]
+Chlorella_kess    -AGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG   [1720]
+Chlorella_vulg    GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG   [1723]
+Protothec_wic     GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG   [1718]
+Chlorella_prot    GAGAAGTTCATTAAACCCTCCCACTTAGAGGAAGGAGAAGTCGTAACAAG   [1724]
+Chlorella_min     GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG   [1721]
+Neochloris_aqu    AAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG   [1720]
+Neochloris_vig    AACAAGT-CATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG   [1711]
+Pediastrum_dup    GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG   [1722]
+Scenedesm_obl     GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG   [1718]
+Characium_hin     AAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG   [1718]
+Chlorella_fus     GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG   [1719]
+Ankistrodesmus    GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG   [1716]
+Pseudotreb_gig    GAGAAGTTCGTTAAACCCTCCCACCT-GAG-A??????????????????   [1719]
+Pleurastr_terr    GGGAAATTCTTTAAACCCTCCCACCTAGAG-AA?????????????????   [1728]
+Characium_per     GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAG   [1721]
+Parietochl_pse    GAGAAGTTCATTAAACCCTCCCACCTAGAGTAAGCAGAAGTCGTAACAAG   [1725]
+Friedmannia_is    GAGAAGTTCTCTAAACCCTCCCATCTAGAGGAAGGAGAAGTCGTAACAAG   [1724]
+
+[                          1810      1820      1830      1840      1850]
+[                          .         .         .         .         .]
+
+Glycine_max       GTTTCCGTAG???????????????????????????????????GACCC   [1745]
+Oryza_sativa      GTTTCCGTAG???????????????????????GCACCGCTGGCCGACCC   [1805]
+Zamia_pumila      GTTTCCGTAG????????????????????????????????????????   [1805]
+Psilotum_n        ??????????????????????????????????????????????????   [1788]
+Equisetum_ar      ?????????????????????????????????GCACCATCGACCGACCG   [1794]
+Atrichum_angus    ?????????????????????????????????GCAC?AT?GACCGACCG   [1766]
+Notothylas_bre    ???????????????????????????????????????????????CC?   [1761]
+Phaeoceros_lae    ?????????????????????????????????GCACCATCGACCGACCA   [1769]
+Porella_pi        ??????????????????????????????????????????????????   [1789]
+Conocephal_con    ????????????????????????????????????CCAGCGACCATGAG   [1746]
+Asterella_tene    ?????????????????????????????????T?AACATCGACCGACCA   [1781]
+Riccia            ??????????????????????????????????????????????????   [1769]
+Klebsormid_fla    ??????????????????????????????????????????????????   [1807]
+Coleochaet_nit    ??????????????????????????????????CACCACGCGCCGATCC   [1769]
+Fissidens_taxi    ??????????????????????????????????????????????????   [1769]
+Plagiomnium_cu    ?????????????????????????????????GCACCATCGACCGACCG   [1760]
+Micromonas_pus    ??????????????????????????????????????????????????   [1785]
+Mantoniel_squa    ??????????????????????????????????????????????????   [1760]
+Nephroselm_pyr    ??????????????????????????????????????????????????   [1779]
+Pedinomonas_mi    ??????????????????????????????????????????????????   [1763]
+Tetraselm_cart    ????????????????????????????????????CCATCGACCGACCA   [1782]
+Enteromorpha      ??????????????????????????????????????????ACC?ACCA   [1782]
+Ulva_fasci        ???????????????????????????????????????????????CCA   [1767]
+Ulothrix_zo       ??????????????????????????????????????????????????   [1703]
+Cympolia_barba    ??????????????????????????????????TGTGTTAAGCACCGAG   [1782]
+Batophora_oers    ??????????????????????????????????????????????????   [1729]
+Codium_decort     ??????????????????????????????????????????????????   [1762]
+Cladophoro        ??????????????????????????????????????????GCCAACCA   [1761]
+Blastophysa_rh    ?????????????????????????????????????????GACCGACCA   [1749]
+Trentepohlia      ??????????????????????????????????????????????????   [1756]
+Cephaleuro_par    ???????????????????????????????????????????GCTGCCA   [1770]
+Characium_vac     GTTTCCGTAG????????????????????????????????????????   [1738]
+Dunaliella_par    GTTTCCGTAG????????????????????????????????????????   [1737]
+Chlamyd_reinha    GTTTCCGTAG????????????????????????????????????????   [1740]
+Volvox_carteri    GTTACCGTAGGTGAACCTGCGGAAGGATCATTG?????????????????   [1782]
+Chlorococc_min    GTTTCCGTAG????????????????????????????????????????   [1736]
+Draparn_plum      ???????????????????????????????????????????????CC?   [1769]
+Uronema_belk      ??????????????????????????????????????????????????   [1721]
+Chlamydom_moew    ???????????????????????????????????????TCGACCGACC?   [1782]
+Stephanos_pl      ?????????????????????????????????GCACCATCGACCGACCA   [1782]
+Carteria_rad      ?????????????????????????????????GCACCATCGACCGACCA   [1793]
+Gonium_pecto      ?????????????????????????????????GCACCATCGACCGACCA   [1775]
+Chlorella_kess    GTTTCCG???????????????????????????????????????????   [1770]
+Chlorella_vulg    GTTTCCG???????????????????????????????????????????   [1773]
+Protothec_wic     GTTTCCG???????????????????????????????????????????   [1768]
+Chlorella_prot    GTTTCCG???????????????????????????????????????????   [1774]
+Chlorella_min     GTTTCCG???????????????????????????????????????????   [1771]
+Neochloris_aqu    GTTTCCGTAG????????????????????????????????????????   [1770]
+Neochloris_vig    GTTTCCG???????????????????????????????????????????   [1761]
+Pediastrum_dup    GTTTCCGTAG????????????????????????????????????????   [1772]
+Scenedesm_obl     GTTTCCG???????????????????????????????????????????   [1768]
+Characium_hin     GTTTCCGTAG????????????????????????????????????????   [1768]
+Chlorella_fus     GTCTCCG???????????????????????????????????????????   [1769]
+Ankistrodesmus    GTTTCCG???????????????????????????????????????????   [1766]
+Pseudotreb_gig    ??????????????????????????????????????????????????   [1769]
+Pleurastr_terr    ??????????????????????????????????????????????????   [1778]
+Characium_per     GTTTCCGTAG????????????????????????????????????????   [1771]
+Parietochl_pse    GTTTCCGTAG????????????????????????????????????????   [1775]
+Friedmannia_is    GTTTCCGTAG????????????????????????????????????????   [1774]
+
+[                          1860      1870      1880      1890      1900]
+[                          .         .         .         .         .]
+
+Glycine_max       TGAT?CTTCT?TGAAGGGTTC?GAGTGAGAGCA?TACCTGTCGGGACCCG   [1795]
+Oryza_sativa      TGAT?CTTCTGTGAAGGGTTC?GAGTTGGAGCA?CGCCTGTCGGGACCCG   [1855]
+Zamia_pumila      ??????????????????????????????????????????????????   [1855]
+Psilotum_n        ??????????????????????????????????????????????????   [1838]
+Equisetum_ar      TGAT?CTTCTGTGAAAGGTTT?GAGTGAGAGCA?TACCTGCTGGGACCC?   [1844]
+Atrichum_angus    TGAT?CTTCTGTGAAAGGTTT?GAGTGTGAGC??T?CCTGCTGGGACCC?   [1816]
+Notothylas_bre    TGAT?CTTCTGTGA?AGGTTT?GAGTGTGAGCA?TACCTGCTGGGACCC?   [1811]
+Phaeoceros_lae    TGAT?CTTCTGTGAAAGGTTT??AGTGTGA??A?TACCTGCTGGGACCC?   [1819]
+Porella_pi        ??????????????????????????????????????????????????   [1839]
+Conocephal_con    CATC?TCGATGCGAAAGGTT??GAGT??GAGCG?TGCCTGTTGGGACCC?   [1796]
+Asterella_tene    TGAT?CTTCTGTGAAAGGTTC?G?GT?GGAGCA?TGCCTGTTGGGACCC?   [1831]
+Riccia            ????????????A?AAGGTTCGGAGTAAGAGCAT?GCCT?TTGGGACCC?   [1819]
+Klebsormid_fla    ??????????????????????????????????????????????????   [1857]
+Coleochaet_nit    GGAGA?ATGTCGGAAGGGTTC?GAGCTGAGA?A??GTATGTTGGGACCC?   [1819]
+Fissidens_taxi    ??????TTCTGTGAAAGGTTC?GAGTGTGAGCA?TACCTGTTGGGAC???   [1819]
+Plagiomnium_cu    TGAT?CTTCTGTGAAAGGTTT?GAGTGTGAGCA?CACATGTTGGGACCC?   [1810]
+Micromonas_pus    ??????????????????????????????????????????GGGACC??   [1835]
+Mantoniel_squa    ??????????????????????????????????????TGCTGGGACC??   [1810]
+Nephroselm_pyr    TGAT?CTTCTGTGAAAGGTTT?GAGT?CGAGCA??ACCTGTTGGGACC??   [1829]
+Pedinomonas_mi    ?????????????????????????????AGCA?GATATGTTGG??CCC?   [1813]
+Tetraselm_cart    TGAT?CTTTTGTGAAAGGTTT?GAGTACGAGCA?TACCTGTTGGGACCC?   [1832]
+Enteromorpha      T?AT?CTTCTGTGAAAGG?TC??A?TACGA??G?TACCTTTTGGGACCCT   [1832]
+Ulva_fasci        TGAT?C?TCTGTGAAAGGTT??GAGTACGAGCG?TACCTGTTGGGACC??   [1817]
+Ulothrix_zo       ??AT?CTTCTGTGAT?GGTTC?GAGTACGAGCAGTACCT?TTGGGACCC?   [1753]
+Cympolia_barba    TTCT?CTTTTACGAAAAACTC?GAGTGTGAGCA?TGCCGTT?A?GATCT?   [1832]
+Batophora_oers    ?????????????????????????????????????????TGG?ACC??   [1779]
+Codium_decort     ??????????????????????????????????????????????????   [1812]
+Cladophoro        TGATGCTTTTGTG??AGGTTT?GAGC??GAGCG?CAGTCG?TAGGACCCG   [1811]
+Blastophysa_rh    TGAT?CTTCTGAGAAAGGTTC?GAGTTGGAGCG?TGCCT?TTGGGACCC?   [1799]
+Trentepohlia      ??TC?CTCACAT?ATATCTTT?T?ATTCATAAC?TACCT?TTGGGACCC?   [1806]
+Cephaleuro_par    TGAT?CTTCTGTG???GGTTC?GAGTAGGAGCG?G?CCTGTTGGGACCGG   [1820]
+Characium_vac     ??????????????????????????????????????????????????   [1788]
+Dunaliella_par    ??????????????????????????????????????????????????   [1787]
+Chlamyd_reinha    ??????????????????????????????????????????????????   [1790]
+Volvox_carteri    ??????????????????????????????????????????????????   [1832]
+Chlorococc_min    ??????????????????????????????????????????????????   [1786]
+Draparn_plum      TGAT?CTTCTGTGAAAGGT???GAGTACGAGCA?TACCT?TTGGGACCC?   [1819]
+Uronema_belk      ??????????????????????GAGT?CGAGCA??ACCT?TTGGGACCC?   [1771]
+Chlamydom_moew    TAGAGCTTCTGCGAAAGGTTT?GAGTGCGAGCA?TA?ATGTTGGGACC??   [1832]
+Stephanos_pl      TGAT?CTTCTGTGAAAGGTTT?GAGTGCGAGCA?TACCTGTTGGGACCC?   [1832]
+Carteria_rad      TGA?GCTTCTGC?AAAGGTTT?GAGTGCG?GTG?T?ACT?TTGGGACCC?   [1843]
+Gonium_pecto      TGTTGCTTTTGCGAAAGGTT??GAGTGCGAGCA?TACCTGTTGGGACCC?   [1825]
+Chlorella_kess    ??????????????????????????????????????????????????   [1820]
+Chlorella_vulg    ??????????????????????????????????????????????????   [1823]
+Protothec_wic     ??????????????????????????????????????????????????   [1818]
+Chlorella_prot    ??????????????????????????????????????????????????   [1824]
+Chlorella_min     ??????????????????????????????????????????????????   [1821]
+Neochloris_aqu    ??????????????????????????????????????????????????   [1820]
+Neochloris_vig    ??????????????????????????????????????????????????   [1811]
+Pediastrum_dup    ??????????????????????????????????????????????????   [1822]
+Scenedesm_obl     ??????????????????????????????????????????????????   [1818]
+Characium_hin     ??????????????????????????????????????????????????   [1818]
+Chlorella_fus     ??????????????????????????????????????????????????   [1819]
+Ankistrodesmus    ??????????????????????????????????????????????????   [1816]
+Pseudotreb_gig    ??????????????????????????????????????????GGG?CCC?   [1819]
+Pleurastr_terr    ??????????????????????????????????????????????????   [1828]
+Characium_per     ??????????????????????????????????????????????????   [1821]
+Parietochl_pse    ??????????????????????????????????????????????????   [1825]
+Friedmannia_is    ??????????????????????????????????????????????????   [1824]
+
+[                          1910      1920      1930      1940      1950]
+[                          .         .         .         .         .]
+
+Glycine_max       AAAGATGGTGAACT?TGCCTGAGCGGGG?CGAAGCCAGAGGAAACTCTGG   [1845]
+Oryza_sativa      AAAGATGGTGAACTATGCCTGAGCGGGG?CGAAGCCAGAGGAAACTCTGG   [1905]
+Zamia_pumila      ??????????????????????????????????????????????????   [1905]
+Psilotum_n        ??????????????????????????????????????????????????   [1888]
+Equisetum_ar      AAAGATGGTGAACTATGCCTGAGCAGGG?CGAAGCCAGAGGAAACTCTGG   [1894]
+Atrichum_angus    ?AAGATGGTGAACTATGCCTGAGC?AGG?CGAAGCCAGAGGAAACTCTGG   [1866]
+Notothylas_bre    ???GATGGTGA?CTATGCCTGAGCAGGG?CGAAGCCAGAGGAAACTCTGG   [1861]
+Phaeoceros_lae    ?AAGATGGTGAACTATGCCTGAGTCAGG?CGAAGCCAGAGGAAACTCTGG   [1869]
+Porella_pi        ??????????????????????????????????????????????????   [1889]
+Conocephal_con    ?AAGATGGTGA?CTATGC?TGAGCAGG??CGAAGCCGGAGGAAACTCCGG   [1846]
+Asterella_tene    ?AAGATGGTGAACTATGC?TGAGCAGGG?CGAAGTCAGAGGAAACTCTGG   [1881]
+Riccia            ?AAGATGGTGAACTAT???TGAG?A?GG?CGAAGCCAGAGGAAACTCTGG   [1869]
+Klebsormid_fla    ??AGATGGTGAACTATGCCTGAGGCAGG?CGAAGCCAGAGGAAACTCTGG   [1907]
+Coleochaet_nit    ??AGATGGTGAACTATGCCTGA??AGG??CGAAGCCAGAGGAAACTCTGG   [1869]
+Fissidens_taxi    ?AAGATGGTGAACTAT???TGA???AGG?CGAAGCCAGAGGAAACTCTGG   [1869]
+Plagiomnium_cu    ??AGATGGTGAACTATGCCTGAGCAGGG?CGAAGCCAGAGGAAACTCTGG   [1860]
+Micromonas_pus    ??AGATGGTGAACTATG??TGAGCA?GG?CGAAGCCAGAGGAAACTCTGG   [1885]
+Mantoniel_squa    ???GATGGTGAACTATG?CTGAGCA?GG?CGAAGCCAGAGGAAACTCTGG   [1860]
+Nephroselm_pyr    ???GATGGTGAACTATGCCTGAGCA?GG?CGAAGCCAGAGGAAACTCTGG   [1879]
+Pedinomonas_mi    ??AGATGGTGAACTATG?CTGAAC?GGG?TGAAGCCAGGGGAAACT?TGG   [1863]
+Tetraselm_cart    ??AGATGGTGAACTATGCCTGAGCA?GG?CGAAGCCAGAGGAAACTCTGG   [1882]
+Enteromorpha      TAAGATGGTGAACTATGCCTGA?CA?GG?CGAAGCCAGAGGAAACTCTGG   [1882]
+Ulva_fasci        AAAGATGGTGAACTATG?CTGAGCA?GG?CGAAGCCAGAGGAAACTC?GG   [1867]
+Ulothrix_zo       ?AAGATGGTGATCTATGCCTGAGCAGGG??GAAGCCAGAGGAAACTCTGG   [1803]
+Cympolia_barba    ??AGATGGTGA?CTATACTTGGGTAG?A?TGTAGC?AGGAGAAATTCTGG   [1882]
+Batophora_oers    ??AGATGGT???CTATGCTTGGGTAGGA?CGAAG?CTGGGGAAACTCTGA   [1829]
+Codium_decort     ??????????????????????????????????????????????????   [1862]
+Cladophoro        G??GATGGTGAACTATGCCTGGTGCACGACGAAGCGC??GGAAACGCCGG   [1861]
+Blastophysa_rh    ?AAGATGGTGAACTATGCCTGAGCA?GG?CGAAGCCAGAGGAAACTCTGG   [1849]
+Trentepohlia      ?AAGATGGTGAACTATGCCTGATCAGG??CGAAGCCAGAGGAAACTCTGG   [1856]
+Cephaleuro_par    G??GATGGTGAACTATGCCTGATCAGG??CGAAGCCAGAGGAAACTCTGG   [1870]
+Characium_vac     ??????????????????????????????????????????????????   [1838]
+Dunaliella_par    ??????????????????????????????????????????????????   [1837]
+Chlamyd_reinha    ??????????????????????????????????????????????????   [1840]
+Volvox_carteri    ??????????????????????????????????????????????????   [1882]
+Chlorococc_min    ??????????????????????????????????????????????????   [1836]
+Draparn_plum      AAAGATGGTGAACTATGCCTGAGCGAGG?CGAAGC?AGAGGAAACTCTGG   [1869]
+Uronema_belk      ?AAGATGGTGAACTATG?CTGAGCA?GG?CGAAGCCAGAGGAAACTCTGG   [1821]
+Chlamydom_moew    ??AGATGGTGAACTATGCCTGGGCAGGG?TGAAGCCAGAGGAAACTCTGG   [1882]
+Stephanos_pl      AAAGATGGTGAACTATGCCTGAGCAAGG?TGAAGCCAGAGGAAACTCTGG   [1882]
+Carteria_rad      ??AGATGGTGAACTATGCCTGAGCAGGG?TGAAGCCAGAGGAAACTCTGG   [1893]
+Gonium_pecto      ?AAGATGGTGAA?TATGCCTGAGCAAGA?TGAAGCCAGAGGAAACTCTGG   [1875]
+Chlorella_kess    ??????????????????????????????????????????????????   [1870]
+Chlorella_vulg    ??????????????????????????????????????????????????   [1873]
+Protothec_wic     ??????????????????????????????????????????????????   [1868]
+Chlorella_prot    ??????????????????????????????????????????????????   [1874]
+Chlorella_min     ??????????????????????????????????????????????????   [1871]
+Neochloris_aqu    ??????????????????????????????????????????????????   [1870]
+Neochloris_vig    ??????????????????????????????????????????????????   [1861]
+Pediastrum_dup    ??????????????????????????????????????????????????   [1872]
+Scenedesm_obl     ??????????????????????????????????????????????????   [1868]
+Characium_hin     ??????????????????????????????????????????????????   [1868]
+Chlorella_fus     ??????????????????????????????????????????????????   [1869]
+Ankistrodesmus    ??????????????????????????????????????????????????   [1866]
+Pseudotreb_gig    ???GATGGTG??CTATG?CTGAGC??GG?C?AAGCCAGAGGAAACTCTGG   [1869]
+Pleurastr_terr    ??????????????????????????????????????????????????   [1878]
+Characium_per     ??????????????????????????????????????????????????   [1871]
+Parietochl_pse    ??????????????????????????????????????????????????   [1875]
+Friedmannia_is    ??AGATGGTG??CTATGCCTGAGC??GG?CGAAGC?AGAGGA???TCTGG   [1874]
+
+[                          1960      1970      1980      1990      2000]
+[                          .         .         .         .         .]
+
+Glycine_max       TGGAGGCCC?GCAGCGATACTGACGTGCAAATCG?TTCGTCTGACTTGGG   [1895]
+Oryza_sativa      TGGAGGCTC?GAAGCGATACTGACGTGCAAATCG?TTCGTCTGACTTGGG   [1955]
+Zamia_pumila      ??????????????????????????????????????????????????   [1955]
+Psilotum_n        ??????????????????????????????????????????????????   [1938]
+Equisetum_ar      TGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGG   [1944]
+Atrichum_angus    TGGAGGCTC?G?AGC?ATACTGACGTGCAAATCG?TTCGTCAGACTTGGG   [1916]
+Notothylas_bre    TGGAGGCTC?GTAGCGATACTGA?GTGCAAATCG?TTCGTCAGACTTGGG   [1911]
+Phaeoceros_lae    TGGAGGCTC?GTAGCGATACTGA?GTGC?AATCG?TTCGTCAGACTTGGG   [1919]
+Porella_pi        ??????????????????????????????????????????????????   [1939]
+Conocephal_con    TGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTC?TCAGACTCGGG   [1896]
+Asterella_tene    TGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTCGGG   [1931]
+Riccia            TGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGG   [1919]
+Klebsormid_fla    TGGAGGCTC?G?A?CGATACTGACGTGCAAATCG?TTCGTCAG?CTTGGG   [1957]
+Coleochaet_nit    TGGAAGATC?GCAGC?ATACTGACGTGCAAATCG?TTCGTCGGACTTG?G   [1919]
+Fissidens_taxi    TGGAGGCTC?GTAGCGATACTGACGTGCAAATCG??T?GT?AGACTTGGG   [1919]
+Plagiomnium_cu    TGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGG   [1910]
+Micromonas_pus    TGGAGGCTC?GTAGCGATACTGACGTGC?AATCG?TTCGTCGGACTTGGG   [1935]
+Mantoniel_squa    TGGA??CTC?GT?GCGATACTGACGTGC?AATCG?TTCGTCGGACTTGGG   [1910]
+Nephroselm_pyr    TGGA??CTC?GTA??G?TACTGACGTGCAAATCG?TTCGTCGGACTTGGG   [1929]
+Pedinomonas_mi    TGGAGGCTC?GTAGC?ATACTGACGAGC?AATCG?TTCGT?TGATTTGGG   [1913]
+Tetraselm_cart    TGGAGGCTC?GTAGATGTGCT?ACGTGCAAATCG?CTTTTCGGACTTGGG   [1932]
+Enteromorpha      TG?AGGCTC?GTAGATGTGCT?ACGTGCAAATCGCCTTTTCGGACTTGGG   [1932]
+Ulva_fasci        TGGAGGCTCGG?AGATGTGCT?ACGTGC?AATCG?CTTTTCGGACTTGGG   [1917]
+Ulothrix_zo       TGGAGGCTC?GTAGAT?TGCTG?CGTGC?AATCG?CTT?TCGGACTTGG?   [1853]
+Cympolia_barba    TGGATGTTC?GAAAGTGTGC?GA?GTGC?AATCG?CTTCTCAAACCTGAG   [1932]
+Batophora_oers    TGGAGGTCC?GAAGCT?TGCTGA?GTGCAAATCG?CTTCTCA?ACT?GAG   [1879]
+Codium_decort     ??????????????????????????????????????????????????   [1912]
+Cladophoro        TGGAGGTCG?G?AGATGTGCT?ACGTGC?AATCG?CTTTTCAGACATGGG   [1911]
+Blastophysa_rh    TGGAGGCTC?GTAGATGTGCTGA?GTGCAAAT?G??T?TTCGGACTTGGG   [1899]
+Trentepohlia      TGGAGGCTC?GTA?ATGTGCT?ACGTGCAAATCG?CTTTTCGGAATTGG?   [1906]
+Cephaleuro_par    TGGAGGCTC?GTAGATGTGCT?ACGTGCAAATCG?CTTTTCGGAATTGGG   [1920]
+Characium_vac     ??????????????????????????????????????????????????   [1888]
+Dunaliella_par    ??????????????????????????????????????????????????   [1887]
+Chlamyd_reinha    ??????????????????????????????????????????????????   [1890]
+Volvox_carteri    ??????????????????????????????????????????????????   [1932]
+Chlorococc_min    ??????????????????????????????????????????????????   [1886]
+Draparn_plum      T??AGGCTC?GTA?ATGTGCTGACGTGC?AATCG?CTTTTCGGACTTGGG   [1919]
+Uronema_belk      TGGAGGCTC?GTAGATGTGCTGACGTGCAAATCG?CTTTTCGGACTTGGG   [1871]
+Chlamydom_moew    TGGAGGCTC?GTAGATGTGCTGACGTGCAAATCG?CTTTTCTGACCTGGG   [1932]
+Stephanos_pl      TGGAGGCCT?GTAGATGTGCTGACGTGCAAATCG?CTTTTCTGACTTGGG   [1932]
+Carteria_rad      TGGAGGCTC?GTAGATGTGCTGACGTGCAAATCG?CTTTTCGGACTTGGG   [1943]
+Gonium_pecto      TGGAGGTCTGGTAGATGTGCTGACGTGC?AATCG?CTTTTCTGACTTGGG   [1925]
+Chlorella_kess    ??????????????????????????????????????????????????   [1920]
+Chlorella_vulg    ??????????????????????????????????????????????????   [1923]
+Protothec_wic     ??????????????????????????????????????????????????   [1918]
+Chlorella_prot    ??????????????????????????????????????????????????   [1924]
+Chlorella_min     ??????????????????????????????????????????????????   [1921]
+Neochloris_aqu    ??????????????????????????????????????????????????   [1920]
+Neochloris_vig    ??????????????????????????????????????????????????   [1911]
+Pediastrum_dup    ??????????????????????????????????????????????????   [1922]
+Scenedesm_obl     ??????????????????????????????????????????????????   [1918]
+Characium_hin     ??????????????????????????????????????????????????   [1918]
+Chlorella_fus     ??????????????????????????????????????????????????   [1919]
+Ankistrodesmus    ??????????????????????????????????????????????????   [1916]
+Pseudotreb_gig    TG?AGGCTC?G?AGATGTGCTGACGTGC??ATCG?CTTTTCGGACTTGGG   [1919]
+Pleurastr_terr    ??????????????????????????????????????????????????   [1928]
+Characium_per     ??????????????????????????????????????????????????   [1921]
+Parietochl_pse    ??????????????????????????????????????????????????   [1925]
+Friedmannia_is    TGGAGGCTC?G?AGATGTGCTGACGTGC?AATCG?CTTTTC?GACTTGG?   [1924]
+
+[                          2010      2020      2030      2040      2050]
+[                          .         .         .         .         .]
+
+Glycine_max       TATAGGGGCGAAAGACTAATCGAACCGTGCG?GG?GGCCCCGGAAAGAGT   [1945]
+Oryza_sativa      TATAGGGGCGAAAGACTAATCGAACCATGCG?GG?GGCCTCGGG?AGAGT   [2005]
+Zamia_pumila      ??????????????????????????????????????????????????   [2005]
+Psilotum_n        ??????????????????????????????????????????????????   [1988]
+Equisetum_ar      TATAGGGGCGAAAGACTAATCGAACCATGCG?GG?GGCCCTGGGAAGAGT   [1994]
+Atrichum_angus    ?ATA????C?AAAGACT?ATCGAACCATGCG?AG?GGCCCCGGGAAGAGT   [1966]
+Notothylas_bre    TATAGGGGCGAAAG?CTAATCG???????????????CCCCGGG?AGAGT   [1961]
+Phaeoceros_lae    TATA?GGGC???AGACTAATCGAACCATGCG??G?GGCCCCGGG?AGAGT   [1969]
+Porella_pi        ??????????????????????????????????????????????????   [1989]
+Conocephal_con    ?ATA??????AAAGACT?ATCGAACCATGCG?G???GCCCCGGGAAGAGT   [1946]
+Asterella_tene    ?ATA??????AAAGACTAATCGAACCATGCG?GA?GGCCCCGGGAAGAGT   [1981]
+Riccia            ?ATAG??G??AAAGA?TAATCGAACCATCTAGTA?AGCCCCGGGAAGAGT   [1969]
+Klebsormid_fla    ??TA??GCGGAAAGACTAATCGAACCAT???????????????GAAGAGT   [2007]
+Coleochaet_nit    TATA????C?AAAGACT?ATC?AACCATGCG?GG?G?CTCCGGG?AGAGT   [1969]
+Fissidens_taxi    TATAGGGGC???AGACTAATCGAAC?AT?CG??G?GGCCCCTGGAAGAGT   [1969]
+Plagiomnium_cu    TATAGGGGC?AAAGACTAATCGAACCATGCG?AG?GGCCCCTGGAAGAGT   [1960]
+Micromonas_pus    TATA???????AAGACT?ATC?AA????GG????GAGCCCCGGG?AGAGT   [1985]
+Mantoniel_squa    TATA????C?AAAGACT?ATC?AACCAT?????????????????AGAGT   [1960]
+Nephroselm_pyr    TATA?GG?CGAAAGACT?ATC?AACCATGCG?GG?GGCCCCAGGAAGAGT   [1979]
+Pedinomonas_mi    ?ATAGGGGCG?AAGACTAATCGAACCAT??????????TCCGG???GAGT   [1963]
+Tetraselm_cart    ??TA????CGAAAGACT?ATC?AACCATGCG?AT?GGCCCTGGGAAGAGT   [1982]
+Enteromorpha      TATA??GGC?AAAGACTAATCGAACCAT???????GG???TGGAAAGAGT   [1982]
+Ulva_fasci        TATA??GG????A?ACT?ATCGAACCATCGA?T??GGC?CTGGAAAGAGT   [1967]
+Ulothrix_zo       ?ATAGGGG?G?AAGACT?ATCGAAC?AT?????????CCTT?GGAAGAGT   [1903]
+Cympolia_barba    TTTAGGGGC???AGACTAATC?AACCA???????????????????????   [1982]
+Batophora_oers    TA?A?GGGC?AAA?ACTAA???????????????????????????????   [1929]
+Codium_decort     ??????????????????????????????ACGGCGGCGGCGGG?AGAGT   [1962]
+Cladophoro        TATAGGGGC?AAAGACTAATCGAACCAT?GG?CA?TGGTCCGGG?AGAGT   [1961]
+Blastophysa_rh    TATA?GGGCGAAAGACT?ATC?AACCAT??????????????GGAAGAGT   [1949]
+Trentepohlia      ??CA??G?????A?A??AATCGAACCATGCG?AT?GGTCCCGGGTAGAGT   [1956]
+Cephaleuro_par    TGT?????CGAAAGACTAATCGA?CCATGAG?TG?GTC???GGGTAGAGT   [1970]
+Characium_vac     ??????????????????????????????????????????????????   [1938]
+Dunaliella_par    ??????????????????????????????????????????????????   [1937]
+Chlamyd_reinha    ??????????????????????????????????????????????????   [1940]
+Volvox_carteri    ??????????????????????????????????????????????????   [1982]
+Chlorococc_min    ??????????????????????????????????????????????????   [1936]
+Draparn_plum      ?ATA????C???AGA?T?AT??AACCAT??????????????????????   [1969]
+Uronema_belk      TATA???GCGAAA?ACT?ATC?AACCATGCA?TC?GGCCCTGGG?AGAGT   [1921]
+Chlamydom_moew    CATAGGGGCGAAAGACTAATCGAACCAT?CTAGTA???????????????   [1982]
+Stephanos_pl      TATAGGGGCGAA?GACTAATCGAACCAT????????????TGGGAAGAGT   [1982]
+Carteria_rad      TATAGGGGCGAAAGACTAATCGAACCATG?T?C??G?CCCCAGGAAGAGT   [1993]
+Gonium_pecto      ?ATAGGGG????AGACT?ATCGAACCATGC??TC?GGCCCTGGG?AGAGT   [1975]
+Chlorella_kess    ??????????????????????????????????????????????????   [1970]
+Chlorella_vulg    ??????????????????????????????????????????????????   [1973]
+Protothec_wic     ??????????????????????????????????????????????????   [1968]
+Chlorella_prot    ??????????????????????????????????????????????????   [1974]
+Chlorella_min     ??????????????????????????????????????????????????   [1971]
+Neochloris_aqu    ??????????????????????????????????????????????????   [1970]
+Neochloris_vig    ??????????????????????????????????????????????????   [1961]
+Pediastrum_dup    ??????????????????????????????????????????????????   [1972]
+Scenedesm_obl     ??????????????????????????????????????????????????   [1968]
+Characium_hin     ??????????????????????????????????????????????????   [1968]
+Chlorella_fus     ??????????????????????????????????????????????????   [1969]
+Ankistrodesmus    ??????????????????????????????????????????????????   [1966]
+Pseudotreb_gig    ??TA??GGCG??AGACTAATCGAACCAT??????????????GG?AGAGT   [1969]
+Pleurastr_terr    ???????????????????????????????????GGCC?TGGG?AGAGT   [1978]
+Characium_per     ??????????????????????????????????????????????????   [1971]
+Parietochl_pse    ??????????????????????????????????????????????????   [1975]
+Friedmannia_is    ??TAGGGGCGAAAGACTCATC?AACCAT??????????????GG?AGAGT   [1974]
+
+[                          2060      2070      2080      2090      2100]
+[                          .         .         .         .         .]
+
+Glycine_max       TATCTTTTCTGTTT?AACA?GCCT?GCCC?ACCCTGGAAA?GCCTCAGCC   [1995]
+Oryza_sativa      T?TCTTTTCTGCTT?AAC?GGCCC?GCCA?AC?CTGGAAACGGTTCAGCC   [2055]
+Zamia_pumila      ??????????????????????????????????????????????????   [2055]
+Psilotum_n        ??????????????????????????????????????????????????   [2038]
+Equisetum_ar      TCTCTTTTCTTTTT?AACA?ACTT?GCCC?ACCCTGAAATCGGATCAACC   [2044]
+Atrichum_angus    TCTCTTTTCT?TTT?AACA?GCCT?GCCT??CCCTGGAATCGGATTACC?   [2016]
+Notothylas_bre    TCTC?TTTCTTTTT?AACA?GCCT?GCCT?ACCCTGAAATCGGATTACCC   [2011]
+Phaeoceros_lae    TCTCTTTTCT?TTT?AACA???CT?GCCT?GCCCTGAAATCGGATTACCC   [2019]
+Porella_pi        ??????????????????????????????????????????????????   [2039]
+Conocephal_con    TTTCTTTTCT?TTT??AC?GACCT?GCC??GCCCTGGAATCGCTTTATGC   [1996]
+Asterella_tene    TTTCTTTTCT??TT??AC?GACC??GCCG?GCCCTGAAATCGCATTACGC   [2031]
+Riccia            TTTCTT?TCTT?TT??AC?GACC??GCC??GCC?TG?AATCGCA?TACGC   [2019]
+Klebsormid_fla    TCTCTTTTCTTTTT?AACAGTCC??GCCC?ACCCTGGAATCAGATTAACT   [2057]
+Coleochaet_nit    TTT?TTTTCTTTTT?GACA?GTCG??AGC?GCCCTGGAATTGATT?C?CG   [2019]
+Fissidens_taxi    TCTCTTTTCT?TTT?AAC?GGCCT?GCCT???CCTGGAATCGGATTACCC   [2019]
+Plagiomnium_cu    TCTCT?TTCT?TTT??AC?GGCCC?GACG?ACCCTGGAATCGGTTCACCC   [2010]
+Micromonas_pus    TCTCTTTTCTTTTT?A?CA?GCCT??CGC?GCCCTGGAATCGGTTT?GCC   [2035]
+Mantoniel_squa    TCTCTTTTCTTTTT??ACA?GCCT?T?GC?GCCCTGGAATCGGTTT?GCC   [2010]
+Nephroselm_pyr    TCTCTTTTCTTTTT?AACA?GCCC?GCCC?ACCCTGGAATCGGATTATCC   [2029]
+Pedinomonas_mi    T?TCTTTTCTTTTT??ACA?GCCT?GTA??GCCCTGGAATCGGATT?CCC   [2013]
+Tetraselm_cart    TCTCTTTTCTTTTT?AACAGGCTC?GAAG?GCCCTGGAATCTAATCATTA   [2032]
+Enteromorpha      TCTC?TTTCTTTT??AACA?GCCC?CA?G?ACCCTGGAATCGAGTCATTC   [2032]
+Ulva_fasci        TCTCTTTTCTTTTC?AACCAGGGG??A?G?A?CCTGGAATCGAGTC?TTC   [2017]
+Ulothrix_zo       TCTCTTTTCTTTTT?AA?A?GCC???A?G?ACCC?GG?ATCG?GTC?TTC   [1953]
+Cympolia_barba    ??????????????????????????????????????????????????   [2032]
+Batophora_oers    ??????????????????????????????????????????????????   [1979]
+Codium_decort     TCTCTTTTCTTGTT?GACGAGCT??AAGG?ACCCTGGAA?C???TC??CG   [2012]
+Cladophoro        TGTCTTTTCTTTTT?AACA?GCTC?GCA???CCCTGGAATCAGATTATCT   [2011]
+Blastophysa_rh    TCTCTTTTCTTCTT?GA?GA?CCC?GAAG??CCCTGGAATCGGATCATCC   [1999]
+Trentepohlia      TATCTTTTCTACTT?AACGA?CCC?GAAG?GCCCT?GAATCGGATCATCC   [2006]
+Cephaleuro_par    T?TCTTTTCTGCTT?AACGAGCCC?GAAG?GC?CTGGAATCGGATCATCC   [2020]
+Characium_vac     ??????????????????????????????????????????????????   [1988]
+Dunaliella_par    ??????????????????????????????????????????????????   [1987]
+Chlamyd_reinha    ??????????????????????????????????????????????????   [1990]
+Volvox_carteri    ??????????????????????????????????????????????????   [2032]
+Chlorococc_min    ??????????????????????????????????????????????????   [1986]
+Draparn_plum      ??????????????????????????????????????????????????   [2019]
+Uronema_belk      TCTCTTTTCTTTTT?AAC?AGCT??GAAG?GCCCTGGAATCGAATCATTC   [1971]
+Chlamydom_moew    ????????????????CACCGCTC?GAAA?GCCCTGGAATCG?AT?ATTC   [2032]
+Stephanos_pl      TCTCTTTTCT?TTT?AAC?AGC?CGGAAG?GCCCTGGAATCGAATC?TTC   [2032]
+Carteria_rad      TCTCTTTTCTTTTTCAAC?A?C?C?GAAG?GCCCTGGAATCGAAT??TTC   [2043]
+Gonium_pecto      TCTCTTTTCT?TTT?AAC?A?CCC?GAAG?GC?CTGGAATCGAAT??TTC   [2025]
+Chlorella_kess    ??????????????????????????????????????????????????   [2020]
+Chlorella_vulg    ??????????????????????????????????????????????????   [2023]
+Protothec_wic     ??????????????????????????????????????????????????   [2018]
+Chlorella_prot    ??????????????????????????????????????????????????   [2024]
+Chlorella_min     ??????????????????????????????????????????????????   [2021]
+Neochloris_aqu    ??????????????????????????????????????????????????   [2020]
+Neochloris_vig    ??????????????????????????????????????????????????   [2011]
+Pediastrum_dup    ??????????????????????????????????????????????????   [2022]
+Scenedesm_obl     ??????????????????????????????????????????????????   [2018]
+Characium_hin     ??????????????????????????????????????????????????   [2018]
+Chlorella_fus     ??????????????????????????????????????????????????   [2019]
+Ankistrodesmus    ??????????????????????????????????????????????????   [2016]
+Pseudotreb_gig    TCTCTTTTCT?TTT??AC?AGCT??GAAG?GCCCTGGAATCGGCT?ATCC   [2019]
+Pleurastr_terr    TCTCTTTTCT?TTT??AC?AGC?C?GAAG?GCCCTGGAATCGAATC??TC   [2028]
+Characium_per     ??????????????????????????????????????????????????   [2021]
+Parietochl_pse    ??????????????????????????????????????????????????   [2025]
+Friedmannia_is    TCTCTTTTCTTCTT?AACAA?CCC?GAAG?G?CCTGGAATCGGCTCATCC   [2024]
+
+[                          2110      2120      2130      2140      2150]
+[                          .         .         .         .         .]
+
+Glycine_max       GGAG??GTAGGGTCCAGCGGCTGGA?AGAGCACCGCACGTCGCGTGGTGT   [2045]
+Oryza_sativa      GGAG??GTAGGGTCCAGCGGC?GGAGAGA???GCACACGTCGCGCGGTGT   [2105]
+Zamia_pumila      ??????????????????????????????????????????????????   [2105]
+Psilotum_n        ??????????????????????????????????????????????????   [2088]
+Equisetum_ar      GGAG??ATAGGGTCCAGCGGTTGGT?AAAGCA?CGCAGGTC?TGCGGTGT   [2094]
+Atrichum_angus    GGAG??ATAGGGTCCAGCGGCTGGT?AAAGCACCGCAC?TCTTGCGG?GT   [2066]
+Notothylas_bre    GGAG??ATAGGGTCCAGCGGCTGGT?AAAGCACCACACG?CTTGCGGTGT   [2061]
+Phaeoceros_lae    GGA???ATAGGGTCCAGCGGCTGGT?AAAGCACCACACGTCTTGCGGTGT   [2069]
+Porella_pi        ??????????????????????????????????????????????????   [2089]
+Conocephal_con    GGAG??ATAGGGCCCAGCGGTCGGT?AAAGCGTCGCAAGTCTTGCGG?GT   [2046]
+Asterella_tene    GGAG??ATAGGGCCCAGCGGTCGGC?AAAGCGTCGCA?GTCTTGCGG?GT   [2081]
+Riccia            ?GAG??ATAGGGCCCA?CGGTCGGC?AAAGCGTCGCA??TCT??CGGCGT   [2069]
+Klebsormid_fla    GGAG??ATAGGGTCCAGCGACTGGG?AAAGCATCGCACGTCTCGCGGTGT   [2107]
+Coleochaet_nit    GCG???GAGGGTGC?GAAAGCTGGC?AGAGCGCGCACTGGT???CGGTGT   [2069]
+Fissidens_taxi    GGAG??ATAGGGTCCAGCGGCCGGT?AAAG???CGCACGTCTTGCGG?GT   [2069]
+Plagiomnium_cu    GGAG??ATAGGGTCCAGCGGCCGGT?AAAGCACCGCACGTCTCGCGGTGT   [2060]
+Micromonas_pus    GGAG??ATA?GGCCCAACGGCTGGT?AAAGCACTGCACGT?TCGCAGTGT   [2085]
+Mantoniel_squa    GGAG??ATA?GGCCCAACGGCTGGT?AAAGCACTGCA?GT??CGCAGTGT   [2060]
+Nephroselm_pyr    GGAG??ATA?GGCCCAGCGGCTGGT?AAAG?C?CACT?CTTGCGG?GT??   [2079]
+Pedinomonas_mi    GGA???ATAGGGTGATGTGGCTGGT?AAAGCACCTCACGTCTTGAGGTGT   [2063]
+Tetraselm_cart    GGAG??ATAGGGCTCAGAAGTCGGT?AAAGCACCGCACGTC?CGCGG?GT   [2082]
+Enteromorpha      GGAG??ATAGGGTTCAGTGCCTGGT?AAAGCACA??TC?T?T???GGTGT   [2082]
+Ulva_fasci        GGAG??ATAGGGTTC?GTGCCTGGT??AAGCACCACACGTCTCGTGGTGT   [2067]
+Ulothrix_zo       GGAG??ATAGGGTTCAGTGGCTGGT??AAGCATCGCACGTCT?GCGGT?T   [2003]
+Cympolia_barba    ??????????????????????????????????????????????????   [2082]
+Batophora_oers    ??????????????????????????????????????????????????   [2029]
+Codium_decort     GGA???ATAGGGTTTGACGGCAGGT??T?GCGCCGCCCC??G?TGCGC?G   [2062]
+Cladophoro        G?AG??AT?AGGGCTCAGAGCTGGT?AAAGCGTTGCAA??CTCGCAACGT   [2061]
+Blastophysa_rh    GGAG??ATAGGCCCAT?TGGTCGGT?AAAGCACCGCACGT?T?GCGGTGT   [2049]
+Trentepohlia      GGAG??ATAGGGCTCAGAGGTCGGT?ACAAGCGCCGCACATCACGTGCGT   [2056]
+Cephaleuro_par    GGAG??ATAGGGCTCAGAGGTGGGT??AGAGCGCCGCACATCACGTGC?T   [2070]
+Characium_vac     ??????????????????????????????????????????????????   [2038]
+Dunaliella_par    ??????????????????????????????????????????????????   [2037]
+Chlamyd_reinha    ??????????????????????????????????????????????????   [2040]
+Volvox_carteri    ??????????????????????????????????????????????????   [2082]
+Chlorococc_min    ??????????????????????????????????????????????????   [2036]
+Draparn_plum      ??????????????????????????????????????????????????   [2069]
+Uronema_belk      GGA???ATAGGGCTCAGCA?CTGGT?AAAGCACCGCACGTCTCGCGGTGT   [2021]
+Chlamydom_moew    GGAG??ATCGGGCTT?GCCGCTGGG?AAAGCCTCT?AGTTTTGA?GGTGT   [2082]
+Stephanos_pl      GGAG?AGTAGGGCCCAGCAGCTGGT?AAAGCACCGCACTTCTCGTGGTGT   [2082]
+Carteria_rad      GGAG??ATAGGGCTCAGAGGCTGGT??AAGCACCGCACTT?TCGCGGTGT   [2093]
+Gonium_pecto      GGAG??ATAGGGCTCAGAGGTTGGT?AAAGCACCGCAGTTCTCGCGGTGT   [2075]
+Chlorella_kess    ??????????????????????????????????????????????????   [2070]
+Chlorella_vulg    ??????????????????????????????????????????????????   [2073]
+Protothec_wic     ??????????????????????????????????????????????????   [2068]
+Chlorella_prot    ??????????????????????????????????????????????????   [2074]
+Chlorella_min     ??????????????????????????????????????????????????   [2071]
+Neochloris_aqu    ??????????????????????????????????????????????????   [2070]
+Neochloris_vig    ??????????????????????????????????????????????????   [2061]
+Pediastrum_dup    ??????????????????????????????????????????????????   [2072]
+Scenedesm_obl     ??????????????????????????????????????????????????   [2068]
+Characium_hin     ??????????????????????????????????????????????????   [2068]
+Chlorella_fus     ??????????????????????????????????????????????????   [2069]
+Ankistrodesmus    ??????????????????????????????????????????????????   [2066]
+Pseudotreb_gig    GGAG??A?AGGGCCCA?AAGCTGGT??AAGCACTGCACTTCTCGGCAGTG   [2069]
+Pleurastr_terr    GGAG??A?AGGGCTCAGAAGCTGGT?AAAG??C?GCA?GTCT?GCGGT?G   [2078]
+Characium_per     ??????????????????????????????????????????????????   [2071]
+Parietochl_pse    ??????????????????????????????????????????????????   [2075]
+Friedmannia_is    GGAG??ATAGGGCTC?GAGGTT?GT?AAAGCACTGCACT????GCAGT?T   [2074]
+
+[                          2160      2170      2180      2190      2200]
+[                          .         .         .         .         .]
+
+Glycine_max       CCGGTGCCCC?C???GGC??GGCCCTTGA231011000110000001027
+Oryza_sativa      CCGGTGCCCC?C???GGC??GGCCCTTGA231011000110000001027
+Zamia_pumila      ?????????????????????????????231011000110000001027
+Psilotum_n        ?????????????????????????????231011000110000001027
+Equisetum_ar      CCGGTGCCCC?C???GGC??GGCCCTTGA231011000110000001027
+Atrichum_angus    CCGGGGCCC??C???GGC??GGCCCGTGA231011000110000001027
+Notothylas_bre    CCGGTG?CCC?????GGC??GGCCCGTG?231011000110000001027
+Phaeoceros_lae    CCGGTGGCCC?CT??GGC??GGCCCGTGA231011000110000001027
+Porella_pi        ?????????????????????????????231011000110000001027
+Conocephal_con    CCGGTGCGCC?CCC?GAC??GGTCC??GA231011000110000001027
+Asterella_tene    CCGGTG?GCC?CCC?GAC??GGCCCC?GA231011000110000001027
+Riccia            CCGGTGCTCATCCCCTAAAA?CCAG?AGA231011000110000001027
+Klebsormid_fla    CTGGTGCGCC?CT??GAC??GGCCCTTGA00001?000101001000001
+Coleochaet_nit    C?GGTG?AC??CCG???T??T?CCCTAGA001011000111001001021
+Fissidens_taxi    CAGGTGCCCT?C???GGC??GGCCCT?GA231011000110000001027
+Plagiomnium_cu    CAGGTGGCCC?TC??GGC??GGCCCGTGA231011000110000001027
+Micromonas_pus    CCGGTGC?CT?CC??GG???GGCCC?TGA1?000000000000101?0?0
+Mantoniel_squa    CCGGTGCACT?CCC?GAC??GGCCC???A1?000000000000101?0?0
+Nephroselm_pyr    CTGGTGCGCC?CTC?GAC??GGCCC??G?1?000000000000101?0?0
+Pedinomonas_mi    ?C?GTGC?TC?TC???AC???C??CTTGA1?000000000000101?0?0
+Tetraselm_cart    CCGGAGCGCC?ATT?GAC??GATCCTTGA1?000000000000101?0?0
+Enteromorpha      CCGGCGCGCA?GTC?GAGTCGGTCCGTGA121011001000001000116
+Ulva_fasci        CCGGCGCGCC?A?C?GA???GGTCCGTGA121011001000001000116
+Ulothrix_zo       CTGGAGCGCT?ACC?A?C???GTCCTTGA031011000001001000106
+Cympolia_barba    ?????????????????????????????111111110003000001117
+Batophora_oers    ?????????????????????????????111111000?02001001107
+Codium_decort     TCTGGCCC?C???C??????GGCGGTCC?111011110003000001117
+Cladophoro        CCCGAGCGCC?TC??CAC??GGCCCTTAA12101110000200100110?
+Blastophysa_rh    ???ACGTTGC??????A????CCCCTTAA12101110010200100110?
+Trentepohlia      CCGGTGCGCC?ATC?GAC??GGTCCT???221011000102001001101
+Cephaleuro_par    CGG?TGCGCC?ATC??AC????TCC???A221011000102001001101
+Characium_vac     ?????????????????????????????00100000000001100010?
+Dunaliella_par    ?????????????????????????????100000000000001010000
+Chlamyd_reinha    ?????????????????????????????000000000000001010100
+Volvox_carteri    ?????????????????????????????00002000000000011112?
+Chlorococc_min    ?????????????????????????????00000000000000100010?
+Draparn_plum      ?????????????????????????????001011000102101000106
+Uronema_belk      ?C?GCGCGC??GAT?GA???GGTCC?TGA001011000101101000106
+Chlamydom_moew    CCCGTGCGCC?GAT??AC??GATCCTT?A000000000000001010100
+Stephanos_pl      CCGGCGCGCT?AGT?CAC??GGTCCGTGA000020000000000110102
+Carteria_rad      CTGGCGCGTC?GAC?GAC??GGTCCTT?A000000000000001010100
+Gonium_pecto      CCGGCGCGC??GTT?GA????GTCC??GA000020000000000110100
+Chlorella_kess    ?????????????????????????????00000000000000010?1??
+Chlorella_vulg    ?????????????????????????????00000000000000010?1?0
+Protothec_wic     ?????????????????????????????00000000000000010?1??
+Chlorella_prot    ?????????????????????????????00000000000000010?1??
+Chlorella_min     ?????????????????????????????00000000000000010?1??
+Neochloris_aqu    ?????????????????????????????00000010000000100010?
+Neochloris_vig    ?????????????????????????????00000010000000100010?
+Pediastrum_dup    ?????????????????????????????00002100000000100010?
+Scenedesm_obl     ?????????????????????????????00002100000000010010?
+Characium_hin     ?????????????????????????????00100010000001100010?
+Chlorella_fus     ?????????????????????????????00000000000000010?1?0
+Ankistrodesmus    ?????????????????????????????00000000000001010?1??
+Pseudotreb_gig    TCCGGAGCCC?ACC?GAC??GGCCC?TGA00000000000000200?0??
+Pleurastr_terr    TC?GCGCGC??GAT??AC??GGTCC?TGA00001100000100200?0??
+Characium_per     ?????????????????????????????00100000000001100010?
+Parietochl_pse    ?????????????????????????????00000000000000100010?
+Friedmannia_is    CCGGAGCGCC?ATT?GAG?CGGCCCTTGA{02}000000000000020000??
+
+[                          2210      2220      2230      2240      2250]
+[                          .         .         .         .         .]
+
+Glycine_max       0??0????0??010000110????0??10100??300000?000??0000
+Oryza_sativa      0??0????0??010000110????0??10100??300000?000??0000
+Zamia_pumila      0??0????0??010000110????0??10100?0300000?000000000
+Psilotum_n        0??0????0??010000110????0??10100??300000?000??0000
+Equisetum_ar      0??0????0??010000110????0??10100?0300000?000000000
+Atrichum_angus    0??0?0?10??010000110????0??101000?300000?000000000
+Notothylas_bre    1??000?10?1010000110????0??1010000300000?000000000
+Phaeoceros_lae    1??000?10?1010000110????0??1010000300000?000000000
+Porella_pi        0??000?10?1010000110????0??1010000300000?000000000
+Conocephal_con    0??000?10?1010000110????0??1010000300000?000000000
+Asterella_tene    0??000?10?1010000110????0??1010000300000?000000000
+Riccia            0??00??10?1010000110????0??1010000300000?000000000
+Klebsormid_fla    10000001001010000010????0??1110000?00?000000000000
+Coleochaet_nit    10000001001010000110????0??1110000?00000?001000000
+Fissidens_taxi    0??000?10?1010000110????0??1010000300000?000000000
+Plagiomnium_cu    0??000?10?1010000110????0??1010000300000?000000000
+Micromonas_pus    1021?000???01100000?????0???100000300000?000110000
+Mantoniel_squa    1021000000101100000?????0?1?100001300000?001110000
+Nephroselm_pyr    100101001?101100000?????0???100000210000?001101000
+Pedinomonas_mi    1021?0?01??01100000?????0???100001200000?000001000
+Tetraselm_cart    10112110100001111000????0???1000010100000000100000
+Enteromorpha      10101100101011000000????0?0011010??100000110101010
+Ulva_fasci        10101100101011000000??1?0?0011010??100000110101010
+Ulothrix_zo       10101100101011000000?0??0?00110101010000?011101010
+Cympolia_barba    10?0?10?1??011000000???????010000?310100?000???1?0
+Batophora_oers    1??0110?101011000000???????0100001310100?0?0001110
+Codium_decort     10401100101011000000????1?1010000?310000?000???0?0
+Cladophoro        101011001??011000000????0?0011000??10010?0?0???0?0
+Blastophysa_rh    10101100101011000000????1?1011000?310?10?00000?01?
+Trentepohlia      0?101100101011000?0?????0??0110000?11001?0???000?1
+Cephaleuro_par    0?101100101011000?0?????0??0110000?11001?0??0000?1
+Characium_vac     1100?10011001110100?????0??010001??10000?00010?010
+Dunaliella_par    1101?1?01100?????00?????0???10000?310000?000???010
+Chlamyd_reinha    11000100110011101001??1?0?011000110100001000101010
+Volvox_carteri    1?0???1011001110?00?????0???10101??10000?000???010
+Chlorococc_min    1100?10011001110100?????0??010001??10000?000100010
+Draparn_plum      10101100110011101010?1??0??11101010100001000101010
+Uronema_belk      10101100110011101010?1??0??1110101010000?000101010
+Chlamydom_moew    1?0001?01100?????00?????0??1100111010000?000???010
+Stephanos_pl      1101011011001110100?????0??1101111110000?000??1010
+Carteria_rad      111001001100?????00?????0??1100111010000?00010?010
+Gonium_pecto      110?211011001110100?????0??1101011010000?000101010
+Chlorella_kess    1??0???????????0100?0?1000??1000??3?000????0???0?0
+Chlorella_vulg    1??0???????????0100?1?0000??1000??3?000?1??0???0?0
+Protothec_wic     1??0???????????0100?????0???1000??3?000????0???0?0
+Chlorella_prot    1??0???????????0100?1?0000??1000??3?000????0???0?0
+Chlorella_min     1??0???????????0100?0?0000??1000??3?000????0???0?0
+Neochloris_aqu    1000?10012011110100?????0??010000??10000?000101010
+Neochloris_vig    1000??0012011110100?????0??010000??10000?00010?010
+Pediastrum_dup    1?001100120111101001????0??1100001?10000?010101010
+Scenedesm_obl     1?40???0????1110100???1101??10000???00001000???0?0
+Characium_hin     1000?100120?1110100?????0??010000??10000?00010?010
+Chlorella_fus     1??0???????????0100?1?1101??1000??3?000????0???0?0
+Ankistrodesmus    1??0???????????0100?????0???1000??3?000????0???0?0
+Pseudotreb_gig    1000?10010?001111000????0???10000?310000?000100010
+Pleurastr_terr    1000?10010?001111000????0???10000?310000?000100010
+Characium_per     1100?1001010?11?000?????0??010000??10000?00010?010
+Parietochl_pse    1100?1001010?11?000?????0??010000??10000?200100010
+Friedmannia_is    10001100101001111000????0???10000?310000?000100010
+
+[                          2260      2270      2280      ]
+[                          .         .         .         ]
+
+Glycine_max       ?1111111??11?00011001111000011111111111
+Oryza_sativa      ?1111111??11?00011001111000011111111111
+Zamia_pumila      111111111111?00011001111000011111111100
+Psilotum_n        111111111111?00011001111000011111000000
+Equisetum_ar      111111111111?00011001111000011110000000
+Atrichum_angus    111110111111?00011001111111000000000000
+Notothylas_bre    111110111111000011110000100000000000000
+Phaeoceros_lae    111110111111000011110000100000000000000
+Porella_pi        111111111111111100000000000000000000000
+Conocephal_con    111111111111111100000000000000000000000
+Asterella_tene    111111111111111100000000000000000000000
+Riccia            111111111111111100000000000000000000000
+Klebsormid_fla    ?100000000000000?0000000000000000000000
+Coleochaet_nit    1111001100000000?0000000000000000000000
+Fissidens_taxi    111111111111000011001111111100000000000
+Plagiomnium_cu    111111111111000011001111111100000000000
+Micromonas_pus    ?00000000000000000000000000000000000000
+Mantoniel_squa    000000000000000000000000000000000000000
+Nephroselm_pyr    000000000000000000000000000000000000000
+Pedinomonas_mi    000000000000000000000000000000000000000
+Tetraselm_cart    000000000000000000000000000000000000000
+Enteromorpha      0?0000000000000000000000000000000000000
+Ulva_fasci        0?0000000000000000000000000000000000000
+Ulothrix_zo       000000000000000000000000000000000000000
+Cympolia_barba    000000000000000000000000000000000000000
+Batophora_oers    000000000000000000000000000000000000000
+Codium_decort     000000000000000000000000000000000000000
+Cladophoro        000000000000000000000000000000000000000
+Blastophysa_rh    000000000000000000000000000000000000000
+Trentepohlia      1?0010000000000000000000000000000000000
+Cephaleuro_par    1?0010000000000000000000000000000000000
+Characium_vac     0?0000000000000000000000000000000000000
+Dunaliella_par    000000000000000000000000000000000000000
+Chlamyd_reinha    000000000000000000000000000000000000000
+Volvox_carteri    0?0000000000000000000000000000000000000
+Chlorococc_min    0?0000000000000000000000000000000000000
+Draparn_plum      0?0000000000000000000000000000000000000
+Uronema_belk      0?0000000000000000000000000000000000000
+Chlamydom_moew    0?0000000000000000000000000000000000000
+Stephanos_pl      0?0000000000000000000000000000000000000
+Carteria_rad      0?0000000000000000000000000000000000000
+Gonium_pecto      0?0000000000000000000000000000000000000
+Chlorella_kess    ??0000000000000000000000000000000000000
+Chlorella_vulg    ?00000000000000000000000000000000000000
+Protothec_wic     ??0000000000000000000000000000000000000
+Chlorella_prot    ??0000000000000000000000000000000000000
+Chlorella_min     ??0000000000000000000000000000000000000
+Neochloris_aqu    0?0000000000000000000000000000000000000
+Neochloris_vig    0?0000000000000000000000000000000000000
+Pediastrum_dup    0?0000000000000000000000000000000000000
+Scenedesm_obl     000000000000000000000000000000000000000
+Characium_hin     0?0000000000000000000000000000000000000
+Chlorella_fus     ??0000000000000000000000000000000000000
+Ankistrodesmus    ??0000000000000000000000000000000000000
+Pseudotreb_gig    0?0000000000000000000000000000000000000
+Pleurastr_terr    0?0000000000000000000000000000000000000
+Characium_per     0?0000000000000000000000000000000000000
+Parietochl_pse    0?0000000000000000000000000000000000000
+Friedmannia_is    000000000000000000000000000000000000000
+;
+END;
+
+
+BEGIN CODONS;
+GENCODE UNIVNUC
+;
+END;
+
+BEGIN ASSUMPTIONS;
+	OPTIONS  DEFTYPE=unord PolyTcount=MINSTEPS ;
+
+	EXSET  gaps+unalignsites  =  50-55 110-122 171-176 214-220 228-232 267-280 482-489 657-663 676-690 699-713 729-731 737-743 782-785 1362-1391 1416-1429 1691-1695 1709-1755;
+	EXSET  LSU  =  50-55 110-122 171-176 214-220 228-232 267-280 482-489 657-663 676-690 699-713 729-731 737-743 782-785 1362-1391 1416-1429 1691-1695 1709-1755 1834-2179;
+	EXSET  SSU  =  1-1833;
+EXSET MOLECULES = 1-2179;
+EXSET MORPHOLOGY = 2180-2289;
+
+
+END; 
+
+
+
+BEGIN MACCLADE;
+v 3.0
+-1471374107
+1000&/0
+0
+0
+END;


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPCombined.nex
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPMolecular.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPMolecular.nex	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPMolecular.nex	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,104 @@
+#NEXUS 
+[MacClade 3.01 registered to Equator, UCMP]
+
+BEGIN DATA;
+DIMENSIONS  NTAX=61 NCHAR=2179;
+FORMAT DATATYPE=DNA MISSING=? GAP=- ;
+OPTIONS  MSTAXA=UNCERTAIN ;
+
+MATRIX
+[                           10        20        30        40        50        60        70        80        90        100       110       120       130       140       150       160       170       180       190       200       210       220       230       240       250       260       270       280       290       300       310       320       330       340       350       360       370       380       390       400       410       420       430       440       450       460       470       480       490       500       510       520       530       540       550       560       570       580       590       600       610       620       630       640       650       660       670       680       690       700       710       720       730       740       750       760       770       780       790       800       810       820       830       840       850       860       870       880       890       900       910       920       930       940       950       960       970       980       990       1000      1010      1020      1030      1040      1050      1060      1070      1080      1090      1100      1110      1120      1130      1140      1150      1160      1170      1180      1190      1200      1210      1220      1230      1240      1250      1260      1270      1280      1290      1300      1310      1320      1330      1340      1350      1360      1370      1380      1390      1400      1410      1420      1430      1440      1450      1460      1470      1480      1490      1500      1510      1520      1530      1540      1550      1560      1570      1580      1590      1600      1610      1620      1630      1640      1650      1660      1670      1680      1690      1700      1710      1720      1730      1740      1750      1760      1770      1780      1790      1800      1810      1820      1830      1840      1850      1860      1870      1880      1890      1900      1910      1920      1930      1940      1950      1960      1970      1980      1990      2000      2010      2020      2030      2040      2050      2060      2070      2080      2090      2100      2110      2120      2130      2140      2150      2160      2170      ]
+[                           .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         ]
+
+Emilian_huxleyi    TCATATGCT-GTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAGCGACT--A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATGGTTTATTTGATGGTACCTTGCTACTT---GGATAACCGTAGTAA-TTCTAGAGCTAATACATGCAGGAGTTCCCGACTCAC--GG-AGGGATGTATTTATTAGATAAGAAACCAAACCGG---TCT-CCGGTTGC-GTGCTGAGTCATAATAACTGCTCGAATCGCACGGCTC-TACGCCGGCGATGGTTCATTCAAATTTCTGCCCTATCAGCTTTCGATGGTAGGATAGAGGCCTACCATGGCGTTAACGGGTAACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAATGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGTAAATTGCCCGAATCCTGACACAGGGAGGTAGTGACAAGAAATAACAATACAGGGCTATTT-TAGTCTTGTAATTGGAATGAGTACAATTTACATCTCTTCACGA-GGATCAATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTAAAGTTGTTGCAGTTAAAACGCTCGTAGTCGGATTTCGGGGCGGGCCGACC-GGTCTGCCGAT-GGGTATGCACTGGCCGGCGCGTCCTTCCACCCGGAGACCGCG------CCTACTCTTAACTGAGCGGGCGCGGGAGAC---GGGTCTTTTACTTTGAAAAAATCAGAGTGTTTCAAGCAGGCAGTCGCTCTTGCATGGATTAGCATGGGATAATGAAATAGGACTCTGGTGCTATTTTGTTGGTTTCGAACACCGGA-GTAATGATTAACAGGGACAGTCAGGGGCACTCGTATTCCGCCGAGAGAGGTGAAATTCTCAGACCAGCGGAAGACGAACCACTGCGAAAGCATTTGCCAGGGATGTTTTCACTGATCAAGAACGAAAGTTAGGGGATCGAAGACGATCAGATACCG-TCGTAGTCTTAACCATAAACCATGCCGA-CTAGGGATTGGAGGATGTTCCATTTGTGACTCCTTCAGCACCTTTC-GGGAAACTAAAGTCTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGAGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACATTGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCGATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCGCAGCCTGCTAAATAGCGACGCGAACCCTCCGTTCGCTGG------AGCTTCTTAGAGGGACAACTTGTCTTCAACAAGT----GGAAGTTCGCGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCACTCAACGAGTCTATCACCTTGACCGAGAGGTCCGGGTAATCTTTTGAAATTGCATCGTGATGGGGATAGATTATTGCAACTATTAATCTTCAACGAGGAATTCCTAGTAAGCGTGTGTCATCAGCGCACGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGATCCGGTGAGGCCCCCGGACTCGGGCGCCGCAGCTGGTTCTCCAGCCGCGACGCCGGGAAGCTGTCC-------GAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAGGTGAACCTGCAGAAGGATCAAGC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2122]
+Anemonia_sulca     TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAGC-ACTT--GTACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATCGTTTATTTGATTGTAC--GTTTACTACTTGGATAACCGTGGTAA-TTCTAGAGCTAATACATGCGAAGAGTCCCGACTTC--TGGAAGGGATGTATTTATTAGATTCAAAACCAATGCGGG-TTCTGCCCGGTGCTTTGGTGATTCATAGTAACTGATCGAATCGCATGGCCT-TGCGCTGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTGTCGATGGTAAGGTGTTGGCTTACCATGGTTACAACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACTCAGGGAGGTAGTGACAAGAACTAACAATACAGGGCTTTTGTAAGTCTTGTAATTGGAATGAGTACAACTTAAATCCTTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTAAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGACTTCGGGGTGGCACGGCC-GGTCCGCCGCA-AGTGTGTCACTGGCCGGGCCGCTCTTCTTCGCAAAGACCGCGTGT------GCTCTTGACTGAGTGTGCGCGGGAGTT---GCGACGTTTACTTTGAAAAAATTAGAGTGTTCAAAGCAGGC--CAGCGCTTGAATACATAAGCATGGAATAATGGAATAGGACTTGGGTTCTATTTTGTTGGTTTCTGGAACCTGAAGTAATGATTAAGAGGGACAGTTGGGGGCATTCGTATTC-GTTGTCAGAGGTGAAATTCTTGGATTTACGAAAGACGAACTACTGCGAAAGCATTTGCCAAGAATGTTTTCATTAATCAAGAACGAAAGTTAGAGGCTCGAAGACGATCAGATACCG-TCCTAGTTATAACCATAAACGATGCCGA-CTAGGGATCAGAGAGTGTT-ATTGGATGACCTCTTTGGCACCTTAG-GGGAAACCAAAGTTTTTGGGTTTCGGGGGGAGTATGGTTGCAAAGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGAGTGGAGCCTGCG-CTTAATTTGACTCAACACGGGGAAACTCACCAGGTCCAGACATAGGAAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTTAACCTGCTAAATAGTTACGCCCATCGCGATGGGCAACT------AACTTCTTAGAGGGACTGTTGGTGTTTAACCAAAGTCAGGAA------GGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGACGATGTCAACGAGTCTCT--CCTTGGCCGAAAGGTCTGGGTAATCTTCTCAAACATCGTCGTGCTGGGGATAGATCATTGCAATTTTTGATCTTGAACGAGGAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTACTACCGATTGAATGGTTTAGTGAGGACTCCTGATTGGCGCCGCGCCCCGGCCACGGAGCAGCGGACTGCC------GAGAAGTTGTTCAAACTTGATCATTTAGAGGAAGTAAAAGTCGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2122]
+Glycine_max        TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTGTAAGTATGAACTAATTCA-GACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTGTTTGATGGTATC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCAACAAACCCCGACTTC--TGGAAGGGATGCATTTATTAGATAAAAGGTCAACACAGGC-TCTGCCTGTGCT-TTGATGATTCATGATAACTCGTCGGATCGCACGGCCTTTGTGCCGGCGACGCATCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGTGGCCTACCATGGTGGTGACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGGGAGGTAGTGACAATAAATAACAATACCGGGCTC-ATTGAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGATGGATCCATTGAAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGACCTTGGGTTGGGTCGATC-GGTCCGCC-TCC--GTGTGCACCGGTC-GGCT--GTCCCTTCTGCCGGCGATGCG---CTCCTGTCCTTAACTGGCCGGG-TCGTGCC-TCC-GGTGCTGTTACTTTGAAGAAATTAGAGTGCTCAAAGCAAGC-CTACGCTCTGTATACATTAGCATGGGATAACACCACAGGATTCTGATCCTATTGTGTTGGCCTTCGGGATCGGA-GTAATGATTAACAGGGACAGTCGGGGGCATTCGTATTTCATAGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACAACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CCAGGGATCAGCGGATGTTGCTTTTAGGACTCCGCTGGCACCTTAT-GAGAAATCGAAGTCTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGAGTGGAGCCTGCGGCT-AATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACATAGTAAGG-TTGACAGACTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCCTTCTTAGTTGGTGGAGCGATTTGTCTGGTT-AATTCCGTTAACCAACGAGACCTCAGCCTGCTAAATAGCTAT--------------------------AGCTTCTTAGAGGGACTATGGCCGCTTAGGCCAC----GGAAGTTTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGTATTCAACGAGTCTATAGCCTTGGCCGACAGGTCCGGGTAATCTTTG-AAATTTCATCGTGATGGGGATAGATCATTGCAATTGTTGGTCTTCAACGAGGAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTGTTCGG--ATTGCGGT-------------------------------GAGAAGTCCACTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG???????????????????????????????????GACCCTGAT?CTTCT?TGAAGGGTTC?GAGTGAGAGCA?TACCTGTCGGGACCCGAAAGATGGTGAACT?TGCCTGAGCGGGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCCC?GCAGCGATACTGACGTGCAAATCG?TTCGTCTGACTTGGGTATAGGGGCGAAAGACTAATCGAACCGTGCG?GG?GGCCCCGGAAAGAGTTATCTTTTCTGTTT?AACA?GCCT?GCCC?ACCCTGGAAA?GCCTCAGCCGGAG??GTAGGGTCCAGCGGCTGGA?AGAGCACCGCACGTCGCGTGGTGTCCGGTGCCCC?C???GGC??GGCCCTTGA   [2074]
+Oryza_sativa       TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTGCAAGTATGAACTAATTC-GAACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTGTTTGATGGTACG-TGCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCAACAAACCCCGACTTCC-GGG-AGGGGCGCATTTATTAGATAAAAGGCTGACGCGGGC-TCCGCCCGCGAT-CCGATGATTCATGATAACTCGACGGATCGCACGGCCCTCGTGCCGGCGACGCATCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGGGGCCTACCATGGTGGTGACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGGGAGGTAGTGACAATAAATAACAATACCGGGCGCTTTAGTGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGACCTTGGGCGCGGCCGGGCCGGTCCGCC-TCACGGCAGGCACCGACCTGCT--CGACCCTTCTGCCGGCGATGCG---CTCCTGGCCTTAACTGGCCGGGTTCGTGCC-TCC-GGCGCCGTTACTTTGAAGAAATTAGAGTGCTCAAAGCAAGC-CATCGCTCTGGATACATTAGCATGGGATAACATCATAGGATTCCGGTCCTATTGTGTTGGCCTTCGGGATCGGA-GTAATGATTAATAGGGACAGTCGGGGGCATTCGTATTTCATAGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACAACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CCAGGGATCGGCGGATGTTGCTTATAGGACTCCGCCGGCACCTTAT-GAGAAATCAAAGTCTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGGGCCTGCGGCTTAATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACATAGCAAGGATTGACAGACTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGAGCGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGCTATGCGGAGCCATCCCTCCGCAGCT----AGCTTCTTAGAGGGACTATGGCCGTTTAGGCCAC----GGAAGTTTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG--CGCACGCGCGCTACACTGATGTATCCAACGAGTATATAGCCTGGTCCGACAGGCCCGGGTAATCTTGGGAAATTTCATCGTGATGGGGATAGATCATTGCAATTGTTGGTCTTCAACGAGGAATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTGTTCGG--ATCGCGGCGACGGGGGCGGTTCGCCGCCCCCGACGTCGCGAGAAGTCCATTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG???????????????????????GCACCGCTGGCCGACCCTGAT?CTTCTGTGAAGGGTTC?GAGTTGGAGCA?CGCCTGTCGGGACCCGAAAGATGGTGAACTATGCCTGAGCGGGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GAAGCGATACTGACGTGCAAATCG?TTCGTCTGACTTGGGTATAGGGGCGAAAGACTAATCGAACCATGCG?GG?GGCCTCGGG?AGAGTT?TCTTTTCTGCTT?AAC?GGCCC?GCCA?AC?CTGGAAACGGTTCAGCCGGAG??GTAGGGTCCAGCGGC?GGAGAGA???GCACACGTCGCGCGGTGTCCGGTGCCCC?C???GGC??GGCCCTTGA   [2134]
+Zamia_pumila       TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTGTCAGTATGAACTATTTT-GGACGGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTCTTTGATGGTACTCTGCTACAC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACCAAATCCCGACTTTT-TG-AAGGGACGCATCTATTAGATAAAAGGCCGATGCGGGC-TTTGCCCGGCGT-TTGGTGAATCATGATACCTTGATGGATTGCATGGCCCTCGAGCCGGCGACGCTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGCAGGATAGAGGCCTACCATGGTGGTGACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCCGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGGGAGGTAGTGACAATAAATAACAATACTGGGCTCATC-GAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATCTTGGGACGGCCCGGCC-GGTCCGCT-TTTTTGGGTGTGCACCGGCCGTTTCGTCCCTTTTGTTGGCGGCGCG---CACCTGGCCTTAACTGTCTGGG-TCGCGGT-TCC--ACGCTGTTACTTTGAAAAAATTAGAGTGCTCAAAGCAAGC-TTATGCTCTGAATACATTAGCATGGAATAACGGTATAGGATTCTGGTCCTATTGCGTTGGCCTTCGGGACCGGA-GTAATGATTAACAGGGACGGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACCACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CCAGGGATCGGCGGATGTTGCTCTAAGGACTCCGCCGGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGAGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACATAGCAAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGAGCGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCGGCCTGCTAACTAGCTACGCGGAGGGTTTCTTTCGTGGCC----AGCTTCTTAGAGGGACTATGGCCGTTTAGGCCAT----GGAAGTTTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGTATTCAACGAGTCTATAACCTGGGCCGGGAGGTCCGGGAAATCTGGCGAAATTTCATCGTGATGGGGATAGATCATTGCAATTATTGATCTTCAACGAGGAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGATCC---GGTGAAGTGTTCGG--ATCGTGCCGACGACGGCGGTTCGCTGGGCGCGACGTCGCGAGAAGTTCATTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2134]
+Psilotum_n         ???????????????????????????????????????????????????????????????????GCGAATGGCTCATTAAATCAGTTATAGTTTCTTTGATGGTACCTTGCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACCAACTCCCGACTTC--CGG-AGGGACGCATTTATTAGATAAAAGGCCGATGCGGGC-TT-GCCCGGTTATGC-GT-ATTCATGATAACTCTGCGAATCGCACGGCC????????????????????????????????????????????????????????????????????????TGGTGACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCC-GAC-CGGGGAGGTAGTGACAATAAATAA-AATACTGGGCTTTTCAAAGTCTGGTAATTGGAATGAGTACAATCTAAACCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAGAACGAAAGTTGGG--CTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGG--TC-GCGGATGTTACCTTGATGACTCCGCCGGCACCTTAT--AGAAATC-AAGTCTTTGGGTTCCGGGGGGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGATTGACAGATTGAGAGCTCTTTCTTGGTTCTATGGGTGGT---G-ATGGCCGTT---AGTTGGTGGAG-G-TTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACGCGAAGGATCCTCTTCGTGGCC----AACTT-TTAGAGGGACTATGGCCGCCTAGGCCAT----GGA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GTCTTCAAC-A-GAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATTGCGGCGAGCGGTCCGCCGGCACGTTGT---------GAGAAGTTCATTAAACCTTATCATTTAGAGGAA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2117]
+Equisetum_ar       ???????????????????????????????????????????????????????????????????GCGAATGGCTGATTAAATCAGTTATAGTTTCTTTGATGGTACCTTGCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACCAACTCCCGACTTC--TGG--GGGA-GCATTTATTAGATAAAAGGCCGATGCGGGC-TGTGCCCGGTAA----CGGATTC--GATAACTTCCCGGATCGCACGGCCT????ACGGGTGA????????????????????????????????????????????????????????????????????????CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCGGGCGCGCAAATTACCC-AATCC-GACACGGGGAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAGAACGAAAGTTGG---CTCGAAGAC-ATCA?ATACCG-TCCTAGTCTCAACCATAAACGA-GC?GA-CTAGGGATT--CGGATGTTACTTCAATGACTCTGCCGGCACCTTAT-GAGAAATCAAAGTCTTTGGGTTCC----GGA-T??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTAGTGCATGGCCGTTCTTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACGCGAAGACTTGTCTTCGTGGCC----AACTTCTTAGAGGGACTATGGCCGTCTAGGCCAT----GGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TCTTCAACTAGGAATTCCTAGTAAGC-CGAGTCATCAGCTCGCGTTGACTA--GTCCCTGCCCTTTGTACACACTGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATT-CGGCGACGCTGGCGGT-CGCCGGCGACGTTGT---GAGAAGTTCATTGAACCTTACCATTTAGAG?????????????????????????????????????????????????????GCACCATCGACCGACCGTGAT?CTTCTGTGAAAGGTTT?GAGTGAGAGCA?TACCTGCTGGGACCC?AAAGATGGTGAACTATGCCTGAGCAGGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGGTATAGGGGCGAAAGACTAATCGAACCATGCG?GG?GGCCCTGGGAAGAGTTCTCTTTTCTTTTT?AACA?ACTT?GCCC?ACCCTGAAATCGGATCAACCGGAG??ATAGGGTCCAGCGGTTGGT?AAAGCA?CGCAGGTC?TGCGGTGTCCGGTGCCCC?C???GGC??GGCCCTTGA   [2123]
+Atrichum_angus     ??????????????????????????????????????????????????????????????????????????????ATTAAATCAGTTATAGTTTCTTT-ATGGTACCTTGCTACTC---GGATAACCGTAGTA--TTCTA-AGCTAATACGTGCACAAACTCCCGACCTC--TGGAAGGG-CG-TTTTATTAGATAAAAGGCCGATGC-GGC-TT-GCCCGGTAT-TCGGTGACTCA-GATAACTCGTCGAATCGCACGGCCTTA?????????????????????????????????????????????????????????????????????????????????????AGAATT----TTCGATTCCGGA-AGGGAGCCTGAGAA-CGGCTACCA-CATCCA---AAGGCAG-?-??-?-?--ATT-CCC-AATCC-GAC--GGGGAGGTAGT-ACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAA--A??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTTCTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAG???GAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTTGCGGGTGTTAATTTGATGACCCCG-AAGCACCTTAT-GAGAAATC-AAGTATTTGGGTTCCGGGGGGAGTATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCTTTCTTGATTCTATGGGTGGT-GTGCATGGCCGTT-TT-GTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAAC-AACGAGACCTCAGCCTGCTAACTAGTTACACGAAGAATC-TCTTTGTGGCC----AACTT-TTAGAGGGACTATTGGCGTCT-GCCAAT----GGAA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ATAGATCATTGC-ATTATTGATCTTCAA--A-GAATTCC-AGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACC-CCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATCG--GG-TG-ATCGGGTT-G-GTTCGG?GACTTGT--GAGAA-TTCATTAAA--TTATCATTTAGAGGAA??????????????????????????????????????????????????GCAC?AT?GACCGACCGTGAT?CTTCTGTGAAAGGTTT?GAGTGTGAGC??T?CCTGCTGGGACCC??AAGATGGTGAACTATGCCTGAGC?AGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?G?AGC?ATACTGACGTGCAAATCG?TTCGTCAGACTTGGG?ATA????C?AAAGACT?ATCGAACCATGCG?AG?GGCCCCGGGAAGAGTTCTCTTTTCT?TTT?AACA?GCCT?GCCT??CCCTGGAATCGGATTACC?GGAG??ATAGGGTCCAGCGGCTGGT?AAAGCACCGCAC?TCTTGCGG?GTCCGGGGCCC??C???GGC??GGCCCGTGA   [2095]
+Notothylas_bre     ????????????????????????????????????????????????????????????????????????????????????????????????????????????CCTT-CTACTC---GGATAAC-G-AGTAA-TTCTA-AGCTAA-ACGTGCAACAACTCCCGACTC---TGGAAGG-AG--ATTTATTAGATAAAAG---GATG---GC-TT-GTCCCGTTT-A--CTGAATC-TGATAACTCCTCGAATCGCACGGCCCT???????????????????????????????????????????????????????????????????????????????????????????????GTTCGATTCCGGAGAGGGA--C-GAGAAACGGCTACCA-CATCC--?--AGGCAG---????----ATTACCC-AATCC-GA---GGGGAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAA--A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAAGTTGGGG-CTCGAAGACGATCAGATAC---TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGTGTTAATTAGATGACTCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGG???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CA-GGCCGTT-TTAGTTGGTGGAGTGA-TTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACAC-AAGAACCTTCTTCGTGGCC----AACTTCTTAGAGGGACTATTTGCGTCTA-CGAAT----GGAA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGA-AGATCATTGC-ATTATTGATCTTCAAC-AGGAAT-CCT-GTAAGCGCGAGTCATCAGCTCGCGTT-ACTAC-GTCCCTGCCCTTTGTACACAC-GCC-GTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATTG-CGGCGACACCGGGTCACCGCCGGGGACGTT-T--GA-AA-TTCATTAAACCTTATCATTTA?A????????????????????????????????????????????????????????????????????CC?TGAT?CTTCTGTGA?AGGTTT?GAGTGTGAGCA?TACCTGCTGGGACCC????GATGGTGA?CTATGCCTGAGCAGGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGA?GTGCAAATCG?TTCGTCAGACTTGGGTATAGGGGCGAAAG?CTAATCG???????????????CCCCGGG?AGAGTTCTC?TTTCTTTTT?AACA?GCCT?GCCT?ACCCTGAAATCGGATTACCCGGAG??ATAGGGTCCAGCGGCTGGT?AAAGCACCACACG?CTTGCGGTGTCCGGTG?CCC?????GGC??GGCCCGTG?   [2090]
+Phaeoceros_lae     ?????????????????????????????????????????????????????????????????????????????????????????????????????GATGGTACCTTGCTACTC---GGATAACC--AGTAA-TTCTA-AGCTAAT-CGTGCAACAACTCCCGGCTTT--TGG-AGGG-TGT-TTT-TTAG-TAAAAG---GA-GCGG-C-TT-GTCCCGGTTTACGGTGAA-CW-GATAACTCCTCGGATCGCACGGCCCT??????????????????????????????????????????????????????????????????????????????????ACGGA-AATTAGGGTTCGATTCCGGA-A-GGAGCCTGAGAAACGGCTACCA-CATCC-AG-AAGGCA-CA--CGCGC--ATTACCC-AATCC-GAC-CGGGGAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGA-TACAATCTAAATCCCTTAAC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GAAAGTTGGG--CTCGAAGACGAT-AG-TACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGATGTTAATTAGATGACTCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTAT?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T--TGCATGGCCGTT-TTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACACGAAGAACCTTCTTCGTGGCC----AACTTCTTAGAGGGACTATTTGCGTCTAGCGAAT----GGAA???????????????????????????????????????????????????????????????????????????????????????????????????????????ATCTTTG-AAATTTCATCGTGAT--GGATAGATCATTGCAATTATTGATCTT-AA----GAATT--TAGTAAGCGCGAGTCATCAGCTCG-GTTGACTA--GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATTG-CGGCG?ACA?CGGGT?ACCGCCGGGACGTTGT--GAGAAG-TCATTAAACCTTATC-TTTAGAGGAA??????????????????????????????????????????????????GCACCATCGACCGACCATGAT?CTTCTGTGAAAGGTTT??AGTGTGA??A?TACCTGCTGGGACCC??AAGATGGTGAACTATGCCTGAGTCAGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGA?GTGC?AATCG?TTCGTCAGACTTGGGTATA?GGGC???AGACTAATCGAACCATGCG??G?GGCCCCGGG?AGAGTTCTCTTTTCT?TTT?AACA???CT?GCCT?GCCCTGAAATCGGATTACCCGGA???ATAGGGTCCAGCGGCTGGT?AAAGCACCACACGTCTTGCGGTGTCCGGTGGCCC?CT??GGC??GGCCCGTGA   [2098]
+Porella_pi         ??????????????????????????????????????????????????????????????????????????????????????????????????TTTGATGGTACCTTGCTACTC---GGATAACC-TAGTAA-TTCTAGAGCTAATACGTGCACCAACTCCCGACTTC--TGGAAGGG-CGTATTTATTAGATAAAAGACCGATGCGGGC--T-GCCCGGTGTTGCGGTGAATCATGATAACTCGTCGAATCGCACGGCC???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAACGGCTACCA-CATCCAAGG-AGGCAGCCGG-GCG---ATTACCC-AATACCGACACAGG?AGGTAGTGACAATAAATAACAATACTGGGCTTTACCAAGTCTGGTAATTGGAATGAGTACAATCTAAATCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AA?AAC?AAAGTTGGG--CTCGAA-ACGAT-AGATACCG-TCCTAGTCTCAACCATAAACGATGCCGAGCTAGGGATTG--GGATGTTAATTTGATGACTCCGC-AGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CC-----TAGTTGGTGGAG-G--TTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACACGAAGAATCTTCTTTGTGGCC----AACTT-TTAGAGGGACTATT--CGTCTAGCCAAT----GGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TCTTCAAC-AGGAAT-CCTAGTAAGC-CGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCC----GTGAAGTTTTCGG--ATTGCGGCGACGCGGCGGTTCGCTGCCGGGACGTTGT--GAGAAGTTTATTAAACCTTATCATTTA?A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2118]
+Conocephal_con     ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ACGTGCACC-AGGCTCGAC----?TGGAAGGGG----TTTTTTAGATAAAAGACCGATGGGGGTGCT-GCC-GGTGATTC-GGGA-TC-TGATAACTCGACGAATCGCACGGCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????GAGCCTGAGAAACAGCTACCA-CATCCAAGGA-GGCAGCAGGCGCG---ATTACCC-AATCCCGACACGGGG-GGT-GTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGAACAATCTAAATC???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAGGATGTTT--ATTAA--AA-AA-GAAA-TTG-------GAAGACGATCAGATACC---CCTAGTCTCAACCATAAACGATGCCGA-CTAG--ATC--CGGATGT?CTTTTGATGACTCCGCCGGCACCTCCA-GAGAAATCAAA-TTTTTGGGTTCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCTTTCTT-ATTCTATGGGT--T--TGCAT---CGTTCTTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTA-CTACGCGAGTCCATTTTTTGTCCTGCGC--AGCTT-TTAGAGGGACT---GG--TC--GCC-AC----GGAA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TAGATCATT?C?ATT?TTGATCTTGAA-----AATTCC--GTA--CGCGAGTC-T----TCGCGCTGATT-C-GTCCCTGCCCTTTGT-C-C-CCGCCC--CGCTCCT-CCGATTGAATGGTCC---GGTGAAGAGTTCGG--A-CG-CGGCG?ACGTGC?GTCGCCGCCGGGACGTTGT--GAGAAGTTCTTT-AACCTTATCA-TTAGA?????????????????????????????????????????????????????????CCAGCGACCATGAGCATC?TCGATGCGAAAGGTT??GAGT??GAGCG?TGCCTGTTGGGACCC??AAGATGGTGA?CTATGC?TGAGCAGG??CGAAGCCGGAGGAAACTCCGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTC?TCAGACTCGGG?ATA??????AAAGACT?ATCGAACCATGCG?G???GCCCCGGGAAGAGTTTTCTTTTCT?TTT??AC?GACCT?GCC??GCCCTGGAATCGCTTTATGCGGAG??ATAGGGCCCAGCGGTCGGT?AAAGCGTCGCAAGTCTTGCGG?GTCCGGTGCGCC?CCC?GAC??GGTCC??GA   [2075]
+Asterella_tene     ?????????????????????????????????????????????????????????CTGTGAAACTGCGAATGGCTC-TTAAATC-GTTATAGTTTCTTTGATGGTGCCTT-CTACTC---GGATAACCG-AGTAA-TTCTAGAGCTAATACGTGCACCAACGCCCGACTTT-CCGGAAGGG--TGTTTTATTAGATAAAAGACCGATG---GC-TT-GCC-CGGTGATT-CGGAATCATGATAACTCGACGAATCGCACGGCCT??????????????????????????????????????????????????????????????????????????????????????????????????????????????AGGGAGCCTGAG?AACGGCTACCA-CATCC-AG-AAGGCAG-A---GC-C--ATTACCC-AATCC-GAC-----GAGG-AGTGACAATAAATAACAATACTGGGCT-TTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTTCTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGG-ATCG--GGATGT?GATTAGATGACTCCGCCGGCACCTCCATGAGAAATCAAAGTTTTTGGGTTCCGGGGGGAG-ATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGGTGG-GTGATTTGTCTGGTT-AATTCCGTTAACGAAGGAGACCTCAGCCTGCTAACTA-CTACGCGGGGGTWCTCCCCTGCGGCC----AGCTT-TTAGAGGGACTGTCGGCGTCTAGCCGA-----GGA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA-GAGTTCGG--ATCG-CGGCGACGCGCGGTTCGCCGCCGGGACGTTG---GA-AAGTTCTTTAAACCTTATCA????????????????????????????????????????????????????????????T?AACATCGACCGACCATGAT?CTTCTGTGAAAGGTTC?G?GT?GGAGCA?TGCCTGTTGGGACCC??AAGATGGTGAACTATGC?TGAGCAGGG?CGAAGTCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTCGGG?ATA??????AAAGACTAATCGAACCATGCG?GA?GGCCCCGGGAAGAGTTTTCTTTTCT??TT??AC?GACC??GCCG?GCCCTGAAATCGCATTACGCGGAG??ATAGGGCCCAGCGGTCGGC?AAAGCGTCGCA?GTCTTGCGG?GTCCGGTG?GCC?CCC?GAC??GGCCCC?GA   [2110]
+Riccia             ?????????????????????????????????????????????????????????????????????????????????????????????????????????????TTTACTACTC---GGATAACC-TAGTAA-TTCTAG-GCTAATACGTGCACCAACGCCCGACTTCG-CGGAAGGGCTGTATTTATTGGATAAAAGGCCGATG-GGGC-TTGCCCCGGTGTTT-CGTGAATCATGATAACTCGACGAATCGCACGGCCCCC???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CGCAAATTACCC-A-TCC-GAC-----GA--TAGTGACAATAAATAACAATAGTGGGCT-TTACAA-TC--GTAATTGGAA--AGTACAATCTAAATCCCTTA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAAGCATTTGCCAAGGATGTTTTCATTAAT-AACAA--AAAGTTGG?GGCTCGAAGACGATCAGATACC--TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATCGGCGGATGT?GATTTGATGACTCCGCCGGCACCTCCT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTAT??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ATTGAGAGCTCTTTCTTGATTCTATGGGT--T--TGCATGGCCG-TCTTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGCTACGCGGGGGTTCTCCCTGCGGCC-----AGCTT---AGAGGGACT--CGG--TCTAGCCGAC----GGAA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TTGC?ATTATTGATCTTCAAC-A-GAATTCC-AGTAA---CGAGTCGAACAGTCGCGCTGACTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA-GAGTTCGG--ATCG----CGAC-----GTTCGCCGC-GGGACGTTGT--GAGAAGTTCTTTAAACCTTATC-TTTAGA???????????????????????????????????????????????????????????????????????????????????A?AAGGTTCGGAGTAAGAGCAT?GCCT?TTGGGACCC??AAGATGGTGAACTAT???TGAG?A?GG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGG?ATAG??G??AAAGA?TAATCGAACCATCTAGTA?AGCCCCGGGAAGAGTTTTCTT?TCTT?TT??AC?GACC??GCC??GCC?TG?AATCGCA?TACGC?GAG??ATAGGGCCCA?CGGTCGGC?AAAGCGTCGCA??TCT??CGGCGTCCGGTGCTCATCCCCTAAAA?CCAG?AGA   [2098]
+Klebsormid_fla     ????????????????????????????????????????????????????????????????????????????????????????????????????????????CCTTA-TACTC---GGATAACCGTAGTAAGTTCTA-AGCTAATACGTGCACCAAATCCCGACTTC--TGGAAG?ACGTGATTTATTAGATAAAAGGCCAATGCGGGC-TT--CCCGGTATTGCGGTGAATCATGATAACTCGTCGAATCGCACGGCCTTTGCGCTG??????????????????????????????????????????????????????????????????TAACGGGTGACGGAGAATT?GGGTTCGATTCCGGAGA?GGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGC--ATT-CCC-AATCCTG-T-CAGGGAGGTAGTGAC-ATAAATAACAATGCTGGGCTTTTCAAAGTCTGGCAATTGGAATG??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAGGATGTTTTCATTAAT---GA--GAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGATGTTAATTTGATGACTCCGCCAGCACCTTAT-GAGAAATC--AGTTTTTGGGTTCCGGGGGGA-TATGGTC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AACGAACGAGACCTCAGCCTGCTAACTAGTTACACGGAGATTCTTCTCCGTGGCC----AACTTCTTAGAGGGACTATTTGGCGTCTACAGCCAAT-GGAA?TTTGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TCGCGTTGATTTA-GTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAATGATCC---GGTGAAGTTTTCGG--ATTGCGGCTACTGGTCCGCCGCCGAAGAAGCTGTGAG--GCAAGGTTCATTAAACCTTATCATTTAGAGGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGATGGTGAACTATGCCTGAGGCAGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?G?A?CGATACTGACGTGCAAATCG?TTCGTCAG?CTTGGG??TA??GCGGAAAGACTAATCGAACCAT???????????????GAAGAGTTCTCTTTTCTTTTT?AACAGTCC??GCCC?ACCCTGGAATCAGATTAACTGGAG??ATAGGGTCCAGCGACTGGG?AAAGCATCGCACGTCTCGCGGTGTCTGGTGCGCC?CT??GAC??GGCCCTTGA   [2136]
+Coleochaet_nit     ????????????????????????????????????????????????????????????????????????TGGCTCATTAAATCAGTTATAGTTT-TTTGATGGTAGCC---TACTC---GGATAACC-T-GTAA-TTCTAGAGCTATACCGTGC-CC--ATCC-GACTTC--TGGAAGG--GGTATTTGTTAGATAAAAGACCAAT----GC-TC-GCCCGGTGTT-CGGTGAATC--GATAACTCCTCG?ATCGCACGGCCT??????????????????????????????????????????????????????????????????????????????????????????????????????????GGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGA?GGCAG--GGCGCG--GATTACCC-AATCCTGATACAGGGAGGTAG--ACAATAAATAACA-TACTGGGCTTTTA-AAGTCTGGT?ATTGGAATGAGTACAATCTAAATCTC????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CATTAATCAAGAA-GAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGACCTAGG-ATCAACGGATGTTAATTTAATGACTCCGCCAGCACCTTAT--AGAAA-CAAAGTTCTTGGGTTCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AT--CCAGTTTTCGTTCW-GGAGTGATTTGTCTG-TT-AATTC?G?TAACGAAGGAG?CCTCAGCCTGCTAACTAGGCTAACGTTTTGTTGGGAC------------ACTTGTTAGAGGGACTGTGAGGCGCTTAGCTCAT---GGA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????G-TCTCGAACGA-GAATACCTAGTAAGCGCTCGTCATCAGCGTGCGCT-ACTAC-GTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATAGAATGCTCC---GGTGAAGCATTCGG--ATCGCCACCGGCGGGCAACTCCGGAGACGGCATG------AGAA-TT-GTTGAACCTTATCGTTTAGAGGA????????????????????????????????????????????????????CACCACGCGCCGATCCGGAGA?ATGTCGGAAGGGTTC?GAGCTGAGA?A??GTATGTTGGGACCC???AGATGGTGAACTATGCCTGA??AGG??CGAAGCCAGAGGAAACTCTGGTGGAAGATC?GCAGC?ATACTGACGTGCAAATCG?TTCGTCGGACTTG?GTATA????C?AAAGACT?ATC?AACCATGCG?GG?G?CTCCGGG?AGAGTTTT?TTTTCTTTTT?GACA?GTCG??AGC?GCCCTGGAATTGATT?C?CGGCG???GAGGGTGC?GAAAGCTGGC?AGAGCGCGCACTGGT???CGGTGTC?GGTG?AC??CCG???T??T?CCCTAGA   [2098]
+Fissidens_taxi     ???????????????????????????????????????????????????????????????????????????????????????GTTATAGTTTCTTT-ATGGTACCTTGCTACTC---GGATAACCGTAGTAA-TTCTA-AGCTAATACGTGCACAAACTCC-GACTCG-?TGGA-GGGACG-ATTTATTAGATAAAAGGC-GA-T-C-------GCC-GGTGTT---GCGAATCA-GATAAC?AGTCGAATCGACCC??????????????????????????????????????????????????????????????????????????????TGACGGGTGACGGA?AATTAGGGTTCGATTCCG-A-A-GGAGCCTGAG---CGGCTACCA-CATCC--GGAAGGCAGC--GCGCGC--ATTACCC-AATCC-GA---GGGGAGGTAGT-ACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAA--A???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGTGTTGATTTGATGACCCCGCCAGCACCTTGA-GAGAAAT--AAGTTTTTGGGTTCCGGGGGGAGTATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCTTTCTTGATTCTATGGGTG-T-GTGCATGGCCGTT-TTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACGCGAAGGATTTCTCTCCTTGGCGGCCAACTTCTTAGAGGGACTATCGGCGTCT-AGCCGAT---GGAA?TTT?A????????????????????????????????????????????????????????????????????????????????????????????????????AATCTTCTGAAATTTCATCGTGAT--GGATAGATCATTGCAATTATTGATCTTCAAC-A-GAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATTG-CG?CG?AC?GGGTTCGCCGCGCGCTGT-------GAGAAGTTCATTAAACCTTATCATTTAGA--A??????????????????????????????????????????????????????????????????????????TTCTGTGAAAGGTTC?GAGTGTGAGCA?TACCTGTTGGGAC????AAGATGGTGAACTAT???TGA???AGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG??T?GT?AGACTTGGGTATAGGGGC???AGACTAATCGAAC?AT?CG??G?GGCCCCTGGAAGAGTTCTCTTTTCT?TTT?AAC?GGCCT?GCCT???CCTGGAATCGGATTACCCGGAG??ATAGGGTCCAGCGGCCGGT?AAAG???CGCACGTCTTGCGG?GTCAGGTGCCCT?C???GGC??GGCCCT?GA   [2098]
+Plagiomnium_cu     ????????????????????????????????TGTGTAAGTATAAACT-CTTTTGTACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTCTTTGATGGTACCTTGCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACAAAATCCCGACTGG---G?AAGGGA??GATTTATTGGATAAAAGGCCGA-TGCGGGCT-TGCCCGGTTC-GCGG-GAC----GATAAC--GTCGAATCGCA-GGCCG???????????????????????????????????????????????????????????????????????????????????????????????????????????GA-A-GGAGCCT-AG---CGGCTACCA-CATCC-AGGAAGGC--C----------ATTACCC-AACTCCGA---GGGGAGGTAGTGACAATAAATAACAATACTGGGC--TTACGGGCCCG---ATTGG--TGAGTA?AATCT-AATCCCTTAA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCATTTGCCAAGGATGTTTTCGTTAATCAA-AA-GAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGTGTTGATTCGATGACCCCGCCAGCACCTTAT-GAGAAATC--AGTTTTTGGGTTCCGGGGGGAGTATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGAGCTCTTTCTTGGTTCTATGGGTGGT-GTGCATGGCCGTT-TTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACGCGAAGGATTTCCTCCTTTGCGGCC-AACTTC--AGAGGGACTATCGGCGTC---GCCGAT---GGAAG?TTGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ATCATTGC-ATTATTGATCTTCAAC---GAATTCC-AGTAAGCGCGAGTCATCAGCTCG-GTTGACTAC--TCCCTGCCCTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATCG-CG??A?C????GTTCGCCGC?GG?GACGTTGT--GAGAAG-TCATTAAACCTTATCATTTA-AG?????????????????????????????????????????????????????GCACCATCGACCGACCGTGAT?CTTCTGTGAAAGGTTT?GAGTGTGAGCA?CACATGTTGGGACCC???AGATGGTGAACTATGCCTGAGCAGGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGGTATAGGGGC?AAAGACTAATCGAACCATGCG?AG?GGCCCCTGGAAGAGTTCTCT?TTCT?TTT??AC?GGCCC?GACG?ACCCTGGAATCGGTTCACCCGGAG??ATAGGGTCCAGCGGCCGGT?AAAGCACCGCACGTCTCGCGGTGTCAGGTGGCCC?TC??GGC??GGCCCGTGA   [2089]
+Micromonas_pus     ??????????????????????????????????????????????????????????????????????????????????????????AT-GTTTCTTTGGTGGTGTTTTACTACAT---GGATAACCGTAGTAA-TTCT-G-GCTAATACATGC-GTAAATCCCGACTTC---GGAAGGGACGTATTTATTAGAT-AAAGAC--AC----------CTC--GTCT-GCGGTGAATCATGATAACTTC-CGGATCGCATGGCTTCAA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAAGTTGGGGGCTCGAAGATGATTAGATA--A-TCCTAGTCTCAACCATAAACGATGC?GA-CTAGGGA--GGCGGATGTTAATT-GATGACTCCGC-AGCACCTTAT-GAGAAATCAAA-TTTTTGGGTTCCGGGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T-GTGCATGGCCGTTCTT-GTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAAATAGTCATACGCTACTCT-TAGCGCAGT------GACTTCTTAGAGGGACTATGTGCGTTT-GCACAT----GGAA-TT?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AG-AATGCCT-GTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACC-CCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGCGTTCGG--ACCGT-GGCTTTCTGA??G?TTCG?CCGTCGGATGGCCTGGGAAGTTCGTT-AACCTTATCA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGGACC????AGATGGTGAACTATG??TGAGCA?GG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGC?AATCG?TTCGTCGGACTTGGGTATA???????AAGACT?ATC?AA????GG????GAGCCCCGGG?AGAGTTCTCTTTTCTTTTT?A?CA?GCCT??CGC?GCCCTGGAATCGGTTT?GCCGGAG??ATA?GGCCCAACGGCTGGT?AAAGCACTGCACGT?TCGCAGTGTCCGGTGC?CT?CC??GG???GGCCC?TGA   [2114]
+Mantoniel_squa     ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AA-TACATGCG-T-------------AATCCCGAC-TC---GG--GGG--GT-TTTATTAGAT--AAGACC-AC----------CTCG-TTCT-GCGGTGAATCA-GAT-ACTT--CGGATC-CATGGCTTCAA?GCCG?CGATGTTCCATTCAAATTTCTGCCCTATCAACTTTCGACGGTAGGATAGAGGCCTACCGTGGTGTTCACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGGGAGGTAGTGACAATAAATAACAATATCGGGGTTTTTCAA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GATGATTA-ATAC-A-TC-TAGTCTC-ACCATAAACGGAYCYGA-CWA--GATTCAC--ATCTTAAT---AT--CTC--CCA-CACCTTAT--A-AAATC-AA-TTTTT???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T-G-GCWTGGCCGTT-TT-GTTGGTGGAGTGATT--TCTGGTT-AATTCCGTTAAC-AAC-AGACCTCWGCCTGCTAAATAGTCATACGCTACTCT-TAGCGCAGT------GACTTCTTAGAGGGACTATGTGCGTTTWGCACAT----GGAA-TTTGA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGCTGGGACC?????GATGGTGAACTATG?CTGAGCA?GG?CGAAGCCAGAGGAAACTCTGGTGGA??CTC?GT?GCGATACTGACGTGC?AATCG?TTCGTCGGACTTGGGTATA????C?AAAGACT?ATC?AACCAT?????????????????AGAGTTCTCTTTTCTTTTT??ACA?GCCT?T?GC?GCCCTGGAATCGGTTT?GCCGGAG??ATA?GGCCCAACGGCTGGT?AAAGCACTGCA?GT??CGCAGTGTCCGGTGCACT?CCC?GAC??GGCCC???A   [2089]
+Nephroselm_pyr     ????????????????????????????????????????????????????????????????????????????????????????????????????????????CCTT-CT-CTC---GGAT?ACCGTAGTA---TCT-G-GCTAATACGTGC-GCAACACCCGACTTC---GGAAGGGTTGT-TATATTAGATAAAAGACCGAC----CT-TCG-GCG-TTCT-TCGGTGAATCATGATATTTCCACGGATCGCAT--CTTCCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CGGCTACCA-CATCCAA--AAGGC-GC--GCGCGC--ATTA-CC-AATCCTGAC-CAGGGAGGTAGTGAC-ATAAATAACAATACCGGGCTTTTTCAAGTCTGGTAATTGGAATG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGGCTCGGAGATGATTAG---CCA-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCAGATGTTAGTTCGATGACTCTGCCAGCACCTTAT--AGAAATC-AAGTTTTTGGGTTCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CATGGCCGTTCTTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAAATAGTCACGCGATGCTCCTGCATGGCGGCG----GACTT-TTAGAGGGACTATCGGTATT-A-CCGAT----GGA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGGAATGCCT-GTAA--GCGAGTCATCAGCTCGCGTTGATTA--GTCCCTGCCCTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATG-TGC--TGGT?AGGAGTCCGG--AT?AT???GCGGGTGGGTCC?GCCG?C?TCCGCCCGT--CAGAAGTTCTTCAAACCCTCGCATTTAGAG??????????????????????????????????????????????????????????????????????TGAT?CTTCTGTGAAAGGTTT?GAGT?CGAGCA??ACCTGTTGGGACC?????GATGGTGAACTATGCCTGAGCA?GG?CGAAGCCAGAGGAAACTCTGGTGGA??CTC?GTA??G?TACTGACGTGCAAATCG?TTCGTCGGACTTGGGTATA?GG?CGAAAGACT?ATC?AACCATGCG?GG?GGCCCCAGGAAGAGTTCTCTTTTCTTTTT?AACA?GCCC?GCCC?ACCCTGGAATCGGATTATCCGGAG??ATA?GGCCCAGCGGCTGGT?AAAG?C?CACT?CTTGCGG?GT??CTGGTGCGCC?CTC?GAC??GGCCC??G?   [2108]
+Pedinomonas_mi     ???????????????????????????????????????????????????????????????????????????????????????GAAATA-TTTCTTTGATGGTGAAAATCTACAC---GGATACCCGT-GTA--TTCT-GAGCTAATACGT-C-GTAA---CTCCATT----GG-AGG-T----TTT-TT-G-TCC-AACC-AGC-----C-TT-GGGG--TTT-TCTGTGAATC-TGATACTTTC??????????????????????????????????????????????????????????????????????????????????????????????CGGTGACG??GAATT?GGGTTCGTTCCGG--GAGGGAGCCTGAGAAACGGCTACC--CATC-AAGGAAGGC-GCGGGCGCGC--ATTACCC-AATCC-GAGA--GGGAGG-AGTGGACAGAAATATCGTGACTGTGCCCTTGTGGCAGAGTCTTCG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGGGATCGAAGACGATCAGATACC--TC-TAGTCTCTACCATAAACTAT-CCGA-CTAGGGATTGGTGGACGTT-GTTTT?CGACTCCATCAGCACCTTAT-GAGAAATCAAAGTCTTT???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GCATGGCCGTTCTTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCGACCTGCTAAATAGGTTCAGTATCGATGCGTCGATGCTTG----GAGCTTTTAGAGGGACT-TCGGATCC-A-CCGGT----GGAAGT??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GTCCCTGTCCTTTGTAC-CAC-GCCCGT-GCTACTACCGATTGAATC-TTT---GGTGAGGCTCACGG--ACTGTCGTGCTTCCTTCCTCGTGTTGGTTGTACTTC---GGGAAGT--ATACA--CCTGATGATTAGAGGA?????????????????????????????????????????????????????????????????????????????????????????????????AGCA?GATATGTTGG??CCC???AGATGGTGAACTATG?CTGAAC?GGG?TGAAGCCAGGGGAAACT?TGGTGGAGGCTC?GTAGC?ATACTGACGAGC?AATCG?TTCGT?TGATTTGGG?ATAGGGGCG?AAGACTAATCGAACCAT??????????TCCGG???GAGTT?TCTTTTCTTTTT??ACA?GCCT?GTA??GCCCTGGAATCGGATT?CCCGGA???ATAGGGTGATGTGGCTGGT?AAAGCACCTCACGTCTTGAGGTGT?C?GTGC?TC?TC???AC???C??CTTGA   [2092]
+Tetraselm_cart     ??????????????????????????????????????????????????????????????????????????????????????????ATAGTTTATTTGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATTTAAG-CGG-C---AGC-TTT-C---GTC---CGGTGAA-CA-GATAACTTCACGAATCGCATGGCCTCCGCGCCGGCGATGTTTCATTCAAATTTCTGCCCTATCAATTTGCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGGGAGGTAGTGACAATAAATAACAATACCGGGCTTTT-CAA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GCATTTGTCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCCTAGTCTC-ACCAT-AACGA--CCGA-C-AGGGATTGGCAGA--TT--TT--ATG--TCTGCCAGCACCTTAT-GAGAAAT-AAAGTTTTTGGGTT?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TATGGGTG-T-GTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTTACTCCTACTTTGGTAGGAGGTG------AACTT-TTAGAGGGACTATTGGCGTTT-GCCAAT----GGAAGTTA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TCATCAGATCGCGTTGATTA--GTCCCTGCCCTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATG-TG--TTGGTGAGGAGTT?GG--ATTGGCAGTTTGTGGTGG?TTCG?CCACTGCTTACAGCTGAGAAGTTCTCCAAACCCCCCCATT-AG??????????????????????????????????????????????????????????CCATCGACCGACCATGAT?CTTTTGTGAAAGGTTT?GAGTACGAGCA?TACCTGTTGGGACCC???AGATGGTGAACTATGCCTGAGCA?GG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGATGTGCT?ACGTGCAAATCG?CTTTTCGGACTTGGG??TA????CGAAAGACT?ATC?AACCATGCG?AT?GGCCCTGGGAAGAGTTCTCTTTTCTTTTT?AACAGGCTC?GAAG?GCCCTGGAATCTAATCATTAGGAG??ATAGGGCTCAGAAGTCGGT?AAAGCACCGCACGTC?CGCGG?GTCCGGAGCGCC?ATT?GAC??GATCCTTGA   [2111]
+Enteromorpha       ??????????????????????????????????????????????????????????????????????????????ATTAAATCAGTTAGAGTTTATTTGATGGTACCACACTACTC---GGATAACCGTAGTAA-AGCTACAGCTAATACGTGC-GTAACTCCCGACYC---CG-AAGGGACGT-TTTATTAGATTC-AGACCGAC-CGTGC-TTGCCGTCTTT----GGTGAATCATGGTAACTTCACGAATCGCA-GG--TTTACCCCGG?????????????????????????????????????????????????????????????????????????????????ATTAGG?TTCGATTCCGGA?AGGGAGCCT?AGG--CGGCTACCAGCATCCGAGGAAGGCAGC-GGCGCGCAAATTACCC-AATCCTG--GCAGGGAGGTAGTGACAATAAATATCA-TTCTGGGC-CACTTG-GTCCGGTAATTGGAATG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGAT-CCGA-CCAGGGATTGCCGGGTGTTTTTTTGATGACTCCGCCAGCACCTCAT-GAGAAATCAAAGTCTTTGGGTTCCGGGGGGAG?ATGG????????????????????????????????????????????????????????????????????????????????????AAACTTACCAGGTCCAGACATGGA---GATTGACAGATTGAGAGCTCTTTCTTGGTTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAA-GAGACCTCAGCCTGCTAAATAGTGACGATTGCTCGGCAGTCGCG--------CGCTT-TTAGAGGGACTGTTGGCG-TCTAGCCAAT---GGAAGTAT???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CCTAGTAAGCGCGAGTCATCATCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAACG-TGC--TG--GAAGCGTTAGG--ACTGG--AACCTTGGGCCGGTCTCCTGCCCATGGTTTC---GAATTTCGTT-AACCCTC--GTTTAGAG-A????????????????????????????????????????????????????????????ACC?ACCAT?AT?CTTCTGTGAAAGG?TC??A?TACGA??G?TACCTTTTGGGACCCTTAAGATGGTGAACTATGCCTGA?CA?GG?CGAAGCCAGAGGAAACTCTGGTG?AGGCTC?GTAGATGTGCT?ACGTGCAAATCGCCTTTTCGGACTTGGGTATA??GGC?AAAGACTAATCGAACCAT???????GG???TGGAAAGAGTTCTC?TTTCTTTT??AACA?GCCC?CA?G?ACCCTGGAATCGAGTCATTCGGAG??ATAGGGTTCAGTGCCTGGT?AAAGCACA??TC?T?T???GGTGTCCGGCGCGCA?GTC?GAGTCGGTCCGTGA   [2111]
+Ulva_fasci         ??????????????????????????????????????????????????????????????????????????????????????????AGAGTTTATTTGATGGTACCACACTACTC----GATAACCGTAGTAA-AGCTAC-GCTAATACGTGC-GTAACTCCCGACTTA--CG-AAGGGACG-ATTTATTAGATTCAAGGCCGAC-TGC---TTGACGTCTTT----GGTGAATCATGGTAACTTCACGAATCGCAGGG--TTTATC???????????????????????????????????????????????????????????????????????????????????GGATTAGGGTTCGATTCCGGAGA--GAGCCTGAG---CGGCTACCA-CATCC-A--AAGGCAGCA-GCGCGCAAATTACCC-AATCCTGA---AGGGAGGTA-TGACAATAAATATCAATTCTGGGC-CACAT--GTCCGGTAATTGGAAT?AGTACAATGTAAA?CCCT-AAC-A???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGGTGTTTTTTTATGACTCCGC-AGCACCTCAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGA?TATGGTC?CAA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTATGGGT-GTGGTGCATG-CCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTC-GGTAACGAACGAGACCTCAGCCTGCTAAATAGTGACGTCTGCTTCGGCAGTCGCG-------CGCTTGTTAGAGGGACTGTTGGCG-TCTAGCCAATT--GGAAGTATGA?????????????????????????????????????????????????????????????????????????????????????????ACAGAGTCGGGTAATCTT-G-AAACT--ATCGT--TGGGA---AACATTGCAATTATTGTTCTTCAAC-AGGAATGCCTAGTAAG--CGAGTCATCATCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAACG-TGC--TGGTGAAGCGTTAGG--ACTGGAACTTTGGCCGGTCTCCTGCCCATTGTTTC----GGGAATTTCGTT-AACCCTCCC???????????????????????????????????????????????????????????????????????????CCATGAT?C?TCTGTGAAAGGTT??GAGTACGAGCG?TACCTGTTGGGACC??AAAGATGGTGAACTATG?CTGAGCA?GG?CGAAGCCAGAGGAAACTC?GGTGGAGGCTCGG?AGATGTGCT?ACGTGC?AATCG?CTTTTCGGACTTGGGTATA??GG????A?ACT?ATCGAACCATCGA?T??GGC?CTGGAAAGAGTTCTCTTTTCTTTTC?AACCAGGGG??A?G?A?CCTGGAATCGAGTC?TTCGGAG??ATAGGGTTC?GTGCCTGGT??AAGCACCACACGTCTCGTGGTGTCCGGCGCGCC?A?C?GA???GGTCCGTGA   [2096]
+Ulothrix_zo        ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GATAACCGTAGTAA-TTCTAGA-CTAATACGTGT-GTAAATCCCGACT?A--CG-AAGGGACGTATTTATTA?ATCCAAGAC?GAC-CGC---TTG-CACCTTT----GGTGAATCATA-TAACTTCACGAATCGCATGG-CCTTGTGC-GGC???????????????????????????????????????????????????????????????????????????GGAGTATTAGT?TTCTTTTCCGGAGA--CA-CCTGAG---C-GCTACCA--ATCC-GGAACGGCAG--GGCGC----AT--CCC-CTTCCT-----AG--AGAT-GTGACAATA-AT-AC-ATACTGC-C-CA---G-GTCYGGT?ATTGGAATGAGTACAATCTAAATCCCTTA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GCATT-GCCAAGGATGTTTTCATTGATCAACAA-GAAAGTTGGGGGCTC--------TYAGATACCG-TCG-AG-C-CAACCATAA-CGAYGCC-A--TAGG-AT-GGCGGGYGTTTTTTT--TG-CTCCGC-ACA-CCTTAT-GAGAAATCAAAGTYTTTGGGYTCCGGGGAG??TATGGTC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ATGG-TAGTTG---ATGGCCGTTCT--GTTGATGGGTCTGGCCTTC---TT-GATTCCGGTAA----CGA-ACY-YA-CC-GCTAAA-AGTTCCYTYGGCAGTTGGCA------------CACTT-TTAGAGGGACT-TTGGCG-TCT-GCCAAT---GGAAGTAT-A??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????G-GTT-ATTA---TCCCT-CCCTTTGTACA-AC--CCCGTC---CC--CCGATTGAATG--GC-GTAAAGATTTGCGGAATTGCT-TTCACGTTAGTTCCAAGCTCTTACCAC--------GAGAAGTT-ATT-AACCCTCCCA???????????????????????????????????????????????????????????????????????????????AT?CTTCTGTGAT?GGTTC?GAGTACGAGCAGTACCT?TTGGGACCC??AAGATGGTGATCTATGCCTGAGCAGGG??GAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGAT?TGCTG?CGTGC?AATCG?CTT?TCGGACTTGG??ATAGGGG?G?AAGACT?ATCGAAC?AT?????????CCTT?GGAAGAGTTCTCTTTTCTTTTT?AA?A?GCC???A?G?ACCC?GG?ATCG?GTC?TTCGGAG??ATAGGGTTCAGTGGCTGGT??AAGCATCGCACGTCT?GCGGT?TCTGGAGCGCT?ACC?A?C???GTCCTTGA   [2032]
+Cympolia_barba     ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TATGGGTTTGATTCCGGAGAGGGAGCTTGAGA-CTGGCTACCA-CATCCAAGG-AGGCAGC-GGCGCGAAAATTACCC-AATCTAGATATTGTGAGGTAGTGACAATAAATAACAATGTTGGACTTGTAAA-GTTTGGTAATTGTAATG------GAGTAA-TCC-TTGAAC???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAAGCATTTGTCAAGGGTATCTTCATTGATCAAGAAC---AGTTGGGGGATCG--GATGATTAGATACCA-TCCTAGTCTCAACCATAAACCATGCCAA-TTAGGGATCGTTGAGC-GTTGATTAGTGACCTCGTCGGCACCATAT-TAGAAATTATAAATCTACAGGCTTGGGGGGGAA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TTTGAT-GC--TTTCTTGATTCT-TGGGTGGTGGTGCATGGCC-TTTTT-GTTCGTGGGTTGCCCTGTCTGGTT-GACTCCGTTAACGAACGAGATCTCAACCTACTAAATAGTATTACATCATTGTAGAAATATAT------ACCTTCTTAGGGGAACTATC-AGTT-CAAACCGAT---GGAAG??????????????????????????????????????????????????????????????????????????????????????????????????????GG?AATCTATG-CACATGCTTCGTGAT?AGGACGAATATTGGAATTGTT-ATTCTTTAACG--GAATGCCTAGTAAGTACCAGTCATCAACCGGTGTTGATTAT-GTCCCTGCTCTTTGT-CTCACCGCC-GTCGCTTGATCCGACGTTAC-AGT---TGGTGAACTGTTTGG--ATTATCCTTGTTCCGTGAAGACGTTACAGGTT---------GAAATTCGGTGAACC-----ACCTGTTAT?????????????????????????????????????????????????????TGTGTTAAGCACCGAGTTCT?CTTTTACGAAAAACTC?GAGTGTGAGCA?TGCCGTT?A?GATCT???AGATGGTGA?CTATACTTGGGTAG?A?TGTAGC?AGGAGAAATTCTGGTGGATGTTC?GAAAGTGTGC?GA?GTGC?AATCG?CTTCTCAAACCTGAGTTTAGGGGC???AGACTAATC?AACCA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2111]
+Batophora_oers     ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGAGGTTGAGGGTTTGATTCCGGATT-GGA-CCTGAGA--CGGC--CC---YTTCC-GG--GGC-GC-GGCGC----ATY-CCC-AATC--GACATTGTGAG-T-GTG-CGACAAATAACAATGCCGGGC-TTATCAAGTTTGGTAATTGGAATGAGT--AACGTAAAYGCCTTA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGATCCAACTGCGAAAGCATTCC----GGGCGCTCTCGTTGATCAAGAAC---AGTTGGGGGATCGAAGATGATTAGATACCA-TCCTAGTCTCAACCATAAACTATGCCAA-Y-AGGGATCGGC-GGGGT-CTTTA-C-GTGTCCTCGTCGGCCCCTT-GAGAAA-CATAAATTTGGGCTCCGGG???TAGTATGGT??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TTTCTTGATT--A-GGGT--------ATGGCCATTCTTAGTTC-TGGGTTATCTTGTCTGGTT-GACTCCGTTAACCA---A-ACCTCAGCCT-CTAAA-A-CGGCCTCTCCTTAGGAGTGC----------CCCYTCYTA-A-GGAC--TCGGCG--CAA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????-???????????????????????????????AGCTTGCGTTGATTA----CCCTGCCCTYT--AC-CAC--CC-GTCGCTTGATCCTGTCTTGC-A-T----YGTGAAAAGTTTGG--AT--GYCTTCCGAAA?CGGTTACGCCTA-------------GAA-TTCTCTTAACC-----ACCT-TTA???????????????????????????????????????????????????????????????????????????????????????????????????????????????TGG?ACC????AGATGGT???CTATGCTTGGGTAGGA?CGAAG?CTGGGGAAACTCTGATGGAGGTCC?GAAGCT?TGCTGA?GTGCAAATCG?CTTCTCA?ACT?GAGTA?A?GGGC?AAA?ACTAA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2058]
+Codium_decort      ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ATC-GGGTTTGGTTCCGGAGA--GAGCCTGAGGC-CGGCTACCA--CATCC-GGAAGGC-GC--GCGCGC-AATTACCC-AATCCCC--CGGGTGAGGT-GTGACGAGACATAACAACGACGTGC-TCAACGAGTGGG-TCGATGG--TG-GA--AACTTAAAATCCC-CA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CCTAAGCGAAAGCAGTCGCCAAGGACACTTCCTTGTGATCAAGA-CGAAAGTT--GGGATCGAAGATGATT--ATACCG-TCGTAGTCCCAACTGTAAACTATGCCAT-CTGGGGATCGG--GGCTG-ATGAATTGCCG-CCG-GCACCCTCCGA-GAAATTAAAAGATCTTGGGCTTCCGGGGAGC?TAGTGCTCAGTGTGGTG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCTTTCTTGATTCC-TGA-TGGTG-TGCATGGCCGATCTCAGCCG-TGGGTTGACCT-TCAGGTT-C-CTCCGGTAAY-Y-C-AGACCTCGACCTGCCAAATAGCACCGGCCCTTCCGATGGC-----------ACCTTCTTGGAGGGACTGGCGCGAGAGCCGGACGCG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GAATGCCTAGTA---CCGGGT--GGATCCCGCGACGATTGC-GTCCCTGCCCTTTGTACACAC-GCC-GTCGCT-GATACTGATGGCAG-AAC--TGG--AA--CCGGGG--ACGC-GCC?TTT??TGGGAGCCCCGCT------------AACCACTTTTCTAA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ACGGCGGCGGCGGG?AGAGTTCTCTTTTCTTGTT?GACGAGCT??AAGG?ACCCTGGAA?C???TC??CGGGA???ATAGGGTTTGACGGCAGGT??T?GCGCCGCCCC??G?TGCGC?GTCTGGCCC?C???C??????GGCGGTCC?   [2091]
+Cladophoro         ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TTGGACTAC-A-CCT-T--ACG-GTAGCGGAGGATTAGGGTTCGGATTCCGGAGGGGAGCCTG-GA--CGGCTACCA-CATCC-AGG-AGGCAGCAGGCGCGC--ATTACCC-AATCC-AAC--AGGGAGGT-GTG-C--GAAATAGCAAT--CGAGCATTT---CTCTG--CAATTGAAATGAGAA-AATTTAAACCACTTAAC-A---ATC???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGCGAAAGCA-TTGCCAAGGACGCTTTCATTA-GTCAAGGACGAAAGTCGGGGGATCGAAGACGATTAGATA-CG-TCGTAGTCTCGACCATAAACGATGCCAA-TTAGGGATTGGA-GGGCGGATAGATAT-CCTCCTCCAGCACCTTCC-GCGAAAGCAAAATTTATG?CTTC?GGGGGGAGTAT????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGATTGATAGCTCTTT-AAGATTTTTTGGATGGTG--GCATGGCCGTTCTTAGTTCGTGGATTGATTTGTCAGGTT-G-TTCCGG--ACGGA-G-GACCC--GCCTACTAACTAGCTCTACCTGAACTTCAGGTAGCC-------AGCTT-TTAGAGGGACTCTCGGAA-TGAAACCAA----GGAA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????C-ACGAGGAATGC-T-GT-AGCGCGAGTCATCAACTCGCGTTGATTAC-GTCCCTGCCGTTTGTACACACCGCCCGTCGCTCC-ACCGATTGGGTG-TGCG-T---GAAAT-TTCGG--ATTAGACAACCTACCGT?AGGG?GTCGT?T---------GAGAAGTTCATTAACCCTTCACC?AGAG?AA?????????????????????????????????????????????????????????????GCCAACCATGATGCTTTTGTG??AGGTTT?GAGC??GAGCG?CAGTCG?TAGGACCCGG??GATGGTGAACTATGCCTGGTGCACGACGAAGCGC??GGAAACGCCGGTGGAGGTCG?G?AGATGTGCT?ACGTGC?AATCG?CTTTTCAGACATGGGTATAGGGGC?AAAGACTAATCGAACCAT?GG?CA?TGGTCCGGG?AGAGTTGTCTTTTCTTTTT?AACA?GCTC?GCA???CCCTGGAATCAGATTATCTG?AG??AT?AGGGCTCAGAGCTGGT?AAAGCGTTGCAA??CTCGCAACGTCCCGAGCGCC?TC??CAC??GGCCCTTAA   [2090]
+Blastophysa_rh     ??????????????????????????????????????????????????????????????????????????????????????????????????????????TAC-TTGCTACTT---GGATAACC--AGTAA-TTCAGAAGCTAATACAT-C-GCGGATCCCAGACTTC-TGGAAGGGACGTATTTATTAGATAAAAGGCYGAC-CGGGC-TT---CCCGAGTGCAGGTGACT-ATGATAGACATCACACGAATC?????????????????????????????????????????????????????????????????GGCCTACCACGGTATCGACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGGGGGAGCCTGAGA-ACGGCTACCA-CAACCAAGGTAGG-AGCAGGCGCG---ATTACCC-AATCCTGAC-CGGGGAGGTAGTGACAATAAATAACAGTATCTGGC-TCT-CAGTCCG-ATGCTTGGAAT-A-TA-AATCTAAATCCCTTAAC-A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CCGATAGACGAACCATCTGAAGATTTGCCAAGGATCGTTTTCTTTGATC------GAAAGTTGGGGGCTCGAAGATGATTAGATACCGGTCGTAGTCTCAACCATAAAC-ATGCCCA-CTA--GATCAGG-AG--ATTTAT-TTCGACTTCTCCGGCACTCCAT-GAGAAATCAAAGTCTTTGGGTTC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T-TGCATGGCCGTTCTTAGTTGGTGGGTTGGCTTGTCAGGTT-GATTCCGGT-ACGAACGAGACCTCCGCCTGCTAAATAGCCACTCCGGGGGCCC---------------GGCTTCTTAGAGGGACTATGGCTCGAATAGGCCAT---GGAA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AC-TGCAATT-T--GGTCT-CAACG--GAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGT-C-C-CCGCC-GTCGCTCCTACC-ATT-GATG-TGC--TGGTGAAGCA-ACG---ACT-TGGA?CACCCTCGGGT?ATTTGC------------GGGAAATGTGTTAAACCCTCCCATCTA?A??????????????????????????????????????????????????????????????GACCGACCATGAT?CTTCTGAGAAAGGTTC?GAGTTGGAGCG?TGCCT?TTGGGACCC??AAGATGGTGAACTATGCCTGAGCA?GG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGATGTGCTGA?GTGCAAAT?G??T?TTCGGACTTGGGTATA?GGGCGAAAGACT?ATC?AACCAT??????????????GGAAGAGTTCTCTTTTCTTCTT?GA?GA?CCC?GAAG??CCCTGGAATCGGATCATCCGGAG??ATAGGCCCAT?TGGTCGGT?AAAGCACCGCACGT?T?GCGGTGT???ACGTTGC??????A????CCCCTTAA   [2078]
+Trentepohlia       ?????????????????????????????????????????????????????????CTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTC-ATTT-ATGGTGT-TT-CTACTC---GGATAACC--AGGAA-AACTAGAGCTAATACGTGC-GTAAATCCCGACCTCC---GAAGGGACGTATTTATTAGATAAGAGGCCGGAACGCGC-TTAGGCCCGCT--TCGGTGAATCATAATA-ACTTCAC--GAATCG---CTG-GTC---GAACYGA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ACGGAAGACGAACTTCTGCGAAAGCATTTG-CAAGGATGTTTTCATT-GATCAAGAA-GAAAGTCGG-GGCTCGAAGACGATTAGATACCG-TCGTAGTCTCGACCATAAACGATGCCGA-CTAGGGATCGGA-GG-TTTTTTTTA-TGACCTCTCCGG-ACCT--A-CAGAAATCAAAGTT--TGGGTTCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGTGCATGGCCGTTCTT-GTTGGT-GGTTGGCTTGT---GTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTA-CTTTCGGTT---CCCA-GC--------AACTTCTTA-A---ACTATTACATCA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????-?????????????????????????????????????CGTTGATTAT---CCCTGCC----GTAC-C-CC-CCCGT-GCTCCTTCCGATTGGGTG-TGG--TGGTGAAGAGTTCGG--ACTGGACCAGGCTAGCAATA--CCC--TTG--------GGGAAGTCCGTTTAAACCCTCCCTA??????????????????????????????????????????????????????????????????????????????TC?CTCACAT?ATATCTTT?T?ATTCATAAC?TACCT?TTGGGACCC??AAGATGGTGAACTATGCCTGATCAGG??CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTA?ATGTGCT?ACGTGCAAATCG?CTTTTCGGAATTGG???CA??G?????A?A??AATCGAACCATGCG?AT?GGTCCCGGGTAGAGTTATCTTTTCTACTT?AACGA?CCC?GAAG?GCCCT?GAATCGGATCATCCGGAG??ATAGGGCTCAGAGGTCGGT?ACAAGCGCCGCACATCACGTGCGTCCGGTGCGCC?ATC?GAC??GGTCCT???   [2085]
+Cephaleuro_par     ???????C-TGTCTCAAAGA-TAAGCCATGCATGTCTAAGTATAA---GCTTTA-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTT-ATTTGATGGTG-TTTGTTACTC---GGATAACCGTAGGA----CTAGAGCTAATACGTGC-GTAAATCCCGA--TC---GGAAGGGA-G-ATTTATTAGATAAGAGGC-GAC-CGGGC-TT-GTCCCGCT--TCGGTGA-TC-TGATAACTCAACGA-TCG------CTG-GTCCGTGAACCGC????????????????????????????????????????????????????????????????????????????????????????????????GGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAA-GCAGCAGGCGCGC--ATTACCCAAATCCCAAGGT--GGAGGTGGTGG???GAAATAACGATGCTCCGGCCTCTG-GTCGGG?TAATCGGAATGAGAA--ATTTA??TCCCTTA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GTCGG-GGGCTCG-CG-CGCTT-GGTACCG-TCGTAGTCTCGACCATAAACGATGCCG--CTAGGGATCGGA-GGTGGGTTTTTTATG-CCTCTCCGGGCACCTTC-GAGAAATCAAAGTTGTTGGGTTCC?GGGGGAGTATGG????????????????????????????????????????????????????????????????????????????????????AAACTTACCAGGTCCAGACATGGT-AG-AT-GACAGATTGATAGCTCTTTCTTGGTTCTATGGGTGTGGGGGCATGGCCGTTCTTAGTTGGTGGGTTGGCTTGTCGGGTT-GATTCCGGGAACGAACGAGACCTCAGCCTGCTAAATAGTTGCCCCCGCCTCGGTGGGGGTCGA-----GACTTGTTAGAGGGACTATTAGCG-ATTTTCA--CTAATT--AA-T??????????????????????????????????????????CGCACGCGCGCTACACTGATGTATTCAACGAGTCTATAGCCTTGGCCGACAGGTCCGGGTAATCTTTG-AAATTTCATCGTGATGGGGATAGATCATTGCAATTGTTGGTCTTCAACGAGGAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTGTTCGG--ATTGCGGCGACGTGAGCGGTTCGCTGCCCGCGACGTTGTGAGAAGTCCACTGAACCTTATCATTTAGAGGAAGGA?????????????????????????????????????????????????????????GCTGCCATGAT?CTTCTGTG???GGTTC?GAGTAGGAGCG?G?CCTGTTGGGACCGGG??GATGGTGAACTATGCCTGATCAGG??CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGATGTGCT?ACGTGCAAATCG?CTTTTCGGAATTGGGTGT?????CGAAAGACTAATCGA?CCATGAG?TG?GTC???GGGTAGAGTT?TCTTTTCTGCTT?AACGAGCCC?GAAG?GC?CTGGAATCGGATCATCCGGAG??ATAGGGCTCAGAGGTGGGT??AGAGCGCCGCACATCACGTGC?TCGG?TGCGCC?ATC??AC????TCC???A   [2099]
+Characium_vac      TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACGGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TCTTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAATCCCGACTTA--TGGAAGGGACGTATTTATTAGATAAAAGGCCAGC-CGGGC-T-TGCCCGACCC-TAGGCGAATCATGATAACTTCACGAATCGCATGCCCTC-GTGGCGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCCGACACGGGGAGGTAGTGACAATAAATAACAATACTGGGCATTT--ATGTCTGGTAATTGGAATGAGTACAATGTAAATATCTTAACGA-GTATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGATGTGTTGTCGC-GGTCTGCC-TCT-GGTACGTACTGCGTTCGA---GCATCTTTCTGCTGGGGACGAG--CTCCTGGGCTTAATTGTCTGGG-ACTCGGAATC--AGCGAAGTGACCTTGAGCAAACAAGAGTGTTCAAAGCAAGC-CTACGCTCTGAATTTTTTAGCATGGAATCACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTAGGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCATTTGCCAAGGATGTTTTCATTGATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCAGGTGTTCAATTGATGACCCTGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACACGGGGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTGTGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTAAC--------------------------TACTTCTTAGAGGGACTATTGGCG-TTTAGTCAAT---GGAAGTGTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCATTCAACGAGCCTAT--CCTTGGCCGAGAGGTCCGGGTAATCTTTG-AAACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ACTGGCT--------------------------------GGGAAGAACATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2067]
+Dunaliella_par     TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACCTT--TACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAAAAGGCCAGC-CGGGC-T-TGCCCGACTC-TTGGCGAATCATGATAACTTCACGAATCGCACGGC-TTCGTGCCGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCCAACACGGGGAGGTAGTGACAATAAATAACAATACCGGGCATTT--TTGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GTATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTGTAGC-GGTCAGCC-TTT-GGTGAGTACTGCTACGGC---CCACCTTTCTGCCGGGGACGTG--CTCCTGGGCTTAACTGTCCGGG-ACACGGAATC--GGCGAGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAAGC-CTACGCTCTGAATACATTAGCATGGAATAACACGATAGGACTCTGG-CTTATCTTGTTGGTCTGTAAGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCAGGTGTTTCGTTGATGACCCTGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACACGGGGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTGTGGGTGGTGGTGCATGGC?GTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTACTAAATAGTCAC--------------------------GACTTCTTAGAGGGACTATTGGCG-TTTAGCCAAT---GGAAGTGTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCATTCAACGAGCCTAT--CCTTGGCCGAGAGGTCCGGGTAATCTTTG-AAACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTTGG--ACTG-GTT-------------------------------GGGAAGAACATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2066]
+Chlamyd_reinha     TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GCACAACCCGACTTC--TGGAAGGGTCGTATTTATTAGATAAAAGGCCAGC-CGGGC-TCTGCCCGACCT-GCGGTGAATCATGATAACTTCACGAATCGTATGGGCTC-GTCCCGACGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAGATGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCCGACACGGGGAGGTAGTGACAATAAATAACAATACCGGGCGCTTC-GCGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGGTGGTGC-GGTCCGCC-TCT-GGTGTGCACTGCTCTGCT---CCACCTTCCTGCCGGGGACGGG--CTCCTGGGCTTCACTGTCTGGG-ACTCGGAGTC--GGCGAGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACATTAGCATGGAATAACACGATAGGACTCTGG-CCTATCT-GTTGGTCTGTGGGACCGGA-GTAATGATTAAGAGGGGTAGTCGGGGGCATTCGTATTCCGTTGTCAGAGGTGAAATTCTTGGATTTACGGAAGACGAACATCTGCGAAAGCATTGGCCAAGGATACTTTCATTGATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCAGATGTTCTTTTGATGACTCTGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACACGGGAAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTGTGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAG--------------------------GACTTCTTAGAGGGACTATTGGCG-TTTAGCCAAT---GGAAGTATGAGGCGATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGACGCGACCAACGAGCCTAT--CCTTGGCCGAGAGGCCCGGGTAATCTT-GTAAACCGCGTCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGAGCT-------------------------------GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2069]
+Volvox_carteri     TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GCACAACCCGACTTC--TGGAAGGGTCGTATTTATTAGATAAAAGGCCAGC-CGGGC-TTTGCCCGTTGA-ATGGTGAATCATGATAACTTCACGAATCGTATGGCCAC-GTGCCGACGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAGATGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCCGACACGGGGAGGTAGTGACAATAAATAACAATACCGGGCGCTTA-GCGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGGTGGTGC-GGTCCGCC-TCT-GGTGTGCACTGCTCTGCT---CCACCTTCCTGCCGGGGACGGG--CTCCTGGGCTTCACTGTATGGG-ACTCGGAGTC--GGCGAGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACATTAGCATGGAATAACACGATAGGACTCTGG-CCTATCT-GTTGGTCTGTGGGATCGGA-GTAATGATTAAGAGGGGTAGTCGGGGGCATTCGTATTCCGTTGTCAGAGGTGAAATTCTTGGATTTACGGAAGACGAACATCTGCGAAAGCATTTGCCAAGGATACTTTCATTGATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCAGATGTTCTTTTGATGACTCTGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACACGGGAAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTGTGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAGCATGACTGCGGTGCGCA---------GACTTCTTAGAGGGACTATTGGCG-TTCAGCCAAT---GGAAGTATGAGGCGATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGACGCGACCAACGAGCCTAT--CCTTGGCCGAGAGGCCCGGGTAATCTT-GTAAACCGCGTCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGACTTTGACTGGGGCAACCTGGTCATGGTT------GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTACCGTAGGTGAACCTGCGGAAGGATCATTG??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2111]
+Chlorococc_min     TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TATTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAAAAGGCCAGC-CGGGC-T-TGCCCGACCT-ATGGCGAATCATGATAACTTCACGGACCGCATGGCCTT-GTCGCGGCGGCGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCCGACACGGGGAGGTAGTGACAATAAATAACAATGCGGGGCCTA---TGGTCTTGCAATTGGAATGAGAACAATGTAAATATCTTAACGA-GTATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGACCACGC-GGTCTGCC-TCT-GGTACGTACTGCGCCTGG---CCACCTTTCTGCTGGGGACG-C--CTCCTGGGCTTCACTGTCTGGGGGGTGGGAGTC--AGCGAAGTGACCTTGAGCAAACAAGAGAGTTCAAAGCAAGC-CTACGCTCTGAATTTTTTAGCATGGAATCACACGATAGGACTGTGG-CCTATCTTGTTGGTCTGTGGGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAACACGAACATCTGCGAAAGCATTTGCCAAGGATGTTTTCATTGATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGCGTCCTTTTGATGACCCCGCCGGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACACGGGGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTGTGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAC--------------------------GACTTCTTAGAGGGACTATTGGCG-TTTAGCCAGT---GGAAGTGTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCATTCAACGAGCCTAT--CCTTGGCCGAGAGGCCCGGGTAATCTTTG-AAACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAGTG-TGC--TGGTGAAGTGTTCGG--ACTTGCG--------------------------------GGGAAGAACATTAAACCCTCCCACTTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2065]
+Draparn_plum       ????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTTACTC---GGATAACTGTAGTAA-TTCTA-AGCTAATACGTGCTTCAAGTCCCAACTTC--TGGAAGGG---TGGTTATAAGA-GTAAGGCCAA--ACGCT---CTCCCGATTT---GA-GAC-----ATAAGTCCACG-ATCGCA--GCCT--GGTGACGGGTGA??????????????????????????????????????????????????????????????????????CGGAGGATTAGGGTTCGGTTCCGGA-AGGGAGCCTGAGAAATGGCTACCA-CATCCAAGGAAGGCAGC-GGCGCGC-AATTACCC-AATCCTGACA--GGGAGGTAGT-ACAATAAATAACAATACCGGGCATTAA-ATGTCTGGTAATTGGA??GA?TAC?ATCTAAATCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AA???CGAAAGTT-GGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGG-ATCGGT?GGAGTTTTTTCGAT-ACTCCATGGGCACCTTAT-GAGAAATC-AAGTCTTTGGGTTCCGGGGGGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTC-GG-AACGAACG-GACCTCAGCCTGCTAAATAGTCACCTTCTCGCGGCAGGC-----------CACTTC--AGAGGGACTATTGCCG-TTTAGGC???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGAATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTACCGTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-T-C--TGGT-AAGCGTTCGG--A-TGAAGCGGTGGGACTCTCCTGCCCTCCC---------GAGAAGTTCGTTAAACCCTCCCACC????????????????????????????????????????????????????????????????????????CC?TGAT?CTTCTGTGAAAGGT???GAGTACGAGCA?TACCT?TTGGGACCC?AAAGATGGTGAACTATGCCTGAGCGAGG?CGAAGC?AGAGGAAACTCTGGT??AGGCTC?GTA?ATGTGCTGACGTGC?AATCG?CTTTTCGGACTTGGG?ATA????C???AGA?T?AT??AACCAT???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2098]
+Uronema_belk       ?????????????????????????????????????????????????????????????????????????????????????????????GTTTATTTGATGATACCTT--TCCTC----GATAACCGT-GTA--TTCTAGAGCTAATACGTGC-GCAACTCCCGACTTC--TGG--GGGA-GTGTT-ATTAGATCT-AGGC-A------GC----TCCCGACA----GGTGA-TCATG-TAACTCCACGAATCGC--GGCC---GCGC???????????????????????????????????????????????????????????????????????????????????????????TTCGATTCCGGAGA--GAGCCTGAGGAACGGCTACCA-CATCC--GGAAGGC-GC---CGCGC--ATTACCC-AATCC-GA---GGGG-GG--GTGACAATAAATAACAATACCGGGCATTT--ATGTCTGGT--TTGGAATGAGTACAATCTAA??CCCTTAA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GAAAGCATTTGCCAAGT?TGTCTTCATTAATCAA-AA-GAAAGTTGGGGGCTCGAAGACGATTAGATACCG-T-GTAGTCTCAACCATAAACGATGCCGA-CTAGG-ATCGGTGGA--TTTTTT-----ACTCCGTGGGCACCTTAT-GAGAAATC--A-TCTTTGGGTTCCGGGGGGA-TAT?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TTCTATGG-TGGTG?TG?ATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTC?GGTAACGAACGAGACC-CAGCCTGCTAAATAGTCACC-----GCGGCAGGA-----------GACTT-TTAGAGGGACTATTGTC---TTAGGCAAT---GAAGTA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGTCTTCAAC-A-GAATGCCTAGTAAGCG--AGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCT-CCGATTGGGTG-TGT--GGGTGAAGCGCTCGG--AT?GGGGCGGTCGGAGTCTCCCACCCCCT----------GAGAAGTCCGTTAAACCCTCCCACCTA-AGGAA?????????????????????????????????????????????????????????????????????????????????????????GAGT?CGAGCA??ACCT?TTGGGACCC??AAGATGGTGAACTATG?CTGAGCA?GG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGATGTGCTGACGTGCAAATCG?CTTTTCGGACTTGGGTATA???GCGAAA?ACT?ATC?AACCATGCA?TC?GGCCCTGGG?AGAGTTCTCTTTTCTTTTT?AAC?AGCT??GAAG?GCCCTGGAATCGAATCATTCGGA???ATAGGGCTCAGCA?CTGGT?AAAGCACCGCACGTCTCGCGGTGT?C?GCGCGC??GAT?GA???GGTCC?TGA   [2050]
+Chlamydom_moew     ??????????????????????????????????????????????????????????????????????????????ATTAAATCAGTTATAATTTATTTGATGGTAC-TTACTACTT---GGATAACCGTAGTAA-TTCTAGAGCTAATACATGCGGATAATCCCAACTTC--TGGAAGGGACGTATTTATTAGATAAAAGGCCAGC-CGTGC-T-TGCACGATCC-TGGTTGATTCATGATAACTTCACGAATCGCATGGCCTT-GTGCCGGC??????????????????????????????????????????????????????????????????ACGGCTGAC----AATCAGGGTTCGATTCCGG-GAGGGAGCCT-AG---CGGCT-CCA--ATCC--GGAAGGC-GC-?-CGCGT-AATTACCC-AATCC------GGGGAGGT--TGACAATAAATAACAATA-TCGGGCATCCAATGTCTGATAATTGGAATG??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGAAATTCTTGGATTTCGGAAAGACCTACCACTGCGAA?GCATTTGCCAAGGATGTTTTCATT?ATCAAGAA?GAAAGTAGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCTACCATAAACGATGCCGA-CCAGGGATTGGCAGGTGTTCCTTTGATGACCCTGCCAGCACCTTGA-GAGAAATCAGAGTCTTTGGGTTCCGGGGGGAGTATGG??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGATT?AGAGCTCTTT?TTGATTCT-TGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCGGCGGTCCTTTCTGGATCGCCTC-----GACTTCTTAGAGGGACTATTGACGTT-TAGTCAAT---GGAAG??????????????????????????????????????????????????????????????????????????????????????????-?????????????????????????????????????????????????????????????????????????GGAATGCCTAGTAAGCGTGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACWYWC-GCCCGTYGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGCTTTGAGGGG-TGG-CAACTCCCCAG-AGCC---GAGAAGATCATTAAACCCTCCCACCTAGAG???????????????????????????????????????????????????????????TCGACCGACC?TAGAGCTTCTGCGAAAGGTTT?GAGTGCGAGCA?TA?ATGTTGGGACC????AGATGGTGAACTATGCCTGGGCAGGG?TGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGATGTGCTGACGTGCAAATCG?CTTTTCTGACCTGGGCATAGGGGCGAAAGACTAATCGAACCAT?CTAGTA???????????????????????????????CACCGCTC?GAAA?GCCCTGGAATCG?AT?ATTCGGAG??ATCGGGCTT?GCCGCTGGG?AAAGCCTCT?AGTTTTGA?GGTGTCCCGTGCGCC?GAT??AC??GATCCTT?A   [2111]
+Stephanos_pl       ???????????????????????????????????????????????????????????????????GCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACCTT--TACTC---GGATAACCGTAGTAA-TTCTAG-GCTAATACGTGC-GTAAATCCCGACTTC--TGGAAGGGA-GTATTTATTAGATAAAAGGCCAGC-GAGGC-TTGCTCGACTCTT-GG-CGAATCATGATAACTTGACGAATCGCATGGCCTG-GTAACGGGTGA???????????????????????????????????????????????????????????????????????CGG-GGATTAGGGTTCGATTCCGG-GAGGGAGCCTGAGAAACGGCTACCA-CATCC-AGGAAGGCAGCAGGCGCGC--ATTACCC-AATCCGAA---GGGGAGGTAGTGA-AAT-AATAACAATACCGGGCATTT--ATGTCTGGTAATTGGA-TGAGTACAATGTAAATAT???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCAGGTGTTTCGTTGATGACCCTGCCAGCACCTTAT-GAGAAATC--AGTTTTTGGGTTCC?GGGGGA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCTTTCTTGATTCT-TGGGTGGT-GTGC-TGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCACGGGACCTTGGTACACGCTT-------GACTT-TTAGAGGGACTATTGGCGTTACAGTCAAT---GGA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCC-ACCGATTGGGTG-TGC--TGGTGAAGTGTTGGG--ATTGACTT--AGTGG-TGGGCA-CTCCA-TGTTGTT---GAGAACAACATTAAACCCTCCCACCTAGA--????????????????????????????????????????????????????GCACCATCGACCGACCATGAT?CTTCTGTGAAAGGTTT?GAGTGCGAGCA?TACCTGTTGGGACCC?AAAGATGGTGAACTATGCCTGAGCAAGG?TGAAGCCAGAGGAAACTCTGGTGGAGGCCT?GTAGATGTGCTGACGTGCAAATCG?CTTTTCTGACTTGGGTATAGGGGCGAA?GACTAATCGAACCAT????????????TGGGAAGAGTTCTCTTTTCT?TTT?AAC?AGC?CGGAAG?GCCCTGGAATCGAATC?TTCGGAG?AGTAGGGCCCAGCAGCTGGT?AAAGCACCGCACTTCTCGTGGTGTCCGGCGCGCT?AGT?CAC??GGTCCGTGA   [2111]
+Carteria_rad       ???????????????????????????????????????????????????????????????????GCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTAC-TTGGTACTC---GGATAACTGTACCAA-AG-TAGAGCTAATACGTGC-GTAAATCCCGACTCA--C-GAAGGGACGTATTTATTAGATAAAAGGCCAGC-CGGGC-T-TGCCCGACTTTT-GGCGACTCATGATAACTTCACGAATCGCATGGCCTG-GTAACGGGTGA???????????????????????????????????????????????????????????????????????CGGAGGATTAGGGTTCGATTCCGGAGA-GGAGCCTGAGAGATGGCTACCA-CATCCAAGGAAGGCAGCA-GCGCGC--ATTACCC-AATCCTAAC-CGGGGAGGTAGTGACAATAAATAACAATACTGGGCATTT--TTGTCTGGTAATTGGAATGAGTACAATCTAAATCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AA-A--GAAA-TTGG-GGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCAGGCGTTTTGTTAACGACCCTGC-AGCACCTTAT--AGAAATC--A-TTTTTGGGTTCCGGGGGGA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ACAGATTGAGAGCTCTTTCTTGATTCT-TGGGTGGT--TGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCACGATTGCTTTTTGGCAGTCGGCA----GACTTCTTAGAGGGACTATTGTCG-TTTAGGCAG???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TCTT-AACGAGGAATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATCGGA-GTCCTTGGCTGG-CAACAGTTGAGGTTTCT--GAGAAGTTCATTAAACCCTCCC?????????????????????????????????????????????????????????????GCACCATCGACCGACCATGA?GCTTCTGC?AAAGGTTT?GAGTGCG?GTG?T?ACT?TTGGGACCC???AGATGGTGAACTATGCCTGAGCAGGG?TGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGATGTGCTGACGTGCAAATCG?CTTTTCGGACTTGGGTATAGGGGCGAAAGACTAATCGAACCATG?T?C??G?CCCCAGGAAGAGTTCTCTTTTCTTTTTCAAC?A?C?C?GAAG?GCCCTGGAATCGAAT??TTCGGAG??ATAGGGCTCAGAGGCTGGT??AAGCACCGCACTT?TCGCGGTGTCTGGCGCGTC?GAC?GAC??GGTCCTT?A   [2122]
+Gonium_pecto       ??????????????????????????????????????????????????????????????????????????GCTCATTAAATCAG-TATAGTTTATTTGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GCACAACCCGACTTC--TGGAAGGGTCGTATTTATTAGATAAAAGGCCAGC----GC-TTTGCCCGACT--GCGGTGAATCATGATAACTTCACGAATCGTATGGCCTG-GTAACGGGTGA???????????????????????????????????????????????????????????????????????CGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAGATGGCTACCA-CATC--AGGAAGGC----GGCGCGC--ATTACCC-AATCCGAC---GGGGAGGTAGTGACAATAAATAACAATACCGG--TC----GCGTCTGGTAATTGGA?TGAGT?CAATCTAAATCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCAGATGTTCCTTTGATGACTCTGCCAGCACCTTAT-GAGAAATCAAA-TTTTTGG-TTCCGGGGGGAGGA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGACAGATTGAGAGCTCTTTCTTGATTCTGTGGGTG-T--TGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAGCATCCTGCGGTGCGCA----------GACTT-TTAGAGGGACTATTGGCG-TTCAGCCAAT---GGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ACGGAATGCCTAGTAAGCGCGAGTCATCAGCTCG-GTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGATC--GGCTGG---GGCAACTCGGCCTTGATT---GAAAAGTTCATTAAACCCTCCCAC???????????????????????????????????????????????????????????GCACCATCGACCGACCATGTTGCTTTTGCGAAAGGTT??GAGTGCGAGCA?TACCTGTTGGGACCC??AAGATGGTGAA?TATGCCTGAGCAAGA?TGAAGCCAGAGGAAACTCTGGTGGAGGTCTGGTAGATGTGCTGACGTGC?AATCG?CTTTTCTGACTTGGG?ATAGGGG????AGACT?ATCGAACCATGC??TC?GGCCCTGGG?AGAGTTCTCTTTTCT?TTT?AAC?A?CCC?GAAG?GC?CTGGAATCGAAT??TTCGGAG??ATAGGGCTCAGAGGTTGGT?AAAGCACCGCAGTTCTCGCGGTGTCCGGCGCGC??GTT?GA????GTCC??GA   [2104]
+Chlorella_kess     TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTTTA-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACCTTACTAC-C---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATTTAAGGCCGAC-CCGGC-TCTGCCGGTCTC-GCGGTGAATCATGATAACTTCACGAATCGCATGGCCTT-GCGCCGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGGGAGGTAGTGACAATAAATAACAATACCGGGCCTTTTCAGGTCTGGTAATTGGAATGAGTACAATCTAAACCCCTTAACGA-GGATCAATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGCTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGCGGGGCCTGCC-GGTCCGCCGTTTCGGTGTGCACTGGCAGGGC----CGCCTTGTTGCCGGGGACGGG--CTCCTGGGCTTCACTGTCCGGG-ACTCGGAGTC--GGCGCTGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACATTAGCATGGAATAACACGATAGGACTCTGG-CCTATCCTGTTGGTCTGTAGGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCGATGTCAGAGGTGAAATTCTTGGATTTTCGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATCGGCGGATGTTTCTTCGATGACTCCGCCGGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAC--------------------------GACTTCTTAGAGGGACTATTGGCG-A-TAGCCAAT---GGAAGCATGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCAATCAACGAGCCTAG--CCTTGGCCGAGAGGCCCGGGTAATCTTTG-AAACTGCATCGTGATGGGGATAGATTATTGCAATTATTAATCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGC???????????????????????????GC-C---AGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2099]
+Chlorella_vulg     TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTTTA-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTAC-TTACTACTC---GGATACCCGTAGTAA-ATCTAGAGCTAATACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAAAAGGCCGAC-CGGGCTTCTGCCCGACTC-GCGGTGAATCATGATAACTTCACGAATCGCATGGCCTT-GTGCCGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTTGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGGGAGGTAGTGACAATAAATAACAATACTGGGCCTTTTCAGGTCTGGTAATTGGAATGAGTACAATCTAAACCCCTTAACGA-GGATCAATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGCTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGACCTGCC-GGTCCGCCGTTTCGGTGTGCACTGGCAGGGC---TCACCTTGTTGCCGGGGACGGG--CTCCTGGGCTTCACTGTCCGGG-ACTCGGAGTC--GGCGCTGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACATTAGCATGGAATAACACGATAGGACTCTGG-CCTATCCTGTTGGTCTGTAGGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATCGGCGGATGTTTCTTCGATGACTCCGCCGGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAC--------------------------GACTTCTTAGAGGGACTATTGGCG-A-TAGCCAAT---GGAAGCATGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCATTCAACGAGCCTAG--CCTTGGCCGAGAGGCCCGGGTAATCTTCG-AAACTGCATCGTGATGGGGATAGATTATTGCAATTATTAATCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGC???????????????????????????GC-C--GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2102]
+Protothec_wic      TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAA--TGGTT-A-TACTATGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TACTACTC---GGATACCCGTAGTAA-TTCTAGAGCTAATACGTGC-GCACATCCCGACTTC--TGGAAGGGACGTATTTATTAGATCCAAGGCCGAC-CGGGC-T-TGCCCGACTC-GCGGTGAATCATGATAACTTTACGAATCGCATGGCCTTTGTGCCGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATCAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGGGAGGTAGTGACAATAAATAACAATACCGGGCCT-CACAGGTCTGGTAATTGGAATGAGTACAACCTAAACACCTTAACGA-GGATCAATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGCTGCAGTTAAAAAGCTCGTAGTTGGATTTCGAGGTCGTCCTGCT-GGTCCGCCGTTTCGGTGTGCACTGGCGCGGC---GGTCTTTGTTGCTGGGGACGTG--CTCCTGGGCTTCACTGTCCGGG-ACTCGGAGTC--AGCGAGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-TACCGCTCTGAATACATTAGCATGGAATAACATGATAGGACTCTGG-CTTATCTTGTTGGTCTGTAAGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGAC?AACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCCTAGTCTCAACCGTAAACGATGCCGA-CTAGGGATCGGCGGACGTTCTATCGATGACTCCGCCGGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTGCT--------------------------TACTTCTTAGAGGGACTATTGGCG-A-TAGCCAAT---GGAAGCTTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCATGCAACGAGCCTAG--CCTTGGCCGAGAGGCCCGGGTAATCTCAT-AACCTGCATCGTGATGGGGATAGATTATTGCAATTATTAATCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGC???????????????????????????GC-C--GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2097]
+Chlorella_prot     TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTGAGTATAACCTG-TTTACTACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TGCTACTG---GGATACCCGTAGTAA-TTCTAGAGCTAATACCTGC-GCAAACCCCGACTTTGGTGGAAGGGGTGTATTTATTAGATCCAAGGCCGAC-CGGGC-TC-GCCCGACTC-GCGGTGACTCATGATAACTTTACGAATCGCATGGTCTCTGCACCGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTT-GTCGGTAGGATAGAGGCCTACCGAGGTGTTCACGGGTGACGGAGGATCAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGGGAGGTAGTGACAATAAATAACAATACCGGGCCT-CACAGGTCTGGTAATTGGAATGAGTACAATCTAAACCCCTTAACGA-GGATCAATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGCTGCAGTTAAAAAGCTCGTAGTCGAACTTCGGGGGGCCCGGGCC-GGTCCCCCCGCCCTCTGCGCACTGGCATGGCG--CCCCCCTGTTGCTGGGGACGGCG-CTCCTGGGCTTTGCTGTCCGGG-GCCCGGAGTC--AGCGAGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-ATCCGCTCTGAATACATTAGCATGGAATAACATGATAGGACTCTGG-CTTATCACGTTGGTCTGTAAGACCGGA-GTAATGATTGAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTGATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCCTAGTCTCAACCGTAAACGATGCCGA-CTCGGGATCGGTGGTCGTTCATTCAATGACACCACCGGCACCTCAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTTTT--------------------------AACTTCTTAGAGGGACTCTCGGCG-A-TAGCCGAG---GGAAGCTTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACAATGATGCGGTCAACGAGCCCAG--CCTTGGCCGACAGGCCCGGGTAATCTCGC-AACCCGCATCGTGATGGGGATAGATCATTGCAATTATTGATCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAGTG-TGC--TGGTGAAGTGTTCGG--ATTGGC???????????????????????????GC-C--GAGAAGTTCATTAAACCCTCCCACTTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2103]
+Chlorella_min      TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTTTA-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GCAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATATAAGGCCGAC-CGGGC-TCTGCCCGACTC-GCGGTGAATCATGATAACTTCACGAATCGCATGGCCTC-GTGCCGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGGGAGGTAGTGACAATAAATAACAATACCGGGCCT-TTCAGGTCTGGTAATTGGAATGAGTACAATCTAAACCCCTTAACGA-GGATCAATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGCTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGGCACGTC-GGTCCGCCGTTTCGGTGTGCACTGGCGGGGC---CCACCTTGTTGCCGGGGACGGG--CTCCTGGGATTCA-TTTCCTGGGACTCGGAGTC--GGCGAGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACATTAGCATGGAATAACACGATAGGACTCTGG-CCTATCCTGTTGGTCTGTAGGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATCGGCGGGTGTTCTTTTGATGACCCCGCCGGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAC--------------------------GACTTCTTAGAGGGACTATTGGCG-A-TAGCCAGT---GGAAGCATGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCATTCAGCGAGCCTAG--CCTTGACCGAGAGGTCCGGGTAATCTTTG-AATCTGCATCGTGATGGGGATAGATTATTGCAATTATTAATCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGC???????????????????????????GC-C--GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2100]
+Neochloris_aqu     TCATATGCTTGTCTCAAAGATTAACCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TCCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAAACCCGACTTC--TGGAAGGGTCGTATATATTAGATAAAAGACC-AG-CCGGAC-TTTGTCCGACCCGCGGTGACTCATGATATCTTCACGAATCGCATGGCCTT-GTGCACGGCATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGGGAGGTAGTGACAATAAATAACAATACCGGGCACATC-GTGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GTATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GGTCCGCC-TAT-GGTGAGTACTGCTATGGC---CTTCCTTTCTGCCGGGGACGGG--CTCCTGGGCTTAACTGTCCGGG-ACTCGGAGTC--GGCGTTGTTACTTTGAGTAAATTGGAGTGTTCAAAGCAAGC-CTGCGCTCTGAACATTTTAGCATGGAATAACACGATAGGACTCTGG-CCTATCCTGTTGGTCTGTAGGACCAGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGACGTTTCATTGATGACTCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAC--------------------------GACTTCTTAGAGGGACTATTGGCG-TTTAGTCAAT---GGAAGTATGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCGTTCAACAAGCCTAT--CCTTGACCGAGAGGTCCGGGTAATCTTTG-AAACCGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGCC??????????????????????????????--AAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2099]
+Neochloris_vig     TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TCCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAAACCCGACTTC--TGGAAGGGTCGTATATATTAGATAAAAGACC-AG-CCGGAC-TTTG????GCCCGCGGTGACTCATGATATCTTCACGAATCGCATGGCCTT-GTG????CGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGGGAGGTAGTGACAATAAATAACAATACCGGGCACATC-GTGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GTATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GGTCCGCC-TCT-GGTGAGTACTGCTATGGC---CTTCCTTTCTGCCGGGGACGG---CTCCTGGGCTTGACTGTCCGGG-ACTCGGAGTC--GGCGTTGTTACTTTGAGTAAATTGGAGTGTTCAAAGCAAGC-CTGCGCTCTGAACATTTTAGCATGGAATAACACGATAGGACTCTGG-CCTATCCTGTTGGTCTGTAGGACCAGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTT-CATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGACTCAACCATAAACGATGCCGA-CTAGGGATTTGCGGACGTTTCATTGATGACTCCGCCAGCACCTTGT-GAGAAATCAAAGTTTTTGGGT--CGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGT???--------------------------GACTTCTTAGAGGGACTATTGGCG--TTAGTCAATT--GGAAGTATGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCGTTCAACAAGCCTAT--CCTTGACCGAGAG---CGGGTAATCTTTG-AAACCGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGC???????????????????????????GC-C--AACAAGT-CATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2090]
+Pediastrum_dup     TCATATGCTTGTCTCAGAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACCTT-CTACTC---GGATACCCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAAACCCGACTTC--TGGAAGGGTCGTATATATTAGATAAAAGGCCGAGCCG??C-TTTGTCCGACCC-GCGGTGAATCATGATATCTTCACGAATCGCATGGCCTT-GCGCCGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGATACGGGGAGGTAGTGACAATAAATAACAATACTGGGCACTTC-GTGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GTATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GGTCCGCC-TAT-GGTGAGTACTGCTACGGC---CTCCCTTTCTGCCGGGGACGAG--TTGCTGGGCTTCACTGTCCGGT-GCTTGGAGTC--GGCGTTGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAACG-ATACGCCCTGAATACTTTAGCATGGAATAACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTAGGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGATGTTTTTTTGATGACTCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATAGGCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAC--------------------------GACTTCTTAGAGGGACTATTGGCG-TTTAGTCAAT---GGAAGTATGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGGGCCGCACGTGCGCTACACTGATGCATTCAACGAGCCTAT--CCTTGACCGAGAGGTCCGGGTAATCTTTG-AAACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGCC??????????????????????????????--GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2101]
+Scenedesm_obl      TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGGTGGTACCTTACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATATATTAGATAAAAGGCCGAC-CGAGC-TTTGCTCGACCC-GCGGTGAATCATGATATCTTCACGAAGCGCATGGCCTT-GTGCCGGCGCTGTTCCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGATACGGGGAGGTAGTGACAATAAATAACAATACCGGGCATTTT-ATGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GGTCCGCC-TAT-GGTGAGTACTGCTATGGC---CTTCCTTTCTGTCGGGGACGGG--CTTCTGGGCTTCACTGTCCGGG-ACTCGGAGTC--GACGTGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-TTACGCCA-GAATACTTTAGCATGGAATAACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTAGGACCGGA-GTAATGATTAAGAG?GACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGAATGTTTTTTTAATGACTTCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCTC--------------------------GACTTCTTAGAGGGACTATTGGCG--TTAGTCAAT---GGAAGTATGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCATTCAACAAGCCTAT--CCTTGACCGAAGGGTCTGGGTAATCTTTG-AAACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGC???????????????????????????GC-C--GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2097]
+Characium_hin      TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACCTT-CTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAAACCCGACTTC--TGGAAGGGTCGTATATATTAGATAAAAGGCCGAC-CGGGC-TTGCCCGACCC--GCGGTGAATCATGATATCTTCACGAATCGCATAGCCTT-GTGCTAGCGA-GTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGGGAGGTAGTGACAATAAATAACAATACCGGGCACATC-GTGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GTATCAATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GGTCCGCC-TAT-GGTGAGTACTGCTATGGC---CTTCCTTTCTGCCGGGGACGGG--CTCCTGGGATTAACTTATCGGG-ACTCGGAGTC--GGCGTTGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAAGC-CTGCGCTCTGAATACTTTAGCATGGAATAACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTAGGACCAGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGAACGTTTCATTGATGACTTCGCCAGAACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCCG--------------------------GACTTCTTAGAGGGACTATTGACG-TTTAGTCAAT---GGAAGTATGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCATTCAACGAGCCTAT--CCTTGGCCGAGAGGTCCGGGTAATCTTTG-AAACTGCATCGTGATGGGGCTAGACTTTTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCGATTCATCAGATCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGCC??????????????????????????????--AAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2097]
+Chlorella_fus      TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGGTGGTACCTTACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATATATTAGATAAAAGGCCGAC-CGGGC-TT?GCCCGACCC-GCGGTGAATCATGATATCTTCACGAAGCGCATGGCCTT-GCGCCGGCGCTGTTCCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGATACGGGGAGGTAGTGACAATAAATAACAATACCGGGCATTTC-ATGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTTCTAGC-GGTCCGCC-TAT-GGTGAGTACTGCTATGGC---CTTCCTTTCTGTCGGGGACGGG--CTTCTGGGCTTAATTGTCCGGG-ACTCGGAGTC--GACGTGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-TTACGCCCTGAATACTTTAGCATGGAATAACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTAGGACTGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGAATGTTTTTTTAATGACTTCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCCT--------------------------GACTTCTTAGAGGGACTATTGGCG--TTAGTCAAT---GGAAGTATGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCATTCAACAAGCCTAT--CCTTGACCGAAAGGTCCGGGTAATCTTTG-AAACTGCATCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGC???????????????????????????GC-C--GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTCTCCG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2098]
+Ankistrodesmus     TCATATGCTTRTCTCAAAGATTAAGCCATGCATGTC?AAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC--TCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GCAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAAAAGGCCGAC-CGGGC-TCTGCCCGACCC-GCGGTGAATCATGATAACTTCACGAATCGCATAGCCTC-GTGCTGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGATACGGGGAGGTAGTGACAATAAATAACAATACCGGGCWTTCA-ATGTCTGGTAATTGGAATGAGTACAATTTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTAGGTTCCATC-GGTCCGCC-TAT-GGTGAGTACTGCTGTGGC---CTTCCTTTTTGCCGGGGACGGT--CTCCTGGGCTTCACTGTCCGGG-AATCGGAGTC--GGCGATGATACTTTGAGTAAATTAGAGTGTTCAAAGCAAGC-CTACGCTCTGAATACTTTAGCATGGAATATCGCGATAGGACTCTGG-CCTATCTCGTTGGTCTGTAGGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCGTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGAGGATGTTCTTTTGATGACTTCTCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAC--------------------------GACTTCTTAGAGGGACTGTTGGCG--TTAGCCAAC---GGAAGTATGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCAC-CGCGCTACACTGACGCATTCAACGAGCCTAT--CCTTGACCGAGAGGTCTGGGTAATCTGTG-AAACTGCGTCGTGATGGGGATAGATTATTGCAATTATTAGTCTTCAACGAGGAATGCCTAGTAGGCGCGATTCATCAGATCGCGCCGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGC???????????????????????????GC-C--GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2095]
+Pseudotreb_gig     ??????????????????????????????????????????????????????????????????????????????????????????????????TTTGATGGTGCCTTACT-CTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GCACATCCCGACTCC----GAAGGGA-G--TTTATTAGATAAAAGGC-GAG-CCGGG-GC--CCCGAGAC-GCGGTGAATCA-GATAAC--CACGAATCG--TAGCCTT-GTGCCGC???????????????????????????????????????????????????????????????????????????????GGATTAGGGTTCG?TTCCGGAGAGGGAGCCTGAG---CGGCT-CCA-CATC---GGAAGGCAGC--GCGC-C--ATTACCC-AATCCTG-T-CAGGGAGGTA-TGACAATAAATAACAATACCGGGCTTTTTCAAGTCTGGTAATTGGAT????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATC--GAA-GAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGTGTTCTTTCGATGACCCCGCCAGCACCTTAT-GAGAAATC--AGTTTTTGGGTTCCGGGGGGAGTATGG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GCCGTTCTTAGTTGGTGGG-TGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCACGGCTGCTTTYCAGTCGGCA-------GACTT-TTAGAGGGACTTTTGGCG-ACTAGCCAAA---GGAAGTGTG??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CCTAGTAAGCG--AGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATTGGGTG-TGC--T-GTGAAGCGTTCGG--ATTGCGTTAGTCGGGTTTTCCGCCTCCTCTCACT-----GAGAAGTTCGTTAAACCCTCCCACCT-GAG-A??????????????????????????????????????????????????????????????????????????????????????????????????????????????GGG?CCC????GATGGTG??CTATG?CTGAGC??GG?C?AAGCCAGAGGAAACTCTGGTG?AGGCTC?G?AGATGTGCTGACGTGC??ATCG?CTTTTCGGACTTGGG??TA??GGCG??AGACTAATCGAACCAT??????????????GG?AGAGTTCTCTTTTCT?TTT??AC?AGCT??GAAG?GCCCTGGAATCGGCT?ATCCGGAG??A?AGGGCCCA?AAGCTGGT??AAGCACTGCACTTCTCGGCAGTGTCCGGAGCCC?ACC?GAC??GGCCC?TGA   [2098]
+Pleurastr_terr     ????????????????????????????????????????????????????????????????????????????????????TCAGTTATAGTTTATTTGATGGTACACTACTACTC---GGATAACCGTAGTAA-TTCTAGGGCTAATACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAAAAGGCCGAC-CGGACTC-G-TCCGACCC-GCGGTGAA-CCTGATAACTTCACGAATCGCATGGCCTT-GC-CC???????????????????????????????????????????????????????????????????????????????????ATTAGGGTTCGATTCCGG-GAGGGAGCCTGAG---CGGCTACCA-CATCCA-GGAAGGCAGC--GCGCGC--ATTACCC-AATCCTGA---GGGGAGGTAGTGACAATAAATAACAATACCGGGCATTTA-ATGTCTGGTAATTGGAATG???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GAAAGTT-GGGGCTC-AAGWCGATT-GATACCG-T--TAGWCTCAAY--TA-WCGATGCC-A--TAGG-ATTGTGCCGATGTTTATTCAATTACTCCGCCACACCTYAT-GA-AAATC-AAGWWTTT---TTCC??GGGGAGTATG????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGGTGCATGGCCGTTCTTAGTTGGT?GGTTGCCTTGTCAGGTT-GATTCCGGTAACGAAGGAGACCTCAGCCTGCTAAATAGTC-CTAATCTTCTCGCGGTTAGCT------GACTT?TTAGAGGGACTATTGGCG-TTT-GTCAAT---GGAA-TAT??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GTCTTCAACGAGGAATGCCTAGTAAGCG--AGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAAAGTTTGG--ACTGGCGGTAGGCGGGTGGTTCGCCATCTGCTGCTGCC-GGGAAATTCTTTAAACCCTCCCACCTAGAG-AA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGCC?TGGG?AGAGTTCTCTTTTCT?TTT??AC?AGC?C?GAAG?GCCCTGGAATCGAATC??TCGGAG??A?AGGGCTCAGAAGCTGGT?AAAG??C?GCA?GTCT?GCGGT?GTC?GCGCGC??GAT??AC??GGTCC?TGA   [2107]
+Characium_per      TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAATCCCGACTTC--TGGAAGGGACGTATTTATTAGATAAAAGGCCGAC-CGGGC-T-TGCCCGACTC-GCGGTGAATCATGATAACTTCACGAATCGCACAGCCTT-GTGCTGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAACGTAGTGGGTTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATACTGACACAGTGAGGTAGTGACAAAAAATATCGATGGTGGGCTCTTTCGAGTTTGCCAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCAATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGCGGAGCC-GATCTGCCCTTTGGGTATGCATTGGCTTTGC---CTATCTTGCTGCCGGGGA-GGCG-CTCCTGGGCTTCATTGCTCGGG-ACGTTTAGTC--GGCGAGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTTTGCATACATCAGCATGGAATATCACGAGAGGACTCTGG-CCTATCTTGTTGGTCTGTGGGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGACGTTCATTCGATGACTCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTC-C--------------------------GACTTCTTAGAGGGACTTTCGGCG-TTTAGCCGAA---GGAAGTGTGAGGCGATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGACGCATTCAACGAGTCTAT--CCTTGGCCGAGAGGTCCGGGTAATCTGAG-AAACTGCGTCGTGACGGGGCTAGATTATTGCAATTATTAATCTTCAACGAGGAATGCCTAGTAAGCGCAAGTCATCAGCTTGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATCGGCT??????????????????????????????--GAGAAGTTCATTAAACCCTCCCACCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2100]
+Parietochl_pse     TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTT-A-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC-TACTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GCACATCCCGACTTC--TGGAAGGGACGTATTTATTAGATTAAAGGCCGAC-CGGGC-TCTGCCCGACTC-GCGGTGACTCATGATAACTTCACGAATCGCAT-GCCTTCGTGCCGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGAGGCCTACCATGGTGGTAACGGGTGACGGAGGATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGGGAGGTAGTGACAATAAATAACTATGCTTGGCTC-TTCGAGTCGGGCAATAGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCAATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGTCGCGCC-GGTCCGCCGTTTCGGTGTGCACTGGCGTGGC---CCACCTTGCTGCCGGGGACGGG--CTCCTGGGCTTCACTGTCCGGG-ACTCGGAGTC--GGCGAGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACATTAGCATGGAATAACACGATAGGACTCTGG-CCTATCTTGTTGGTCTGTGGGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGATGTTTTATCGATGACTCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAAAGGGCAGCCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATGTGAAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTTCGATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAC--------------------------GACTTCTTAGAGGGACTCTCGGCG-ACTAGCCGAT---GGAAGTGTGAGGCGATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCATTCAACGAGCCTAG--CCTTGGCCGACAGGCCCGGGTAATCTTGC-AAACTGCATCGTGATGGGGCTAGATTATTGCAATTATTAATCTTCAACGAGGAATGCCTAGTAAGGCCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGGTG-TGC--TGGTGAAGTGTTCGG--ATTGGCC??????????????????????????????--GAGAAGTTCATTAAACCCTCCCACCTAGAGTAAGCAGAAGTCGTAACAAGGTTTCCGTAG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2104]
+Friedmannia_is     TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTCTAAGTATAAACTGCTTTA-TACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTATTTGATGGTACC--CTTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGC-GTAAACCCCGACTTC--TGGAAGGGGCGTATTTATTAGATAAAAGGCCGAC-CGGGC-TTTGCCCGACTC-GCGGTGAATCATGATAACTTCACGAATCGCATGGCCTT-GTGCCGGCGATGTTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGTTGGATAGAGGCCAACCATGGTGGTAACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAGACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACAGGGAGGTAGTGACAATAAATAACAATACCGGGCTTTTTCAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCAATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCGGGTGGGCGCTACC-GGTCCGCCGATTCGGTGTGCACTGGTCGCGC---CCATCTTGCTGCCGGGGACAGG--CTGCTGGGCTTAACTGTCTGGC-ACCTGGAGTC--GGCGAGGTTACTTTGAGTAAATTAGAGTGTTCAAAGCAGGC-CTACGCTCTGAATACATTAGCATGGAATAACACGATAGGACTCTGG-CCTATCTCGTTGGTCTGTGGGACCGGA-GTAATGATTAAGAGGGACAGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAACGTTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATTAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGTGTTCTATCGATGACCCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGAAAACTTACCAGGTCCAGACATAGTGAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGGTTGCCTTGTCAGGTT-GATTCCGGTAACGAACGAGACCTCAGCCTGCTAAATAGTCAC--------------------------GACTTCTTAGAGGGACTTTTGGCGCCTTAGCCAAA---GGAAGTGTGAGGCGATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGCAATCAACGAGCCTAT--CCTTGACCGACAGGTCCGGGTAATCTTTG-AAACTGCATCGTGATGGGGATAGATTATTGCAATTATTAATCTTCAACGAGGAATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGGATG-TGC--TGGTGAAGTGTTCGG--ATTGGCC??????????????????????????????--GAGAAGTTCTCTAAACCCTCCCATCTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG????????????????????????????????????????????????????????????????????????????????????????????AGATGGTG??CTATGCCTGAGC??GG?CGAAGC?AGAGGA???TCTGGTGGAGGCTC?G?AGATGTGCTGACGTGC?AATCG?CTTTTC?GACTTGG???TAGGGGCGAAAGACTCATC?AACCAT??????????????GG?AGAGTTCTCTTTTCTTCTT?AACAA?CCC?GAAG?G?CCTGGAATCGGCTCATCCGGAG??ATAGGGCTC?GAGGTT?GT?AAAGCACTGCACT????GCAGT?TCCGGAGCGCC?ATT?GAG?CGGCCCTTGA   [2103]
+;
+END;
+
+
+BEGIN CODONS;
+GENCODE UNIVNUC
+;
+END;
+
+BEGIN ASSUMPTIONS;
+	OPTIONS  DEFTYPE=unord PolyTcount=MINSTEPS ;
+
+	EXSET  gaps+unalignsites  =  50-55 110-122 171-176 214-220 228-232 267-280 482-489 657-663 676-690 699-713 729-731 737-743 782-785 1362-1391 1416-1429 1691-1695 1709-1755;
+	EXSET  LSU  =  50-55 110-122 171-176 214-220 228-232 267-280 482-489 657-663 676-690 699-713 729-731 737-743 782-785 1362-1391 1416-1429 1691-1695 1709-1755 1834-2179;
+	EXSET  SSU  =  1-1833;
+
+
+	TAXSET landplants=3-14 17 18;
+	TAXSET chlorophytes_s.l.=19-61;
+	TAXSET LSU_only=3-4 7-10 12-33 39-44 57 58 61;
+END; 
+
+
+
+BEGIN MACCLADE;
+v 3.0
+-1322665249
+1000&/0
+0
+0
+END;


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPMolecular.nex
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPMorph.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPMorph.nex	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPMorph.nex	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,337 @@
+#NEXUS 
+[MacClade 3.01 registered to Equator, UCMP]
+
+BEGIN DATA;
+DIMENSIONS  NTAX=60 NCHAR=110;
+FORMAT MISSING=? GAP=-  SYMBOLS= " 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";
+OPTIONS  MSTAXA=UNCERTAIN ;
+
+CHARLABELS
+	[1]	habitat	[2]	life_history	[3]	attached_to_substrate?	[4]	radial_symmetry	[5]	growth_form
+	[6]	veg._cells_contiguous	[7]	multinucleate_veg._cells	[8]	coenocytic	[9]	distromatic_foliar_thalli	[10]	plasmodesmata
+	[11]	parenchyma	[12]	filaments	[13]	filaments_with_acuminate_tips	[14]	'cells_spindle-shaped'	[15]	zoospores
+	[16]	'autospores/colonies'	[17]	vegetative_cell_w._flagella	[18]	gamete_production	[19]	'multiple_sporulation/fission'	[20]	type_of_sex
+	[21]	chloroplast_shape	[22]	pyrenoids	[23]	thylakoid_membranes_trav._pyr.	[24]	number_of_flagellae	[25]	ret._of_flagella_during_div.
+	[26]	angle_of_basal_bodies	[27]	flagellar_beat	[28]	basal_bodies_distant_in_devel.	[29]	flagellae_extend_to_right	[30]	flag._app._with_180_deg._sym.
+	[31]	absolute_orientation	[32]	BB_overlap_in_mot._cells	[33]	BB_core_connection	[34]	mitotic_spindle_type	[35]	mitotic_spindle_closed
+	[36]	spindle_collapsing_at_telophase	[37]	cupping_microtubules	[38]	microtub._in_plane_of_cell_div.	[39]	phragmoplast	[40]	cell_plate_in_cytokinesis
+	[41]	centrioles_bet._daughter_nucleu	[42]	lactate_fermentation	[43]	Chaeto._autolysin_lyses_sporang	[44]	hydrogenase	[45]	secondary_carotenoids
+	[46]	siphonoxanthin	[47]	gelatin_liquifaction	[48]	photosyst._II	[49]	dormant_zygote_produced	[50]	sporulation
+	[51]	'Zellteilung[_vs._sporulation]'	[52]	common_matrix	[53]	papillae_on_veg._cells	[54]	crystalline_cell_wall	[55]	stigma
+	[56]	#_of_contractile_vacuoles	[57]	apical_insertion_of_flagella	[58]	zoosporangia_abscise	[59]	zoosporangia_operculate	[60]	zoosporangial_exit_plug
+	[61]	keeled_flagella	[62]	urea_amidolyase	[63]	terminal_cap	[64]	prominent_proximal_sheath	[65]	'organic_scales/covering'
+	[66]	transverse_septum	[67]	proximal_septum	[68]	SMAC	[69]	diaphasis	[70]	distal_fiber_in_motile_cell
+	[71]	specialized_zoosporangia	[72]	MLS_present	[73]	glycollate_oxidase	[74]	oogonium_assoc._w._sterile_cell	[75]	eggs_retained_in_oogonium
+	[76]	apical_cell_growth	[77]	flavonoids	[78]	zygote_retained	[79]	placental_transfer_cells	[80]	true_antheridia
+	[81]	archegonia	[82]	embryo	[83]	cuticle	[84]	monoterpenes	[85]	lunularic_acid
+	[86]	elaters	[87]	oil_bodies	[88]	'D-Methionine'	[89]	stomata	[90]	vertical_division_of_zygote
+	[91]	pseudoelaters	[92]	xylem	[93]	phloem	[94]	perine_on_spores	[95]	aerial_sporophyte_axis
+	[96]	columella_in_sporangium	[97]	multicellular_rhizoids	[98]	leaves_on_gametophyte	[99]	articulated_peristome	[100]	independent_sporophyte
+	[101]	branched_sporophyte	[102]	orn._tracheid_walls	[103]	true_lignin	[104]	megaphylls	[105]	trichomes
+	[106]	vascular_cambium	[107]	eustele	[108]	seeds	[109]	axillary_branching	[110]	flowers
+	;
+STATELABELS  
+	1  freshwater brackish_or_marine terrestrial,
+	2  haplontic diplontic isomorphic_alt. heteromorphic_alt.,
+	3  no yes,
+	4  no yes,
+	5  unicell._or_coccoid multicellular coenobic,
+	6  no yes,
+	7  no yes,
+	8  no yes,
+	9  absent present,
+	10  absent present,
+	11  absent present,
+	12  no 'yes,_unbranched' 'yes,_branched' 'yes,multi-axial',
+	13  no yes,
+	14  no yes,
+	15  absent present 'present,flattened',
+	16  no yes,
+	17  no yes,
+	18  holocarpic heterocarpic,
+	19  no yes,
+	20  isogamy anisogamy oogamy,
+	21  cup reticulated lateral_cup 'H-shaped' 'bi-polar' sets_of_comp.rings incomp._rings multiple_disks spiral stellate plate axile,
+	22  absent present,
+	23  no yes,
+	24  2 4 1 4+ 0,
+	25  no yes,
+	26  angled perpendicular parallel,
+	27  'trailing-undulating' breast_stroke,
+	28  no yes,
+	29  no yes,
+	30  no yes,
+	31  CCW CW DO,
+	32  absent present,
+	33  absent present,
+	34  metacentri centric,
+	35  absent present,
+	36  absent present,
+	37  no yes,
+	38  absent present,
+	39  no yes,
+	40  no yes,
+	41  no yes,
+	42  absent present,
+	43  no yes,
+	44  no yes,
+	45  no yes,
+	46  absent present,
+	47  no yes,
+	48  low_molec._wt. high_molec._wt.,
+	49  no yes,
+	50  absent present,
+	51  no yes,
+	52  no yes,
+	53  no yes,
+	54  no yes,
+	55  no yes,
+	56  2 2+ 1 absent,
+	57  no yes,
+	58  no yes,
+	59  no yes,
+	60  no yes,
+	61  no yes,
+	62  no yes,
+	63  absent bilobed 'plate-like',
+	64  no yes,
+	65  no yes,
+	66  absent present,
+	67  absent present,
+	68  absent present,
+	69  absent present,
+	70  absent present,
+	71  absent present,
+	72  no yes,
+	73  no yes,
+	74  no yes,
+	75  no yes,
+	76  no yes,
+	77  no yes,
+	78  no yes,
+	79  no yes,
+	80  no yes,
+	81  no yes,
+	82  no yes,
+	83  no yes,
+	84  no yes,
+	85  no yes,
+	86  no yes,
+	87  no yes,
+	88  no yes,
+	89  no yes,
+	90  no yes,
+	91  no yes,
+	92  no yes,
+	93  no yes,
+	94  no yes,
+	95  no yes,
+	96  no yes,
+	97  no yes,
+	98  no yes,
+	99  no yes,
+	100  no yes,
+	101  no yes,
+	102  no yes,
+	103  no yes,
+	104  no yes,
+	105  no yes,
+	106  no yes,
+	107  no yes,
+	108  no yes,
+	109  no yes,
+	110  no yes,
+;
+
+MATRIX
+Glycine_max                        cdbabbaaabbaaaaaabacha??a????a??abaaaabba????a??babaa??daaaaa?aaa??aaaa?bbbbbbb??bb?aaabbaabbbbaaaabbbbbbbbbbb
+Oryza_sativa                       cdbabbaaabbaaaaaabacha??a????a??abaaaabba????a??babaa??daaaaa?aaa??aaaa?bbbbbbb??bb?aaabbaabbbbaaaabbbbbbbbbbb
+Zamia_pumila                       cdbabbaaabbaaaaaabacha??a????a??abaaaabba????a??babaa?adaaaaa?aaaaaaaaabbbbbbbbbbbb?aaabbaabbbbaaaabbbbbbbbbaa
+Psilotum                           cdbabbaaabbaaaaaabacha??a????a??abaaaabba????a??babaa??daaaaa?aaa??aaaabbbbbbbbbbbb?aaabbaabbbbaaaabbbbbaaaaaa
+Equisetum_arvense                  cdbabbaaabbaaaaaabacha??a????a??abaaaabba????a??babaa?adaaaaa?aaaaaaaaabbbbbbbbbbbb?aaabbaabbbbaaaabbbbaaaaaaa
+Atrichum                           cdbabbaaabbaaaaaabacha??a?a?ba??abaaaabba????a??babaaa?daaaaa?aaaaaaaaabbbbbabbbbbb?aaabbaabbbbbbbaaaaaaaaaaaa
+Fissidens_taxifolius               cdbabbaaabbaaaaaabacha??aaa?ba?babaaaabba????a??babaaaadaaaaa?aaaaaaaaabbbbbbbbbbbbaaaabbaabbbbbbbbaaaaaaaaaaa
+Plagiomnium_cuspidatum             cdbabbaaabbaaaaaabacha??aaa?ba?babaaaabba????a??babaaaadaaaaa?aaaaaaaaabbbbbbbbbbbbaaaabbaabbbbbbbbaaaaaaaaaaa
+Notothylas_breutellii              cdbabbaaabbaaaaaabachb??aaa?ba?babaaaabba????a??babaaaadaaaaa?aaaaaaaaabbbbbabbbbbbaaaabbbbaaaabaaaaaaaaaaaaaa
+Phaeoceros_laevis                  cdbabbaaabbaaaaaabachb??aaa?ba?babaaaabba????a??babaaaadaaaaa?aaaaaaaaabbbbbabbbbbbaaaabbbbaaaabaaaaaaaaaaaaaa
+Porella_pinnata                    cdbabbaaabbaaaaaabacha??aaa?ba?babaaaabba????a??babaaaadaaaaa?aaaaaaaaabbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaa
+Conocephalum_conicum               cdbabbaaabbaaaaaabacha??aaa?ba?babaaaabba????a??babaaaadaaaaa?aaaaaaaaabbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaa
+Asterella_tenella                  cdbabbaaabbaaaaaabacha??aaa?ba?babaaaabba????a??babaaaadaaaaa?aaaaaaaaabbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaa
+Riccia                             cdbabbaaabbaaaaaabacha??aa??ba?babaaaabba????a??babaaaadaaaaa?aaaaaaaaabbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaa
+Coleochaete_nitellarum             aababbaaabbbaabaabacbbaaaaaabaababaaaabba????a??bbbaaaa?aaaaa?aabaaaaaabbbbaabbaaaaaaaa?aaaaaaaaaaaaaaaaaaaaaa
+Klebsormidium_flaccidum            aaaab?aaababaabaaaaabbaaaaaabaababaaaaaba????a??bbbaaaa?aa?aaaaaaaaaaaa?baaaaaaaaaaaaaa?aaaaaaaaaaaaaaaaaaaaaa
+Micromonas_pusila                  b?aaaaaaaaaaaabab?a?abacb?aaa???abbaaaaa?????a???baaaaadaaaaa?aaabbaaaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Mantoniella_squamata               b?aaaaaaaaaaaabab?a?abacbaaaaaababbaaaaa?????a?b?baaaabdaaaaa?aabbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Nephroselmis_pyriformis            b?aaaaaaaaaaaabab?a?abaababaab?babbaaaaa?????a???baaaaacbaaaa?aabbabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Pedinomonas_minutissima            b?aaaaaaaaaaaabab?a?abacb?a?ab??abbaaaaa?????a???baaaabcaaaaa?aaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Tetraselmis_carteriiformis         b?aaaaaaaaaaaabab?a?ababbcbbabaaaabbbbaaa????a???baaaababaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Enteromorpha_intestinalis          bcbabbaabaaaaabaaabbgbababbaabababbaaaaaa????a?aabbaba??baaaaabbabababaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Ulva_fasciata                      bcbabbaabaaaaabaaabbgbababbaabababbaaaaaa??b?a?aabbaba??baaaaabbabababaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Ulothrix_zonata                    adbabbaaaaabaabaaabagbababbaabababbaaaaaa?a??a?aabbabababaaaa?abbbababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Cymopolia_barbata                  bbbbbbbbaaadaaaaabbbhba?a?ba?b??abbaaaaaa???????abaaaa?dbabaa?aaa???b?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Batophora_oerstedtii               bbbbbbaaa?acaabaabbahb??abba?bababbaaaaaa???????abaaaabdbabaa?a?aaabbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Codium_decorticatum                bbbabbbbaaadaaaaabbbhbaeabbaabababbaaaaaa????b?babaaaa?dbaaaa?aaa???a?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Cladophoropsis_membranosa          bcbabbbaaaacaabaabba?bababbaab??abbaaaaaa????a?aabbaaa??baaba?a?a???a?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Blastophysa_rhizopus               bcbabbbaabacaabaabba?bababbaabababbaaaaaa????b?babbaaa?dba?ba?aaaaa?ab?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Trentepohlia_sp.                   ccbabbaaabacaabaabbaba?babbaabababbaaa?a?????a??abbaaaa?bbaab?a???aaa?bb?aabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Cephaleuros_parasiticus            ccbabbaaabacaabaabbaba?babbaabababbaaa?a?????a??abbaaaa?bbaab?a??aaaa?bb?aabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Characium_vacuolatum               aabaaaaaaaaaabbaaaba?bbaa?baabbaabbbabaa?????a??abaaab??baaaa?aaaba?abaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Dunaliella_parva                   baaaaaaaaaaaaababaaaabbab?b?abbaa?????aa?????a???baaaa?dbaaaa?aaa???abaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Chlamydomonas_reinhardtii          aaaaaaaaaaaaaabababaabbaaabaabbaabbbabaab??b?a?abbaaabbabaaaabaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Volvox_carteri                     aaaacaaaaaaaaaabbbbc?b?a???babbaabbba?aa?????a???babab??baaaa?aaa???abaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Chlorococcopsis_min                aaaaaaaaaaaaaabaaaba?bbaa?baabbaabbbabaa?????a??abaaab??baaaa?aaabaaabaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Draparnaldia_plumosa               aababbaaabacbabaaabagbababbaabbaabbbababa?b??a??bbbabababaaaabaaabababaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Uronema_belkae                     aababbaaababbabaaabagbababbaabbaabbbababa?b??a??bbbabababaaaa?aaabababaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Chlamydomonas_moewusii             aaaaaaaaaaaaaabababaab?aaab?abbaa?????aa?????a??bbaabbbabaaaa?aaa???abaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Stephanosphaera_pluvialis          aaaacaaaaaaaaaabbabacbbababbabbaabbbabaa?????a??bbabbbbbbaaaa?aaa??babaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Carteria_radiosa                   aaaaaaaaaaaaaabababaabbbaabaabbaa?????aa?????a??bbaabbbabaaaa?aaaba?abaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Gonium_pectorale                   aaaacaaaaaaaaaabbabaabba?cbbabbaabbbabaa?????a??bbababbabaaaa?aaabababaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Chlorella_kessleri                 aaaaaaaaaaaaaaaba?b??b??a???????????abaa?a?baaa??baaa??d?aaa????a???a?a??aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Chlorella_vulgaris                 aaaaaaaaaaaaaaaba?b?ab??a???????????abaa?b?aaaa??baaa??d?aaa?b??a???a?a?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Prototheca_wickerhamii             aaaaaaaaaaaaaaaba?b??b??a???????????abaa?????a???baaa??d?aaa????a???a?a??aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Chlorella_protothecoides           aaaaaaaaaaaaaaaba?b??b??a???????????abaa?b?aaaa??baaa??d?aaa????a???a?a??aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Chlorella_minutissima              aaaaaaaaaaaaaaaba?b??b??a???????????abaa?a?aaaa??baaa??d?aaa????a???a?a??aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Neochloris_aquaticus               aaaaaabaaaaaaabaaaba?baaa?baabcabbbbabaa?????a??abaaaa??baaaa?aaabababaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Neochloris_vigenis                 aaaaaabaaaaaaabaaaba?baaa??aabcabbbbabaa?????a??abaaaa??baaaa?aaaba?abaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Pediastrum_duplex                  aaaacbaaaaaaaabaaaba?b?aabbaabcabbbbabaab????a??bbaaaab?baaaa?ababababaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Scenedesmus_obliquus               aaaacbaaaaaaaaabaaba?b?ea???a????bbbabaa???bbab??baaaa???aaaabaaa???a?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Characium_hindakii                 aabaaabaaaaaabbaaaba?baaa?baabca?bbbabaa?????a??abaaaa??baaaa?aaaba?abaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Chlorella_fusca                    aaaaaaaaaaaaaaaba?b?ab??a???????????abaa?b?bbab??baaa??d?aaa????a???a?a??aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+'Ankistrodesmus_falcatus(sti)'     aaaaaaaaaaaaababa?b??b??a???????????abaa?????a???baaa??d?aaa????a???a?a??aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Pseudotrebouxia_gigantea           aaaaaaaaaaaaaacaa?a??baaa?baaba?aabbbbaaa????a???baaaa?dbaaaa?aaabaaabaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Pleurastrum_terrestre              aaaabbaaaaabaacaa?a??baaa?baaba?aabbbbaaa????a???baaaa?dbaaaa?aaabaaabaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Characium_perforatum               aabaaaaaaaaaabbaaaba?bbaa?baababa?bb?aaa?????a??abaaaa??baaaa?aaaba?abaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Parietochloris_pseudoalveolaris    aaaaaaaaaaaaaabaaaba?bbaa?baababa?bb?aaa?????a??abaaaa??baaaa?caabaaabaa?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Friedmannia_israelensis            {ac}aaaaaaaaaaaaacaaaa??baaabbaababaabbbbaaa????a???baaaa?dbaaaa?aaabaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Hypothetical_ancestor              baaaaaaaaaaaaabababa?aaaaaaaaa?baaaaaaaaa????a?aabaaaaadaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+;
+END;
+
+BEGIN ASSUMPTIONS;
+	OPTIONS  DEFTYPE=unord PolyTcount=MINSTEPS ;
+
+END; 
+
+
+BEGIN NOTES;
+	TEXT  CHARACTER=26 TEXT= 'relative_to_direction_of_motion_--_Mark''s_#21';
+	TEXT  CHARACTER=14 TEXT= 'vegetative_cells_or_zoospores__Mark''s_#42';
+	TEXT  CHARACTER=24 TEXT= 'on_vegetative_cells_or_zoospores__Mark''s_#43';
+	TEXT  CHARACTER=5 TEXT= 'Mark''s_#1_(modified_c=coenobic)';
+	TEXT  CHARACTER=18 TEXT= 'Mark''s_#3';
+	TEXT  CHARACTER=20 TEXT= 'Mark''s_#6_(modified)';
+	TEXT  CHARACTER=21 TEXT= 'Mark''s_#7-perhaps_omit?';
+	TEXT  CHARACTER=43 TEXT= 'Mark''s_#15';
+	TEXT  CHARACTER=25 TEXT= 'Mark''s_#18';
+	TEXT  CHARACTER=28 TEXT= 'BB_in_motile_cells_distant_from_one_another_via_migration_in_development_--_Mark''s_#45';
+	TEXT  CHARACTER=34 TEXT= 'Mark''s_#47';
+	TEXT  CHARACTER=1 TEXT= 'of_free_living_vegetative_stage_--_Mark''s_#48';
+	TEXT  CHARACTER=17 TEXT= 'Mark''s_#49';
+	TEXT  CHARACTER=38 TEXT= 'microtubules_forming_in_plane_of_cell_division_--_Mark''s_#50';
+	TEXT  CHARACTER=36 TEXT= 'Mark''s_#51';
+	TEXT  CHARACTER=7 TEXT= 'Mark''s_#52-related_to_#8.';
+	TEXT  CHARACTER=6 TEXT= 'in_multicellular_organism_--_Mark''s_#54';
+	TEXT  CHARACTER=12 TEXT= 'veg._cells_form_filaments_--_Mark''s_#55_(modified_-_c=branched_filaments)';
+	TEXT  CHARACTER=15 TEXT= 'Mark''s_#57-combine_with_16?';
+	TEXT  CHARACTER=11 TEXT= 'Mark''s_#58';
+	TEXT  CHARACTER=3 TEXT= 'veg._cell_or_thallus_attached_--_Mark''s_#60_(Modify_def_to_include_attachment_by_specialized_structure?)';
+	TEXT  CHARACTER=10 TEXT= 'Mark''s_#62-are_all_of_these_structurally_similar?';
+	TEXT  CHARACTER=2 TEXT= 'Mark''s_#63_(modified,_d_=_heteromorphic_alt.)_CHECK_CODING!';
+	TEXT  CHARACTER=35 TEXT= 'with_distinct_membrane_--_Mark''s_#64';
+	TEXT  CHARACTER=42 TEXT= 'in_veg._cell_--_Mark''s_#67';
+	TEXT  CHARACTER=16 TEXT= 'produced_by_vegetative_thallus_or_cells_--_Mark''s_#68';
+	TEXT  CHARACTER=44 TEXT= 'produced_by_veg._cells_--_Mark''s_#69';
+	TEXT  CHARACTER=45 TEXT= 'produced_by_veg._cell_--_Mark''s_#70';
+	TEXT  CHARACTER=47 TEXT= 'veg._cells_capable_--_Mark''s_#71';
+	TEXT  CHARACTER=49 TEXT= 'Mark''s_#72';
+	TEXT  CHARACTER=51 TEXT= 'in_veg._cells_--_Mark''s_#77';
+	TEXT  CHARACTER=52 TEXT= 'surrounds_cells_--_Mark''s_#80';
+	TEXT  CHARACTER=53 TEXT= 'Mark''s_#83-CHECK_if_includes_zoospores.';
+	TEXT  CHARACTER=13 TEXT= 'Mark''s_#84';
+	TEXT  CHARACTER=40 TEXT= 'in_veg_cells__-_Mark''s_#86';
+	TEXT  CHARACTER=54 TEXT= 'in_veg_cells_or_zoospores_--_Mark''s_#87';
+	TEXT  CHARACTER=41 TEXT= 'between_nucleus_and_plane_of_cleavage_--_Mark''s_#88';
+	TEXT  CHARACTER=19 TEXT= 'in_veg._cells,_to_produce_zoospores_or_gametes_--_Mark''s_#89';
+	TEXT  CHARACTER=55 TEXT= 'in_veg._cells_or_zoospores_--_Mark''s_#92';
+	TEXT  CHARACTER=56 TEXT= 'in_veg_cells_or_zoospores_--_Mark''s_#93_(modified,_d=absent)';
+	TEXT  CHARACTER=23 TEXT= 'thylakoid_membranes_traverse_pyrenoids_--Mark''s_#_98';
+	TEXT  CHARACTER=37 TEXT= 'surround_centrioles_during_mitosis_--_Mark''s_#101';
+	TEXT  CHARACTER=72 TEXT= 'multi-layered_structure_--_Mark''s_#102';
+	TEXT  CHARACTER=29 TEXT= 'on_motile_cells_--_Mark''s_#107';
+	TEXT  CHARACTER=73 TEXT= 'produced_by_veg._cells_--_Mark''s_#108';
+	TEXT  CHARACTER=39 TEXT= 'microtubules_formed_during_cytokinesis_--_Mark''s_#110';
+	TEXT  CHARACTER=74 TEXT= 'Mark''s_#111';
+	TEXT  CHARACTER=4 TEXT= 'if_multicellular_(?)_--_Mark''s_#164';
+	TEXT  CHARACTER=33 TEXT= 'basal_body_core_connection_--_Mark''s_#202';
+	TEXT  CHARACTER=31 TEXT= 'Mark''s_#201';
+	TEXT  CHARACTER=9 TEXT= 'Mark''s_#200';
+	TEXT  CHARACTER=32 TEXT= 'basal_body_overlap_in_motile_cells_--_Mark''s_#195';
+	TEXT  CHARACTER=50 TEXT= 'Mark''s_#194';
+	TEXT  CHARACTER=71 TEXT= 'Mark''s_#192';
+	TEXT  CHARACTER=48 TEXT= 'photosystem_II_light_harvesting_complex_--_Mark''s_#189';
+	TEXT  CHARACTER=70 TEXT= 'Mark''s_#188';
+	TEXT  CHARACTER=69 TEXT= 'Mark''s_#185';
+	TEXT  CHARACTER=27 TEXT= 'Mark''s_#180';
+	TEXT  CHARACTER=68 TEXT= 'or_system_1_fiber_--_Mark''s_#178';
+	TEXT  CHARACTER=67 TEXT= 'Mark''s_#175';
+	TEXT  CHARACTER=66 TEXT= 'Mark''s_#173';
+	TEXT  CHARACTER=60 TEXT= 'zoosporangial_exit_aperature_possesses_plug_--_Mark''s_#170';
+	TEXT  CHARACTER=46 TEXT= 'independent_of_environment_--_Mark''s_#169';
+	TEXT  CHARACTER=65 TEXT= 'of_veg._or_motile_cells_--_Mark''s_#168';
+	TEXT  CHARACTER=64 TEXT= 'Mark''s_#167';
+	TEXT  CHARACTER=63 TEXT= 'Mark''s_#166';
+	TEXT  CHARACTER=8 TEXT= 'Mark''s_#165';
+	TEXT  CHARACTER=62 TEXT= 'Mark''s_#163-modified,_includes_plate-like';
+	TEXT  CHARACTER=59 TEXT= 'Mark''s_#162';
+	TEXT  CHARACTER=61 TEXT= 'Mark''s_#160';
+	TEXT  CHARACTER=58 TEXT= 'Mark''s_#159';
+	TEXT  CHARACTER=57 TEXT= 'Mark''s_#157';
+	TEXT  CHARACTER=22 TEXT= 'Mark''s_#155';
+	TEXT  CHARACTER=109 TEXT= 'Mark''s_#154';
+	TEXT  CHARACTER=108 TEXT= 'Mark''s_#153';
+	TEXT  CHARACTER=75 TEXT= 'Mark''s_#112';
+	TEXT  CHARACTER=76 TEXT= 'Mark''s_#113';
+	TEXT  CHARACTER=77 TEXT= 'Mark''s_#114';
+	TEXT  CHARACTER=78 TEXT= 'Mark''s_#117';
+	TEXT  CHARACTER=79 TEXT= 'Mark''s_#118';
+	TEXT  CHARACTER=83 TEXT= 'Mark''s_#119';
+	TEXT  CHARACTER=80 TEXT= 'Mark''s_#120';
+	TEXT  CHARACTER=81 TEXT= 'Mark''s_#121';
+	TEXT  CHARACTER=82 TEXT= 'Mark''s_#122-maybe_should_substitute_"sporic_meiosis"_as_in_Graham_et_al._1991.';
+	TEXT  CHARACTER=84 TEXT= 'Mark''s_#123';
+	TEXT  CHARACTER=87 TEXT= 'Mark''s_#124';
+	TEXT  CHARACTER=86 TEXT= 'Mark''s_#125';
+	TEXT  CHARACTER=85 TEXT= 'Mark''s_#126';
+	TEXT  CHARACTER=89 TEXT= 'Mark''s_#127';
+	TEXT  CHARACTER=88 TEXT= 'Mark''s_#128';
+	TEXT  CHARACTER=96 TEXT= 'Mark''s_#129';
+	TEXT  CHARACTER=91 TEXT= 'Mark''s_#130';
+	TEXT  CHARACTER=93 TEXT= 'Mark''s_#133';
+	TEXT  CHARACTER=92 TEXT= 'Mark''s_#134';
+	TEXT  CHARACTER=30 TEXT= 'flagellar_apparatus_components_displaying_180_deg._rotational_symmetry_--_Mark''s_#135';
+	TEXT  CHARACTER=94 TEXT= 'Mark''s_#136';
+	TEXT  CHARACTER=95 TEXT= 'of_moss-tracheophyte_type_--_Mark''s_#137';
+	TEXT  CHARACTER=98 TEXT= 'of_moss_type_--_Mark''s_#138';
+	TEXT  CHARACTER=97 TEXT= 'Mark''s_#139';
+	TEXT  CHARACTER=103 TEXT= 'Mark''s_#140';
+	TEXT  CHARACTER=102 TEXT= 'Mark''s_#141';
+	TEXT  CHARACTER=100 TEXT= 'Mark''s_#142';
+	TEXT  CHARACTER=101 TEXT= 'Mark''s_#143';
+	TEXT  CHARACTER=104 TEXT= 'Mark''s_#146';
+	TEXT  CHARACTER=105 TEXT= 'Mark''s_#147';
+	TEXT  CHARACTER=106 TEXT= 'Mark''s_#148';
+	TEXT  CHARACTER=107 TEXT= 'Mark''s_#149';
+	TEXT  TAXON=24 CHARACTER=2 TEXT= CHECK;
+	TEXT  TAXON=26 CHARACTER=7 TEXT= check;
+	TEXT  TAXON=26 CHARACTER=8 TEXT= CHECK;
+	TEXT  TAXON=40 CHARACTER=57 TEXT= 'early_in_ontogeny,_flagella_are_apical';
+	TEXT  TAXON=35 CHARACTER=57 TEXT= flagella_apical_in_early_ontogeny;
+END;
+
+BEGIN MACCLADE;
+v 3.0
+-1322665186
+1000&/0
+0
+0
+END;


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/GPMorph.nex
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPCombined.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPCombined.nex	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPCombined.nex	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,49 @@
+#NEXUS 
+[MacClade 3.01 registered to Equator, UCMP]
+
+BEGIN DATA;
+DIMENSIONS  NTAX=9 NCHAR=2294;
+
+[!This is the final morphological matrix for land plants, plus selected
+data from the rDNAmaster alignment (contains both SSU and LSU]
+FORMAT MISSING=? GAP=-  SYMBOLS= " 0 1 2 3 4 5 6 A C G T N";
+
+MATRIX
+[                           10        20        30        40        50        60        70        80        90        100       110       120       130       140       150       160       170       180       190       200       210       220       230       240       250       260       270       280       290       300       310       320       330       340       350       360       370       380       390       400       410       420       430       440       450       460       470       480       490       500       510       520       530       540       550       560       570       580       590       600       610       620       630       640       650       660       670       680       690       700       710       720       730       740       750       760       770       780       790       800       810       820       830       840       850       860       870       880       890       900       910       920       930       940       950       960       970       980       990       1000      1010      1020      1030      1040      1050      1060      1070      1080      1090      1100      1110      1120      1130      1140      1150      1160      1170      1180      1190      1200      1210      1220      1230      1240      1250      1260      1270      1280      1290      1300      1310      1320      1330      1340      1350      1360      1370      1380      1390      1400      1410      1420      1430      1440      1450      1460      1470      1480      1490      1500      1510      1520      1530      1540      1550      1560      1570      1580      1590      1600      1610      1620      1630      1640      1650      1660      1670      1680      1690      1700      1710      1720      1730      1740      1750      1760      1770      1780      1790      1800      1810      1820      1830      1840      1850      1860      1870      1880      1890      1900      1910      1920      1930      1940      1950      1960      1970      1980      1990      2000      2010      2020      2030      2040      2050      2060      2070      2080      2090      2100      2110      2120      2130      2140      2150      2160      2170      2180      2190      2200      2210      2220      2230      2240      2250      2260      2270      2280      2290 ]
+[                           .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .    ]
+
+COLEOCHAETE        ????????????????????????????????????????????????????????????????????????TGGCTCATTAAATCAGTTATAGTTT-TTTGATGGTAGCC---TACTC---GGATAACC-T-GTAA-TTCTAGAGCTATACCGTGC-CC--ATCC-GACTTC--TGGAAGG--GGTATTTGTTAGATAAAAGACCAAT----GC-TC-GCCCGGTGTT-CGGTGAATC--GATAACTCCTCG?ATCGCACGGCCT??????????????????????????????????????????????????????????????????????????????????????????????????????????GGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGA?GGCAG--GGCGCG--GATTACCC-AATCCTGATACAGGGAGGTAG--ACAATAAATAACA-TACTGGGCTTTTA-AAGTCTGGT?ATTGGAATGAGTACAATCTAAATCTC????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CATTAATCAAGAA-GAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGACCTAGG-ATCAACGGATGTTAATTTAATGACTCCGCCAGCACCTTAT--AGAAA-CAAAGTTCTTGGGTTCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AT--CCAGTTTTCGTTC?-GGAGTGATTTGTCTG-TT-AATTC?G?TAACGAAGGAG?CCTCAGCCTGCTAACTAGGCTAACGTTTTGTTGGGAC------------ACTTGTTAGAGGGACTGTGAGGCGCTTAGCTCAT---GGA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????G-TCTCGAACGA-GAATACCTAGTAAGCGCTCGTCATCAGCGTGCGCT-ACTAC-GTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATAGAATGCTCC---GGTGAAGCATTCGG--ATCGCCACCGGCGGGCAACTCCGGAGACGGCATG------AGAA-TT-GTTGAACCTTATCGTTTAGAGGA????????????????????????????????????????????????????CACCACGCGCCGATCCGGAGA?ATGTCGGAAGGGTTC?GAGCTGAGA?A??GTATGTTGGGACCC???AGATGGTGAACTATGCCTGA??AGG??CGAAGCCAGAGGAAACTCTGGTGGAAGATC?GCAGC?ATACTGACGTGCAAATCG?TTCGTCGGACTTG?GTATA????C?AAAGACT?ATC?AACCATGCG?GG?G?CTCCGGG?AGAGTTTT?TTTTCTTTTT?GACA?GTCG??AGC?GCCCTGGAATTGATT?C?CGGCG???GAGGGTGC?GAAAGCTGGC?AGAGCGCGCACTGGT???CGGTGTC?GGTG?AC??CCG???T??T?CCCTAGA?????0??0000?00?0?0?000?000??0000000000?00?00???000000?1??0000?010000000000000000000000000?00000001000000?000111110
+PHAEOCEROS         ?????????????????????????????????????????????????????????????????????????????????????????????????????GATGGTACCTTGCTACTC---GGATAACC--AGTAA-TTCTA-AGCTAAT-CGTGCAACAACTCCCGGCTTT--TGG-AGGG-TGT-TTT-TTAG-TAAAAG---GA-GCGG-C-TT-GTCCCGGTTTACGGTGAA-C?-GATAACTCCTCGGATCGCACGGCCCT??????????????????????????????????????????????????????????????????????????????????ACGGA-AATTAGGGTTCGATTCCGGA-A-GGAGCCTGAGAAACGGCTACCA-CATCC-AG-AAGGCA-CA--CGCGC--ATTACCC-AATCC-GAC-CGGGGAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGA-TACAATCTAAATCCCTTAAC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GAAAGTTGGG--CTCGAAGACGAT-AG-TACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGATGTTAATTAGATGACTCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTAT?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T--TGCATGGCCGTT-TTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACACGAAGAACCTTCTTCGTGGCC----AACTTCTTAGAGGGACTATTTGCGTCTAGCGAAT----GGAA???????????????????????????????????????????????????????????????????????????????????????????????????????????ATCTTTG-AAATTTCATCGTGAT--GGATAGATCATTGCAATTATTGATCTT-AA----GAATT--TAGTAAGCGCGAGTCATCAGCTCG-GTTGACTA--GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATTG-CGGCG?ACA?CGGGT?ACCGCCGGGACGTTGT--GAGAAG-TCATTAAACCTTATC-TTTAGAGGAA??????????????????????????????????????????????????GCACCATCGACCGACCATGAT?CTTCTGTGAAAGGTTT??AGTGTGA??A?TACCTGCTGGGACCC??AAGATGGTGAACTATGCCTGAGTCAGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGA?GTGC?AATCG?TTCGTCAGACTTGGGTATA?GGGC???AGACTAATCGAACCATGCG??G?GGCCCCGGG?AGAGTTCTCTTTTCT?TTT?AACA???CT?GCCT?GCCCTGAAATCGGATTACCCGGA???ATAGGGTCCAGCGGCTGGT?AAAGCACCACACGTCTTGCGGTGTCCGGTGGCCC?CT??GGC??GGCCCGTGA0011003001101111100?200?101000010003001?11010011011110000110111021100011100001000000000000000000001000000?000101110
+NOTOTHYLAS         ????????????????????????????????????????????????????????????????????????????????????????????????????????????CCTT-CTACTC---GGATAAC-G-AGTAA-TTCTA-AGCTAA-ACGTGCAACAACTCCCGACTC---TGGAAGG-AG--ATTTATTAGATAAAAG---GATG---GC-TT-GTCCCGTTT-A--CTGAATC-TGATAACTCCTCGAATCGCACGGCCCT???????????????????????????????????????????????????????????????????????????????????????????????GTTCGATTCCGGAGAGGGA--C-GAGAAACGGCTACCA-CATCC--N--AGGCAG---NNNN----ATTACCC-AATCC-GA---GGGGAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAA--A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAAGTTGGGG-CTCGAAGACGATCAGATAC---TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGTGTTAATTAGATGACTCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGG???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CA-GGCCGTT-TTAGTTGGTGGAGTGA-TTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACAC-AAGAACCTTCTTCGTGGCC----AACTTCTTAGAGGGACTATTTGCGTCTA-CGAAT----GGAA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGA-AGATCATTGC-ATTATTGATCTTCAAC-AGGAAT-CCT-GTAAGCGCGAGTCATCAGCTCGCGTT-ACTAC-GTCCCTGCCCTTTGTACACAC-GCC-GTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATTG-CGGCGACACCGGGTCACCGCCGGGGACGTT-T--GA-AA-TTCATTAAACCTTATCATTTA?A????????????????????????????????????????????????????????????????????CC?TGAT?CTTCTGTGA?AGGTTT?GAGTGTGAGCA?TACCTGCTGGGACCC????GATGGTGA?CTATGCCTGAGCAGGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGA?GTGCAAATCG?TTCGTCAGACTTGGGTATAGGGGCGAAAG?CTAATCG???????????????CCCCGGG?AGAGTTCTC?TTTCTTTTT?AACA?GCCT?GCCT?ACCCTGAAATCGGATTACCCGGAG??ATAGGGTCCAGCGGCTGGT?AAAGCACCACACG?CTTGCGGTGTCCGGTG?CCC?????GGC??GGCCCGTG?0011003001101111100?200?101000010003001?11010011011110000110111021100011100001000000000000000000001000000?000101110
+MARCHANTIALES      ?????????????????????????????????????????????????????????CTGTGAAACTGCGAATGGCTC-TTAAATC-GTTATAGTTTCTTTGATGGTGCCTT-CTACTC---GGATAACCG-AGTAA-TTCTAGAGCTAATACGTGCACCAACGCCCGACTTT-CCGGAAGGG--TGTTTTATTAGATAAAAGACCGATG---GC-TT-GCC-CGGTGATT-CGGAATCATGATAACTCGACGAATCGCACGGCCT??????????????????????????????????????????????????????????????????????????????????????????????????????????????AGGGAGCCTGAG?AACGGCTACCA-CATCC-AG-AAGGCAG-A---GC-C--ATTACCC-AATCC-GAC-----GAGG-AGTGACAATAAATAACAATACTGGGCT-TTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTTCTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGG-ATCG--GGATGTNGATTAGATGACTCCGCCGGCACCTCCATGAGAAATCAAAGTTTTTGGGTTCCGGGGGGAG-ATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGGTGG-GTGATTTGTCTGGTT-AATTCCGTTAACGAAGGAGACCTCAGCCTGCTAACTA-CTACGCGGGGGT?CTCCCCTGCGGCC----AGCTT-TTAGAGGGACTGTCGGCGTCTAGCCGA-----GGA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGA-GAGTTCGG--ATCG-CGGCGACGCGCGGTTCGCCGCCGGGACGTTG---GA-AAGTTCTTTAAACCTTATCA????????????????????????????????????????????????????????????T?AACATCGACCGACCATGAT?CTTCTGTGAAAGGTTC?G?GT?GGAGCA?TGCCTGTTGGGACCC??AAGATGGTGAACTATGC?TGAGCAGGG?CGAAGTCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTCGGG?ATA??????AAAGACTAATCGAACCATGCG?GA?GGCCCCGGGAAGAGTTTTCTTTTCT??TT??AC?GACC??GCCG?GCCCTGAAATCGCATTACGCGGAG??ATAGGGCCCAGCGGTCGGC?AAAGCGTCGCA?GTCTTGCGG?GTCCGGTG?GCC?CCC?GAC??GGCCCC?GA000100300110121001112011101100000003001?110000101100100000101011211111000000000000000100000000000011000000001101110
+JUNGERMANNIALES    ??????????????????????????????????????????????????????????????????????????????????????????????????TTTGATGGTACCTTGCTACTC---GGATAACC-TAGTAA-TTCTAGAGCTAATACGTGCACCAACTCCCGACTTC--TGGAAGGG-CGTATTTATTAGATAAAAGACCGATGCGGGC--T-GCCCGGTGTTGCGGTGAATCATGATAACTCGTCGAATCGCACGGCC???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAACGGCTACCA-CATCCAAGG-AGGCAGCCGG-GCG---ATTACCC-AATACCGACACAGGNAGGTAGTGACAATAAATAACAATACTGGGCTTTACCAAGTCTGGTAATTGGAATGAGTACAATCTAAATCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AA?AAC?AAAGTTGGG--CTCGAA-ACGAT-AGATACCG-TCCTAGTCTCAACCATAAACGATGCCGAGCTAGGGATTG--GGATGTTAATTTGATGACTCCGC-AGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CC-----TAGTTGGTGGAG-G--TTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACACGAAGAATCTTCTTTGTGGCC----AACTT-TTAGAGGGACTATT--CGTCTAGCCAAT----GGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TCTTCAAC-AGGAAT-CCTAGTAAGC-CGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCC----GTGAAGTTTTCGG--ATTGCGGCGACGCGGCGGTTCGCTGCCGGGACGTTGT--GAGAAGTTTATTAAACCTTATCATTTA?A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????010100300110121001112011101000000003001?11001010110010000010101121111100000000000000101111000000000100000?001101110
+POLYTRICHALES      ??????????????????????????????????????????????????????????????????????????????ATTAAATCAGTTATAGTTTCTTT-ATGGTACCTTGCTACTC---GGATAACCGTAGTA--TTCTA-AGCTAATACGTGCACAAACTCCCGACCTC--TGGAAGGG-CG-TTTTATTAGATAAAAGGCCGATGC-GGC-TT-GCCCGGTAT-TCGGTGACTCA-GATAACTCGTCGAATCGCACGGCCTTA?????????????????????????????????????????????????????????????????????????????????????AGAATT----TTCGATTCCGGA-AGGGAGCCTGAGAA-CGGCTACCA-CATCCA---AAGGCAG-N-NN-N-N--ATT-CCC-AATCC-GAC--GGGGAGGTAGT-ACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAA--A??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTTCTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAG???GAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTTGCGGGTGTTAATTTGATGACCCCG-AAGCACCTTAT-GAGAAATC-AAGTATTTGGGTTCCGGGGGGAGTATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCTTTCTTGATTCTATGGGTGGT-GTGCATGGCCGTT-TT-GTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAAC-AACGAGACCTCAGCCTGCTAACTAGTTACACGAAGAATC-TCTTTGTGGCC----AACTT-TTAGAGGGACTATTGGCGTCT-GCCAAT----GGAA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ATAGATCATTGC-ATTATTGATCTTCAA--A-GAATTCC-AGTAAGCGCGAGTCATCAGCTCGCGTTGATTAC-GTCCCTGCCCTTTGTACACACC-CCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATCG--GG-TG-ATCGGGTT-G-GTTCGG?GACTTGT--GAGAA-TTCATTAAA--TTATCATTTAGAGGAA??????????????????????????????????????????????????GCAC?AT?GACCGACCGTGAT?CTTCTGTGAAAGGTTT?GAGTGTGAGC??T?CCTGCTGGGACCC??AAGATGGTGAACTATGCCTGAGC?AGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?G?AGC?ATACTGACGTGCAAATCG?TTCGTCAGACTTGGG?ATA????C?AAAGACT?ATCGAACCATGCG?AG?GGCCCCGGGAAGAGTTCTCTTTTCT?TTT?AACA?GCCT?GCCT??CCCTGGAATCGGATTACC?GGAG??ATAGGGTCCAGCGGCTGGT?AAAGCACCGCAC?TCTTGCGG?GTCCGGGGCCC??C???GGC??GGCCCGTGA110110311110121001112011101011011003001?11000122010110000010000021100011011111110000000000111111110100000?000101110
+BRYALES            ????????????????????????????????TGTGTAAGTATAAACT-CTTTTGTACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTCTTTGATGGTACCTTGCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACAAAATCCCGACTGG---GNAAGGGANNGATTTATTGGATAAAAGGCCGA-TGCGGGCT-TGCCCGGTTC-GCGG-GAC----GATAAC--GTCGAATCGCA-GGCCG???????????????????????????????????????????????????????????????????????????????????????????????????????????GA-A-GGAGCCT-AG---CGGCTACCA-CATCC-AGGAAGGC--C----------ATTACCC-AACTCCGA---GGGGAGGTAGTGACAATAAATAACAATACTGGGC--TTACGGGCCCG---ATTGG--TGAGTA?AATCT-AATCCCTTAA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCATTTGCCAAGGATGTTTTCGTTAATCAA-AA-GAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGTGTTGATTCGATGACCCCGCCAGCACCTTAT-GAGAAATC--AGTTTTTGGGTTCCGGGGGGAGTATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGAGCTCTTTCTTGGTTCTATGGGTGGT-GTGCATGGCCGTT-TTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACGCGAAGGATTTCCTCCTTTGCGGCC-AACTTC--AGAGGGACTATCGGCGTC---GCCGAT---GGAAG?TTGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ATCATTGC-ATTATTGATCTTCAAC---GAATTCC-AGTAAGCGCGAGTCATCAGCTCG-GTTGACTAC--TCCCTGCCCTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATCG-CG??A?C????GTTCGCCGC?GG?GACGTTGT--GAGAAG-TCATTAAACCTTATCATTTA-AG?????????????????????????????????????????????????????GCACCATCGACCGACCGTGAT?CTTCTGTGAAAGGTTT?GAGTGTGAGCA?CACATGTTGGGACCC???AGATGGTGAACTATGCCTGAGCAGGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGGTATAGGGGC?AAAGACTAATCGAACCATGCG?AG?GGCCCCTGGAAGAGTTCTCT?TTCT?TTT??AC?GGCCC?GACG?ACCCTGGAATCGGTTCACCCGGAG??ATAGGGTCCAGCGGCCGGT?AAAGCACCGCACGTCTCGCGGTGTCAGGTGGCCC?TC??GGC??GGCCCGTGA110110311110121001112011101011010003001?110001220101100000100000211000110111111100000000001111111111000000001101110
+EQUISETUM          ???????????????????????????????????????????????????????????????????GCGAATGGCTGATTAAATCAGTTATAGTTTCTTTGATGGTACCTTGCTACTC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACCAACTCCCGACTTC--TGG--GGGA-GCATTTATTAGATAAAAGGCCGATGCGGGC-TGTGCCCGGTAA----CGGATTC--GATAACTTCCCGGATCGCACGGCCTNNNNACGGGTGA????????????????????????????????????????????????????????????????????????CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCGGGCGCGCAAATTACCC-AATCC-GACACGGGGAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAGAACGAAAGTTGG---CTCGAAGAC-ATCA?ATACCG-TCCTAGTCTCAACCATAAACGA-GC?GA-CTAGGGATT--CGGATGTTACTTCAATGACTCTGCCGGCACCTTAT-GAGAAATCAAAGTCTTTGGGTTCC----GGA-T??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTAGTGCATGGCCGTTCTTAGTTGGTGGAGTGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACGCGAAGACTTGTCTTCGTGGCC----AACTTCTTAGAGGGACTATGGCCGTCTAGGCCAT----GGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TCTTCAACTAGGAATTCCTAGTAAGC-CGAGTCATCAGCTCGCGTTGACTA--GTCCCTGCCCTTTGTACACACTGCCCGTCGCTCCTACCGATTGAATGGTCC---GGTGAAGTTTTCGG--ATT-CGGCGACGCTGGCGGT-CGCCGGCGACGTTGT---GAGAAGTTCATTGAACCTTACCATTTAGAG?????????????????????????????????????????????????????GCACCATCGACCGACCGTGAT?CTTCTGTGAAAGGTTT?GAGTGAGAGCA?TACCTGCTGGGACCC?AAAGATGGTGAACTATGCCTGAGCAGGG?CGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGGTATAGGGGCGAAAGACTAATCGAACCATGCG?GG?GGCCCTGGGAAGAGTTCTCTTTTCTTTTT?AACA?ACTT?GCCC?ACCCTGAAATCGGATCAACCGGAG??ATAGGGTCCAGCGGTTGGT?AAAGCA?CGCAGGTC?TGCGGTGTCCGGTGCCCC?C???GGC??GGCCCTTGA0?0000211111030?0100010?1110201001100011111000330100001110012?001110001101111000111100000000000000??00?001101101110
+ZAMIA              TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTGTCAGTATGAACTATTTT-GGACGGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTCTTTGATGGTACTCTGCTACAC---GGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACCAAATCCCGACTTTT-TG-AAGGGACGCATCTATTAGATAAAAGGCCGATGCGGGC-TTTGCCCGGCGT-TTGGTGAATCATGATACCTTGATGGATTGCATGGCCCTCGAGCCGGCGACGCTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGCAGGATAGAGGCCTACCATGGTGGTGACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCCGAGAAACGGCTACCA-CATCCAAGGAAGGCAGCAGGCGCGCAAATTACCC-AATCCTGACACGGGGAGGTAGTGACAATAAATAACAATACTGGGCTCATC-GAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATCTTGGGACGGCCCGGCC-GGTCCGCT-TTTTTGGGTGTGCACCGGCCGTTTCGTCCCTTTTGTTGGCGGCGCG---CACCTGGCCTTAACTGTCTGGG-TCGCGGT-TCC--ACGCTGTTACTTTGAAAAAATTAGAGTGCTCAAAGCAAGC-TTATGCTCTGAATACATTAGCATGGAATAACGGTATAGGATTCTGGTCCTATTGCGTTGGCCTTCGGGACCGGA-GTAATGATTAACAGGGACGGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACCACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATCAGATACCG-TCCTAGTCTCAACCATAAACGATGCCGA-CCAGGGATCGGCGGATGTTGCTCTAAGGACTCCGCCGGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGAGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACATAGCAAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGAGCGATTTGTCTGGTT-AATTCCGTTAACGAACGAGACCTCGGCCTGCTAACTAGCTACGCGGAGGGTTTCTTTCGTGGCC----AGCTTCTTAGAGGGACTATGGCCGTTTAGGCCAT----GGAAGTTTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGTATTCAACGAGTCTATAACCTGGGCCGGGAGGTCCGGGAAATCTGGCGAAATTTCATCGTGATGGGGATAGATCATTGCAATTATTGATCTTCAACGAGGAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTAC-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGATCC---GGTGAAGTGTTCGG--ATCGTGCCGACGACGGCGGTTCGCTGGGCGCGACGTCGCGAGAAGTTCATTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????10011?1030?0100010?1?1020000110011020?02???00000112?0012?0001100011011?1000111100000000000000??110001111101110
+;
+END;
+
+BEGIN ASSUMPTIONS;
+	OPTIONS  DEFTYPE=unord PolyTcount=MINSTEPS ;
+
+	TYPESET * order_two  = unord: 1-2185 2187-2228 2230-2294, ord: 2186 2229;
+
+	EXSET  gaps+unalignsites  =  50-55 110-122 171-176 214-220 228-232 267-280 482-489 657-663 676-690 699-713 729-731 737-743 782-785 1362-1391 1416-1429 1691-1695 1709-1755;
+	EXSET  LSU  =  50-55 110-122 171-176 214-220 228-232 267-280 482-489 657-663 676-690 699-713 729-731 737-743 782-785 1362-1391 1416-1429 1691-1695 1709-1755 1834-2179;
+	EXSET  SSU  =  1-1833;
+	EXSET  MOLECULES  =  1-2179;
+	EXSET  MORPHOLOGY  =  50-55 110-122 171-176 214-220 228-232 267-280 482-489 657-663 676-690 699-713 729-731 737-743 782-785 1362-1391 1416-1429 1691-1695 1709-1755 2180-2294;
+	EXSET * SPERM  =  50-55 110-122 171-176 214-220 228-232 267-280 482-489 657-663 676-690 699-713 729-731 737-743 782-785 1362-1391 1416-1429 1691-1695 1709-1755 2180-2244;
+
+END; 
+
+
+
+BEGIN MACCLADE;
+v 3.0
+-1322665050
+1000&/0
+0
+0
+END;


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPCombined.nex
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPMolecular.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPMolecular.nex	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPMolecular.nex	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,60 @@
+#NEXUS 
+[MacClade 3.01 registered to Brent D. Mishler, Duke University]
+
+[**The final matrix LP-MOLEC used in the Ann .Mo. Bot. 81: 451-483 (Mishler et al. 1994)
+ green plant synthesis paper.]
+
+[This data set was realigned in reference to these land plants only,
+thus it represents a different data set than 'rDNAmastr']
+
+BEGIN DATA;
+DIMENSIONS  NTAX=16 NCHAR=2148;
+FORMAT DATATYPE=DNA MISSING=? GAP=- ;
+OPTIONS  MSTAXA=UNCERTAIN ;
+
+MATRIX
+[                          10        20        30        40        50        60        70        80        90        100       110       120       130       140       150       160       170       180       190       200       210       220       230       240       250       260       270       280       290       300       310       320       330       340       350       360       370       380       390       400       410       420       430       440       450       460       470       480       490       500       510       520       530       540       550       560       570       580       590       600       610       620       630       640       650       660       670       680       690       700       710       720       730       740       750       760       770       780       790       800       810       820       830       840       850       860       870       880       890       900       910       920       930       940       950       960       970       980       990       1000      1010      1020      1030      1040      1050      1060      1070      1080      1090      1100      1110      1120      1130      1140      1150      1160      1170      1180      1190      1200      1210      1220      1230      1240      1250      1260      1270      1280      1290      1300      1310      1320      1330      1340      1350      1360      1370      1380      1390      1400      1410      1420      1430      1440      1450      1460      1470      1480      1490      1500      1510      1520      1530      1540      1550      1560      1570      1580      1590      1600      1610      1620      1630      1640      1650      1660      1670      1680      1690      1700      1710      1720      1730      1740      1750      1760      1770      1780      1790      1800      1810      1820      1830      1840      1850      1860      1870      1880      1890      1900      1910      1920      1930      1940      1950      1960      1970      1980      1990      2000      2010      2020      2030      2040      2050      2060      2070      2080      2090      2100      2110      2120      2130      2140     ]
+[                          .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .        ]
+
+Glycine_max       TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTGTAAGTATGAACTAATTCA-GACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTGTTTGATGGTATC-TACTACTCGGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCAACAAACCCCGACTTC-TGGAAGGGATGCATTTATTAGATAAAAGGTCAACACAGGCTCTGCCTGTGCT-TTGATGATTCATGATAACTCGTCGGATCGCACGGCCTTTGTGCCGGCGACGCATCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGTGGCCTACCATGGTGGTGACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCACATCCAAGGAAGGCAGCAGGCGCGCAAATTACCCAATCCTGACACGGGGAGGTAGTGACAATAAATAACAATACCGGGCTC-ATTGAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGATGGATCCATTGAAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGACCTTGGGTTGGGTCGATC-GGTCCGCC-TCC--GTGTGCACCGGTC-GGCT--GTCCCTTCTGCCGGCGATGCG---CTCCTGTCCTTAACTGGCCGGG-TCGTGCC-TCC-GGTGCTGTTACTTTGAAGAAATTAGAGTGCTCAAAGCAAGC-CTACGCTCTGTATACATTAGCATGGGATAACACCACAGGATTCTGATCCTATTGTGTTGGCCTTCGGGATCGGA-GTAATGATTAACAGGGACAGTCGGGGGCATTCGTATTTCATAGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACAACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATCAGATACCGTCCTAGTCTCAACCATAAACGATGCCGA-CCAGGGATCAGCGGATGTTGCTTTTAGGACTCCGCTGGCACCTTAT-GAGAAATCGAAGTCTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGAGTGGAGCCTGCGGCT-AATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACATAGTAAGG-TTGACAGACTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCCTTCTTAGTTGGTGGAGCGATTTGTCTGGTTAATTCCGTTAACCAACGAGACCTCAGCCTGCTAAATAGCTAT--------------------------AGCTTCTTAGAGGGACTAT-GGCCGCTTAGGCCACGGAAGTTTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGTATTCAACGAGTCTATAGCCTTGGCCGACAGGTCCGGGTAATCTTTG-AAATTTCATCGTGATGGGGATAGATCATTGCAATTGTTGGTCTTCAACGAGGAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTACGTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCCGGTGAAGTGTTCGGATTGCGGT-------------------------------GAGAAGTCCACTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG???????????????????????????????????GACCCTGAT?CTTCT?TGAAGGGTTC?GAGTGAGAGCATACCTGTCGGGACCCGAAAGATGGTGAACT?TGCCTGAGCGGGGCGAAGCCAGAGGAAACTCTGGTGGAGGCCC?GCAGCGATACTGACGTGCAAATCG?TTCGTCTGACTTGGGTATAGGGGCGAAAGACTAATCGAACCGTGCGGGGGCCCCGGAAAGAGTTATCTTTTCTGTTTAACA?GCCTGCCCACCCTGGAAA?GCCTCAGCCGGAGGTAGGGTCCAGCGGCTGGA?AGAGCACCGCACGTCGCGTGGTGTCCGGTG--CCCCCGGCGGCCCTTGA   [2059]
+Oryza_sativa      TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTGCAAGTATGAACTAATTC-GAACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTGTTTGATGGTACG-TGCTACTCGGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCAACAAACCCCGACTTCCGGG-AGGGGCGCATTTATTAGATAAAAGGCTGACGCGGGCTCCGCCCGCGAT-CCGATGATTCATGATAACTCGACGGATCGCACGGCCCTCGTGCCGGCGACGCATCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGGGGCCTACCATGGTGGTGACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCACATCCAAGGAAGGCAGCAGGCGCGCAAATTACCCAATCCTGACACGGGGAGGTAGTGACAATAAATAACAATACCGGGCGCTTTAGTGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGACCTTGGGCGCGGCCGGGCCGGTCCGCC-TCACGGCAGGCACCGACCTGCT--CGACCCTTCTGCCGGCGATGCG---CTCCTGGCCTTAACTGGCCGGGTTCGTGCC-TCC-GGCGCCGTTACTTTGAAGAAATTAGAGTGCTCAAAGCAAGC-CATCGCTCTGGATACATTAGCATGGGATAACATCATAGGATTCCGGTCCTATTGTGTTGGCCTTCGGGATCGGA-GTAATGATTAATAGGGACAGTCGGGGGCATTCGTATTTCATAGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACAACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATCAGATACCGTCCTAGTCTCAACCATAAACGATGCCGA-CCAGGGATCGGCGGATGTTGCTTATAGGACTCCGCCGGCACCTTAT-GAGAAATCAAAGTCTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGCGTGGGGCCTGCGGCTTAATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACATAGCAAGGATTGACAGACTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGAGCGATTTGTCTGGTTAATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGCTATGCGGAGCC----ATCCCTCCGCAGCTAGCTTCTTAGAGGGACTAT-GGCCGTTTAGGCCACGGAAGTTTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG--CGCACGCGCGCTACACTGATGTATCCAACGAGTATATAGCCTGGTCCGACAGGCCCGGGTAATCTTGGGAAATTTCATCGTGATGGGGATAGATCATTGCAATTGTTGGTCTTCAACGAGGAATGCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTACGTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCCGGTGAAGTGTTCGGATCGCGGCGACGGGGGCGGTTCGCCGCCCCCGACGTCGCGAGAAGTCCATTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG???????????????????????GCACCGCTGGCCGACCCTGAT?CTTCTGTGAAGGGTTC?GAGTTGGAGCACGCCTGTCGGGACCCGAAAGATGGTGAACTATGCCTGAGCGGGGCGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GAAGCGATACTGACGTGCAAATCG?TTCGTCTGACTTGGGTATAGGGGCGAAAGACTAATCGAACCATGCGGGGGCCTCGGG?AGAGTT?TCTTTTCTGCTTAAC?GGCCCGCCAAC?CTGGAAACGGTTCAGCCGGAGGTAGGGTCCAGCGGC?GGAGAGA???GCACACGTCGCGCGGTGTCCGGTG--CCCCCGGCGGCCCTTGA   [2119]
+Zamia_pumila      TCATATGCTTGTCTCAAAGATTAAGCCATGCATGTGTCAGTATGAACTATTTT-GGACGGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTCTTTGATGGTACTCTGCTACACGGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACCAAATCCCGACTTTTTG-AAGGGACGCATCTATTAGATAAAAGGCCGATGCGGGCTTTGCCCGGCGT-TTGGTGAATCATGATACCTTGATGGATTGCATGGCCCTCGAGCCGGCGACGCTTCATTCAAATTTCTGCCCTATCAACTTTCGATGGCAGGATAGAGGCCTACCATGGTGGTGACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCCGAGAAACGGCTACCACATCCAAGGAAGGCAGCAGGCGCGCAAATTACCCAATCCTGACACGGGGAGGTAGTGACAATAAATAACAATACTGGGCTCATC-GAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAACGA-GGATCCATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAATAGCGTATATTTAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATCTTGGGACGGCCCGGCC-GGTCCGCT-TTTTTGGGTGTGCACCGGCCGTTTCGTCCCTTTTGTTGGCGGCGCG---CACCTGGCCTTAACTGTCTGGG-TCGCGGT-TCC--ACGCTGTTACTTTGAAAAAATTAGAGTGCTCAAAGCAAGC-TTATGCTCTGAATACATTAGCATGGAATAACGGTATAGGATTCTGGTCCTATTGCGTTGGCCTTCGGGACCGGA-GTAATGATTAACAGGGACGGTCGGGGGCATTCGTATTTCATTGTCAGAGGTGAAATTCTTGGATTTATGAAAGACGAACCACTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATCAGATACCGTCCTAGTCTCAACCATAAACGATGCCGA-CCAGGGATCGGCGGATGTTGCTCTAAGGACTCCGCCGGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTATGGTCGCAAGGCTGAAACTTAAAGGAATTGACGGAA-GGGCA-CCACCAGGAGTGGAGCCTGCGGCTTAATTTGACTCAACACGGGGAAACTTACCAGGTCCAGACATAGCAAGGATTGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTGGTGCATGGCCGTTCTTAGTTGGTGGAGCGATTTGTCTGGTTAATTCCGTTAACGAACGAGACCTCGGCCTGCTAACTAGCTACGCGGAGGG----TTTCTTTCGTGGCCAGCTTCTTAGAGGGACTAT-GGCCGTTTAGGCCATGGAAGTTTGAGGCAATAACAGGTCTGTGATGCCCTTAGATGTTCTGGG-CCGCACGCGCGCTACACTGATGTATTCAACGAGTCTATAACCTGGGCCGGGAGGTCCGGGAAATCTGGCGAAATTTCATCGTGATGGGGATAGATCATTGCAATTATTGATCTTCAACGAGGAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTACGTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGATCCGGTGAAGTGTTCGGATCGTGCCGACGACGGCGGTTCGCTGGGCGCGACGTCGCGAGAAGTTCATTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAGGTTTCCGTAG??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????-?????????????????   [2120]
+Psilotum_n        ???????????????????????????????????????????????????????????????????GCGAATGGCTCATTAAATCAGTTATAGTTTCTTTGATGGTACCTTGCTACTCGGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACCAACTCCCGACTTC-CGG-AGGGACGCATTTATTAGATAAAAGGCCGATGCGGGCTT-GCCCGGTTATGC-GT-ATTCATGATAACTCTGCGAATCGCACGGCC????????????????????????????????????????????????????????????????????????TGGTGACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCACATCCAAGGAAGGCAGCAGGCGCGCAAATTACCCAATCC-GAC-CGGGGAGGTAGTGACAATAAATAA-AATACTGGGCTTTTCAAAGTCTGGTAATTGGAATGAGTACAATCTAAACCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAGAACGAAAGTTGGG--CTCGAAGACGATCAGATACCGTCCTAGTCTCAACCATAAACGATGCCGA-CTAGG--TC-GCGGATGTTACCTTGATGACTCCGCCGGCACCTTAT--AGAAATC-AAGTCTTTGGGTTCCGGGGGGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGATTGACAGATTGAGAGCTCTTTCTTGGTTCTATGGGTGGT---G-ATGGCCGTT---AGTTGGTGGAG-G-TTTGTCTGGTTAATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACGCGAAGGA----TCCTCTTCGTGGCCAACTT-TTAGAGGGACTAT-GGCCGCCTAGGCCATGGA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GTCTTCAAC-A-GAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTACGTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCCGGTGAAGTTTTCGGATTGCGGCGAGCGGTCCGCCGGCACGTTGT---------GAGAAGTTCATTAAACCTTATCATTTAGAGGAA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????-?????????????????   [2103]
+Equisetum_ar      ???????????????????????????????????????????????????????????????????GCGAATGGCTGATTAAATCAGTTATAGTTTCTTTGATGGTACCTTGCTACTCGGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACCAACTCCCGACTTC-TGG--GGGA-GCATTTATTAGATAAAAGGCCGATGCGGGCTGTGCCCGGTAA----CGGATTC--GATAACTTCCCGGATCGCACGGCCT????ACGGGTGA????????????????????????????????????????????????????????????????????????CGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACCACATCCAAGGAAGGCAGCGGGCGCGCAAATTACCCAATCC-GACACGGGGAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAGAACGAAAGTTGG---CTCGAAGAC-ATCA?ATACCGTCCTAGTCTCAACCATAAACGA-GC?GA-CTAGGGATT--CGGATGTTACTTCAATGACTCTGCCGGCACCTTAT-GAGAAATCAAAGTCTTTGGGTTCC----GGA-T??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGACAGATTGAGAGCTCTTTCTTGATTCTATGGGTGGTAGTGCATGGCCGTTCTTAGTTGGTGGAGTGATTTGTCTGGTTAATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACGCGAAGAC----TTGTCTTCGTGGCCAACTTCTTAGAGGGACTAT-GGCCGTCTAGGCCATGGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TCTTCAACTAGGAATTCCTAGTAAGC-CGAGTCATCAGCTCGCGTTGACTA-GTCCCTGCCCTTTGTACACACTGCCCGTCGCTCCTACCGATTGAATGGTCCGGTGAAGTTTTCGGATT-CGGCGACGCTGGCGGT-CGCCGGCGACGTTGT---GAGAAGTTCATTGAACCTTACCATTTAGAG?????????????????????????????????????????????????????GCACCATCGACCGACCGTGAT?CTTCTGTGAAAGGTTT?GAGTGAGAGCATACCTGCTGGGACCC?AAAGATGGTGAACTATGCCTGAGCAGGGCGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGGTATAGGGGCGAAAGACTAATCGAACCATGCGGGGGCCCTGGGAAGAGTTCTCTTTTCTTTTTAACA?ACTTGCCCACCCTGAAATCGGATCAACCGGAGATAGGGTCCAGCGGTTGGT?AAAGCA?CGCAGGTC?TGCGGTGTCCGGTG--CCCCCGGCGGCCCTTGA   [2108]
+Atrichum_angus    ??????????????????????????????????????????????????????????????????????????????ATTAAATCAGTTATAGTTTCTTT-ATGGTACCTTGCTACTCGGATAACCGTAGTA--TTCTA-AGCTAATACGTGCACAAACTCCCGACCTC-TGGAAGGG-CGT-TTTATTAGATAAAAGGCCGATGC-GGCTT-GCCCGGTAT-TCGGTGACTCA-GATAACTCGTCGAATCGCACGGCCTTA?????????????????????????????????????????????????????????????????????????????????????AGAATT----TTCGATTCCGGA-AGGGAGCCTGAGAA-CGGCTACCACATCCA---AAGGCAG-?-??-?-?--ATT-CCCAATCC-GAC--GGGGAGGTAGT-ACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAA--A??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTTCTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAG???GAAAGTTGGGGGCTCGAAGACGATCAGATACCGTCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTTGCGGGTGTTAATTTGATGACCCCG-AAGCACCTTAT-GAGAAATC-AAGTATTTGGGTTCCGGGGGGAGTATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCTTTCTTGATTCTATGGGTGGT-GTGCATGGCCGTT-TT-GTTGGTGGAGTGATTTGTCTGGTTAATTCCGTTAAC-AACGAGACCTCAGCCTGCTAACTAGTTACACGAAGAA----TC-TCTTTGTGGCCAACTT-TTAGAGGGACTATTGGC-GTCT-GCCAATGGAA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ATAGATCATTGC-ATTATTGATCTTCAA--A-GAATTCC-AGTAAGCGCGAGTCATCAGCTCGCGTTGATTACGTCCCTGCCCTTTGTACACACC-CCCGTCGCTCCTACCGATTGAATGGTCCGGTGAAGTTTTCGGATCG-GGTGATCGGGTT----G-GTTCGG?GACTTGT--GAGAA-TTCATTAAA--TTATCATTTAGAGGAA??????????????????????????????????????????????????GCAC?AT?GACCGACCGTGAT?CTTCTGTGAAAGGTTT?GAGTGTGAGC?T?CCTGCTGGGACCC??AAGATGGTGAACTATGCCTGAGC?AGGCGAAGCCAGAGGAAACTCTGGTGGAGGCTC?G?AGC?ATACTGACGTGCAAATCG?TTCGTCAGACTTGGG?ATA????C?AAAGACT?ATCGAACCATGCGAGGGCCCCGGGAAGAGTTCTCTTTTCT?TTTAACA?GCCTGCCT?CCCTGGAATCGGATTACC?GGAGATAGGGTCCAGCGGCTGGT?AAAGCACCGCAC?TCTTGCGG?GTCCGG-G-GCCCC?GGCGGCCCGTGA   [2080]
+Fissidens_taxi    ???????????????????????????????????????????????????????????????????????????????????????GTTATAGTTTCTTT-ATGGTACCTTGCTACTCGGATAACCGTAGTAA-TTCTA-AGCTAATACGTGCACAAACTCC-GACTCG?TGGA-GGGACG-ATTTATTAGATAAAAGGC-GAT-C-------GCC-GGTGTT---GCGAATCA-GATAAC?AGTCGAATCGACCC??????????????????????????????????????????????????????????????????????????????TGACGGGTGACGGA?AATTAGGGTTCGATTCCG-A-A-GGAGCCTGAG---CGGCTACCACATCC--GGAAGGCAGC--GCGCGC--ATTACCCAATCC-GA---GGGGAGGTAGT-ACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAA--A???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCGAAGACGATCAGATACCGTCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGTGTTGATTTGATGACCCCGCCAGCACCTTGA-GAGAAAT--AAGTTTTTGGGTTCCGGGGGGAGTATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCTTTCTTGATTCTATGGGTG-T-GTGCATGGCCGTT-TTAGTTGGTGGAGTGATTTGTCTGGTTAATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACGCGAAGGATTTCTCTCCTTGGCGGCCAACTTCTTAGAGGGACTATCGGC-GTCTAGCCGATGGAA?TTT?A????????????????????????????????????????????????????????????????????????????????????????????????????AATCTTCTGAAATTTCATCGTGAT--GGATAGATCATTGCAATTATTGATCTTCAAC-A-GAATTCCTAGTAAGCGCGAGTCATCAGCTCGCGTTGACTACGTCCCTGCCCTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCCGGTGAAGTTTTCGGATTGCG?CGAC-?-GGGTTCG----CCGCGCGCTGT---GAGAAGTTCATTAAACCTTATCATTTAGA--A??????????????????????????????????????????????????????????????????????????TTCTGTGAAAGGTTC?GAGTGTGAGCATACCTGTTGGGAC????AAGATGGTGAACTAT???TGA???AGGCGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG??T?GT?AGACTTGGGTATAGGGGC???AGACTAATCGAAC?AT?CG?GGGCCCCTGGAAGAGTTCTCTTTTCT?TTTAAC?GGCCTGCCT??CCTGGAATCGGATTACCCGGAGATAGGGTCCAGCGGCCGGT?AAAG???CGCACGTCTTGCGG?GTCAGGTG--CCCTCGGCGGCCCT?GA   [2082]
+Plagiomnium_cu    ????????????????????????????????TGTGTAAGTATAAACT-CTTTTGTACTGTGAAACTGCGAATGGCTCATTAAATCAGTTATAGTTTCTTTGATGGTACCTTGCTACTCGGATAACCGTAGTAA-TTCTAGAGCTAATACGTGCACAAAATCCCGACTGG--G?AAGGGA?G-ATTTATTGGATAAAAGGCCGATGCGGGCTT-GCCCGGTTC-GCGG-GAC----GATAAC--GTCGAATCGCA-GGCCG???????????????????????????????????????????????????????????????????????????????????????????????????????????GA-A-GGAGCCT-AG---CGGCTACCACATCC-AGGAAGGC--C----------ATTACCCAACTCCGA---GGGGAGGTAGTGACAATAAATAACAATACTGGGC--TTACGGGCCCG---ATTGG--TGAGTA?AATCT-AATCCCTTAA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGAAATTCTTGGATTTATGAAAGACGAACTTCTGCGAAAGCATTTGCCAAGGATGTTTTCGTTAATCAA-AA-GAAAGTTGGGGGCTCGAAGACGATCAGATACCGTCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGTGTTGATTCGATGACCCCGCCAGCACCTTAT-GAGAAATC--AGTTTTTGGGTTCCGGGGGGAGTATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGAGCTCTTTCTTGGTTCTATGGGTGGT-GTGCATGGCCGTT-TTAGTTGGTGGAGTGATTTGTCTGGTTAATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACGCGAAGGATTTC-CTCCTTTGCGGCCAACTTC--AGAGGGACTATCGGC-GTC--GCCGATGGAAG?TTGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ATCATTGC-ATTATTGATCTTCAAC---GAATTCC-AGTAAGCGCGAGTCATCAGCTCG-GTTGACTAC-TCCCTGCCCTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCCGGTGAAGTTTTCGGATCGCG??A?C????GTTCGCCGC?GG?GACGTTGT---GAGAAG-TCATTAAACCTTATCATTTA-AG?????????????????????????????????????????????????????GCACCATCGACCGACCGTGAT?CTTCTGTGAAAGGTTT?GAGTGTGAGCACACATGTTGGGACCC???AGATGGTGAACTATGCCTGAGCAGGGCGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGGTATAGGGGC?AAAGACTAATCGAACCATGCGAGGGCCCCTGGAAGAGTTCTCT?TTCT?TTT?AC?GGCCCGACGACCCTGGAATCGGTTCACCCGGAGATAGGGTCCAGCGGCCGGT?AAAGCACCGCACGTCTCGCGGTGTCAGGTG-GCCCTCGGCGGCCCGTGA   [2074]
+Notothylas_bre    ????????????????????????????????????????????????????????????????????????????????????????????????????????????CCTT-CTACTCGGATAAC-G-AGTAA-TTCTA-AGCTAA-ACGTGCAACAACTCCCGACT-C-TGGAAGG-A-G-ATTTATTAGATAAAAG---GATG---GCTT-GTCCCGTTT-A--CTGAATC-TGATAACTCCTCGAATCGCACGGCCCT???????????????????????????????????????????????????????????????????????????????????????????????GTTCGATTCCGGAGAGGGA--C-GAGAAACGGCTACCACATCC--?--AGGCAG---????----ATTACCCAATCC-GA---GGGGAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCCTTAA--A????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAAGTTGGGG-CTCGAAGACGATCAGATAC--TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGGTGTTAATTAGATGACTCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGG???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CA-GGCCGTT-TTAGTTGGTGGAGTGA-TTGTCTGGTTAATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACAC-AAGAA----CCTTCTTCGTGGCCAACTTCTTAGAGGGACTATTTGC-GTCTA-CGAATGGAA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GGA-AGATCATTGC-ATTATTGATCTTCAAC-AGGAAT-CCT-GTAAGCGCGAGTCATCAGCTCGCGTT-ACTACGTCCCTGCCCTTTGTACACAC-GCC-GTCGCTCCTACCGATTGAATGGTCCGGTGAAGTTTTCGGATTGCGGCGACACCGGGTCACCG-CCGGGGACGTT-T--GA-AA-TTCATTAAACCTTATCATTTA?A????????????????????????????????????????????????????????????????????CC?TGAT?CTTCTGTGA?AGGTTT?GAGTGTGAGCATACCTGCTGGGACCC????GATGGTGA?CTATGCCTGAGCAGGGCGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGA?GTGCAAATCG?TTCGTCAGACTTGGGTATAGGGGCGAAAG?CTAATCG?????????????CCCCGGG?AGAGTTCTC?TTTCTTTTTAACA?GCCTGCCTACCCTGAAATCGGATTACCCGGAGATAGGGTCCAGCGGCTGGT?AAAGCACCACACG?CTTGCGGTGTCCGGTG-?CCC??GGCGGCCCGTG?   [2076]
+Phaeoceros_lae    ?????????????????????????????????????????????????????????????????????????????????????????????????????GATGGTACCTTGCTACTCGGATAACC--AGTAA-TTCTA-AGCTAAT-CGTGCAACAACTCCCGGCTTT-TGG-AGGG-TGT-TTT-TTAG-TAAAAG---GA-GCGG-CTT-GTCCCGGTTTACGGTGAA-CW-GATAACTCCTCGGATCGCACGGCCCT??????????????????????????????????????????????????????????????????????????????????ACGGA-AATTAGGGTTCGATTCCGGA-A-GGAGCCTGAGAAACGGCTACCACATCC-AG-AAGGCA-CA--CGCGC--ATTACCCAATCC-GAC-CGGGGAGGTAGTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGA-TACAATCTAAATCCCTTAAC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????GAAAGTTGGG--CTCGAAGACGAT-AG-TACCGTCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGATGTTAATTAGATGACTCCGCCAGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTAT?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????T--TGCATGGCCGTT-TTAGTTGGTGGAGTGATTTGTCTGGTTAATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACACGAAGAA----CCTTCTTCGTGGCCAACTTCTTAGAGGGACTATTTGC-GTCTAGCGAATGGAA???????????????????????????????????????????????????????????????????????????????????????????????????????????ATCTTTG-AAATTTCATCGTGAT--GGATAGATCATTGCAATTATTGATCTT-AA----GAATT--TAGTAAGCGCGAGTCATCAGCTCG-GTTGACTA-GTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCCGGTGAAGTTTTCGGATTGCGGCGACA-CGGGT?ACC--GCCGGGACGTTGT--GAGAAG-TCATTAAACCTTATC-TTTAGAGGAA??????????????????????????????????????????????????GCACCATCGACCGACCATGAT?CTTCTGTGAAAGGTTT??AGTGTGA??ATACCTGCTGGGACCC??AAGATGGTGAACTATGCCTGAGTCAGGCGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGA?GTGC?AATCG?TTCGTCAGACTTGGGTATA?GGGC???AGACTAATCGAACCATGCG?GGGCCCCGGG?AGAGTTCTCTTTTCT?TTTAACA???CTGCCTGCCCTGAAATCGGATTACCCGGA?ATAGGGTCCAGCGGCTGGT?AAAGCACCACACGTCTTGCGGTGTCCGGTG-GCCCCTGGCGGCCCGTGA   [2082]
+Porella_pi        ??????????????????????????????????????????????????????????????????????????????????????????????????TTTGATGGTACCTTGCTACTCGGATAACC-TAGTAA-TTCTAGAGCTAATACGTGCACCAACTCCCGACTTC-TGGAAGGG-CGTATTTATTAGATAAAAGACCGATGCGGGC-T-GCCCGGTGTTGCGGTGAATCATGATAACTCGTCGAATCGCACGGCC???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAACGGCTACCACATCCAAGG-AGGCAGCCGG-GCG---ATTACCCAATACCGACACAGG?AGGTAGTGACAATAAATAACAATACTGGGCTTTACCAAGTCTGGTAATTGGAATGAGTACAATCTAAATCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AA?AAC?AAAGTTGGG--CTCGAA-ACGAT-AGATACCGTCCTAGTCTCAACCATAAACGATGCCGAGCTAGGGATTG--GGATGTTAATTTGATGACTCCGC-AGCACCTTAT-GAGAAATCAAAGTTTTTGGGTTCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CC-----TAGTTGGTGGAG-G--TTGTCTGGTTAATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGTTACACGAAGAA----TCTTCTTTGTGGCCAACTT-TTAGAGGGACTATT--C-GTCTAGCCAATGGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TCTTCAAC-AGGAAT-CCTAGTAAGC-CGAGTCATCAGCTCGCGTTGACTACGTCCCTGCCCTTTGTACACAC--CCCGTCGCTCCTACCGATTGAATGGTCC-GTGAAGTTTTCGGATTGCGGCGACGCGGCGGTTCGCTGCCGGGACGTTGT--GAGAAGTTTATTAAACCTTATCATTTA?A???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????   [2105]
+Conocephal_con    ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ACGTGCACC-AGGCTCGAC---?TGGAAGGG--G--TTTTTTAGATAAAAGACCGATGGGGGTGCTGCC-GGTGATTC-GGGA-TC-TGATAACTCGACGAATCGCACGGCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????GAGCCTGAGAAACAGCTACCACATCCAAGGA-GGCAGCAGGCGCG---ATTACCCAATCCCGACACGGGG-GGT-GTGACAATAAATAACAATACTGGGCTTTTACAAGTCTGGTAATTGGAATGAGAACAATCTAAATC???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAGGATGTTT--ATTAA--AA-AA-GAAA-TTG-------GAAGACGATCAGATACC--CCTAGTCTCAACCATAAACGATGCCGA-CTAG--ATC--CGGATGT?CTTTTGATGACTCCGCCGGCACCTCCA-GAGAAATCAAA-TTTTTGGGTTCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTCTTTCTT-ATTCTATGGGT--T--TGCAT---CGTTCTTAGTTGGTGGAGTGATTTGTCTGGTTAATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTA-CTACGCGAGTCCATTT--TTTGTCCTGCGCAGCTT-TTAGAGGGACT---GG---TC--GCC-ACGGAA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TAGATCATT?C?ATT?TTGATCTTGAA-----AATTCC--GTA--CGCGAGTC-T----TCGCGCTGATT-CGTCCCTGCCCTTTGT-C-C-CCGCCC--CGCTCCT-CCGATTGAATGGTCCGGTGAAGAGTTCGGA-CGCGGCGACGTGC--?GTCGCCGCCGGGACGTTGT--GAGAAGTTCTTT-AACCTTATCA-TTAGA?????????????????????????????????????????????????????????CCAGCGACC??????????????TGCGAAAGGTT??GAGT??GAGCGTGCCTGTTGGGACCC??AAGATGGTGA?CTATGC?TGAGCAGG?CGAAGCCGGAGGAAACTCCGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTC?TCAGACTCGGG?ATA??????AAAGACT?ATCGAACCATGCGG??GCCCCGGGAAGAGTTTTCTTTTCT?TTT?AC?GACCTGCC?GCCCTGGAATCGCTTTATGCGGAGATAGGGCCCAGCGGTCGGT?AAAGCGTCGCAAGTCTTGCGG?GTCCGGTGCGCCCCCGACGGTCC??GA   [2058]
+Asterella_tene    ?????????????????????????????????????????????????????????CTGTGAAACTGCGAATGGCTC-TTAAATC-GTTATAGTTTCTTTGATGGTGCCTT-CTACTCGGATAACCG-AGTAA-TTCTAGAGCTAATACGTGCACCAACGCCCGACTTTCCGGAAGGG-TGT-TTTATTAGATAAAAGACCGATG---GCTT-GCCC-GGTGATT-CGGAATCATGATAACTCGACGAATCGCACGGCCT??????????????????????????????????????????????????????????????????????????????????????????????????????????????AGGGAGCCTGAG?AACGGCTACCACATCC-AG-AAGGCAG-A---GC-C--ATTACCCAATCC-GAC-----GAGG-AGTGACAATAAATAACAATACTGGGCT-TTACAAGTCTGGTAATTGGAATGAGTACAATCTAAATCCC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CTTCTGCGAAAGCATTTGCCAAGGATGTTTTCATTAATCAAGAACGAAAGTTGGGGGCTCGAAGACGATCAGATACCGTCCTAGTCTCAACCATAAACGATGCCGA-CTAGG-ATCG--GGATGT?GATTAGATGACTCCGCCGGCACCTCCATGAGAAATCAAAGTTTTTGGGTTCCGGGGGGAG-ATG?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TGGTGG-GTGATTTGTCTGGTTAATTCCGTTAACGAAGGAGACCTCAGCCTGCTAACTA-CTACGCGGGGGT----WCTCCCCTGCGGCCAGCTT-TTAGAGGGACTGTCGGC-GTCTAGCCGA-GGA?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGTCATCAGCTCGCGTTGACTACGTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAATGGTCCGGTGA-GAGTTCGGATCGCGGCGACGCGCG-GTTCGCCGCCGGGACGTTG---GA-AAGTTCTTTAAACCTTATCA????????????????????????????????????????????????????????????T?AACATCGACCGACCATGAT?CTTCTGTGAAAGGTTC?G?GT?GGAGCATGCCTGTTGGGACCC??AAGATGGTGAACTATGC?TGAGCAGGGCGAAGTCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTCGGG?ATA??????AAAGACTAATCGAACCATGCGGAGGCCCCGGGAAGAGTTTTCTTTTCT??TT?AC?GACC?GCCGGCCCTGAAATCGCATTACGCGGAGATAGGGCCCAGCGGTCGGC?AAAGCGTCGCA?GTCTTGCGG?GTCCGGTG?GCCCCCGACGGCCCC?GA   [2097]
+Riccia            ?????????????????????????????????????????????????????????????????????????????????????????????????????????????TTTACTACTCGGATAACC-TAGTAA-TTCTAG-GCTAATACGTGCACCAACGCCCGACTTCGCGGAAGGGCTGTATTTATTGGATAAAAGGCCGATG-GGGCTTGCCCCGGTGTTT-CGTGAATCATGATAACTCGACGAATCGCACGGCCCCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CGCAAATTACCCA-TCC-GAC-----GA--TAGTGACAATAAATAACAATAGTGGGCT-TTACAA-TC--GTAATTGGAA--AGTACAATCTAAATCCCTTA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAAGCATTTGCCAAGGATGTTTTCATTAAT-AACAA--AAAGTTGG?GGCTCGAAGACGATCAGATACC-TCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATCGGCGGATGT?GATTTGATGACTCCGCCGGCACCTCCT-GAGAAATCAAAGTTTTTGGGTTCCGGGGGGAGTAT??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ATTGAGAGCTCTTTCTTGATTCTATGGGT--T--TGCATGGCCG-TCTTAGTTGGTGGAGTGATTTGTCTGGTTAATTCCGTTAACGAACGAGACCTCAGCCTGCTAACTAGCTACGCGGGGGT----TCTCCC-TGCGGCCAGCTT---AGAGGGACT--CGG---TCTAGCCGACGGAA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TTGC?ATTATTGATCTTCAAC-A-GAATTCC-AGTAA---CGAGTCGAACAGTCGCGCTGACTACGTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATTGAATGGTCCGGTGA-GAGTTCGGATCG---CGAC------GTTCGCCGC-GGGACGTTGT--GAGAAGTTCTTTAAACCTTATC-TTTAGA???????????????????????????????????????????????????????????????????????????????????A?AAGGTTCGGAGTAAGAGCATGCCT?TTGGGACCC??AAGATGGTGAACTAT???TGAG?A?GGCGAAGCCAGAGGAAACTCTGGTGGAGGCTC?GTAGCGATACTGACGTGCAAATCG?TTCGTCAGACTTGGG?ATAG??G??AAAGA?TAATCGAACCAT??????GCCCCGGGAAGAGTTTTCTT?TCTT?TT?AC?GACC?GCC?GCC?TG?AATCGCA?TACGC?GAGATAGGGCCCA?CGGTCGGC?AAAGCGTCGCA??TCT??CGGCGTCCGGTGC??????????????????   [2084]
+Klebsormid_fla    ????????????????????????????????????????????????????????????????????????????????????????????????????????????CCTTA-TACTCGGATAACCGTAGTAAGTTCTA-AGCTAATACGTGCACCAAATCCCGACTTC-TGGAAG?ACGTGATTTATTAGATAAAAGGCCAATGCGGGCTT--CCCGGTATTGCGGTGAATCATGATAACTCGTCGAATCGCACGGCCTTTGCGCTG??????????????????????????????????????????????????????????????????TAACGGGTGACGGAGAATT?GGGTTCGATTCCGGAGA?GGAGCCTGAGAAACGGCTACCACATCCAAGGAAGGCAGCAGGCGCGC--ATT-CCCAATCCTG-T-CAGGGAGGTAGTGAC-ATAAATAACAATGCTGGGCTTTTCAAAGTCTGGCAATTGGAATG??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AAGGATGTTTTCATTAAT---GA--GAAAGTTGGGGGCTCGAAGACGATCAGATACCGTCCTAGTCTCAACCATAAACGATGCCGA-CTAGGGATTGGCGGATGTTAATTTGATGACTCCGCCAGCACCTTAT-GAGAAATC--AGTTTTTGGGTTCCGGGGGGA-TATGGTC?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AACGAACGAGACCTCAGCCTGCTAACTAGTTACACGGAGAT----TCTTCTCCGTGGCCAACTTCTTAGAGGGACT??????????????????GGAA?TTTGA????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????TCGCGTTGATTTAGTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATTGAATGATCCGGTGAAGTTTTCGGATTGCGGCTACTGGTCCGCCGCCGAAGAAGCTGTGAG--GCAAGGTTCATTAAACCTTATCATTTAGAGGA???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AGATGGTGAACTATGCCTGAGGCAGGCGAAGCCAGAGGAAACTCTGGTGGAGGCTC?G?A?CGATACTGACGTGCAAATCG?TTCGTCAG?CTTGGG??TA??GCGGAAAGACTAATCGAACCAT?????????????GAAGAGTTCTCTTTTCTTTTTAACAGTCC?GCCCACCCTGGAATCAGATTAACTGGAGATAGGGTCCAGCGACTGGG?AAAGCATCGCACGTCTCGCGGTGTCTGGTGCGCCCT?GACGGCCCTTGA   [2120]
+Coleochaet_nit    ????????????????????????????????????????????????????????????????????????TGGCTCATTAAATCAGTTATAGTTT-TTTGATGGTAGCC---TACTCGGATAACC-T-GTAA-TTCTAGAGCTATACCGTGC-CC--ATCC-GACTTC-TGGAAGG--GGTATTTGTTAGATAAAAGACCAAT----GCTC-GCCCGGTGTT-CGGTGAATC--GATAACTCCTCG?ATCGCACGGCCT??????????????????????????????????????????????????????????????????????????????????????????????????????????GGAGAGGGAGCCTGAGAAACGGCTACCACATCCAAGGA?GGCAG--GGCGCG--GATTACCCAATCCTGATACAGGGAGGTAG--ACAATAAATAACA-TACTGGGCTTTTA-AAGTCTGGT?ATTGGAATGAGTACAATCTAAATCTC????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CATTAATCAAGAA-GAAAGTTGGGGGCTCGAAGACGATCAGATACCGTCCTAGTCTCAACCATAAACGATGCCGACCTAGG-ATCAACGGATGTTAATTTAATGACTCCGCCAGCACCTTAT--AGAAA-CAAAGTTCTTGGGTTCC??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????AT--CCAGTTTTCGTTCW-GGAGTGATTTGTCTG-TTAATTC?G?TAACGAAGGAG?CCTCAGCCTGCTAACTAGGCTAACG---------TTTTGTTGGGAC---ACTTGTTAGAGGGACT??????????????????GGA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????G-TCTCGAACGA-GAATACCTAGTAAGCGCTCGTCATCAGCGTGCGCT-ACTACGTCCCTGCCCTTTGTACACAC-GCCCGTCGCTCCTACCGATAGAATGCTCCGGTGAAGCATTCGGATCGCCACCGGCGGGCAACTCCGGAGACGGCATG------AGAA-TT-GTTGAACCTTATCGTTTAGAGGA????????????????????????????????????????????????????CACCACGCGCCGATCC???????????GGAAGGGTTC?GAGCTGAGA?A?GTATGTTGGGACCC???AGATGGTGAACTATGCCTGA??AGG?CGAAGCCAGAGGAAACTCTGGTGGAAGATC?GCAGC?ATACTGACGTGCAAATCG?TTCGTCGGACTTG?GTATA????C?AAAGACT?ATC?AACCATGCGGGG?CTCCGGG?AGAGTTTT?TTTTCTTTTTGACA?GTC?GAGCGCCCTGGAATTGATT?C?CGGCG?GAGGGTGC?GAAAGCTGGC?AGAGCG-CGCACTGGT??CGGTGTC?GGTG?AC?CCG??TT?CCCTAGA   [2084]
+;
+END;
+
+
+BEGIN CODONS;
+GENCODE UNIVNUC
+;
+END;
+
+BEGIN ASSUMPTIONS;
+	OPTIONS  DEFTYPE=unord PolyTcount=MINSTEPS ;
+
+	EXSET * POOR  =  1-32 221-229 261-335 524-901 1123-1230 1360-1382 1422-1527 1702-1732 1766-1815;
+
+END; 
+
+
+
+
+BEGIN MACCLADE;
+v 3.0
+-1474214696
+0100&/0
+0
+0
+END;


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPMolecular.nex
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPMorph.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPMorph.nex	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPMorph.nex	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,316 @@
+#NEXUS
+[MacClade 3.01 registered to Equator, UCMP]
+
+BEGIN DATA;
+DIMENSIONS  NTAX=27 NCHAR=113;
+
+[!This is the final revised morphological matrix for land plants (LP-MORPH),
+corrected 12/93,  per comments of co-authors.
+
+**used in the Ann .Mo. Bot. 81: 451-483 (Mishler et al. 1994) green plant synthesis paper.
+
+Characters are re-numbered as they are used in our text, but you can see Karen Renzaglia's old
+numbers (from the sperm data set, Garbary et al. 1993, Pl. Syst. & Evol.,
+which see for more details on characters), or reference to other literature
+(M&C = Mishler and Churchill, 1985, Cladistics 1:305-328) as footnotes to the characters.]
+FORMAT MISSING=? GAP=-  SYMBOLS= " 0 1 2 3 4 5 6";
+[OPTIONS  MSTAXA=UNCERTAIN ;]
+
+CHARLABELS
+	[1]	apical_cell_in_antheridia	[2]	div._pat._in_young_antheridia	[3]	endogenous_antheridia	[4]	antheridial_stalk	[5]	operculum_cells
+	[6]	sperm_in_pollen_tube	[7]	number_of_sperm_per_male_struc.	[8]	nascent_spermatids	[9]	diagonal_spindle_in_final_mitot	[10]	replication_of_the_centrioles
+	[11]	time_of_origin_of_centrioles	[12]	basal_bodies_and_flagella	[13]	bicentrioles	[14]	basal_body_position	[15]	proximal_extension_A
+	[16]	proximal_extension_B	[17]	stellate_transition	[18]	connect._fibers_betw._basal_bod	[19]	basal_body_structure	[20]	BB_staggering_assoc._w._MT_grow
+	[21]	regression_of_LS	[22]	'LS/AM_elongation_longit.'	[23]	spline_aperture	[24]	sline_aperture_location	[25]	position_of_developing_MLS
+	[26]	plaque_stratified_betw._blephar	[27]	'spline/LS_orientation'	[28]	posterior_notch_to_LS	[29]	LS_position	[30]	stray_spline_MT
+	[31]	accessory_band_of_MTs	[32]	maturational_elongation_of_AM	[33]	spline_shank	[34]	osmiophilic_crest	[35]	anterior_osmiophilic_crest
+	[36]	changes_in_BBs_at_mat.	[37]	matrix_around_BBs	[38]	posterior_of_the_stellate_patt.	[39]	flagellar_scales	[40]	late_blepharoplast_w._transient
+	[41]	direction_of_flagellar_emergenc	[42]	nuclear_shape_at_maturity	[43]	nuclear_posterior_shape	[44]	median_constriction	[45]	splin_attached_to_nucleus
+	[46]	spline_growth_assoc._w._nucl._s	[47]	direction_of_nuclear_compaction	[48]	condensed_chromatin_strands	[49]	diverticulum_during_shaping	[50]	number_of_gyres_of_nucleus
+	[51]	dense_body_in_ant._mitochondrio	[52]	mit._assoc._w._plastids_in_sper	[53]	mit._assoc._w._plastids_in_sper	[54]	specialized_ant._mito.	[55]	specialized_posterior_mito.
+	[56]	additional_mito._in_ant._of_cel	[57]	origin_of_AM	[58]	osmophilic_material_underneath	[59]	change_from_cristae_sacs_to_baf	[60]	monoplastidic_sperm
+	[61]	plastid_determines_division_pol	[62]	starch_grains_in_single_plastid	[63]	sperm_plastid_contacting_nucleu	[64]	fibrillenscheide	[65]	cytoplasmic_loss
+	[66]	embryo	[67]	cuticle	[68]	lunularic_acid	[69]	elaters	[70]	oil_bodies
+	[71]	'D-Methionine'	[72]	stomates	[73]	vert_div_of_zygote	[74]	xylem	[75]	phloem
+	[76]	perine_layer_on_spores	[77]	'aerial_sporophyte_axis_(persist'	[78]	columella	[79]	Multicellular_rhizoids	[80]	leaves_on_gam.
+	[81]	independent_sporophyte	[82]	branched_sporophyte	[83]	tracheids	[84]	lignin	[85]	'long_exserted_seta_(of_liv._typ'
+	[86]	oil_body_cells	[87]	spore_mother_cells_lobed	[88]	'capsule_2-4_valved'	[89]	'caps_wall_cells_w/_trans_thick'	[90]	thick_caps._wall
+	[91]	elongate_antheridia	[92]	aerial_calyptra	[93]	paraphyses	[94]	costate_leaves	[95]	peristome
+	[96]	operculum	[97]	cylindical_sprogen_layer	[98]	transfer_cells_on_gam_side	[99]	transfer_cells_on_spor.__side	[100]	seed
+	[101]	megaphyll	[102]	microphyll	[103]	'lateral,_broad_sporangia'	[104]	exarch_maturation_of_xylem	[105]	cp_DNA_inversion
+	[106]	sporangia_borne_on_leaves	[107]	trichomes	[108]	flavonoids	[109]	retention_of_zygote	[110]	sheathed_hairs
+	[111]	polyphenolics_induced_by_sex	[112]	parenchyma	[113]	beaked_muscilage_papillae
+	;
+STATELABELS
+	1  absent present,
+	2  'four-celled' 'two-celled',
+	3  absent present,
+	4  absent present,
+	5  absent present,
+	6  absent present,
+	7  1000+ '100-1000' '16-24' 2,
+	8  paired not_paired,
+	9  absent present,
+	10  present absent,
+	11  always_present sperm._mother_cells sperm._moth._cell_progenitor earlier,
+	12  two more_than_two,
+	13  present absent,
+	14  right_angles 'side-by-side' 'staggered_ant-post' staggered_continous,
+	15  absent long short,
+	16  'ventral_-_dorsal' ventral,
+	17  present absent,
+	18  present absent fine_filaments_w._centrin,
+	19  monomorphic dimorphic,
+	20  absent present,
+	21  absent complete partial,
+	22  parallel perpendicular,
+	23  absent present,
+	24  left_of_center right_of_center,
+	25  adjacent_to_BBs beneath_BBs,
+	26  absent present,
+	27  90_deg. 45_deg.,
+	28  absent present,
+	29  under_all_BBs under_ABB_only under_some_BBs,
+	30  absent present develops_late,
+	31  absent present,
+	32  absent posterior,
+	33  wide less_than_4_tubules,
+	34  absent present,
+	35  absent present,
+	36  absent dense_material_at_tip BB_cartwheel_w._plug BB_triplets_impreg._w._matrixma,
+	37  homogenous mottled,
+	38  extracell._or_partly entirely_intracell.,
+	39  present absent,
+	40  yes no,
+	41  toward_side toward_rear toward_anterior,
+	42  ovoid elongate,
+	43  not_expanded expanded,
+	44  absent present,
+	45  yes detached_at_maturity never_attached,
+	46  absent present,
+	47  outer_shell anterior_to_posterior at_equal_rates_along_nucl. general_increase_in_density,
+	48  'spaghetti-like' perpendicular_to_spline 'spiral-central_strand' general_compaction spikes irregular_plates solid_mass_from_ant._tip,
+	49  absent present,
+	50  not_coiled '0.5-3' greater_than_3,
+	51  absent present,
+	52  absent present,
+	53  absent present,
+	54  present absent,
+	55  present absent,
+	56  absent row_of_mito._behind_AM numerous_unspecialized,
+	57  fusion elongation,
+	58  absent present,
+	59  absent present,
+	60  present absent,
+	61  'present_-_at_poles' 'present_-_asymmetrical' absent,
+	62  more_than_one one,
+	63  absent present,
+	64  absent present,
+	65  absent partial 'complete_(or_tiny_remn.)',
+	66  absent present,
+	67  absent present,
+	68  absent present,
+	69  absent present,
+	70  absent present,
+	71  not_recognize recognize,
+	72  absent present,
+	73  absent present,
+	74  absent present,
+	75  absent present,
+	76  absent present,
+	77  absent present,
+	78  absent present,
+	79  absent present,
+	80  absent 'present_(of_moss_type)' 'present_(of_junger._type)',
+	81  absent present,
+	82  absent present,
+	83  absent present,
+	84  absent present,
+	85  absent present,
+	86  absent present,
+	87  absent present,
+	88  absent present,
+	89  absent present,
+	90  'absent_(unistrat.)' 'present_(2-10_strat.)',
+	91  absent present,
+	92  absent present,
+	93  absent present,
+	94  absent present,
+	95  absent present,
+	96  absent present,
+	97  absent present,
+	98  absent present,
+	99  absent present,
+	100  absent present,
+	101  absent present,
+	102  absent present,
+	103  absent present,
+	104  absent present,
+	105  absent present,
+	106  absent present,
+	107  absent present,
+	108  absent present,
+	109  absent present,
+	110  absent present,
+	111  absent present,
+	112  absent present,
+	113  absent present,
+;
+
+MATRIX
+					 [----+--10|----+--20|----+--30|----+--40|----+--50|----+--60|----+--70|----+--80|----+--90|----+-100|----+-110|---]
+CHARA            ?????0??0030?00?020???0??0???00?0000000?11000000010??1?1?011201020000000000000000000000000?0000000000000?00100000
+NITELL           ?????0??0030?00?020???0?000??00?0000000?11000000010001???0?1201020000000000000000000000000?0000000000000?00100000
+COLEOC_PUL       ?????0???000?00?0?0?000?000??0000000000?00?00???000000?1??0000?010000000000000000000000000?0000000000000?00011100
+COLEOC_ORB       ?????0??1000?00?0?0?000?000??0000000000?00?00???000000?1??0000?010000000000000000000000000?0000001000000?00011110
+PHAEOCEROS       0011000001101111100?200?101000010003001?1101001101111000011011102110001110000100000000000000000001000000?00010110
+NOTOTHYLAS       0011000001101111100?200?101000010003001?1101001101111000011011102110001110000100000000000000000001000000?00010110
+MARCHANTIA       000100000110121001112011101100000003001?1100001011001000001010112111110000000000000001000000000001100000000110110
+SPHAEROCARPOS    000100000110121001112011101100001003001?1100001011001000001010??211111000000000000000{01}000000000001100000?00110110
+PELLIA           010100000110121001112011101000000003001?1100101011001000001010112111110000000000000010111100000000000000?00110110
+BLASIA           0?0100000110121001112011101100000003001?1100001011001000001010112111110000000000000010111100000001100000?00110110
+JUNGERMANNIA     010100000110121001112011101000000003001?1100101011001000001010112111110000000002000010111100000000100000?00110110
+HAPLOMITRIUM     010100000110121?01112010101000?00?03001?11000015?10010000010?1??2111110000000000000010110000000001100000?00110110
+TREUBIA          01010000011012100111?010101000?00?03?01?11?0001???0??0000??0?0??211111000000000000001011110000000??00000?00110110
+SPHAGNUM         110100011110121011111011101012010003001?1100012201011000001001002110001100011111000000000001000100000000?00010110
+ANDREAEA         1101100111101210?1112011101010010003001?1100012201011000001000002110001001011111000000000011110000100000?00010111
+POLYTRICHUM      110110011110121001112011101011011003001?1100012201011000001000002110001101111111000000000011111110100000?00010110
+HYPNUM           110110011110121001112011101011010003001?1100012211011000001000002110001101111111000000000011111111100000000110110
+TAKAKIA          11011001111012100111?01110101??10?03?01?1100?????10?10000?1000??2110001001??11?10000000000110?0000100000?00110111
+LYCOPODIELLA     0?00001?1110140?020?010?1010000?0?00101?10?000??00001010?000?0001110001101111000111100000000000001100111000110110
+LYCOPODIUM       0?00001011101221020?010?101000010000101?10000?3310000010?0100010{12}110001101111000111100000000000001100111000110110
+SELAGINELLA      0??0?01??110?2210?0?200?101000010000101?110000?401001000?010?000211000110111100011110000000000000??00111000110110
+EQUISETUM        0?0000111111030?0100010?1110201001100011111000330100001110012?00111000110111100011110000000000000??00?00110110110
+PTERIDIUM        0?000021112103210?00010?111020100112?011111000330200001110012?001110001111111000111100000000000001101000111110110
+MARSILEA         0??0?0211121030?0100010?1110200000020011110000160200001010012?00111000111111100011110000000000000??01000?11110110
+OSMUNDA          0?000021112103210?00010?1110201001110011111000330100001110012?001110001111111000111100000000000001101000111110110
+GINKGO           ?????13?11?1030?0100010?1?1020000110011020?02???00000112?0012?0001100011011?100011110000000000000??11000111110110
+ZAMIA            ?????13?11?1030?0100010?1?1020000110011020?02???00000112?0012?0001100011011?100011110000000000000??11000111110110
+;
+END;
+
+BEGIN ASSUMPTIONS;
+	OPTIONS  DEFTYPE=unord PolyTcount=MINSTEPS ;
+
+	TYPESET * order_two  = unord: 1-6 8-49 51-113, ord: 7 50;
+
+	WTSET * CURRENT  = 1: 1-113;
+
+	EXSET  sperm_only  =  1-65;
+	EXSET  general_morph  =  66-113;
+
+END;
+begin paup;
+	constraint moss+trach =  (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,26,27));
+	constraint horn+moss+trach = (1,2,3,4,7,8,9,10,11,12,13,(5,6,14,15,16,17,18,19,20,21,22,23,24,25,26,27));
+	constraint bryos = (1,2,3,4,(19,20,21,22,23,24,25,26,27,(5,6,7,8,9,10,11,12,13,14,15,16,17,18)));
+	
+end;
+
+BEGIN NOTES;
+	TEXT  CHARACTER=1 TEXT= 'KAREN''S_#2';
+	TEXT  CHARACTER=2 TEXT= 'KAREN''S_#3';
+	TEXT  CHARACTER=3 TEXT= 'KAREN''S_#5';
+	TEXT  CHARACTER=4 TEXT= 'KAREN''S_#6';
+	TEXT  CHARACTER=5 TEXT= 'KAREN''S_#7';
+	TEXT  CHARACTER=6 TEXT= 'KAREN''S_#8';
+	TEXT  CHARACTER=7 TEXT= 'KAREN''S_#10__!ORD';
+	TEXT  CHARACTER=8 TEXT= 'KAREN''S_#12';
+	TEXT  CHARACTER=9 TEXT= 'KAREN''S_#14';
+	TEXT  TAXON=20 TEXT= 'Lycopodium_obscurum_added_from_Karen''s_notes_sent_3/1/93_--_note_that_the_old_Lycop_is_now_Lycopodiella_!';
+	TEXT  CHARACTER=10 TEXT= 'KAREN''S_#15';
+	TEXT  CHARACTER=11 TEXT= 'KAREN''S_#16';
+	TEXT  CHARACTER=12 TEXT= 'KAREN''S_#17	';
+	TEXT  CHARACTER=13 TEXT= 'KAREN''S_#18';
+	TEXT  CHARACTER=14 TEXT= 'KAREN''S_#19		';
+	TEXT  CHARACTER=15 TEXT= 'KAREN''S_#20';
+	TEXT  CHARACTER=16 TEXT= 'KAREN''S_#21';
+	TEXT  CHARACTER=17 TEXT= 'KAREN''S_#22';
+	TEXT  CHARACTER=18 TEXT= 'KAREN''S_#24';
+	TEXT  CHARACTER=19 TEXT= 'KAREN''S_#25';
+	TEXT  CHARACTER=20 TEXT= 'KAREN''S_#26';
+	TEXT  CHARACTER=21 TEXT= 'KAREN''S_#27';
+	TEXT  CHARACTER=22 TEXT= 'KAREN''S_#28';
+	TEXT  CHARACTER=23 TEXT= 'KAREN''S_#30';
+	TEXT  CHARACTER=24 TEXT= 'KAREN''S_#31';
+	TEXT  CHARACTER=25 TEXT= 'KAREN''S_#32';
+	TEXT  CHARACTER=26 TEXT= 'KAREN''S_#34';
+	TEXT  CHARACTER=27 TEXT= 'KAREN''S_#35';
+	TEXT  CHARACTER=28 TEXT= 'KAREN''S_#37';
+	TEXT  CHARACTER=29 TEXT= 'KAREN''S_#38';
+	TEXT  CHARACTER=30 TEXT= 'KAREN''S_#39';
+	TEXT  CHARACTER=31 TEXT= 'KAREN''S_#40';
+	TEXT  CHARACTER=32 TEXT= 'KAREN''S_#44';
+	TEXT  CHARACTER=33 TEXT= 'KAREN''S_#47';
+	TEXT  CHARACTER=34 TEXT= 'KAREN''S_#49';
+	TEXT  CHARACTER=35 TEXT= 'KAREN''S_#50';
+	TEXT  CHARACTER=36 TEXT= 'KAREN''S_#51';
+	TEXT  CHARACTER=37 TEXT= 'KAREN''S_#52';
+	TEXT  CHARACTER=38 TEXT= 'KAREN''S_#53';
+	TEXT  CHARACTER=39 TEXT= 'KAREN''S_#54';
+	TEXT  CHARACTER=40 TEXT= 'KAREN''S_#55';
+	TEXT  CHARACTER=41 TEXT= 'KAREN''S_#57';
+	TEXT  CHARACTER=42 TEXT= 'KAREN''S_#58';
+	TEXT  CHARACTER=43 TEXT= 'KAREN''S_#59';
+	TEXT  CHARACTER=44 TEXT= 'KAREN''S_#61';
+	TEXT  CHARACTER=45 TEXT= 'KAREN''S_#63';
+	TEXT  CHARACTER=46 TEXT= 'KAREN''S_#64';
+	TEXT  CHARACTER=47 TEXT= 'KAREN''S_#65';
+	TEXT  CHARACTER=48 TEXT= 'KAREN''S_#66';
+	TEXT  CHARACTER=49 TEXT= 'KAREN''S_#67	';
+	TEXT  CHARACTER=50 TEXT= 'KAREN''S_#69__ORD!';
+	TEXT  CHARACTER=51 TEXT= 'KAREN''S_#70';
+	TEXT  CHARACTER=52 TEXT= 'KAREN''S_#71';
+	TEXT  CHARACTER=53 TEXT= 'KAREN''S_#72';
+	TEXT  CHARACTER=54 TEXT= 'KAREN''S_#74';
+	TEXT  CHARACTER=55 TEXT= 'new_character_added_by_Karen_3/1/93';
+	TEXT  CHARACTER=56 TEXT= 'KAREN''S_#75';
+	TEXT  CHARACTER=57 TEXT= 'KAREN''S_#76';
+	TEXT  CHARACTER=58 TEXT= 'KAREN''S_#77';
+	TEXT  CHARACTER=59 TEXT= 'KAREN''S_#79';
+	TEXT  CHARACTER=60 TEXT= 'KAREN''S_#80';
+	TEXT  CHARACTER=61 TEXT= 'KAREN''S_#81';
+	TEXT  CHARACTER=62 TEXT= 'KAREN''S_#83';
+	TEXT  CHARACTER=63 TEXT= 'KAREN''S_#84';
+	TEXT  CHARACTER=64 TEXT= 'KAREN''S_#86';
+	TEXT  CHARACTER=65 TEXT= 'KAREN''S_#89';
+	TEXT  CHARACTER=77 TEXT= 'of_moss/tracheophyte_type';
+	TEXT  CHARACTER=80 TEXT= unord.;
+	TEXT  CHARACTER=85 TEXT= 'of_the_liverwort_type_(non-homologous_to_those_of_the_moss/tracheophyte_lineage)__--__M&C_char._#9';
+	TEXT  CHARACTER=88 TEXT= 'on_a_regular_basis_(Andreaea_considered_non-homologous)_--_M&C_char._#14';
+	TEXT  CHARACTER=108 TEXT= see_Markham_in_Zinsmeister_&_Mues;
+	TEXT  CHARACTER=90 TEXT= 'caps._wall_2-10_cells_thick_--__M&C_char._#19_--_thick_caps._walls_in_horn.,_mosses,_and_tracheo._considered_non-nomologous';
+	TEXT  CHARACTER=89 TEXT= M&C_char._#18;
+	TEXT  CHARACTER=86 TEXT= M&C_char._#10;
+	TEXT  CHARACTER=87 TEXT= M&C_char._#13;
+	TEXT  TAXON=18 CHARACTER=80 TEXT= considered_homologous_with_mosses;
+	TEXT  TAXON=15 CHARACTER=94 TEXT= assuming_loss_in_some_spp.;
+	TEXT  TAXON=17 CHARACTER=94 TEXT= assuming_loss_in_some_spp.;
+	TEXT  TAXON=15 CHARACTER=74 TEXT= possible_homology_in_Andreobryum_?;
+	TEXT  CHARACTER=82 TEXT= with_multiple_sporangia;
+	TEXT  CHARACTER=109 TEXT= through_sporogenesis;
+	TEXT  TAXON=15 CHARACTER=72 TEXT= fide_Murray_1988;
+	TEXT  TAXON=15 CHARACTER=93 TEXT= fide_Murray_1988;
+	TEXT  TAXON=15 CHARACTER=113 TEXT= 'in_Andreaobryum_only_(fide_Murray_1988),_Andreaea_has_normal_moss-like_muscilage_papillae';
+	TEXT  CHARACTER=113 TEXT= homology_accepted_from__Murray_1988;
+	TEXT  CHARACTER=106 TEXT= Bremer_char._#_64;
+	TEXT  CHARACTER=107 TEXT= Bremer_#_67;
+	TEXT  CHARACTER=105 TEXT= from_Raubeson_and_Jansen_1992;
+	TEXT  CHARACTER=103 TEXT= Crane;
+	TEXT  CHARACTER=104 TEXT= Crane;
+	TEXT  CHARACTER=102 TEXT= Crane;
+	TEXT  TAXON=4 CHARACTER=9 TEXT= not_sure_of_homology_with_mosses_+_tracheophytes;
+	TEXT  CHARACTER=74 TEXT= 'N.B.,_homology_between_mosses_and_tracheophytes_not_agreed_to_by_all_co-authors';
+	TEXT  CHARACTER=75 TEXT= 'N.B.,_homology_between_mosses_and_tracheophytes_not_agreed_to_by_all_co-authors';
+	TEXT  TAXON=8 CHARACTER=86 TEXT= 'polymorphic_in_order;__Riella_has_differentiated_cells';
+	TEXT  TAXON=18 CHARACTER=94 TEXT= 'state_difficult_to_determine_--_maybe_all_costa!';
+	TEXT  TAXON=22 CHARACTER=102 TEXT= not_sure_if_homologous_with_lycophytes;
+END;
+
+BEGIN MACCLADE;
+v 3.0
+-1322664995
+1100&/0
+0
+0
+END;


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/LPMorph.nex
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/P95morph.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/P95morph.nex	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/P95morph.nex	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,1290 @@
+#NEXUS 
+[MacClade 3.05 registered to Franois Lutzoni,        ]
+
+BEGIN MacCladeStart;
+Extended;
+END;
+
+
+BEGIN DATA;
+DIMENSIONS  NTAX=51 NCHAR=77;
+FORMAT SYMBOLS= " 0 1 2 3 4" MISSING=? GAP=- ;OPTIONS  MSTAXA=VARIABLE ;
+
+CHARLABELS
+	[1]	Circinnate_vernation
+	[2]	'F-S_leaf_differentiation'
+	[3]	Blade_dissection
+	[4]	Primary_vein_form
+	[5]	Vein_orders
+	[6]	Secondary_vein_form
+	[7]	Vein_fusion
+	[8]	Areoles
+	[9]	Hydathodes
+	[10]	Blade_hairs
+	[11]	Blade_scales
+	[12]	GMC_division
+	[13]	GMC_subsid_cell_origin
+	[14]	Dromy_at_base_of_blade
+	[15]	Pulvini
+	[16]	Pneumathodes
+	[17]	Blade_articulation
+	[18]	Trophopods
+	[19]	Adaxial_outline_of_stipe|rachis
+	[20]	Sclerenchyma_coloration
+	[21]	Sclerenchyma_fibers
+	[22]	Epipetiolar_branches
+	[23]	'Stipe_stele_number_(base->apex)'
+	[24]	Xylem_configuration_in_stipe
+	[25]	Primary_xylem_bordered_pits
+	[26]	Rhizome_symmetry
+	[27]	Rhizome_stele_type
+	[28]	Rhizome_stele_cycles
+	[29]	Vascular_cambium
+	[30]	Rhizome_hairs
+	[31]	Rhizome_scales
+	[32]	Rhizome_scale_pattern
+	[33]	Roots
+	[34]	Root_hairs
+	[35]	Root_anatomy
+	[36]	Growth_habit
+	[37]	'Mucilage/latex_canals'
+	[38]	True_vessels
+	[39]	Intranuclear_paracrystals
+	[40]	Hypodermis
+	[41]	First_division_of_zygote
+	[42]	Sporangial_wall_thickness
+	[43]	Receptacle
+	[44]	Sporangial_stalk_length
+	[45]	Sporangial_stalk_width
+	[46]	Spore_output
+	[47]	Sori
+	[48]	Sorus_outline
+	[49]	Sporangial|soral_position
+	[50]	'Soral/sporangial_maturation'
+	[51]	'No._sporangia/sorus'
+	[52]	Indusium
+	[53]	Indusium_origin
+	[54]	Indus_attach_to_sorus
+	[55]	Indusium_opening
+	[56]	Annulus
+	[57]	Annulus_aspect
+	[58]	Annulus_span
+	[59]	Sporogenesis
+	[60]	Spore_laesura
+	[61]	Spores_chlorophyllous
+	[62]	Spore__equatorial_flange
+	[63]	Perispore_prominence
+	[64]	Perispore_surface
+	[65]	Exospore_structure
+	[66]	Exospore_surface
+	[67]	Spore_germination
+	[68]	Gametophyte_form
+	[69]	Gametophyte_hairs
+	[70]	Gametophytes_green
+	[71]	Gam._fungal_assoc.
+	[72]	Dependent_gametophyte
+	[73]	Antherdium_position
+	[74]	Archegonium_position
+	[75]	No._anth._wall_cells
+	[76]	No._arch_neck_tiers
+	[77]	Gemmae_producing_gametophytes
+	;
+STATELABELS  
+	1  no yes,
+	2  monomorphic 'hemi_-_at_tip' 'hemi_-_at_base' dimorphic,
+	3  simple compound,
+	4  dichotomous 'anisotomous_(pinnate)' solitary|unbranched,
+	5  one two three four_or_more,
+	6  dichotomous anisotomous,
+	7  nonanastomosing anastomosing,
+	8  without_free_included_veinlets with_free_included_veinlets,
+	9  absent present,
+	10  absent present,
+	11  absent present,
+	12  diameristic parameristic anomomeristic,
+	13  perigenous mesogenous mesoperigenous,
+	14  catadromous anadromous isodromous,
+	15  absent present,
+	16  absent present_scattered present_lines_patches,
+	17  absent present,
+	18  absent present,
+	19  convex_to_flattened sulcate,
+	20  'not_dark-pigmented' dark_pigmented,
+	21  absent present,
+	22  absent present,
+	23  'monostele->polystele' monostele 'distele->monostele' polystele distele,
+	24  'C,_U,_V,_O,_½,_arc)' 'solid_*,_T,_Æ' 'X_(sometimes_becoming_V)' 3_arches polycyclic,
+	25  scalariform circular,
+	26  radial dorsiventral,
+	27  protostele solenostele dictyostele eustele,
+	28  monocyclic polycyclic,
+	29  absent present,
+	30  absent present,
+	31  absent present,
+	32  uniformly_colored sharply_bicolored clathrate,
+	33  absent present,
+	34  absent present,
+	35  '2-5-arch' polyarch,
+	36  terrestrial epiphytic rooted_aquatic floating_aquatic,
+	37  absent present,
+	38  absent present,
+	39  absent present,
+	40  absent present,
+	41  horizontal vertical 'free-nuclear_phase',
+	42  single_cell_layer 2_or_more_cell_layers,
+	43  '(nearly)_flat' convex elongate branched,
+	44  sessile_to_short long,
+	45  'massive_(>6_cell_rows_wide)' '4-6_cell_rows_wide' '1-3_cell_rows_wide',
+	46  '1000+' '>100<1000' '<100',
+	47  absent present,
+	48  roundish elongate,
+	49  marginal 'dorsal_(abaxial)' adaxial,
+	50  ±_simultaneous gradate mixed,
+	51  'few_(<12)' many,
+	52  absent present,
+	53  marginal adaxial,
+	54  lateral basal central,
+	55  introrse extrorse suprasoral circumsoral none,
+	56  absent present,
+	57  apical lateral oblique_to_transverse vert_to_slightly_oblique,
+	58  continuous_bow interrupted_bow restricted_patch,
+	59  homosporous anisosporous heterosporous,
+	60  linear triradiate papillalike furrow circular,
+	61  no yes,
+	62  absent present,
+	63  not_prominent prominent,
+	64  '(nearly)_smooth' sculptured,
+	65  '2-layers_(blechnoid)' '3-layers' '5-layers',
+	66  '(nearly)_smooth' sculptured,
+	67  equatorial polar amorphous,
+	68  tuberous filamentous 'cordate-thalloid' 'elongate-thalloid' reduced,
+	69  absent present,
+	70  no yes,
+	71  absent present,
+	72  no yes,
+	73  embedded exposed,
+	74  embedded exposed,
+	75  ³_5 '3-(rarely)_5',
+	76  '>6' '1-5_(rarely)_6',
+	77  no 'yes,_borne_from_thallus' 'yes,_borne_from_rhizoids',
+;
+
+MATRIX
+Anemia_mexicana                1211210?01001100001010100010010?110000??1000110??0?0???1000100000112110011110
+Asplenium_filipes              1011210?110021000111102201200012110000??1001221112111011310000110012?10011110
+Azolla_caroliniana             02100?0?01002?00000000110110000?110300??101(01)22(01)0?111?120??21001100140001?0110
+Blechnum_occidentale           1011210?11102100001010300020001(01)1100001?1001221112111001310000100112110011110
+Cheiropleuria_bicuspis         1300211100011?00000010000100010?110000??1000110?12?0???1300100001002011011000
+Cyathea_lepifera               1011310?111020021010103300210010110010??101012101110???1300100110002110011000
+Blotiella_pubescens            1011311011002102001011300020010?110000??1001221102110001310000110012010011110
+Dennstaedtia_punctilobula      1011310?11002002001011100111010?110000?0100022100101(01)1213101011?0012010011110
+Histiopteris_incisa            10113110111020000010113001100110110000??1001221102110001310000000112010011110
+Lindsaea_odorata               1011100?100021000010101001000010110000??1001221102?11011310000100012010011110
+Lonchitis_hirsuta              1011310?11002000001010300110010?110000??1000221102110001310100110012010011110
+Microlepia_strigosa            1011310?11002102001010100110010?1100000?1011221001111011310100010012010011110
+Monachosorum_henryi            1011310?110020000010102001(12)0010?110000??100122101010???1310100110113010011110
+Pteridium_aquilinum            1011310?01002002001011300111010?1100011(01)1001221102110001310100010012010011110
+Calochlaena_dubia              1011310?01011102001010100010010?110010??101012100111(01)121300100000102010011000
+Dicksonia_antarctica           1011310?01002102000010330020010?1100001?101112100111(01)121300100000102010011000
+Dipteris_conjugata             1010211101011?000010100001100010110000?0100112101210???1310000001002010011000
+Davallia_mariesii              1011310?10002102101010300120001(01)110100??1001221012111011310000000112110011110
+Elaphoglossum_hybridum         1301100?01102?02001010300?200010110000??1001220?12?0???131000011001{23}110011110
+Nephrolepis_cordifolia         1011210?1010220010101030002000101100001?1001221012111011310000110012110011110
+Onoclea_sensibilis             13113110111021000100102001200010110000?01011221011111011310010110012110011110
+Rumohra_adiantiformis          1011310?001021020010103001200010110000??1001221012111231310000110012110011110
+Diplopterygium_glaucum         1010310?001021000000101001000010110000??1000?1101000???1200100001002111011000
+Stromatopteris_moniliformis    1011100?01002100001110100?000110100000?0101011101010???12000000011?0001011000
+Micropolypodium_okuboi         1001110?110021000000101000100010110100??100122101210???13101100001{01}3110011111
+Cephalomanes_thysanostomum     1011310?010??1000000?0110000010?110000??1020?1100111(01)01120011000110101?0110?1
+Lygodium_japonicum             1111310?01002000000010110100010?110000?01000110?10?11011000100110112010011110
+Angiopteris_evecta             1011310?0012001100001034(01)0210010111010?1011000111000???0??0100101122011000010
+Marsilea_quadrifolia           12100?1001002?10000000100110010?11020110101(01)22110101(01)140??2(12)001000140001??110
+Matonia_pectinata              1011310?00002000001010100111010?110000??1000121010011231210100111022010011000
+Metaxya_rostrata               1011210?0101(12)102001011100110010?110000??100012101010???13001001100?2010011000
+Botrychium_strictum            0311310?010201000000003010(12)0100?100000??0100000??0?0???0??0100001110001001000
+Osmunda_cinnamomea             1311310?010200000010101000(12)0010?110000?01000110??0?0???1120110011112011011000
+Ceratopteris_thalictroides     13113110000020000000003000210010110200??1000?2110211000131010001011201?001110
+Plagiogyria_japonica           1311210?00002?02001010100020000?110000??1001121112110001300100110012010011000
+Loxogramme_grammitoides        1001111000002?000000?01101200012110000??100022111210???1310010000103?10011111
+Polypodium_australe            1001210?111022001000103001200010110000??100122101210???13100000001{01}2110011110
+Psilotum_nudum                 030?????00020?0000?010??(01)0(01)0010?0??(01)000?01000010?000???0??0000001110001011012
+Acrostichum_aureum             11112110010021000010103400(12)10010110200?11001220?02?0???1310100010012010011110
+Adiantum_raddianum             1011310?000021000011102001(12)00010110000??1000221102110001310100110012010011110
+Coniogramme_japonica           1011311011102(012)000010101001(12)00010110000?1100022111210???1310100000?12010011110
+Platyzoma_microphyllum         1(03)11210?01002?00101110100110010?110000??100022111200???131110000011(13)010011110
+Pteris_fauriei                 1011310?010021000010101000(12)10011110000??1000221102110001310101000112010011110
+Taenitis_blechnoides           1011211001002?00001010?001(12)0010?110000??100022111210???1310101010112010011110
+Salvinia_cucullata             0(23)01211001002?00000000110110010?0??300??103(01)2210?111?120??21001100140101?0110
+Actinostachys_digitata         11020???00002?00000010100010010?110000??1000110??0?10001000000000120001011110
+Thelypteris_beddomei           1011310?010022020010102000200010110000??1000221012111011310000110112110011110
+Vittaria_flexuosa              1001111000002?000011102001(12)00012110000??100022110210???1310000000013010011111
+Lycopodium_digitatum           03020?0?00020?0000??10??1000000?110010?00100000?2??0???0??0100000100001001000
+Equisetum_arvense              0?020?0?10011?0000??00??1010010?110001?10100?0???0?0???0??04100100?3010011010
+Cycas_circinalis               0311110?01020?000000?0301030110?1?1010??2100000?10?0???0??2300??20?40001?0?10
+;
+END;
+
+BEGIN ASSUMPTIONS;
+	OPTIONS  DEFTYPE=unord PolyTcount=MINSTEPS ;
+END; 
+
+BEGIN TREES; 
+
+
+	UTREE Default_bush =  [&U] (Anemia_mexicana,Asplenium_filipes,Azolla_caroliniana,Blechnum_occidentale,Cheiropleuria_bicuspis,Cyathea_lepifera,Blotiella_pubescens,Dennstaedtia_punctilobula,Histiopteris_incisa,Lindsaea_odorata,Lonchitis_hirsuta,Microlepia_strigosa,Monachosorum_henryi,Pteridium_aquilinum,Calochlaena_dubia,Dicksonia_antarctica,Dipteris_conjugata,Davallia_mariesii,Elaphoglossum_hybridum,Nephrolepis_cordifolia,Onoclea_sensibilis,Rumohra_adiantiformis,Diplopterygium_glaucum,Stromatopteris_moniliformis,Cephalomanes_thysanostomum,Lygodium_japonicum,Angiopteris_evecta,Marsilea_quadrifolia,Matonia_pectinata,Metaxya_rostrata,Botrychium_strictum,Osmunda_cinnamomea,Ceratopteris_thalictroides,Plagiogyria_japonica,Loxogramme_grammitoides,Polypodium_australe,Psilotum_nudum,Acrostichum_aureum,Adiantum_raddianum,Coniogramme_japonica,Platyzoma_microphyllum,Taenitis_blechnoides,Salvinia_cucullata,Actinostachys_digitata,Thelypteris_beddomei,Vittaria_flexuosa);
+	UTREE Default_bush =  [&U] (Anemia_mexicana,Asplenium_filipes,Azolla_caroliniana,Blechnum_occidentale,Cheiropleuria_bicuspis,Cyathea_lepifera,Blotiella_pubescens,Dennstaedtia_punctilobula,Histiopteris_incisa,Lindsaea_odorata,Lonchitis_hirsuta,Microlepia_strigosa,Monachosorum_henryi,Pteridium_aquilinum,Calochlaena_dubia,Dicksonia_antarctica,Dipteris_conjugata,Davallia_mariesii,Elaphoglossum_hybridum,Nephrolepis_cordifolia,Onoclea_sensibilis,Rumohra_adiantiformis,Diplopterygium_glaucum,Stromatopteris_moniliformis,Cephalomanes_thysanostomum,Lygodium_japonicum,Angiopteris_evecta,Marsilea_quadrifolia,Matonia_pectinata,Metaxya_rostrata,Botrychium_strictum,Osmunda_cinnamomea,Ceratopteris_thalictroides,Plagiogyria_japonica,Loxogramme_grammitoides,Polypodium_australe,Psilotum_nudum,Acrostichum_aureum,Adiantum_raddianum,Coniogramme_japonica,Platyzoma_microphyllum,Taenitis_blechnoides,Salvinia_cucullata,Actinostachys_digitata,Thelypteris_beddomei,Vittaria_flexuosa);
+	UTREE Default_bush =  [&U] (Anemia_mexicana,Asplenium_filipes,Azolla_caroliniana,Blechnum_occidentale,Cheiropleuria_bicuspis,Cyathea_lepifera,Blotiella_pubescens,Dennstaedtia_punctilobula,Histiopteris_incisa,Lindsaea_odorata,Lonchitis_hirsuta,Microlepia_strigosa,Monachosorum_henryi,Pteridium_aquilinum,Calochlaena_dubia,Dicksonia_antarctica,Dipteris_conjugata,Davallia_mariesii,Elaphoglossum_hybridum,Nephrolepis_cordifolia,Onoclea_sensibilis,Rumohra_adiantiformis,Diplopterygium_glaucum,Stromatopteris_moniliformis,Cephalomanes_thysanostomum,Lygodium_japonicum,Angiopteris_evecta,Marsilea_quadrifolia,Matonia_pectinata,Metaxya_rostrata,Botrychium_strictum,Osmunda_cinnamomea,Ceratopteris_thalictroides,Plagiogyria_japonica,Loxogramme_grammitoides,Polypodium_australe,Psilotum_nudum,Acrostichum_aureum,Adiantum_raddianum,Coniogramme_japonica,Platyzoma_microphyllum,Taenitis_blechnoides,Salvinia_cucullata,Actinostachys_digitata,Thelypteris_beddomei,Vittaria_flexuosa);
+	UTREE  * Default_bush =  [&U] (Anemia_mexicana,Asplenium_filipes,Azolla_caroliniana,Blechnum_occidentale,Cheiropleuria_bicuspis,Cyathea_lepifera,Blotiella_pubescens,Dennstaedtia_punctilobula,Histiopteris_incisa,Lindsaea_odorata,Lonchitis_hirsuta,Microlepia_strigosa,Monachosorum_henryi,Pteridium_aquilinum,Calochlaena_dubia,Dicksonia_antarctica,Dipteris_conjugata,Davallia_mariesii,Elaphoglossum_hybridum,Nephrolepis_cordifolia,Onoclea_sensibilis,Rumohra_adiantiformis,Diplopterygium_glaucum,Stromatopteris_moniliformis,Cephalomanes_thysanostomum,Lygodium_japonicum,Angiopteris_evecta,Marsilea_quadrifolia,Matonia_pectinata,Metaxya_rostrata,Botrychium_strictum,Osmunda_cinnamomea,Ceratopteris_thalictroides,Plagiogyria_japonica,Loxogramme_grammitoides,Polypodium_australe,Psilotum_nudum,Acrostichum_aureum,Adiantum_raddianum,Coniogramme_japonica,Platyzoma_microphyllum,Taenitis_blechnoides,Salvinia_cucullata,Actinostachys_digitata,Thelypteris_beddomei,Vittaria_flexuosa);
+
+END;
+
+
+BEGIN NOTES;
+	TEXT  CHARACTER=4 TEXT= 'Vouchers_checked_for_all_and_Kubitizki_1990.___See_also_Alan''s_e-mail_05.26.94.__This_character_largely_modelled_after_Nixon_et_al._1994.';
+	TEXT  TAXON=28 CHARACTER=15 TEXT= Camus_in_Kubitzki_1990;
+	TEXT  TAXON=29 CHARACTER=15 TEXT= 'Johnson_1986,_p._10';
+	TEXT  CHARACTER=16 TEXT= vouchers;
+	TEXT  TAXON=8 CHARACTER=16 TEXT= 'not_seen_in_D._punctilobula,_but_well_documented_in_many_other_Dennstaedtia_spp.__Kubitzki_1990;_ARS_pers._obs.';
+	TEXT  TAXON=14 CHARACTER=16 TEXT= 'Bower_1923,_p._169';
+	TEXT  TAXON=15 CHARACTER=16 TEXT= Kubitzki_1990;
+	TEXT  TAXON=16 CHARACTER=16 TEXT= 'D._Palmer_(pers._comm.)';
+	TEXT  TAXON=17 CHARACTER=16 TEXT= 'Bower_1923,_p.168';
+	TEXT  TAXON=18 CHARACTER=16 TEXT= Kubitzki_1990;
+	TEXT  TAXON=19 CHARACTER=16 TEXT= 'ARS_12/13/94_e-mail_to_KMP:__In_Elaphoglossum,_the_ventilation_bands_are_not_visible_in_the_voucher,_but_may_be_there_in_living_material_(see_Mickel_&_Atehortua_1980;_also_Lloyd_1970,_and_Kubitzki_1990).';
+	TEXT  TAXON=27 CHARACTER=16 TEXT= fresh_material;
+	TEXT  TAXON=35 CHARACTER=16 TEXT= 'Bower_1923,_1926';
+	TEXT  TAXON=10 CHARACTER=16 TEXT= 'Kramer_1957,_p._112';
+	TEXT  TAXON=3 CHARACTER=50 TEXT= 'Eames_1936,_p._256';
+	TEXT  CHARACTER=50 TEXT= vouchers_checked;
+	TEXT  TAXON=5 CHARACTER=50 TEXT= 'Bower_1928,_p._205';
+	TEXT  TAXON=8 CHARACTER=50 TEXT= 'Bower_1923,_p._215';
+	TEXT  TAXON=9 CHARACTER=50 TEXT= voucher;
+	TEXT  TAXON=11 CHARACTER=50 TEXT= voucher;
+	TEXT  TAXON=12 CHARACTER=50 TEXT= 'Eames_1936;_"M._speluncae"';
+	TEXT  TAXON=13 CHARACTER=50 TEXT= 'Kramer_1990:_±_simultaneously_maturing';
+	TEXT  TAXON=14 CHARACTER=50 TEXT= 'Bower_1923,_Eames_1936';
+	TEXT  TAXON=15 CHARACTER=50 TEXT= Kramer_1990;
+	TEXT  TAXON=16 CHARACTER=50 TEXT= Kramer_1990;
+	TEXT  TAXON=17 CHARACTER=50 TEXT= 'gradate_maturation_in_other_sp._of_Dipteris_---_Bower_1923';
+	TEXT  TAXON=21 CHARACTER=50 TEXT= 'Bower,_Eames_1936;_Labouriau_1958,_p._131';
+	TEXT  TAXON=23 CHARACTER=50 TEXT= Kramer_1990;
+	TEXT  TAXON=24 CHARACTER=50 TEXT= Kramer_1990;
+	TEXT  TAXON=27 CHARACTER=50 TEXT= 'sporangia_are_solitary,_but_mature_simultaneously_with_respect_to_adjacent_sporangia';
+	TEXT  TAXON=29 CHARACTER=50 TEXT= 'Eames_1936,_p._213';
+	TEXT  TAXON=30 CHARACTER=50 TEXT= Kramer_1990;
+	TEXT  TAXON=31 CHARACTER=50 TEXT= 'Kramer_1990,_Qiu_et_al._1995';
+	TEXT  TAXON=33 CHARACTER=50 TEXT= 'Kramer_1990:_±simultaneous';
+	TEXT  TAXON=35 CHARACTER=50 TEXT= voucher;
+	TEXT  TAXON=36 CHARACTER=50 TEXT= voucher;
+	TEXT  TAXON=42 CHARACTER=50 TEXT= 'Tryon_1961,_p._95';
+	TEXT  TAXON=45 CHARACTER=50 TEXT= 'Eames_1936,_p._256';
+	TEXT  TAXON=7 CHARACTER=22 TEXT= Troop_&_Mickel_1968;
+	TEXT  TAXON=8 CHARACTER=22 TEXT= 'Troop_&_Mickel_1968_-_citing_Conrad_(1908)_for_this_species';
+	TEXT  TAXON=9 CHARACTER=22 TEXT= Troop_&_Mickel_1968;
+	TEXT  TAXON=11 CHARACTER=22 TEXT= Troop_&_Mickel_1968;
+	TEXT  TAXON=12 CHARACTER=22 TEXT= Kubitizki_1990;
+	TEXT  TAXON=14 CHARACTER=22 TEXT= 'Troop_&_Mickel_1968_-_citing_Webster_1958_for_this_sp.';
+	TEXT  TAXON=31 CHARACTER=22 TEXT= Troop_&_Mickel_1968;
+	TEXT  TAXON=35 CHARACTER=22 TEXT= 'Kubitizki_1990:_"occasional_stolons_spring_from_a_leaf_base";_Ogura_1972:_"in_Plagiogyria_pycnophylla"';
+	TEXT  CHARACTER=22 TEXT= 'vouchers;_Troop_&_Mickel_1968';
+	TEXT  CHARACTER=26 TEXT= vouchers;
+	TEXT  TAXON=24 CHARACTER=26 TEXT= 'N/A.___Kaplan_1977,_p._43';
+	TEXT  TAXON=27 CHARACTER=26 TEXT= 'Holttum_1964,_p.478';
+	TEXT  CHARACTER=60 TEXT= Tryon_and_Lugardon__1991;
+	TEXT  TAXON=21 CHARACTER=61 TEXT= Kubitzki_1990;
+	TEXT  TAXON=25 CHARACTER=61 TEXT= Kubitzki_1990;
+	TEXT  TAXON=26 CHARACTER=61 TEXT= Kubitzki_1990;
+	TEXT  TAXON=33 CHARACTER=61 TEXT= Kubitzki_1990;
+	TEXT  TAXON=36 CHARACTER=61 TEXT= 'Kubitzki_1990;_green_at_time_of_dispersal';
+	TEXT  CHARACTER=62 TEXT= Tryon_&_Lugardon_1991;
+	TEXT  CHARACTER=59 TEXT= 'Bell_1979,_Sheffield_&_Bell_1987,_Tryon_&_Lugardon_1991';
+	TEXT  CHARACTER=61 TEXT= 'Kubitzki_1990,_Tryon_&_Lugardon_1991';
+	TEXT  CHARACTER=63 TEXT= 'Lloyd_1981:_Polypodium;_Tryon_&_Lugardon_1991_-_see_especially_the_family_and_generic_descriptions.';
+	TEXT  TAXON=6 CHARACTER=63 TEXT= see_Sphaeropteris_in_Tryon_&Lugardon_1991;
+	TEXT  CHARACTER=64 TEXT= 'Lloyd_1981:_Polypodium;_Tryon_&_Lugardon_1991_-_see_especially_family_and_generic_descriptions.';
+	TEXT  TAXON=1 CHARACTER=64 TEXT= 'T&L_1991,_p._109,_Fig._11:_granulate';
+	TEXT  TAXON=4 CHARACTER=64 TEXT= 'T&L_1991,_p._531,_Figs._1&2';
+	TEXT  TAXON=5 CHARACTER=64 TEXT= 'T&L_1991,_p._80,_Fig._1,_3:_rugulate';
+	TEXT  TAXON=9 CHARACTER=64 TEXT= 'T&L_1991,_pg._290,_text:_fine_irregular_surface';
+	TEXT  TAXON=10 CHARACTER=64 TEXT= 'T&L_1991,_p._298-99,_Figs._15_and_17.__uniformly_granulate';
+	TEXT  TAXON=11 CHARACTER=64 TEXT= 'T&L_1991,_p._291-293_and_Figs._1-6:_essentially_granulate_-_some_coarse_surface_deposits.__KMP_originally_scored_this_as_0.__ARS_changed_to_1_03/95,_deciding_that_the_coarse_surface_deposits_were_actually_part_of_the_perispore_sculpturing.';
+	TEXT  TAXON=41 CHARACTER=64 TEXT= 'T&L_1991,_p._175_(text):_irregularly_rugulate,_papillate';
+	TEXT  TAXON=8 CHARACTER=64 TEXT= 'KMP_had_originally_scored_as_1_based_on_T&L_1991,_p._271_text;_ARS_changed_to_?_03/95';
+	TEXT  TAXON=16 CHARACTER=64 TEXT= 'KMP_had_originally_scored_as_1_based_on_T&L_1991_,_p._231_Fig._1;_ARS_changed_to_0__03/95.__See_also_Figs._10-12._Prob_ok_as_0.';
+	TEXT  TAXON=6 CHARACTER=64 TEXT= see_Sphaeropteris_in_Tryon_&Lugardon_1991;
+	TEXT  TAXON=6 CHARACTER=66 TEXT= see_Sphaeropteris_in_Tryon_&Lugardon_1991.__KMP_had_originally_scored_as_1_based_on_Cyathea_photos_in_T&L.__ARS_changed_to_0_based_on_Sphaeropteris.;
+	TEXT  TAXON=42 CHARACTER=64 TEXT= 'KMP_had_originally_scored_as_1_based_on_T&L_1991,_p._123-;_ARS_changed_to_0__03/95.___See_Fig._5_-_perispore=_coalescent_granulate_material,_therefore_prob_better_as_0.';
+	TEXT  CHARACTER=65 TEXT= '_Tryon_&_Lugardon_1991_-_see_especially_the_family_and_generic_descriptions._See_also_general_introductory_comments_to_book_where_T&L_define_a_2-layered_exospore_as_a_blechnoid_exospore.';
+	TEXT  CHARACTER=66 TEXT= '_Tryon_&_Lugardon_1991_-_see_especially_the_family_and_generic_descriptions.';
+	TEXT  TAXON=37 CHARACTER=64 TEXT= 'Close_relatives_P._vulgare_&_P._glycyrrhiza_are_smooth.__P._virginianum:_some_with_more_elaborate_perispore,_cf._T_&_L_131.15-17_with_131.18-19.__Also_131:21-22:_echinate_perispore.__UC_has_LM_picture_of_P._australe_spore_attached_to_specimen:_smooth';
+	TEXT  TAXON=17 CHARACTER=58 TEXT= 'ARS_did_a_sporangial_mount:_interrupted_bow._See_Bierhorst_1971,_pgs._307_(top_of_2nd_column),_312_(Figs._16-15,_c,d)_and_p._313_(Figs._16-16,_a,b).';
+	TEXT  TAXON=29 CHARACTER=54 TEXT= 'Eames_p._210-211,_Fig._137b.__Indusium_sealed_&_cup-shaped_(basal_attach?_each_sorus_surrounded_by_indusium,_which_originates_from_base_of__sorus).__See_also_Campbell_1893_&_Johnson_1898a,1898b,_1933_and_4/17/95_emails';
+	TEXT  CHARACTER=52 TEXT= vouchers_seen_for_all;
+	TEXT  TAXON=42 CHARACTER=52 TEXT= 'margin_of_pouch-like_segments_is_unmodified';
+	TEXT  TAXON=46 CHARACTER=52 TEXT= 'ARS_email_4/18/95,_4:17:_indusiate:_has_reflexed_margin.__See_voucher_and_Bierhorst_(1971)_p._223_and_fig._14.6.';
+	TEXT  TAXON=3 CHARACTER=53 TEXT= '_KP_email_4/21/95:_12:39.__Too_little_tissue_to_know_what_is_going_on.__Uncertain_where_the_indusia_originates_from_-_abaxial_or_adaxial_,_therefore_?__Eames_(1936):_sporocarps_(indusia=sporocarp_wall)_on_lower_lobe_are_borne_terminally.';
+	TEXT  TAXON=29 CHARACTER=53 TEXT= 'Eames_p._210-211:_sorus_marginal.__Fig._137b:_indusium_partly_from_abaxial_leaf_surface_and_partly_from__leaf_margin._See_papers_by_Campbell_1893_&_Johnson_1898a,1898b.,_1933.__See_also_4/17/95_emails.';
+	TEXT  TAXON=45 CHARACTER=53 TEXT= 'KP_email_4/21/95:_12:39.__Too_little_tissue_to_know_what_is_going_on.__Uncertain_where_indusium_originates_from_-_abaxial_or_adaxial_,_therefore_?__Eames_(1936):_sporocarps_(indusia=sporocarp_wall)__terminal_upon_a_branch_of_a_segment_of_submersed_leaf';
+	TEXT  TAXON=46 CHARACTER=53 TEXT= '_See_voucher_and_Bierhorst_(1971)_p._223_and_fig._14.6.';
+	TEXT  TAXON=21 CHARACTER=54 TEXT= 'Bower_1928,_p.155,_fig._681.__T&T_1982,_p.586,_fig._4,__-_looks_like_a_laterally_attached_hood-like_indusium;_is_supposed_to_be_same_as_Matteucia.__But_see_Bower_1928,_p._153,_fig._L_-_basal?__No_-_see_Labouriau_1958,_p._131';
+	TEXT  TAXON=26 CHARACTER=54 TEXT= 'ARS_email_4/21/95,_1:58';
+	TEXT  TAXON=45 CHARACTER=54 TEXT= Eames_1936;
+	TEXT  TAXON=46 CHARACTER=54 TEXT= 'ARS_email_4/18/95,_4:17pm:_indusiate:_has_reflexed_margin.__See_voucher_and_Bierhorst_(1971)_p._223_and_fig._14.6.';
+	TEXT  TAXON=3 CHARACTER=55 TEXT= 'distal_pore:_Bower_1928,_p.260.__Eames_1936,_P._245-246';
+	TEXT  CHARACTER=53 TEXT= vouchers_seen_for_all;
+	TEXT  CHARACTER=54 TEXT= vouchers_seen_for_all;
+	TEXT  CHARACTER=55 TEXT= vouchers_seen_for_all;
+	TEXT  TAXON=8 CHARACTER=55 TEXT= 'segment_margin_and_abaxial_cells_contribute_±_equally_to_the_formation_of_a_"cup".';
+	TEXT  TAXON=15 CHARACTER=55 TEXT= '"cup"_is_bilobed,_"valves"_connate_ at _base';
+	TEXT  TAXON=16 CHARACTER=55 TEXT= 'cup_is_bilobed,_"valves"_connate_ at _base';
+	TEXT  TAXON=21 CHARACTER=55 TEXT= 'Bower_1928,_p.153-155,_figs._678_and_681.__T&T_1982,_p.586,_fig._4,__-_looks_like_a_laterally_attached_hood-like_indusium;_is_supposed_to_be_same_as_Matteucia_-_which_appears_extrorse.__Yes_see_Labouriau_1958,_p._131';
+	TEXT  TAXON=26 CHARACTER=55 TEXT= 'ARS_email:_4/21/95,_10:15.';
+	TEXT  TAXON=29 CHARACTER=55 TEXT= 'Eames_1936,_p._209-211,_p.214.__See_also_Gifford_and_Foster''s_figures_on_Marsilea_and_papers_by_Campbell_1893_&_Johnson_1898a,1898b,_1933';
+	TEXT  TAXON=45 CHARACTER=55 TEXT= 'Eames_1936,_P._233,_fig._148.';
+	TEXT  CHARACTER=27 TEXT= 'States_scored_mainly_from_Kubitizki_(1990)_and_Ogura_(1972).__Some_clarifications_taken_from_Schmid_(1982).__White_&_Turner_1988:_Calochlaena._Qiu_et_al_1995:_Metaxya.';
+	TEXT  TAXON=1 CHARACTER=27 TEXT= 'Ogura_1972:_"mexicana"_=_typical_solenostele';
+	TEXT  TAXON=3 CHARACTER=27 TEXT= 'Schmid_1982,_p._880-881:__not_protostele';
+	TEXT  TAXON=14 CHARACTER=27 TEXT= 'Schmid_1982,_p._901-902:_not_a_dictyostele,_but_a_solenostele.';
+	TEXT  TAXON=15 CHARACTER=27 TEXT= White_&_Turner_1988;
+	TEXT  TAXON=20 CHARACTER=27 TEXT= 'See_also_Schmid_1982,_p._900.';
+	TEXT  TAXON=25 CHARACTER=27 TEXT= 'Schmid_1982:_ectophloic_siphonostele.__Ogura_1972:_protostele_with_parenchymatous_pith.__Acc._to_Schmid,_p._890,_ectophloic_siphonosteles_lack_leaf_gaps,_therefore_I_scored_as_solenostele.';
+	TEXT  TAXON=26 CHARACTER=27 TEXT= 'see_also_Schmid_1982,_p._881';
+	TEXT  TAXON=28 CHARACTER=27 TEXT= Hill_&_Camus_1986;
+	TEXT  TAXON=31 CHARACTER=27 TEXT= Qiu_et_al._1995;
+	TEXT  TAXON=33 CHARACTER=27 TEXT= 'Schmid_1982,_p._889';
+	TEXT  TAXON=38 CHARACTER=27 TEXT= 'See_also_Schmid_1982,_p._900_and_Kubitizki_1990_-_solenostele_between_rhizome_and_aerial_stem.';
+	TEXT  TAXON=42 CHARACTER=27 TEXT= 'Schmid_1982:_ectophloic_siphonostele.__Ogura_1972:_medullated_protostele_with_parenchymatous_pith.__Acc._to_Schmid,_p._890,_ectophloic_siphonosteles_lack_leaf_gaps,_therefore_I_scored_as_solenostele.';
+	TEXT  TAXON=45 CHARACTER=27 TEXT= 'Schmid_1982,_p._880-881:__not_protostele';
+	TEXT  TAXON=46 CHARACTER=27 TEXT= 'Schmid_1982,_p._889:_ectophloic_siphonostele.__Ogura_1972:_medullated_protostele_with_parenchymatous_pith.__Acc._to_Schmid,_p._890,_ectophloic_siphonosteles_lack_leaf_gaps,_therefore_I_scored_as_solenostele.';
+	TEXT  TAXON=48 CHARACTER=27 TEXT= 'See_also_Schmid_1982,_p._890';
+	TEXT  CHARACTER=28 TEXT= 'polycyclic_includes_Ogura''s_(1972)_acyclostele_term,_and_the_IIB1c_and_IIB2c_terms_in_Schmid''s_(1983)_Table_1_-_see_pp._868-873.';
+	TEXT  TAXON=6 CHARACTER=28 TEXT= 'Ogura_1972,_Kubitizki_1990,_Schmid_1982_(IIB2c)';
+	TEXT  TAXON=8 CHARACTER=28 TEXT= 'Ogura_1972,_Kubitizki_1990,_Schmid_1982_(IIB1c)';
+	TEXT  TAXON=14 CHARACTER=28 TEXT= 'Ogura_1972,_Kubitizki_1990,_Schmid_1982_(IIB1c)_-_see_also_p._902';
+	TEXT  TAXON=28 CHARACTER=28 TEXT= 'Ogura_1972,_Hill_and_Camus_1986,_Schmid_1982_(IIB2c)';
+	TEXT  TAXON=30 CHARACTER=28 TEXT= 'Ogura_1972,_Kubitizki_1990,_Schmid_1982_(IIB1c)';
+	TEXT  TAXON=34 CHARACTER=28 TEXT= 'Ogura_1972_-_p._358,_Schmid_1982_(IIB2c)';
+	TEXT  TAXON=39 CHARACTER=28 TEXT= 'Ogura_1972,_Schmid_1982_(IIB1c)';
+	TEXT  TAXON=43 CHARACTER=28 TEXT= '_Kubitizki_1990,_Schmid_1982_(IIB1c)';
+	TEXT  CHARACTER=23 TEXT= 'N.B._For_base->_apex_of_stipe,_NOT_the_rachis!___Used_mostly_the_following_references:__Kubitizki_1990,_Ogura_1972,_Lin_&_DeVol_1977,_1978,_Keating_1968.';
+	TEXT  TAXON=3 CHARACTER=23 TEXT= 'Bierhorst_1971,_Warmbrodt_&_Evert_1978';
+	TEXT  TAXON=7 CHARACTER=23 TEXT= 'Ogura_1972,_p._116_(as_Lonchitis_pubescens).__Voucher_(see_ARS_email_5/2/95).';
+	TEXT  TAXON=13 CHARACTER=23 TEXT= 'Nair_&_Sen_1974,_Kubitizki_1990';
+	TEXT  TAXON=15 CHARACTER=23 TEXT= White_&_Turner_1988;
+	TEXT  TAXON=1 CHARACTER=23 TEXT= 'Kubitzi_1990,_Ogura_1972';
+	TEXT  TAXON=2 CHARACTER=23 TEXT= 'Kubitzi_1990,_Ogura_1972';
+	TEXT  TAXON=4 CHARACTER=23 TEXT= 'Kubitzi_1990,_Ogura_1972,_Lin_&_DeVol_1978';
+	TEXT  TAXON=5 CHARACTER=23 TEXT= 'Kubitzi_1990,_Ogura_1972,_Lin_&_DeVol_1978';
+	TEXT  TAXON=6 CHARACTER=23 TEXT= 'Kubitzi_1990,_Ogura_1972';
+	TEXT  TAXON=8 CHARACTER=23 TEXT= 'Keating_1968,_Ogura_1972';
+	TEXT  TAXON=9 CHARACTER=23 TEXT= 'Keating_1968,_Ogura_1972';
+	TEXT  TAXON=10 CHARACTER=23 TEXT= _Ogura_1972;
+	TEXT  TAXON=11 CHARACTER=23 TEXT= Keating_1968;
+	TEXT  TAXON=12 CHARACTER=23 TEXT= 'Kubitzi_1990,_Ogura_1972';
+	TEXT  TAXON=14 CHARACTER=23 TEXT= 'Keating_1968,_Ogura_1972';
+	TEXT  TAXON=16 CHARACTER=23 TEXT= _Ogura_1972;
+	TEXT  TAXON=17 CHARACTER=23 TEXT= Lin__&_DeVol_1978;
+	TEXT  TAXON=18 CHARACTER=23 TEXT= 'Lin_&_DeVol_1978,_p._91';
+	TEXT  TAXON=19 CHARACTER=23 TEXT= 'Ogura_1972,_p._378';
+	TEXT  TAXON=20 CHARACTER=23 TEXT= 'Ogura_1972,_P._115,_Fig._114b.__Note_where_bundles_fuse=rachis,_not_stipe!';
+	TEXT  TAXON=21 CHARACTER=23 TEXT= 'Ogura_1972,_p._378';
+	TEXT  TAXON=22 CHARACTER=23 TEXT= Kubitzi_1990;
+	TEXT  TAXON=23 CHARACTER=23 TEXT= _Ogura_1972;
+	TEXT  TAXON=24 CHARACTER=23 TEXT= Ogura_1972;
+	TEXT  TAXON=25 CHARACTER=23 TEXT= voucher;
+	TEXT  TAXON=26 CHARACTER=23 TEXT= 'Kubitzi_1990,_Ogura_1972_-_p._345_and_pp._108-109';
+	TEXT  TAXON=27 CHARACTER=23 TEXT= Lin_and_DeVol_1978._p._86;
+	TEXT  TAXON=28 CHARACTER=23 TEXT= 'Ogura_1972,_p._300-301.__Polycyclic.';
+	TEXT  TAXON=29 CHARACTER=23 TEXT= 'Ogura_1972,_p._108';
+	TEXT  TAXON=30 CHARACTER=23 TEXT= 'Ogura_1972,_p._108_and_386';
+	TEXT  TAXON=31 CHARACTER=23 TEXT= 'Ogura_1972,_p._372_"Amphidesmium",_Keating_1968';
+	TEXT  TAXON=32 CHARACTER=23 TEXT= 'Ogura_1972,_p._288-289_and_p._112.__Bierhorst_1971,_fig._11-7F.';
+	TEXT  TAXON=33 CHARACTER=23 TEXT= 'Ogura_1972,_p._108,_p._99';
+	TEXT  TAXON=34 CHARACTER=23 TEXT= 'Ogura_1972,_p._359;_p._109,_Fig._110:C.';
+	TEXT  TAXON=35 CHARACTER=23 TEXT= 'Kubitzi_1990,_Ogura_1972_-_p._364-366.';
+	TEXT  TAXON=36 CHARACTER=23 TEXT= 'voucher_(see_ARS_email_5/2/95)';
+	TEXT  TAXON=37 CHARACTER=23 TEXT= 'Kubitzi_1990,_Ogura_1972_-_p._391';
+	TEXT  TAXON=38 CHARACTER=23 TEXT= 'N/A.__Gifford_&_Foster:__Psilotum_nudum_has_no_leaf_trace_(it_also_has_no_stipe!)';
+	TEXT  TAXON=39 CHARACTER=23 TEXT= 'Ogura_1972,_p._356';
+	TEXT  TAXON=40 CHARACTER=23 TEXT= 'living_material_-_no_voucher_-_see_ARS_email_5/2/95.';
+	TEXT  TAXON=41 CHARACTER=23 TEXT= 'Lin_&_DeVol_1977,_p._97';
+	TEXT  TAXON=42 CHARACTER=23 TEXT= 'Ogura_1972,_p._335,_Fig._379D';
+	TEXT  TAXON=43 CHARACTER=23 TEXT= 'ARS_email_5/2/95';
+	TEXT  TAXON=44 CHARACTER=23 TEXT= 'ARS_email_5/2/95';
+	TEXT  TAXON=45 CHARACTER=23 TEXT= 'Bierhorst_1971,_p._341_"simple";_Ogura_1972,_p._401,_fig._452';
+	TEXT  TAXON=46 CHARACTER=23 TEXT= 'Ogura_1972,_p._109';
+	TEXT  TAXON=47 CHARACTER=23 TEXT= 'Lin_&_DeVol_1978,_p._87;_Kubitzki_1990';
+	TEXT  TAXON=48 CHARACTER=23 TEXT= 'voucher_(see_ARS_email_5/2/95)';
+	TEXT  CHARACTER=24 TEXT= 'Stipe,_NOT_rachis!__Though_state_0_seems_broad,_all_are_variations_on_the_horseshoe_shape.';
+	TEXT  TAXON=1 CHARACTER=24 TEXT= 'Kubitizki_1990,_Ogura_1972';
+	TEXT  TAXON=2 CHARACTER=24 TEXT= 'Kubitizki_1990,_Ogura_1972';
+	TEXT  TAXON=3 CHARACTER=24 TEXT= 'Bierhorst_1971,_Warmbrodt_&_Evert_1978';
+	TEXT  TAXON=4 CHARACTER=24 TEXT= 'Kubitizki_1990,_Ogura_1972,_Lin_&_DeVol_1978';
+	TEXT  TAXON=5 CHARACTER=24 TEXT= 'Kubitizki_1990,_Ogura_1972_-_p._109,_Lin_&_DeVol_1978';
+	TEXT  TAXON=6 CHARACTER=24 TEXT= 'Kubitizki_1990,_Ogura_1972,_p.111';
+	TEXT  TAXON=7 CHARACTER=24 TEXT= 'voucher;_Ogura_1972,_p._116,_fig._115:C.';
+	TEXT  TAXON=8 CHARACTER=24 TEXT= 'Keating_1968,_Ogura_1972';
+	TEXT  TAXON=9 CHARACTER=24 TEXT= 'ARS_email_5/3/95;_Ogura_1972';
+	TEXT  TAXON=10 CHARACTER=24 TEXT= Ogura_1972;
+	TEXT  TAXON=11 CHARACTER=24 TEXT= Ogura_1972;
+	TEXT  TAXON=12 CHARACTER=24 TEXT= 'Kubitizki_1990,_Ogura_1972';
+	TEXT  TAXON=13 CHARACTER=24 TEXT= Kubitizki_1990;
+	TEXT  TAXON=14 CHARACTER=24 TEXT= Keating_1968;
+	TEXT  TAXON=15 CHARACTER=24 TEXT= White_&_Turner_1988;
+	TEXT  TAXON=16 CHARACTER=24 TEXT= _Ogura_1972;
+	TEXT  TAXON=17 CHARACTER=24 TEXT= Lin_&_DeVol_1978;
+	TEXT  TAXON=18 CHARACTER=24 TEXT= 'Lin_&_DeVol_1978,_p._91';
+	TEXT  TAXON=19 CHARACTER=24 TEXT= 'Ogura_1972,_p._378';
+	TEXT  TAXON=20 CHARACTER=24 TEXT= '_Ogura_1972,_p._115,_fig._114b_(note_the_bundles_fuse_together_in_rachis,_NOT_stipe!).';
+	TEXT  TAXON=21 CHARACTER=24 TEXT= '_Ogura_1972,_p._378';
+	TEXT  TAXON=22 CHARACTER=24 TEXT= Kubitizki_1990;
+	TEXT  TAXON=23 CHARACTER=24 TEXT= Kubitizki_1990;
+	TEXT  TAXON=24 CHARACTER=24 TEXT= Kubitizki_1990;
+	TEXT  TAXON=25 CHARACTER=24 TEXT= 'Ogura_1972,_p._108,_p._391';
+	TEXT  TAXON=26 CHARACTER=24 TEXT= 'Kubitizki_1990,_Ogura_1972,_p._345_and_108-9.__See_ARS_email_5/2/95';
+	TEXT  TAXON=27 CHARACTER=24 TEXT= '"T".__Kubitizki_1990,_Lin_&_DeVol_1978,_p._86';
+	TEXT  TAXON=28 CHARACTER=24 TEXT= 'concentric_rings.__Ogura_1972,_p._300-301';
+	TEXT  TAXON=29 CHARACTER=24 TEXT= 'ARS_email_5/2/95.__Bower_1926,_p._180;_Ogura_1972,_p._397,_figs._445,_447';
+	TEXT  TAXON=30 CHARACTER=24 TEXT= 'Ogura_1972,_p._108,_p._386.__"semicircular"';
+	TEXT  TAXON=31 CHARACTER=24 TEXT= 'Ogura_1972,_p._372.__"Amphidesmium"';
+	TEXT  TAXON=32 CHARACTER=24 TEXT= 'Ogura_1972,_p._288-289,_p._112;_Bierhorst_1971,_fig._11-7F.';
+	TEXT  TAXON=33 CHARACTER=24 TEXT= 'Ogura_1972,_p._108,_p._99';
+	TEXT  TAXON=34 CHARACTER=24 TEXT= 'Ogura_1972,_p._359,_p._109_Fig._110:C';
+	TEXT  TAXON=35 CHARACTER=24 TEXT= 'Kubitizki_1990,_Ogura_1972,_p._366_(top).';
+	TEXT  TAXON=36 CHARACTER=24 TEXT= 'voucher;_ARS_email_5/2/95.';
+	TEXT  TAXON=37 CHARACTER=24 TEXT= 'Ogura_1972,_p._391,_Kubitizki_1990';
+	TEXT  TAXON=38 CHARACTER=24 TEXT= 'NA_(Gifford_&_Foster:_P._nudum_has_no_leaf_trace)';
+	TEXT  TAXON=39 CHARACTER=24 TEXT= 'Ogura_1972,_p._356,_fig._404';
+	TEXT  TAXON=40 CHARACTER=24 TEXT= 'Lin_&_DeVol_1978,_p._87,_Table_3';
+	TEXT  TAXON=41 CHARACTER=24 TEXT= 'Lin_&_DeVol_1978,_p._87,_Table_3';
+	TEXT  TAXON=42 CHARACTER=24 TEXT= 'Ogura_1972,_p._335,_Fig._379D';
+	TEXT  TAXON=43 CHARACTER=24 TEXT= 'Lin_&_DeVol_1978,_p._87,_Table_3';
+	TEXT  TAXON=44 CHARACTER=24 TEXT= 'ARS_email_5/2/95';
+	TEXT  TAXON=45 CHARACTER=24 TEXT= 'Ogura_1972,_p._401,_Bierhorst_1971,_p._341_"simple"';
+	TEXT  TAXON=46 CHARACTER=24 TEXT= 'Lin_&_DeVol_1978,_p.__86;_Ogura_1972,_p._329:_lines_7-8_from_bottom';
+	TEXT  TAXON=47 CHARACTER=24 TEXT= 'Kubitizki_1990,_Lin_&_DeVol_1978';
+	TEXT  TAXON=48 CHARACTER=24 TEXT= 'ARS_email_5/2/95';
+	TEXT  TAXON=28 CHARACTER=25 TEXT= 'ARS_email_5/4/95.__Bierhorst_1960,_fig._52';
+	TEXT  TAXON=32 CHARACTER=25 TEXT= 'Bierhorst_1960,_White_1963b,_Kim_et_al._1993';
+	TEXT  TAXON=38 CHARACTER=25 TEXT= 'Bierhorst_1960;_1971_-_p._166';
+	TEXT  TAXON=28 CHARACTER=41 TEXT= 'Bower_1923,_p.302;_Bierhorst_1971,_p.363';
+	TEXT  TAXON=32 CHARACTER=41 TEXT= 'Bierhorst_1971,_p._147';
+	TEXT  TAXON=38 CHARACTER=41 TEXT= 'Bierhorst_1971,_p._186';
+	TEXT  CHARACTER=41 TEXT= 'Gifford_and_Foster_1988,_p._68';
+	TEXT  CHARACTER=72 TEXT= 'All_homosporous_ferns_have_independent_gametophytes_(exosporic).__Heterosporous_ferns_have_gametophytes_that_are_dependent_on_the_sporophyte_(endosporic).';
+	TEXT  TAXON=51 CHARACTER=41 TEXT= 'NA.__There_is_an_initial_free_nuclear_period_where_a_large_no._of_nuclei__aggregate_toward_inward-directed_end_of_embryo.__Cell_walls_form_progressively_in_upward_direction.__Not_comparable_to_horiz/vert_division_of_zygote_in_cellular_individuals.';
+	TEXT  CHARACTER=15 TEXT= As_defined_in_text;
+	TEXT  TAXON=8 CHARACTER=62 TEXT= 'Tryon_&_Lugardon_1991;_p._271,_fig.5';
+	TEXT  TAXON=51 CHARACTER=15 TEXT= ARS_Fax_10_May_95;
+	TEXT  TAXON=51 CHARACTER=16 TEXT= ARS_Fax_10_May_95;
+	TEXT  TAXON=3 CHARACTER=66 TEXT= 'Tryon_&_Lugardon_1991:_"rugulate"';
+	TEXT  TAXON=4 CHARACTER=66 TEXT= 'Tryon_&_Lugardon_1991:_"gemmulate"';
+	TEXT  TAXON=5 CHARACTER=66 TEXT= 'Tryon_&_Lugardon_1991:_"slightly_rugulate"';
+	TEXT  TAXON=14 CHARACTER=66 TEXT= 'Tryon_&_Lugardon_1991:_"finely_undulate"';
+	TEXT  TAXON=17 CHARACTER=66 TEXT= 'Tryon_&_Lugardon_1991:_"rugulate"';
+	TEXT  TAXON=20 CHARACTER=66 TEXT= 'Tryon_&_Lugardon_1991:_"slightly_undulate"';
+	TEXT  TAXON=23 CHARACTER=66 TEXT= 'Tryon_&_Lugardon_1991:_"rugulate"';
+	TEXT  TAXON=30 CHARACTER=66 TEXT= 'Tryon_&_Lugardon_1991:_p._73,_Fig._4';
+	TEXT  TAXON=41 CHARACTER=66 TEXT= 'KMP_had_originally_scored_as_0;_ARS_changed_to_?_03/95:__can''t_really_tell_from_Tryon_&_Lugardon_1991.';
+	TEXT  TAXON=42 CHARACTER=66 TEXT= 'See_Tryon_&Lugardon_1991,_Fig_32.5_"ridged_exospore"';
+	TEXT  TAXON=51 CHARACTER=60 TEXT= 'Dehgan_&_Dehgan_1988.__This_score_is_for_free-sporing_microspores.__Megaspores_are_not_free-sporing.';
+	TEXT  TAXON=51 CHARACTER=59 TEXT= 'spores_of_Cycadaceae_appear_to_be_more_or_less_the_same_size,_but_more_importantly,_they_are_not_of_the_same_behaviour.__Female_sporogenesis_entails_degeneration_of_three_megaspores_and_only_one_functional_megaspore_is_formed.';
+	TEXT  TAXON=51 CHARACTER=61 TEXT= 'No_green_color_reported_(Dehgan_&_Dehgan_1988)';
+	TEXT  TAXON=51 CHARACTER=62 TEXT= Dehgan_&_Dehgan_1988;
+	TEXT  TAXON=51 CHARACTER=63 TEXT= 'NA;_no_perispore_in_Cycadales';
+	TEXT  TAXON=51 CHARACTER=64 TEXT= 'NA;_no_perispore_in_Cycadales';
+	TEXT  TAXON=51 TEXT= 'General_cycad_refs_used_for_scoring:__Gifford_&Foster_1988,_Bierhorst_1971,_Rothwell_&_Serbert_1994,_Kubitizki_1990,_Crane_1988,_Dehgan_&_Dehgan_1988,_Jones_1993,_Stevenson_1990';
+	TEXT  TAXON=51 CHARACTER=65 TEXT= 'Dehgan_&_Dehgan_1988,_p._1502-1503';
+	TEXT  TAXON=51 CHARACTER=66 TEXT= 'Dehgan_&_Dehgan_1988,_p._1507';
+	TEXT  TAXON=51 CHARACTER=46 TEXT= 'Gifford_&_Foster_1988,_p._369.___Score_for_microspores_only.__Megaspores_are_not_free-sporing,_so_they_were_not_scored_(only_one_functional_megaspore_produced/megasporangium).';
+	TEXT  CHARACTER=46 TEXT= 'See_"Spore-output"_table_in_Bower_1923,_p._262-263.';
+	TEXT  TAXON=1 CHARACTER=46 TEXT= 'Bower_1923,_p._262-263';
+	TEXT  TAXON=3 CHARACTER=46 TEXT= 'Megaspores_=_1/sporangium.__Microspores=32-64/sporangium.';
+	TEXT  TAXON=5 CHARACTER=46 TEXT= 'Kubitizki_1990,_Bower_1923,_p._262-263';
+	TEXT  TAXON=23 CHARACTER=46 TEXT= 'Bower_1923,_p._262-263';
+	TEXT  TAXON=24 CHARACTER=46 TEXT= 'Bower_1923,_p._262-263;_Bierhorst_1971';
+	TEXT  TAXON=25 CHARACTER=46 TEXT= Kubitizki_1990;
+	TEXT  TAXON=26 CHARACTER=46 TEXT= 'Bower_1923,_p._262-263.__Score_reported_could_be_incorrect;_the_character_appears_to_be_polymorphic_for_the_family_(see_Vandenboschia,_also_Hymenophyllaceae);_literature_reports_may_be_incorrect,_in_part.';
+	TEXT  TAXON=27 CHARACTER=46 TEXT= 'Bower_1923,_p._262-263';
+	TEXT  TAXON=28 CHARACTER=46 TEXT= 'Bower_1923,_p._262-263';
+	TEXT  TAXON=29 CHARACTER=46 TEXT= 'Microspores:_64/sporangium;_Megaspores:_1/sporangium';
+	TEXT  TAXON=32 CHARACTER=46 TEXT= 'Bower_1923,_p._262-263';
+	TEXT  TAXON=33 CHARACTER=46 TEXT= Bierhorst_1971;
+	TEXT  TAXON=38 CHARACTER=46 TEXT= White_et._al_1977;
+	TEXT  TAXON=46 CHARACTER=46 TEXT= 'Bower_1923,_p._262-263';
+	TEXT  TAXON=45 CHARACTER=46 TEXT= 'Megaspores:_1/sporangium.__Microspores:_32/sporangium';
+	TEXT  TAXON=51 CHARACTER=2 TEXT= Gifford_&_Foster_1988;
+	TEXT  TAXON=42 CHARACTER=2 TEXT= see_KMP_files_for_drawings_and_reasoning;
+	TEXT  TAXON=45 CHARACTER=2 TEXT= 'see_KMP_files_for_drawings_and_reasoning.__In_hemidimorphic_comparison,_sporangiferous_trusses_appear_to_be_initiated_ftom_the_base_of_dissected_leaf_(see_Bierhorst_1971)';
+	TEXT  CHARACTER=2 TEXT= vouchers_looked_at_for_all;
+	TEXT  TAXON=32 CHARACTER=2 TEXT= 'Bierhorst,_1971,_p._137,_beginning_about_line_9';
+	TEXT  TAXON=51 CHARACTER=10 TEXT= both_branched_and_unbranched_hairs;
+	TEXT  TAXON=51 CHARACTER=11 TEXT= ARS_Fax_10_May_95;
+	TEXT  TAXON=51 CHARACTER=17 TEXT= 'eventually,_the_petioles_of_some_cycads_break_off_rather_cleanly,_e.g.,_Dioon,_but_Cycas_does_not_(Jones_1993,_p._124,_126);_also_pinna_of_some_genera_abscise,_e.g._Zamia,_but_not_in_Cycas.';
+	TEXT  CHARACTER=10 TEXT= Vouchers_checked_for_all;
+	TEXT  CHARACTER=11 TEXT= Vouchers_checked_for_all;
+	TEXT  TAXON=39 CHARACTER=10 TEXT= hairs_very_short;
+	TEXT  TAXON=45 CHARACTER=10 TEXT= 'Kubitizki_1990_-_papillae_-_usually_interpreted_as_4_fused_hairs_atop,_which_are_uniseriate_hairs';
+	TEXT  TAXON=2 CHARACTER=10 TEXT= 'hairs_very_short,_appressed';
+	TEXT  TAXON=3 CHARACTER=10 TEXT= 'see_FNA_1993_(1-2_celled_papillae)';
+	TEXT  CHARACTER=17 TEXT= Vouchers_checked_for_all;
+	TEXT  TAXON=6 CHARACTER=17 TEXT= 'Specimens_don''t_show_it,_but_many_spp._are_clearly_articulate';
+	TEXT  CHARACTER=36 TEXT= Vouchers_checked_when_there_was_any_doubt;
+	TEXT  TAXON=2 CHARACTER=36 TEXT= 'probably_on_wet_rocks_-_related_spp.';
+	TEXT  TAXON=17 CHARACTER=36 TEXT= sometimes_epipetric;
+	TEXT  TAXON=18 CHARACTER=36 TEXT= Voucher;
+	TEXT  TAXON=19 CHARACTER=36 TEXT= 'moist_earth_banks;_wet_rock_faces_(Burrows_1990)';
+	TEXT  TAXON=20 CHARACTER=36 TEXT= Voucher;
+	TEXT  TAXON=24 CHARACTER=36 TEXT= Voucher;
+	TEXT  TAXON=25 CHARACTER=36 TEXT= 'Voucher;_"on_mossy_tree_trunk"';
+	TEXT  TAXON=26 CHARACTER=36 TEXT= 'or_on_wet_rocks_-_related_spp.';
+	TEXT  TAXON=29 CHARACTER=36 TEXT= seasonally_dry_areas;
+	TEXT  TAXON=36 CHARACTER=36 TEXT= 'Voucher_-_"on_rocky_bank"';
+	TEXT  TAXON=37 CHARACTER=36 TEXT= 'Voucher_;_or_on_wet_rocks';
+	TEXT  TAXON=38 CHARACTER=36 TEXT= 'Voucher_"high_up_on_tree",_but_also_know_to_occur_on_calcareous_cliffs,_therefore_not_always_epiphytic.__See_ARS_email_2/6/95_(10:21)';
+	TEXT  TAXON=39 CHARACTER=36 TEXT= 'Voucher_"mangrove_swamp"';
+	TEXT  TAXON=40 CHARACTER=36 TEXT= 'Voucher_"rupicolous"';
+	TEXT  TAXON=42 CHARACTER=36 TEXT= Voucher;
+	TEXT  TAXON=48 CHARACTER=36 TEXT= 'Voucher_"on_muddy_rock";_Note:_many_spp._(but_not_all)_of_Vittaria_are_epiphytic!';
+	TEXT  TAXON=51 CHARACTER=36 TEXT= ARS_Fax_10_May_95;
+	TEXT  TAXON=51 CHARACTER=3 TEXT= ARS_Fax_10_May_95;
+	TEXT  CHARACTER=3 TEXT= Vouchers_checked_for_all;
+	TEXT  TAXON=24 CHARACTER=3 TEXT= Voucher;
+	TEXT  TAXON=51 CHARACTER=4 TEXT= ARS_Fax_10_May_95;
+	TEXT  TAXON=23 CHARACTER=4 TEXT= Voucher;
+	TEXT  TAXON=30 CHARACTER=4 TEXT= 'Wagner_1952.__The_leaf_of_Matonia_is_similar_to_the_pedate_leaves_of_Adiantum,_where_the_early_leaves_are_clearly_pinnate,_but_the_pinnae_of_mature_leaves_are_re-oriented_so_as_to_make_the_leaf_look_dichotomously_branched._See_also_Mickel_def''n_of_pedate';
+	TEXT  TAXON=45 CHARACTER=4 TEXT= 'wet_mount_of_leaf_from_voucher_shows_a_main_vein_running_up_the_center_of_large,_sterile_leaf.';
+	TEXT  CHARACTER=5 TEXT= 'Vouchers_checked_for_all_and_Kubitizki_1990.___See_also_Alan''s_e-mail_05.26.94.__This_character_largely_modelled_after_Nixon_et_al._1994.';
+	TEXT  TAXON=51 CHARACTER=5 TEXT= 'Cycas_has_a_single,_unbranched_vein_per_pinna,_therefore_2_vein_orders';
+	TEXT  TAXON=38 CHARACTER=5 TEXT= NA;
+	TEXT  TAXON=38 CHARACTER=4 TEXT= NA;
+	TEXT  CHARACTER=7 TEXT= 'Vouchers_checked_for_all_and_Kubitizki_1990.___See_also_Alan''s_e-mail_05.26.94.__This_character_largely_modelled_after_Nixon_et_al._1994.';
+	TEXT  TAXON=51 CHARACTER=7 TEXT= _See_general_Cycas_references.__Scored_the_same_way_by_Nixon_et_al_1994;
+	TEXT  TAXON=51 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=38 CHARACTER=7 TEXT= NA;
+	TEXT  TAXON=46 CHARACTER=7 TEXT= NA;
+	TEXT  TAXON=1 CHARACTER=7 TEXT= Voucher;
+	TEXT  TAXON=7 CHARACTER=7 TEXT= Voucher;
+	TEXT  TAXON=9 CHARACTER=7 TEXT= Voucher;
+	TEXT  TAXON=21 CHARACTER=7 TEXT= Voucher;
+	TEXT  TAXON=30 CHARACTER=7 TEXT= Voucher.__Only_fertile_blades_have_vein_fusion_around_sori;
+	TEXT  TAXON=41 CHARACTER=7 TEXT= Voucher;
+	TEXT  CHARACTER=8 TEXT= 'Vouchers_checked_for_all_and_Kubitizki_1990.___See_also_Alan''s_e-mail_05.26.94.__This_character_largely_modelled_after_Nixon_et_al._1994.';
+	TEXT  TAXON=1 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=2 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=3 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=4 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=6 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=8 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=10 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=11 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=12 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=13 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=14 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=15 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=16 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=18 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=19 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=20 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=22 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=23 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=24 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=25 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=26 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=27 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=28 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=31 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=32 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=33 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=35 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=37 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=38 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=40 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=42 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=43 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=46 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=47 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=30 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=30 CHARACTER=5 TEXT= 'Scored_as_3_because_the_pseudodichotomous_blade_(trichotomous-pedate;_Kubitzki,_1990)_is_apparently_derived_by_repeated_development_of_successive_basal_basiscopic_pinnules,_creating_a_scorpioid_cymose_blade_pattern';
+	TEXT  TAXON=51 CHARACTER=12 TEXT= 'stomata_haplocheilic_(Rothwell_&_Serbet_1994,_p._473,_char._12;_ring_of_subsidiary_cells_(Bierhorst_1971,_p._408).';
+	TEXT  TAXON=51 CHARACTER=13 TEXT= 'Sen_&_De_1992,_p._256_-_perigenous_stomata_in_extant_cycads,_similar_to_ophioglossoids';
+	TEXT  CHARACTER=12 TEXT= 'see_text_for_important_references.__Where_Sen_&_De_1992_had_a_predominance_of_type_shown,_I_scored_for_most_predominant_type.__If_Kondo_1962__and_Sen_&_De_conflicted_over_same_species,_I_followed_Kondo.';
+	TEXT  CHARACTER=13 TEXT= 'see_text_for_important_references._Where_Sen_&_De_1992_had_a_predominance_of_type_shown,_I_scored_for_most_predominant_type.__If_Kondo_1962__and_Sen_&_De_conflicted_over_same_species,_I_followed_Kondo.';
+	TEXT  TAXON=1 CHARACTER=12 TEXT= 'Kondo_1962_(specifies_mexicana),_Payne_1979,_Kubitzki_1990';
+	TEXT  TAXON=2 CHARACTER=12 TEXT= 'Kondo_1962,_Payne_1979,_Kubitizki_1990_(principally_polocytic)';
+	TEXT  TAXON=3 CHARACTER=12 TEXT= 'Sen_&_De_1991:_parameristic_infrequent;_Van_Cottem_1973';
+	TEXT  TAXON=4 CHARACTER=12 TEXT= 'Kondo_1962_(specified_occidentale),_Sen_&_De_1992,_Van_Cottem_1973';
+	TEXT  TAXON=5 CHARACTER=12 TEXT= Kondo_1962;
+	TEXT  TAXON=6 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=7 CHARACTER=12 TEXT= Sen_&_De_1992;
+	TEXT  TAXON=8 CHARACTER=12 TEXT= 'Sen_&_De_1992,_Kondo_1962';
+	TEXT  TAXON=9 CHARACTER=12 TEXT= 'Sen_&_De_1992,_Kondo_1962';
+	TEXT  TAXON=10 CHARACTER=12 TEXT= Sen_&_De_1992;
+	TEXT  TAXON=11 CHARACTER=12 TEXT= 'Thurston_1969;__guess_from_Van_Cottem_1973,_p._67';
+	TEXT  TAXON=12 CHARACTER=12 TEXT= 'Sen_&_De_1992,_Kondo_1962';
+	TEXT  TAXON=13 CHARACTER=12 TEXT= 'Sen_&_De_1992,_Kondo_1962';
+	TEXT  TAXON=14 CHARACTER=12 TEXT= Kondo_1962;
+	TEXT  TAXON=15 CHARACTER=12 TEXT= Kubitizki_1990;
+	TEXT  TAXON=16 CHARACTER=12 TEXT= 'Sen_&_De_1992:_rarely_parameristic';
+	TEXT  TAXON=17 CHARACTER=12 TEXT= Kondo_1962;
+	TEXT  TAXON=18 CHARACTER=12 TEXT= Kondo_1962;
+	TEXT  TAXON=19 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=20 CHARACTER=12 TEXT= _Sen_&_De_1992;
+	TEXT  TAXON=21 CHARACTER=12 TEXT= Kondo_1962;
+	TEXT  TAXON=22 CHARACTER=12 TEXT= 'Sen_&_De_1992:_rarely_parameristic;_Kondo_1962';
+	TEXT  TAXON=23 CHARACTER=12 TEXT= 'Sen_&_De_1992,_Van_Cottem_1973:_"uniformity_in_Gleicheniaceae"_-_see_Dicranopteris;_Thurston_1969:_subtype_a';
+	TEXT  TAXON=24 CHARACTER=12 TEXT= Van_Cottem_1973?_White_1977?;
+	TEXT  TAXON=25 CHARACTER=12 TEXT= 'Van_Cottem_1973,_Kondo_1962';
+	TEXT  TAXON=26 CHARACTER=12 TEXT= 'NA,_Eames_1932';
+	TEXT  TAXON=27 CHARACTER=12 TEXT= Kondo_1962;
+	TEXT  TAXON=28 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=29 CHARACTER=12 TEXT= 'Kubitizki_1990,_Mickel_&_Votava_1971';
+	TEXT  TAXON=30 CHARACTER=12 TEXT= Kondo_1962;
+	TEXT  TAXON=31 CHARACTER=12 TEXT= 'Sen_&_De_1992:_rarely_diameristic';
+	TEXT  TAXON=32 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992,_see_also_arguments_in_Payne_1979.';
+	TEXT  TAXON=33 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992,_see_also_arguments_in_Payne_1979.';
+	TEXT  TAXON=34 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992.__I_let_Kondo_override_Sen_&_De,_when_Kondo_has_our_exact_species';
+	TEXT  TAXON=35 CHARACTER=12 TEXT= 'Kondo_1962,_Payne_1979';
+	TEXT  TAXON=36 CHARACTER=12 TEXT= Kondo_1962;
+	TEXT  TAXON=37 CHARACTER=12 TEXT= Kondo_1962;
+	TEXT  TAXON=38 CHARACTER=12 TEXT= 'Pant_&_Khare_1971,_White_1977';
+	TEXT  TAXON=39 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=40 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=41 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=42 CHARACTER=12 TEXT= 'Kubitizki_1990,_see_Tryon_1961,_fig._9.';
+	TEXT  TAXON=43 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=44 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992.__I_let_Kondo_override_Sen_&_De';
+	TEXT  TAXON=45 CHARACTER=12 TEXT= 'Sen_&_De_1992:_rarely_parameristic';
+	TEXT  TAXON=46 CHARACTER=12 TEXT= Kondo_1962;
+	TEXT  TAXON=47 CHARACTER=12 TEXT= Sen_&_De_1992;
+	TEXT  TAXON=48 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=1 CHARACTER=13 TEXT= 'Kondo_1962_(specifies_mexicana),_Payne_1979,_Kubitzki_1990';
+	TEXT  TAXON=2 CHARACTER=13 TEXT= 'Kondo_1962,_Payne_1979,_Kubitizki_1990_(principally_polocytic)';
+	TEXT  TAXON=3 CHARACTER=13 TEXT= 'Van_Cottem_1973,_Sen_&_De_1992';
+	TEXT  TAXON=4 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992,_Van_Cottem_1973';
+	TEXT  TAXON=5 CHARACTER=13 TEXT= Kondo_1962;
+	TEXT  TAXON=6 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=7 CHARACTER=13 TEXT= Sen_&_De_1992;
+	TEXT  TAXON=8 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=9 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=10 CHARACTER=13 TEXT= Sen_&_De_1992;
+	TEXT  TAXON=11 CHARACTER=13 TEXT= 'Thurston_1969;_guess_from_Van_Cottem_1973,_p._67';
+	TEXT  TAXON=12 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=13 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=14 CHARACTER=13 TEXT= Kondo_1962;
+	TEXT  TAXON=15 CHARACTER=13 TEXT= Kubitzki_1990;
+	TEXT  TAXON=16 CHARACTER=13 TEXT= '_Sen_&_De_1992:_rarely_mesogenous';
+	TEXT  TAXON=17 CHARACTER=13 TEXT= Kondo_1962;
+	TEXT  TAXON=18 CHARACTER=13 TEXT= Kondo_1962;
+	TEXT  TAXON=19 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=20 CHARACTER=13 TEXT= Sen_&_De_1992;
+	TEXT  TAXON=21 CHARACTER=13 TEXT= Kondo_1962;
+	TEXT  TAXON=22 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=23 CHARACTER=13 TEXT= 'Sen_&_De_1992,_Van_Cottem_1973,_Thurston_1969:_subtype_a';
+	TEXT  TAXON=24 CHARACTER=13 TEXT= 'Van_Cottem_1973,_White_1977';
+	TEXT  TAXON=25 CHARACTER=13 TEXT= 'Van_Cottem_1973,_Kondo_1962';
+	TEXT  TAXON=26 CHARACTER=13 TEXT= 'NA,_Eames_1932';
+	TEXT  TAXON=27 CHARACTER=13 TEXT= Kondo_1962;
+	TEXT  TAXON=28 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=29 CHARACTER=13 TEXT= 'Kubitizki_1990,_Mickel_&_Votava_1971';
+	TEXT  TAXON=30 CHARACTER=13 TEXT= Kondo_1962;
+	TEXT  TAXON=31 CHARACTER=13 TEXT= 'Kubitizki_1990,_Sen_&_De_1992,_Payne_1979';
+	TEXT  TAXON=32 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992,_see_Payne_1979_for_arguments';
+	TEXT  TAXON=33 CHARACTER=13 TEXT= 'Sen_&_De_1992,_see_Payne_1979_for_arguments';
+	TEXT  TAXON=34 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=35 CHARACTER=13 TEXT= 'Kondo_1962,_Payne_1979';
+	TEXT  TAXON=36 CHARACTER=13 TEXT= Kondo_1962;
+	TEXT  TAXON=37 CHARACTER=13 TEXT= Kondo_1962;
+	TEXT  TAXON=38 CHARACTER=13 TEXT= 'Pant_&_Khare_1971,_White_1977';
+	TEXT  TAXON=39 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=40 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=41 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=42 CHARACTER=13 TEXT= Kubitizki_1990;
+	TEXT  TAXON=43 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=44 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=45 CHARACTER=13 TEXT= 'Sen_&_De_1992:_"rarely_mesogenous"';
+	TEXT  TAXON=46 CHARACTER=13 TEXT= Kondo_1962;
+	TEXT  TAXON=47 CHARACTER=13 TEXT= Sen_&_De_1992;
+	TEXT  TAXON=48 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  CHARACTER=1 TEXT= Gifford_&_Foster_1988;
+	TEXT  CHARACTER=6 TEXT= 'Vouchers_for_all.__Cf._char_28:_Nixon_et_al._(1994)';
+	TEXT  TAXON=51 CHARACTER=6 TEXT= 'mous.__Hard_to_find_herbarium_specimen_with_basal_pinnae,_therefore_we_followed_Kubitizki_1990';
+	TEXT  TAXON=41 CHARACTER=14 TEXT= 'often_2_states_on_same_frond!__Kubitizki_1990:_"variously_anadromous,_isodromous,_catadromous"';
+	TEXT  TAXON=45 CHARACTER=14 TEXT= NA;
+	TEXT  TAXON=46 CHARACTER=14 TEXT= NA;
+	TEXT  TAXON=48 CHARACTER=14 TEXT= NA;
+	TEXT  TAXON=5 CHARACTER=14 TEXT= 'NA_-_dichotomous_primary_venation';
+	TEXT  TAXON=17 CHARACTER=14 TEXT= 'NA_-_dichotomous_primary_venation';
+	TEXT  TAXON=51 CHARACTER=30 TEXT= Gen_refs;
+	TEXT  CHARACTER=30 TEXT= 'vouchers;_Kubitizki_1990';
+	TEXT  TAXON=3 CHARACTER=30 TEXT= FNA;
+	TEXT  CHARACTER=31 TEXT= 'vouchers;_Kubitizki_1990';
+	TEXT  TAXON=3 CHARACTER=31 TEXT= FNA;
+	TEXT  TAXON=51 CHARACTER=31 TEXT= No_evidence_for_from_gen._refs.;
+	TEXT  CHARACTER=32 TEXT= 'vouchers;_Kubitizki_1990';
+	TEXT  TAXON=1 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=3 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=5 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=7 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=8 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=11 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=12 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=13 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=14 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=15 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=16 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=26 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=27 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=29 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=30 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=31 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=32 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=33 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=35 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=38 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=42 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=44 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=45 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=46 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=51 CHARACTER=32 TEXT= NA;
+	TEXT  CHARACTER=37 TEXT= 'A_zero_score_indicates_no_mention_of_the_presence_of_canals_in_the_literature,_rather_than_a_positive_statement_that_they_do_not_occur_in_a_particular_taxon';
+	TEXT  TAXON=3 CHARACTER=37 TEXT= 'Kubitizki_1990:_"has_mucilage"_-_prob_due_to_cyanobacteria_colonies_and_not_actial_canals.';
+	TEXT  TAXON=6 CHARACTER=37 TEXT= 'Ogura_1972;_Mickel_1974,_p._476.__Cut_stems/petioles_of_Cyatheaceae_sometimes_exude_mucilage,_but_mucliage_canals_not_well-documented';
+	TEXT  TAXON=15 CHARACTER=37 TEXT= 'White_and_Turner_1988:_mucilage_canals_in_petioles';
+	TEXT  TAXON=28 CHARACTER=37 TEXT= 'Kubitizki_1990:_mucilage_ducts';
+	TEXT  TAXON=35 CHARACTER=37 TEXT= 'Tryon_&_Tryon_1982:_has_mucilage_secreting_trichomes';
+	TEXT  TAXON=51 CHARACTER=37 TEXT= Gen_refs;
+	TEXT  CHARACTER=38 TEXT= 'Gifford_&_Foster_1988,_White_1961,_1963.';
+	TEXT  TAXON=14 CHARACTER=38 TEXT= 'Gifford_&_Foster_1988:_in_rhizome,_petiole,_root';
+	TEXT  TAXON=29 CHARACTER=38 TEXT= 'White_1961,_1963:_roots_only';
+	TEXT  TAXON=51 CHARACTER=38 TEXT= Gen_cycad_refs;
+	TEXT  CHARACTER=29 TEXT= 'Bierhorst_1971,_Gifford_and_Foster_1988';
+	TEXT  TAXON=32 CHARACTER=29 TEXT= 'Most_gen_refs.__Unifacial_-_produces_secondary_xylem_centripetally_only.__See_also_G.W._Rothwell_&_E.E._Karrfalt.__1996.__Origin_and_ontogeny_of_tissues_in_the_ophioglossaceous_fern_Botrychium.__AJB_86_(6:Abstracts):48.';
+	TEXT  TAXON=51 CHARACTER=29 TEXT= Gen_cycad_refs;
+	TEXT  CHARACTER=39 TEXT= Fabbri_&_Menicanti_1970.__Data_unavailable_for_most_taxa.;
+	TEXT  TAXON=51 CHARACTER=39 TEXT= Unknown;
+	TEXT  CHARACTER=40 TEXT= Payne_and_Peterson_1973.__Information_available_only_for_a_few_taxa;
+	TEXT  TAXON=14 CHARACTER=40 TEXT= 'Payne_and_Peterson_1973_reported_hypodermis_present_in_aquilinum_and_absent_in_latiusculum_(=aquilinum).__Therefore_it_is_prob._a_polymorphic_character_in_the_species';
+	TEXT  TAXON=51 CHARACTER=40 TEXT= uncertain;
+	TEXT  CHARACTER=21 TEXT= 'Ogura_1972,_p._92';
+	TEXT  TAXON=32 CHARACTER=21 TEXT= 'Ogura_1972,_p._288:_"no_mechanical_tissue_[in_petiole]"';
+	TEXT  TAXON=51 CHARACTER=22 TEXT= Gen_refs;
+	TEXT  TAXON=45 CHARACTER=26 TEXT= 'Bower_1923,_p._68-69';
+	TEXT  TAXON=51 CHARACTER=26 TEXT= Gen_refs;
+	TEXT  TAXON=51 CHARACTER=27 TEXT= 'Gen_refs;_Schmid_1982,_Beck_et_al_1982.';
+	TEXT  TAXON=51 CHARACTER=21 TEXT= 'No_mention_of_sclerenchyma_in_cycads_in_Stevensen,_G&F,_Bierhorst,_etc.__This_is_somewhat_surprising_and_perhaps_there_is_sclerenchyma,_so_leave_as_a_?_for_now.';
+	TEXT  TAXON=51 CHARACTER=28 TEXT= Gen_refs;
+	TEXT  CHARACTER=25 TEXT= 'Bierhorst_1960,_White_1963b,_Kim_et_al._1993';
+	TEXT  TAXON=51 CHARACTER=25 TEXT= Gen_refs;
+	TEXT  CHARACTER=33 TEXT= Vouchers;
+	TEXT  TAXON=38 CHARACTER=33 TEXT= Kubitizki_1990;
+	TEXT  TAXON=45 CHARACTER=33 TEXT= Kubitizki_1990;
+	TEXT  TAXON=51 CHARACTER=33 TEXT= Gen_refs;
+	TEXT  CHARACTER=34 TEXT= vouchers;
+	TEXT  TAXON=51 CHARACTER=34 TEXT= Could_find_no_information_for_root_hairs;
+	TEXT  TAXON=51 CHARACTER=35 TEXT= 'up_to_8_protoxylem_points_(Bierhorst_1971,_p._377);_branch_roots_mostly_diarch';
+	TEXT  TAXON=38 CHARACTER=35 TEXT= NA;
+	TEXT  TAXON=38 CHARACTER=34 TEXT= NA;
+	TEXT  TAXON=45 CHARACTER=34 TEXT= NA;
+	TEXT  TAXON=45 CHARACTER=35 TEXT= NA;
+	TEXT  TAXON=23 CHARACTER=34 TEXT= Smith_&_Smith_13107_UC;
+	TEXT  TAXON=24 CHARACTER=34 TEXT= 'rhizoids_on_stems_(how_it_absorbs);_Bierhorst_1971,_p._200';
+	TEXT  TAXON=28 CHARACTER=34 TEXT= 'Hill_and_Camus_1986:_hairs_are_multicellular_(most_ferns_have_unicellular_hairs_on_roots)';
+	TEXT  TAXON=29 CHARACTER=34 TEXT= 'Johnson_1986,_p._9';
+	TEXT  TAXON=32 CHARACTER=34 TEXT= 'Hill_&_Camus_1986;_Bierhorst_1971,_p._132';
+	TEXT  TAXON=39 CHARACTER=34 TEXT= 'Adams_and_Tomlinson_1979_-_Amer._Fern_J._69:_42-46';
+	TEXT  CHARACTER=35 TEXT= 'Bierhorst_1971,_p._296_-_all_filicalean_ferns_have_2-4_protoxylem_points';
+	TEXT  TAXON=1 CHARACTER=35 TEXT= 'Bierhotst_1971,_p._262';
+	TEXT  TAXON=4 CHARACTER=35 TEXT= 'Bierhorst_1971,_p._296';
+	TEXT  TAXON=24 CHARACTER=35 TEXT= 'Bierhorst_1971,_p._200';
+	TEXT  TAXON=27 CHARACTER=35 TEXT= 'Bierhorst_1971,_p._262';
+	TEXT  TAXON=28 CHARACTER=35 TEXT= 'Bierhorst_1971,_p._353';
+	TEXT  TAXON=29 CHARACTER=35 TEXT= 'Johnson_1986,_p.9;_Bierhorst_1971,_p._330_(diarch)';
+	TEXT  TAXON=32 CHARACTER=35 TEXT= 'Kubitizki_1990,_Bierhorst_1971,_p._132:_(2-5_arch)';
+	TEXT  TAXON=33 CHARACTER=35 TEXT= 'Bierhorst_1971:_triarch';
+	TEXT  TAXON=46 CHARACTER=35 TEXT= 'No_reference_explicitly_says_it_is_2-5_arch,_but_there_is_no_evidence_to_the_contrary.__Bierhorst_1971,_p._260_does_not_say_Schizeaceae_is_different_from_Anemia_and_Lygodium_in_this_way.';
+	TEXT  TAXON=51 CHARACTER=42 TEXT= Gen_refs;
+	TEXT  CHARACTER=42 TEXT= 'General_references_(G&F_1988,_Bierhorst_1971...)';
+	TEXT  TAXON=51 CHARACTER=47 TEXT= 'Microsporangia_more_or_less_acrostichoid_in_Cycas_circinalis_(Bierhorst_1971,_p._379,_fig._20-7A);_in_some_other_cycads,_microsporangia_are_sometimes_in_discrete_sori';
+	TEXT  CHARACTER=47 TEXT= 'Vouchers;_Tryon_&_Tryon_1982,_Kubitizki_1990,_Bierhorst_1971,_Eames_1936,_Hill_&_Camus_1986';
+	TEXT  TAXON=3 CHARACTER=47 TEXT= 'In_juvenile_megasporocarps_micro-_and_megasporangia_begin_to_grow,_but_eventually_the_microsporangia_die_leaving_a_single_functional_megasporangium.__Hence,_the_megasporangia_do_not_form_sori,_but_the_microsporangia_do.';
+	TEXT  TAXON=5 CHARACTER=47 TEXT= sporangia_uniformly_distributed_over_lower_surface;
+	TEXT  TAXON=28 CHARACTER=47 TEXT= 'Hill_&_Camus_1986,_Bierhorst_1971:_sporangia_are_free_(not_fused)_but_clustered_in_sori';
+	TEXT  TAXON=29 CHARACTER=47 TEXT= 'Eames_1936:_microsporangia_clustered_together_in_a_sorus.__Same_for_megasporangia.';
+	TEXT  TAXON=34 CHARACTER=47 TEXT= 'ARS_email_1/10/95';
+	TEXT  TAXON=35 CHARACTER=47 TEXT= Tryon_&_Tryon_1982;
+	TEXT  TAXON=39 CHARACTER=47 TEXT= sporangia_spread_uniformly_on_undersurface_of_lamina;
+	TEXT  TAXON=45 CHARACTER=47 TEXT= 'microsporangia_and_megasporangia_are_in_different_sori,_but_both_are_clustered_in_sori';
+	TEXT  TAXON=46 CHARACTER=47 TEXT= sporangia_are_solitary_on_sporangiophores;
+	TEXT  TAXON=51 CHARACTER=48 TEXT= NA;
+	TEXT  CHARACTER=48 TEXT= 'Vouchers;_Bierhorst_1971,_Eames_1936,_Hill_&_Camus_1986,_Kubitizki_1990,_Tryon_&_Tryon_1982.__Round_sori_=_roughly_as_long_as_wide;_elongate_sori_=_longer_than_wide_-_discrete_or_confluent_sori.';
+	TEXT  TAXON=1 CHARACTER=48 TEXT= NA;
+	TEXT  TAXON=5 CHARACTER=48 TEXT= NA;
+	TEXT  TAXON=19 CHARACTER=48 TEXT= NA;
+	TEXT  TAXON=27 CHARACTER=48 TEXT= NA;
+	TEXT  TAXON=32 CHARACTER=48 TEXT= NA;
+	TEXT  TAXON=33 CHARACTER=48 TEXT= NA;
+	TEXT  TAXON=34 CHARACTER=48 TEXT= 'ARS_email_1/10/95';
+	TEXT  TAXON=35 CHARACTER=48 TEXT= 'Bower_1926,_p._277';
+	TEXT  TAXON=39 CHARACTER=48 TEXT= NA;
+	TEXT  TAXON=46 CHARACTER=48 TEXT= NA;
+	TEXT  TAXON=51 CHARACTER=52 TEXT= General_references;
+	TEXT  TAXON=51 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=51 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=51 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=1 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=5 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=6 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=17 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=19 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=23 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=24 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=25 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=23 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=24 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=25 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=23 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=24 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=25 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=28 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=28 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=28 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=31 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=31 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=31 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=32 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=32 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=32 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=33 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=33 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=33 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=36 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=37 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=38 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=39 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=36 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=37 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=38 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=39 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=36 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=37 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=38 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=39 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=41 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=41 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=41 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=42 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=42 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=42 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=44 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=44 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=44 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=48 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=48 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=48 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=13 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=13 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=13 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=1 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=1 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=5 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=6 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=5 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=6 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=17 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=17 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=19 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=19 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=20 CHARACTER=54 TEXT= 'sub-lateral:_see_ARS_email_4/21/95_ at _10:34';
+	TEXT  TAXON=47 CHARACTER=54 TEXT= 'ARS_email_4/24/95_ at _8:42am';
+	TEXT  CHARACTER=56 TEXT= 'Bierhorst_1971,_Bower_1923,_Tryon_and_Tryon_1982';
+	TEXT  TAXON=51 CHARACTER=56 TEXT= 'cells_of_sporangium_wall_collectively_called_an_"annulus"_by_Jeffrey_(1971),_but_do_not_function_as_such_(Bierhorst_1971,_p._380)';
+	TEXT  CHARACTER=57 TEXT= 'Kubitizki_1990,_Bower_1923,_1926,_1928,_Tryon_and_Tryon_1982,_Qiu_et_al_1995';
+	TEXT  TAXON=51 CHARACTER=57 TEXT= NA;
+	TEXT  TAXON=51 CHARACTER=58 TEXT= NA;
+	TEXT  TAXON=3 CHARACTER=57 TEXT= NA;
+	TEXT  TAXON=4 CHARACTER=57 TEXT= 'Bierhorst_1971,_p._314';
+	TEXT  TAXON=1 CHARACTER=57 TEXT= Kubitizki_1990;
+	TEXT  TAXON=2 CHARACTER=57 TEXT= T&T_1982;
+	TEXT  TAXON=5 CHARACTER=57 TEXT= 'Kubitizki_1990,_Bower_1923,_p._254';
+	TEXT  TAXON=6 CHARACTER=57 TEXT= 'Kubitizki_1990,_Bower_1926,_p._300';
+	TEXT  TAXON=7 CHARACTER=57 TEXT= 'Bower_1926,_p._271.__N.B._for_Dennstaedtiaceae:__T&T_1982_say_"vertical_to_slightly_oblique,_at_least_the_indurated_portion_interrupted_by_the_stalk".__Bower_:_"these_sporangia_show_only_faint_traces_of_obliquity_of_the_annulus_-_it_is_almost_vertical"';
+	TEXT  TAXON=17 CHARACTER=57 TEXT= 'Kubitizki_1990:_"slightly_oblique"';
+	TEXT  TAXON=23 CHARACTER=57 TEXT= 'Bower_1926,_p._205';
+	TEXT  TAXON=30 CHARACTER=57 TEXT= 'Kubitizki_1990,_Bower_1926,_p._224';
+	TEXT  TAXON=31 CHARACTER=57 TEXT= 'Qiu_et_al._1995,_T&T_1982,_Kubitizki_1990';
+	TEXT  TAXON=28 CHARACTER=57 TEXT= NA;
+	TEXT  TAXON=29 CHARACTER=57 TEXT= NA;
+	TEXT  TAXON=32 CHARACTER=57 TEXT= NA;
+	TEXT  TAXON=33 CHARACTER=57 TEXT= Bower;
+	TEXT  TAXON=34 CHARACTER=57 TEXT= 'Bower_1928,_p._71';
+	TEXT  TAXON=35 CHARACTER=57 TEXT= 'Kubitizki_1990:_"slightly_oblique";_Bower_1926,_p._276-281';
+	TEXT  TAXON=38 CHARACTER=57 TEXT= NA;
+	TEXT  TAXON=45 CHARACTER=57 TEXT= NA;
+	TEXT  CHARACTER=58 TEXT= 'Kubitizki_1990,_Bower_1923,_1926,_1928,_Tryon_and_Tryon_1982,_Qiu_et_al_1995';
+	TEXT  TAXON=3 CHARACTER=58 TEXT= NA;
+	TEXT  TAXON=4 CHARACTER=58 TEXT= 'Bierhorst_1971,_p._314';
+	TEXT  TAXON=5 CHARACTER=58 TEXT= '_Bower_1923,_p._254';
+	TEXT  TAXON=6 CHARACTER=58 TEXT= 'Bower_1926,_p._300';
+	TEXT  TAXON=7 CHARACTER=58 TEXT= 'Bower_1926,_p._271._(For_all_dennstaedtioids)';
+	TEXT  TAXON=23 CHARACTER=58 TEXT= 'Bower_1926,_p._205';
+	TEXT  TAXON=24 CHARACTER=58 TEXT= 'Bower_1926,_p._205';
+	TEXT  TAXON=28 CHARACTER=58 TEXT= NA;
+	TEXT  TAXON=29 CHARACTER=58 TEXT= NA;
+	TEXT  TAXON=30 CHARACTER=58 TEXT= 'Bower_1926,_p._224;_Kubitizki_1990';
+	TEXT  TAXON=31 CHARACTER=58 TEXT= 'Qiu_et_al_1995,_Kubitizki_1990,_T&T_1982';
+	TEXT  TAXON=32 CHARACTER=58 TEXT= NA;
+	TEXT  TAXON=34 CHARACTER=58 TEXT= 'Bower_1928,_p._71';
+	TEXT  TAXON=35 CHARACTER=58 TEXT= 'Bower_1926,_p._276';
+	TEXT  TAXON=38 CHARACTER=58 TEXT= NA;
+	TEXT  TAXON=45 CHARACTER=58 TEXT= NA;
+	TEXT  CHARACTER=43 TEXT= 'Vouchers_checked_for_most;_Bierhorst_1971,_Bower_1923,_1926,_1928,_Kubitiaki_1990,_Qiu_et_al_1995,_T&T_1982.__See_also_ARS_e-mail_1/11/95_(10:02am)';
+	TEXT  TAXON=51 CHARACTER=43 TEXT= Gen_refs;
+	TEXT  TAXON=3 CHARACTER=43 TEXT= 'Bierhorst_1971,_p._346_(c),_Campbell_1918,_p._392';
+	TEXT  TAXON=29 CHARACTER=43 TEXT= 'Eames_1936,_Gupta_1962,_Johnson_1986:_ridge,_Bierhorst_1971,_p._332,_Fig._A';
+	TEXT  TAXON=45 CHARACTER=43 TEXT= 'branched:_Eames,_p._232;_Bierhorst_1971,_p._344-5;_Campbell_1918,_p._379';
+	TEXT  CHARACTER=44 TEXT= 'Vouchers_checked_for_most;_Bierhorst_1971,_Campbell_1918,_Eames_1936,_Gupta_1962,_Kubitizki_1990,_Marschall_1925';
+	TEXT  TAXON=51 CHARACTER=44 TEXT= Gen_refs;
+	TEXT  TAXON=3 CHARACTER=44 TEXT= 'microsporangia_=_1;_megasporangia_=_0:_Bierhorst_1971,_p._344,_2nd_column_-_"eventually_microsporangial_initials_appear_on_the_stalk_below"_-_indicating_that_the_megasporangium_has_a_stalk.__Fig._18-5D_-_short_stalk;_Eames_1936';
+	TEXT  TAXON=29 CHARACTER=44 TEXT= 'microsporangium_=_1;_megasporangium_=_0;_Gupta_1962,_p._66_"short_stalk"_and_p._55;_Bierhorst_1971,_p._334_&_336;_Eames_1936';
+	TEXT  TAXON=30 CHARACTER=44 TEXT= Kubitizki_1990;
+	TEXT  TAXON=35 CHARACTER=44 TEXT= yet_another_character_differentiating_this_taxon_from_Osmunda!;
+	TEXT  TAXON=45 CHARACTER=44 TEXT= 'microsporangia_=_1:_Bierhorst_1971,_p._344_"stalks_of_microsporangia_are_longer,_thinner".__megasporangia_=_0:_Bierhorst_1971,_p._344,_1st_column:_"short_stalked_megasporangia";_Eames_1936,_p._233';
+	TEXT  CHARACTER=45 TEXT= 'Vouchers;_Bierhorst_1968,_1971,_Campbell_1918,_Gupta_1962,_Eames_1936,_Kubitizki_1990,_Marschall_1925';
+	TEXT  TAXON=3 CHARACTER=45 TEXT= 'both_microsporangia_and_megasporangia;_Eames_1936';
+	TEXT  TAXON=5 CHARACTER=45 TEXT= 'Kubitizki_1990:_4-seriate';
+	TEXT  TAXON=6 CHARACTER=45 TEXT= 'Kubitizki_1990:_4-seriate';
+	TEXT  TAXON=7 CHARACTER=45 TEXT= 'Kubitizki_1990:_score=2_for_all_dennstaedtioids';
+	TEXT  TAXON=15 CHARACTER=45 TEXT= 'Kubitizki_1990:_dicksonioids_to_6-seriate';
+	TEXT  TAXON=17 CHARACTER=45 TEXT= 'Kubitizki_1990:_4-seriate';
+	TEXT  TAXON=23 CHARACTER=45 TEXT= 'NA,_since_sporangia_are_sessile';
+	TEXT  TAXON=24 CHARACTER=45 TEXT= Bierhorst_1968;
+	TEXT  TAXON=26 CHARACTER=45 TEXT= 'NA,_sporangia_nearly_sessile';
+	TEXT  TAXON=29 CHARACTER=45 TEXT= 'microsporangia_and_megasporangia_=_2;_Bierhorst_1971,_Gupta_1962,_p._55';
+	TEXT  TAXON=30 CHARACTER=45 TEXT= Kubitzki_1990;
+	TEXT  TAXON=31 CHARACTER=45 TEXT= 'Kubitizki_1990:_4-seriate';
+	TEXT  TAXON=33 CHARACTER=45 TEXT= Kubitizki_1990;
+	TEXT  TAXON=34 CHARACTER=45 TEXT= 'NA,_sporangia_are_sessile_-_there_is_no_stalk';
+	TEXT  TAXON=35 CHARACTER=45 TEXT= 'Kubitizki_1990:_ca._6-seriate';
+	TEXT  TAXON=36 CHARACTER=45 TEXT= 'Kubitizki_1990:_polypodioids=2';
+	TEXT  TAXON=39 CHARACTER=45 TEXT= 'Kubitizki_1990:_pterids=2';
+	TEXT  TAXON=45 CHARACTER=45 TEXT= 'Bierhorst_1971,_p._344;_Eames_1936,_p._234-235,_fig._149_&_151';
+	TEXT  TAXON=51 CHARACTER=45 TEXT= Gen_refs;
+	TEXT  CHARACTER=49 TEXT= 'See_text_for_explanation_of_scores_restricted_to_taxa_with_bladed_fertile_fronds/segments_only_and_for_references.';
+	TEXT  TAXON=1 CHARACTER=49 TEXT= 'NA,_fertile_segments_without_leaf_blade';
+	TEXT  TAXON=3 CHARACTER=49 TEXT= 'NA,_fertile_lobe_modified_to_have_no_leaf_blade;_sporangium_essentially_terminal_on_modified_submerged_lobe';
+	TEXT  TAXON=21 CHARACTER=49 TEXT= 'Although_Onoclea_fertile_blade_segments_are_very_reduced_(see_Tryon_&_Tryon_1982,_p._588),_the_sori_are_clearly_arranged_on_the_dorsal_surface.';
+	TEXT  TAXON=29 CHARACTER=49 TEXT= 'We_consider_the_sporocarp_wall_of_Marsileaceae_taxa_to_be_homologous_to_a_leaf_blade,_and_sori_borne_marginally_on_this_blade_(see_Eames_1936,_p._211_and_Gupta_1962)';
+	TEXT  TAXON=32 CHARACTER=49 TEXT= 'NA,_fertile_segments_without_leaf_blade';
+	TEXT  TAXON=33 CHARACTER=49 TEXT= 'NA,_fertile_segments_without_leaf_blade';
+	TEXT  TAXON=38 CHARACTER=49 TEXT= 'NA,_in_axil_of_leaf:_terminal_on_axil?__Complex_situation_(see_Bierhorst_1971,_Eames_1936,_Ogura_1972,_Tryon_&_Tryon_1982,_Wagner_1977)';
+	TEXT  TAXON=42 CHARACTER=49 TEXT= Kubitizki_1990;
+	TEXT  TAXON=45 CHARACTER=49 TEXT= 'NA,_fertile_segments_without_leaf_blades';
+	TEXT  TAXON=46 CHARACTER=49 TEXT= 'NA,_fertile_segments_without_leaf_blades';
+	TEXT  TAXON=51 CHARACTER=49 TEXT= 'Microsporangia_are_arranged_on_dorsal_surface_of_microsporophyll.__Megasporangia_are_arranged_along_the_sporophyll_margin_(0),_but_I_scored_here_only_for_free-sporing_sporangial_tissues.__Only_microspores_are_free-sporing_in_Cycas.';
+	TEXT  TAXON=51 CHARACTER=50 TEXT= Gen_refs;
+	TEXT  CHARACTER=68 TEXT= 'Predominantly_sensu_Nayar_and_Kaur_1971_plus_some_primary_literature,_Bierhorst_1971,_Bower_1923,_1926,_1928,_Eames_1936,_Kubitizki_1990,__Tryon_and_Tryon_1982.';
+	TEXT  TAXON=13 CHARACTER=68 TEXT= Nair_and_Sen_1974;
+	TEXT  TAXON=51 CHARACTER=68 TEXT= Gen_refs;
+	TEXT  CHARACTER=69 TEXT= Followed_Nayar_&_Kaur_1971_primarily.__See_text_for_other_gen_refs_that_were_checked;
+	TEXT  TAXON=2 CHARACTER=69 TEXT= 'Both_naked_and_hairy_gametophytes_occur_in_this_genus.__Nayar_and_Kaur_mention_which_sub-groups_of_Asplenium_have_hairy_or_naked_gametophytes,_but_we_did_not_verify_subgroup_of_this_sp.__It_is_probably_hairy.';
+	TEXT  TAXON=36 CHARACTER=69 TEXT= 'naked_and_hairy_gametophytes_occur_in_this_genus.__ARS_email_9:21_1/6/95_(prob._hairy)';
+	TEXT  TAXON=51 CHARACTER=69 TEXT= Gen_refs;
+	TEXT  CHARACTER=70 TEXT= See_text_for_gametophyte_refs;
+	TEXT  TAXON=51 CHARACTER=70 TEXT= Gen_refs;
+	TEXT  TAXON=3 CHARACTER=70 TEXT= Eames_1936;
+	TEXT  CHARACTER=71 TEXT= 'Primary_refs:_Boullard_1957,_1979,_Campbell_1908,_Holloway_1930,_Bierhorst_1971,_Nayar_&_Kaur_1971';
+	TEXT  TAXON=26 CHARACTER=71 TEXT= 'Boullard_1979;_also_checked_Holloway_1930_-_unclear,_Hymenophylls_may_be_susceptible_to_fungal_infection';
+	TEXT  TAXON=33 CHARACTER=71 TEXT= Campbell_1908;
+	TEXT  TAXON=34 CHARACTER=71 TEXT= 'Uncertain_-_Mahabale_1948;_Boullard_1957';
+	TEXT  TAXON=46 CHARACTER=71 TEXT= 'Bierhorst_1971;_Nayar_&_Kaur_1971';
+	TEXT  TAXON=23 CHARACTER=71 TEXT= Boullard_refs;
+	TEXT  TAXON=51 CHARACTER=71 TEXT= Gen_refs;
+	TEXT  TAXON=51 CHARACTER=72 TEXT= Gen_refs;
+	TEXT  TAXON=42 CHARACTER=72 TEXT= Duckett_&_Pang_1985;
+	TEXT  TAXON=51 CHARACTER=73 TEXT= 'NA_-_there_are_no_anterhidia_in_Cycadaceae';
+	TEXT  CHARACTER=73 TEXT= 'Bierhorst_1971,_Eames_1936,_Gifford_&_Foster_1988,_Nayar_&_Kaur_1971.__See_text_for_comments_on_heterosporous_ferns';
+	TEXT  CHARACTER=74 TEXT= 'Bierhorst_1971,_Eames_1936,_Gifford_&_Foster_1988,_Nayar_&_Kaur_1971.___See_text_for_comments_on_heterosporous_ferns';
+	TEXT  TAXON=45 CHARACTER=74 TEXT= 'Eames_1936,_p._237:_"Archegonia_deeply_sunken".__Salvinia''s_female_gametophyte_undergoes_considerably_more_vegetative_growth_than_other_heterosporous_ferns,_though_this_is_much_less_than_homosporous_ferns';
+	TEXT  TAXON=3 CHARACTER=73 TEXT= 'Ambiguous;_see_character_description';
+	TEXT  TAXON=3 CHARACTER=74 TEXT= 'Eames,_p._254,_fig._166A:_cellular_gametophyte_-_archegonia_appear_deeply_embedded';
+	TEXT  TAXON=29 CHARACTER=73 TEXT= 'Ambiguous;_see_character_description';
+	TEXT  TAXON=29 CHARACTER=74 TEXT= 'Ambiguous;_see_character_description';
+	TEXT  TAXON=32 CHARACTER=74 TEXT= 'Bierhorst_1971,_Eames_1936';
+	TEXT  TAXON=45 CHARACTER=73 TEXT= 'Ambiguous;_see_character_description';
+	TEXT  TAXON=51 CHARACTER=74 TEXT= Gen_refs;
+	TEXT  CHARACTER=75 TEXT= 'Bierhorst_1971,_Campbell_1892,_Eames_1936,_Gifford_&_Foster_1988,_Nayar_&_Kaur_1971,_Stokey_&_Atkinson_1956,_M.D._Turner_(pers._comm._-_Metaxya).';
+	TEXT  TAXON=1 CHARACTER=75 TEXT= '(3-rarely_5),_Nayar_&_Kaur_1971';
+	TEXT  TAXON=2 CHARACTER=75 TEXT= '"3"_Tryon_&_Tryon_1982,_Nayar_&_Kaur_1971';
+	TEXT  TAXON=3 CHARACTER=75 TEXT= '"few"';
+	TEXT  TAXON=4 CHARACTER=75 TEXT= '"3"';
+	TEXT  TAXON=5 CHARACTER=75 TEXT= '"numerous",_Nayar_&_Kaur_1971';
+	TEXT  TAXON=6 CHARACTER=75 TEXT= '"5",_Tryon_&_Tryon_1982,_Nayar_&_Kaur_1971';
+	TEXT  TAXON=7 CHARACTER=75 TEXT= '"3"_for_all_dennstaedtioids';
+	TEXT  TAXON=15 CHARACTER=75 TEXT= '"5+"_for_all_dicksonioids,_Tryon_&_Tryon_1982,_Nayar_&_Kaur_1971';
+	TEXT  TAXON=17 CHARACTER=75 TEXT= '"numerous",_Nayar_&_Kaur_1971';
+	TEXT  TAXON=23 CHARACTER=75 TEXT= '"6-10"_for_gleichenioids,_Nayar_&_Kaur_1971,_Tryon_&_Tryon_1982';
+	TEXT  TAXON=25 CHARACTER=75 TEXT= '"3",_Tryon_&_Tryon_1982';
+	TEXT  TAXON=26 CHARACTER=75 TEXT= '"5+"_for_all_hymenophylls,_Tryon_&_Tryon_1982';
+	TEXT  TAXON=27 CHARACTER=75 TEXT= '"3-rarely_5"';
+	TEXT  TAXON=28 CHARACTER=75 TEXT= '"numerous",_Tryon_&_Tryon_1982';
+	TEXT  TAXON=29 CHARACTER=75 TEXT= Campbell_1892;
+	TEXT  TAXON=30 CHARACTER=75 TEXT= '"numerous",_Nayar_&_Kaur_1971';
+	TEXT  TAXON=31 CHARACTER=75 TEXT= '"5+",_Tryon_&_Tryon_1982';
+	TEXT  TAXON=32 CHARACTER=75 TEXT= '"numerous",_Tryon_&_Tryon_1982';
+	TEXT  TAXON=33 CHARACTER=75 TEXT= '"8-25_cells",_Tryon_&_Tryon_1982,_Nayar_&_Kaur_1971';
+	TEXT  TAXON=34 CHARACTER=75 TEXT= '"3"';
+	TEXT  TAXON=35 CHARACTER=75 TEXT= '"numerous/variable"_,_Tryon_&_Tryon_1982';
+	TEXT  TAXON=36 CHARACTER=75 TEXT= '"3"';
+	TEXT  TAXON=37 CHARACTER=75 TEXT= '"3"';
+	TEXT  TAXON=38 CHARACTER=75 TEXT= '"numerous",_Gifford_&_Foster_1988';
+	TEXT  TAXON=39 CHARACTER=75 TEXT= '"3"_for_all_pteroids';
+	TEXT  TAXON=45 CHARACTER=75 TEXT= Eames_1936;
+	TEXT  TAXON=46 CHARACTER=75 TEXT= '"3-rarely_5"';
+	TEXT  TAXON=47 CHARACTER=75 TEXT= '"3"';
+	TEXT  TAXON=48 CHARACTER=75 TEXT= '"3"';
+	TEXT  TAXON=51 CHARACTER=75 TEXT= 'NA_-_There_are_no_antheridia_in_Cycadaceae';
+	TEXT  CHARACTER=76 TEXT= 'Bierhorst_1971,_Bower_1926,_Eames_1936,_Nayar_&_Kaur_1971_(p._321),_Stokey_&_Atkinson_1956,_M.D._Turner_(pers._comm.)';
+	TEXT  TAXON=1 CHARACTER=76 TEXT= '4-5';
+	TEXT  TAXON=2 CHARACTER=76 TEXT= '4-5';
+	TEXT  TAXON=3 CHARACTER=76 TEXT= '3-4,_Eames_1936';
+	TEXT  TAXON=4 CHARACTER=76 TEXT= '4-5';
+	TEXT  TAXON=5 CHARACTER=76 TEXT= '6-8_(7-12)';
+	TEXT  TAXON=6 CHARACTER=76 TEXT= '6-8';
+	TEXT  TAXON=7 CHARACTER=76 TEXT= '4-5_for_all_dennstaedtioids';
+	TEXT  TAXON=15 CHARACTER=76 TEXT= '6-8+_for_all_dicksonioids';
+	TEXT  TAXON=17 CHARACTER=76 TEXT= '6-8';
+	TEXT  TAXON=23 CHARACTER=76 TEXT= '8-10_for_all_gleichenioids';
+	TEXT  TAXON=25 CHARACTER=76 TEXT= '4-5';
+	TEXT  TAXON=26 CHARACTER=76 TEXT= 4?_7?_Nayar_&_Kaur_1971;
+	TEXT  TAXON=27 CHARACTER=76 TEXT= '4-5';
+	TEXT  TAXON=28 CHARACTER=76 TEXT= '2-3-4,_Nayar_&_Kaur_1971,_Eames_1936,_Bierhorst_1971';
+	TEXT  TAXON=29 CHARACTER=76 TEXT= 2;
+	TEXT  TAXON=30 CHARACTER=76 TEXT= '7-12';
+	TEXT  TAXON=31 CHARACTER=76 TEXT= '6-8_(Mel_Turner,_pers._comm.)';
+	TEXT  TAXON=32 CHARACTER=76 TEXT= '7-8,_Bower,_Eames_1936';
+	TEXT  TAXON=33 CHARACTER=76 TEXT= '6,_Eames_1936';
+	TEXT  TAXON=34 CHARACTER=76 TEXT= '4-5';
+	TEXT  TAXON=35 CHARACTER=76 TEXT= '6-8,_Stokey_&_Atkinson_1956';
+	TEXT  TAXON=36 CHARACTER=76 TEXT= 3;
+	TEXT  TAXON=37 CHARACTER=76 TEXT= '3-5';
+	TEXT  TAXON=38 CHARACTER=76 TEXT= '4-6';
+	TEXT  TAXON=39 CHARACTER=76 TEXT= '4-5_for_all_pteroids';
+	TEXT  TAXON=45 CHARACTER=76 TEXT= '3-4';
+	TEXT  TAXON=46 CHARACTER=76 TEXT= 3;
+	TEXT  TAXON=47 CHARACTER=76 TEXT= '4-5';
+	TEXT  TAXON=48 CHARACTER=76 TEXT= '4-5';
+	TEXT  TAXON=51 CHARACTER=76 TEXT= 'Apparently,_only_1_cell_high_in_Dioon';
+	TEXT  CHARACTER=77 TEXT= 'Farrar_1967,_1974,_Nayar_&_Kaur_1971';
+	TEXT  TAXON=25 CHARACTER=77 TEXT= 'Farrar_1967:_present_for_Grammitis_nimbata,_a_close_relative';
+	TEXT  TAXON=26 CHARACTER=77 TEXT= 'Farrar_1974,_Nayar_&_Kaur_1971';
+	TEXT  TAXON=36 CHARACTER=77 TEXT= 'present_in_L._involuta_and_L._lanceolata:_Nayar_&_Kaur_1971,_p._364,_365.__Quite_possibly_in_this_sp.';
+	TEXT  TAXON=48 CHARACTER=77 TEXT= Farrar_1974;
+	TEXT  TAXON=51 CHARACTER=77 TEXT= 'gametophytes_are_not_free-living';
+	TEXT  CHARACTER=67 TEXT= 'Nayar_&_Kaur_1968,_1971.__See_text_for_other_refs';
+	TEXT  TAXON=3 CHARACTER=67 TEXT= See_figs._in_Eames_1936;
+	TEXT  TAXON=13 CHARACTER=67 TEXT= see_figs._in_Nair_&_Sen_1974;
+	TEXT  TAXON=24 CHARACTER=67 TEXT= 'early_stages_not_known_-_becoming_spherical_mass_later_on';
+	TEXT  TAXON=29 CHARACTER=67 TEXT= 'Prob_polar,_see_Campbell_1892_and_Eames_1936';
+	TEXT  TAXON=31 CHARACTER=67 TEXT= Early_stages_not_known;
+	TEXT  TAXON=32 CHARACTER=67 TEXT= Nayar_&_Kaur_1971_say_Botrychium_is_polar_and_then_say_that_early_stages_are_not_known.__Confusing?;
+	TEXT  TAXON=37 CHARACTER=67 TEXT= 'Nayar_&_Kaur_1968,_1971';
+	TEXT  TAXON=38 CHARACTER=67 TEXT= 'Bierhorst_1971,_p._187;_Darnell-Smith_1917,_fig._6;_Whittier_1975:__Looks_polar,_first_wall_parallel_to_equatorial_plane.';
+	TEXT  TAXON=42 CHARACTER=67 TEXT= 'Tryon_1964,_Duckett_&_Pang_1984';
+	TEXT  TAXON=51 CHARACTER=67 TEXT= 'free-nuclear_division_of_megaspore;_uncertain_about_megaspores';
+	TEXT  TAXON=3 CHARACTER=6 TEXT= NA;
+	TEXT  TAXON=29 CHARACTER=6 TEXT= NA;
+	TEXT  TAXON=38 CHARACTER=6 TEXT= NA;
+	TEXT  TAXON=46 CHARACTER=6 TEXT= NA;
+	TEXT  CHARACTER=51 TEXT= Vouchers_checked_for_all;
+	TEXT  TAXON=1 CHARACTER=51 TEXT= NA;
+	TEXT  TAXON=5 CHARACTER=51 TEXT= NA;
+	TEXT  TAXON=3 CHARACTER=51 TEXT= 'Microsporangia_form_sori.__Megasporangia_do_not_form_sori_-_one_megasporangium/megasporocarp';
+	TEXT  TAXON=8 CHARACTER=51 TEXT= '5_sporangia/sorus_-_voucher';
+	TEXT  TAXON=10 CHARACTER=51 TEXT= 'Some_Lindsaea_spp._have_more_that_12_sporangia/sorus.__Voucher_has_sori_broken_up_-_can''t_tell.';
+	TEXT  TAXON=17 CHARACTER=51 TEXT= Herbarium_specimens;
+	TEXT  TAXON=19 CHARACTER=51 TEXT= NA;
+	TEXT  TAXON=23 CHARACTER=51 TEXT= 'Voucher;_Kubitizki_1990';
+	TEXT  TAXON=24 CHARACTER=51 TEXT= 'Voucher_has_15-20_sporangia/sorus.__Kubitizki_1990';
+	TEXT  TAXON=27 CHARACTER=51 TEXT= NA;
+	TEXT  TAXON=28 CHARACTER=51 TEXT= Voucher;
+	TEXT  TAXON=29 CHARACTER=51 TEXT= 'Johnson_1986,_p._35_species_description_for_quadrifolia:_12_microsporangia/sorus;_3-7_sporangia/sorus';
+	TEXT  TAXON=30 CHARACTER=51 TEXT= 'Bower_1926:_6-9_sporangia/sorus';
+	TEXT  TAXON=32 CHARACTER=51 TEXT= NA;
+	TEXT  TAXON=33 CHARACTER=51 TEXT= NA;
+	TEXT  TAXON=38 CHARACTER=51 TEXT= voucher;
+	TEXT  TAXON=39 CHARACTER=51 TEXT= NA;
+	TEXT  TAXON=42 CHARACTER=51 TEXT= 'Voucher:_hardly_room_for_12!__Tryon_1961,_p._95:__"sporangia_in_several_stages_of_development_are_found_along_a_single_vein_and_up_to_13_have_been_observed_on_a_single_pinna"';
+	TEXT  TAXON=45 CHARACTER=51 TEXT= 'Eames_1936,_p._234_(top)';
+	TEXT  TAXON=46 CHARACTER=51 TEXT= NA;
+	TEXT  TAXON=51 CHARACTER=51 TEXT= NA;
+	TEXT  TAXON=38 CHARACTER=77 TEXT= 'Bierhorst_1971,_p._186;__Farrar_&_Johnson-Groh_1990,_p._1168';
+	TEXT  TAXON=32 CHARACTER=77 TEXT= 'there_are_"gemmae"_(brood_bodies)_borne_on_underground_stems;_no_gemmae_on_gametophytes';
+	TEXT  TAXON=50 TEXT= 'Bierhorst_1971,_Boullard_1979,_Brown_1976,_Gifford_&_Foster_1988,_FNA_1992,_Kubitizki_1990,_Ogura_1972,_Schmid_1982,_Tryon_&_Lugardon_1990,_Tryon_&_Tryon_1982,_Brown_1976,_Duckett_1973,_Hauke_1957,_1979,_Johnson_1937,_Scagel_1984';
+	TEXT  TAXON=50 CHARACTER=1 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=2 TEXT= 'NA;_following_arguments_of_Bierhorst_1971_&_Ogura_1972_-_no-one_takes_stand_on_whether_the_sporangiophore_is_leaf_or_stem.__There_are_no_"fertile_leaves".__Sporangiophores_likely_of_stem_origin_with_sporangia_attached_directly_to_stems.';
+	TEXT  TAXON=50 CHARACTER=3 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=4 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=5 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=6 TEXT= NA;
+	TEXT  TAXON=50 CHARACTER=7 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=50 CHARACTER=9 TEXT= 'Ogura_1972,_pgs._124,_125,_248;_Scagel_et_al._1984,_p._441;_Johnson_1937';
+	TEXT  TAXON=50 CHARACTER=10 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=11 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=12 TEXT= 'Parallel_to_preceding_wall:_see_Ogura_1972,_p._242,_Fig._269,_esp._269-4,_269-5.__See_also_email_to_ARS_June_1_1995.__See_also_Hauke_1957,_p._178';
+	TEXT  TAXON=50 CHARACTER=13 TEXT= 'See_Hauke_1957,_p._178,_and_esp._Fig._2:__"Strasburger_pointed_out_that_the_2_outer_cells_were_subsidiary_cells";_Ogura_1972,_p._242,_Fig._269,_esp._Fig._269-4_and_269-5.__Mesogenous_origin_is_very_clear_for_subsidiary_cells.__See_email_to_ARS_6/1/95';
+	TEXT  TAXON=50 CHARACTER=14 TEXT= NA;
+	TEXT  TAXON=50 CHARACTER=15 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=16 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=17 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=18 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=19 TEXT= 'NA_(leaves_are_sessile)';
+	TEXT  TAXON=50 CHARACTER=20 TEXT= NA;
+	TEXT  TAXON=50 CHARACTER=21 TEXT= 'Ogura_1972,_p._242_"colorless_sclerenchyma";_Brown_1976:_"collenchyme_annulaire"_-_did_tests_showing_E._arvense_did_not_have_sclerenchyma,_but_collenchyma';
+	TEXT  TAXON=50 CHARACTER=22 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=23 TEXT= 'NA_(no_stipe)';
+	TEXT  TAXON=50 CHARACTER=24 TEXT= 'NA_(no_stipe)';
+	TEXT  TAXON=50 CHARACTER=25 TEXT= 'see_Bierhorst_1971,_p._85_and_Fig._27-8_(f-k)';
+	TEXT  TAXON=50 CHARACTER=26 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=27 TEXT= 'Schmid_1982,_p._905';
+	TEXT  TAXON=50 CHARACTER=28 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=29 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=30 TEXT= 'herbarium_specimens;_Hauke_1979:_p._391;_Ogura_1972,_p._240;_Scagel_et_al._1984,_p._441';
+	TEXT  TAXON=50 CHARACTER=31 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=50 CHARACTER=33 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=34 TEXT= herbarium_specimens;
+	TEXT  TAXON=50 CHARACTER=35 TEXT= 'Gifford_&_Foster_1988,_p._187_"triarch_or_tetrarch".__Ogura_1972,_p._247,_249.';
+	TEXT  TAXON=50 CHARACTER=36 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=37 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=38 TEXT= 'Bierhorst_1971,_p._87';
+	TEXT  TAXON=50 CHARACTER=39 TEXT= not_mentionned_in_Fabbri_&_Menicanti_1970;
+	TEXT  TAXON=50 CHARACTER=40 TEXT= 'Ogura_1972,_p._129:_"hypodermis_is_present_only_on_abaxial_side_of_leaf"';
+	TEXT  TAXON=50 CHARACTER=41 TEXT= 'Gifford_&_Foster_1988,_p._68,_Fig._6-1';
+	TEXT  TAXON=50 CHARACTER=42 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=43 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=44 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=45 TEXT= NA;
+	TEXT  TAXON=50 CHARACTER=46 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=47 TEXT= NA;
+	TEXT  TAXON=50 CHARACTER=48 TEXT= NA;
+	TEXT  TAXON=50 CHARACTER=49 TEXT= 'NA_(since_the_sporangiophores_have_no_blades)';
+	TEXT  TAXON=50 CHARACTER=51 TEXT= NA;
+	TEXT  TAXON=50 CHARACTER=52 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=50 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=50 CHARACTER=50 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=50 CHARACTER=56 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=57 TEXT= NA;
+	TEXT  TAXON=50 CHARACTER=58 TEXT= NA;
+	TEXT  TAXON=50 CHARACTER=59 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=60 TEXT= 'T&L_1991,_p._586:_"circular_aperture_with_large_subapertural_opturator_in_Equisetum_is_unique_in_pteridophytes"';
+	TEXT  TAXON=50 CHARACTER=61 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=62 TEXT= T&L_1991;
+	TEXT  TAXON=50 CHARACTER=63 TEXT= 'see_T&L_1991,_p._587,_Fig._11,_to_see_how_thin_perispore_is_relative_to_exospore';
+	TEXT  TAXON=50 CHARACTER=64 TEXT= 'abundant_spherules_seem_to_be_part_of_the_epispore_morphology_-_see_T&L_1991';
+	TEXT  TAXON=50 CHARACTER=65 TEXT= 'T&L_1991,_p._586';
+	TEXT  TAXON=50 CHARACTER=66 TEXT= 'T&L_1991,_p._587,__Figs._8_&_12:_exospore_looks_smooth';
+	TEXT  TAXON=50 CHARACTER=67 TEXT= 'Bierhorst_1971,_p._94_shows_that_the_spore_sheds_its_outer_coat_before_dividing.__Therefore_it_is_impossible_to_determine_the_orientation_of_the_first_division_with_reference_to_the_aperture_since_it_is_no_longer_there_for_reference.';
+	TEXT  TAXON=50 CHARACTER=68 TEXT= 'Duckett_1973:__looks_elongate-thalloid/branched_-_eventually_forming_a_pin-cushion_shape,_i.e._there_is_ultimately_more_dimensionality_here_than_in_other_ribbon-like_gametophytes.__T&T_1982_say_"thallose_strap-shaped,_branched".';
+	TEXT  TAXON=50 CHARACTER=69 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=70 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=71 TEXT= Boullard_1979;
+	TEXT  TAXON=50 CHARACTER=72 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=73 TEXT= 'Duckett_1973,_Hauke_1979,_p._392';
+	TEXT  TAXON=50 CHARACTER=74 TEXT= Duckett_1973;
+	TEXT  TAXON=50 CHARACTER=75 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=76 TEXT= Gen_refs;
+	TEXT  TAXON=50 CHARACTER=77 TEXT= Gen_refs;
+	TEXT  TAXON=49 TEXT= 'Bierhorst_1971,_Bruce_1979,_Eames_1936,_FNA_1992,_Gifford_&_Foster_1988,_Kubitizki_1990,_Ogura_1072,_Ollgaard_1987,_Pixley_1968,_Rolleri_1972,_Tryon_&_Lugardon_1991,_Tryon_&_Tryon_1982,_Wagner_&_Beitel_1992,_Whittier_1981';
+	TEXT  TAXON=49 CHARACTER=1 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=2 TEXT= 'Gifford_&_Foster_1988:_"the_sporophylls_may_be_aggregated_into_definite_strobili_and_may_be_quite_different_from_vegetative_leaves"_and_they_refer_to_a_photo_of_L._digitatum;_herbarium_specimens';
+	TEXT  TAXON=49 CHARACTER=3 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=4 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=5 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=6 TEXT= NA;
+	TEXT  TAXON=49 CHARACTER=7 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=49 CHARACTER=9 TEXT= 'no_mention_of_in_Ogura_1972,_p._124';
+	TEXT  TAXON=49 CHARACTER=10 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=11 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=12 TEXT= 'Ogura_1972,_p._122:_compares_Lycopodium_with_Marattiaceae,_Osmundaceae,_and_Ophioglossaceae.__See_also_Rolleri_1972:_good_drawings_of_L._thyoides_(p._270)_a_closely_related_sp.,_that_shows_the_perigenous_pattern.';
+	TEXT  TAXON=49 CHARACTER=13 TEXT= 'Ogura_1972,_p._122;_Rolleri_1972';
+	TEXT  TAXON=49 CHARACTER=14 TEXT= NA;
+	TEXT  TAXON=49 CHARACTER=15 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=16 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=17 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=18 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=19 TEXT= NA;
+	TEXT  TAXON=49 CHARACTER=20 TEXT= NA;
+	TEXT  TAXON=49 CHARACTER=21 TEXT= Ogura_1972;
+	TEXT  TAXON=49 CHARACTER=22 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=23 TEXT= NA;
+	TEXT  TAXON=49 CHARACTER=24 TEXT= NA;
+	TEXT  TAXON=49 CHARACTER=25 TEXT= 'Bierhorst_1971,_p._9';
+	TEXT  TAXON=49 CHARACTER=26 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=27 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=28 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=29 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=30 TEXT= herbarium_specimens;
+	TEXT  TAXON=49 CHARACTER=31 TEXT= herbarium_specimens;
+	TEXT  TAXON=49 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=49 CHARACTER=33 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=34 TEXT= 'Ogura_1972,_p._135;_herbarium_specimens';
+	TEXT  TAXON=49 CHARACTER=35 TEXT= 'See_original_notes_&__emails_on_the_topic_-_6/6-9/95.__Pixley_1968,_p._160:_"ontogeny_in_Ly._roots_with_crescentic_xylem_in_tr-sec__seen_to_involve_3_or_more_protoxylem_groups".__See_also_Bierhorst_1971,_p._12;_Gifford_&_Foster_1988,_p._114.__See_text';
+	TEXT  TAXON=49 CHARACTER=36 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=37 TEXT= 'Ogura_1972,_p._129_(leaves),_p._203_(stem),_p._211,_last_line_of_leaf_section.__Wagner_&_Beitel_1992,_p._680:_scored_mucilage_canals_present_for_Diphasiastrum';
+	TEXT  TAXON=49 CHARACTER=38 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=39 TEXT= no_mention_of_in_Fabbri_&_Menicanti_1970;
+	TEXT  TAXON=49 CHARACTER=40 TEXT= 'Bierhorst_1971,_p._9_refers_to_hypodermis_in_stem.__Ogura_1972_does_not_mention_a_hypodermis_for_Lycopodium_leaves,_and_our_scores_are_for_leaves_only.';
+	TEXT  TAXON=49 CHARACTER=41 TEXT= Gifford_&_Foster_1988;
+	TEXT  TAXON=49 CHARACTER=42 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=43 TEXT= 'Gifford_&_Foster_1988,_Fig._9-10B';
+	TEXT  TAXON=49 CHARACTER=44 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=45 TEXT= 'photos_in_Gifford_&_Foster_1988;_also_figs._in_Bierhorst_1971_-_looks_like_many_more_than_10_cells_wide.__From_herbarium_specimens,_it_appears_sporangia_have_short_stalk_or_pad_that_is_many_cells_wide';
+	TEXT  TAXON=49 CHARACTER=46 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=47 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=48 TEXT= NA;
+	TEXT  TAXON=49 CHARACTER=49 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=50 TEXT= 'NA;_see_definition_in_text_-_since_there_is_only_one_sporangium_per_leaf,_then_NA.';
+	TEXT  TAXON=49 CHARACTER=51 TEXT= NA;
+	TEXT  TAXON=49 CHARACTER=52 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=49 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=49 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=49 CHARACTER=56 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=57 TEXT= NA;
+	TEXT  TAXON=49 CHARACTER=58 TEXT= NA;
+	TEXT  TAXON=49 CHARACTER=59 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=60 TEXT= T&L_1991;
+	TEXT  TAXON=49 CHARACTER=61 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=62 TEXT= 'although_T&L_1991_talk_about_a_"flange-like_structure_near_the_equator"_in_Lycopodium_(p._596),_in_Wagner_&_Beitel_1992,_p._681,_equatorial_ridge_is_scored_as_absent_for_Diphasiastrum';
+	TEXT  TAXON=49 CHARACTER=63 TEXT= T&L_1991;
+	TEXT  TAXON=49 CHARACTER=64 TEXT= T&L_1991;
+	TEXT  TAXON=49 CHARACTER=65 TEXT= 'See_original_notes_for_reasoning.__T&L_1991,_p._6_&_p._590:_main_layer_formed_by_lamellae_...as_spores_mature,__lamellae__scarcely_apparent_&_form_compact_layer._...characteristic_diffuse_inner_layer...provides_useful_recognition_feature_of_Ly._spores.';
+	TEXT  TAXON=49 CHARACTER=66 TEXT= T&L_1991;
+	TEXT  TAXON=49 CHARACTER=67 TEXT= 'Eames_1936,_p._13,_Fig._11.__Looks_like_equatorial_germination:_first_cell_wall_parallel_to_polar_axis_of_spore';
+	TEXT  TAXON=49 CHARACTER=68 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=69 TEXT= 'Whittier_1981:_no_evidence_of_hairs;_Bruce_1979:_"no_paraphyses_around_sex_organs";_no_indication_of_hairs';
+	TEXT  TAXON=49 CHARACTER=70 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=71 TEXT= Whittier_1981;
+	TEXT  TAXON=49 CHARACTER=72 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=73 TEXT= 'Whittier_1981:_"embedded";_Gifford_&_Foster_1988_drawings';
+	TEXT  TAXON=49 CHARACTER=74 TEXT= 'Whittier_1981:_"necks_extend_well_above_the_gametophyte_surfaces";_Bruce_1979,_figs._36,_41:_shows_them_well_protruding;_figs._in_Gifford_&_Foster_also';
+	TEXT  TAXON=49 CHARACTER=75 TEXT= Gen_refs;
+	TEXT  TAXON=49 CHARACTER=76 TEXT= 'G&F_1988:_arch_with_6_or_more_neck_canal_cells;_from_figs._arch_neck_cell_tiers_seem_fewer_than_6.__Eames_1936,_fig._14_and_his_text:_4-6_cells_high.__However,_see_Bruce_1979,_figs._32,_36,_37,_and_41_esp.__Necks_look_at_least_7-10_cells_long.';
+	TEXT  TAXON=49 CHARACTER=77 TEXT= Gen_refs;
+	TEXT  TAXON=27 CHARACTER=2 TEXT= 'FNA:_fertile_pinnae_borne_toward_apex_of_fertile_leaves';
+	TEXT  TAXON=29 CHARACTER=2 TEXT= 'Wagner_&_Wagner_1977,_p._254';
+	TEXT  TAXON=38 CHARACTER=30 TEXT= 'Ogura_1972,_p._16';
+	TEXT  TAXON=24 CHARACTER=33 TEXT= 'Bierhorst_1971,_p._196:_"limited_number_of_true_roots"';
+END;
+
+BEGIN MACCLADE;
+Version 3.05;
+LastModified -1350143145;
+Singles 1000&/0;
+END;
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/P95morph.nex
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/P95rbcl.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/P95rbcl.nex	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/P95rbcl.nex	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,81 @@
+#NEXUS 
+[MacClade 3.05 registered to Franois Lutzoni,        ]
+
+BEGIN DATA;
+DIMENSIONS  NTAX=51 NCHAR=1206;
+FORMAT DATATYPE=DNA  MISSING=? GAP=- ;
+MATRIX
+[                                      10        20        30        40        50        60        70        80        90        100       110       120       130       140       150       160       170       180       190       200       210       220       230       240       250       260       270       280       290       300       310       320       330       340       350       360       370       380       390       400       410       420       430       440       450       460       470       480       490       500       510       520       530       540       550       560       570       580       590       600       610       620       630       640       650       660       670       680       690       700       710       720       730       740       750       760       770       780       790       800       810       820       830       840       850       860       870       880       890       900       910       920       930       940       950       960       970       980       990       1000      1010      1020      1030      1040      1050      1060      1070      1080      1090      1100      1110      1120      1130      1140      1150      1160      1170      1180      1190      1200   ]
+[                                      .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .         .      ]
+
+Anemia_mexicana               TATACTCCCCAGTATCAAACCAAAGATACTGATATATTGGCAGCCTTTCGAATGACTCCGCAACCGGGAGTACCTCCCGAGGAGGCTGGAGCTGCGGTCGCTGCTGAGTCCTCCACGGGTACATGGACCACGGTATGGACGGATGGACTTACCAGTCTTGATCGTTACAAGGGTCGGTGCTACGATATTGAACCCGTTGCCGGAGAGACAAATCAATATATCGCTTATGTAGCTTACCCCTTGGATTTATTTGAAGAAGGTTCTGTTACTAATTTGCTAACTTCTATTGTAGGTAACGTATTTGGATTCAAAGCCTTGCGTGCTCTACGCCTAGAGGATTTAAGAATTCCTCCTGCTTATTCAAAAACGTTCCTAGGGCCGCCCCACGGCATCCAGGTCGAAAGAGATAAATTAAATAAATATGGTCGTCCCTTATTAGGATGTACAATTAAGCCCAAACTAGGTTTATCCGCCAAAAATTATGGTAGAGCCGTTTATGAATGTCTTCGTGGCGGACTTGATTTTACCAAGGATGATGAGACCGTCAATTCCCAACCATTCATTCGTTGGCGCGATCGTTTCCTATTTGTAGCAGAAGCTCTTTTTAAATCCCAAGCCGAAACGGGCGAAATCAAGGGACATTACTTAAATGCTACTGCAGGTCACTGCGATGAAATGATAAAAAGGGCGGTCTTCGCTAGGGAATTGGGTGCGCCTATCGTTATGCACGACTACCTGACTGGAGGATATACCGCAAATACCAGCTTGGCCTTCTACTGCCGAGATAATGGATTGCTTTTACACATTCACCGCGCAATGCATGCCGTAATTGATAGACAAAAGAATCACGGCATGCATTTTCGTGTATTGGCTAAAACATTACGTATGTCCGGTGGAGATCATATCCATGCTGGGACTGTAGTCGGTAAACTCGAAGGAGAACGAGAAGTTACTTTAGGATTCGTTGATTTACTTCGCGACGATTATATTGAAAAAGATCGTAGTCGCGGTATCTACTTCACCCAGGACTGGGTATCTATGCCAGGAGTACTGCCCGTAGCTTCTGGAGGCATCCACGTATGGCACATGCCCGCTTTAACTGAAATATTCGGAGATGATTCTGTATTGCAATTCGGTGGAGGAACCTTAGGGCATCCCTGGGGAAATGCACCTGGAGCTGTTGCAAATCGAGTTGCATTGGAAGCT   [1206]
+Asplenium_filipes             TATACCCCCGAATACAAGACCAAAGATACTGACATCTCAGCAGCTTTCCGGATGACCCCACAACCCGGAGTACCGGCTGAAGAAGCCGGAGCTGCGGTAGCAGCGAAATCCTCCACAGGTACGTGGACCACTGTATGGACAGATGGGTTGACCAGCCTTGACCGTTACAAGGGCCGATGCTACGACATCGAGCCCGTCGCTGGGGAAGAAAACCAGTATATCGCGTATGTAGCTTATCCCTTGGACCTCTTCGAAGAAGGTTCCGTCACCAACTTATTTACTTCCATTGTAGGTAACGTTTTCGGATTTAAGGCTCTACGTGCCCTACGCTTGGAAGACCTTCGAATCCCCCCCGCTTACTCCAAAACTTTCCTTGGACCGCCTCATGGTATTCAGGTCGAAAGGGATAAATTGAACAAATATGGACGTCCTCTACTGGGATGTACGATCAAGCCAAAATTAGGCCTATCTGCTAAAAATTACGGTAGAGCTGTTTATGAATGCCTTCGTGGTGGACTTGATTTTACAAAAGATGATGAAAACGTAAACTCGCAACCATTCATGCGTTGGAGAGATCGTTTTTTATTTGTTGCAGAAGCTCTCTTCAAAGCCCAAGCTGAAACAGGCGAAATCAAGGGGCATTACTTAAACGCCACCGCAGGTACATGTGAAGAAATGTTAAAGAGAGCTGTTTTTGCTAGAGAATTGGGTGCACCGATTGTCATGCATGACTACCTGACCGGAGGGTTTACCGCAAATACCAGTTTAGCTTTTTATTGCAGAGACAATGGACTGCTTCTTCATATTCATCGCGCGATGCATGCTGTGATTGATAGACAACGAAATCACGGTATGCATTTTCGTGTACTGGCAAAAGCATTGCGCATGTCCGGTGGGGATCACGTACACGCTGGAACTGTAGTAGGTAAACTGGAAGGGGAAAGAGAAGTCACTTTGGGTTTCGTTGATTTACTCCGCGACGATTATATCGAGAAAGATCGTGCACGCGGTGTTTATTTCACCCAAGATTGGGTCTCCATGCCGGGTGTATTCCCCGTTGCTTCGGGGGGTATCCACGTATGGCACATGCCAGCTCTAACCGAAATCTTTGGGGACGACTCTGTCCTACAGTTCGGTGGAGGAACTTTGGGACATCCCTGGGGAAATGCACCCGGTGCGGTAGCCAACCGAGTCGCGTTAGAAGCT   [1206]
+Azolla_caroliniana            TACACTCCCGATTATGTTACCAAAGATACCGATATTTTGGCAGCTTTCCGAATGACCCCGCAACCCGGAGTCCCACCCGAAGAGGCTGGAGCTGCGGTAGCTGCGGAATCTTCTACAGGTACATGGACCACCGTATGGACAGATGGACTTACCAGTCTTGACCGTTACAAAGGTAGATGCTATGATATCGAACCTGTTGCTGGAGAAGACAACCAATACATCGCATACGTAGCTTACCCCCTAGATTTATTCGAAGAGGGTTCCGTTACCAACATGTTTACCTCCATCGTAGGTAATGTATTCGGATTTAAGGCTCTACGCGCTCTTCGCCTAGAAGATCTTCGAATTCCCCCTGCTTATTCCAAAACTTTCATCGGACCACCCCACGGTATCCAGGTTGAAAGGGACAAACTGAACAAATATGGACGTCCTCTACTAGGATGCACGATAAAGCCAAAATTGGGCTTATCTGCTAAGAATTATGGTAGAGCTGTTTATGAATGTCTCCGCGGTGGACTTGACTTTACCAAGGATGATGAAAACGTAAACTCTCAACCATTCATGCGTTGGAGAGACCGTTTCCTATTCGTAGCAGAAGCTCTATTCAAGTCTCTGGCCGAAACGGGCGAAATCAAAGGACATTACTTGAACGCCACTGCAGGTACATGCGAAGAAATGCTAAAAAGAGCTCAATTCGCTAGAGAGTTGGGTGCACCAATCGTCATGCATGACTACCTGACCGGAGGTTTTACTGCAAACACTAGCTTGGCTTTCTACTGCCGAGACAATGGGCTACTTCTTCACATTCACCGCGCAATGCATGCTGTCATCGATAGACAGAGAAATCATGGTATACATTTCCGCGTGTTAGCCAAAGCATTACGTATGTCTGGTGGGGACCATATCCACTCCGGAACCGTAGTAGGTAAACTAGAAGGAGAGCGAGAAGTAACTCTGGGTTTTGTCGATCTACTTCGCGACGATTACATTGAAAAGGACCGTAGCCGCGGTATCTATTTCACCCAAGATTGGGTATCTATGCCAGGAGTATTGCCTGTAGCTTCAGGTGGTATCCACGTATGGCACATGCCCGCTCTAACCGAGATTTTTGGGGACGATTCCGTATTACAATTTGGTGGAGGAACCCTAGGCCATCCTTGGGGGAACGCACCCGGTGCTGTAGCTAACAGAGTGGCTTTGGAGGCT   [1206]
+Blechnum_occidentale          TACACCCCCGAATACAAGACCAAAGATACCGATATCTTAGCAGCTTTCCGGATGACCCCACAACCCGGAGTACCGGCTGAGGAAGCCGGAGCTGCGGTGGCTGCGGAATCCTCCACAGGTACGTGGACTACTGTCTGGACAGATGGGTTGACCAGTCTCGACCGTTACAAGGGCCGATGCTACGACATTGAACCCGTTGCTGGAGAAGAAAACCAGTATATTGCGTATGTAGCTTATCCTTTGGATCTATTTGAGGAAGGTTCCGTCACCAATTTGTTCACTTCCATTGTAGGTAATGTTTTTGGATTTAAGGCTCTACGCGCCATACGCTTGGAAGATCTTCGAATCCCTCCTGCATATTCTAAAACTTTCATTGGACCGCCTCACGGTATTCAAGTCGAAAGGGATAAACTGAACAAATATGGACGTCCCTTATTGGGATGTACAATCAAGCCAAAATTAGGTCTGTCTGCTAAAAATTATGGTAGAGCCGTCTACGAATGCCTTCGTGGTGGACTTGATTTTACAAAAGATGATGAAAACGTAAATTCCCAACCATTCATGCGTTGGAGAGATCGTTTCTTATTTGTAGCGGAAGCTCTTTTCAAAGCCCAGGCTGAAACGGGCGAAATCAAAGGGCATTACTTAAATGCTACTGCAGGTACGTGTGAGGAAATGTTGAAGAGAGCTGTTTTTGCTAGAGAGTTGGGTGCACCGATAGTCATGCATGACTACCTGACCGGAGGGTTTACCGCAAATACCAGCTTAGCTTTTTACTGCCGAGACAATGGACTGCTTCTCCACATTCACCGTGCGATGCATGCTGTTATCGATAGACAGCGGAATCACGGTATGCATTTTCGCGTATTGGCCAAAGCATTACGCATGTCCGGTGGGGATCATAT?C?CGCCGGAACTGTAGTAGGCAAACTAGAAGGTGAACGAGAAGTCACTTTGGGTTTCGTCGATTTACTTCGTGAAGATTATATTGAAAAAGATCGTAGCCGTGGTATTTATTTCACCCAAGATTGGGTATCTATGCCGGGTGTAATCCCCGTAGCTTCAGGGGGTATCCACGTCTGGCATATGCCCGCTCTAACCGATATCTTTGGGGACGACGCCGTATTACAGTTCGGCGGAGGAACCTTGGGACATCCTTGGGGAAACGCACCCGGTGCAGTAGCCAACCGAGTCGCATTAGAAGCT   [1206]
+Cheiropleuria_bicuspis        TACACTCCCAAGTATGAGACCAAAGACACCGATATCTTAGCAGCCTTTCGAATGACCCCGCAACCCGGAGTACCGCCTGAGGAAGCTGGAGCTGCAGTAGCTGCGGAATCTTCCACAGGTACATGGACCACTGTATGGACGGATGGACTTACTAGTCTCGATCGCTACAAAGGCCGATGCTATGATATCGAACCTGTTGCTGGGGAGGATAATCAGTATATTGCATATGTAGCTTATCCTTTGGATTTATTTGAAGAAGGTTCCGTTACCAATATGTTCACTTCCATTGTAGGTAACGTTTTTGGATTCAAGGCCCTACGCGCTCTCGGCTTAGAAGACCTTCGAATTCCTCCTGCTTATTCTAAAACTTTCATTGGGCCGCCCCATGGTATCCAGGTTGAAAGGGATAAGCTGAACAAATATGGGCGCCCCTTATTGGGATGTACAATCAAGCCAAAATTGGGCTTATCTGCTAAAAACTATGGCAGGGCTGTTTACGAATGTCTCCGTGGCGGACTTGATTCTACGAAGGATGATGAGAACGTAAATTCTCAACCATTTATGCGTTGGAGGGACCGGTTCGTGTCTGTGGCGGAAGCTCTTTTCAAGGCTCAGGCCGAAACGGGCGAAATAAAAGGACATTATCTAAATGCCACTGCGGGTACGTGTGAGGAAATGATGAAAAGAGCAGCCTTTGCTAGAGAATCGGGAGTACCCATCACCATGCATGATTACTTGACAGGAGGCTTCACTGCAAATACTAGCTTGGCCTTTTATTGTCGAGATAATGGGCTACTGCTTCATATCCACCGCGCGATGCATGCTGTTATCGATAGACAGAGAAATCACGGTATCCATTTCCGTGTCCTGGCCAAAGCATTGCGTATGTCCGGTGGGGATCATGTCCACGCCGGGACGGTAGTGGGTAAACTGGAGGGAGAACGAGACGTCACATTGGGTTTCGTCGATTTGCTACGCGACGATTATATCGAGAAAGACCGAAGCCGGGGTATATATTTCACTCAGGATTGGGTATCCATGCCAGGTGTATTTCCCGTAGCCTCGGGAGGTATCCACGTCTGGCATATGCCCGCTCTAACTGAAATCTTCGGAGATGATTCTGTCTCACAGTTCGGCGGAGGAACCTTGGGACACCCTGGGGGAAACGCACCAGGCGCTGTAGCTAATCGAGTTGCATTGGAAGCT   [1206]
+Cyathea_lepifera              TACACTCCCAAGTATGAGACCAAAGACACCGATATCTTGGCAGCCTTTCGAATGACCCCGCAACCCGGAGTACCGCCTGAGGAAGCTGGAGCTGCAGTAGCTGCGGAATCTTCCACAGGTACATGGACCACTGTATGGACGGATGGACTTACTAGTCTCGATCGCTACAAAGGCCGATGCTATGATATCGAACCTGTTGCTGGGGAGGATAATCAGTATATTGCATATGTAGCTTATCCTTTGGATTTATTTGAAGAAGGTTCCGTTACCAATATGTTCACTTCCATTGTAGGTAACGTTTTTGGATTCAAGGCCTTACGCGCTCTCCGCTTAGAAGATCTTCGAATTCCTCCTGCTTATTCTAAAACTTTCATTGGGCCGCCCCATGGTATCCAGGTTGAAAGGGATAAGCTGAACAAATATGGGCGTCCCTTATTAGGATGTACAATCAAGCCAAAATTGGGCTTATCTGCTAAAAATTATGGGAGAGCCGTTTATGAATGTCTCCGCGGTGGACTTGACTTCACCAAGGATGATGAGAACGTAAATTCCCAACCATTCATGCGTTGGAGAGATCGTTTCTTATTCGTAGCAGAAGCTCTCTTCAAATCTCAGGCCGAAACAGGCGAAATTAAGGGACATTACTTAAACGCTACTGCGGGTACGTGTGAAGAAATGTTGAAAAGAGCCTGTTTTGCTAGAGAATTGGGGGCACCAATTGTAATGCATGACTATCTGACCGGAGGGTTTACCGCAAACACTAGCTTGGCCTTCTATTGCCGAGATAATGGGCTGCTTCTTCACATTCACCGTGCAATGCATGCTGTCATCGATAGACAGAAAAATCACGGTATACATTTTCGTGTATTAGCAAAAGCATTACGTATGTCCGGTGGGGATCATGTTCACTCTGGGACTGTAGTAGGCAAACTAGAGGGAGAACGAGAAGTCACTTTGGGTTTTGTCGATTTGCTTCGCGACGATTATATTGAAAAAGACCGTAGCCGCGGCATCTATTTCACCCAAGATTGGGTATCTATGCCGGGCGTACTTCCCGTAGCTTCGGGGGGTATCCACGTATGGCATATGCCTGCTCTAACCGAAATCTTCGGAGACGATTCTGTCTTACAGTTCGGCGGAGGAACCCTGGGACATCCTTGGGGAAATGCGCCCGGTGCCGTAGCTAATCGAGTCGCGTTAGAGGCT   [1206]
+Blotiella_pubescens           TACACTCCCCAATATCAGACCAAAGACACTGATATTTTAGCGGCCTTCCGAATGACCCCACAACCTGGAGTACCGGCTGAAGAAGCGGGAGCTGCGGTAGCTGCCGAATCCTCTACGGGGACGTGGACCACTGTATGGACAGATGGGCTTACCAGCCTTGATCGCTACAAGGGCCGCTGCTACGATATCGAACCCGTCGCTGGGGAAGAAAACCAGTATATTGCATATGTAGCTTATCCCTTGGATCTATTCGAAGAAGGTTCTGTAACCAATTTATTCACTTCAATTGTAGGTAATGTTTCCGGATTCAAGGCCCTACGCGCTCTACGACTAGAAGACCTTCGAATTCCTCCTTCTTATTCTAAAACTTTCATTGGACCACT?CACGGTATTCAGGTCGAAAGGGACAAACTGAACAAATATGGACGTCCTTTATTGGGATGTACAATCAAGCCAAAATTGGGCTTGTCTGCTAAGAATTATGGGAGAGCCGTCTATGAATGCCTTCGGGGCGGACTTGATTTTACAAAAGACGACGAGAACGTGAATTCCCAACCATTCATGCGTTGGAGAGATCGTTTCTTATTCGTAGCAGAAGCTCTTTTCAAATCTCAGGCTGAAACAGGTGAAATCAAGGGACATTACTTAAATGCCACTGCAGGTACGTGTGAAGAGATGATGAAGAGAGCTTATTTTGCTAGAGAATTGGGTGTACCAATTATCATGCATGACTATTTGACCGGGGGATTTACCGCAAATACCAGCTTAGCTTATTATTGCAGGGACAATGGGCTGCTTCTTCATATTCACCGTGCGATGCATGCTGTCATCGATAGACAACGAAATCATGGTATGCACTTCCGCGTATTGGCCAAAGCATTACGCATGTCCGGCGGAGACCACATCCACGCCGGAACCGTAGTAGGCAAACTAGAGGGGGAGCGAGAAGTCACCTTGGGTTTTGTCGATTTGCTTCGCGATGATTACATCGAAAAGGATCGTAGCCGCGGCATCTATTTCACGCAGGATTGGGTATCTATGCCGGGTGTACTTCCCGTAGCTTCGGGGGGTATCCACGTCTGGCACATGCCCGCCCTAACCGAAATCTTCGGCGACGAT?CTGTCTTACAGTTCGGTGGCGGAACTTTGGGACATCCCTGGGGAAATGCACCCGGTGCCGTAGCTAACCGAGTTGCATTAGAAGCT   [1206]
+Dennstaedtia_punctilobula     TACACCCCCGGGTATAAGACCAAAGACACTGATATCTCAGCAGCCTTCCGCATGACCCCACAACCCGAAGTACCAGCTGAAGAAGCAGGAGCTGCGGTAGCTGCCGAATCCTCCACGGGTACATGGACCACTGTATGGACAGATGGACTTACCAGTCTTGATCGGTACAAGGGCCGGTGCTACGATATCGAACCCGTCGCTGGAGAGGAAAACCAGTATATCGCATATGTAGCTTATCCCTTGGATCTATTCGAGGAAGGTTCCGTCACTAATTTGTTCACGTCCATTGTAGGTAACGTTTTCGGATTTAAGGCCCTACGCGCTCTACGCCTAGAAGACCTTCGAATTCCCCCCGCTTATTCCAAAACTTTCATTGGACCACCTCATGGTATTCAGGTCGAAAGGGACAAACTGAACAAATATGGACGTCCCTTATTGGGATGTACAATCAAGCCAAAATTGGGCTTGTCCGCTAAGAATTATGGTAGAGCCGTCTATGAATGCCTTCGTGGTGGACTTGATTTCACAAAAGATGATGAGAACGTAAATTCCCAACCATTCATGCGTTGGAGGGATCGCTTCTTATTCGTGGCAGAAGCTCTTTTCAAATCCCAGGCTGAAACAGGCGAAATCAGGGGACATTACTTGAATGCCACTGCAGGTACATGTGAAGAGATGTTGAAGAGAGCTGTTTTTGCTAGAGAATTGGGTGTACCAATTGTCATGCACGACTACCTGACCGGAGGGTTTACCGCAAATACCAGCCTAGCTTTCTATTGCAGAGACAATGGGCTGCTTCTTCATATTCACCGCGCGATGCATGCTGCTATCGATAGACAACGAAATCACGGCATACATTTCCGCGTATTAGCCAAAGCATTACGGATGTCCGCCGGGGATCATATCCACGCCGGAACTGTAGTAGGCAAATTAGAGGGAGAACGAGAAGTCACTTTGGGTTTCGTTGATTTACTCCGCGATGATTACATCGAAAAAGATCGTAGCCGCGGTATCTATTTCACGCAAGATTGGGTGTCTATGCCGGGTGTACTCCCCGTAGCTTCAGGGGGTATCCACGTCTGGCACATGCCTGCCCTAACCGAAATCTTCGGGGACGATTCCGTCTTACAATTCGGTGGCGGAACTTTGGGACATCCCTGGGGGAACGCGCCCGGTGCCGTAGCTAACCGAGTCGCATTAGAAGCT   [1206]
+Histiopteris_incisa           TACACTCCCGAATATAAGACCAAGGACACTGATATTTTAGCAGCCTTCCGAATGACCCCACAACCTGGAGTACCAGCTGAGGAAGCCGGAGCTGCGGTAGCTGCGGAATCCTCCACGGGTACATGGACCACTGTATGGACAGATGGGCTTACCAGTCTCGATCGTTACAAGGGCCGGTGCTACGATATCGAACCCGTCGCTGGAGAAGAAAACCAGTATATTGCATATGTAGCTTATCCCTTGGATCTATTCGAAGAAGGTTCTGTAACCAATTTGTTCACTTCAATTGTAGGTAATGTTTTCGGATTCAAGGCCCTACGCGCTCTACGCCTAGAAGACCTTCGAATTCCCCCCGCTTATTCTAAAACTTTCATTGGACCGCCTCACGGTATTCAGGTCGAAAGGGATAAACTGAACAAATATGGACGTCCCTTATTGGGGTGTACAATCAAGCCAAAATTGGGCTTGTCTGCTAAGAATTATGGTAGAGCCGTCTATGAATGCCTTCGTGGTGGACTTGATTTCACAAAAGACGATGAAAACGTAAATTCCCAACCATTCATGCGTTGGAGAGATCGCTTCTTATTCGTAGCAGAAGCTCTTTTCAAATCCCAGGCTGAAACAGGTGAAATCAAGGGACATTACTTAAATGCCACTGCAGGTACGTGTGAAGAAATGATGAAGAGAGCTGTTTTTGCTAGAGAATTGGGTGCACCAATTGCCATGCATGACTACCTGACCGGGGGATTTACCGCAAATACCAGCTTAGCTTATTATTGCAGAGACAATGGGCTGCTTCTTCATATTCACCGTGCAATGCATGCTGTCATCGATAGACAACGGAATCATGGTATGCACTTCCGTGTATTGGCCAAAGCGTTACGCATGTCCGGCGGAGACCACATCCACGCCGGAACCGTAGTAGGCAAACTAGAGGGGGAGCGAGACGTCACCTTGGGTTTTGTCGATTTGCTTCGCGATGATTACATCGAAAAAGATCGTAGCCGCGGCATCTATTTCACGCAGGATTGGGTATCTATGCCGGGTGTACTCCCCGTAGCTTCAGGGGGTATCCACGTCTGGCACATGCCCGCCCTAACCGAAATCTTCGGGGACGATTCTGTCTTACAGTTCGGTGGCGGAACTTTGGGACATCCCTGGGGAAATGCGCCCGGTGCCGTAGCTAACCGAGTCGCATTAGAAGCT   [1206]
+Lindsaea_odorata              TATACTCCCGATTACAAAACCAAAGACACCGATATCCTAGCAGCCTTTCGAATGACCCCGCAGCCTGATGTGCCGGCTGAAGAAGCCGGAGCTGCCGTAGCTGCAGAGTCTTCAACGGGTACTTGGACTACTGTATGGACGGATGGCCTTACCAGTCTTGATCGTTACAAAGGCCGGTGCTACGATATTGAACCCGTTGCCGGAGAAGAAAATCAATATATTGCATATGTAGCATACCCTTTGGATTTATTCGAAGAAGGTTCTGTTACCAATTTATTCACTTCGATTGTAGGTAACGTGTTTGGGTTTAAAGCCCTACGTGCCCTACGGTTAGAAGATCTTCGAATCCCCCCAGCTTATTCCAAAACTTTTATTGGACCACCCCACGGTATTCAGGTTGAAAGGGATAAACTGAACAAATATGGACGTCCCTTATTGGGATGTACAATCAAGCCGAAACTGGGCTTATCTGCTAAAAACTACGGTAGGGCTGTTTACGAATGTCTACGCGGCGGCCTTGATTTCACAAAAGATGATGAGAACGTGAACTCCCAACCATTCATGCGTTGGAGAGATCGTTTTCTTTTCGTAGCAGAAGCTCTTTTTAAATCCCAGGCTGAAACAGGTGAAATTAAGGGGCATTACTTAAATGCTACTGCAGGTACGTGTGAGGAAATGATAAAAAGAGCGGTTTTTGCCAGAGAGTTGGGAGCACCAATTGTTATGCATGACTACCTAACCGGAGGTTTTACGGCTAATACTAGTTTAGCTTTTTATTGTAGAGACAATGGGCTGCTTCTCCACATTCACCGTGCAATGCATGCTGTTATCGATAGACAACGAAATCACGGGATGCATTTCCGCGTATTAGCTAAAGCATTGCGTATGTCCGGTGGGGATCATATACACGCTGGAACTGTAGTAGGCAAATTAGAAGGTGAACGAGAAGTTACTTTGGGTTTTGTCGATTTGCTGCGCGATGATTATATTGAAAAAGACCGTAATCGCGGCATCTATTTCACCCAAGATTGGGTATCTATGCCAGGTGTACTTCCCGTAGCTTCTGGGGGTATCCACGTTTGGCACATGCCCGCCTTGACTGAAATTTTCGGAGATGACTCTGTATTGCAGTTTGGCGGAGGAACTTTGGGACACCCCTGGGGAAATGCGCCTGGTGCTGTAGCCAACCGAGTTGCATTAGAGGCT   [1206]
+Lonchitis_hirsuta             TACACCCCCGATTATAAGACAAAAGATACTGATATCTTAGCAGCCTTTCGGATGACTCCGCAACCCGGGGTACCGGCCGAAGAAGCCGGAGCTGCGGTAGCTGCCGAATCTTCCACGGGTACGTGGACTACTGTATGGACGGATGGACTTACAAGCCTCGATCGATACAAGGGTCGGTGCTACGATATTGAACCTGTCGCTGGAGAGGAAAACCAATACATCGCATATGTAGCTTATCCCTTGGATCTATTCGAAGAAGGCTCCGTTACTAATTTATTTACCTCCATCGTAGGTAACGTATTCGGGTTCAAAGCCCTGCGCGCTCTACGGCTAGAAGACCTTCGGATTCCTCCCGCTTATTCTAAAACTTTTATTGGCCCCCCCCATGGCATTCAGGTCGAAAGGGATAAACTGAACAAATACGGACGTCCCCTATTGGGCTGTACAATCAAGCCAAAATTAGGATTATCCGCCAAGAATTACGGTAGAGCCGTCTATGAATGTCTCCGTGGTGGACTTGACTTCACAAAAGATGATGAAAACGTAAATTCTCAACCATTCATGCGTTGGAGAGATCGCTTCCTATTCGTAGCAGAAGCCCTTTTCAAATCCCAGGCGGAAACGGGTGAAATCAAAGGACACTACTTAAATGCCACCGCAGGTACATGTGAAGAAATGATGAAGAGGGCTGTTTTTGCCAGAGAATTGGGGGCACCAATTGTCATGCATGACTACCTTACCGGGGGGTTCACCGCAAATACTAGTTTAGCCCATTATTGTAGAGATAATGGGCTGCTTCTTCACATTCACCGCGCAATGCACGCTGTCATTGACAGACAACGAAATCACGGTATGCATTTCCGTGTATTAGCCAAAGCATTACGCATGTCCGGTGGAGATCATATCCACGCCGGAACTGTAGTAGGCAAACTAGAAGGGGAAAGAGAAGTCACCTTAGGTTTTGTCGATTTGCTCCGTGACGACTACATCGAAAAAGATCGTAGCCGTGGTATTTATTTCACCCAAGATTGGGTATCTATGCCAGGTGTCCTTCCCGTAGCTTCCGGGGGTATTCACGTCTGGCATATGCCCGCCCTAACCGAAATCTTTGGAGACGACTCCGTCTTACAATTCGGTGGAGGAACCTTAGGACACCCTTGGGGAAATGCGCCTGGTGCTGTAGCTAACCGAGTCGCATTAGAGGCT   [1206]
+Microlepia_strigosa           TACACTCCCGGATATAAGACTAAAGATACTGATATCTTAGCAGCCTTCCG?ATGACTCCTCAACCTGGAGTTCCACCTGAGGGAGCAGGGGCCGC?GTAGCTGCCGAATCTTCTACTGGTACATGGACCACTGTGTGGACCGATGGACTTACCAGCCTTAT?CGTTACAAAGGGCGCTGCTACGATATCGAACCCGTTGCTGGAGAAGAAAACCAGTATATCGCATATGTAGCTTATCCCCTGGATCTATTCGAGGAAGGTTCCGTTACTAATTTGTTCACTTCCAT?GTAGGTAATGTTTTCGGATTTAAGGCCCTACGCGCTCTACGCCTAGAAGACCTTCGAATTCCCCCTGCCTATTCCAAAACTTTCATTGGACCACCTCATGGTATTCAGGTCGAAAGAGACAAACTGAACAAATATGGACGTCCTTTATTGGGATGTACAATCAAGCCAAAATTGGGCTTGTCCGCTAAGAATTATGGTAGAGCTGTCTATGAATGCCTTCGTGGTGGACTTGATTTCACAAAAGATGATGAGAACGTAAATTCCCAACCATTCATGCGTTGGAGGGATCGTTTCTTATTCGTGGCAGAAGCTCTTTTCAAATCCCAGGCTGAAACAGGCGAAATCAAGGGACATTACTTAAATGCCACCGCAGGTACATGTGAAGAGATGATGAAGAGAGCTGTTTTTGCTAGAGAATTGGGTGCACCAATTGTCATGCACGACTACCTGACCGGAGGGTTCACTGCAAATACCAGCTTAGCTTATTATTGCAGAGACAATGGGCTACTTCTTCATATTCACCGCGCGATGCATGCTGTCATTGATAGACAACGAAATCACGGTATGCATTTCCGCGTATTGGCTAAAGCATTACGCATGTCCGGCGGAGATCATATCCATGCCGGAACTGTGGTAGGCAAATTAGAGGGGGAGCGAGACGTCACCTTGGGTTTCGTTGATTTACTCCGCGACGATTACATCGAAAAAGATCGTAGCCGCGGTATCTATTTCACGCAAGATTGGGTGTCTATGCCGGGTGTACTCCCCGTAGCTTCGGGGGGTATCCACGTCTGGCATATGCC?GCCCTAACCGAAATCTTCGGGGACGACTCTGTCTTACAATTCGGTGGCGGAACCTTGGGACATCCCTGGGGGAATGCGCCCGGTGCCGTAGCTAATCGAGTCGCATTAGAAGCT   [1206]
+Monachosorum_henryi           TACACTCCCGGATATAAGACCAAAGACACTGATATCTTAGCAGCCTCTCGAATGACTCCACAACCCGGAGTGCCGGCTGAAGAGGCGGGAGCTGCGGTAGCTGCGGAATCCTCCACGGGTACATGGACCACTGTATGGACAGACGG?CTTACCAGCCTCGATCGCTACAGGGCCCGGTGCTACGATATCGAACCCGTCGCTGGAGAGGAAAACCAGTATATCGCGTATGTAGCTTATCCCTTGGATCTATTCGAAGAAGGTTCCGTCACCAATTCGTTCACTTCTATTGTAGGTAACGTTTTCGGATTCAAGGCCCTACGCGCTCTACGCCTAGAAGACCTTCGAATTCCTCCTGCTTATTCCAAAACTTTCCAAGGACCGCCTCATGGTATTCAGGTCGAAAGGGACAAATTGAACAAATATGGACGTCCCTTTTT?GGATGTACAATCAAGCCAAAATTGGGCTTGTCTGCCAAGAATTATGGTAGAGCCGTCTACGAATGCCTTCGCGCCGGACTTGATTTCACAAAAGATGATGAAAACGTAAATTCCCAACCATTCATGCGTTGGAGAGACCGCTTCTTATTCGTAGCAGAAGCTCTCTTCAAAGCCCAGGCTGAAACGGGCGAAATCAAAGGACATTACTTAAACGCTACTGCAGGTACGTGTGAAGAAATGATGAAGAGAGCTGTTTTTGCTAGAGAATTGGGTGCACCGATTGTCATGCATGACTACTTAACCGGAGGGTTCACCGCAAATACCAGCTTAGCTTTATATTGCAGAGACAATGGGCTGCTTCTTCATATTCACCGCGCAACGCATGCTGTCATCGATAGACAGCGGAATCACGGCATGCACTTTCGCGTATTGGCCAAAGCATTACGCATGTCCGGTGGGGATCATATCCACGCCGGAACTGTAGTAGGCAAACTAGAGGGAGAACGAGAAGTCACCTTGGGTTTCGTCGATTTGCTTCGCGATGACTATATCGAAAAAGATCGTAGCCGCGGCATCTACTTTACCCAAGATTGGGTGTCTATGCCGGGTGTCATCCCCGTAGCTTCGGGGGGTATCCACGTCTGGCACATGCCCGCCCTAACCGAGATCTTCGGGGACGATTCTGTCTTGCAGTTCGGTGGCGGAACCTTGGGACATCCTTGGGGAAACGCGCCCGGTGCCGTAGCTACCCGAGTCGCATTAGAAGCT   [1206]
+Pteridium_aquilinum           TACACCCCCGAATATAAGACCAAAGACACTGATATCTTAGCAGCCTTCCGAATGACCCCACAACCCGGAGTACCGGCTGAGGAAGCAGGAGCTGCGGTAGCTGCAGAATCCTCCACGGGTACATGGACCACTGTATGGACAGACGGGCTTACCAGTCTTGATCGCTACAAGGGCCGATGCTACGATATTGAACCCGTCGCTGGAGAAGAAAACCAGTATATCGCATATGTAGCTTATCCCTTGGATCTATTTGAAGAAGGTTCTGTAACCAATTTGTTCACTTCAATTGTAGGTAATGTTTTCGGATTTAAGGCCCTACGCGCTCTACGCCTAGAAGACCTTCGAATTCCTCCCGCTTATTCTAAAACTTTCATTGGACCGCCTCACGGTATTCAGGTCGAAAGAGACAAACTGAACAAATATGGACGTCCCTTATTGGGATGTACAAACAAGCCAAAATTGGGCTTGTCTGCTAAAAATTACGGTAGAGCCGTCTATGAATGCCTTCGTGGTGGACTTGATTTCACAAAAGATGATGAAAACGTAAATTGCCAACCATTCATGCGTTGGAGAAATCGCTTCTTATTCGTATCAGAAGCTCTTTTCAAAGCCCAGGCTGAAACCGGCGAAATCAAGGGACATTACTTAAATGCCACTGCTGGTACGTGTGAAGAAATGATGAAGAGAGCTGCTTTTGCATACGAATTGGGTGTACCAATCGTCATGCATGACTACCTGACCGGGGGATTTACTGCAAATACCAGCTTAGCTTTTTATTGCAGAGACCATGGGCTGCTTCTCCACATTCACCGTGCAATGCATGCTGTCATCGATAGACAACGAAATCACGGTATACAATTCCGTGTATTGGCCAAAGCATTACGCATGTCCGGTGGAGACCACATTCACGCCGGAACTGTAGTAGGCAAACTAGAGGGAGAACGAGAAGTCACCTTGGGTTTTGTCGATTTTCTTCGCGATGATTACATCGAGAAAGATCGTAGCCGTGGCATCTATTTCACGCAGGATTGGGTATCTATGCCGGGTGTACTCCCCGTAGCCTCAGGGGGTATCCACGTCTGGCACATGCCCGCTCTAACCGAAATCTTCGGGGACGATTCTGTCTTGCAGTTCGGTGGCGGAACTTTAGGACATCCATGGGGAAATGCGCCTGGTGCCGTAGCTAACCGAGTCGCATTAGAAGCT   [1206]
+Calochlaena_dubia             TACACTCCCGATTATGTAACCAAAGACACCGATATATTGGCGGCCTTTCGAATGACCCCGCAACCCGGAGTACCGCCCGAGGAAGCTGGAGCTGCAGTAGCTGCGGAATCTTCCACAGGTACATGGACCACTGTATGGACGGATGGACTTACTAGTCTCGATCGCTACAAAGGTCGATGCTATGATATCGAACCTGTTTCTGGAGAGGAGAATCAGTATATTGCATATGTAGCTTATCCTTTGGATCTATTTGAAGAAGGTTCCGTTACCAATATGTTCACTTCCATTGTAGGTAATGTTTTCGGATTCAAAGCCCTACGCGCTCTCCGCTTAGAAGATCTTCGAATTCCTCCTGCTTATTCTAAGACTTTCATTGGACCGCCCCACGGCATCCAGGTTGAAAGAGATAAGCTGAACAAATATGGGCGTCCCTTATTAGGATGTACAATCAAACCGAAATTGGGCTTATCTGCTAAGAATTATGGGAGAGCCGTTTATGAATGTCTCCGTGGTGGACTTGACTTCACCAAGGATGATGAGAACGTAAATTCACAACCATTCATGCGTTGGAGAGATCGTTTCTTATTCGTAGCAGAAGCTCTCTTCAAAGCTCAAGCCGAAACAGGCGAAATTAAGGGACATTACTTAAACGCTACTGCAGGTACTTGTGAAGAGATGTTGAAAAGAGCCGTTTTTGCTAGAGAATTGGGGGTACCCATAGTCATGCATGACTATTTGACCGGAGGTTTTACCGCAAATACGAGCTTGGCTTTTTATTGTCGAGACAATGGGCTGCTTCTTCACATTCACCGTGCGATGCATGCTGTCATCGATAGACAAAAAAATCACGGTATACATTTCCGTGTATTAGCCAAAGCTTTACGTATGTCCGGTGGAGATCATATTCACGCTGGGACTGTAGTAGGCAAACTAGAGGGAGAACGAGAAGTTACTTTGGGCTTTGTCGATTTGCTTCGCGATGATTACATCGAAAAAGACCGTAGCCGCGGCATCTATTTCACCCAAGATTGGGTATCTATGCCGGGCGTACTTCCTGTAGCTTCGGGGGGTATCCATGTCTGGCATATGCCTGCTCTAACCGAAATATTCGGAGACGATTCCGTCTTACAGTTCGGCGGCGGAACTTTGGGACATCCTTGGGGAAATGCGCCCGGTGCCGTAGCTAATCGAGTCGCGTCAGAGGCT   [1206]
+Dicksonia_antarctica          TACACTCCCGATTATGCGACCAAAGACACCGATATCTTGGCGGCCTTTCGAATGACCCCGCAACCCGGAGTACCGCCTGAGGGAGCTGGAGCTGCAGTAGCTGCGGAATCTTCCACAGGTACATGGACCACTGTATGGACGGATGGACTTACTAGTCTCGATCGCTACAAAGGTCGATGCTATGATATCGAACCTGTTTCTGGAGAGGATAATCAGTATATTGCATATGTAGCCTATCCTTTGGATCTATTTGAAGAAGGTTCCGTTACCAATTTGTTCACTTCCATTGTAGGTAATGTTTTTGGATTCAAAGCCCTACGCGCTCTCCGCTTAGAAGATCTTCGAATTCCTCCTGCTTATTCTAAGACTTTCATTGGACCGCCCCACGGTATCCAGGTTGAAAGGGATAAGCTGAACAAATATGGGCGTCCCTTATTAGGATGTACAATCAAACCAAAATTGGGCTTATCTGCTAAGAATTATGGCAGAGCTGTTTATGAATGTCTCCGTGGTGGACTTGACTTCACCAAGGATGATGAGAACGTAAATTCCCAACCATTCATGCGTTGGAGAGATCGCTTCTTATTCGTAGCAGAAGCTCTCTTCAAAGCTCAGGCTGAAACAGGCGAAATTAAGGGACATTACCTAAATGCTACTGCAGGTACTTGTGAAGAAATGATGAAAAGAGCCGTTTTTGCTAGAGAATTGGGGGCACCAATTGTAATGCATGACTATCTGACCGGAGGGTTTACCGCAAACACTAGCTTGGCTTTTTACTGTCGAGACAATGGGCTGCTTCTTCACATTCACCGTGCGATGCATGCTGTCATCGATAGACAGAGAAATCACGGTATACATTTTCGTGTATTAGCCAAAGCATTACGTATGTCCGGTGGAGATCATATTCACGCTGGGACTGTAGTAGGCAAACTAGAGGGAGAACGAGAAGTCACTTTGGGCTTTGTCGATTTGCTTCGCGACGATTATATTGAAAAAGACCGTAGCCGCGGCATCTATTTCACCCAAGATTGGGTATCGATGCCAGGCGTACTTCCCGTAGCTTCGGGGGGTATCCATGTCTGGCATATGCCTGCTCTAACCGAAATCTTCGGAGACGATTCCGTGTTACAGTTCGGCGGAGGAACCTTGGGACATCCTTGGGGAAATGCGCCCGGTGCTGTAGCTAATCGAGTCGCGTCAGAGGCG   [1206]
+Dipteris_conjugata            TATACTCCCGATTATGAGACCAAAGATACTGACATCTTGGCAGCCTTCCGGATGACTCCGCAACCCGGGTTACCGCCTGAGGAAGCTGGAGCTGCAGTAGCTGCAGAATCTTCCACAGGTACGTGGACCACTGTGTGGACGGATGGACTGACTAGTCTCGATCGTTACAAGGGTCGATGCTACGACATCGAACCTGTTGCTGGGGAAGAGAATCAATATATCGCATATGTAGCTTATCCTTTGGATCTATTTGAAGAGGGTTCCGTCACCAATATGTTCACTTCCATTGTAGGTAACGTATTTGGATTTAAAGCCCCACGAGCTCTACGTTTGGAGGATCTGAGAATTCCTCCTGCTTATTCCAAGACTTTCATTGGGCCGCCTCACGGTATCCAAGTCGAAAGGGATAAACTGAACAAATATGGTCGTCCCTTGCTGGGATGTACAATCAAGCCAAAATTGGGCTTATCTGCTAAAAACTATGGCAGGGCTGTTTACGAATGTCTCCGTGGCGGACTTGATTTTACGAAGGATGATGAGAACGTAAATTCTCAACCATTCATGCGTTGGAGGGACCGGTTCCTGTTTGTGGCAGAAGCTCTTTTCAAGGCTCAGGCCGAAACGGGCGAAATAAAAGGACATTATCTAAATGCCACTGCGGGTACGTGTGAGGAAATGATGAAAAGAGCAATCTTTGCTAGAGAATCGGGAGCACCCATCGTCATGCATGATTATTTGACGGGAGGCTTCACTGCAAATACTAGCTTGGCCTTTTATTGTCGAGATAATGGGCTACTGCTTCATATCCACCGCGCGATGCATGCTGTTATCGATAGACAGAGAAATCACGGTATCCATTTTCGTGTCCTAGCCAAAGCATTGCGTATGAGCGGCGGGGATCATATCCACGTCGGGACCGTAGTGGGTAAACTGGAGGGAGAACGAGACGTCACACTGGGTTTCGTCGATTTGCTACGCGACGATTATATCGAGAAAGACCGAAGCCGTGGTATATATTTCACTCAGGATTGGGTATCCATGCCAGGTGTATTTCCCGTAGCCTCGGGAGGTATCCATGTCTGGCATATGCCCGCTCTAACTGAAATCCTCGGAGATGATTCTGTCTCACAGTTCGGCGGAGGAACCTTGGGACACCCCTGGGGAAACGCACCAGGCGCCGTAGCTAATCGAGTTGCATCGGAGGCT   [1206]
+Davallia_mariesii             TATACACCTGAATACAAGACCAAAGATACCGATATCTTAGCAGCATTTCGAATGACCCCACAACCTGGAGTACCAGCTGAGGAAGCTGGAGCTGCGGTAGCTGCAGAATCCTCCACAGGTACGTGGACCACTGTATGGACAGATGGGTTGACCAGCCTTGACCGTTACAAGGGCCGATGCTACGACATCGAACCCGTCGCTGGAGAAGAAAACCAGTATATCGCGTATGTAGCTTATCCTTTGGATCTATTTGAAGAAGGTTCTGTGACCAATTTATTCACCTCCATAGTAGGTAATGTCTTTGGATTTAAGGCTCTACGCGCTCTACGCTTGGAAGACCTTCGAATTCCTCCCGCTTATTCTAAAACTTTCCAGGGACCGCCTCATGGTATTCAGGTTGAAAGGGATAAACTGAACAAGTATGGACGCCCTTTATTGGGATGTACAATCAAGCCAAAATTGGGCCTGTCCGCTAAAAATTATGGTAGAGCCGTTTACGAATGCCTTCGTGGTGGACTTGATTTCACAAAAGATGATGAAAATGTGAATTCGCAGCCATTCATGCGTTGGAGAGATCGCTTCCTATTCGTGGCGGAAGCTCCTTTCAAATCCCAGGCTGAAACAGGGGAAATCAAAGGCCATTACTTAAATGCTACTGCAGGTACATCTGAAGAGATGTTGAAAAGAGCTGTTTTTGCTAGAGAGTTGGGTGCACCAATTGTCATGCATGACTATCTGACCGGAGGTTTTACCGCAAATACCAGCTTAGCTTTCTATTGCAGAGATAATGGACTGCTTCTTCATATTCACCGCGCGATGCATGCTGTAATCGATAGGCAGCGAAATCATGGTATGCATTTCCGTGTATTGGCCAAAGCGTTACGCATGTCCGGCGGGGATCATATACACGCTGGAACTGTAGTAGGCAAACTAGAAGGGGAGCGAGAAGTCACCCTTGGTTTCGTCGATTTACTTCGCGACGATTACATTGAAAAAGATCGTAGCCGTGGTATCTATTTCACGCAAGATTGGGTATCTATGCCAGGTGTACTTCCCGTAGCTTCGGGGGGTATCCACGTTTGGCACATGCCTGCTCTAACCGAAATCTTTGGGGACGATTCCGTATTACAGTTTGGCGGAGGAACCTTAGGACATCCTTGGGGAAATGCGCCAGGTGCGGTAGCTAACCGAGTTGCATTAGAAGCT   [1206]
+Elaphoglossum_hybridum        TACACCCCTGAGTACAAGACCTTAGATACCGATATATTAGCAGCGTTCAGAATGACCCCACAACCCGGAGTACCAGCTGAGGAAGCTGGAGCTGCGGTAGCTGCAGAATCCTCTACGGGTACGTGGACCACCGTATGGACAGATGGGTTGACTAGTCTTGATCGTTACAAGGGCCGATGCTACGATATCGAACCCGTTGCTGGAGAAGAAAACCAGTATATTGCATATGTAGCTTATCCTTTGGATCTCTTCGAAGAAGGTTCTGTCACCAATTTGTTCACTTCCATTGTAGGTAATGTTTTCGGATTTAAAGCCCTACGCGCTTTACGCTTAGAAGACCTTCGAATTCCTCCCGCTTATTCTAAAACCTTTATGGGACCGCCTCATGGTATTCAGGTCGAAAGGGATAAATTGAACAAATATGGACGTCCCTTATTAGGATGTACAATCAAGCCAAAGTTAGGTCTGTCTGCTAAAAATTATGGTAGAGCTGTCTACGAATGTCTCCGTGGTGGACTCGATTTCACAAAAGATGATGAAAATGTGAATTCTCAGCCATTCATGCGTTGGAGAGATCGCTTCCTATTTGTGGCGGAAGCTCTTTTCAAATCTCAGGCTGAAACAGGCGAAATCAAGGGACACTACTTAAATGCTACCGCAGGTACGTGTGAAGAGATGATGAAGAGAGCTGTTTTTGCTAGAGAATTAGGTGCACCAATTGTCATGCATGACTACTTGACCGGAGGGTTTACCGCAAATACCAGCTTAGCTCATTATTGTAGAGACAATGGGTTGCTTCTTCATATTCACCGCGCTATGCATGCTGTGATTGATAGACAACGAAATCACGGTATGCATTTTCGTGTATTGGCCAAAGCATTACGGATGTCCGGTGGAGATCATGTACACGCCGGAACCGTAGTGGGTAAACTAGAGGGGGAACGAGAAGTAACCCTGGGTTTCGTTGATTTACTTCGCGACGATTATATTGATAAAGATCGTAGTCGTGGTGTGTACTTCACACAAGATTGGGTGTCTATGCCGGGTGTAATCCCTGTAGCTTCGGGGGGTATACACGTCTGGCATATGCCTGCTCTAACCGAAATTTTTGGGGACGATTCCGTATTACAGTTTGGTGGAGGAACCTTGGGACATCCTTGGGGAAATGCACCCGGTGCGGTCGCTAACCGAGTTGCATTAGAAGCT   [1206]
+Nephrolepis_cordifolia        TACACCCCCGACTACCAAACCAAAGATACCGATATCTTAGCAGCATTCCGAATGACCCCACAACCCGGCGTACCGGCTGAGGAAGCCGGAGCTGCGGTAGCTGCAGAGTCATCCACGGGTACGTGGACCACTGTATGGACAGATGGATTGACCAGTCTTGATCGTTACAAGGGCCGATGCTACGACATCGAACCCGTCGCTGGAGAAGAAAACCAGTATATCGCTTATGTAGCTTATCCTTTGGATCTATTTGAAGAAGGTTCTGTCACCAATCTGTTCACCTCCATTGTAGGTAATGTTTTTGGGTTTAAGGCTCTACGCGCTCTACGCTTAGAAGACCTTCGAATTCCTCCTGCTTATTCTAAAACTTTCATTGGACCGCCTCATGGTATTCAGGTCGAAAGAGATAAACTGAATAAATATGGACGTCCTTTATTGGGATGTACAATCAAGCCCAAATTAGGCTTGTCTGCTAAAAATTATGGTCGAGCCGTCTACGAATGCCTTCGTGGGGGACTTGATTTCACAAAAGATGATGAAAATGTTAATTCCCAGCCATTCATGCGTTGGAGAGATCGATCCTTATTTGATGCAGAAGCTCTTTTTAAATCTCAGGCTGAAACAGGGGAAATCAAGGGGCATTACTTAAATGCTACTGCAGGTACATGTGAAGAAATGTTGAAAAGAGCTGTTTTCGCTAGAGAATTGGGTGCACCAATTGTCATGCATGACTACCTGACCGGAGGGTTTACCGCAAATACCAGCTTAGCTTTTTATTGTAGAGATAATTGGCTGCTTCTTCATATTCACCGTGCGATGCATGCTGTAATCGATAGACAACGAAATCACGGTATGCATTTCCGTGTATTGCCAAAAGCATTACGCATGTCCGGCGGAGATCATATACACGCCGGAACTGTAGTAGGCAAACTAGAAGGGGAACGAGAAGTCACTCTTGGTTTCGTCGATTTACTTCGCGACGATTACATCGAAAAAGATCGTAGCCGTGGTATCTATTTCACCCAAGATTGGGTATCTATGCCAGGTGTACTCCCCGTAGCTTCGGGGGGTATCCACGTATGGCACATGCCTGCTCTAACCGAAATCTTTGGGGACGATTCTGTATTACAGTTCGGTGGAGGAACCTTAGGACATCCTTGGGGAAATGCACCTGGTGCGGTAGCCAACCGAGTCGCATTAGAAGCT   [1206]
+Onoclea_sensibilis            TACACCCCCGAATACAAGACCAAAGATACCGACATCTTAGCAGCCTTTCGAATGACCCCACAACCCGGGGTACCGGCTGAGGAAGCCGGAGCTGCGGTAGCTGCGGAATCCTCCACGGGTACGTGGACCACTGTATGGACAGATGGGTTGACCAGCCTTGACCGTTACAAGGGCCGATGCTACGACATTGAACCCGTCGTTGGAGAAGAAAACCAGTATATCGCGTATGTAGCTTATCCCTTGGATCTATTCGAAGAAGGTTCCGTCACCAATTTGTTCACCTCCATTGTAGGTAATGTTTTCGGATTTAAGGCTCTACGCGCCCTACGCCTGGAAGACCTTCGAATCCCTCCTGCTTATTCCAAAACTTTCATTGGACCGCCTCATGGTATTCAGGTCGAAAGGGATAAACTGAACAAATACGGACGTCCCTTATTGGGATGTACAATCAAACCAAAATTAGGTCTGTCTGCTAAAAATTACGGTAGAGCCGTCTACGAATGCCTCCGTGGTGGACTTGATTTTACAAAAGATGATGAAAACGTAAATTCCCAGCCATTCATGCGTTGGAGAGATCGCTTCTTATTTGTAGCAGAAGCTCTTTTCAAATCCCAGGCTGAAACGGGCGAAATCAAGGGGCATTACCTAAATGCTACTGCAGGTACGTGTGAGGAAATGTTGAAGAGAGCTGTCTTTGCTAGAGAGTTGGGTGTACCGATAGTCATGCATGACTACCTGACCGGAGGGTTTACCGCAAATACCAGCTTAGCTTTTTATTGCCGAGACAATGGACTGCTTCTTCATATCCACCGTGCGATGCATGCTGTTATCGATAGACAACGAAATCACGGTATGCATTTTCGTGTATTGGCCAAAGCGTTGCGCATGTCTGGCGGAGACCATATACACGCCGGAACTGTAGTAGGCAAACTAGAAGGGGAACGGGAAGTGACTTTGGGTTTCGTCGATTTACTTCGCGACGATTATATTGAAAAAGATCGTAGCCGTGGTATCTATTTCACCCAAGATTGGGTATCTATGCCGGGTGTACTCCCCGTAGCTTCAGGGGGTATCCACGTCTGGCACATGCCCGCCCTAACTGAAATCTTTGGGGATGACTCTGTCTTACAGTTCGGTGGAGGAACCTTGGGACATCCTTGGGGAAATGCACCCGGTGCAGTAGCCAACCGAGTCGCGTTAGAAGCT   [1206]
+Rumohra_adiantiformis         TACACCCCCGAGTACCAAGACAAAGATACCGATATATTAGCAGCCTTCAGAATGACCCCACAACCCGGAGTACCGCCTGAGGAAGCCGGAGCTGCGGTGGCTGCAGAATCCTCCACGGGTACGTGGACCACTGTATGGACAGATGGGTTGACCAATCTTGACCGTTACAAGGGCCGATGCTACGACATCGAACCCGTCGCTGGAGAAGAAAATCAGTATATCGCGTACGTAGCTTATCCTTTGGATCTATTCGAAGAAGGTTCCGTCAACAATCTGTTCACCTCCATTGTAGGTAATGTTTTTGGATTTAAAGCTCTACGCGCTTTACGCTTGGAAGACCTTCGAATTCCTCCCGCTTATTCTAAAACTTTCATTGGACCGCCTCACGGTATTCAGGTCGAAAGGGATAAACTGAACAAATATGGACGTCCCTTATTGGGATGTACAATCAAGCCAAAATTAGGTCTGTCTGCTTTAAATTATGGTAGAGCCGTCTACGAATGCCTTCGCGGTGGACTTGATTTCACAAAAGATGATGAGAATGTGAATTCCCAGCCATTCATGCGTTGGAGAGATCGCTTCCTATTCGTAGCAGAGGCTCTTTTCAAATCCCAGGCTGAAACAGGCGAAATCAAGGGGCATTACTTAAATGCTACTGCAGGTACGTGTGAAGAAATGCTCAAGAGAGCTGTTTTCGCTAGAGAATTGGGTGCACCAATTGTCATGCATGACTACCTGACCGGAGGGTTTACTGCAAATACCACCTTAGCTTTTTATTGTAGAGACAATGGGCTGCTTCTCCATATTCACCGTGCGATGCATGCTGTGATTGATAGACAACGAAATCACGGTATACATTTTCGTGTATTGGCCAAAGCATTACGCATGTCCGGTGGAGATCATATACACGCCGGAACTGTAGTAGGCAAACTAGAGGGGGAGCGAGAAGTAACCCTAGGTTTCGTCGATTTGCTTCGCGATGATTACATTGAAAAAGATCGTAGCCGTGGTATCTATTTCACACAAGATTGGGTCTCTATGCCGGGTGTATTCCCCGTAGCTTCGGGTGGTATCCATGTCTGGCACATGCCTGCTCTAACCGAAATTTTCGGGGATGATTCCATATTACAGTTCGGTGGAGGAACCTTGGGACATCCTTGGGGAAATGCACCTGGTGCGGTAGCCAACCGAGTCGCATTAGAAGCT   [1206]
+Diplopterygium_glaucum        TATACTCCCGATTATGATACGAAAGATACTGATATCTTGGCAGCATTCCGAATGACTCCGCAACCTGGAGTACCGCCTGAGGAAGCTGGAGCTGCGGGAGCTGCGGAATCTTCCACAGGGACATGGACCACTGTATGGACTGATGGACTTACTAGTCTTGATCGTTATAAGGGTCGCTGTCATGATATCGAACCCGTCGCTGGAGAAGTAAATCAATATATTGCGTATGTAGCCTACCCCTTGGATTTATTCGAAGAAGGGTCCGTTACTAATATGTTCACCTCCATCGTAGGTAATGTTTTCGGATTCAAAGCCTTACGCGCTCTACGTTTGGAAGATCTGAGAATTCCTCCCGCTTATTCTAAGACTTTCATCGGCCCACCTCACGGTATCCAGGTCGAAAGAGATAAACTAAACAAATATGGTCGTCCTTTATTGGGATGTACAATCAAGCCAAAATTGGGCTTATCTGCGAAGAATTACGGCAGGGCTGTTTATGAATGTCTCCGCGGTGGACTTGATTTTACCAAGGATGACGAGAACGTAAATTCTCAGCCATTCATGCGTTGGAGAGATCGTTTCTTGTTTGTAGCAGAAGCTCTTTTCAAAGCTCAGGCTGAGACGGGCGAGATCAAGGGACATTACCTAAATGCTACTGCAGGTACGTGTGAGGAAATGTTGAAAAGAGCAATCTTTGCCAGAGAATTGGGAGCACCCATTGTCATGCACGACTATCTGACAGGAGGCTTTACCGCAAATACCAGCCTGGCTTTTTATTGTCGGGATAATGGACTACTGCTTCATATTCACCGTGCAATGCATGCTGTTATTGATAGACAGAGAAATCACGGTATACATTTTCGCGTATTGGCCAAAGCATTGCGTATGTCCGGTGGAGATCATATCCACGCCGGGACTGTAGTGGGTAAACTTGAGGGAGAACGAGAAGTTACCCTAGGTTTTGTCGATCTACTTCGTGATGATTATATTGAGAAAGACAGAAGTCGCGGGATCTATTTCACTCAAGATTGGGTATCTATGCCGGGTGTATTGCCTGTAGCTTCGGGGGGTATCCATGTCTGGCATATGCCCGCCCTAACTGAAATATTCGGCGATGATTCCGTCCTACAGTTCGGTGGGGGAACCTTGGGACATCCCTGGGGAAATGCACCAGGTGCTGTGGCTAATCGAGTCGCTCTAGAAGCT   [1206]
+Stromapteris_moniliformis     TATACTCCCGATTATGAGACCAAAGATACTGATATCTTGGCAGCATTCCGAATGACTCCGCAACCTGGAGTACCGCCTGAGGAAGCTGGAGCTGCAGTAGCTGCGGAATCTTCCACAGGTACATGGACCACTGTATGGACGGATGGACTTACTAGTCTTGATCGTTATAAGGGTCGGTGTCATGATATCGAACCTGTCGCTGGGGAGGAAAATCAATATATTGTGTATGTAGCTTACCCCCTGGATTTATTCGAAGAGGGTTCTGTTACTAATATGTTTACCTCCATCGTAGGCAACGTTTTCGGATTCAAAGCCTTACGCGCTCCACGTCTGGAAGATCTGAGAATTCCTCCCGCCTATTCTAAGACTTTCATCGGCCCGCCTCACGGTATCCAGGTCGAGAGAGATAAGCTAAACAAATATGGTCGTCCCCTGCTGGGATGTACAATCAAGCCGAAATTGGGCTTATCTGCCAAGAATTACGGTAGGGCTGTTTACGAATGTCTCCGTGGTGGACTTGATTTTACCAAGGATGACGAGAACGTAAATTCCCAGCCATTCATGCGTTGGAGGGATCGTTTCTTGTTTGTAGCAGAAGCTCTTTTCAAAGCTCAAGCTGAGACGGGCGAGTTCAAGGGACATTACCTAAACGCTACTGCAGGTACGTGTGAGGAAATGTTGAAAAGAGCAATCTTCGCCAGAGAATTGGGAGTACCCATCGTTATGCACGATTATTTGACAGGAGGCTTCACCGCAAATACCAGCCTGGCCTTCTACTGCCGGGATAATGGACTACTGCTTCATATTCACCGTGCGATGCATGCTGTTATTGATAGACAGAGAAATCACGGTATACATCTCCGCGTATTGGCCAAAGCATTACGCATGTCCGGTGGAGATCATATACACTCCGGGACCGTAGTAGGTAAACTTGAGGGAGAACGAGAAGTTACCTTAGGTTTCGTCGATTTGCTTCGTGATGATTATATTGAGAAAGATAGAAGTCGCGGTATCTATTTCACCCAAGATTGGGTATCTATGCCGGGTGTATTGCCCGTAGCTTCGGGAGGTATCCATGTCTGGCATATGCCCGCTCTAACTGAAATATTCGGGGATGACTCCGTCTTACAGTTCGGTGGGGGAACCTTGGGCCATCCCTGGGGAAATGCACCAGGTGCTGTGGCTAATCGAGTCGCCTTAGAGGCT   [1206]
+Micropolypodium_okuboi        TACACCCCCGAATACAAAACTAAAGATACCGACATCTTAGCAGCATTTCGAATGACCCCACAACCTGGAGTACCGGCTGAAGAAGCTGGAGCTGCGGTAGCTGCAGAATCCTCCACAGGTACGTGGACAACTGTATGGACAGATGGGTTGACTAGTCTTGACCGTTATAAGGGTCGATGCTACGACATTGAACCCGTCGCTGGAGAAGACAACCAGTATATCGCATATGTAGCTTATCCTTTGGATCTATTCGAAGAAGGTTCTGTTACTAATCTGTTTACCTCCATAGTTGGTAATGTATTTGGATTTAAGGCTCTACGTGCTATACGCTTGGAAGACCTTCGAATTCCTCCCGCTTATTCTAAAACTTTCATTGGACCGCCCCATGGTATTCAGGTTGAAAGAGATAAATTGAACAAATATGGACGTCCTTTATTAGGATGTACAATCAAGCCAAAATTGGGTCTGTCTGCTAAAAATTATGGTAGAGCCGTCTACGAATGTCTTCGTGGTGGACTTGATTTCACAAAAGATGATGAAAATTTGAATTCCCAGCCATTCATGCGTTGGAGAGATCGTTTCTTATTTTGTGCAGAAGCTCTTTTCAAATCCCAAGCTGAAACAGGGGAAATCAAAGGGCATTACTTAAACGCTACTGCAGGTACATGTGAAGAGATGTTCAAAAGAGCTGCTTTTGCTAGGGAATTGGGTGTACCAATTGTCATGCATGATTATCTAACCGGAGGGTTTACTGCAAATACCAGCTTAGCCTATTATTGCAGAGATAATGGACTGCTTCTTCATATTCACCGCGCAATGCATGCTGTTATCGATAGACAACGAAATCACGGTATGCATTTCCGTGTGCTGGCCAAAGCATTACGATTGCCCGGCGGAGATCATGTACATGCTGGAACTGTAGTAGGTCAATTAGAAGGAGAACGGGAAGTTACTCTCGGTTTCGTTGATTTGCTCCGTGACGATTTAATTGTAAAAGATCGGAGCCGTGGTGTTTATTTCACCCAAGATTGGGTATCTATGCCGGGTGTATTACCCGTAGCTTCAGGAGGTATCCATGTCTGGCACATGCCCGCTCTAACCGAGATCTTTGGGGATGATTCCGTATTACAGTTTGGCGGAGGAACCTTAGGTCATCCTTGGGGAAATGCGCCAGGTGCGGTAGCCAACCGAGTCGCATTGGAAGCT   [1206]
+Cephalomanes_thysanostomum    TATACTCCTGATTATCAAACCGCAGACACTGATATCTTGGCAGCGTTCCGAATGACTCCGCAACCTGGAGTACCACCAGAGGAAGCTGGAGCTGCAGTAGCTGCGGAATCTTCCACAGGTACATGGACCACAGTATGGACAGATGGGCTTACTAGCCTTGATCGTTATAAGGGTCGATGCTACGATATCGAACCTGTTCCTGGAAGCGATAATCAATATATTGCATATGTAGCTTATCCTTTAGATCTCTTTGAAGAAGGATCTGTTACGAATCTATTCACTTCGATTGTAGGTAACGTTTTTGGATTTAAAGCCTTACGTGCCCTACGGTTGGAAGATATAAGGGTTCCACCTGCTTATTCTAAAACATTCTCAGGACCACCTCATGGTATCCAAGTTGAAAGAGATAAACTGAACAAGTATGGTCGTCCTTTTTTAGGATGTACAATCAAACCAAAATTGGGTTTATCGGCTAAGAATTATGGTAGAGCTGTTTATGAATGTCTCCGTGGGGGGCTCGATTTTACTAAGGATGATGAGAACCGTAACTCTCAACCATTCATGCGTTGGCGGGATCGTTCCCTGTTTGTAGCAGAAGCTCTCTTTAAAGCTCAATCGGAAACAGGTGAAATCAAAGGGCATTATCTAAATGCTACTGCAGGTACGTGTGACGAGATGTTAAAGAGAGCATACTGTGCAAGAGAATTGGGAGTCCCTATTATTATGCATGATTACCTTACAGGAGGTTTTACTGCAAATACTACCCTAGCTTTGTACTGCCGAGATAATGGTCTACTCCTTCATATTCACCGCGCAATGCATGCTGTTATTGATAGACAGAAAAACCATGGTATGCACTTCCGTGTATTGGCCAAAGCCTTACGTATGTCTGGTGGAGATCATGTCCATGCTGGGACTGTAGTGGGTAAACTCGAAGGAGAACGAGAAATCACTCTAGGCTTCGTTGATTTGCTTCGTGACGATTATGTCGAGAAAGATCGAAGCCGTGGTATCTTTTTCACTCAATTTTGGGCATCTATGCCTGGTGTATTGCCTGTAGCGTCAGGAGGTATTCATGTTTGGCATATGCCTGCTCTGACTGAAATATTTGGAGATGATTCTGTCTTACAGTTCGGTGGTGGAACCTTAGGGCATCCTTGGGGAAATGCACCGGGTGCCGTGGCTAATAGAGTTGCATCGGAAGCC   [1206]
+Lygodium_japonicum            TACACTCCCGAATATGAAACAAAAGATACTGATATCTTAGCAGCTTTTCGAATGACCCCACAACCCGGAGTACCTCCCGAAGAAGCTGGAGCTGCAGTAGCTGCAGAATCTTCTACAGGTACGTGGACCACAGTCTGGACTGATGGGCTCACCAGTCTTGATCGTTACAAAGGTCGATGCTACGATATTGAACCCGTTGCTGGGGAGGAAAATCAATACATAGCCTATGTAGCTTATCCTTTGGATTTGTTTGAAGAAGGTTCCGTTACTAATATGTTCACCTCCATTGTAGGTAATGTATTCGGATTCAAAGCCTTACGGGCCTTACGCTTAGAAGATCTGAGAATCCCTCCTGCTTATTCAAAAACCTTCATGGGTCCTCCTCATGGTATCCAAGTCGAAAGGGACAAATTGAACAAATATGGTCGCCCCTTATTAGGATGTACGATTAAGCCCAAGTTGGGACTATCTGCCAAAAATTATGGTAGAGCTGTCTATGAATGCCTCCGTGGCGGACTGGATTTCACCAAGGATGATGAAAACGTTAATTCCCAACCGTTTATGCGTTGGAGGGATCGTTTCTTGTTCGTAGCAGAAGCTCTTTTCAAGTCTCAGGCTGAAACTGGCGAAATCAAGGGGCATTACTTAAACGCCACTGCGGGAACTTGCGAGGAAATGATGAAAAGAGCAGTCTTCGCTAGGGAACTAGGGGCGCCCATTGTCATGCACGACTATCTGACTGGAGGATTCACCGCAAATACTAGTTTGGCTTTTTACTGTAGAGATAATGGATTGCTTTTACATATTCACCGTGCAATGCATGCCGTTATCGACAGACAAAAAAACCACGGTATGCATTTCCGCGTATTGGCTAAAGGTCTACGCATGTCTGGTGGGGACCACATCCATGCAGGAACCGTAGTCGGAAAACTCGAAGGAGAACGAGAAGTCACTTTGGGGTTTGTCGATTTACTTCGTGACGATTATATCGAGAAAGACCGGAGTCGTGGTATCTACTTCACCCAGGATTGGGTATCCATGCCAGGCGTGATACCCGTAGCCTCCGGGGGTATACATGTTTGGCACATGCCCGCACTAACAGAAATCTTCGGGGACGATTCTGTCCTACAGTTTGGTGGAGGAACTTTGGGGCATCCTTGGGGAAACGCACCGGGCGCTGTTGCTAATCGAGTTGCTCTAGAAGCT   [1206]
+Angiopteris_evecta            TACACTCCTGAGTATGATACTAAGGATACTGATATCCTGGCAGCATTCCGAATGACTCCTCAACCTGGAGTACCGCCTGAAGAAGCGGGAGCTGCAGTAGCTGCCGAATCTTCTACCGGTACTTGGACTACTGTATGGACAGATGGGCTTACTAGCCTTGATCGTTACAAAGGTCGATGCTATGATATCGAACCTGTTGCTGGCGAAGAAAATCAATATATTGCTTATGTAGCTTATCCTTTGGATCTATTCGAAGAAGGTTCTGTCACCAATATGTTTACCTCTATCGTAGGTAACGTATTCGGATTCAAAGCTTTACGAGCTTTGCGATTAGAGGACTTAAGAATTCCTCCTGCTTATTCGAAAACTTTCCAAGGTCCGCCTCACGGTATCCAAGCTGAAAGAGATAAATTAAACAAGTATGGTCGTCCACTACTAGGATGTACTATCAAACCAAAATTAGGTTTATCTGCTAAAAACTATGGTAGAGCTGTTTATGAATGTCTTCGTGGTGGACTTGATTTTACGAAAGATGATGAGAACGTCAATTCTCAACCATTTATGCGTTGGAGAGATCGTTTCTTATTCGTAGCAGAAGCTCTTTTTAAGTCTCAAGCTGAGACAGGCGAAGTAAAAGGGCACTACTTAAATGCTACTGCAGGTACGTGTGAAGAAATGATGAAAAGAGCAATCTTTGCTAGAGAATTGGGCGCACCCATTGTCATGCACGACTATCTGACAGGAGGATTTACTGCAAATACTTCATTGGCTCATTATTGTAGAGATAATGGTCTTCTTCTTCATATTCACCGTGCAATGCATGCTGTTATTGACAGACAACGAAATCACGGTATGCATTTCCGTGTATTAGCTAAAGCTTTGCGTATGTCCGGTGGAGATCATGTTCACGCCGGTACGGTAGTGGGTAAACTTGAGGGAGAACGTGAAGTAACTTTAGGCTTCGTTGATTCACTTCGTGATGACTATATCGAAAAAGATCGAAGTCGTGGTATCTATTTCACTCAGGATTGGGTATCTATGCCGGGTGTATTCCCCGTAGCTTCAGGTGGTATTCATGTCTGGCATATGCCTGCTCTAACTGAGATTTTCGGAGATGATTCTGTATTACAATTTGGTGGAGGAACTCTAGGACACCCTTGGGGGAATGCACCTGGTGCAGTAGCTAATCGAGTTGCTTCAGAGGCT   [1206]
+Marsilea_quadrifolia          TACACTCCCGAATATCAGACCTCACCCCATGATATCTTGGCAGCCTTTAGAATGACCCCGCAACCCGGAGTACCACCTGAGGAAGCTGGAGCTGCAGTAGCTGCAGAATCTTCTACAGGTACATGGACTACCGTATGGACGGACGGACTTACCAGTCTTGACCGTTACAAAGGTCGTTGCTACGATATCGAACCCGTTCCCGGAGAGGAAAACCAATACATTGCATATGTAGCTTACCCCTTAGATTTATTTGAAGAGGGTTCTGTTACCAACATGTTCACCTCTATTGTAGGTAACGTATTTGGATTCAAGGCTCTACGTGCTCTTCGACTAGAAGATCTTCGAATCCCTCCTGCTTATTCCAAAACTTTCATTGGACCCCCTCACGGTATCCAGGTTGAAAGAGATAAACTGAACAAATACGGACGTCCTTTATTAGGATGTACCATCAAGCCAAAACTAGGCTTATCTGCTAAAAACTACGGTAGAGCTGTTTACGAATGTCTTCGTGGTGGACTTGACTTCACCAAGGATGATGAGAACGTAAACTCCCAACCATTCATGCGTTGGAGAGACCGTTTCTTATTCGTAGCAGAAGCTCTTTTCAAGTCTCAAGCTGAAACCGGCGAAATCAAGGGACACTACTTAAACGCTACTGCGGGTACTTGTGAAGAGATGCTGAAAAGAGCTGTTTTCGCAAGAGAGCTGGGAGCGCCTATTGTTATGCACGACTACCTGACCGGAGGGTTTACTGCAAATACTAGCTTAGCTTTCTACTGTCGAGACAACGGGTTGCTTCTTCACATTCACCGTGCAATGCATGCTGTTATCGATAGACAGAAAAACCACGGTATCCACTTCCGTGTATTAGCTAAAGCATTACGTATGTCTGGTGGGGACCACATCCACTCTGGAACCGTAGTAGGTAAACTAGAAGGTGAACGAGAAGTAACTTTGGGCTTCGTCGATTTGCTTCGCGACGATTACATTGAAAAAGATCGTAGCCGTGGTATCTACTTCACCCAAGATTGGGTATCTATGCCAGGGGTACTGCCCGTAGCTTCTGGAGGTATCCACGTATGGCACATGCCTGCTCTAACCGAAATCTTCGGAGACGATTCCGTCTTACAGTTCGGTGGAGGAACTCTGGGCCACCCTTGGGGAAATGCACCTGGAGCTGTAGCTAACAGAGTTGCGTTAGAGGCT   [1206]
+Matonia_pectinata             TATACCCCCAACTATCAAGTCAAAGATACAGATATCTTGGCAGCCTTCCGAATGACTCCGCAACCTGGGGTACCGCCTGAGGAAGCTGGAGCTGCAGTAGCTGCGGAATCTTCCACAGGTACCTGGACCACTGTATGGACAGATGGATTAACTAGTCTCGATCGTTACAAGGGTCGATGTTACGACATTGAGCCTGTTGCTGGGGAAGAAAATCAATATATTGCATATGTAGCTTATCCTTTAGATCTATTTGAAGAAGGTTCTGTTACTAATATGTTCACTTCCATCGTAGGTAACGTATTTGGATTCAAAGCCTTACGCGCCCTACGTTTAGAAGATCTGAGAATTCCTCCTGCTTATTCTAAGACTTTCATGGGGCCTCCCCACGGTATCCAAGTCGAAAGGGATAAATTGAACAAATACGGCCGTCCTCTACTGGGATGTACAATCAAACCGAAACTAGGTTTATCTGCCAAAAACTACGGTAGGGCAGTTTACGAATGTTTACGCGGTGGACTTGATTTTACGAAGGATGATGAAAACGTAAATCCCCAACCAATCATTCGTTGGAGAGATCGTTTCTTATTCGTAGCAGAAGCTCTTTTTAAATCCCAAGCGGAGACAGGGGAGATAAAGGGACATTATCTAAACGCTACCGCAGGTACATCTGAGGAAATGTTGAAAAGAGCCGTCTTCGCTAGGGAATTGGGAGTACCCATTGTCATGCATGAATATTTGACGGGAGGCTTCACTGCAAATACTAGTTTGGCCTTCTATTGCCGAGATAATGGTTTACTGCTTCATATTCACCGTGCAATGCATGCTGTTATCGATAGACAGAGAAATCATGGTATCCATTTCCGCGTATTGGCCAAAGCATTACGGACGTCCGGCGGGGATCACATACACGCCGGGACTGTAGTAGGTAAACTGGAGGGAGAACGAGAAGTCACGTTGGGTTTCGTCGATCTGCTTCGTGATGATTATATCGAAAAAGACCGAAGTCGTGGTATCTACTTCACCCAAGATTGGGTATCCATGCCAGGTGTACTGCCCGTAGCTTCGGGGGGCATTCATGTTTGGCACATGCCTGCTCTAACTGAAATCTTCGGAGACGATTCCGTCTTACAATTCGGTGGAGGAACCTTGGGACATCCCTGGGGAAATGCACCAGGTGCTGTAGCTAATCGAGTTGCCTTAGAGGCT   [1206]
+Metaxya_rostrata              TACACTCCCGATTACGTAACCAAAGACACCGATATCTTGGCGGCCTTTCGGATGACCCCGCAACCCGGAGTACCGGCTGAGGAAGCCGGAGCCGCGGTAGCAGCGGAATCCTCCACGGGTACATGGACCACTGTATGGACGGATGGGCTTACCAGTCTCGATCGCTACAAAGGTCGATGCTATGATATTGAACCCGTTGCCGGAGAAGATAATCAGTATATTGCATATGTAGCTTATCCTTTGGATCTATTTGAAGAAGGTTCGGTTACCAATATGTTCACTTCCATTGTAGGTAATGTTTTTGGATTCAAAGGCCTACGTGCTCTCCGCTTAGAAGATCTCCGAATTCCTCCTGCTTATTCTAAGACTTTTATTGGACCGCCTCACGGTATCCAAGTTGAAAGAGATAAGCTGAACAAATATGGGCGTCCCTTCTTAGGATGTACGATTAAGCCAAAATTGGGTTTATCCGCTAAGAACTATGGGAGAGCCGTTTATGAATGTCTCCGTGGTGGACTTGACTTCACCAAGGATGATGAGAACGTAAATTCCCAACCATTCATGCGATGGAGAGATCGCTTCTTATTTGTAGCGGAAGCTCTCTTCAAAGCTCAGGCTGAAACGGGCGAAATTAAGGGGCATTACTTAAATGCTACTGCAGGTACATGTGAAGAAATGTTGAAAAGAGCCGTTTTTGCTAGAGAATTGGGGGGCACAATTGTAATGCATGACTATCTAACCGAGGGTTTTACTGCAAATACTAGTTTGGCTTTTTACTGTCGAGACAATGGACTGCTTCTTCACATTCACCGTGCAATGCATGCTGTCATCGATAGACAGAGAAATCACGGTATACATTTTCGTGTATTAGCCAAAGCATTACGCATGTCTGGTGGAGACCATATCCACGCTGGAACTGTAGTGGGTAAATTAGAGGGAGAACGAGACGTCACTTTGGGATTTGTTGATTTGCTCCGCGAGGATTATGTCGAAAAAGATCGTAGCCGTGGCATCTATTTCACTCAAGATTGGGTATCTATGCCGGGCGTAATTCCCGTAGCTTCGGGGGGTATTCACGTTTGGCATATGCCCGCTCTAACCGAGATTTTCGGGGACGATTCCGTCTTACAGTTCGGGGGAGGAACCTTGGGACATCCTTGGGGAAATGCGCCCGGTGCCGTAGCCAATCGAGTCGCATCAGAGGCT   [1206]
+Botrychium_strictum           TACACTCCCGATTATGAAACCAAGGATACTGATATCCTAGCAGCTTTTCGAATGACTCCCCAACCTGGAGTGCCAGCTGCAGAAGCGGGAGCCGCGGTAGCTGCTGAATCTTCCACCGGTACGTGGACCACCGTATGGACCGATGGACTTACCAGCCTTGATCGTTATAAGGGTCGATGCTATGAAATCGAACCTGTTCCCGGGGAGGAAAATCAATTCATTGCTTATGTGGCGTATCCTCCAGATCTTTCTGAGGAAGGTTCTGTCACCAACATGTTCACTTCCATTGTAGGTAACGTATTCGGATTCAAGGCATTGAGAGCTTTACGGTTGGAAGATTCAAGAATTCCCCCTGCTTATTCTAAGACTTTCATGGGTCCGCCTCACGGTATTCAAGTCGAGAGGGATAAATTAAACAAATACGGTCGCCCCTTACTAGGATGTACCATCAAACCCAAATTGGGATTATCTGCCAAAAATTATGGTAGAGCTGTTTATGAATGTTTACGCGGTGGGCTCGATTTCACCAAGGATGATGAAAACGTAAATTCCCAACCGTTTATGCGTTGGAGAGATCGTTTCTTATTCGTGGCAGAAGCCCTTTTCAAATCTCAAGCTGAAACGGGTGAAATTAAGGGACATTACTCAAATGCTACCGCGGGTACTTGTGAGGAAATGCTAAAAAGAGCAGTATTTGCTCGAGAATTGGGAGTACCCATTGTCATGCACGATTATTTGACAGGAGGATTCACTGCAAATACTAGCTTAGCCTTCTACTGTTGGGATAATGGTCTACTCCTTCACATTCATCGTGCAATGCATGCTGTTATTGATAGACAAAAGAATCATGGTATCCACTTCCGTGTATTGGCCAAAGCATTGCGTATGTCCAGCGGGGATCATATTCATTCCGGTACTGTAGTGGGTAAACTTGAGGGAGAACGCGACATAACTCTAGGCTTCGTTGATCTACTCCGTGACGATTATATCGAGAAAGATCGAAGCCGCGGCATCTATTTCACCCAAGATTGGGTATCTATGCCGGGTGTACTGCCTGTAGCTTCAGGAGGCATCCACGTTTGGCATATGCCCGCTTTAACTGAGATCTTCGGGGACGATTCCGTACTCCAATTTGGTGGAGGAACTTTGGGACACCCATGGGGTAATGCACCTGGTGCAGTGGCTAATCGAGTTGCTCCGGAAGCT   [1206]
+Osmunda_cinnamomea            TATACTCCCGATTATGAGACCAAGGATACTGATATTTTGGCAGCATTCCGAATGACTCCCCAACCCGGAGTACCGGCTGAGGAAGCTGGAGCTGCAGTAGCTGCGGAATCTTCTACAGGTACGTGGACCACTGTATGGACGGATGGACTTACCAGTCTTGATCGTTATAAGGGTCGATGCTACGATATTGAACCTGTTGCTGGGGAAGAAAATCAATATATTGCTTATGTAGCTTATCCTCTGGACCTATTCGAAGAAGGTTCTGTTACCAATATGTTCACTTCCATTGTAGGTAACGTGTTCGGATTCAAAGCATTACGCGCTCTACGTTCGGAAGATTCGAGAATTCCTCCCGCGTATTCTAAGACTTTCATCGGGCCGCCTCACGGTATCCAGGTCGAAAGGGATAAATTGAACAAATATGGTCGTCCTTTGTTGGGATGTACGATTAAACCCAAATTGGGTTTATCTGCTAAGAATTATGGTAGAGCTGTTTATGAATGTCTTCGTGGTGGGCTTGATTTTACCAAAGATGATGAGAACGTGAATTCTCAACCATTCATGCGTTGGAGAGATCGTTTCTTGTTCGTAGCAGAAGCTCTTTTTAAAGCTCAAGCTGAAACCGGCGAGATTAAGGGACATTACTCGAATGCTACTGCAGGTACATGTGAAGAAATGATGAAAAGAGCAGTATTTGCTAGGGAATCGGGCGCACCTATTGTCATGCATGATTATTCGACGGGAGGCTTTACTGCAAATACTAGCTTGGCTTTTTATTGTCGAGATAATGGTCTACTTCTCCACATTCACCGTGCAATGCATGCCGTTATCGATAGGCAAAGGAATCACGGTATACACTTCCGTGTATTGGCTAAAGCATTGCGTATGTCTGGTGGAGATCATATTCATTCCGGTACTGTAGTGGGTAAACTTGAAGGGGAACGAGAAGTAACTTTGGGTTTTGTCGATTTACTCCGTGATGACTATATCGAAAAAGACCGAAGTCGCGGTATCTATTTCACTCAGGATTGGGTATCCATGCCGGGTGTATTTCCTGTAGCTTCCGGAGGTATCCATGTTTGGCATATGCCCGCTCTAACGGAAATTTTTGGGGATGATTCTGTATTACAGTTTGGTGGAGGGACCTTGGGACACCCTTGGGGAAATGCACCTGGTGCTGTAGCTAACCGAGTTGCTTTAGAGGCT   [1206]
+Ceratopteris_thalictroides    TACACTCCCGAGTATAAGGTCAAAGATACTGATATCTTAGCCGCTTTTCGAATGACCCCACAACCCGGAGTACCAGCTGAAGAGGCCGGAGCTGCGGTGGCTGCGGAATCCTCTACAGGTACATGGACCACAGTATGGACAGACGGACTTACTAGTCTTGATCGATACAAAGGTCGGTGCTACGATATTGAACCCGTTGCCGGGGAGGAAAACCAGTATATTGCATATGTAGCGTACCCCTTGGATTTATTTGAGGAAGGGTCCGTCACCAATATGCTGACTTCTATTGTAGGTAATGTTTTTGGATTCAAGGCCTTACGCGCTCTGCGCCTGGAAGACCTACGGATTCCTCCTGCTTATTCCAAGACTTTTCTTGGGCCTCCTCACGGTATTCAGGTCGAAAGAGATAAATTAAACAAATATGGTCGTCCTCTATTGGGATGTACAATCAAGCCAAAATTGGGCTTGTCTGCTAAAAATTATGGTAGAGCAGTTTACGAATGCCTTCGTGGTGGACTTGATTTCACAAAAGATGATGAAAACGTTAATTCCCAACCGTTTATGCGTTGGAGAGATCGCTTTTGCTTCGTAGCCGAAGCTCTTTATAAAGCCCAGAATGAAACCGGTGAAATTAAGGGACATTATTTAAATGCCACCGCGGGCACAACTGAAGAAATGCTTAGAAGAGCTGACTATGCCAGTGAATTGGGTGCACCAATCATCATGCATGACTATCTGACTGGTGGTTTTACCGCAAATACTAGTTTAGCTATCTATTCTAGAAACAAAGGTCTACTTCTTCATATTCACCGAGCCATGCATGCTGTTATTGATAGACAAAGAAATCATGGTATGCATTTCCGTGTTTTAGCCAAAGCCTTACGTATGTCTGGTGGAGATCATATCCATGCAGGAACTGTGGTGGGCAAATTAGAAGGTGAACGAGAAGTTACCCTGGGATTTGTCGATTTACTTCGCGACGACTACATTGAAAAAGATCGTAAGCGTGGTATATACTTCACCCAAGATTGGGTATCTATGCCTGGTGTAATTCCCGTAGCTTCAGGGGGTATTCACGTATGGCATATGCCCGCCCTAACCGAAATTTTTGGGGACGATTCTGTCTTACAATTTGGCGGGGGAACATTGGGACATCCTTGGGGAAATGCCCCTGGTGCCGTTGCTAACCGCGTAGCATTGGAGGCT   [1206]
+Plagiogyria_japonica          TACACTCCCGATTATGCGACCAAAGACACTGATATCTCGGCAGCTTTCGGAATGACCCCGCAACCCGGAGTGCCACCTGAGGAAGCTGGAGCTGCAGTAGCCGCGGAATCTTCCACGGGTACATGGACCACTGTATGGACGGATGGACTTACTAGTCTCGATCGCTACAACGGTCGATGCTACGATATCGAACCTGTTTCTGGGGAGGAAAATCAATATATTGCATATGTAGCTTACCCTCCGGATCTATTTGAAGAAGGGTCCGTTACCAATTCGTTCACTTCCATTGTAGGTAATGTATTTGGATTCAAAGCCCTACGCGCTCTCCGCCTAGAAGATCCTCGAATTCCTCCTGCTTATCCTAAGACTTTCATTGGACCGCCCCACGGTATTCAGGTCGAAAGGGATAAACTGAACAAATACGGGCGTCCCTTATTGGGATGTACAATCAAGCCAAATTTGGGCTTATCTGCTAAGAATTATGGTAGAGCCGTTTATGAGTGTCTCCGTGGTGGACTTGACTTCACCAAGGATGATGAGAACGTCAATTCCCAACCATTCATTCGTTGGAGAGATCGCTTCTTATTCGTAGCAGAAGCCCTCTTCAAAGCTCAGGCCGAAACAGGCGAAATCAAGGGACATTACTTGAATGCTACTGCAGGTACGTGTGAAGAACCGTCGAAAAGAGCTGTTTTTGCTAGGGAATTGGGAGCACCAATTGTAATGCATGACTACCTGACCGGAGGGTTCACCGCAAATACTAGCTTGGCCTTTTATTGTCGAGACAATGGGCTGCTTCTTCACATTCACCGTGCGATGCATGCCGTCATTGATAGACAAAAAAACCACGGTATGCATTTTCGTGTATTAGCCAAAGCATTACGTATGTCCGGTGGAGATCATGTTCACGCCGGGACTGTAGTAGGTAAACTGGAGGGAGAACGAGAAGTCACTTTGGGCTTTGTCGATTTTCTTCGCGACGATTATATAGAAAAAGACCGTAGCCGCGGTGTCTATTTCACCCAAGACTGGGTCTCTATGCCGGGTGTACTTCCCGTAGCTTCGGGGGGTATCCACGTCTGGCATATGCCCGCTCTAACCGAAATCTTCGGAGACGATTCCGTCTTACAGTTTGGCGGGGGAACCCTCGGACATCCCTGGGGAAATGCGCCCGGTGCCGTAGCTAATCGAGTCGCGTTAGAGGCT   [1206]
+Loxogramme_grammitoides       TACACCCCCGACTACAAGACCAAAGATACCGATATCTTAGCGGCGTTTCGAATGACCCCACAACCTGGAGTACCGGCTGAGGAAGCTGGAGCTGCGGTAGCTGCAGAATCCTCCACAGGTACATGGACCACTGTATGGACAGATGGGTTGACTAGTCTTGACCGTTACAAAGGACGATGCTACGACATCGAGCCTGTCGCTGGGGAGGAAAACCAGTATATCGCGTATGTAGCTTATCCTTTGGATCTATTTGAAGAAGGTTCTGTGACTAATTTATTCACCTCCATAGTAGGTAATGTCTCTGGATTTAAAGCTCCGCGCTCTCTGCGCCTGGAAGACCTTCGAATTCCTCCCGCTTATTCTAAAACTTTCATTGGACCACCTCATGGTATTCAGGTTGAAAGGGATAAACTGAACAAATATGGACGTCCCTTATTGGGATGTACAATCAAGCCAAAATTAGGTCTGTCTGCTAAAAATTATGGTAGAGCCGTCTACGAATGCCTCCGCGGTGGACTTGATTTCACAAAAGATGATGAAAATGTGAATTCCCAGCCATTCATGCGTTGGAGAGATCGCTTCCTATTTGTGGCAGAAGCTCTTTTCAAATCCCAGGCTGAAACAGGTGAAATCAAAGGGCATTACTTAAATGCTACCGCAGGTACATGTGAAGAAATGATGAAGAGAGCTATTTTTGCTAGGGAGTTGGGCGCACCAATCGTCATGCATGACTACTTGACCGGAGGGTTTACCGCAAATACCAGCTTAGCTTATTATTGCAGAGATAATGGACTACTTCTTCATATTCACCGCGCGATGCATGCTGTGATTGATAGGCAACGAAATCACGGCATGCATTTTCGTGTATTGGCCAAAGCGTTACGCATGTCCGGCGGGGATCATGTACACGCTGGAACTGTAGTAGGCAAACTAGAAGGGGAACGAGAAGTTACCCTTGGTTTTGTCGATTTACTTCGCGACGATTACATTGAGAAAGATCGTAACCGCGGCGTCTATTTCACCCAAGATTGGGTATCTATGCCGGGTGTACTACCCGTAGCTTCGGGGGGTATCCACGTATGGCACATGCCTGCTTTAACCGAAATCTTTGGGGACGATTCCGTATTACAATTTGGCGGAGGAACCTTAGGACATCCTTGGGGAAATGCGCCAGGTGCGGTAGCCAACCGAGTCGCATTGGAAGCT   [1206]
+Polypodium_australe           TACACCCCCGAATACAAAACCAAAGATACCGATATCTTAGCAGCATTTCGAATGACCCCACAACCTGGAGTACCGGCTGAGGAAGCTGGAGCTGCGGTAGCTGCAGAATCCTCCACAGGTACGTGGACAACTGTATGGACAGATGGGTTGACTAGCCTTGACCGTTACAAGGGCCGATGCTACGACATCGAACCCGTCGCTGGAGAAGAAAACCAGTATATCGCGTATGTAGCTTATCCTTTGGATCTATTCGAAGAAGGTTCCGTTACTAATTTGTTCACCTCTATAGTAGGTAATGTCTTTGGATTTAAGGCTCTACGCGCTCTACGCTTGGAAGACCTTCGAATTCCTCCCGCTTATTCTAAAACTTTCATGGGACCGCCTCATGGTATTCAGGTTGAAAGGGATAAATTGAACAAATATGGACGTCCTTTATTGGGATGTACAATCAAGCCAAAATTGGGTCTGTCTGCTAAAAATTACGGTAGAGCCGTCTACGAATGCCTTCGTGGTGGACTTGATTTCACAAAAGATGATGAAAATGTGAATTCCCAGCCATTCATGCGTTGGAGAGATCGTTTCCTATTTGTGGCAGAAGCTCTTTTCAAATCCCAAGCTGAAACAGGGGAAATCAAAGGACATTACTTAAACGCTACTGCAGGTACATGTGAAGAGATGATGAAAAGAGCTGTTTTTGCTAGGGAGTTGGGTGCACCAATTGTCATGCATGACTATCTAACCGGAGGGTTTACTGCAAATACCAGCTTAGCTTTTTATTGCAGAGATAATGGACTGCTTCTTCATATTCACCGCGCAATGCATGCTGTGATTGATAGGCAACGAAATCACGGTATGCATTTTCGTGTATTGGCCAAAGCGTTACGCATGTCCGGCGGAGATCATATACATGCTGGAACTGTAGTAGGCAAACTAGAAGGGGAACGAGATGTTACCCTTGGTTTCGTCGATTTACTTCGCGACGATTACATTGAAAAAGATCGTAGCCGCGGTATTTATTTCACCCAAGATTGGGTATCTATGCCGGGTGTATTCCCTGTAGCTTCAGGAGGTATCCACGTCTGGCACATGCCTGCTCTAACCGAAATCTTTGGGGACGATTCCGTATTACAGTTCGGCGGAGGAACCTTAGGACATCCTTGGGGAAATGCGCCAGGTGCAGTAGCCAACCGAGTCGCATTGGAAGCT   [1206]
+Psilotum_nudum                TATACCCCTGATTATAAAGTCAGTGATACTGATATCCTAGCAGCATTTCGAATGACTCCTCAACCTGGAGTACCACCTGAGGAAGCAGGAGCTGCAGTAGCTGCTGAGTCTTCCACCGGTACGTGGACCACTGTATGGACTGATGGACTTACCAGCCTGGATCGTTACAAGGGTCGATGTTATGGTATCGAACCTGTTGCTGGGGAAGAAAATCAATATATTGCCTATGTAGCATATCCATTGGATCTATTTGAGGAAGGTTCTGTTACCAACATGTTCACTTCCATTGTAGGTAATGTATTCGGATTCAAAGCATTGAGAGCTCTACGTCTGGAAGATTTAAGAATTCCCCCTGCTTATTCGAAGACCTTCATGGGTCCACCTCACGGTATCCAAGTTGAAAGAGATAAATTGAACAAATATGGACGTCCTTTATTGGGATGTACCATCAAACCTAAATTAGGTTTATCTGCTAAAAACTACGGTAGAGCGGTTTATGAATGTCTTCGTGGTGGACTTGATTTTACTAAAGATGATGAGAATGTCAATTCTCAACCTTTTATGCGTTGGAGAGATCGTTTCTTATTTGTAGCAGAAGCTCTTTTCAAATCCCAAGCTGAAACAGGTGAAATTAAGGGACATTATTTGAACGCCACTGCAGGTACTTGCGAAGAAATGATGAAAAGAGCAGTCTTCGCTCGAGAATTAGGAGCCCCCATTGTTATGCACGACTATTTGACAGGAGGATTTACTGCAAATACTAGTCTGGCTTTCTATTGTCGAGATAATGGTCTACTTCTTCATATTCACCGTGCCATGCATGCTGTTATTGATAGACAAAGAAATCATGGTATGCACTTCCGTGTATTGGCTAAAGCATTGCGTATGTCGGGTGGAGATCATGTCCATGCTGGTACTGTAGTAGGTAAGCTTGAAGGGGAACGAGACGTCACTCTGGGATTTGTTGATTTACTTCGTGATGATTATATTGAGAAGGACCGGAGCCGCGGCGTCTATTTCACTCAAGATTGGGTTTCTATGCCAGGTGTACTGCCTGTTGCTTCGGGGGGTATTCATGTTTGGCACATGCCAGCTTTAACTGAGATCTTTGGGGATGATTCTGTATTACAGTTCGGTGGAGGAACCTTGGGACATCCTTGGGGAAATGCACCAGGTGCTGTGGCTAATCGAGTTGCGTTGGAAGCC   [1206]
+Acrostichum_aureum            TATACTCCCGAATATCAGACCAAAGACACTGATATCTTAGCCGCTTTCCGAATGACCCCACAACCTGGAGTACCGGCTGAGGAGGCCGGGGCTGCAGTGGCTGCGGAATCCTCGACAGGTACATGGACAACAGTATGGACAGACGGACTTACTACTCTCGATCGCTACAAAGGCCGGTGCTACGATATTGAACCCGTTCCTGGGGAGGAAAATCAGTATATTGCATATGTAGCTTATCCTTTGGATTTATTTGAAGAAGGTTCCGTTACTAATATGTTCACTTCGATCGTAGGTAATGTTTTTGGATTCAAGGCCCTACGTGCTCTGCGTCTGGAAGACCTACGAATCCCTCCTGCCTATCCAAAAACTTTTATTGGACCTCCCCACGGTATCCAGGTAGAAAGGGATAAACTAAACAAATATGGCCGTCCTTTATTGGGATGTACAATCAAACCAAAATTGGGCTTGTCTGCTAAAAATTATGGTAGAGCAGTTTATGAATGCCTTCGTGGCGGACTTGATTTCACAAAAGATGATGAAAACGTTAATTCCCAACCGTTTATGCGTTGGAGAGATCGCTTTTTATTTGTAGCAGAAGCACTTTTCAAAGCCCTGGCTGAGACGGGTGAAATCAAGGGGCATTATTTAAATGCCACTGCAGGCACGTCTGAAGAAATGATGAAGAGAGCTCGTTTTGCCCGAGAATTGGGGGCACCAATCGTCATGCATGACTACCTAACTGGGGGATTTACCGCCAATACCAGCTTAGCTTTTTATTGTAGAGACAACGGATTGCTTCTTCATATTCACCGGGCAATGCATGCTGTCATCGATAGACAACGGAATCACGGTATGCATTTCCGTGTATTAGCCAAAGCCTTACGTATGTCTGGTGGGGATCATATTCATGCGGGAACTGTAGTAGGCAAACTAGAGGGCGAACGAGAAGTTACTCTGGGATTTGTCGACTTACTTCGCGACGACTACATTGAAAAAGATCGTAGCCGTGGTATCTACTTTACCCAAGATTGGGTATCTATGCCAGGTGTAATTCCCGTAGCTTCAGGGGGTATTCACGTATGGCACATGCCAGCTCTAACCGAAATCTTTGGGGACGATGCTGTCTTACAGTTCTGCGGAGGAACTTTGGGACATCCCTGGGGTAATGCACCCGGTGCTGTTGCTAACCGAGTTGCCTTGGAAGCT   [1206]
+Adiantum_raddianum            TACACTCCCGAATACGTGACCCTAGACACTGATATCTTAGCGGCTTTCCGAATGACTCCACAACCTGGAGTACCGGCTGAGGAAGCCGGAGCTGCAGTAGCTGCGGAATCTTCCACGGGTACATGGACTACTGTATGGACAGATGGACTTACTAGTCTTGATCGATATAAAGGCCGGTGCTATGATATTGAGCCTGTAGCTGGGGAAGAAAATCAGTATAT?GCATATGTAG?TTATCCTCTGGATTTATTCGAGGAAGGTTCTGTCACTAATATGCTGACTTATATTGTAGGTAATGTTTTTGGATTTAAGGCTCTACGGCCTCTGCGTCTGGAAGACTTACGAATCCCCCCCGCTTATTCCAAAACTTTTCTTGGACCCCCTCACGGTATTCAGGTGGAAAGGGATAAACTAAACAAATATGGCCGTCCCCTATTGGGATGTACAATCAAGCCAAAATTAGGCTTGTCTGCCAAGAATTATGGTAGAGCAGTTTATGAATGCCTTCGTGGTGGACTTGACTTTACAAAAGATGATGAAAACGTAAATTCCCAACCGTTTATGCGTTGGAGAGATCGGTTCCTATTCGTAGCAGAAGCCCTTTTCAAATCTCAGGCTGAAACGGGTGAAATCAAGGGGCATTACTTGAATGCCACTGCAGGTACGTGTGAAGAGATGATGAAGAGAGCTATTTTCGCCAGGGAATTGGGTGCGCCGATTGTCATGCATGACTATCTAACCGGGGGGTTTACCGCAAATACTAGCTTAGCCTTCTACTGCAGAGACAATGGGCTACTTCTGCATATTCACCGGGCGATACATGCTGTCATCGATAGACAGAAAAATCACGGTATGCATTTCCGTGTATTAGCCAAAGGATTACGGATGTCCGGTGGGGATCATATTCATGCCGGAACTGTAGTGGGCAAATTGGAAGGTGAACGAGAAGTTACCCTAGGATTTGTCGATTTACTCCGCGATGATTACATTGAAAAGGATCGTAGCCGTGGTATTTATTTCACCCAAGATTGGGTATCTATGCCGGGTGTCTTTCCCGTAGCTTCGGGAGGTATTCACGTCTGGCACATG?CCGCCTTAACCGAAATTTTCGGGGATGATGCCGTCCTACAATTTGGTGGAGGAACTTTGGGCCATCCTTGGGGAAATGCACCCGGTGCTGTAGCTAACCGAGTTGCATTAGAGGCT   [1206]
+Coniogramme_japonica          TACACTCCCGAATACAAGACCAAAGACACTGATATCTTAGCAGCTTTCCGAATGACCCCACAACCTGGAGTGCCGGCTGAGGAAGCCGGAGCTGCGGTAGCTGCGGAATCTTCCACGGGTACATGGACCACGGTATGGACAGATGGGCTTACTAATCTTGATCGCTATAAGGGCCGGTGCTACGATATCGAGCCCGTCGCTGGAGAGGAAAATCAGTATATTGCATATGTAGCTTATCCCTTGGATTTATTCGAGGAAGGTTCCGTCACCAATATGCTGACTTCTATTGTAGGTAATGTTTTCGGATTTAAGGCCCTACGCGCTCTGCGTCTGGAAGACCTGCGAATTCCCCCCGCTTATTCAAAAACTTTTATCGGACCCCCCCACGGTATTCAGGTGGAAAGGGATAAACTAAACAAATATGGACGTCCTCTATTGGGATGTACGATCAAGCCGAAGTTAGGCTTATCTGCTAAGAATTATGGTCGAGCAGTTTACGAATGCCTCCGTGGCGGACTTGATTTCACAAAAGATGATGAAAACGTAAATTCCCAACCGTTCATGCGTTGGAGAGATCGCTTCCTATTCGTAGCAGAAGCCCTTTTCAAATCCCAGGCTGAAACGGGTGAAATCAAGGGGCACTATTTAAATGCCACTGCAGGTACGTGTGAGGAGATGATGAAGAGAGCTGTTTTTGCCAGAGAATTGGGTGCACCAATCGTCATGCATGACTACCTGACCGGGGGTTTCACCGCAAATACCAGCTTAGCCTTTTATTGCAGAGACAATGGACTGCTTCTCCATATTCACCGGGCAATGCATGCTGTCATCGATAGGCAACGGAATCACGGTATACATTTCCGTGTATTAGCCAAGGCATTACGCATGTCTGGTGGGGATCACGTCCACGCCGGAACCGTAGTGGGCAAATTAGAAGGCGAACGGGAAGTCACCCTGGGATTTGTCGACCTACTTCGCGACGATTACATCGAGAAAGATCGTAGCCGCGGCGTCTATTTCACCCAAGATTGGGTATCCATGCCGGGTGTACTTCCCGTAGCTTCGGGGGGTATCCACGTCTGGCACATGCCTGCCCTAACCGAAATTTTCGGGGACGACTCCGTCTTACAATTCGGCGGTGGAACATTGGGACATCCCTGGGGAAACGCACCCGGTGCCGTGGCTAACCGAGTCGCATTAGAGGCT   [1206]
+Platyzoma_microphyllum        TACACTCCCGAATACAAGACCAAAGATACTGATATCTTAGCGGCTTTCCGAATGACCCCACAACCCGGAGTACCAGCTGAGGAGGCCGGAGCTGCAGTAGCTGCGGAATCGTCTACGGGTACATGGACCACGGTATGGACAGACGGACTTACCAGCCTCGATCGATACAAGGGCCGGTGTTATGATATTGAGCCCGTCGCTGGGGAGGAAAATCAATATATTGCGTATGTAGCTTATCCCCTGGATTTATTCGAGGAAGGTTCCGTCACGAATATGCTGACTTCCATTGTAGGTAATGTTTTTGGATTCAAGGCCCTACGCGCTCTGCGTCTCGAAGACCTACGAATTCCTCCTGCATATTCCAAAACTTTTATAGGACCCCCCCACGGTATTCAGGTAGAGAGGGATAAACTAAACAAATATGGACGCCCTCTACTGGGATGTACAATCAAGCCAAAATTAGGCTTGTCTGCCAAAAATTATGGTAGAGCAGTTTATGAATGCCTTCGCGGTGGACTTGATTTCACAAAAGATGATGAAAACGTGAATTCCAACCCGTTCATGCGTTGGAGAGATCGCTTTGTATTCGTAGCAGAGGCCCTATTTAAAGCTCAGGCCGAAACGGGTGAAATCAAGGGACATTATTTAAATGCCACTGCAGGCACCTGTGAAGAGATGTTGAAGAGAGCTGCTTTCGCCAGAGAATTGGGTGCACCAATTATCATGCATGACTACCTAACTGGAGGGTTTACCGCAAATACCAGCTTAGCTTTTTATTGCAGAGACAACGGACTACTTCTTCACATTCACCGGGCGATGCATGCTGTCATCGATAGACAACGGAATCACGGTATGCATTTCCGTGTATTAGCTAAAGGATTACGCATGTCTGGCGGGGATCATATCCATGCCGGAACTGTAGTGGGCAAATTAGAAGGCGAACGAGAAGTTACCCTGGGATTTGTCGACTTACTTCGCGACGATTATATTGAAAAGGATCGTAGCCGCGGTATCTATTTTACCCAAGACTGGGTATCCATGCCGGGTGTACTGCCCGTAGCCTCGGGCGGTATTCACGTATGGCACATGCCTGCTCTAACCGAAATTTTTGGGGACGATGCCGTCTTACAATTTGGTGGGGGAACGTTGGGACATCCATGGGGAAATGCACCCGGTGCTGTAGCGAACCGAGTTGCATTGGAAGCT   [1206]
+Pteris_fauriei                TACACTCCCGAATACAAAACCAAAGATACTGATATATTAGCGGCTTTCCGAATGACCCCACAACCTGGAGTACCGCCTGAGGAGGCCGGAGCTGCAGTAGCTGCTGAATCCTCTACGGGTACCTGGACCACGGTATGGACAGACGGACTTACCAGTCTCGATCGCTACAAGGGCCGGTGTTACGATATTGAGCCTGTTGCTGGGGAGGAAAATCAGTATATTGCGTATGTAGCTTATCCTCTGGACCTATTTGAGGAAGGTTCCGTCACCAATATGCTGACTTCCATTGTAGGTAATGTTTTTGGCTTCAAGGCCCTACGCGCTCTGCGTCTGGAAGACCTACGAATCCCTCCTGCGTATTCCAAAACTTTTATAGGACCCCCACACGGCATTCAGGTAGAAAGGGATAAACTAAACAAATATGGACGTCCCCTACTGGGATGTACAATCAAGCCAAAATTGGGCTTGTCTGCCAAAAATTATGGTAGAGCAGTTTATGAATGCCTTCGTGGTGGACTTGATTTCACGAAAGATGATGAAAACGTGAATTCCCAACCTTTCATGCGTTGGAGAGACCGCTTCTTATTTGTAGCAGAAGCCCTTTTTAAAGCCCAAGCAGAAACGGGTGAAGTCAAGGGACATTATTTAAATGCCACTGCAGGCACCTGTGAAGAGATGTTGAAGAGAGCTGTTTTCGCCAGAGAATTGGGTGCACCAATTGTCATGCATGACTACTTGACTGGGGGTTTTACCGCAAATACCAGCTTAGCTTTTTATTGCAGAGACAACGGACTACTTCTTCACATTCACCGGGCGATGCATGCTGTCATCGATAGACAACGGAATCACGGTATGCATTTCCGTGTATTAGCCAAAGCATTACGCATGTCTGGTGGGGATCATATCCATGCCGGAACTGTAGTGGGCAAATTAGAAGGCGAACGAGAAGTTACCCTGGGATTTGTCGACTTACTTCGCGACGATTATATTGAAAAGGATCGTAGTCGTGGCATCTATTTTACCCAAGATTGGGTATCCATGCCAGGTGTACTGCCCGTAGCTTCGGGTGGTATTCACGTCTGGCACATGCCTGCCCTAACCGAAATATTCGGGGACGATTCTGTCTTACAATTTGGCGGGGGAACGTTGGGACATCCCTGGGGAAATGCACCCGGTGCTGTAGCTAACCGAGTTGCGTCGGAAGCT   [1206]
+Taenitis_blechnoides          TACACTCCCGAATACAAGACCCTAGATACTGATATCTTAGCTGCTTTCCGAATGACCCCGCAACCTGGAGTACCAGCTGAGGAGGCCGGAGCTGCAGTAGCTGCGGAATCCTCTACGGGTACATGGACCACGGTATGGACAGACGGACTTACCAGTCTCGATCGATACAAGGGCCGGTGTTACGATGTCGAGCCCGTCGCTAGGGAGAAAAATCAGTATATTGCGTATGTAGCTTATCCCCTGGATTTATTCGAGGAAGGTTCCGTCACCAATATGCTGACTTCCATTGTAGGTAATGTTTTTGGATTCAAGGCCTTACGCGCTCTGCGTCTGGAAGACCTACGGATTCCTCCTGCGTATTCCAAAACTTTTATAGGACCCCCTCACGGTATTCAGGTAGAAAGGGATAAACTAAACAAATACGGACGTCCTCTACTGGGATGTACAATCAAGCCAAAATTAGGCTTGTCTGCCAAAAATTATGGTAGGGCAGTCTATGAATGCCTTCGTGGTGGACTTAATTTCACGAAAGATGATGAAAACGTAAATTCCCAACCGTTCATGCGTTGGAGAGATCGCCTCGTATTCGTAGCAGAAGCTCTTAATAAAGCCGTGTCCGAAACAGGTGAAATCAAGGGGCATTATTTAAATGCCACTGCAGGCAATTGTGAAGAGATGATGAAGAGAGCTGCGTTTGCCAGAGAATTGGGTGTACCAATCGTCATGCATGACTACCTCACTGGCGGGTTTACCGCAAATACTACCTTAGCATCTTATTGCAGAGACAATGGATTACTTCTTCATATTCACCGGGCGATGCATGCTGTCATCTCTAGACAACGGAATCATGGTATGCATTTCCGTGTATTAGCCAAAGCATTACGCATGTCCGGCGGGGATCATGTCCATGCCGGAACTGTAGTAGGCAAATTAGAAGGCGAACGAGAAGTTACTTTAGGATTCGTCGATTTACTTCGCGACGATTATATCGAAAAGGATCGTAATCGCGGCGTCTATTTTACCCAATATTGGGTTTCCATGCCGGGTGTACTGCCCGTAGCTTCGGGTGGTATTCACGTTTGGCACATGCCTGCCCTAACTGAAATTTTTGGGGACGATTCTGTCTTACAGTTTGGCGGGGGAACGTTGGGACATCCCTGGGGAAATGCACCCGGTGCTGTAGCTAACCCGGGTGCTTCGGAGGCT   [1206]
+Salvinia_cucullata            TACACTCCCGATTATGTGACCAAAGACACCGATATTTTGGCAGCTTTCCGAATGACTCCGCAACCTGGAGTACCACCTGAAGAGGCTGGAGCAGCTGTAGCTCCGGAATCTTCTACAGGTACATGGACCACCGTATGGACGGACGGACTTACCAGTCTTGATCGTTACAAAGGTAGATGCTACGATATCGAACCTGTTGCTGGGGAAGAAAACCAATACATCGCATATGTAGCTTACCCCCTAGATCTATTTGAAGAGGGTTCCGTTACCAACATGTTTACCTCTATCGTAGGTAATGTATTCGGATTTAAGGCTCTACGCGCCCTTCGCCTAGAAGACCTTCGAATTCCTCCTGCTTATTCCAAAACTTTCGAGGGACCGCCCCACGGTATCCAGGTTGAGAGGGACAAGCTGAACAAATACGGACGTCCTCTACTAGGATGCACGATCAAACCAAAATTGGGCTTATCCGCCAAGAATTATGGTAGAGCTGTTTACGAATGTCTTCGTGGAGGACTTGACTTTACCAAGGATGATGAAAACGTAAACTCACAGCCTTTCATGCGTTGGAGAGACCGTTTCCTATTCGTAGCAGAAGCTTTGTTCAAGGCTCAGGCCGAAACGGGCGAAGTCAAGGGACATTACTTGAACGCCACTGCAGGTAACAACGAGGAAATGATTAAAAGGGCTGTTTTTGCTAGAGAATTGGGCGCACCAATTGTCATGCATGACTACCTGACCGGAGGGTTTACTGCAAATACTAGCTTGTCTCATTACTGCCGAGACAACGGTCTACTTCTTCACATTCACCGCGCTATGCATGCTGTCATCGATAGACAGAGAAATCACGGTATACACTTCCGCGTGTTAGCTAAGGCATTACGTATGTCTGGTGGGGACCATATTCACGCTGGACCCGTAGTAGGTAAACTAGAGGGAGAGCGAGAAGTAACTCTGGGTTTCGTTGATCTGCTTCGCGATGATTTCATTGAAAAGGACCGTAGCCGCGGTATCTATTTCACCCAAGATTGGGTATCTATGCCAGGAGTACTGCCCGTAGCTTCAGGGGGTATCCACGTCTGGCACATGCCTGCTCTAACCGAGATTTTCGGAGATGACTCCGTATTACAATTCGGTGGAGGAACCCTAGGCCATCCTTGGGGGAATGCACCCGGCGCTGCAGCTAACAGAGTTGCTTTGGAAGCT   [1206]
+Actinostachys_digitata        TATACTCCTGACTACAAGACCAAAGACACTGATATCTTAGCAGCATTCCGAATGACTCCACAACCTGGGGTCCCGCCTGAGGAAGCCGGCGCTGCGGTAGCTGCTGAATCTTCCACTGGTACATGGACCACGGTATGGACAGACGGACTTACTAGTCTTGATCGGTACAAAGGGCGGTGCTACGACATCGAGCCCGTAGCTGGGGAGAAGAATCAATATATTGCATATGTAGCTTATCCTTTAGACCTATTTGAGGAAGGGTCCGTAACTAACATGTTTACTTCCATTGTAGGTAATGTATTTGGATTCAAGGCCTTACGGGCTTTACGCTTGGAAGATCTAAGAATTCCGCCTGCGTATTCAAAGACCTTTATTGGTCCGCCCCATGGTATCCAGGTCGAACGGGATAAATTGAACAAATATGGACGCCCCTTATTGGGATGTACAATTAAGCCAAAATTGGGATTATCTGCCAAAAATTATGGTAGAGCAGTTTATGAATGCCTCCGTGGTTTACTTGACCTCACGAAGGATGATGAGAATGTTAATTCCCAACTATTTATGGGTTGGCGTGATCGCTTCCCCTTCGTGACAGAAGCTCTTTCCAAATCTCAAGCCGAGACAGGTGAAATTAAAGGACATTACCTAAATGCCACTGCAGGTACTTGCGAGGAAATGCTAAAAAGGGCTCGGTTCGCTAGAGAACTCGGCGCACCCATAGTCATGCATGATTATTTGACAGGGGGGTTTACTGCAAATACCAGCTTGGCCTTTTATTGCCGCGATAACGGCTTACTTCTACACATTCACCGCGCAATGCATGCCGTAATCGATAGACAGAAAATTCACGGCATGCATTTCCGTGTATTAGCTAAGGGATTACGTATGCCCGGCGGGGATCACGTCCACGCTGGGACTGTAGTCGGTAAATTGGAGGGTGAACGAGAAGTTACTCGAGGATTTGTTGATTTACTTCGCGACGATTATATAGAGAAAGATCGTAGTCGCGGCATATACTTCACCCAGGACTGGGTATCCATGCCGGGGGTACTGCCCGTAGCTTCTGGGGGCATTCACGTATGGCACATGCCCGCCTTAACTGAAATATTTGGAGATGATGCCGTATTACAATTTGGTGGAGGAACCTTGGGTCATCCTTGGGGAAACGCCCCAGGAGCAGTTGCAAATCGCGTCGCTTTGGAAGCC   [1206]
+Thelypteris_beddomei          TACACCCCCGAATACAAGACCAAAGATACGGATATCTTAGCAGCCTTCCGAATGACCCCACAACCCGGAGTACCAGCTGAGGAAGCCGGAGCTGCGGTAGCTGCGGAATCCTCCACGGGTACGTGGACCACCGTATGGACAGACGGGTTGACCAGCCTCGACCGTTACAAGGGCCGATGCTACGACATTGAACCCGTCGCTGGAGAGGAAAACCAGTATATCGCGTATGTAGCTTATCCTTTGGATCTATTCGAAGAAGGTTCCGTCACTAATTTGTTCACCTCCATTGTAGGTAATGTTTTCGGATTTAAGGCTCTACGCGCTCTACGCTTGGAAGACCTTCGAATCCCTCCTGCTTATTCTAAAACTTTCATTGGACCGCCTCATGGTATTCAGGTCGAAAGGGATAAACTGAACAAATATGGACGTCCCTTATTGGGATGTACAATCAAGCCAAAATTAGGTCTGTCTGCTAAGAATTATGGTAGAGCCGTCTACGAATGCCTTCGTGGTGGACTTGATTTTACAAAGGATGATGAAAACGTAAATTCCCAGCCATTCATGCGTTGGAGAGATCGCTTCTTATTTGTAGCAGAAGCTCTTTTCAAATCCCAGGCTGAAACAGGCGAAATCAAAGGGCACTATTTAAATGCTACTGCAGGTACGTGTGAAGAAATGTTGAAGAGAGCTGTCTTTGCTAGGGAGTTGGGTGCACCAATAGTCATGCATGACTATCTGACTGGGGGGTTTACCGCAAATACCAGCTTAGCTATTTACTGCAGAGACAATGGACTGCTTCTTCATATTCACCGTGCGATGCATGCCGTGATCGATAGGCAACGAAATCACGGTATACATTTTCGTGTACTAGCCAAAGCATTACGCATGTCCGGTGGGGATCATATACACTCCGGAACTGTAGTAGGCAAACTAGAAGGGGAACGAGAAGTCACTTTGGGTTTCGTCGATTTACTTCGCGACGATTACATCGAGAAAGATCGTAGCCGTGGTATATATTTCACACAAGATTGGGTATCTATGCCGGGTGTACTCCCCGTAGCTTCCGGGGGTATCCACGTCTGGCACATGCCCGCTCTAACCGAAATCTTTGGGGACGACTCCGTCTTACAGTTCGGCGGAGGAACCTTGGGACATCCTTGGGGAAATGCACCCGGTGCGGTAGCCAACCGAGTCGCATTAGAAGCT   [1206]
+Vittaria_flexuosa             TACACTCCCGAATACAAGACTCTAGACACTGATATCCTAGCAGCTTCACGAATGACTCCACAACCTGGCGTACCGGCTGAGGAAGCTGGAGCTGCAGTAGCTGCGGAATCTTCCACGGGTACGTGGACCACGGTATGGACAGACGGGCTTACTAGTCTTGATCGATATAAGGGACGATGCTATGATATTGAGCCGGTAGCTGGGGAGGAAAATCAGTATATCGCATATGTAGCTTACCCTCTGGATTTATTTGAGGAAGGTTCCGTTACGAATATGTTCACTTCGATCGTAGGAAACGTTTTTGGGTTTAAGGCTCTACGCGCGTTGCGTCTGGAAGACTTGCGAATTCCTCCTGCTTATTCCAAAACCTTTGCAGGACCCCCTCATGGGATTCAAGTGGAAAGGGATAAACTAAATAAATATGGACGTCCCTTATTAGGATGTACAATCAAGCCAAAATTGGGCTTATCTGCCAAAAATTATGGTAGAGCGGTTTACGAGTGCCTTCGGGGTGGACTTGATTTCACAAAAGATGATGAAAATGTCAATTCCCAACCATTTATGCGGTGGAGAGATCGATTCTTATTCGTATTAGAAGCTCTTAATAAAGCCGTGGCTGAAACCGGTGAGGTCAAGGGCCATTACTTGAATGCTACTGCAGGTACATGTGAAGAGATGATGAAAAGAGCTGCGTGTGCAAGAGAATTGGGTGCACCAATCGTCATGCATGACTACTTGACGGGAGGGTTTACTGCAAATACCAGTTTAGCCCTTTATTGCAGAGATAATGGATTACTTCTACACATTCACAGGGCAATGCATGCCGTTATCGATAGACAGAAAATTCACGGTATGCATTTCCGTGTATTAGCTAAAGGATTACGTATGTCTGGCGGAGATCACATCCATGCCGGAACCGTAGTGGGCAAATTGGAAGGGGAACGAGAGGTTACCCTAGGATTTGTTGACTTACTTCGCGAGGATTCGATTGAAAAGGATCGTAACCGTGGCATCTATTTCTCGCAAGATTGGGTCTCTATGCCGGGTGTTATACCCGTAGCTTCAGGCGGTATCCATGCTTGGCATATGCCTGCCCTTACCGAACCTTTTGGGGATGACTCTGTCCTACAATTTGGTGGGGGAACCCTGGGACACCATTGGGGGAATGCACCCTGTGCCGTGGCTAACCGAGTCGCAGTGGAAGCG   [1206]
+Equisetum_arvense             TTTACTCCAGATTATGAAACCAAAGATACCGATATTTTAGCAGCATTCCGTATGACTCCTCAACCGGGAGTACCACCGGAAGAAGCAGGAGCAGCCGTAGCTGCTGAATCGTCCACGGGCACCTGGACTACCGTATGGACAGATGGACTTACTAGTCTTGATCGATATAAAGGTCGATGCTATAATATTGAACCTGTTGCTGGAGAAGATAATCAATTCATAGCTTATGTAGCCTACCCTTTAGATCTTTTTGAAGAAGGTTCTGTTACCAATCTTTTTACTTCAATTGTTGGTAATGTTTTCGGCTTCAAAGCTCTACGTGCTTTACGTTTAGAAGATTTAAGAATTCCTCCTGCTTACTCCAAAACTTTTATAGGACCACCCCACGGTATCCAGGTTGAAAGAGATAAGTTAAACAAATACGGTCGTCCTTTATTAGGTTGTACAATTAAACCAAAATTGGGACTATCTGCTAAAAACTATGGTAGAGCTGTTTATGAATGTCTTCGTGGTGGGCTTGATTTCACCAAAGATGATGAGAATGTAAACTCTCAACCCTTTATGCGTTGGAGAGATCGTTTCTTATTCGTAGCAGAAGCTCTTTTTAAATCCCAAGCTGAGACAGGTGAAATTAAAGGACATTACTTAAACGCTACTGCAGGTACATGTGAAGAAATGTTAAAAAGAGCAGTCTTCGCCAGAGAATTAGGAGCTCCTATTGTTATGCATGACTACCTAACAGGTGGTTTTACTGCAAATACTAGTCTAGCTTTTTACTGTCGAGATAATGGTTTACTTCTTCATATTCACCGAGCAATGCATGCTGTTATCGATAGACAAAAAAATCATGGTATTCACTTTCGTGTACTAGCTAAAGCATTACGTATGTCTGGAGGAGATCATATTCATACTGGTACTGTTGTTGGTAAACTTGAAGGTGAAAGAGACTTAACTTTAGGATTTGTTGATTTACTTCGCGACGACTTTATCGAAAAAGATCGAAGTCGCGGAATTTATTTCACTCAAGACTGGGTATCTATGCCTGGTGTACTTCCTGTAGCTTCGGGTGGTATTCACGTTTGGCACATGCCAGCTTTGACTGAAATTTTTGGAGATGACTCTGTATTACAATTTGGTGGAGGAACCTTAGGACACCCTTGGGGTAATGCACCAGGTGCTGTCGCTAATAGAGTTGCTGTCGAGGCT   [1206]
+Lycopodium_digitatum          TACACTCCTGATTATAAGACCAAAGAAACCGATATTCTGGCAGCATTTCGAATGACTCCTCAACTTGGAGTACCACCCGAGGAAGCGGGAGCCGCAGTAGCTGCTGAATCTTCCACTGGTACATGGACTACTGTTTGGACCGATGGACTTACCAGTCTCGATCGCTACAAAGGTCGGTGCTATGAAATTGAACCTGTTGCTGGAGAAAAAAATCAATATATTGCTTATGTAGCTTATCCTCTGGATCTGTTTGAGGAAGGTTCCGTTACTAACTTGTTCACTTCCATTGTAGGTAATGTATTTGGATTCAAAGCCTTACGAGCTTTACGTTTAGAAGATTTGCGAATTCCTCCTGCTTATTCCAAAACTTTCATGGGTCCGCCCCATGGTATCCAAGTCGAAAGAGACAAATTGAACAAATATGGCCGTCCTTTATTAGGATGTACTATTAAACCAAAATTAGGTTTATCCGCTAAAAACTATGGTAGAGCTGTTTATGAATGTCTTCGTGGTGGACTTGATTTCACTAAGGATGATGAAAACGTGAATTCTCAACCGTTTATGCGTTGGAGAGACCGTTTCTTATTCGTAGCAGAAGCTCTTTATAAAGCTCAAGCCGAAACAGGCGAAATTAAGGGTCATTACTTGAATGCTACCGCGGGTACATATGAAGAAATGCTTAAAAGGGCACATTGTGCTAAAGAATTAGGAGTGCCTATCGTAATGCATGACTATTTGACGGGAGGTTTCACCGCAAATACTAGTTTAGCCCATTATTGTCGAGACAATGGTCCACTGCTTCACATTCACCGCGCGATGCATGCAGTTATTGACAGACAAAAGAATCATGGTATTCACTTCCGTGTATTAGCTAAAGCATTACGTATGTCTGGTGGAGATCACATACACTCCGGTACTGTAGTAGGTAAACTCGAAGGAGAACGCCAAATAACTTTAGGTTTTGTTGATCTACTTCGTGATGACTATATCGAGAAGGACCGAAGCCGTGGTATTTATTTCACTCAAGATTGGGTATCTATGCCTGGTGTTTCGCCCGTAGCTTCGGGAGGTATTCATGTCTGGCACATGCCTGCTCTGACTGAAATCTTTGGAGATGATTCTGTATCACAATTCGGTGGGGGAACTTTGGGACACCCTTGGGGGAATGCACCCGGTGCAGTAGCAAACCGAGTTGCTTTAGAAGCT   [1206]
+Cycas_circinalis              TACACTCCTGAATATCAAACCAAAGATACCGATATCTTGGCAGCGTTCCGAGTAACTCCTCAACCTGGAGTGCCGCCTGAGGAAGCGGGAGCTGCAGTAGCCGCTGAATCTTCCACTGGTACATGGACCACTGTTTGGACCGATGGACTTACCAGTCTCGATCGTTACAAGGGGCGATGCTATGACATCGAGCCCGTTCCTGGGGAGAAAAATCAATTTATTGCCTATGTAGCTTACCCCTTAGACCTCTTTGAAGAAGGTTCTGTTACTAACATGTTCACTTCCATTGTAGGTAATGTATTTGGATTCAAAGCCCTACGAGCTCTACGCCTAGAAGATTTGCGAGTTCCTCCTGCTTATTCCAAAACTTTCCAAGGTCCACCTCATGGTATCCAAGTTGAAAGAGATAAATTAAACAAATATGGCCGTCCTCTATTGGGATGTACTATTAAACCCAAATTGGGTTTATCTGCCAAAAACTATGGTAGAGCAGTTTATGAATGTCTTCGTGGTGGACTTGATTTTACCAAAGATGATGAGAACGTAAATTCCCAACCATTTATGCGCTGGAGAGATCGTTTCTGCTTCTGTGCAGAAGCAATTTATAAAGCTCAGGCTGAGACGGGTGAAATTAAGGGACATTACTTGAATGCTACTGCAGGTACATGCGAAGAAATGATCAAAAGGGCAGTATTTGCCAGAGAATTGGGGGTTCCTATCGTCATGCATGACTACCTGACGGGAGGATTTACTGCAAATACCAGCTTGGCTCATTATTGCCGAGACAATGGCCTACTTCTTCACATTCACCGCGCAATGCATGCAGTTATTGACAGACAAAGAAATCATGGTATGCACTTCCGTGTGCTAGCTAAAGCATTGCGAATGTCCGGTGGAGATCATATTCACGGCGGTACTGTAGTAGGTAAACTTGAAGGAGAACGAGACGTAACTTTGGGTTTTGTTGATCTACTGCGTGACGATTTTATTGAAAGAGACCGAAGTCGTGGTATTTATTTCACCCAAGATTGGGTATCTATGCCAGGTGTTCTGCCCGTAGCTTCGGGGGGTATTCACGTTTGGCATATGCCTGCTCTAACCGAGATCTTTGGGGATGATTCCGTACTACAGTTCGGTGGGGGAACTTTGGGACACCCTTGGGGAAATGCACCTGGTGCAGTAGCGAATCGAGTTGCCTTAGAAGCT   [1206]
+;
+END;
+
+
+BEGIN CODONS;
+CODESET * UNTITLED = Universal.ext: all ;
+END;
+
+BEGIN ASSUMPTIONS;
+	OPTIONS  DEFTYPE=unord PolyTcount=MINSTEPS ;
+END; 
+
+
+
+BEGIN MACCLADE;
+Version 3.05;
+LastModified -1350304765;
+Singles 1000&/0;
+END;
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/P95rbcl.nex
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/W98morph.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/W98morph.nex	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/W98morph.nex	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,528 @@
+#NEXUS 
+[MacClade 3.05 registered to Franois Lutzoni,        ]
+
+BEGIN MacCladeStart;
+Extended;
+END;
+
+
+BEGIN DATA;
+DIMENSIONS  NTAX=12 NCHAR=77;
+FORMAT SYMBOLS= " 0 1 2 3 4" MISSING=? GAP=- ;OPTIONS  MSTAXA=POLYMORPH ;
+
+CHARLABELS
+	[1]	Circinnate_vernation
+	[2]	'F-S_leaf_differentiation'
+	[3]	Blade_dissection
+	[4]	Primary_vein_form
+	[5]	Vein_orders
+	[6]	Secondary_vein_form
+	[7]	Vein_fusion
+	[8]	Areoles
+	[9]	Hydathodes
+	[10]	Blade_hairs
+	[11]	Blade_scales
+	[12]	GMC_division
+	[13]	GMC_subsid_cell_origin
+	[14]	Dromy_at_base_of_blade
+	[15]	Pulvini
+	[16]	Pneumathodes
+	[17]	Blade_articulation
+	[18]	Trophopods
+	[19]	Adaxial_outline_of_stipe|rachis
+	[20]	Sclerenchyma_coloration
+	[21]	Sclerenchyma_fibers
+	[22]	Epipetiolar_branches
+	[23]	'Stipe_stele_number_(base->apex)'
+	[24]	Xylem_configuration_in_stipe
+	[25]	Primary_xylem_bordered_pits
+	[26]	Rhizome_symmetry
+	[27]	Rhizome_stele_type
+	[28]	Rhizome_stele_cycles
+	[29]	Vascular_cambium
+	[30]	Rhizome_hairs
+	[31]	Rhizome_scales
+	[32]	Rhizome_scale_pattern
+	[33]	Roots
+	[34]	Root_hairs
+	[35]	Root_anatomy
+	[36]	Growth_habit
+	[37]	'Mucilage/latex_canals'
+	[38]	True_vessels
+	[39]	Intranuclear_paracrystals
+	[40]	Hypodermis
+	[41]	First_division_of_zygote
+	[42]	Sporangial_wall_thickness
+	[43]	Receptacle
+	[44]	Sporangial_stalk_length
+	[45]	Sporangial_stalk_width
+	[46]	Spore_output
+	[47]	Sori
+	[48]	Sorus_outline
+	[49]	Sporangial|soral_position
+	[50]	'Soral/sporangial_maturation'
+	[51]	'No._sporangia/sorus'
+	[52]	Indusium
+	[53]	Indusium_origin
+	[54]	Indus_attach_to_sorus
+	[55]	Indusium_opening
+	[56]	Annulus
+	[57]	Annulus_aspect
+	[58]	Annulus_span
+	[59]	Sporogenesis
+	[60]	Spore_laesura
+	[61]	Spores_chlorophyllous
+	[62]	Spore__equatorial_flange
+	[63]	Perispore_prominence
+	[64]	Perispore_surface
+	[65]	Exospore_structure
+	[66]	Exospore_surface
+	[67]	Spore_germination
+	[68]	Gametophyte_form
+	[69]	Gametophyte_hairs
+	[70]	Gametophytes_green
+	[71]	Gam._fungal_assoc.
+	[72]	Dependent_gametophyte
+	[73]	Antherdium_position
+	[74]	Archegonium_position
+	[75]	No._anth._wall_cells
+	[76]	No._arch_neck_tiers
+	[77]	Gemmae_producing_gametophytes
+	;
+STATELABELS  
+	1  no yes,
+	2  monomorphic 'hemi_-_at_tip' 'hemi_-_at_base' dimorphic,
+	3  simple compound,
+	4  dichotomous 'anisotomous_(pinnate)' solitary|unbranched,
+	5  one two three four_or_more,
+	6  dichotomous anisotomous,
+	7  nonanastomosing anastomosing,
+	8  without_free_included_veinlets with_free_included_veinlets,
+	9  absent present,
+	10  absent present,
+	11  absent present,
+	12  diameristic parameristic anomomeristic,
+	13  perigenous mesogenous mesoperigenous,
+	14  catadromous anadromous isodromous,
+	15  absent present,
+	16  absent present_scattered present_lines_patches,
+	17  absent present,
+	18  absent present,
+	19  convex_to_flattened sulcate,
+	20  'not_dark-pigmented' dark_pigmented,
+	21  absent present,
+	22  absent present,
+	23  'monostele->polystele' monostele 'distele->monostele' polystele distele,
+	24  'C,_U,_V,_O,_½,_arc)' 'solid_*,_T,_Æ' 'X_(sometimes_becoming_V)' 3_arches polycyclic,
+	25  scalariform circular,
+	26  radial dorsiventral,
+	27  protostele solenostele dictyostele eustele,
+	28  monocyclic polycyclic,
+	29  absent present,
+	30  absent present,
+	31  absent present,
+	32  uniformly_colored sharply_bicolored clathrate,
+	33  absent present,
+	34  absent present,
+	35  '2-5-arch' polyarch,
+	36  terrestrial epiphytic rooted_aquatic floating_aquatic,
+	37  absent present,
+	38  absent present,
+	39  absent present,
+	40  absent present,
+	41  horizontal vertical 'free-nuclear_phase',
+	42  single_cell_layer 2_or_more_cell_layers,
+	43  '(nearly)_flat' convex elongate branched,
+	44  sessile_to_short long,
+	45  'massive_(>6_cell_rows_wide)' '4-6_cell_rows_wide' '1-3_cell_rows_wide',
+	46  '1000+' '>100<1000' '<100',
+	47  absent present,
+	48  roundish elongate,
+	49  marginal 'dorsal_(abaxial)' adaxial,
+	50  ±_simultaneous gradate mixed,
+	51  'few_(<12)' many,
+	52  absent present,
+	53  marginal adaxial,
+	54  lateral basal central,
+	55  introrse extrorse suprasoral circumsoral none,
+	56  absent present,
+	57  apical lateral oblique_to_transverse vert_to_slightly_oblique,
+	58  continuous_bow interrupted_bow restricted_patch,
+	59  homosporous anisosporous heterosporous,
+	60  linear triradiate papillalike furrow circular,
+	61  no yes,
+	62  absent present,
+	63  not_prominent prominent,
+	64  '(nearly)_smooth' sculptured,
+	65  '2-layers_(blechnoid)' '3-layers' '5-layers',
+	66  '(nearly)_smooth' sculptured,
+	67  equatorial polar amorphous,
+	68  tuberous filamentous 'cordate-thalloid' 'elongate-thalloid' reduced,
+	69  absent present,
+	70  no yes,
+	71  absent present,
+	72  no yes,
+	73  embedded exposed,
+	74  embedded exposed,
+	75  ³_5 '3-(rarely)_5',
+	76  '>6' '1-5_(rarely)_6',
+	77  no 'yes,_borne_from_thallus' 'yes,_borne_from_rhizoids',
+;
+
+MATRIX
+Blechnum_occidentale          1011210?11102100001010300020001(01)1100001?1001221112111001310000100112110011110
+Lonchitis_hirsuta             1011310?11002000001010300110010?110000??1000221102110001310100110012010011110
+Pteridium_aquilinum           1011310?01002002001011300111010?1100011(01)1001221102110001310100010012010011110
+Dicksonia_antarctica          1011310?01002102000010330020010?1100001?101112100111(01)121300100000102010011000
+Osmunda_cinnamomea            1311310?010200000010101000(12)0010?110000?01000110??0?0???1120110011112011011000
+Psilotum_nudum                030?????00020?0000?010??(01)0(01)0010?0??(01)000?01000010?000???0??0000001110001011012
+Adiantum_raddianum            1011310?000021000011102001(12)00010110000??1000221102110001310100110012010011110
+Vandenboschia_davallioides    1011310?010??100000010110100010?110100??1020?2100111(01)01120011000110101?0110?1
+Ophioglossum                  03??????00020?00000000301020000?100000??0100000??0?0???0??01000?1110001001000
+Huperzia                      0(03)020?0?00020?00000010??1000000?110(01)10?00100000?2??0???0??0100??01?0001001010
+Equisetum_arvense             0?020?0?10011?0000??00??1010010?110001?10100?0???0?0???0??04100100?3010011010
+Ginkgo_biloba                 0?00100?01020?001000104?1030100?1??010??2100000????0???0??2300??10?40001?0?10
+;
+END;
+
+BEGIN ASSUMPTIONS;
+	OPTIONS  DEFTYPE=unord PolyTcount=MINSTEPS ;
+END; 
+
+BEGIN TREES; 
+
+
+	UTREE Default_bush =  [&U] (Blechnum_occidentale,Lonchitis_hirsuta,Pteridium_aquilinum,Dicksonia_antarctica,Osmunda_cinnamomea,Psilotum_nudum,Adiantum_raddianum);
+	UTREE Default_bush =  [&U] (Blechnum_occidentale,Lonchitis_hirsuta,Pteridium_aquilinum,Dicksonia_antarctica,Osmunda_cinnamomea,Psilotum_nudum,Adiantum_raddianum);
+	UTREE Default_bush =  [&U] (Blechnum_occidentale,Lonchitis_hirsuta,Pteridium_aquilinum,Dicksonia_antarctica,Osmunda_cinnamomea,Psilotum_nudum,Adiantum_raddianum);
+	UTREE  * Default_bush =  [&U] (Blechnum_occidentale,Lonchitis_hirsuta,Pteridium_aquilinum,Dicksonia_antarctica,Osmunda_cinnamomea,Psilotum_nudum,Adiantum_raddianum);
+
+END;
+
+
+BEGIN NOTES;
+	TEXT  CHARACTER=4 TEXT= 'Vouchers_checked_for_all_and_Kubitizki_1990.___See_also_Alan''s_e-mail_05.26.94.__This_character_largely_modelled_after_Nixon_et_al._1994.';
+	TEXT  CHARACTER=16 TEXT= vouchers;
+	TEXT  TAXON=3 CHARACTER=16 TEXT= 'Bower_1923,_p._169';
+	TEXT  TAXON=4 CHARACTER=16 TEXT= 'D._Palmer_(pers._comm.)';
+	TEXT  CHARACTER=50 TEXT= vouchers_checked;
+	TEXT  TAXON=2 CHARACTER=50 TEXT= voucher;
+	TEXT  TAXON=3 CHARACTER=50 TEXT= 'Bower_1923,_Eames_1936';
+	TEXT  TAXON=4 CHARACTER=50 TEXT= Kramer_1990;
+	TEXT  TAXON=5 CHARACTER=50 TEXT= 'Kramer_1990:_±simultaneous';
+	TEXT  TAXON=2 CHARACTER=22 TEXT= Troop_&_Mickel_1968;
+	TEXT  TAXON=3 CHARACTER=22 TEXT= 'Troop_&_Mickel_1968_-_citing_Webster_1958_for_this_sp.';
+	TEXT  CHARACTER=22 TEXT= 'vouchers;_Troop_&_Mickel_1968';
+	TEXT  CHARACTER=26 TEXT= vouchers;
+	TEXT  CHARACTER=60 TEXT= Tryon_and_Lugardon__1991;
+	TEXT  TAXON=5 CHARACTER=61 TEXT= Kubitzki_1990;
+	TEXT  CHARACTER=62 TEXT= Tryon_&_Lugardon_1991;
+	TEXT  CHARACTER=59 TEXT= 'Bell_1979,_Sheffield_&_Bell_1987,_Tryon_&_Lugardon_1991';
+	TEXT  CHARACTER=61 TEXT= 'Kubitzki_1990,_Tryon_&_Lugardon_1991';
+	TEXT  CHARACTER=63 TEXT= 'Lloyd_1981:_Polypodium;_Tryon_&_Lugardon_1991_-_see_especially_the_family_and_generic_descriptions.';
+	TEXT  CHARACTER=64 TEXT= 'Lloyd_1981:_Polypodium;_Tryon_&_Lugardon_1991_-_see_especially_family_and_generic_descriptions.';
+	TEXT  TAXON=1 CHARACTER=64 TEXT= 'T&L_1991,_p._531,_Figs._1&2';
+	TEXT  TAXON=2 CHARACTER=64 TEXT= 'T&L_1991,_p._291-293_and_Figs._1-6:_essentially_granulate_-_some_coarse_surface_deposits.__KMP_originally_scored_this_as_0.__ARS_changed_to_1_03/95,_deciding_that_the_coarse_surface_deposits_were_actually_part_of_the_perispore_sculpturing.';
+	TEXT  TAXON=4 CHARACTER=64 TEXT= 'KMP_had_originally_scored_as_1_based_on_T&L_1991_,_p._231_Fig._1;_ARS_changed_to_0__03/95.__See_also_Figs._10-12._Prob_ok_as_0.';
+	TEXT  CHARACTER=65 TEXT= '_Tryon_&_Lugardon_1991_-_see_especially_the_family_and_generic_descriptions._See_also_general_introductory_comments_to_book_where_T&L_define_a_2-layered_exospore_as_a_blechnoid_exospore.';
+	TEXT  CHARACTER=66 TEXT= '_Tryon_&_Lugardon_1991_-_see_especially_the_family_and_generic_descriptions.';
+	TEXT  CHARACTER=52 TEXT= vouchers_seen_for_all;
+	TEXT  CHARACTER=53 TEXT= vouchers_seen_for_all;
+	TEXT  CHARACTER=54 TEXT= vouchers_seen_for_all;
+	TEXT  CHARACTER=55 TEXT= vouchers_seen_for_all;
+	TEXT  TAXON=4 CHARACTER=55 TEXT= 'cup_is_bilobed,_"valves"_connate_ at _base';
+	TEXT  CHARACTER=27 TEXT= 'States_scored_mainly_from_Kubitizki_(1990)_and_Ogura_(1972).__Some_clarifications_taken_from_Schmid_(1982).__White_&_Turner_1988:_Calochlaena._Qiu_et_al_1995:_Metaxya.';
+	TEXT  TAXON=3 CHARACTER=27 TEXT= 'Schmid_1982,_p._901-902:_not_a_dictyostele,_but_a_solenostele.';
+	TEXT  TAXON=5 CHARACTER=27 TEXT= 'Schmid_1982,_p._889';
+	TEXT  TAXON=6 CHARACTER=27 TEXT= 'See_also_Schmid_1982,_p._900_and_Kubitizki_1990_-_solenostele_between_rhizome_and_aerial_stem.';
+	TEXT  CHARACTER=28 TEXT= 'polycyclic_includes_Ogura''s_(1972)_acyclostele_term,_and_the_IIB1c_and_IIB2c_terms_in_Schmid''s_(1983)_Table_1_-_see_pp._868-873.';
+	TEXT  TAXON=3 CHARACTER=28 TEXT= 'Ogura_1972,_Kubitizki_1990,_Schmid_1982_(IIB1c)_-_see_also_p._902';
+	TEXT  CHARACTER=23 TEXT= 'N.B._For_base->_apex_of_stipe,_NOT_the_rachis!___Used_mostly_the_following_references:__Kubitizki_1990,_Ogura_1972,_Lin_&_DeVol_1977,_1978,_Keating_1968.';
+	TEXT  TAXON=1 CHARACTER=23 TEXT= 'Kubitzi_1990,_Ogura_1972,_Lin_&_DeVol_1978';
+	TEXT  TAXON=2 CHARACTER=23 TEXT= Keating_1968;
+	TEXT  TAXON=3 CHARACTER=23 TEXT= 'Keating_1968,_Ogura_1972';
+	TEXT  TAXON=4 CHARACTER=23 TEXT= _Ogura_1972;
+	TEXT  TAXON=5 CHARACTER=23 TEXT= 'Ogura_1972,_p._108,_p._99';
+	TEXT  TAXON=6 CHARACTER=23 TEXT= 'N/A.__Gifford_&_Foster:__Psilotum_nudum_has_no_leaf_trace_(it_also_has_no_stipe!)';
+	TEXT  TAXON=7 CHARACTER=23 TEXT= 'living_material_-_no_voucher_-_see_ARS_email_5/2/95.';
+	TEXT  CHARACTER=24 TEXT= 'Stipe,_NOT_rachis!__Though_state_0_seems_broad,_all_are_variations_on_the_horseshoe_shape.';
+	TEXT  TAXON=1 CHARACTER=24 TEXT= 'Kubitizki_1990,_Ogura_1972,_Lin_&_DeVol_1978';
+	TEXT  TAXON=2 CHARACTER=24 TEXT= Ogura_1972;
+	TEXT  TAXON=3 CHARACTER=24 TEXT= Keating_1968;
+	TEXT  TAXON=4 CHARACTER=24 TEXT= _Ogura_1972;
+	TEXT  TAXON=5 CHARACTER=24 TEXT= 'Ogura_1972,_p._108,_p._99';
+	TEXT  TAXON=6 CHARACTER=24 TEXT= 'NA_(Gifford_&_Foster:_P._nudum_has_no_leaf_trace)';
+	TEXT  TAXON=7 CHARACTER=24 TEXT= 'Lin_&_DeVol_1978,_p._87,_Table_3';
+	TEXT  TAXON=6 CHARACTER=25 TEXT= 'Bierhorst_1960;_1971_-_p._166';
+	TEXT  TAXON=6 CHARACTER=41 TEXT= 'Bierhorst_1971,_p._186';
+	TEXT  CHARACTER=41 TEXT= 'Gifford_and_Foster_1988,_p._68';
+	TEXT  CHARACTER=72 TEXT= 'All_homosporous_ferns_have_independent_gametophytes_(exosporic).__Heterosporous_ferns_have_gametophytes_that_are_dependent_on_the_sporophyte_(endosporic).';
+	TEXT  CHARACTER=15 TEXT= As_defined_in_text;
+	TEXT  TAXON=1 CHARACTER=66 TEXT= 'Tryon_&_Lugardon_1991:_"gemmulate"';
+	TEXT  TAXON=3 CHARACTER=66 TEXT= 'Tryon_&_Lugardon_1991:_"finely_undulate"';
+	TEXT  CHARACTER=46 TEXT= 'See_"Spore-output"_table_in_Bower_1923,_p._262-263.';
+	TEXT  TAXON=5 CHARACTER=46 TEXT= Bierhorst_1971;
+	TEXT  TAXON=6 CHARACTER=46 TEXT= White_et._al_1977;
+	TEXT  CHARACTER=2 TEXT= vouchers_looked_at_for_all;
+	TEXT  CHARACTER=10 TEXT= Vouchers_checked_for_all;
+	TEXT  CHARACTER=11 TEXT= Vouchers_checked_for_all;
+	TEXT  CHARACTER=17 TEXT= Vouchers_checked_for_all;
+	TEXT  CHARACTER=36 TEXT= Vouchers_checked_when_there_was_any_doubt;
+	TEXT  TAXON=6 CHARACTER=36 TEXT= 'Voucher_"high_up_on_tree",_but_also_know_to_occur_on_calcareous_cliffs,_therefore_not_always_epiphytic.__See_ARS_email_2/6/95_(10:21)';
+	TEXT  TAXON=7 CHARACTER=36 TEXT= 'Voucher_"rupicolous"';
+	TEXT  CHARACTER=3 TEXT= Vouchers_checked_for_all;
+	TEXT  CHARACTER=5 TEXT= 'Vouchers_checked_for_all_and_Kubitizki_1990.___See_also_Alan''s_e-mail_05.26.94.__This_character_largely_modelled_after_Nixon_et_al._1994.';
+	TEXT  TAXON=6 CHARACTER=5 TEXT= NA;
+	TEXT  TAXON=6 CHARACTER=4 TEXT= NA;
+	TEXT  CHARACTER=7 TEXT= 'Vouchers_checked_for_all_and_Kubitizki_1990.___See_also_Alan''s_e-mail_05.26.94.__This_character_largely_modelled_after_Nixon_et_al._1994.';
+	TEXT  TAXON=6 CHARACTER=7 TEXT= NA;
+	TEXT  CHARACTER=8 TEXT= 'Vouchers_checked_for_all_and_Kubitizki_1990.___See_also_Alan''s_e-mail_05.26.94.__This_character_largely_modelled_after_Nixon_et_al._1994.';
+	TEXT  TAXON=1 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=2 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=3 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=4 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=5 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=6 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=7 CHARACTER=8 TEXT= NA;
+	TEXT  CHARACTER=12 TEXT= 'see_text_for_important_references.__Where_Sen_&_De_1992_had_a_predominance_of_type_shown,_I_scored_for_most_predominant_type.__If_Kondo_1962__and_Sen_&_De_conflicted_over_same_species,_I_followed_Kondo.';
+	TEXT  CHARACTER=13 TEXT= 'see_text_for_important_references._Where_Sen_&_De_1992_had_a_predominance_of_type_shown,_I_scored_for_most_predominant_type.__If_Kondo_1962__and_Sen_&_De_conflicted_over_same_species,_I_followed_Kondo.';
+	TEXT  TAXON=1 CHARACTER=12 TEXT= 'Kondo_1962_(specified_occidentale),_Sen_&_De_1992,_Van_Cottem_1973';
+	TEXT  TAXON=2 CHARACTER=12 TEXT= 'Thurston_1969;__guess_from_Van_Cottem_1973,_p._67';
+	TEXT  TAXON=3 CHARACTER=12 TEXT= Kondo_1962;
+	TEXT  TAXON=4 CHARACTER=12 TEXT= 'Sen_&_De_1992:_rarely_parameristic';
+	TEXT  TAXON=5 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992,_see_also_arguments_in_Payne_1979.';
+	TEXT  TAXON=6 CHARACTER=12 TEXT= 'Pant_&_Khare_1971,_White_1977';
+	TEXT  TAXON=7 CHARACTER=12 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  TAXON=1 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992,_Van_Cottem_1973';
+	TEXT  TAXON=2 CHARACTER=13 TEXT= 'Thurston_1969;_guess_from_Van_Cottem_1973,_p._67';
+	TEXT  TAXON=3 CHARACTER=13 TEXT= Kondo_1962;
+	TEXT  TAXON=4 CHARACTER=13 TEXT= '_Sen_&_De_1992:_rarely_mesogenous';
+	TEXT  TAXON=5 CHARACTER=13 TEXT= 'Sen_&_De_1992,_see_Payne_1979_for_arguments';
+	TEXT  TAXON=6 CHARACTER=13 TEXT= 'Pant_&_Khare_1971,_White_1977';
+	TEXT  TAXON=7 CHARACTER=13 TEXT= 'Kondo_1962,_Sen_&_De_1992';
+	TEXT  CHARACTER=1 TEXT= Gifford_&_Foster_1988;
+	TEXT  CHARACTER=6 TEXT= 'Vouchers_for_all.__Cf._char_28:_Nixon_et_al._(1994)';
+	TEXT  CHARACTER=9 TEXT= vouchers;
+	TEXT  CHARACTER=18 TEXT= vouchers;
+	TEXT  CHARACTER=19 TEXT= vouchers_and_Kubitizki_1990_checked;
+	TEXT  CHARACTER=20 TEXT= Vouchers_checked;
+	TEXT  TAXON=6 CHARACTER=19 TEXT= NA;
+	TEXT  CHARACTER=14 TEXT= 'vouchers;_Kubitizki_1990';
+	TEXT  TAXON=1 CHARACTER=14 TEXT= 'weakly_anadromous,_nearly_isodromous';
+	TEXT  TAXON=4 CHARACTER=14 TEXT= 'Kubitizki_1990_says_"catadromous"';
+	TEXT  TAXON=6 CHARACTER=14 TEXT= NA;
+	TEXT  CHARACTER=30 TEXT= 'vouchers;_Kubitizki_1990';
+	TEXT  CHARACTER=31 TEXT= 'vouchers;_Kubitizki_1990';
+	TEXT  CHARACTER=32 TEXT= 'vouchers;_Kubitizki_1990';
+	TEXT  TAXON=2 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=3 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=4 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=5 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=6 CHARACTER=32 TEXT= NA;
+	TEXT  CHARACTER=37 TEXT= 'A_zero_score_indicates_no_mention_of_the_presence_of_canals_in_the_literature,_rather_than_a_positive_statement_that_they_do_not_occur_in_a_particular_taxon';
+	TEXT  CHARACTER=38 TEXT= 'Gifford_&_Foster_1988,_White_1961,_1963.';
+	TEXT  TAXON=3 CHARACTER=38 TEXT= 'Gifford_&_Foster_1988:_in_rhizome,_petiole,_root';
+	TEXT  CHARACTER=29 TEXT= 'Bierhorst_1971,_Gifford_and_Foster_1988';
+	TEXT  CHARACTER=39 TEXT= Fabbri_&_Menicanti_1970.__Data_unavailable_for_most_taxa.;
+	TEXT  CHARACTER=40 TEXT= Payne_and_Peterson_1973.__Information_available_only_for_a_few_taxa;
+	TEXT  TAXON=3 CHARACTER=40 TEXT= 'Payne_and_Peterson_1973_reported_hypodermis_present_in_aquilinum_and_absent_in_latiusculum_(=aquilinum).__Therefore_it_is_prob._a_polymorphic_character_in_the_species';
+	TEXT  CHARACTER=21 TEXT= 'Ogura_1972,_p._92';
+	TEXT  CHARACTER=25 TEXT= 'Bierhorst_1960,_White_1963b,_Kim_et_al._1993';
+	TEXT  CHARACTER=33 TEXT= Vouchers;
+	TEXT  TAXON=6 CHARACTER=33 TEXT= Kubitizki_1990;
+	TEXT  CHARACTER=34 TEXT= vouchers;
+	TEXT  TAXON=6 CHARACTER=35 TEXT= NA;
+	TEXT  TAXON=6 CHARACTER=34 TEXT= NA;
+	TEXT  CHARACTER=35 TEXT= 'Bierhorst_1971,_p._296_-_all_filicalean_ferns_have_2-4_protoxylem_points';
+	TEXT  TAXON=1 CHARACTER=35 TEXT= 'Bierhorst_1971,_p._296';
+	TEXT  TAXON=5 CHARACTER=35 TEXT= 'Bierhorst_1971:_triarch';
+	TEXT  CHARACTER=42 TEXT= 'General_references_(G&F_1988,_Bierhorst_1971...)';
+	TEXT  CHARACTER=47 TEXT= 'Vouchers;_Tryon_&_Tryon_1982,_Kubitizki_1990,_Bierhorst_1971,_Eames_1936,_Hill_&_Camus_1986';
+	TEXT  CHARACTER=48 TEXT= 'Vouchers;_Bierhorst_1971,_Eames_1936,_Hill_&_Camus_1986,_Kubitizki_1990,_Tryon_&_Tryon_1982.__Round_sori_=_roughly_as_long_as_wide;_elongate_sori_=_longer_than_wide_-_discrete_or_confluent_sori.';
+	TEXT  TAXON=5 CHARACTER=48 TEXT= NA;
+	TEXT  TAXON=5 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=5 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=5 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=6 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=6 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=6 CHARACTER=55 TEXT= NA;
+	TEXT  CHARACTER=56 TEXT= 'Bierhorst_1971,_Bower_1923,_Tryon_and_Tryon_1982';
+	TEXT  CHARACTER=57 TEXT= 'Kubitizki_1990,_Bower_1923,_1926,_1928,_Tryon_and_Tryon_1982,_Qiu_et_al_1995';
+	TEXT  TAXON=1 CHARACTER=57 TEXT= 'Bierhorst_1971,_p._314';
+	TEXT  TAXON=5 CHARACTER=57 TEXT= Bower;
+	TEXT  TAXON=6 CHARACTER=57 TEXT= NA;
+	TEXT  CHARACTER=58 TEXT= 'Kubitizki_1990,_Bower_1923,_1926,_1928,_Tryon_and_Tryon_1982,_Qiu_et_al_1995';
+	TEXT  TAXON=1 CHARACTER=58 TEXT= 'Bierhorst_1971,_p._314';
+	TEXT  TAXON=6 CHARACTER=58 TEXT= NA;
+	TEXT  CHARACTER=43 TEXT= 'Vouchers_checked_for_most;_Bierhorst_1971,_Bower_1923,_1926,_1928,_Kubitiaki_1990,_Qiu_et_al_1995,_T&T_1982.__See_also_ARS_e-mail_1/11/95_(10:02am)';
+	TEXT  CHARACTER=44 TEXT= 'Vouchers_checked_for_most;_Bierhorst_1971,_Campbell_1918,_Eames_1936,_Gupta_1962,_Kubitizki_1990,_Marschall_1925';
+	TEXT  CHARACTER=45 TEXT= 'Vouchers;_Bierhorst_1968,_1971,_Campbell_1918,_Gupta_1962,_Eames_1936,_Kubitizki_1990,_Marschall_1925';
+	TEXT  TAXON=5 CHARACTER=45 TEXT= Kubitizki_1990;
+	TEXT  CHARACTER=49 TEXT= 'See_text_for_explanation_of_scores_restricted_to_taxa_with_bladed_fertile_fronds/segments_only_and_for_references.';
+	TEXT  TAXON=5 CHARACTER=49 TEXT= 'NA,_fertile_segments_without_leaf_blade';
+	TEXT  TAXON=6 CHARACTER=49 TEXT= 'NA,_in_axil_of_leaf:_terminal_on_axil?__Complex_situation_(see_Bierhorst_1971,_Eames_1936,_Ogura_1972,_Tryon_&_Tryon_1982,_Wagner_1977)';
+	TEXT  CHARACTER=68 TEXT= 'Predominantly_sensu_Nayar_and_Kaur_1971_plus_some_primary_literature,_Bierhorst_1971,_Bower_1923,_1926,_1928,_Eames_1936,_Kubitizki_1990,__Tryon_and_Tryon_1982.';
+	TEXT  CHARACTER=69 TEXT= Followed_Nayar_&_Kaur_1971_primarily.__See_text_for_other_gen_refs_that_were_checked;
+	TEXT  CHARACTER=70 TEXT= See_text_for_gametophyte_refs;
+	TEXT  CHARACTER=71 TEXT= 'Primary_refs:_Boullard_1957,_1979,_Campbell_1908,_Holloway_1930,_Bierhorst_1971,_Nayar_&_Kaur_1971';
+	TEXT  TAXON=5 CHARACTER=71 TEXT= Campbell_1908;
+	TEXT  CHARACTER=73 TEXT= 'Bierhorst_1971,_Eames_1936,_Gifford_&_Foster_1988,_Nayar_&_Kaur_1971.__See_text_for_comments_on_heterosporous_ferns';
+	TEXT  CHARACTER=74 TEXT= 'Bierhorst_1971,_Eames_1936,_Gifford_&_Foster_1988,_Nayar_&_Kaur_1971.___See_text_for_comments_on_heterosporous_ferns';
+	TEXT  CHARACTER=75 TEXT= 'Bierhorst_1971,_Campbell_1892,_Eames_1936,_Gifford_&_Foster_1988,_Nayar_&_Kaur_1971,_Stokey_&_Atkinson_1956,_M.D._Turner_(pers._comm._-_Metaxya).';
+	TEXT  TAXON=1 CHARACTER=75 TEXT= '"3"';
+	TEXT  TAXON=5 CHARACTER=75 TEXT= '"8-25_cells",_Tryon_&_Tryon_1982,_Nayar_&_Kaur_1971';
+	TEXT  TAXON=6 CHARACTER=75 TEXT= '"numerous",_Gifford_&_Foster_1988';
+	TEXT  CHARACTER=76 TEXT= 'Bierhorst_1971,_Bower_1926,_Eames_1936,_Nayar_&_Kaur_1971_(p._321),_Stokey_&_Atkinson_1956,_M.D._Turner_(pers._comm.)';
+	TEXT  TAXON=1 CHARACTER=76 TEXT= '4-5';
+	TEXT  TAXON=5 CHARACTER=76 TEXT= '6,_Eames_1936';
+	TEXT  TAXON=6 CHARACTER=76 TEXT= '4-6';
+	TEXT  CHARACTER=77 TEXT= 'Farrar_1967,_1974,_Nayar_&_Kaur_1971';
+	TEXT  CHARACTER=67 TEXT= 'Nayar_&_Kaur_1968,_1971.__See_text_for_other_refs';
+	TEXT  TAXON=6 CHARACTER=67 TEXT= 'Bierhorst_1971,_p._187;_Darnell-Smith_1917,_fig._6;_Whittier_1975:__Looks_polar,_first_wall_parallel_to_equatorial_plane.';
+	TEXT  TAXON=6 CHARACTER=6 TEXT= NA;
+	TEXT  CHARACTER=51 TEXT= Vouchers_checked_for_all;
+	TEXT  TAXON=5 CHARACTER=51 TEXT= NA;
+	TEXT  TAXON=6 CHARACTER=51 TEXT= voucher;
+	TEXT  TAXON=6 CHARACTER=77 TEXT= 'Bierhorst_1971,_p._186;__Farrar_&_Johnson-Groh_1990,_p._1168';
+	TEXT  TAXON=11 TEXT= 'Bierhorst_1971,_Boullard_1979,_Brown_1976,_Gifford_&_Foster_1988,_FNA_1992,_Kubitizki_1990,_Ogura_1972,_Schmid_1982,_Tryon_&_Lugardon_1990,_Tryon_&_Tryon_1982,_Brown_1976,_Duckett_1973,_Hauke_1957,_1979,_Johnson_1937,_Scagel_1984';
+	TEXT  TAXON=11 CHARACTER=1 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=2 TEXT= 'NA;_following_arguments_of_Bierhorst_1971_&_Ogura_1972_-_no-one_takes_stand_on_whether_the_sporangiophore_is_leaf_or_stem.__There_are_no_"fertile_leaves".__Sporangiophores_likely_of_stem_origin_with_sporangia_attached_directly_to_stems.';
+	TEXT  TAXON=11 CHARACTER=3 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=4 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=5 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=6 TEXT= NA;
+	TEXT  TAXON=11 CHARACTER=7 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=8 TEXT= NA;
+	TEXT  TAXON=11 CHARACTER=9 TEXT= 'Ogura_1972,_pgs._124,_125,_248;_Scagel_et_al._1984,_p._441;_Johnson_1937';
+	TEXT  TAXON=11 CHARACTER=10 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=11 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=12 TEXT= 'Parallel_to_preceding_wall:_see_Ogura_1972,_p._242,_Fig._269,_esp._269-4,_269-5.__See_also_email_to_ARS_June_1_1995.__See_also_Hauke_1957,_p._178';
+	TEXT  TAXON=11 CHARACTER=13 TEXT= 'See_Hauke_1957,_p._178,_and_esp._Fig._2:__"Strasburger_pointed_out_that_the_2_outer_cells_were_subsidiary_cells";_Ogura_1972,_p._242,_Fig._269,_esp._Fig._269-4_and_269-5.__Mesogenous_origin_is_very_clear_for_subsidiary_cells.__See_email_to_ARS_6/1/95';
+	TEXT  TAXON=11 CHARACTER=14 TEXT= NA;
+	TEXT  TAXON=11 CHARACTER=15 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=16 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=17 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=18 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=19 TEXT= 'NA_(leaves_are_sessile)';
+	TEXT  TAXON=11 CHARACTER=20 TEXT= NA;
+	TEXT  TAXON=11 CHARACTER=21 TEXT= 'Ogura_1972,_p._242_"colorless_sclerenchyma";_Brown_1976:_"collenchyme_annulaire"_-_did_tests_showing_E._arvense_did_not_have_sclerenchyma,_but_collenchyma';
+	TEXT  TAXON=11 CHARACTER=22 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=23 TEXT= 'NA_(no_stipe)';
+	TEXT  TAXON=11 CHARACTER=24 TEXT= 'NA_(no_stipe)';
+	TEXT  TAXON=11 CHARACTER=25 TEXT= 'see_Bierhorst_1971,_p._85_and_Fig._27-8_(f-k)';
+	TEXT  TAXON=11 CHARACTER=26 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=27 TEXT= 'Schmid_1982,_p._905';
+	TEXT  TAXON=11 CHARACTER=28 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=29 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=30 TEXT= 'herbarium_specimens;_Hauke_1979:_p._391;_Ogura_1972,_p._240;_Scagel_et_al._1984,_p._441';
+	TEXT  TAXON=11 CHARACTER=31 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=32 TEXT= NA;
+	TEXT  TAXON=11 CHARACTER=33 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=34 TEXT= herbarium_specimens;
+	TEXT  TAXON=11 CHARACTER=35 TEXT= 'Gifford_&_Foster_1988,_p._187_"triarch_or_tetrarch".__Ogura_1972,_p._247,_249.';
+	TEXT  TAXON=11 CHARACTER=36 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=37 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=38 TEXT= 'Bierhorst_1971,_p._87';
+	TEXT  TAXON=11 CHARACTER=39 TEXT= not_mentionned_in_Fabbri_&_Menicanti_1970;
+	TEXT  TAXON=11 CHARACTER=40 TEXT= 'Ogura_1972,_p._129:_"hypodermis_is_present_only_on_abaxial_side_of_leaf"';
+	TEXT  TAXON=11 CHARACTER=41 TEXT= 'Gifford_&_Foster_1988,_p._68,_Fig._6-1';
+	TEXT  TAXON=11 CHARACTER=42 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=43 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=44 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=45 TEXT= NA;
+	TEXT  TAXON=11 CHARACTER=46 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=47 TEXT= NA;
+	TEXT  TAXON=11 CHARACTER=48 TEXT= NA;
+	TEXT  TAXON=11 CHARACTER=49 TEXT= 'NA_(since_the_sporangiophores_have_no_blades)';
+	TEXT  TAXON=11 CHARACTER=51 TEXT= NA;
+	TEXT  TAXON=11 CHARACTER=52 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=53 TEXT= NA;
+	TEXT  TAXON=11 CHARACTER=54 TEXT= NA;
+	TEXT  TAXON=11 CHARACTER=50 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=55 TEXT= NA;
+	TEXT  TAXON=11 CHARACTER=56 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=57 TEXT= NA;
+	TEXT  TAXON=11 CHARACTER=58 TEXT= NA;
+	TEXT  TAXON=11 CHARACTER=59 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=60 TEXT= 'T&L_1991,_p._586:_"circular_aperture_with_large_subapertural_opturator_in_Equisetum_is_unique_in_pteridophytes"';
+	TEXT  TAXON=11 CHARACTER=61 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=62 TEXT= T&L_1991;
+	TEXT  TAXON=11 CHARACTER=63 TEXT= 'see_T&L_1991,_p._587,_Fig._11,_to_see_how_thin_perispore_is_relative_to_exospore';
+	TEXT  TAXON=11 CHARACTER=64 TEXT= 'abundant_spherules_seem_to_be_part_of_the_epispore_morphology_-_see_T&L_1991';
+	TEXT  TAXON=11 CHARACTER=65 TEXT= 'T&L_1991,_p._586';
+	TEXT  TAXON=11 CHARACTER=66 TEXT= 'T&L_1991,_p._587,__Figs._8_&_12:_exospore_looks_smooth';
+	TEXT  TAXON=11 CHARACTER=67 TEXT= 'Bierhorst_1971,_p._94_shows_that_the_spore_sheds_its_outer_coat_before_dividing.__Therefore_it_is_impossible_to_determine_the_orientation_of_the_first_division_with_reference_to_the_aperture_since_it_is_no_longer_there_for_reference.';
+	TEXT  TAXON=11 CHARACTER=68 TEXT= 'Duckett_1973:__looks_elongate-thalloid/branched_-_eventually_forming_a_pin-cushion_shape,_i.e._there_is_ultimately_more_dimensionality_here_than_in_other_ribbon-like_gametophytes.__T&T_1982_say_"thallose_strap-shaped,_branched".';
+	TEXT  TAXON=11 CHARACTER=69 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=70 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=71 TEXT= Boullard_1979;
+	TEXT  TAXON=11 CHARACTER=72 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=73 TEXT= 'Duckett_1973,_Hauke_1979,_p._392';
+	TEXT  TAXON=11 CHARACTER=74 TEXT= Duckett_1973;
+	TEXT  TAXON=11 CHARACTER=75 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=76 TEXT= Gen_refs;
+	TEXT  TAXON=11 CHARACTER=77 TEXT= Gen_refs;
+	TEXT  TAXON=6 CHARACTER=30 TEXT= 'Ogura_1972,_p._16';
+	TEXT  TAXON=8 TEXT= 'Voucher:_Higashino_1270,_from_Hawaii_(UC).__Unless_otherwise_specified,_sources_(for_the_most_part)_for_character_state_scores_are_the_same_as_those_used_in_Pryer_et_al._1995_(see_Table_1_and_Appendix_2_for_additional_information).';
+	TEXT  TAXON=9 TEXT= 'Based_on_O._reticulatum,petiolatum,engelmanii_to_match_rbcL,18S,atpB_data_sets_(no_polymorphisms)._Voucher=Steyermark_97526,_from_Venezuela_(UC)._Sources_for_character_state_scores_same_as_in_Pryer_et_al._1995_(see_Table_1_&_Appendix_2_for_more_info).';
+	TEXT  TAXON=10 TEXT= 'Based_on_lucidula_&_campiana_to_match_rbcL,atpB,18S_data_sets._Some_polymorphisms,_e.g.,_character_2._Voucher=Rolland-Germain_s.n.,_Quebec_(UC)._Sources_same_as_Pryer_et_al._1995_(also_Table_1_&_Appendix_2);_see_also_Whittier&Webster,_1986,_AFJ_76:48-55.';
+	TEXT  TAXON=12 TEXT= 'Voucher=Chien_5175,_China_(UC);_living_material_from_UC_campus._General_Ginkgo_refs_used_for_scoring:_Gifford_&Foster_1988,_Bierhorst_1971,_Kubitizki_1990,_Arnott_1959_(AJB_46),_Fryns-Claussens_&_van_Cotthem_1973_(Bot_Rev_39),_Rohr_1977_(Cytologia_42).';
+	TEXT  TAXON=10 CHARACTER=2 TEXT= 'H._lucidula_has_nearly_monomorphic_leaves;_H._campiana_has_dimorphic_leaves,_therefore,_scored_as_polymorphism.';
+	TEXT  TAXON=9 CHARACTER=2 TEXT= 'Wagner_(in_Kubitzki,_1990):"_leaf_blade..appears_to_be_phyllodial..results_from..loss_of..morphological_blade_&_retention_of_only..axis_which_becomes_expanded_laterally"_We_score_as_dimorphic,_presuming_dimorphism_(as_in_Botrychium)_before_loss_of_blade.';
+	TEXT  TAXON=12 CHARACTER=2 TEXT= 'The_homologies_of_the_"fertile_blade"_are_still_in_dispute.__It_is_unclear_what_would_be_homologous_to_"fertile_leaves"_in_Ginkgo.';
+	TEXT  TAXON=9 CHARACTER=3 TEXT= 'Blades_lost_in_Ophioglossum_-_see_footnotes_under_character_2_"fertile-sterile_leaf_differentiation"';
+	TEXT  TAXON=9 CHARACTER=4 TEXT= 'N/A';
+	TEXT  TAXON=9 CHARACTER=5 TEXT= 'N/A';
+	TEXT  TAXON=9 CHARACTER=6 TEXT= 'N/A';
+	TEXT  TAXON=9 CHARACTER=7 TEXT= 'N/A';
+	TEXT  TAXON=9 CHARACTER=8 TEXT= 'N/A';
+	TEXT  TAXON=12 CHARACTER=7 TEXT= 'Scored_as_non-anastomosing,_even_though_occasional_and_sporadic_vein_unions_occur_in_about_10%_of_the_leaves_(Arnott,_1959:_AJB_46).';
+	TEXT  TAXON=12 CHARACTER=12 TEXT= 'Ginkgo_scored_same_as_Cycas,_largely_on_basis_of_Fryns-Claussens_&_van_Cotthem_(1973:_Bot._Rev._39:71-138)._In_Ginkgo,_guard_cells_are_formed_by_longitud._division_of_GMC;_all_subsid._cells_are_produced_by_unequal_divisions_of_adjacent_epidermal_cells.';
+	TEXT  TAXON=12 CHARACTER=13 TEXT= 'Ginkgo_scored_same_as_Cycas,_largely_on_basis_of_Fryns-Claussens_&_van_Cotthem_(1973:_Bot._Rev._39:71-138)._In_Ginkgo,_guard_cells_are_formed_by_longitud._division_of_GMC;_all_subsid._cells_are_produced_by_unequal_divisions_of_adjacent_epidermal_cells.';
+	TEXT  TAXON=8 CHARACTER=12 TEXT= 'N/A';
+	TEXT  TAXON=8 CHARACTER=13 TEXT= 'N/A';
+	TEXT  TAXON=8 CHARACTER=21 TEXT= Vandenboschia_has_sclerenchyma_fibers_in_the_cortex_of_the_rhizome_and_probably_also_in_the_periphery_of_the_petiole.;
+	TEXT  TAXON=9 CHARACTER=23 TEXT= 'Ophioglossum_scored_as_in_O._vulgatum_(see_Bierhorst,_1971,_p._139).';
+	TEXT  TAXON=9 CHARACTER=24 TEXT= 'Ophioglossum_scored_as_in_O._vulgatum_(Bierhorst,_1971,_p._139).';
+	TEXT  TAXON=12 CHARACTER=24 TEXT= '2_vascular_bundles_run_length_of_petiole_to_blade_base._Score_as_different_character_state_in_future_analyses_since_it_is_clear_what_state_is?_(see_Foster_&_Gifford,_1974:_449;_Bierhorst,_1971:_420).__Could_it_be_a_"broken"_C_-_needs_checking...';
+	TEXT  TAXON=9 CHARACTER=25 TEXT= 'Ophioglossum_is_scored_as_having_circular_bordered_pits,_as_in_O._vulgatum_(Kim_et_al.,_1993).';
+	TEXT  TAXON=10 CHARACTER=25 TEXT= 'Huperzia_(and_species_of_the_H._selago_group)_apparently_has_circular_bordered_pits_(Bierhorst,_1971:_9,_12,_504,_fig._27-8D).';
+	TEXT  TAXON=12 CHARACTER=25 TEXT= 'Ginkgo_has_circular_bordered_pits_(Bierhorst,_1971:_420,_505).';
+	TEXT  TAXON=8 CHARACTER=26 TEXT= 'Vandenboschia_has_dorsiventral_symmetry_in_the_rhizome_(a_polymorphism_in_the_family).';
+	TEXT  TAXON=9 CHARACTER=27 TEXT= 'Most_spp._of_Ophioglossum_have_a_distinct_dictyostele_(M._Gewirtz_&_A._Fahn.__1960.__The_anatomy_of_the_sporophyte_and_gametophyte_of_Ophioglossum_lusitanicum_L.__Phytomorphology_10:_342-351).';
+	TEXT  TAXON=9 CHARACTER=29 TEXT= 'Ophioglossum_has_not_been_reported_to_have_secondary_xylem._(This_score_was_recorded_as_"1"_for_the_analyses_in_Wolf_et_al._in_Soltis_et_al._1998).';
+	TEXT  TAXON=12 CHARACTER=34 TEXT= No_information_located;
+	TEXT  TAXON=12 CHARACTER=35 TEXT= No_information_located;
+	TEXT  TAXON=10 CHARACTER=36 TEXT= 'H._lucidula_is_terrestrial;_H._campiana_is_epiphytic';
+	TEXT  TAXON=8 CHARACTER=36 TEXT= 'V._davallioides_is_epiphytic_(a_polymorphism_in_the_family).';
+	TEXT  TAXON=12 CHARACTER=37 TEXT= 'Mucilage_canals_abundant_throughout_pith,_cortex,_and_between_leaf_veins_in_Ginkgo_(Kubitzki_1990:_284).';
+	TEXT  TAXON=10 CHARACTER=41 TEXT= '(This_score_was_recorded_as_"?"_for_the_analyses_in_Wolf_et_al._in_Soltis_et_al._1998).';
+	TEXT  TAXON=12 CHARACTER=41 TEXT= 'There_is_a_free-nuclear_phase_in_Ginkgo,_as_in_Cycas_(Foster_and_Gifford,_1974:_456).';
+	TEXT  TAXON=12 CHARACTER=46 TEXT= '>1000_microspores/male_sporangium;_linear_tetrad_of_megaspores_in_female_sporangium_(Foster_&_Gifford,_1974:_452-453);_scored_as_0&2_in_analyses_for_Wolf_et_al_in_Soltis_et_al._1998._Scored_for_microspores_only_here._Megaspores_not_free-sporing.';
+	TEXT  TAXON=8 CHARACTER=46 TEXT= 'Actual__voucher_count_ca._60_(probably_64)_spores/sporangium._Score_reported_for_Cephalomanes_(also_Hymenophyllaceae)_could_be_incorrect,_or_character_may_be_polymorphic_for_family;_literature_reports_may_be_incorrect,_in_part._See_Bower_1923,_p._262-263';
+	TEXT  TAXON=12 CHARACTER=48 TEXT= NA;
+	TEXT  TAXON=12 CHARACTER=49 TEXT= 'Microsporangia_and_megasporangia_not_obviously_associated_with_leaves._Homologies_of_fertile_appendages_in_microstrobilus_unknown._Homologies_of_ovuliferous_structure_uncertain_and_speculative_(collar=vestigial_sporophyll?)._See_Foster&Gifford_1974:453.';
+	TEXT  TAXON=12 CHARACTER=60 TEXT= 'Erdtman_1957:_21.__This_score_is_for_free-sporing_microspores.__Megaspores_are_not_free-sporing.';
+	TEXT  TAXON=10 CHARACTER=64 TEXT= 'Huperzia_apparently_lacks_a_perispore_(Tryon_and_Lugardon,_1991:589),_therefore_scored_as_missing_data.';
+	TEXT  TAXON=10 CHARACTER=63 TEXT= 'Huperzia_apparently_lacks_a_perispore_(Tryon_and_Lugardon,_1991:589),_therefore_scored_as_missing_data.__(Score_incorrectly_recorded_as_0_for_analyses_in_Wolf_et_al._in_Soltis_&_Soltis_1997).';
+	TEXT  TAXON=9 CHARACTER=64 TEXT= 'Ophioglossum_s.s._variable_with_regard_to_perispore_patterning._O._vulgatum:_T&L,_1991:_36,_fig._12_=_echinate;_O._lusitanicum:T&L,_1991:37,_fig_16_=_unornamented_(at_least_in_immature_spores).';
+	TEXT  TAXON=12 CHARACTER=65 TEXT= 'Pollen_wall_of_Ginkgo_essentially_3-layered:_fairly_uniform_sexine_(tectum+poorly_developed_baculae),_+_2_nexine_layers_(Rohr,_1977)._One_could_interpret__sexine_as_2-layered_(making_exine_4-layered),_but_baculae_not_nearly_as_well_developed_as_in_cycads';
+	TEXT  TAXON=12 CHARACTER=66 TEXT= Rohr_1977;
+	TEXT  TAXON=9 CHARACTER=67 TEXT= 'Appears_polar,_insofar_as_first_cell_division_(Nayar&Kaur,_1971,_p.324;_Whittier&Moyroud,_1993,_AFJ_83:41-46;_Whittier,_1981,_AFJ_71:_13-19)._NB:_Nayar&Kaur_(1971,_p._301)_considered_that_amorphous_germination_might_occur_in_Ophioglossaceae.';
+	TEXT  TAXON=10 CHARACTER=67 TEXT= 'Unable_to_find_information_on_spore_germination_pattern_for_Huperzia;_early_stages_not_seen_by_Whittier_&_Webster,_1986,_AFJ_76:_48-55.';
+	TEXT  TAXON=12 CHARACTER=68 TEXT= 'Male_gametophyte_is_4-celled_upon_release_of_pollen,_ultimately_5-celled.__Female_gametophyte_is_multicellular_(like_cycads),_much_larger,_and_at_first_free-nuclear;_later_there_is_a_cellular_stage_and_the_archegonia_are_produced.__Reword_character?';
+	TEXT  TAXON=12 CHARACTER=73 TEXT= 'NA.__Ginkgo_lacks_antheridia;_the_male_gametophyte_is_completely_contained_within_the_pollen_grain.';
+	TEXT  TAXON=12 CHARACTER=74 TEXT= 'Ginkgo_has_deeply_embedded_archegonia_(Foster_&_Gifford,_1974:_458;_Bierhorst,_1971:_421.';
+	TEXT  TAXON=10 CHARACTER=74 TEXT= 'Huperzia_has_deeply_embedded_archegonia_(Whittier_&_Webster,_1986,_AFJ__76:_48-55),_but_neck_cells_extend_beyond_surface_for_a_least_4_tiers_(was_scored_as_"0"_in_Wolf_et_al._in_Soltis_et_al._1998).';
+	TEXT  TAXON=12 CHARACTER=76 TEXT= 'Archegonial_neck_in_Ginkgo_is_a_tier_only_2_cells_high_(Foster_&_Gifford,_1974:_458).';
+	TEXT  TAXON=10 CHARACTER=76 TEXT= 'Difficult_to_judge_(Whittier_&_Webster,_1986,_AFJ__76:_48-55,_fig._11);__scored_here_as_"1",_1-5_cells.';
+	TEXT  TAXON=10 CHARACTER=77 TEXT= 'Vegetative_reproductive_bodies_are_said_to_be_produced_from_gametophytes_of_Lycopodium_phlegmaria_(=Huperzia),_Bierhorst,_1971:_19,_citing_Treub,_1884.__We_decided_these_were_not_homologous_to_"gemmae"_in_the_usual_sense.';
+	TEXT  TAXON=12 CHARACTER=50 TEXT= 'Presumably_microsporangia_mature_simultaneously,_and_so_do_megasporangia?';
+END;
+
+BEGIN MACCLADE;
+Version 3.05;
+LastModified -1350142544;
+Singles 1000&/0;
+END;
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/W98morph.nex
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/characters.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/characters.nex	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/characters.nex	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,151 @@
+#nexus
+
+[!
+***************************************************
+* This NEXUS file is designed to test the NCL by  *
+* presenting it with several different variants   *
+* of the CHARACTERS block.  After each variant,   *
+* a special 'showall' comment directs the nexus   *
+* reader to spit out the contents of all blocks   *
+* currently stored.  The file reference.txt holds *
+* the output expected (use the DOS command fc or  *
+* the UNIX command diff to compare your output to * 
+* reference.txt to see if your implementation is  * 
+* working correctly.                              *
+***************************************************
+]
+
+begin taxa;
+  dimensions ntax=6;
+  taxlabels
+	'P. fimbriata'
+	'P. robusta'
+	'P. americana'
+	'P. myriophylla'
+	'P. polygama'
+	'P. macrophylla'
+  ;
+end;
+
+[!
+*************
+* Standard  *
+*************
+]
+begin characters;
+  dimensions nchar=45;
+  format datatype=dna missing=? gap=-;
+  matrix
+	P._fimbriata    acctcggcttaacgaacctcggcttaacgaacctcggcttaacga
+	P._robusta      acctcggcttaaccaacctcggcttaacgaacctcggcttaacga
+	P._americana    acgtcgctttca---acgtcgctttcaccaacgtcgctttcacca
+	P._myriophylla  acgtcgctttca---acgtcgctttcaccaacgtc?ctttcacca
+	P._polygama     acgtcgctctcaccaacgtcgctttcaccaacgtc?ctttcacca
+	P._macrophylla  acgtcgctctcaccaacgtcgctttcaccaacgtcgctttcacca
+  ;
+end;
+
+[&showall]
+
+[!
+**********
+* Tokens *
+**********
+]
+begin characters;
+  dimensions nchar=3;
+  charstatelabels
+	1 'leaf margins' / entire fimbriate,
+	2 'flower color' / 'white to cream' crimson,
+	3 'breeding system' / hermaphroditic gynomonoecious gynodioecious dioecious
+  ;
+  format tokens;
+  matrix
+	P._fimbriata    fimbriate  crimson         gynomonoecious
+	P._robusta      fimbriate  crimson         gynomonoecious
+	P._americana    entire     white_to_cream  hermaphroditic
+	P._myriophylla  entire     white_to_cream  hermaphroditic
+	P._polygama     entire     white_to_cream  dioecious
+	P._macrophylla  entire     crimson         gynodioecious
+  ;
+end;
+
+[&showall]
+
+[!
+***********
+* Symbols *
+***********
+]
+begin characters;
+  dimensions nchar=3;
+  charstatelabels
+	1 'leaf margins' / entire fimbriate,
+	2 'flower color' / 'white to cream' crimson,
+	3 'breeding system' / hermaphroditic gynomonoecious gynodioecious dioecious
+  ;
+  format notokens symbols="0123";
+  matrix
+	P._fimbriata    111
+	P._robusta      111
+	P._americana    000
+	P._myriophylla  000
+	P._polygama     003
+	P._macrophylla  012
+  ;
+end;
+
+[&showall]
+
+[!
+*****************************
+* Interleaved, missing taxa *
+*****************************
+]
+begin characters;
+  dimensions ntax=4 nchar=15;
+  format datatype=dna interleave;
+  matrix
+	P._fimbriata    acctcggc
+	P._robusta      acctcggc
+	P._americana    acgtcgct
+	P._myriophylla  acgtcgct
+
+	P._fimbriata    ttaacga
+	P._robusta      ttaacca
+	P._americana    ctcacca
+	P._myriophylla  ttcacca
+  ;
+end;
+
+[&showall]
+
+[!
+****************
+** transposed **
+****************
+]
+
+begin characters;
+  dimensions nchar=15;
+  format datatype=dna transpose;
+  matrix
+      site_1   aaaaaa
+      site_2   cccccc
+      site_3   ccggcc
+      site_4   tttttt
+      site_5   cccccc
+      site_6   gggggg
+      site_7   ggcccc
+      site_8   cctttt
+      site_9   ttcttt
+      site_10  tttttt
+      site_11  aacccc
+      site_12  aaaaaa
+      site_13  cccccc
+      site_14  gcccgg
+      site_15  aaaaaa
+  ;
+end;
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/characters.nex
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/characters.ref.txt
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/characters.ref.txt	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/characters.ref.txt	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,302 @@
+
+***************************************************
+* This NEXUS file is designed to test the NCL by  *
+* presenting it with several different variants   *
+* of the CHARACTERS block.  After each variant,   *
+* a special 'showall' comment directs the nexus   *
+* reader to spit out the contents of all blocks   *
+* currently stored.  The file reference.txt holds *
+* the output expected (use the DOS command fc or  *
+* the UNIX command diff to compare your output to * 
+* reference.txt to see if your implementation is  * 
+* working correctly.                              *
+***************************************************
+
+Reading "TAXA" block...
+Finished with "TAXA" block.
+
+*************
+* Standard  *
+*************
+
+Reading "CHARACTERS" block...
+Finished with "CHARACTERS" block.
+
+********** Contents of the TAXA block **********
+
+TAXA block contains 6 taxa
+	1	P. fimbriata
+	2	P. robusta
+	3	P. americana
+	4	P. myriophylla
+	5	P. polygama
+	6	P. macrophylla
+
+********** Contents of the CHARACTERS block **********
+
+CHARACTERS block contains 6 taxa and 45 characters
+  Data type is "DNA"
+  Ignoring case
+  Data matrix entries are expected to be single symbols
+  Taxon labels are expected on left side of matrix
+  Matrix neither transposed nor interleaved
+  Missing data symbol is '?'
+  No match character specified
+  Gap character specified is '-'
+  Valid symbols are: ACGT
+  Equate macros in effect:
+    B = {CGT}
+    D = {AGT}
+    H = {ACT}
+    K = {GT}
+    M = {AC}
+    N = {ACGT}
+    R = {AG}
+    S = {CG}
+    V = {ACG}
+    W = {AT}
+    X = {ACGT}
+    Y = {CT}
+  No characters were eliminated
+  The following characters have been excluded:
+    (no characters excluded)
+  The following taxa have been deleted:
+    (no taxa deleted)
+  Data matrix:
+    P. fimbriata       ACCTCGGCTTAACGAACCTCGGCTTAACGAACCTCGGCTTAACGA
+    P. robusta         ACCTCGGCTTAACCAACCTCGGCTTAACGAACCTCGGCTTAACGA
+    P. americana       ACGTCGCTTTCA---ACGTCGCTTTCACCAACGTCGCTTTCACCA
+    P. myriophylla     ACGTCGCTTTCA---ACGTCGCTTTCACCAACGTC?CTTTCACCA
+    P. polygama        ACGTCGCTCTCACCAACGTCGCTTTCACCAACGTC?CTTTCACCA
+    P. macrophylla     ACGTCGCTCTCACCAACGTCGCTTTCACCAACGTCGCTTTCACCA
+
+**********
+* Tokens *
+**********
+
+Reading "CHARACTERS" block...
+Finished with "CHARACTERS" block.
+
+********** Contents of the TAXA block **********
+
+TAXA block contains 6 taxa
+	1	P. fimbriata
+	2	P. robusta
+	3	P. americana
+	4	P. myriophylla
+	5	P. polygama
+	6	P. macrophylla
+
+********** Contents of the CHARACTERS block **********
+
+CHARACTERS block contains 6 taxa and 3 characters
+  Data type is "standard"
+  Ignoring case
+  Multicharacter tokens allowed in data matrix
+  Taxon labels are expected on left side of matrix
+  Character and character state labels:
+	1	leaf margins
+		entire
+		fimbriate
+	2	flower color
+		white to cream
+		crimson
+	3	breeding system
+		hermaphroditic
+		gynomonoecious
+		gynodioecious
+		dioecious
+  Matrix neither transposed nor interleaved
+  Missing data symbol is '?'
+  No match character specified
+  No gap character specified
+  Valid symbols are: 01
+  No equate macros have been defined
+  No characters were eliminated
+  The following characters have been excluded:
+    (no characters excluded)
+  The following taxa have been deleted:
+    (no taxa deleted)
+  Data matrix:
+    P. fimbriata         fimbriate  crimson  gynomonoecious
+    P. robusta           fimbriate  crimson  gynomonoecious
+    P. americana         entire  white to cream  hermaphroditic
+    P. myriophylla       entire  white to cream  hermaphroditic
+    P. polygama          entire  white to cream  dioecious
+    P. macrophylla       entire  crimson  gynodioecious
+
+***********
+* Symbols *
+***********
+
+Reading "CHARACTERS" block...
+Finished with "CHARACTERS" block.
+
+********** Contents of the TAXA block **********
+
+TAXA block contains 6 taxa
+	1	P. fimbriata
+	2	P. robusta
+	3	P. americana
+	4	P. myriophylla
+	5	P. polygama
+	6	P. macrophylla
+
+********** Contents of the CHARACTERS block **********
+
+CHARACTERS block contains 6 taxa and 3 characters
+  Data type is "standard"
+  Ignoring case
+  Data matrix entries are expected to be single symbols
+  Taxon labels are expected on left side of matrix
+  Character and character state labels:
+	1	leaf margins
+		entire
+		fimbriate
+	2	flower color
+		white to cream
+		crimson
+	3	breeding system
+		hermaphroditic
+		gynomonoecious
+		gynodioecious
+		dioecious
+  Matrix neither transposed nor interleaved
+  Missing data symbol is '?'
+  No match character specified
+  No gap character specified
+  Valid symbols are: 0123
+  No equate macros have been defined
+  No characters were eliminated
+  The following characters have been excluded:
+    (no characters excluded)
+  The following taxa have been deleted:
+    (no taxa deleted)
+  Data matrix:
+    P. fimbriata       111
+    P. robusta         111
+    P. americana       000
+    P. myriophylla     000
+    P. polygama        003
+    P. macrophylla     012
+
+*****************************
+* Interleaved, missing taxa *
+*****************************
+
+Reading "CHARACTERS" block...
+Finished with "CHARACTERS" block.
+
+********** Contents of the TAXA block **********
+
+TAXA block contains 6 taxa
+	1	P. fimbriata
+	2	P. robusta
+	3	P. americana
+	4	P. myriophylla
+	5	P. polygama
+	6	P. macrophylla
+
+********** Contents of the CHARACTERS block **********
+
+CHARACTERS block contains 4 taxa and 15 characters
+  Data type is "DNA"
+  Ignoring case
+  Data matrix entries are expected to be single symbols
+  Taxon labels are expected on left side of matrix
+  Matrix interleaved but not transposed
+  Missing data symbol is '?'
+  No match character specified
+  No gap character specified
+  Valid symbols are: ACGT
+  Equate macros in effect:
+    B = {CGT}
+    D = {AGT}
+    H = {ACT}
+    K = {GT}
+    M = {AC}
+    N = {ACGT}
+    R = {AG}
+    S = {CG}
+    V = {ACG}
+    W = {AT}
+    X = {ACGT}
+    Y = {CT}
+  No characters were eliminated
+  The following characters have been excluded:
+    (no characters excluded)
+  The following taxa have been deleted:
+    (no taxa deleted)
+  Data matrix:
+    P. fimbriata       ACCTCGGCTTAACGA
+    P. robusta         ACCTCGGCTTAACCA
+    P. americana       ACGTCGCTCTCACCA
+    P. myriophylla     ACGTCGCTTTCACCA
+
+****************
+** transposed **
+****************
+
+Reading "CHARACTERS" block...
+Finished with "CHARACTERS" block.
+
+TAXA block contains 6 taxa
+	1	P. fimbriata
+	2	P. robusta
+	3	P. americana
+	4	P. myriophylla
+	5	P. polygama
+	6	P. macrophylla
+
+CHARACTERS block contains 6 taxa and 15 characters
+  Data type is "DNA"
+  Ignoring case
+  Data matrix entries are expected to be single symbols
+  Character labels are expected on left side of matrix
+  Character and character state labels:
+	1	site 1
+	2	site 2
+	3	site 3
+	4	site 4
+	5	site 5
+	6	site 6
+	7	site 7
+	8	site 8
+	9	site 9
+	10	site 10
+	11	site 11
+	12	site 12
+	13	site 13
+	14	site 14
+	15	site 15
+  Matrix transposed but not interleaved
+  Missing data symbol is '?'
+  No match character specified
+  No gap character specified
+  Valid symbols are: ACGT
+  Equate macros in effect:
+    B = {CGT}
+    D = {AGT}
+    H = {ACT}
+    K = {GT}
+    M = {AC}
+    N = {ACGT}
+    R = {AG}
+    S = {CG}
+    V = {ACG}
+    W = {AT}
+    X = {ACGT}
+    Y = {CT}
+  No characters were eliminated
+  The following characters have been excluded:
+    (no characters excluded)
+  The following taxa have been deleted:
+    (no taxa deleted)
+  Data matrix:
+    P. fimbriata       ACCTCGGCTTAACGA
+    P. robusta         ACCTCGGCTTAACCA
+    P. americana       ACGTCGCTCTCACCA
+    P. myriophylla     ACGTCGCTTTCACCA
+    P. polygama        ACCTCGCTTTCACGA
+    P. macrophylla     ACCTCGCTTTCACGA
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/characters.ref.txt
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/distances.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/distances.nex	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/distances.nex	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,264 @@
+#nexus
+
+begin taxa;
+  dimensions ntax=8;
+  taxlabels taxon_1 taxon_2 taxon_3 taxon_4 taxon_5 taxon_6 taxon_7 taxon_8;
+end;
+
+[!
+***************************************************
+* Non-interleaved, lower-triangular, no diagonals *
+***************************************************
+]
+begin distances;
+  format nodiagonal;
+  matrix
+    taxon_1
+    taxon_2    1
+    taxon_3    2   3
+    taxon_4    4   5   6
+    taxon_5    7   8   9  10
+    taxon_6   11  12  13  14  15
+    taxon_7   16  17  18  19  20  21
+    taxon_8   22  23  24  25  26  27  28;
+end;
+
+[&showall]
+
+[!
+************************************************
+* Non-interleaved, lower-triangular, diagonals *
+************************************************
+]
+begin distances;
+  matrix
+    taxon_1    0
+    taxon_2    1   0
+    taxon_3    2   3   0
+    taxon_4    4   5   6   0
+    taxon_5    7   8   9  10   0
+    taxon_6   11  12  13  14  15   0
+    taxon_7   16  17  18  19  20  21   0
+    taxon_8   22  23  24  25  26  27  28   0;
+end;
+
+[&showall]
+
+[!
+***************************************************
+* Non-interleaved, upper-triangular, no diagonals *
+***************************************************
+]
+begin distances;
+  format triangle=upper nodiagonal;
+  matrix
+    taxon_1    1   2   3   4   5   6   7
+    taxon_2        8   9  10  11  12  13
+    taxon_3           14  15  16  17  18
+    taxon_4               19  20  21  22
+    taxon_5                   23  24  25
+    taxon_6                       26  27
+    taxon_7                           28
+    taxon_8;
+end;
+
+[&showall]
+
+[!
+************************************************
+* Non-interleaved, upper-triangular, diagonals *
+************************************************
+]
+begin distances;
+  format triangle=upper;
+  matrix
+    taxon_1    0  1   2   3   4   5   6   7
+    taxon_2       0   8   9  10  11  12  13
+    taxon_3           0  14  15  16  17  18
+    taxon_4               0  19  20  21  22
+    taxon_5                   0  23  24  25
+    taxon_6                       0  26  27
+    taxon_7                           0  28
+    taxon_8                               0;
+end;
+
+[&showall]
+
+[!
+*******************************************
+* Non-interleaved, rectangular, diagonals *
+*******************************************
+]
+begin distances;
+  format triangle=both;
+  matrix
+    taxon_1    0   1   2   3   4   5   6   7
+    taxon_2    1   0   8   9  10  11  12  13
+    taxon_3    2   3   0  14  15  16  17  18
+    taxon_4    4   5   6   0  19  20  21  22
+    taxon_5    7   8   9  10   0  23  24  25
+    taxon_6   11  12  13  14  15   0  26  27
+    taxon_7   16  17  18  19  20  21   0  28
+    taxon_8   22  23  24  25  26  27  28   0;
+end;
+
+[&showall]
+
+[!
+***********************************************
+* Interleaved, lower-triangular, no diagonals *
+***********************************************
+]
+begin distances;
+  format nodiagonal interleave;
+  matrix
+    taxon_1
+    taxon_2   1
+    taxon_3   2  3
+    taxon_4   4  5
+    taxon_5   7  8
+    taxon_6  11 12
+    taxon_7  16 17
+    taxon_8  22 23
+
+    taxon_3
+    taxon_4   6
+    taxon_5   9 10
+    taxon_6  13 14 15
+    taxon_7  18 19 20
+    taxon_8  24 25 26
+
+    taxon_6
+    taxon_7  21
+    taxon_8  27 28;
+end;
+
+[&showall]
+
+[!
+********************************************
+* Interleaved, lower-triangular, diagonals *
+********************************************
+]
+begin distances;
+  format interleave;
+  matrix
+    taxon_1   0
+    taxon_2   1  0
+    taxon_3   2  3
+    taxon_4   4  5
+    taxon_5   7  8
+    taxon_6  11 12
+    taxon_7  16 17
+    taxon_8  22 23
+
+    taxon_3   0
+    taxon_4   6  0
+    taxon_5   9 10  0
+    taxon_6  13 14 15
+    taxon_7  18 19 20
+    taxon_8  24 25 26
+
+    taxon_6   0
+    taxon_7  21  0
+    taxon_8  27 28  0;
+end;
+
+[&showall]
+
+[!
+***********************************************
+* Interleaved, upper-triangular, no diagonals *
+***********************************************
+]
+begin distances;
+  format nodiagonal triangle=upper interleave;
+  matrix
+    taxon_1      1  2
+    taxon_2         8
+    taxon_3
+
+    taxon_1   3   4
+    taxon_2   9  10
+    taxon_3  14  15
+    taxon_4      19
+    taxon_5
+
+    taxon_1   5   6   7
+    taxon_2  11  12  13
+    taxon_3  16  17  18
+    taxon_4  20  21  22
+    taxon_5  23  24  25
+    taxon_6      26  27
+    taxon_7          28
+    taxon_8;
+end;
+
+[&showall]
+
+[!
+********************************************
+* Interleaved, upper-triangular, diagonals *
+********************************************
+]
+begin distances;
+  format triangle=upper interleave;
+  matrix
+    taxon_1   0  1  2
+    taxon_2      0  8
+    taxon_3         0
+
+    taxon_1   3   4
+    taxon_2   9  10
+    taxon_3  14  15
+    taxon_4   0  19
+    taxon_5       0
+
+    taxon_1   5   6   7
+    taxon_2  11  12  13
+    taxon_3  16  17  18
+    taxon_4  20  21  22
+    taxon_5  23  24  25
+    taxon_6   0  26  27
+    taxon_7       0  28
+    taxon_8           0;
+end;
+
+[&showall]
+
+[!
+******************************************
+* Interleaved, rectangular, no diagonals *
+******************************************
+]
+begin distances;
+  format interleave triangle=both;
+  matrix
+    taxon_1   0   1   2   3
+    taxon_2   1   0   8   9
+    taxon_3   2   3   0  14
+    taxon_4   4   5   6   0
+    taxon_5   7   8   9  10
+    taxon_6  11  12  13  14
+    taxon_7  16  17  18  19
+    taxon_8  22  23  24  25
+
+    taxon_1   4   5
+    taxon_2  10  11
+    taxon_3  15  16
+    taxon_4  19  20
+    taxon_5   0  23
+    taxon_6  15   0
+    taxon_7  20  21
+    taxon_8  26  27
+
+    taxon_1   6   7
+    taxon_2  12  13
+    taxon_3  17  18
+    taxon_4  21  22
+    taxon_5  24  25
+    taxon_6  26  27
+    taxon_7   0  28
+    taxon_8  28   0;
+end;
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/distances.nex
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/kenrickcrane.nex
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/kenrickcrane.nex	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/kenrickcrane.nex	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,87 @@
+#nexus
+
+[!
+Data from Table A2.2 in Appendix 2 of:
+Kenrick, Paul, and Peter r. Crane. 1997. The origin and early diversification
+of land plants:  a cladistic study.  Smithsonian Institution Press, Washington.
+(ISBN 1-56098-729-4)
+]
+
+begin taxa;
+  dimension ntax=15;
+  taxlabels
+    Andreaea
+    Andreaeobryum
+    Anthoceros
+    Chara
+    Coleochaete
+    Equisetum
+    Haplomitrium
+    Horneophyton
+    Huperzia
+    Monoclea
+    Notothylas
+    Polytrichum
+    Sphaerocarpos
+    Sphagnum
+    Takakia
+  ;
+end;
+
+begin characters;
+   dimensions nchar=34;
+   format missing=? symbols="012";
+   charstatelabels
+       1 'Sporophyte cellularity' / unicellular multicellular,
+       2 'Sporophyte independence or dependence' / dependent independent,
+       3 'Well-developed sporangiophore' / absent present,
+       4 'Sporophyte branching' / absent present,
+       5 'Intercalary meristem' / absent present,
+       6 'Foot form' / bulbous tapering,
+       7 'Xylem-cell thickenings' / absent present,
+       8 'Sporangium' / absent present,
+       9 'Sporangium dehiscence' / linear operculate,
+      10 'Columella' / absent present,
+      11 'Elaters and pseudoelaters' / absent present,
+      12 'Zoospore flagella' / present absent,
+      13 'Perine' / absent present,
+      14 'Cuticle' / absent present,
+      15 'Stomates' / absent present,
+      16 'Gametophyte form' / thalloid axial,
+      17 'Gametophyte leaves' / absent present,
+      18 'Archegonium' / absent present,
+      19 'Anteridium morphology' / naked jacket,
+      20 'Antheridium development' / exogenous endogenous,
+      21 'Archegonium position' / superficial sunken,
+      22 'Gametangia distribution' / nonterminal terminal,
+      23 'Paraphyses' / absent present,
+      24 'Rhizoid cellularity' / unicellular multicellular,
+      25 'Protonema type' / nonfilamentous filamentous,
+      26 'Oil bodies' / absent present,
+      27 'Mucilage clefts' / absent present,
+      28 'Pseudopodium' / absent present,
+      29 'Pyrenoids' / present absent,
+      30 'Bicentriolar centrosomes' / orthogonal bicentriolar peripheral,
+      31 'Orientation of lamellae in multilayered structure' / '90 degrees' '40-45 degrees',
+      32 'Preprophase bands in mitosis' / absent present,
+      33 'Lunularic acid' / absent present,
+      34 'D-methionine' / 'not distinguished' distinguished
+   ;
+   matrix
+      Andreaea       1000010101011101111001111001?11??1
+      Andreaeobryum  1010010101011101111001111000??????
+      Anthoceros     100010010111011001111000001001??01
+      Chara          00????????01?0?1000000000000?000??
+      Coleochaete    00????????0000?00000000000000000??
+      Equisetum      1111001100011110011010000000?21?01
+      Haplomitrium   10000001001101011110010?0100111?1?
+      Horneophyton   11110?01?101?11101??1100??00??????
+      Huperzia       1111001100011111011011100000?????1
+      Monoclea       1000000100110100011000000100????1?
+      Notothylas     10001001011101100111100000100111??
+      Polytrichum    1010010111011111111001111000?11?01
+      Sphaerocarpos  1000000100110100011000000100111?10
+      Sphagnum       1000000111011111111001010001111101
+      Takakia        101001010101?1011110010??000111???
+   ;
+end;


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/data/kenrickcrane.nex
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/html/NexusClassLibrary.html
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/html/NexusClassLibrary.html	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/html/NexusClassLibrary.html	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,956 @@
+<html>
+<body bgcolor=white>
+<h1>NEXUS Class Library (NCL) Release 2</h1>
+<dl><dd><b>Author: Paul O. Lewis</b>
+<dd><b>Copyright &copy; 1999. All Rights Reserved.</b>
+<dd>Last modified: <i>October 14, 1999</i>
+</dl>
+
+<hr>
+
+<h2>Contents</h2>
+<ul>
+<li><a href="#introduction">What is the NCL?</a>
+<li><a href="#download">Obtaining the NCL?</a>
+<li><a href="#characterisitics">Characteristics of the NCL</a>
+  <ul>
+  <li><a href="#portability">Portability</a>
+  <li><a href="#crossplatform">Cross-platform features</a>
+  <li><a href="#extensibility">Extensibility</a>
+  </ul>
+<li><a href="#limitations">Current limitations</a>
+<li><a href="#reader">Building a NEXUS File Reader</a>
+  <ul>
+  <li><a href="#readermain">The Main Function</a>
+  <li><a href="#readernexus">Deriving From the NEXUS Class</a>
+  <li><a href="#readertoken">Deriving From the NexusToken Class</a>
+  <li><a href="#readerall">Putting It All Together</a>
+  <li><a href="#readerdata">A Sample Data File</a>
+  </ul>
+<li><a href="#rollown">Creating Your Own NEXUS Block</a>
+  <ul>
+  <li><a href="#classheadercomment">Class header comment</a>
+  <li><a href="#enumcomment">Enumeration comment</a>
+  <li><a href="#constructorcomment">Constructor comment</a>
+  <li><a href="#destructorcomment">Destructor comment</a>
+  <li><a href="#noparamscomment">Method comment (no parameters)</a>
+  <li><a href="#paramscomment">Method comment (with parameters)</a>
+  <li><a href="#throwcomment">Method comment (throws exceptions)</a>
+  <li><a href="#operatorcomment">Operator comment</a>
+  <li><a href="#castcomment">Cast operator comment</a>
+  <li><a href="#manipcomment">Manipulator comment</a>
+  </ul>
+<li><a href="#advice">General Advice</a>
+<li><a href="#whatyoucando">What You Can Do For Me</a>
+<li><a href="#future">Future Of The NCL Project</a>
+<li><a href="#index">Index of NCL Classes</a>
+</ul>
+
+<a name="introduction">
+<h2>What is the NCL?</h2>
+</a>
+
+The NEXUS Class Library (NCL) is an integrated collection of C++ classes designed to
+provide a NEXUS data file reader that is both easy to implement and easily
+extensible.
+
+<p>A word about the intended audience is in order before we get too far along (no
+need to waste your time if the NCL will not be helpful to you).
+The intended audience for both this documentation and the
+accompanying class library comprises <i>computer programmers</i> who wish to endow
+their C++ programs with the ability to read NEXUS data files.  If you are not a
+programmer and simply use NEXUS files as a means of inputting data to the programs
+you use for analyzing your data, the NCL is not something that will be useful to you.
+The NCL is also not for you if you are a programmer but do not use the C++ language, 
+since the NCL depends heavily on the object oriented programming features built into C++.
+
+<p>The NEXUS data file format was specified in the publication cited below.
+Please read this paper for further information about the format specification
+itself; the documentation for the NCL does not attempt to explain this.
+
+<p>
+<b>Maddison, D. R., D. L. Swofford, and Wayne P. Maddison.</b>
+1997. NEXUS:  an extensible file format for systematic information.
+<i>Systematic Biology</i> <b>46</b>(4): 590-621.
+
+<p>
+The basic goal of the NCL is to provide a relatively easy way to endow a C++
+program with the ability to read NEXUS data files.  The steps
+necessary to use the NCL to create a bare-bones program that can read a NEXUS
+data file are simple and few (see below), and it is hoped that the availability
+of this class library will encourage the use of the NEXUS format.  This will
+in turn encourage consistency in how programs read NEXUS files and how programs
+respond to errors in data files.
+
+<p>
+A further benefit can be seen by looking at the large number of special
+data file formats that are out there.  This places an extra burden on the
+end user, who must deal with an increasing number of file formats all differing
+in a number of ways.  To port one's data to another file format often involves
+manual manipulation of the data, an activity that is inherently dangerous and
+probably has resulted in the corruption of many data files.  At the very least,
+the large number of formats in existance has led to a proliferation of data
+file variants.  With many copies of a given data file on a hard disk, each
+formatted differently for various analysis programs, it becomes very easy to
+change one (say, correct a datum found to be in error) and fail to correct the
+other versions.  The NEXUS file format provides a means for keeping one master
+copy of the data and using it with several programs without modification.  The
+NCL provides a means for encouraging programmers to use the NEXUS file format
+in future programs they write.
+
+<a name="download">
+<h2>Obtaining the NCL?</h2>
+</a>
+The current version of the NCL is available by anonymous ftp from 
+<code>alleyn.eeb.uconn.edu</code> (137.99.27.148) in the directory <code>pub/ncl2</code>.
+The NCL is available in two archive formats:  compressed tar archive or 
+zip format.  Download the compressed tar archive if you plan to develop
+only for the Unix platform; the zip file contains everything in the tar
+file as well as project files for both the Borland and Metrowerks IDEs.
+
+<p>The links below are provided to make the anonymous ftp access easier:
+<p><strong><a href="ftp://137.99.27.148/pub/ncl/ncl.tar.Z">Compressed tar file</a></strong>
+<br><strong><a href="ftp://137.99.27.148/pub/ncl/ncl.zip">Zip file</a></strong>
+<br><strong><a href="ftp://137.99.27.148/pub/ncl/readme.txt">README file</a></strong>
+
+<a name="characterisitics">
+<h2>Characteristics of the NCL</h2>
+</a>
+
+<a name="portability">
+<h3>Portability</h3>
+</a>
+The NCL has been designed to be as portable as possible for a C++ class library.
+The NCL <i>does</i> make use of the ANSI Standard C++ Library, which may cause problems
+if the compiler you are using is a couple of years old or older.  The standard 
+library has been adopted by all modern compilers, including the most recent versions
+of Metrowerks CodeWarrier Pro and Borland C++, as well as the EGCS compiler (a
+free compiler available for most unix platforms).  Thus, if your compiler chokes
+on the template-based container classes used in the NCL (such as vector, list, map, string, etc.)
+then you will need to upgrade your compiler in order to use the NCL.  Assuming
+you have a modern compiler, however, the NCL is fully portable across Mac, Windows, 
+and most Unix platforms.
+
+<a name="crossplatform">
+<h3>Cross-platform features</h3>
+</a>
+I have attempted to create the NCL in such a way that one is not limited in the
+type of platform targeted.  For example, NEXUS files can contain "output comments"
+that are supposed to be displayed in the output of the program reading the NEXUS
+file.  Such comments are handled automatically by the NCL, and are sent
+to a virtual function that can be overridden by you in a derived class.
+This provides a means for you to tailor the output of such comments to the platform
+of your choice.  For example, if you are writing a standard Unix console application
+(i.e., not a graphical X-Windows application), you might want such output comments
+to simply be sent to standard output or to an ofstream object.  For a graphical
+Windows, MacIntosh or X-Windows application, you might deem it more user-friendly to pop up
+a message box with the output comment as the message.  This would ensure that the
+user noticed the output comment.  You also have the option of having your program
+completely ignore such comments in the data file.
+
+<p>
+The NCL provides similar hooks for noting the progress in reading the data file.
+For example, a virtual function called EnteringBlock is called and provided with
+the name of the block about to be read.  You can override EnteringBlock in your
+derived class to allow, for example, a message to be displayed in a status bar
+at the bottom of your program's main window (in a graphical application) indicating
+which block is currently being read.  Other such virtual functions include
+SkippingBlock (to allow users to be warned that your program is ignoring a block
+in the data file), SkippingCommand (to allow users to be warned about particular
+commands being skipped within a block), and NexusError, which is the function
+called whenever anything unexpected happens when reading the file.
+
+<a name="extensibility">
+<h3>Extensibility</h3>
+</a>
+The basic tools provided in the NCL allow you to create your own NEXUS blocks
+and use them in your program.  This makes it easy to define a private block
+to contain commands that only your program recognizes, allowing your users to
+run your program in batch mode (see the section below entitled <a href="#advice">
+General Advice</a> for more information on this topic).
+
+<a name="limitations">
+<h2>Current limitations</h2>
+</a>
+
+The main current limitation is that the NCL is incomplete.  Some standard NEXUS
+blocks have been provided with this distribution, but because the NEXUS format
+is so extensive, I have not had the time to write code implementing even all of
+the standard blocks described in the paper cited above (or even all of the standard
+blocks I have included!). Here is a summary table showing what has been implemented
+thus far:
+<table width=600>
+<tr>
+<th align="left" valign="bottom">Block<br><hr>
+<th align="left" valign="bottom">Current Limitations<br><hr>
+
+<tr>
+<td valign="top">ASSUMPTIONS
+<td valign="top">Only TAXSETS, CHARSETS, and EXSETS have been implemented thus far.
+
+<tr>
+<td valign="top">ALLELES
+<td valign="top">Cannot yet handle transposed MATRIX, and only DATAPOINT=STANDARD
+is implemented (however, as far as I know, no other program in existance handles anything
+but standard datapoints so this is not a great limitation at the moment).
+
+<tr>
+<td valign="top">CHARACTERS
+<td valign="top">Only ITEMS=STATES and STATESFORMAT=STATESPRESENT has been implemented
+thus far, and DATATYPE=CONTINUOUS has not been implemented.
+
+<tr>
+<td valign="top">DISTANCES
+<td valign="top">No limitations, completely implemented
+
+<tr>
+<td valign="top">DATA
+<td valign="top">Since the DATA block is essentially the same as a CHARACTERS block,
+the same limitations apply.
+
+<tr>
+<td valign="top">TAXA
+<td valign="top">No limitations, completely implemented
+
+<tr>
+<td valign="top">TREES
+<td valign="top">No limitations, completely implemented
+
+</table>
+
+While the limitations for the CHARACTERS block may seem a bit extreme, this
+block is nevertheless implemented to the point where almost all existing
+morphological and molecular data sets can be read.  This is because most
+existing programs (including MacClade and PAUP) are limited in the same
+ways. In order to put my efforts where they are most needed, I have
+delayed finishing the work on the CHARACTERS block until it becomes
+apparent that someone wishes to write a program with the capability to
+read data files having other ITEMS or STATESFORMAT options, or a data
+file containing continuous data.  If you fall into this category, by all
+means contact me and I will consider pushing ahead!
+
+<p>
+The NCL is written in C++ and designed for use in a C++ program.  It is not
+available in a C version (or any other language for that matter), which will
+represent a limitation if you are not a C++ programmer.  I do intend to produce
+a Java version eventually (once the bugs are worked out of the C++ version).
+I have written the NCL in a style that mimics Java (i.e., no operators are
+defined, objects are passed by reference whenever possible, etc.) so that this
+conversion, when it happens, will be as easy as possible.
+
+<p>
+The NCL has been designed to be portable, easy-to-use, and informative in the 
+error messages produced.  It will be apparent to anyone who looks very closely
+at the code that efficiency has been sacrificed to meet these goals.
+You can expect the minimum size of an executable handling only the reading of
+TAXA and TREES blocks to be at least 92 KB (94208 bytes).  Adding the ability
+to read the CHARACTERS block pushes this up to 135 KB (138752 bytes).  These
+figures are based on compiling a Win32 console program with Borland C++ 5.02
+compiler with no optimizations. Speed has also been sacrificed, however I
+think it can be argued that speed in reading a data file is not all that
+important compared to the NCL's other benefits.
+
+<a name="reader">
+<h2>Building a NEXUS File Reader</h2>
+</a>
+
+This section illustrates how you could build a simple NEXUS file reader application
+capable of reading in a TAXA and a TREES block.  Note that the application NCLTEST, 
+for which you have the source code, is essentially an expanded version of this 
+sample program that can read all of the NEXUS blocks incorporated to date into the
+NCL.  To keep things simple, we will just write output to an ofstream object 
+(nothing graphical here).
+
+<p>
+As you work through this example, feel free to look into the NCL classes in more
+detail.  Each class has its own documentation in the form of a web page having a
+name of the form NCLClassName.html, where NCLClassName is replaced by
+the name of the class.  For example, the NexusBlock class is described in the file
+NexusBlock.html.  An <a href="#index">index</a> to all classes in the NCL is 
+provided at the end of this document for quick access to the full range of
+class-specific web pages.
+
+<a name="readermain">
+<h3>The Main Function</h3>
+</a>
+
+<pre>
+int main()
+{
+  taxa = new TaxaBlock();
+  trees = new TreesBlock(*taxa);
+
+  MyNexus nexus( "testfile.nex", "output.txt" );
+  nexus.Add( taxa );
+  nexus.Add( trees );
+
+  MyToken token( nexus.inf, nexus.outf );
+  nexus.Execute( token );
+
+  taxa->Report( nexus.outf );
+  trees->Report( nexus.outf );
+
+  return 0;
+}
+</pre>
+
+<p>
+<b>Creating block objects.</b>
+The first two lines of main involve the creation of objects corresponding to
+the two types of NEXUS blocks we want our program to recognize.  TaxaBlock
+is declared in the header file "taxablock.h" and defined in the source code
+file "taxablock.cpp", whereas the TreesBlock class is declared in "treesblock.h"
+and defined in "treesblock.cpp".  Note that the TreesBlock constructor requires
+a reference to an object of type TaxaBlock.  This is because a TREES block in
+a NEXUS data file requires the number of taxa and the taxon labels to have been
+previously definined earlier in the data file.  In the NCL, any block that defines
+taxon labels stores this information in the TaxaBlock object, and any block that
+needs such information requires a reference to the TaxaBlock object in its
+constructor.
+
+<p>
+<b>Adding the block objects to the NEXUS object.</b>
+The next three lines involve creating a NEXUS object and adding our
+two block objects to a linked list maintained by the NEXUS object.  The MyNexus
+class is derived from the Nexus class, which is declared in "nexus.h" and
+defined in "nexus.cpp".  Objects cannot be created from the Nexus class alone,
+as it contains pure virtual functions that must be overridden in a derived class.
+Examples of pure virtual functions in Nexus that must be overridden are:
+EnteringBlock, SkippingBlock, and NexusError.  The reason the Nexus object must
+maintain a list of block ojects is so that it can figure out who is responsible
+for reading each block found in the data file.  The block objects taxa and trees
+have each inherited an id variable of type char* that stores their block name
+(i.e., "TAXA" for the TaxaBlock and "TREES" for the TreesBlock).  When the Nexus
+object's Execute method encounters a block name, it searches its linked list of block
+objects until it finds one whose id variable is identical to the name of the block
+encountered.  It then calls the Read function of that block object to do the work
+of reading the block from the data file and storing its contents.  It is possible
+of course that a block name will appear in a data file for which there is no
+corresponding block object.  In this case, the Nexus Execute method calls the
+SkippingBlock method to report the fact that it is skipping over the contents of
+the unknown block.
+
+<p>
+<b>Reading the data file.</b>
+The next two lines create a token object (MyToken is derived from the NexusToken
+class), and initiate the reading of the NEXUS data file using the Nexus Execute
+function.  The input and output files are created within the MyNexus class.
+While this is not required, it facilitates handling messages generated while
+the data file is being read.  The NexusToken class has one virtual member
+function - OutputComment - which enables you to control how output comments
+are displayed.  The NexusToken version of OutputComment does nothing, so you
+must derive your own token class from NexusToken and override the OutputComment
+method in order for the output comments in the data file to be displayed.
+The main function of the NexusToken class is to provide a means for grabbing
+NEXUS tokens one by one from the data file.  Calling the GetNextToken function
+reads and stores the next token found in the data file, correctly handling any
+comments found along the way.  This greatly simplifies reading a NEXUS data file.
+
+<p>
+<b>Reporting on block objects' contents.</b>
+The last two lines call the Report functions of each of the blocks.  This just
+spits out a summary of any data contained in these objects that has been
+read from the data file.
+
+<a name="readernexus">
+<h3>Deriving From the Nexus Class</h3>
+</a>
+Note that the ifstream is opened in binary mode.  You should always open your
+input file in binary mode so that the file can be read properly regardless of
+the platform on which it was created.  For example, suppose someone created a NEXUS
+data file on a MacIntosh and wanted to read it with your program, which is
+running on a Windows 95 machine.  Opening the file in binary mode allows the
+NexusToken object you are using to recognize the newline character in the Mac
+file as such, even though MacIntosh computers use a different symbol (ASCII 13)
+to represent the newline character than computers running Windows (which use
+the ASCII 13, ASCII 10 combination for newlines).
+
+<p>Also, note the special version of one line in the NexusError method that is
+necessary when using the Metrowerks CodeWarrior Professional (Release 4) compiler.
+Metrowerks uses a class called streampos to keep track of the file position
+rather than typedefing streampos to a simple long value.  You must call the
+streampos object's offset() member function to obtain a value that you can
+use (no automatic conversions from streampos to long).  If you are using 
+CoeWarrior Pro Release 5, the special handling is not necessary (there was
+apparently a bug in Release 4 that has since been fixed).
+
+<pre>
+class MyNexus : public Nexus
+{
+   public:
+      ifstream inf;
+      ofstream outf;
+
+      MyNexus( char* infname, char* outfname ) : Nexus() {
+         inf.open( infname, ios::binary );
+         outf.open( outfname );
+      }
+
+      ~MyNexus() {
+         inf.close();
+         outf.close();
+      }
+
+      void EnteringBlock( char* blockName ) {
+         cout << "Reading \"" << blockName << "\" block..." << endl;
+         outf << "Reading \"" << blockName << "\" block..." << endl;
+      }
+
+      void SkippingBlock( char* blockName ) {
+         cout << "Skipping unknown block (" << blockName << ")..." << endl;
+         outf << "Skipping unknown block (" << blockName << ")..." << endl;
+      }
+
+      void OutputComment( char* msg ) {
+         outf << msg;
+      }
+
+      void NexusError( char* msg, streampos pos, long line, long col ) {
+         cerr << endl;
+         cerr << "Error found at line " << line;
+         cerr << ", column " << col;
+#if defined( __MWERKS__ )
+         // if using MetroWerks CodeWarrior Pro 5, use other (normal) version
+         cerr << " (file position " << pos.offset() << "):" << endl;
+#else
+         cerr << " (file position " << pos << "):" << endl;
+#endif
+         cerr << msg << endl;
+
+         outf << endl;
+         outf << "Error found at line " << line;
+         outf << ", column " << col;
+#if defined( __MWERKS__ )
+         // if using MetroWerks CodeWarrior Pro 5, use other (normal) version
+         outf << " (file position " << pos.offset() << "):" << endl;
+#else
+         outf << " (file position " << pos << "):" << endl;
+#endif
+         outf << msg << endl;
+
+         exit(0);
+      }
+};
+</pre>
+
+<a name="readertoken">
+<h3>Deriving From the NexusToken Class</h3>
+</a>
+We derive our own token reader from the NexusToken class in order to display
+the output comments present in the data file (if any).  The virtual function
+OutputComment in the base class is overridden to accomplish this.
+<pre>
+class MyToken : public NexusToken
+{
+   ostream& out;
+
+   public:
+      MyToken( istream& is, ostream& os ) : out(os), NexusToken(is) {}
+      void OutputComment( char* msg ) {
+         cout << msg << endl;
+         out << msg << endl;
+      }
+};
+</pre>
+
+<a name="readerall">
+<h3>Putting It All Together</h3>
+</a>
+Here is the entire program.  Note that in order for this to link properly, you
+will need to also compile the following files included with the NCL (and instruct
+your linker to link them into your main executable):  nexustoken.cpp,
+labellist.cpp, nexus.cpp, nexusblock.cpp, taxablock.cpp, and treesblock.cpp.
+The documentation for individual classes within the NCL provides a "See also"
+section for each class.  The classes listed in this "See also" section indicate
+which other NCL classes the class being documented depends on.  Use the "See also"
+lists to figure out which files you will need to compile for any particular project.
+<pre>
+#include &lt;stdlib.h&gt;
+#include &lt;fstream.h&gt;
+
+#include "nexustoken.h"
+#include "labellist.h"
+#include "nexus.h"
+#include "taxablock.h"
+#include "treesblock.h"
+
+TaxaBlock* taxa;
+TreesBlock* trees;
+
+class MyToken : public NexusToken
+{
+   ostream& out;
+
+   public:
+      MyToken( istream& is, ostream& os ) : out(os), NexusToken(is) {}
+      void OutputComment( char* msg ) {
+         cout << msg << endl;
+         out << msg << endl;
+      }
+};
+
+class MyNexus : public Nexus
+{
+   public:
+      ifstream inf;
+      ofstream outf;
+
+      MyNexus( char* infname, char* outfname ) : Nexus() {
+         inf.open( infname, ios::binary );
+         outf.open( outfname );
+      }
+
+      ~MyNexus() {
+         inf.close();
+         outf.close();
+      }
+
+      void EnteringBlock( char* blockName ) {
+         cout << "Reading \"" << blockName << "\" block..." << endl;
+         outf << "Reading \"" << blockName << "\" block..." << endl;
+      }
+
+      void SkippingBlock( char* blockName ) {
+         cout << "Skipping unknown block (" << blockName << ")..." << endl;
+         outf << "Skipping unknown block (" << blockName << ")..." << endl;
+      }
+
+      void OutputComment( char* msg ) {
+         outf << msg;
+      }
+
+      void NexusError( char* msg, streampos pos, long line, long col ) {
+         cerr << endl;
+         cerr << "Error found at line " << line;
+         cerr << ", column " << col;
+#if defined( __MWERKS__ )
+         cerr << " (file position " << pos.offset() << "):" << endl;
+#else
+         cerr << " (file position " << pos << "):" << endl;
+#endif
+         cerr << msg << endl;
+
+         outf << endl;
+         outf << "Error found at line " << line;
+         outf << ", column " << col;
+#if defined( __MWERKS__ )
+         outf << " (file position " << pos.offset() << "):" << endl;
+#else
+         outf << " (file position " << pos << "):" << endl;
+#endif
+         outf << msg << endl;
+
+         exit(0);
+      }
+};
+
+int main()
+{
+  taxa = new TaxaBlock();
+  trees = new TreesBlock(*taxa);
+
+  MyNexus nexus( "testfile.nex", "output.txt" );
+  nexus.Add( taxa );
+  nexus.Add( trees );
+
+  MyToken token( nexus.inf, nexus.outf );
+  nexus.Execute( token );
+
+  taxa->Report( nexus.outf );
+  trees->Report( nexus.outf );
+
+  return 0;
+}
+</pre>
+
+<a name="readerdata">
+<h3>A Sample Data File</h3>
+</a>
+Here is a sample data file that exercises a lot of the features of the
+NEXUS file reader we have just created.  First, there are both output
+and regular comments scattered around.  Some are between tokens, some
+occur at the beginning of a token, and still others begin right after
+a token.  Some comments even have nested within them words surrounded by
+square brackets.  There are also blocks in this data file (i.e., the
+gdadata block) that are not recognized by the NEXUS file reader we have
+created. The NEXUS reader handles all of these situations without
+needing any code from you!
+
+<p>Feel free to introduce various sorts of errors (e.g., delete semicolons,
+misspell keywords, etc.) into the the sample data file to get a feel for
+what types of error messages the NEXUS file reader generates.
+
+<pre>
+#nexus
+
+[!Output comment before first block]
+
+begin gdadata; [this is an unknown block]
+  dimensions npops=2 nloci=3;
+end;
+
+[!Let's see if we can deal with [nested] comments]
+
+[!
+What happens if we do this!
+]
+
+begin [comment at beginning of token]taxa;
+  dimensions[comment at end of token] ntax=11;
+  taxlabels  [comment between tokens]
+      P._fimbriata
+		'P. robusta'
+		'P. americana'
+		'P. myriophylla'
+		'P. articulata'
+		'P. parksii'
+		'P. gracilis'
+		'P. macrophylla'
+		'P. polygama'
+		'P. basiramia'
+		'P. ciliata'
+      [!output comment in TAXLABELS command]
+  ;
+end;
+
+begin trees;
+  translate
+	1  P._fimbriata,
+	2  P._robusta,
+	3  P._americana,
+	4  P._myriophylla,
+	5  P._articulata,
+	6  P._parksii,
+	7  P._polygama,
+	8  P._macrophylla,
+	9  P._gracilis,
+  10  P._basiramia,
+  11  P._ciliata
+  ;
+  tree alpha = (1,2,((((3,4),5),6),((7,8),(9,(10,11)))));
+  tree beta = (1,2,((((3,4),5),6),(7,(8,(9,(10,11))))));
+end;
+</pre>
+
+<a name="rollown">
+<h2>Creating Your Own NEXUS Block</h2>
+</a>
+
+Creating your own NEXUS block involves deriving a class from the NexusBlock
+base class and overriding the three pure virtual functions Read, Reset, and
+Report.  Use the files emptyblock.cpp and emptyblock.h as templates for your
+own source code and header files.  While creating your own block class is
+not a complicated endeavor, here are some things to nevertheless watch out for:
+<ul>
+<li> Be sure to document your class in the way I have done for the other blocks.
+I have employed a system of documentation similar to that used for the Java
+Development Kit.  The program makedoc was supplied with your copy of NCL.  This
+program reads the special tags in the source code comments of the NCL source
+files and creates HTML documentation automatically.  Because the documentation
+is actually inside the source code files, this system makes it relatively
+easy both to document your source code when you write it, and also keep it up
+to date as you make changes later on.  Some examples of the special comment
+style you must use to make this system work are given at the end of this section.
+<li> Be sure to write the Reset function in such a way that all heap memory is
+cleaned up (deleted).  This means whenever you use the "new" keyword to allocate
+memory for an object that will potentially persist until the Reset method is
+called, you need to put code in the Reset function to delete it.  Also, it is
+important to delete such objects in the destructor for the class as well.
+<li> When writing the Read function, put assert macros whereever you make an
+assumption, however insignificant this assumption seems at the time of writing.
+This tremendously speeds up the task of finding bugs when one of your assumptions
+turns out to not always be true!
+<li> When writing the Read function, put in lots of tests of the form:
+<pre>
+if( !token.Equals(";") ) {
+	sprintf( errormsg, "Expecting ';' but found %s instead", token.GetToken() );
+	throw XNexus(errormsg);
+}
+</pre>
+Such checks will give your users some hope of finding where they have made a
+mistake in constructing their data file.  We all know how frustrating it can
+be to have a program exit with an uninformative error message.
+<li> Don't forget to update your main class comment if you add variables to
+your class's header file.  This is easy to forget, since the header file
+does not contain any of the special documentation comments.
+</ul>
+
+To use makedoc, compile makedoc for your operating system and then simply type
+
+<pre>
+makedoc myblock.cpp
+</pre>
+
+at the system prompt to create a help file for the class defined in myblock.
+Note that there can be only one class defined per source code file to use this
+system, and all of the special comments must be in the same file for a particular
+class.  Here are some examples of source code comments for use with the
+makedoc program.  Feel free to look through the NCL source code files for other
+examples.
+
+<a name="classheadercomment">
+<h3>Class header comment</h3>
+</a>
+<pre>
+/**
+ * @class      TaxaBlock
+ * @file       taxablock.h
+ * @file       taxablock.cpp
+ * @author     Paul O. Lewis
+ * @copyright  Copyright © 1999. All Rights Reserved.
+ * @variable   ntax [int:private] number of taxa (set from NTAX specification)
+ * @variable   taxonLabels [LabelList:private] storage for list of taxon labels
+ * @see        LabelList
+ * @see        Nexus
+ * @see        NexusBlock
+ * @see        NexusToken
+ * @see        XNexus
+ *
+ * This class handles reading and storage for the NEXUS block TAXA.
+ * It overrides the member functions Read and Reset, which are abstract
+ * virtual functions in the base class NexusBlock.  The taxon names are
+ * stored in an array of strings (taxonLabels) that is accessible through
+ * the member functions GetTaxonLabel, AddTaxonLabel, ChangeTaxonLabel,
+ * and GetNumTaxonLabels.
+ */
+</pre>
+
+<a name="enumcomment">
+<h3>Enumeration comment</h3>
+</a>
+<pre>
+/**
+ * @enumeration
+ * @enumitem  saveCommandComment [0x0001] if set, command comments expected and will be saved
+ * @enumitem  parentheticalToken [0x0002] if set, parenthetical token expected
+ *
+ * For use with the variable labileFlags.
+ */
+</pre>
+
+<a name="constructorcomment">
+<h3>Constructor comment</h3>
+</a>
+<pre>
+/**
+ * @constructor
+ *
+ * Default constructor. Initializes id to "TAXA" and ntax to 0.
+ */
+</pre>
+
+<a name="destructorcomment">
+<h3>Destructor comment</h3>
+</a>
+<pre>
+/**
+ * @destructor
+ *
+ * Deletes the memory used by id and flushes taxonLabels.
+ */
+</pre>
+
+<a name="noparamscomment">
+<h3>Method comment (no parameters)</h3>
+</a>
+<pre>
+/**
+ * @method Reset [void:protected]
+ *
+ * Flushes taxonLabels and sets ntax to 0 in preparation for reading a
+ * new TAXA block.
+ */
+</pre>
+
+<a name="paramscomment">
+<h3>Method comment (with parameters)</h3>
+</a>
+<pre>
+/**
+ * @method ChangeTaxonLabel [void:public]
+ * @param i [int] the taxon label number to change
+ * @param s [char*] the string used to replace label i
+ *
+ * Changes the label for taxon i to s.  Deletes the old
+ * label and reallocates enough memory to store the new
+ * label.
+ */
+</pre>
+
+<a name="throwcomment">
+<h3>Method comment (throws exceptions)</h3>
+</a>
+<pre>
+/**
+ * @method Read [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @param in [istream&] the input stream from which to read
+ * @throws XNexus
+ *
+ * This function provides the ability to read everything following the block name
+ * (which is read by the Nexus object) to the end or endblock statement.
+ * Characters are read from the input stream in. Overrides the
+ * abstract virtual function in the base class.
+ */
+</pre>
+
+<a name="operatorcomment">
+<h3>Operator comment</h3>
+</a>
+<pre>
+/**
+ * @operator = [NxsGDADataBlock&:public]
+ * @param gdaData [const NxsGDADataBlock&] the NxsGDADataBlock to be copied
+ *
+ * Copies the information from gdaData to this object.
+ */
+</pre>
+
+<a name="castcomment">
+<h3>Cast operator comment</h3>
+</a>
+<pre>
+/**
+ * @castoperator () [double:public]
+ *
+ * Casts value of cell to a double.
+ */
+</pre>
+
+<a name="manipcomment">
+<h3>Manipulator comment</h3>
+</a>
+<pre>
+/**
+ * @manipulator setleft
+ *
+ * Specifies the left boundary of the Table body.
+ * All columns added before this point are considered
+ * row headers and will be repeated for each output
+ * page.
+ */
+</pre>
+
+<a name="advice">
+<h2>General Advice</h2>
+</a>
+
+A typical program making use of this library might have the following two general characteristics:
+<ul>
+<li> Structured so that it can be compiled either as a command-line driven, Unix-style program
+or as a graphical application (with a Windows, MacIntosh, or XWindows Graphical User Interface, or GUI)
+<li> Handles a private NEXUS block that contains commands identical to those
+that can be entered on the command line, enabling the program to be run in batch mode
+</ul>
+
+The program PAUP is perhaps the most well-known example of this type of program.
+
+<p>After developing several programs like this, I have come up with the following strategy that 
+make efficient use of the object-oriented nature of the NCL.  I will assume your non-graphical program will
+be called simply "foo" and will read a private NEXUS block named "FOO". I will assume
+that the GUI version will be targeted for the Windows platform, and will be colled "winfoo".
+<ul>
+<li> Create a class (call it <b>FooBase</b>) that encapsulates the kernel of the program.  
+Be careful not to place any GUI code in this class.  This class should be derived (publicly) from
+the <b>NexusBlock</b> class (this class will encapsulate your program's private NEXUS block).
+<li> In class FooBase, override the NexusBlock virtual functions <b>Read</b>, <b>Reset</b>, <b>Report</b>, and <b>HandleEndblock</b>, 
+and any other handler functions needed to process the commands in the private block.
+<li> Now create a class <b>WinFoo</b> that handles the Windows GUI interface.  Derive this class from
+both <b>Nexus</b> (so that it can serve as the Nexus reader) and from FooBase (so that it can also
+serve as the private block object as well as handle all the core functionality).  In the WinFoo
+constructor, create all the NEXUS block objects needed (i.e., a CharactersBlock object and TaxaBlock object)
+and add these to the nexus reader using the Add function.  Don't forget to "Add(this)" too so that
+your program can read the private block.  Note that "this" is both a Nexus object as well as a
+NexusBlock object, so it is able to add itself to the list of blocks processed upon execution of
+a NEXUS data file.
+<li> In class WinFoo, override the Nexus virtual functions <b>EnteringBlock</b>, <b>SkippingBlock</b>, and
+<b>NexusError</b>.  For instance, within NexusError, you might put up a MessageBox telling the
+user about an error encountered in the data file.
+<li> For the Unix, command-driven version, create a class <b>foo</b> that is derived from FooBase,
+overrides the Nexus and NexusBlock virtual functions (like its GUI counterpart, WinFoo), and provides
+a means for users to enter commands (you should create a mechanism in FooBase so that you can 
+use the same macbinery to process commands typed in from the keyboard as you use to process
+commands contained in a private block).
+</ul>
+
+<a name="whatyoucando">
+<h2>What You Can Do For Me</h2>
+</a>
+
+I hope this library is useful to you, and it is offered free of charge so long
+as you don't sell it or make it part of a commercial software package.  If you
+include the NCL as part of a program that you sell, please contact me at the
+address below to discuss license fees.
+<p>
+Although you are not obligated in any way to me as a result of using this
+package to improve your programs, there are a few things that you can do to
+help encourage me to continue improving this library.  Please make use of any
+of the following means of support that you feel comfortable with:
+<ul>
+<li> Cite me!  If you publish an announcement of a program of yours that
+includes the NCL, please acknowledge that your program includes the NCL.
+<li> Advertise me!  If your program produces output either on the screen or
+in the form of a file, mention that your program includes the NCL in your
+program's output.
+<li> Help me fix bugs. If you discover a bug in the NCL, please let me know
+about it so that I can get it fixed.
+<li> Give me suggestions.  I welcome suggestions for improving the library
+and making it more convenient to use.
+</ul>
+
+<a name="future">
+<h2>Future Of The NCL Project</h2>
+</a>
+The current capabilities of the NCL are best illustrated by taking a look at
+some of the data files that it can successfully read.  
+Most of these example NEXUS data files are from the 
+<a href="http://ucjeps.herb.berkeley.edu/bryolab/greenplantpage.html">"Green 
+Plant Phylogeny Research Coordination Group"</a> website; the two remaining
+data files contain multiple DISTANCES blocks (distances.nex) or multiple
+CHARACTERS blocks (characters.nex) to illustrate some of the formatting
+options available with these two NEXUS block types.  These examples amply
+demonstrate the capabilities of the NCL as it now stands, however the NCL
+will continue to grow as code for recognizing more and more NEXUS
+blocks are added.  I welcome both suggestions for improvement as well as
+bug reports, of course.
+
+<p>My current mail and email addresses as well as my phone and fax numbers
+are given below:
+
+<pre>
+Paul O. Lewis, Assistant Professor
+Department of Ecology and Evolutionary Biology
+The University of Connecticut
+U-43, 75 North Eagleville Road
+Storrs, CT 06269-3043
+
+Ph:    +1-860-486-2069
+FAX:   +1-860-486-6364 (the departmental fax machine)
+Email: <a href="mailto:plewis at uconnvm.uconn.edu">plewis at uconnvm.uconn.edu</a>
+URL:   <a href="http://www.eeb.uconn.edu/faculty/plewis.htm">http://www.eeb.uconn.edu/faculty/plewis.htm</a>
+</pre>
+
+<a name="index">
+<h2>Index To NCL Classes</h2>
+</a>
+<ul>
+<li><a href="AllelesBlock.html"> AllelesBlock class </a>
+<li><a href="AssumptionsBlock.html"> AssumptionsBlock class </a>
+<li><a href="CharactersBlock.html"> CharactersBlock class </a>
+<li><a href="DataBlock.html"> DataBlock class </a>
+<li><a href="DiscreteDatum.html"> DiscreteDatum class </a>
+<li><a href="DiscreteMatrix.html"> DiscreteMatrix class </a>
+<li><a href="DistanceDatum.html"> DistanceDatum class </a>
+<li><a href="DistancesBlock.html"> DistancesBlock class </a>
+<li><a href="Nexus.html"> Nexus class </a>
+<li><a href="NexusBlock.html"> NexusBlock class </a>
+<li><a href="NexusToken.html"> NexusToken class </a>
+<li><a href="SetReader.html"> SetReader class </a>
+<li><a href="TaxaBlock.html"> TaxaBlock class </a>
+<li><a href="TreesBlock.html"> TreesBlock class </a>
+<li><a href="XNexus.html"> XNexus class </a>
+</ul>
+
+</body>
+</html>
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/html/NexusClassLibrary.html
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/Makefile.am
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/Makefile.am	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/Makefile.am	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,10 @@
+noinst_LIBRARIES = libncl.a
+libncl_a_SOURCES = allelesblock.cpp assumptionsblock.cpp charactersblock.cpp \
+   datablock.cpp discretedatum.cpp discretematrix.cpp distancedatum.cpp \
+   distancesblock.cpp nexus.cpp nexusblock.cpp nexustoken.cpp setreader.cpp \
+   nxsstring.cpp nxsdate.cpp taxablock.cpp treesblock.cpp xnexus.cpp \
+   allelesblock.h assumptionsblock.h charactersblock.h \
+   datablock.h discretedatum.h discretematrix.h distancedatum.h \
+   distancesblock.h nexus.h nexusdefs.h nexustoken.h setreader.h \
+   nxsstring.h nxsdate.h taxablock.h treesblock.h xnexus.h 
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/Makefile.am
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/Makefile.in
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/Makefile.in	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/Makefile.in	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,407 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+SOURCES = $(libncl_a_SOURCES)
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = ncl-2.0/src
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+libncl_a_AR = $(AR) $(ARFLAGS)
+libncl_a_LIBADD =
+am_libncl_a_OBJECTS = allelesblock.$(OBJEXT) \
+	assumptionsblock.$(OBJEXT) charactersblock.$(OBJEXT) \
+	datablock.$(OBJEXT) discretedatum.$(OBJEXT) \
+	discretematrix.$(OBJEXT) distancedatum.$(OBJEXT) \
+	distancesblock.$(OBJEXT) nexus.$(OBJEXT) nexusblock.$(OBJEXT) \
+	nexustoken.$(OBJEXT) setreader.$(OBJEXT) nxsstring.$(OBJEXT) \
+	nxsdate.$(OBJEXT) taxablock.$(OBJEXT) treesblock.$(OBJEXT) \
+	xnexus.$(OBJEXT)
+libncl_a_OBJECTS = $(am_libncl_a_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libncl_a_SOURCES)
+DIST_SOURCES = $(libncl_a_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+ENT_FALSE = @ENT_FALSE@
+ENT_TRUE = @ENT_TRUE@
+EXEEXT = @EXEEXT@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WX_CONFIG = @WX_CONFIG@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+noinst_LIBRARIES = libncl.a
+libncl_a_SOURCES = allelesblock.cpp assumptionsblock.cpp charactersblock.cpp \
+   datablock.cpp discretedatum.cpp discretematrix.cpp distancedatum.cpp \
+   distancesblock.cpp nexus.cpp nexusblock.cpp nexustoken.cpp setreader.cpp \
+   nxsstring.cpp nxsdate.cpp taxablock.cpp treesblock.cpp xnexus.cpp \
+   allelesblock.h assumptionsblock.h charactersblock.h \
+   datablock.h discretedatum.h discretematrix.h distancedatum.h \
+   distancesblock.h nexus.h nexusdefs.h nexustoken.h setreader.h \
+   nxsstring.h nxsdate.h taxablock.h treesblock.h xnexus.h 
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  ncl-2.0/src/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  ncl-2.0/src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libncl.a: $(libncl_a_OBJECTS) $(libncl_a_DEPENDENCIES) 
+	-rm -f libncl.a
+	$(libncl_a_AR) libncl.a $(libncl_a_OBJECTS) $(libncl_a_LIBADD)
+	$(RANLIB) libncl.a
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/allelesblock.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/assumptionsblock.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/charactersblock.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/datablock.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/discretedatum.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/discretematrix.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/distancedatum.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/distancesblock.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nexus.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nexusblock.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nexustoken.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nxsdate.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nxsstring.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/setreader.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/taxablock.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/treesblock.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/xnexus.Po at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-noinstLIBRARIES ctags distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/allelesblock.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/allelesblock.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/allelesblock.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,2401 @@
+// OPEN ISSUES:
+// - variable alleles_fixed currently is not being used
+// - alleles_fixed should be an array of bool, since user can specify 
+//   allele labels for some loci and not others
+// - HandleTransposedMatrix function still needs to be written
+
+#include <iostream>
+#include <cstdio>
+
+#include "nexusdefs.h"
+#include "xnexus.h"
+#include "nexustoken.h"
+#include "nexus.h"
+#include "setreader.h"
+#include "taxablock.h"
+#include "discretedatum.h"
+#include "discretematrix.h"
+#include "charactersblock.h"
+#include "allelesblock.h"
+#include "assumptionsblock.h"
+
+using namespace std;
+
+/**
+ * @class      AllelesBlock
+ * @file       allelesblock.h
+ * @file       allelesblock.cpp
+ * @author     Paul O. Lewis
+ * @copyright  Copyright © 1999. All Rights Reserved.
+ * @variable   alleles_fixed [bool:private] if alleles_fixed is true, new alleles cannot be added
+ * @variable   datapoint [datapoints:private] see enum datapoints for details
+ * @variable   haploid [IntSet:protected] set of loci that are haploid
+ * @variable   indivCount [int*:private] indivCount[i] is index of first individual in population i+1
+ * @see        Nexus
+ * @see        NexusBlock
+ * @see        NexusReader
+ * @see        NexusToken
+ * @see        XNexus
+ *
+ * This class handles reading and storage for the Nexus block ALLELES.
+ * It is derived from CharactersBlock, and overrides the member functions
+ * Read and Reset, which are virtual functions in the base class.
+ *
+ * Because it is derived from the class CharactersBlock, this block
+ * uses the DiscreteMatrix class for storing the data, and this
+ * requires a little explanation.  The DiscreteMatrix class is designed for
+ * storing an r X c array of integers.  The way it is used here, the rows
+ * represent individuals and the columns loci.  In order to store data for
+ * both genes at a given locus for diploid individuals, the integer stored
+ * is broken up into a higher-order word and a lower-order word.  The macros
+ * HIWORD and LOWORD can be used to extract these two components from the
+ * integer value stored in the DiscreteMatrix structure.  Note that this
+ * technique assumes integers are 4 bytes (or greater) in size, allowing
+ * 2 bytes of storage for each of the two allelic states stored.  The maximum
+ * integer that can be stored in 2 bytes is 0xFF, or 255, which is thus
+ * the maximum number of alleles that can be defined for each locus.
+ *
+ * <p>The variable <b>gap</b> from the underlying CharactersBlock class 
+ * has been reassigned to function as the separator character.
+ *
+ * <p>The array <b>indivCount</b> is used to store the row number of the 
+ * first individual in the <i>next</i> population. Thus, the standard 
+ * way to loop through all individuals in population i is:
+ * <pre>
+ * int numIndivs = ( i > 0 ? indivCount[i] - indivCount[i-1] : indivCount[i] );
+ * for( j = 0; j < numIndivs; j++ )
+ * {
+ *   gene = GetGene( i, j, locus, 0 );
+ *   if( gene < MAX_ALLELES ) {
+ *     // do something with gene 0
+ *   }
+ *   else {
+ *     // do nothing since gene 0 was missing data
+ *   }
+ *
+ *   if( !IsHaploid(locus) )
+ *   {
+ *     gene = GetGene( i, j, locus, 1 );
+ *     if( gene < MAX_ALLELES ) {
+ *       // do something with gene 1
+ *     }
+ *     else {
+ *       // do nothing since gene 1 was missing data
+ *     }
+ *   }
+ * }
+ * </pre>
+ *
+ * <P> Below is a table showing the correspondence between the elements of
+ * an ALLELES block and the variables and member functions that can be used
+ * to access each piece of information stored.
+ *
+ * <p><table border=1>
+ * <tr>
+ *   <th> Nexus command
+ *   <th> Nexus subcommand
+ *   <th> Data Members
+ *   <th> Member Functions
+ * <tr>
+ *   <td rowspan=3> DIMENSIONS
+ *   <td> NEWPOPS
+ *   <td> bool <a href="CharactersBlock.html#newtaxa">newtaxa</a>
+ *   <td>
+ * <tr>
+ *   <td> NPOP
+ *   <td> int <a href="CharactersBlock.html#ntax">ntax</a> (see also <a href="CharactersBlock.html#ntaxTotal">ntaxTotal</a>)
+ *   <td> int <a href="CharactersBlock.html#GetNTax">GetNTax()</a> (see also <a href="CharactersBlock.html#GetNumMatrixRows">GetNumMatrixRows()</a>)
+ * <tr>
+ *   <td> NLOCI
+ *   <td> int <a href="CharactersBlock.html#nchar">nchar</a> (see also <a href="CharactersBlock.html#ncharTotal">ncharTotal</a>)
+ *   <td> int <a href="CharactersBlock.html#GetNChar">GetNChar()</a> (see also <a href="CharactersBlock.html#GetNumMatrixCols">GetNumMatrixCols()</a>)
+ * <tr>
+ *   <td rowspan=9> FORMAT
+ *   <td> DATAPOINT
+ *   <td> datapoints <a href="#datapoint">datapoint</a>
+ *   <td> int <a href="#GetDataPoint">GetDataPoint()</a>
+ * <tr>
+ *   <td> RESPECTCASE
+ *   <td> int <a href="CharactersBlock.html#respectingCase">respectingCase</a>
+ *   <td> int <a href="CharactersBlock.html#IsRespectCase">IsRespectCase()</a>
+ * <tr>
+ *   <td> MISSING
+ *   <td> char <a href="CharactersBlock.html#missing">missing</a>
+ *   <td> char <a href="CharactersBlock.html#GetMissingSymbol">GetMissingSymbol()</a>
+ * <tr>
+ *   <td> SEPARATOR
+ *   <td> char <a href="CharactersBlock.html#gap">gap</a>
+ *   <td> char <a href="#GetSeparatorSymbol">GetSeparatorSymbol()</a>
+ * <tr>
+ *   <td> EQUATE
+ *   <td> AssocList <a href="CharactersBlock.html#equates">equates</a>
+ *   <td> char* <a href="CharactersBlock.html#GetEquateKey">GetEquateKey( int k )</a>
+ *        <br> char* <a href="CharactersBlock.html#GetEquateValue">GetEquateValue( int k )</a>
+ *        <br> int <a href="CharactersBlock.html#GetNumEquates">GetNumEquates()</a>
+ * <tr>
+ *   <td> (NO)LABELS
+ *   <td> int <a href="CharactersBlock.html#labels">labels</a>
+ *   <td> int <a href="CharactersBlock.html#IsLabels">IsLabels()</a>
+ * <tr>
+ *   <td> TRANSPOSE
+ *   <td> int <a href="CharactersBlock.html#transposing">transposing</a>
+ *   <td> int <a href="CharactersBlock.html#IsTranspose">IsTranspose()</a>
+ * <tr>
+ *   <td> INTERLEAVE
+ *   <td> int <a href="CharactersBlock.html#interleaving">interleaving</a>
+ *   <td> int <a href="CharactersBlock.html#IsInterleave">IsInterleave()</a>
+ * <tr>
+ *   <td> (NO)TOKENS
+ *   <td> int <a href="CharactersBlock.html#tokens">tokens</a>
+ *   <td> int <a href="CharactersBlock.html#IsTokens">IsTokens()</a>
+ * <tr>
+ *   <td rowspan=1 colspan=2 align=left> ELIMINATE
+ *   <td> int* <a href="CharactersBlock.html#eliminated">eliminated</a>
+ *   <td> int <a href="CharactersBlock.html#IsEliminated">IsEliminated( int origCharIndex )</a>
+ *        <br> int <a href="CharactersBlock.html#GetNumEliminated">GetNumEliminated()</a>
+ * <tr>
+ *   <td rowspan=1 colspan=2 align=left> MATRIX 
+ *   <td> DiscreteMatrix* <a href="CharactersBlock.html#matrix">matrix</a>
+ *   <td> char <a href="#GetState">GetState( int i, int j, int k = 0 )</a>
+ *        <br> int <a href="#GetInternalRepresentation">GetInternalRepresentation( int i, int j, int k = 0 )</a>
+ *        <br> int <a href="#GetNumStates">GetNumStates( int i, int j )</a>
+ *        <br> int <a href="#GetNumMatrixRows">GetNumMatrixRows()</a>
+ *        <br> int <a href="#GetNumMatrixCols">GetNumMatrixCols()</a>
+ *        <br> int <a href="#IsPolymorphic">IsPolymorphic( int i, int j )</a>
+ * </table>
+ */
+
+/**
+ * @enumeration
+ * @enumitem  standard [1] means standard datapoint
+ * @enumitem  fraglen  [2] means fraglen datapoint
+ *
+ * For use with the variable datapoint.  Default is 1 (standard datapoint).
+ */
+
+/**
+ * @constructor
+ *
+ * Performs the following initializations:
+ * <table>
+ * <tr><th align="left">Variable <th> <th align="left"> Initial Value
+ * <tr><td> alleles_fixed  <td>= <td> false
+ * <tr><td> datapoint      <td>= <td> AllelesBlock::standard
+ * <tr><td> gap            <td>= <td> '/'
+ * <tr><td> id             <td>= <td> "ALLELES"
+ * <tr><td> indivCount     <td>= <td> NULL
+ * <tr><td> labels         <td>= <td> false
+ * <tr><td> respectingCase <td>= <td> true
+ * <tr><td> tokens         <td>= <td> true
+ * </table>
+ */
+AllelesBlock::AllelesBlock( TaxaBlock& tb, AssumptionsBlock& ab )
+	: CharactersBlock( tb, ab )
+{
+	// Thinking of changing any of these defaults?
+	// If so, do it also in the Reset function.
+	//
+	alleles_fixed  = false;
+	datapoint      = standard;
+	gap            = '/';
+	id             = "ALLELES";
+	labels         = false;
+	respectingCase = true;
+	tokens         = true;
+	indivCount     = NULL;
+}
+
+/**
+ * @destructor
+ *
+ * Frees memory allocated for the indivCount array.
+ */
+AllelesBlock::~AllelesBlock()
+{
+	if( indivCount != NULL ) 
+		delete [] indivCount;
+}
+
+/**
+ * @method AlleleCount [int:public]
+ * @param allele [int] the allele in question
+ * @param locus [int] the locus in question, in range [0..nloci)
+ * @param pop [int] the population in question, in range [0..npops) (default value -1)
+ *
+ * Returns the number of genes that are identical to allele.
+ * Assumes locus has not been excluded.  If no population is
+ * supplied, sums across all active populations.  If population
+ * is supplied, count will only be for that population.  Assumes
+ * that if population is specified, that population is not one 
+ * currently deleted by the user.
+ *
+ * Note: this is a relatively slow function because an allele count 
+ * is performed for each call.
+ */
+int AllelesBlock::AlleleCount( int allele, int locus, int pop /* = -1 */ )
+{
+	assert( locus >= 0 && locus < nchar );
+	assert( pop > -2 && pop < ntax );
+	assert( !IsExcluded(locus) );
+
+	bool do_one_pop = ( pop >= 0 );
+	assert( !( do_one_pop && IsDeleted(pop) ) );
+
+	int i, j, gene;
+	int allele_count = 0;
+
+	i = ( do_one_pop ? pop : 0 );
+	for( ; i < ntax; i++ )
+	{
+		if( do_one_pop && i > pop )
+			break;
+		if( IsDeleted(i) ) continue;
+		int numIndivs = ( i > 0 ? indivCount[i] - indivCount[i-1] : indivCount[i] );
+		for( j = 0; j < numIndivs; j++ )
+		{
+			gene = GetGene( i, j, locus, 0 );
+			if( gene < MAX_ALLELES ) {
+				if( gene == allele )
+					allele_count++;
+			}
+		
+			if( !IsHaploid(locus) )
+			{
+				gene = GetGene( i, j, locus, 1 );
+				if( gene < MAX_ALLELES ) {
+					if( gene == allele )
+						allele_count++;
+				}
+			}
+		}
+	}
+
+	return allele_count;
+}
+
+/**
+ * @method AlleleFrequency [double:public]
+ * @param allele [int] the allele in question
+ * @param locus [int] the locus in question, in range (0..nchar]
+ * @param pop [int] the population in question, in range (0..ntax] (default is -1)
+ * @throws XAllMissingData
+ *
+ * Returns observed frequency (expressed as a proportion)
+ * of the allele specified at the specified locus in the specified
+ * population.  Assumes locus has not been excluded. If population
+ * not specified, allele frequency over all populations except
+ * those currently deleted will be returned.  Assumes
+ * that if population is specified, that population is not one 
+ * currently deleted by the user.  Throws an XAllMissingData
+ * exception if the total number of alleles of all types is zero.
+ *
+ * Note: this is a relatively slow function because an allele count 
+ * is performed for each call.
+ */
+double AllelesBlock::AlleleFrequency( int allele, int locus, int pop /* = -1 */ )
+{
+	assert( locus >= 0 && locus < nchar );
+	assert( pop > -2 && pop < ntax );
+	assert( !IsExcluded(locus) );
+
+	bool do_one_pop = ( pop >= 0 );
+	assert( !( do_one_pop && IsDeleted(pop) ) );
+
+	int i, j, gene;
+	int total = 0;
+	int allele_count = 0;
+
+	i = ( do_one_pop ? pop : 0 );
+	for( i; i < ntax; i++ )
+	{
+		if( do_one_pop && i > pop )
+			break;
+		if( IsDeleted(i) ) continue;
+		int numIndivs = ( i > 0 ? indivCount[i] - indivCount[i-1] : indivCount[i] );
+		for( j = 0; j < numIndivs; j++ )
+		{
+			gene = GetGene( i, j, locus, 0 );
+			if( gene < MAX_ALLELES ) {
+				total++;
+				if( gene == allele )
+					allele_count++;
+			}
+			
+			if( !IsHaploid(locus) )
+			{
+				gene = GetGene( i, j, locus, 1 );
+				if( gene < MAX_ALLELES ) {
+					total++;
+					if( gene == allele )
+						allele_count++;
+				}
+			}
+		}
+	}
+
+	if( total == 0 )
+		throw XAllMissingData();
+		
+	double freq = (double)allele_count / (double)total;
+
+	return freq;
+}
+
+/**
+ * @method DebugShowMatrix [int:protected]
+ * @param out [ostream&] output stream on which to print matrix
+ * @param marginText [char*] nxsstring to print first on each line
+ *
+ * Provides a dump of the contents of the matrix variable.  Useful for testing
+ * whether data is being read as expected.  The default for marginText is NULL,
+ * which has the effect of placing the matrix output flush left.  If each line
+ * of output should be prefaced with a tab character, specify marginText = "\t".
+ */
+void AllelesBlock::DebugShowMatrix( std::ostream& out, char* marginText /* = NULL */ )
+{
+	int pop, indiv, locus;
+	
+	for( pop = 0; pop < ntax; pop++ )
+	{
+		if( marginText != NULL )
+		out << marginText;
+		
+		int origPopIndex =  GetOrigTaxonIndex(pop); // this function still needs to be written
+		nxsstring currTaxonLabel = taxa.GetTaxonLabel( origPopIndex );
+		out << currTaxonLabel << ":" << endl;
+		
+		int last = indivCount[pop];
+		if( pop > 0 )
+			last -= indivCount[pop-1];
+		for( indiv = 0; indiv < last; indiv++ )
+		{
+			if( marginText != NULL )
+				out << marginText;
+			out << setw(5) << (indiv+1);
+			
+			for( locus = 0; locus < nchar; locus++ )
+			{
+				int gene0 = GetGene( pop, indiv, locus, 0 );
+				out << "  ";
+				if( gene0 == 0xff )
+					out << "?";
+				else
+					out << gene0;
+				
+				if( !IsHaploid(locus) ) 
+				{
+					int gene1 = GetGene( pop, indiv, locus, 1 );
+					out << "/";
+					if( gene1 == 0xff )
+						out << "?";
+					else
+						out << gene1;
+				}
+			}
+			out << endl;
+		}
+	}
+}
+
+/**
+ * @method FocalAlleleCount [void:public]
+ * @param focal_allele [int] the allele to focus on (i.e., A)
+ * @param locus [int] the locus in question, in range (0..nchar]
+ * @param pop [int] the population in question, in range (0..ntax]
+ * @param n_AA [int&] the place to store the count of AA genotypes
+ * @param n_Aa [int&] the place to store the count of Aa genotypes
+ * @param n_aa [int&] the place to store the count of aa genotypes
+ * @throws XAllMissingData
+ *
+ * If the focal_allele is "A", then this function counts up the 
+ * number of "AA", "Aa", and "aa" genotypes and returns these counts
+ * in n_AA, n_Aa, and n_aa, respectively.  It is assumed that locus
+ * is not excluded and pop is not deleted.  It is also assumed that
+ * the data for locus are diploid.
+ *
+ * Note: this is a relatively slow function because genotypes are counted 
+ * anew each time this function is called.
+ */
+void AllelesBlock::FocalAlleleCount( int focal_allele, int locus, int pop
+	, int& n_AA, int& n_Aa, int& n_aa )
+{
+	assert( locus >= 0 && locus < nchar );
+	assert( pop >= 0 && pop < ntax );
+	assert( !IsDeleted(pop) );
+	assert( !IsExcluded(locus) );
+	assert( !IsHaploid(locus) );
+
+	int j, gene0, gene1;
+	n_AA = n_Aa = n_aa = 0;
+
+	int numIndivs = ( pop > 0 ? indivCount[pop] - indivCount[pop-1] : indivCount[pop] );
+	for( j = 0; j < numIndivs; j++ )
+	{
+		gene0 = GetGene( pop, j, locus, 0 );
+		gene1 = GetGene( pop, j, locus, 1 );
+		if( gene0 == MAX_ALLELES || gene1 == MAX_ALLELES )
+			continue;
+		if( gene0 == focal_allele && gene1 == focal_allele )
+			n_AA++;
+		else if( gene0 == focal_allele && gene1 != focal_allele )
+			n_Aa++;
+		else if( gene0 != focal_allele && gene1 == focal_allele )
+			n_Aa++;
+		else 
+			n_aa++;
+	}
+}
+	
+/**
+ * @method GenotypeCount [int:public]
+ * @param allele1 [int] one of the two alleles in question
+ * @param allele2 [int] the other of the alleles in question
+ * @param locus [int] the locus in question, in range (0..nchar]
+ * @param pop [int] the population in question, in range (0..ntax] (default is -1)
+ * @throws XAllMissingData
+ *
+ * Returns the number of genotypes for which one gene is
+ * the same as allele1 and the other is the same as allele2.
+ * The order in which alleles are supplied does not matter
+ * (i.e., the number of heterozygotes having genotype 1/2
+ * could be queried in either of the following ways:
+ * <pre>
+ *   GenotypeCount( 1, 2, pop, locus )
+ *   GenotypeCount( 2, 1, pop, locus )
+ * </pre>
+ * <p>Assumes locus has not been excluded and data is
+ * diploid (for haploid data use AlleleCount instead).
+ * If population is not specified, returns count over all
+ * populations not currently deleted, otherwise returns count for
+ * specified population only. Assumes that if population is specified, 
+ * that population is not one currently deleted by the user. 
+ * Throws XAllMissingData if only missing data encountered
+ * in the populations considered for the specified locus.
+ *
+ * Note: this is a relatively slow function because a genotype count 
+ * is performed for each call.
+ */
+int AllelesBlock::GenotypeCount( int allele1, int allele2, int locus, int pop /* = -1 */ )
+{
+	assert( locus >= 0 && locus < nchar );
+	assert( pop > -2 && pop < ntax );
+	assert( !IsExcluded(locus) );
+	assert( !IsHaploid(locus) );
+
+	bool do_one_pop = ( pop >= 0 );
+	assert( !( do_one_pop && IsDeleted(pop) ) );
+
+	int i, j, gene0, gene1;
+	int genotype_count = 0;
+
+	i = ( do_one_pop ? pop : 0 );
+	for( ; i < ntax; i++ )
+	{
+		if( do_one_pop && i > pop )
+			break;
+		if( IsDeleted(i) ) continue;
+		int numIndivs = ( i > 0 ? indivCount[i] - indivCount[i-1] : indivCount[i] );
+		for( j = 0; j < numIndivs; j++ )
+		{
+			gene0 = GetGene( i, j, locus, 0 );
+			gene1 = GetGene( i, j, locus, 1 );
+			if( gene0 < MAX_ALLELES && gene1 < MAX_ALLELES ) 
+			{
+				if( gene0 == allele1 && gene1 == allele2 )
+					genotype_count++;
+				else if( gene0 == allele2 && gene1 == allele1 )
+					genotype_count++;
+			}
+		}
+	}
+
+	return genotype_count;
+}
+
+/**
+ * @method GetLocusLabel [int:public]
+ * @param locus [int] the locus in the range [0..nloci)
+ *
+ * Returns the nxsstring label for the locus requested.
+ */
+nxsstring AllelesBlock::GetLocusLabel( int locus )
+{
+	assert( locus >= 0 );
+	assert( locus < nchar );
+	return charLabels[locus];
+}
+
+/**
+ * @method GetAlleleLabel [int:public]
+ * @param locus [int] the locus in the range [0..nloci)
+ * @param allele [int] the allele
+ *
+ * Returns the nxsstring label for the allele requested.
+ */
+nxsstring AllelesBlock::GetAlleleLabel( int locus, int allele )
+{
+	nxsstring allele_label = "no-name";
+   LabelListBag::const_iterator cib = charStates.find(locus);
+   if( cib != charStates.end() )
+   {
+      int ns = (*cib).second.size();
+      if( allele >= 0 && allele < ns )
+      	allele_label = (*cib).second[allele];
+   }
+   return allele_label;
+}
+
+/**
+ * @method GetIndivCount [int:public]
+ * @param pop [int] the population
+ *
+ * Returns value of indivCount[pop], which is the row number of
+ * the first individual in population pop+1.
+ */
+int AllelesBlock::GetIndivCount( int pop )
+{
+	return indivCount[pop];
+}
+
+/**
+ * @method GetGene [int:public]
+ * @param pop [int] the population
+ * @param indiv [int] the individual (0-offset relative to first individual in population)
+ * @param locus [int] the locus
+ * @param gene [int] if 0, low-order word returned; high-order word returned otherwise
+ *
+ * Gets the low-order 2-byte word (if last parameter is 0) or
+ * the high-order 2-byte word (if last parameter is 1) and
+ * returns this as an int value.  If the word returned is
+ * exactly 0xff (= 255), this should be interpreted as missing
+ * data. The macro MAX_ALLELES (defined in the allelesblock.h header file)
+ * equals 0xff and can thus be used to test the return value.
+ */
+int AllelesBlock::GetGene( int pop, int indiv, int locus, int gene )
+{
+   //typedef long LONG;
+   //typedef unsigned long       DWORD;
+   //typedef unsigned short      WORD;
+   //#define LOWORD(l)           ((WORD)(l))
+   //#define HIWORD(l)           ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
+   //int szWORD = sizeof(unsigned short);
+   //int szDWORD = sizeof(unsigned long);
+   //int szLONG = sizeof(long);
+   //int sz_int = sizeof(int);
+   //cerr << szWORD << "," << szDWORD << "," << szLONG << "," << sz_int << endl;
+   int gene_val;
+   int row = indiv + ( pop > 0 ? indivCount[pop-1] : 0 );
+   assert( !matrix->IsGap( row, locus ) );
+   if( matrix->IsMissing( row, locus ) )
+      gene_val = 0xff;
+   else {
+      if( gene == 0 )
+         gene_val = (unsigned short)( matrix->GetState( row, locus ) );
+      else
+         gene_val = (unsigned short)( ( (unsigned long)( matrix->GetState( row, locus ) ) >> 16 ) & 0xFFFF );
+   }
+   return gene_val;
+}
+
+/**
+ * @method GetNumHaploid [int:public]
+ *
+ * Returns number of items in haploid vector.  Number returned does
+ * take account of eliminated loci (i.e., eliminated haploid loci are
+ * not included in the tally) but not excluded ones.
+ */
+int AllelesBlock::GetNumHaploid()
+{
+	if( haploid.empty() )
+		return 0;
+		
+	if( GetNumEliminated() == 0 )
+		return haploid.size();
+		
+	// Some loci have been eliminated, so must check each
+	// one listed in haploid vector to make sure it was not
+	// eliminated
+	//
+	int n = 0;
+	IntSet::const_iterator i = haploid.begin();
+	for( ; i != haploid.end(); ++i ) {
+		int origIndex = (*i);
+		if( IsEliminated(origIndex) )
+			continue;
+		n++;
+	}
+	return n;
+}
+
+/**
+ * @method HandleAllele [int:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @param j [int] the locus index, in range [0..nchar)
+ * @throws XNexus
+ *
+ * Called from HandleNextGenotype to read in the next state when 'tokens'
+ * is in effect.
+ * If a LOCUSALLELELABELS or ALLELELABELS command was included in the ALLELES
+ * block, HandleTokenState looks up the token in charStates to make
+ * sure it is a valid state, then returns the allele's value (0, 1, 2, ...).
+ * If no list of valid allelic states was prespecified, HandleTokenState has
+ * no way to check the validity of the allele and simply adds it to charStates,
+ * returning the allele's value (0, 1, 2, ...).
+ * Note: HandleTokenState does NOT handle adding the allele's value to the
+ * matrix. Save the return value, let's call it x, and use the following
+ * command to add it to matrix: matrix->AddState( i, j, x ).
+ */
+int AllelesBlock::HandleAllele( NexusToken& token, int j )
+{
+   int k = 0;
+
+   // First check to see if token equals the missing data symbol.
+   // If so, return 0xFF to indicate that missing data was specified.
+   //
+	if( token.GetTokenLength() == 1 && token.GetToken()[0] == missing )
+		return 0xff;
+
+   // If alleles were prespecified in ALLELELABELS or LOCUSALLELELABELS command,
+   // check the current token against the list of valid allele labels
+   // If alleles were not prespecified, so go ahead and add current token to the
+   // list of valid alleles for locus j, obtaining the allele's integer designation
+   // in the process to return to the calling function.
+   //
+
+   // Check to see if any alleles are listed for locus j in charStates
+   //
+   if( charStates.find(j) == charStates.end() )
+   {
+      if( alleles_fixed ) {
+         errormsg = "No alleles were defined for character ";
+         errormsg += ( 1 + GetOrigCharIndex(j) );
+         throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+      }
+      else {
+         charStates[j].push_back( token.GetToken() );
+         return 0; // first allele in the list
+      }
+   }
+
+   // Some alleles have already been added to the list of alleles stored in
+   // charStates for locus j.  Check to see if token is one of these.
+   //
+   LabelListBag::const_iterator bagIter = charStates.find(j);
+   int nAlleles = (*bagIter).second.size();
+   LabelList::const_iterator ci_begin = (*bagIter).second.begin();
+   LabelList::const_iterator ci_end = (*bagIter).second.end();
+   nxsstring t = token.GetToken( respectingCase );
+   LabelList::const_iterator cit;
+   if( respectingCase )
+      cit = find( ci_begin, ci_end, t );
+   else
+      cit = find_if( ci_begin, ci_end, bind2nd( stri_equal(), t ) );
+
+   if( cit == ci_end )
+   {
+      if( alleles_fixed ) {
+         errormsg = "Allele ";
+         errormsg += t;
+         errormsg += " not defined for locus ";
+         errormsg += ( 1 + GetOrigCharIndex(j) );
+         throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+      }
+      else {
+         charStates[j].push_back( token.GetToken() );
+         return nAlleles;
+      }
+   }
+
+   // ok, the allele has been identified, so return the alleles's internal
+   // representation.  That is, if the list of allele labels was
+   // "fast medium slow" and "slow" was specified in the data file,
+   // state saved in matrix would be 2 (it would be 1 if "medium" were
+   // specified in the data file, and 0 if "fast" were specified in the
+   // data file).
+   k = ( cit - ci_begin );
+
+	return k;
+}
+
+/**
+ * @method HandleFormat [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when FORMAT command needs to be parsed from within the
+ * DIMENSIONS block.  Deals with everything after the token FORMAT
+ * up to and including the semicolon that terminates the FORMAT
+ * command.
+ */
+void AllelesBlock::HandleFormat( NexusToken& token )
+{
+	bool standardDataTypeAssumed = false;
+	bool ignoreCaseAssumed = false;
+
+	for(;;)
+	{
+		token.GetNextToken();
+
+		if( token.Equals("DATAPOINT") )
+		{
+
+			// this should be an equals sign
+			token.GetNextToken();
+			if( !token.Equals("=") ) {
+				errormsg = "Expecting '=' after keyword DATAPOINT but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			// this should be one of the following: STANDARD, FRAGLEN
+			token.GetNextToken();
+			if( token.Equals("STANDARD") )
+				datapoint = standard;
+			else if( token.Equals("FRAGLEN") )
+				datapoint = fraglen;
+			else {
+				errormsg = token.GetToken();
+            errormsg += " is not a valid DATAPOINT within a ";
+            errormsg += id;
+            errormsg += " block";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			if( standardDataTypeAssumed && datapoint != standard ) {
+				errormsg = "DATAPOINT must be specified first in FORMAT command";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			if( datapoint == fraglen )
+				tokens = true;
+		}
+
+		else if( token.Equals("RESPECTCASE") )
+		{
+			if( ignoreCaseAssumed ) {
+				errormsg = "RESPECTCASE must be specified before MISSING and SEPARATOR in FORMAT command";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+			standardDataTypeAssumed = true;
+			respectingCase = true;
+		}
+
+		else if( token.Equals("MISSING") )
+		{
+			// this should be an equals sign
+			token.GetNextToken();
+			if( !token.Equals("=") ) {
+				errormsg = "Expecting '=' after keyword MISSING but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			// this should be the missing data symbol (single character)
+			token.GetNextToken();
+			if( token.GetTokenLength() != 1 ) {
+				errormsg = "MISSING symbol should be a single character, but ";
+            errormsg += token.GetToken();
+            errormsg += " was specified";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+			else if( token.IsPunctuationToken() && !token.IsPlusMinusToken() ) {
+				errormsg = "MISSING symbol specified cannot be a punctuation token (";
+            errormsg += token.GetToken();
+            errormsg += " was specified)";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+			else if( token.IsWhitespaceToken() ) {
+				errormsg = "MISSING symbol specified cannot be a whitespace character (";
+            errormsg += token.GetToken();
+            errormsg += " was specified)";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			missing = token.GetToken()[0];
+
+			ignoreCaseAssumed = true;
+			standardDataTypeAssumed = true;
+		}
+
+		else if( token.Equals("NOSEPARATOR") )
+		{
+         gap = '\0';
+      }
+
+		else if( token.Equals("SEPARATOR") )
+		{
+			// this should be an equals sign
+			token.GetNextToken();
+			if( !token.Equals("=") ) {
+				errormsg = "Expecting '=' after keyword SEPARATOR but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			// this should be the separator symbol (single character)
+			token.GetNextToken();
+			if( token.GetTokenLength() != 1 ) {
+				errormsg = "SEPARATOR symbol should be a single character, but ";
+            errormsg += token.GetToken();
+            errormsg += " was specified";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+			else if( token.IsPunctuationToken() && !token.IsPlusMinusToken() && !token.Equals("/") ) {
+				errormsg = "SEPARATOR symbol specified cannot be a punctuation token (";
+            errormsg += token.GetToken();
+            errormsg += " was specified)";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+			else if( token.IsWhitespaceToken() ) {
+				errormsg = "SEPARATOR symbol specified cannot be a whitespace character (";
+            errormsg += token.GetToken();
+            errormsg += " was specified)";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			gap = token.GetToken()[0];
+
+			ignoreCaseAssumed = true;
+			standardDataTypeAssumed = true;
+		}
+
+		else if( token.Equals("EQUATE") )
+		{
+			// this should be an equals sign
+			token.GetNextToken();
+			if( !token.Equals("=") ) {
+				errormsg = "Expecting '=' after keyword EQUATE but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			// this should be a double-quote character
+			token.GetNextToken();
+			if( !token.Equals("\"") ) {
+				errormsg = "Expecting '\"' after keyword EQUATE but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+         // loop until second double-quote character is encountered
+         for(;;)
+			{
+   			token.GetNextToken();
+   			if( token.Equals("\"") )
+               break;
+
+            // if token is not a double-quote character, then it must be
+            // an equate token (i.e., the token to be replaced in
+            // the data matrix)
+
+            // check for bad choice of equate symbol
+            if( token.GetTokenLength() == 1 )
+            {
+               nxsstring t = token.GetToken();
+               char ch = t[0];
+               bool badEquateSymbol = false;
+
+               // the character '^' cannot be an equate symbol
+               if( ch == '^' )
+                  badEquateSymbol = true;
+
+               // equate symbols cannot be punctuation (except for + and -)
+               if( token.IsPunctuationToken() && !token.IsPlusMinusToken() )
+                  badEquateSymbol = true;
+
+               // equate symbols cannot be same as missing or separator
+               if( ch == missing || ch == gap )
+                  badEquateSymbol = true;
+
+               if( badEquateSymbol ) {
+                  errormsg = "EQUATE symbol specified (";
+                  errormsg += token.GetToken();
+                  errormsg += ") is not valid; must not be same as missing, \nseparator, or any of the following: ()[]{}/\\,;:=*'\"`<>^";
+                  throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+               }
+            }
+
+            nxsstring k = token.GetToken();
+
+            // this should be an equals sign
+				token.GetNextToken();
+            if( !token.Equals("=") ) {
+               errormsg = "Expecting '=' in EQUATE definition but found ";
+               errormsg += token.GetToken();
+               errormsg += " instead";
+               throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+            }
+
+            // this should be the token to be substituted in for the equate symbol
+            token.SetLabileFlagBit( NexusToken::parentheticalToken );
+            token.SetLabileFlagBit( NexusToken::curlyBracketedToken );
+            token.GetNextToken();
+            nxsstring v = token.GetToken();
+
+            // add the new equate association to the equates list
+            equates[k] = v;
+			}
+
+			standardDataTypeAssumed = true;
+		}
+
+		else if( token.Equals("LABELS") )
+		{
+			labels = true;
+			standardDataTypeAssumed = true;
+		}
+
+		else if( token.Equals("NOLABELS") )
+		{
+			labels = false;
+			standardDataTypeAssumed = true;
+		}
+
+		else if( token.Equals("TRANSPOSE") )
+		{
+			transposing = true;
+			standardDataTypeAssumed = true;
+		}
+
+		else if( token.Equals("INTERLEAVE") )
+		{
+			interleaving = true;
+			standardDataTypeAssumed = true;
+		}
+
+		else if( token.Equals("TOKENS") )
+		{
+			tokens = true;
+			standardDataTypeAssumed = true;
+		}
+
+		else if( token.Equals("NOTOKENS") )
+		{
+			tokens = false;
+			standardDataTypeAssumed = true;
+		}
+
+		else if( token.Equals(";") ) {
+			break;
+		}
+
+      else {
+         errormsg = "Unrecognized keyword (";
+         errormsg += token.GetToken();
+         errormsg += ") encountered in FORMAT command";
+         throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+      }
+	}
+}
+
+/**
+ * @method HandleHaploid [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ *
+ * Called when HAPLOID command needs to be parsed from within the
+ * ALLELES block.  Deals with everything after the token HAPLOID
+ * up to and including the semicolon that terminates the HAPLOID
+ * command.  Any character numbers or ranges of character numbers
+ * specified are stored in the IntSet haploid, which is empty
+ * until a HAPLOID command is encountered, if ever.  Note that
+ * like all sets the character ranges are adjusted so that their
+ * offset is 0.  For example, given "haploid 4-7;" in the data
+ * file, the haploid list would contain the values 3, 4, 5,
+ * and 6 (not 4, 5, 6, and 7).
+ */
+void AllelesBlock::HandleHaploid( NexusToken& token )
+{
+   // construct an object of type SetReader, then call its run function
+   // to store the set in the haploid set
+   //
+	SetReader( token, ncharTotal, haploid, *this, SetReader::charset ).Run();
+
+	//OPEN ISSUE: perhaps it is better to just create a local
+	// haploid set, fill it using the above line, then translate
+	// that to a bool array for use from this point on
+}
+
+/**
+ * @method HandleMatrix [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when MATRIX command needs to be parsed from within the
+ * ALLELES block.  Deals with everything after the token MATRIX
+ * up to and including the semicolon that terminates the MATRIX
+ * command.
+ */
+void AllelesBlock::HandleMatrix( NexusToken& token )
+{
+   int i, j, k;
+   
+	if( transposing ) {
+		errormsg = "Sorry, transposed ALLELES block matrix not supported at this time";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+   }
+
+	if( datapoint == fraglen ) {
+		errormsg = "Sorry, fraglen datapoint in ALLELES block not supported at this time";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+	if( ntaxTotal == 0 )
+		ntaxTotal = taxa.GetNumTaxonLabels();
+
+	if( ntax == 0 ) {
+		errormsg = "Cannot create ALLELES block matrix: there are 0 populations specified";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+	if( nchar == 0 ) {
+		errormsg = "Cannot create ALLELES block matrix: there are 0 loci specified";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+   // create a matrix to begin with, we will need to expand it as we go
+   // since there will almost always be more than one individual per population
+	if( matrix != NULL )
+		delete matrix;
+	matrix = new DiscreteMatrix( ntax, nchar );
+
+	// Allocate memory for (and initialize) the arrays activeTaxon and activeChar.
+	// All loci (i.e., "characters") and all populations (i.e., "taxa") are initially active.
+	//
+	activeTaxon = new bool[ntax];
+	for( i = 0; i < ntax; i++ )
+		activeTaxon[i] = true;
+		
+	activeChar = new bool[nchar];
+	for( j = 0; j < nchar; j++ )
+		activeChar[j] = true;
+
+	// Allocate memory for (and initialize) the array indivCount
+	//
+	indivCount = new int[ntax];
+	for( i = 0; i < ntax; i++ )
+		indivCount[i] = 0;
+	
+	// The value of ncharTotal is normally identical to the value of nchar specified
+	// in the ALLELES block DIMENSIONS command.  If an ELIMINATE command is
+	// processed, however, nchar < ncharTotal.  Note that the ELIMINATE command
+	// will have already been read by now, and the ELIMINATEd locus numbers
+	// will be stored in the array eliminated.
+	//
+	if( charPos != NULL )
+		delete [] charPos;
+	charPos = new int[ncharTotal];
+
+	k = 0;
+	for( j = 0; j < ncharTotal; j++ ) {
+		if( IsEliminated(j) )
+			charPos[j] = -1;
+		else
+			charPos[j] = k++;
+	}
+
+	// The value of ntaxTotal equals the number of taxa specified in the
+	// TAXA block, whereas ntax equals the number of taxa specified in
+	// the DIMENSIONS command of the ALLELES block.  These two numbers
+	// will be identical unless some taxa have been left out of the MATRIX
+	// command of the ALLELES block, in which case ntax < ntaxTotal. We
+	// haven't yet read the MATRIX however, so for now we just initialize
+	// the taxonPos array to -1.
+	//
+	if( taxonPos != NULL )
+		delete [] taxonPos;
+	taxonPos = new int[ntaxTotal];
+	for( i = 0; i < ntaxTotal; i++ )
+		taxonPos[i] = -1;
+
+	// HandleTransposedMatrix and HandleStdMatrix both take care of
+	// reading the semicolon that terminates the MATRIX command
+	//
+	if( transposing )
+		HandleTransposedMatrix( token );
+	else
+		HandleStdMatrix( token );
+	
+	// If we've gotten this far, presumably it is safe to
+	// tell the ASSUMPTIONS block that were ready to take on
+	// the responsibility of being the current character-containing
+	// block (to be consulted if characters are excluded or included)
+	assumptionsBlock.SetCallback(this);
+}
+
+/**
+ * @method HandleNextGenotype [bool:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @param i [int] the index of the row of the data matrix where this genotype should be stored
+ * @param locus [int] the (original) locus index, in range [0..ncharTotal)
+ * @param stopOnNewline [bool] if interleaving, stop on encountering newline character (true by default)
+ * @throws XNexus
+ *
+ * Called from HandleStdMatrix or HandleTransposedMatrix function
+ * to read in the next genotype.  Always returns true except in the
+ * following cases, in which case it returns false:
+ * <ul>
+ * <li>if in interleave mode and a newline character is encountered
+ *     before any characters of the next token are read (unless
+ *     stopOnNewline is false)
+ * <li>if a comma, colon or semicolon is encountered before any
+ *     characters of the next token are read
+ * </ul>
+ * The row index (i) is the absolute row number into the matrix.  The row
+ * number into the matrix is indivCount[i-1] + j (if i > 0), where j is the
+ * position of an individual relative to the first individual in population
+ * i (j = 0, 1, ...).
+ */
+bool AllelesBlock::HandleNextGenotype( NexusToken& token, int i, int locus
+	, bool stopOnNewline /* = true */ )
+{
+	int x, y;
+
+   // It is possible that locus currChar has been ELIMINATEd, in
+   // which case we need to go through the motions of reading in the
+   // data but we don't store it.  The variable k will be our guide
+   // when it comes time to store data since k will be -1 for
+   // characters that were ELIMINATEd and will be set to the correct
+   // row for characters that have not been ELIMINATEd.
+   //
+   int k = charPos[locus];
+
+	// This should be the genotype for population i, individual j, and locus k
+   // Note that if this is the first individual (i.e., j == 0) and the matrix
+   // is interleaved, we need to ignore leading newline characters since
+   // the population label is normally placed on the line above the data
+   // for the first individual.
+	//
+   token.SetSpecialPunctuationCharacter( gap );
+   if( gap != '\0' )
+      token.SetLabileFlagBit( NexusToken::useSpecialPunctuation );
+   if( interleaving && stopOnNewline )
+      token.SetLabileFlagBit( NexusToken::newlineIsToken );
+   if( !tokens )
+      token.SetLabileFlagBit( NexusToken::singleCharacterToken );
+   token.SetLabileFlagBit( NexusToken::parentheticalToken );
+   token.SetLabileFlagBit( NexusToken::curlyBracketedToken );
+   token.GetNextToken();
+
+	if( interleaving && token.AtEOL() )
+		return false;
+
+	if( token.Equals(",") || token.Equals(";") || token.Equals(":") )
+		return false;
+		
+	// Allele should not be a punctuation character
+	//
+	if( token.IsPunctuationToken() ) {
+		errormsg = "Punctuation character (";
+		errormsg += token.GetToken();
+		errormsg += ") found where allele name expected";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+	// Make sure we didn't run out of file
+	//
+	if( token.AtEOF() ) {
+		errormsg = "Unexpected end of file encountered";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+	// If we didn't run out of file, I see no reason why we should
+	// have a zero-length token on our hands
+	assert( token.GetTokenLength() > 0 );
+
+	// We've read in the allele now, so if this locus has been
+	// ELIMINATEd, we want to skip the part that actually saves it
+	//
+	if( k >= 0 )
+   {
+      // see if any equate macros apply
+      //
+      nxsstring skey = nxsstring( token.GetToken( respectingCase ) );
+      AssocList::iterator p = equates.find( skey );
+      if( p != equates.end() ) {
+         nxsstring sval = (*p).second;
+         token.ReplaceToken( sval.c_str() );
+      }
+
+      // token should be in one of the following forms: "{"  "a"  "bb"
+      //
+      int polymorphism = token.Equals("(");
+      int uncertainty  = token.Equals("{");
+
+      if( !uncertainty && !polymorphism )
+      {
+         x = HandleAllele( token, k );
+         if( x > MAX_ALLELES ) {
+            errormsg = "Number of alleles for locus ";
+            errormsg += (k+1);
+            errormsg += " has exceeded limit of ";
+            errormsg += MAX_ALLELES;
+            throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+         matrix->SetState( i, k, x );
+      }
+      else
+      {
+         // borrow material from CharactersBlock::HandleNextState if and when
+         // ambiguity and polymorphism are implemented for the ALLELES block
+         //
+         errormsg = "Ambiguity and polymorphism not yet supported in ALLELES block";
+         throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+      }
+   }
+
+   // Bail out here if data is haploid
+   //
+   if( IsHaploid(locus) )
+   	return true;
+
+   // Now read in the separator character, if one was supplied
+   //
+   if( gap != '\0' )
+   {
+      token.SetSpecialPunctuationCharacter( gap );
+      token.SetLabileFlagBit( NexusToken::useSpecialPunctuation );
+      token.SetLabileFlagBit( NexusToken::singleCharacterToken );
+      if( interleaving )
+         token.SetLabileFlagBit( NexusToken::newlineIsToken );
+      token.GetNextToken();
+
+      if( interleaving && token.AtEOL() ) {
+   		errormsg = "Unexpected end of line encountered (within a genotype specification)";
+         throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+      }
+
+      if( token.Equals(",") ) {
+         errormsg = "Unexpected comma encountered (within a genotype specification)";
+         throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+      }
+   }
+
+   // same song, second verse...
+   //
+   if( gap != '\0' ) {
+      token.SetSpecialPunctuationCharacter( gap );
+      token.SetLabileFlagBit( NexusToken::useSpecialPunctuation );
+   }
+	if( interleaving )
+		token.SetLabileFlagBit( NexusToken::newlineIsToken );
+	if( !tokens )
+		token.SetLabileFlagBit( NexusToken::singleCharacterToken );
+   token.SetLabileFlagBit( NexusToken::parentheticalToken );
+   token.SetLabileFlagBit( NexusToken::curlyBracketedToken );
+	token.GetNextToken();
+
+	if( interleaving && token.AtEOL() ) {
+		errormsg = "Unexpected end of line encountered (reading second half of genotype specification)";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+   }
+
+	if( token.Equals(",") ) {
+		errormsg = "Unexpected comma encountered (reading second half of genotype specification)";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+   }
+
+	// Allele should not be a punctuation character
+	//
+	if( token.IsPunctuationToken() ) {
+		errormsg = "Punctuation character (";
+		errormsg += token.GetToken();
+		errormsg += ") found where allele name expected";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+	// Make sure we didn't run out of file
+	//
+	if( token.AtEOF() ) {
+		errormsg = "Unexpected end of file encountered";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+	// If we didn't run out of file, I see no reason why we should
+	// have a zero-length token on our hands
+	assert( token.GetTokenLength() > 0 );
+
+	// We've read in the allele now, so if this locus has been
+	// ELIMINATEd, we want to skip the part that actually saves it
+	//
+	if( k >= 0 )
+   {
+      // see if any equate macros apply
+      //
+      nxsstring skey = nxsstring( token.GetToken( respectingCase ) );
+      AssocList::iterator p = equates.find( skey );
+      if( p != equates.end() ) {
+         nxsstring sval = (*p).second;
+         token.ReplaceToken( sval.c_str() );
+      }
+
+      // token should be in one of the following forms: "{"  "a"  "bb"
+      //
+      int polymorphism = token.Equals("(");
+      int uncertainty  = token.Equals("{");
+
+      if( !uncertainty && !polymorphism )
+      {
+         y = HandleAllele( token, k );
+         if( y > MAX_ALLELES ) {
+            errormsg = "Number of alleles for locus ";
+            errormsg += (k+1);
+            errormsg += " has exceeded limit of ";
+            errormsg += MAX_ALLELES;
+            throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+			int value = SplitInt( x, y );
+         matrix->SetState( i, k, value );
+      }
+      else
+      {
+         // borrow material from CharactersBlock::HandleNextState if and when
+         // ambiguity and polymorphism are implemented for the ALLELES block
+         //
+         errormsg = "Ambiguity and polymorphism not yet supported in ALLELES block";
+         throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+      }
+   }
+
+	return true;
+}
+
+/**
+ * @method HandleStdMatrix [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called from HandleMatrix function to read in a standard
+ * (i.e., non-transposed) matrix.  Interleaving, if applicable,
+ * is dealt with herein.
+ */
+void AllelesBlock::HandleStdMatrix( NexusToken& token )
+{
+	int i, j, currChar;
+	int firstChar = 0;
+	int lastChar = ncharTotal;
+	int lastCharInSet = ncharTotal;
+	int nextFirst;
+	int page = 0;
+   int lastIndiv = 0;
+   int rowsInMatrix = ntax;
+   int rowsToAdd = 25;
+   bool comma = false;
+   bool colon = false;
+   bool semicolon = false;
+   bool skipLocusLoop = false;
+
+	for(;;)
+	{
+      j = 0;
+      
+		//*******************************************************
+		//******** Beginning of loop through populations ********
+		//*******************************************************
+
+		for( i = 0; i < ntax; i++ )
+		{
+         // This should be the population label
+         //
+         token.GetNextToken();
+         
+         errormsg = "    Population ";
+         errormsg += token.GetToken();
+         nexus->OutputComment( errormsg );
+         
+#if 1
+			if( page == 0 && newtaxa )
+			{
+				// This section:
+				// - on first (or only) interleave page
+				// - no previous TAXA block
+				
+				// check for duplicate taxon names
+				//
+				if( taxa.IsAlreadyDefined( token.GetToken() ) ) {
+					errormsg = "Data for this population (";
+					errormsg += token.GetToken();
+					errormsg += ") has already been saved";
+					throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+				}
+
+				// Labels provided and not already stored in the taxa block with
+				// the TAXLABELS command; taxa.Reset() and taxa.SetNTax() 
+				// were already called, however, when the NTAX subcommand was
+				// processed.
+				//
+				taxa.AddTaxonLabel( token.GetToken() );
+
+				// order of occurrence in TAXA block same as row in matrix
+				//
+				taxonPos[i] = i;
+			}
+			else
+			{
+				// This section:
+				// - TAXA block provided or has been created already
+				// - may be on any (interleave) page					
+				
+				// Cannot assume taxon in same position in
+				// taxa block. Set up taxonPos array so that we can look up
+				// the correct row in matrix for any given taxon
+				//
+				int positionInTaxaBlock;
+				try {
+					positionInTaxaBlock = taxa.FindTaxon( token.GetToken() );
+				}
+				catch( std::out_of_range ) {
+					errormsg = "Could not find population named ";
+					errormsg += token.GetToken();
+					errormsg += " among stored population labels";
+					throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+				}
+
+				if( page == 0 )
+				{
+					// make sure user has not duplicated data for a single taxon
+					//
+					if( taxonPos[positionInTaxaBlock] != -1 ) {
+						errormsg = "Data for this population (";
+						errormsg += token.GetToken();
+						errormsg += ") has already been saved";
+						throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+					}
+
+					// make sure user has kept same relative ordering of taxa in both the TAXA
+					// block and the CHARACTERS block
+					//
+					if( positionInTaxaBlock >= i ) {
+						errormsg = "Relative order of population must be the same in both the TAXA and CHARACTERS blocks";
+						throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+					}
+
+					taxonPos[i] = positionInTaxaBlock;  // was --> taxonPos[positionInTaxaBlock] = i;
+				}
+				else
+				{
+					// make sure user has kept the ordering of taxa the same from
+					// one interleave page to the next
+					//
+					if( taxonPos[positionInTaxaBlock] != i ) {
+						errormsg = "Ordering of population must be identical to that in first interleave page";
+						throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+					}
+				}
+			}
+#else
+         // If no TAXA block previously specified (i.e., newtaxa = true)
+         // and we're on page 0, need to add population names as we
+         // encounter them to the TAXA block
+         //
+         if( page == 0 && newtaxa )
+         {
+            // check for duplicate population names
+            //
+            if( taxa.IsAlreadyDefined( token.GetToken() ) ) {
+               errormsg = "Data for this population (";
+               errormsg += token.GetToken();
+               errormsg += ") has already been saved";
+               throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+            }
+
+            // population labels not already stored in the taxa block with
+            // the TAXLABELS command; taxa.Reset() and taxa.SetNTax()
+            // were already called, however, when the NTAX subcommand was
+            // processed.
+            //
+            taxa.AddTaxonLabel( token.GetToken() );
+
+				// order of occurrence in TAXA block same as row in matrix
+				//
+				taxonPos[i] = i;
+         }
+
+         // we go here if either (1) a TAXA block was previously specified
+         // or (2) we have already built up a TAXA block because we are
+         // beyond the first page of an interleaved file.  In either of
+         // these cases, we must check to see whether the populations
+         // are encountered in the same order as specified in the TAXA block.
+         else
+         {
+            int positionInTaxaBlock;
+            try {
+               positionInTaxaBlock = taxa.FindTaxon( token.GetToken() );
+            }
+            catch( out_of_range ) {
+               errormsg = "Could not find taxon named ";
+               errormsg += token.GetToken();
+               errormsg += " among stored taxon labels";
+               throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+            }
+
+            if( positionInTaxaBlock != i )
+            {
+               if( page == 0 ) {
+                  // user has either duplicated data for a single taxon
+                  // or the order of taxa is not the same as in the
+                  // predefined TAXA block
+                  errormsg = "This taxon (";
+                  errormsg += token.GetToken();
+                  errormsg += ") either (1) has already been saved";
+                  errormsg += "\nor (2) is out of order";
+                  throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+               }
+               else {
+                  // user has not kept the ordering of taxa the same from
+                  // one interleave page to the next
+                  if( positionInTaxaBlock != i ) {
+                     errormsg = "Ordering of taxa must be identical to that in first interleave page";
+                     throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+                  }
+               }
+            }
+            
+            taxonPos[i] = positionInTaxaBlock; // was --> taxonPos[positionInTaxaBlock] = i;
+         }
+#endif
+
+         // read in the colon following the population label
+         token.GetNextToken();
+         if( !token.Equals(":") ) {
+				errormsg = "Expecting ':' after population label but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+         
+         //*******************************************************
+         //******** Beginning of loop through individuals ********
+         //*******************************************************
+         for(;;)
+         {
+            // Read in individual label if necessary
+            // These are not stored, so all we need to do is call
+            // NexusToken::GetNextToken
+            //
+            if( labels ) 
+            {
+
+               token.GetNextToken();
+               
+               if( token.Equals(":") ) {
+               	colon = true;
+               	skipLocusLoop = true;
+               }
+               else if( token.Equals(",") ) {
+               	comma = true;
+               	break;
+               }
+               else if( token.Equals(";") ) {
+               	semicolon = true;
+               	break;
+               }
+            }
+
+            // Increase number of rows in data matrix, if necessary
+            //
+            assert( lastIndiv <= rowsInMatrix );
+            if( page == 0 && lastIndiv == rowsInMatrix ) {
+					matrix->AddRows( rowsToAdd );
+               rowsInMatrix += rowsToAdd;
+            }
+
+            //************************************************
+            //******** Beginning of loop through loci ********
+            //************************************************
+            for( currChar = firstChar; currChar < lastChar; currChar++ )
+            {
+            	if( skipLocusLoop )
+               	break;
+
+               // HandleNextState will return false only if a newline OR comma
+               // character is encountered before locus k is processed.
+               // If a comma is encountered, it means it is time to break from
+               // the loop over individuals; if a newline is encountered, we
+               // either ignore it (if not interleave format) or, if reading
+               // an interleaved matrix, break out of the loop over loci by
+               // setting lastChar equal to currChar.
+               // The base class version of HandleNextState is overridden
+               // in AllelesBlock to read in and store and entire genotype
+               // (e.g., "slow/fast")
+               //
+               bool stopOnNewline = ( currChar > firstChar );
+               bool ok = HandleNextGenotype( token, j, currChar, stopOnNewline );
+               
+               comma = token.Equals(",");
+               semicolon = token.Equals(";");
+               colon = token.Equals(":");
+               if( !ok && interleaving )
+               {
+                  if( !comma && !colon && lastCharInSet < ncharTotal && charPos[currChar] != lastCharInSet ) {
+                     errormsg = "Each line within an interleave page must comprise the same number of loci";
+                     throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+                  }
+
+                  // currChar should be firstChar in next go around
+                  //
+                  nextFirst = currChar;
+
+                  // set lastChar to currChar so that we can check to make sure the
+                  // remaining lines in this interleave page end at the same place
+                  //
+                  lastCharInSet = currChar;
+
+                  break;
+               }
+               else if( !ok && ( comma || colon || semicolon ) )
+                  break;
+            } // innermost loop (over loci)
+
+				skipLocusLoop = false;
+
+            // Handle here the case of a repeat count.
+            // Note: if interleaving, colon will have already been eaten
+            // and the boolean variable "color" will reflect this.  If
+            // not interleaving, colon will not be seen until we begin
+            // reading the data for the next individual (thus, decrement
+            // lastIndiv before proceeding since it has already been
+            // incremented.
+            //
+            int count = 1;
+            if( ( colon || comma || semicolon ) && !interleaving ) {
+               j--;
+               if( page == 0 )
+                  lastIndiv--;
+            }
+            if( colon )
+            {
+               // Get the repeat count itself
+               //
+               token.SetLabileFlagBit( NexusToken::newlineIsToken );
+               token.GetNextToken();
+               count = atoi( token.GetToken().c_str() );
+               if( count < 1 ) {
+                  errormsg = "Could not convert specified repeat count ";
+                  if( token.GetTokenLength() > 0 ) {
+                     errormsg += "(";
+                     errormsg += token.GetToken();
+                     errormsg += ")";
+                  }
+                  errormsg +=" to a positive integer";
+                  throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+               }
+
+               // Instruct matrix to duplicate last row count times.
+               // Matrix itself handles the allocation of additional
+               // rows (if necessary) to accommodate the duplication
+               //
+               int extraRows;
+               if( interleaving )
+                  extraRows = matrix->DuplicateRow( j, count, firstChar, lastCharInSet-1 );
+               else
+                  extraRows = matrix->DuplicateRow( j, count );
+               if( extraRows > 0 ) {
+                  if( page == 0 )
+                     rowsInMatrix += extraRows;
+                  else {
+                     errormsg = "Repeat counts specify more individuals in later interleave pages than in first";
+                     throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+                  }
+               }
+
+            }
+
+            j += count;
+            if( page == 0 )
+            	lastIndiv += count;
+
+
+            if( comma || semicolon )
+               break;
+
+         } // inner loop over individuals
+
+         // Update rowsToAdd to more accurately reflect the number of
+         // rows needing to be added for each new population.  For example,
+         // if population samples are on the order of 200 individuals,
+         // it is more efficient to add 200 new rows each time matrix is
+         // resized rather than the default of 25.
+         //
+         if( page == 0 ) {
+            rowsToAdd = (lastIndiv+1) / (i+1);
+            if( rowsToAdd < 25 )
+               rowsToAdd = 25;
+         }
+
+         if( page == 0 ) {
+            // indivCount holds the _first_ row in matrix where the
+            // data for individuals in the _next_ population (i.e.,
+            // population i+1) are kept.
+            //
+            indivCount[i] = lastIndiv;
+         }
+
+		} // middle loop (over populations)
+
+		// if semicolon is true, then we've just finished reading the last
+		// interleave page and thus should break from the outer loop
+		//
+		if( semicolon )
+			break;
+
+		firstChar = nextFirst;
+		lastChar = ncharTotal;
+		lastCharInSet = ncharTotal;
+
+		page++;
+
+	} // outer loop (over interleave pages)
+}
+
+/**
+ * @method HandleTransposedMatrix [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called from HandleMatrix function to read in a transposed
+ * matrix.  Interleaving, if applicable, is dealt with herein.
+ */
+void AllelesBlock::HandleTransposedMatrix( NexusToken& /* token */ )
+{
+	// obviously, not yet written
+}
+
+/**
+ * @method IsHaploid [bool:public]
+ * @param i [int] the locus in question (in range [0..nchar))
+ *
+ * Returns true if character indexed by i was declared to be
+ * haploid, false otherwise.  Returns false immediately if "haploid"
+ * list is empty.
+ */
+bool AllelesBlock::IsHaploid( int i )
+{
+	if( haploid.empty() )
+		return false;
+
+	int origLocusIndex =GetOrigCharIndex(i);
+	IntSet::const_iterator found = haploid.find(origLocusIndex);
+   if( found == haploid.end() )
+      return false;
+
+	return true;
+}
+
+/**
+ * @method IsHaploidOrig [bool:public]
+ * @param origLocusIndex [int] the locus in question (in range [0..ncharTotal))
+ *
+ * Returns true if character number origLocusIndex was declared to be
+ * haploid, false otherwise.  Returns false immediately if "haploid"
+ * list is empty.
+ */
+bool AllelesBlock::IsHaploidOrig( int origLocusIndex )
+{
+	if( haploid.empty() )
+		return false;
+
+	IntSet::const_iterator found = haploid.find(origLocusIndex);
+   if( found == haploid.end() )
+      return false;
+
+	return true;
+}
+
+/**
+ * @method MostCommonAllele [int:public]
+ * @param locus [int] the locus in question in range [0..nchar)
+ * @throws XAllMissingData
+ *
+ * Returns internal representation of allele that is most
+ * common (across all active populations) for the specified locus.
+ * Assumes locus has not been excluded.  If no population is
+ * supplied, considers all active populations.  If population
+ * is supplied, the allele returned will be the one most common
+ * for that population only.  Assumes that if population is 
+ * specified, that population is not one currently deleted by
+ * the user.  Throws XAllMissingData exception if only missing
+ * data are encountered.
+ *
+ * Note: this is a relatively slow function because an allele count 
+ * is performed for each call.
+ */
+int AllelesBlock::MostCommonAllele( int locus, int pop /* = -1 */ )
+{
+	assert( locus >= 0 && locus < nchar );
+	assert( pop > -2 && pop < ntax );
+	assert( !IsExcluded(locus) );
+
+	// Make sure calling function doesn't expect us to find the
+	// MostCommonAllele for a specific population that has been
+	// deleted by the user.
+	//
+	bool do_one_pop = ( pop >= 0 );
+	assert( !( do_one_pop && IsDeleted(pop) ) );
+
+	int numAlleles = matrix->GetObsNumStates(locus);
+	int counts[MAX_ALLELES];
+	
+	int i, j, gene;
+	for( i = 0; i < MAX_ALLELES; i++ )
+		counts[i] = 0;
+
+	// Fill the counts array; counts[j] will hold the number of genes
+	// corresponding to allele j at the focal locus over all active
+	// populations (or just in population pop if pop is not -1)
+	//
+	i = ( do_one_pop ? pop : 0 );
+	for( ; i < ntax; i++ )
+	{
+		if( do_one_pop && i > pop )
+			break;
+		if( IsDeleted(i) ) continue;
+		int numIndivs = ( i > 0 ? indivCount[i] - indivCount[i-1] : indivCount[i] );
+		for( j = 0; j < numIndivs; j++ )
+		{
+			gene = GetGene( i, j, locus, 0 );
+			assert( gene == MAX_ALLELES || gene < numAlleles );
+			if( gene < MAX_ALLELES )
+				counts[gene]++;
+
+			if( !IsHaploid(locus) )
+			{
+				gene = GetGene( i, j, locus, 1 );
+				assert( gene == MAX_ALLELES || gene < numAlleles );
+				if( gene < MAX_ALLELES )
+					counts[gene]++;
+			}
+		}
+	}
+
+	int max = 0;
+	int which = 0;
+	bool bad = true;
+
+	for( i = 0; i < numAlleles; i++ ) 
+	{
+		if( counts[i] > 0 )
+			bad = false;
+
+		if( counts[i] <= max ) continue;
+
+		which = i;
+		max = counts[i];
+	}
+	
+	if(bad)
+		throw XAllMissingData();
+
+	return which;
+}
+
+/**
+ * @method NumberOfAlleles [int:public]
+ * @param locus [int] the locus in question in range [0..ntax)
+ *
+ * Returns the number of alleles observed for locus. If no population is
+ * supplied, sums across all active populations.  If population
+ * is supplied, count will only be for that population.
+ * Assumes locus has not been excluded.  Assumes that if population is 
+ * specified, that population is not one currently deleted by
+ * the user.
+ *
+ * Note: this is a relatively slow function because an enumeration 
+ * is performed for each call.
+ */
+int AllelesBlock::NumberOfAlleles( int locus, int pop /* = -1 */ )
+{
+	assert( locus >= 0 && locus < nchar );
+	assert( pop > -2 && pop < ntax );
+	assert( !IsExcluded(locus) );
+
+	bool do_one_pop = ( pop >= 0 );
+	assert( !( do_one_pop && IsDeleted(pop) ) );
+
+	int i, j, gene;
+	
+	// A std::set is used here to simplify tallying the number of 
+	// distinct alleles found (i.e., no matter how many times we
+	// insert allele 1 into the set, it will end up being represented
+	// by only one entry in the set at the end).
+	//
+	std::set<int> alleleSet;
+
+	i = ( do_one_pop ? pop : 0 );
+	for( ; i < ntax; i++ )
+	{
+		if( do_one_pop && i > pop )
+			break;
+		if( IsDeleted(i) ) continue;
+
+		int numIndivs = ( i > 0 ? indivCount[i] - indivCount[i-1] : indivCount[i] );
+		for( j = 0; j < numIndivs; j++ )
+		{
+			gene = GetGene( i, j, locus, 0 );
+			if( gene < MAX_ALLELES ) 
+				alleleSet.insert(gene);
+		
+			if( !IsHaploid(locus) )
+			{
+				gene = GetGene( i, j, locus, 1 );
+				if( gene < MAX_ALLELES )
+					alleleSet.insert(gene);
+			}
+		}
+	}
+
+	return alleleSet.size();
+
+	// old way
+	// LabelListBag::const_iterator i = charStates.find(locus);
+	// return (*i).second.size();
+}
+
+/**
+ * @method Read [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * This function provides the ability to read everything following
+ * the block name (which is read by the Nexus object) to the end or
+ * endblock statement. Characters are read from the input stream
+ * in. Overrides the pure virtual function in the base class.
+ */
+void AllelesBlock::Read( NexusToken& token )
+{
+   isEmpty = false;
+
+   // this should be the semicolon after the block name
+   //
+	token.GetNextToken();
+	if( !token.Equals(";") ) {
+		errormsg = "Expecting ';' after ";
+      errormsg += id;
+      errormsg += " block name, but found ";
+      errormsg += token.GetToken();
+      errormsg += " instead";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+	ntax = taxa.GetNumTaxonLabels();
+
+	for(;;)
+	{
+		token.GetNextToken();
+
+		if( token.Equals("DIMENSIONS") ) {
+			HandleDimensions( token, "NEWPOPS", "NPOPS", "NLOCI" );
+		}
+		else if( token.Equals("FORMAT") ) {
+			HandleFormat( token );
+		}
+		else if( token.Equals("ELIMINATE") ) {
+			HandleEliminate( token );
+		}
+		else if( token.Equals("HAPLOID") ) {
+			HandleHaploid( token );
+		}
+		else if( token.Equals("TAXLABELS") ) {
+			HandleTaxlabels( token );
+		}
+		else if( token.Equals("LOCUSALLELELABELS") ) {
+			HandleCharstatelabels( token );
+		}
+		else if( token.Equals("LOCUSLABELS") ) {
+			HandleCharlabels( token );
+		}
+		else if( token.Equals("ALLELELABELS") ) {
+			HandleStatelabels( token );
+		}
+		else if( token.Equals("MATRIX") ) {
+			HandleMatrix( token );
+		}
+		else if( token.Equals("END") ) {
+			HandleEndblock( token, "Locus" );
+			break;
+		}
+		else if( token.Equals("ENDBLOCK") ) {
+			HandleEndblock( token, "Locus" );
+			break;
+		}
+		else
+      {
+			SkippingCommand( token.GetToken() );
+         do {
+            token.GetNextToken();
+         } while( !token.AtEOF() && !token.Equals(";") );
+
+         if( token.AtEOF() ) {
+				errormsg = "Unexpected end of file encountered";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+		}
+   }
+}
+
+/**
+ * @method Report [void:public]
+ * @param out [ostream&] the output stream to which to write the report
+ *
+ * This function outputs a brief report of the contents of this ALLELES block.
+ * Overrides the pure virtual function in the base class.
+ */
+void AllelesBlock::Report( std::ostream& out )
+{
+	int i;
+
+	out << endl;
+	out << id << " block contains data for ";
+   if( ntax == 1 )
+	   out << " 1 population and ";
+   else
+	   out << ntax << " populations ";
+   out << "(" << indivCount[ntax-1] << " total individuals)";
+   if( nchar == 1 )
+	   out << " and 1 locus";
+   else
+   	out << " and " << nchar << " loci";
+   out << endl;
+   
+   out.flush();
+
+   out << "  Datapoint: ";
+   switch( datapoint ) {
+      case fraglen:
+         out << "fraglen" << endl;
+         break;
+      default:
+         out << "standard" << endl;
+   }
+
+   out.flush();
+
+	if( transposing && interleaving )
+		out << "  Matrix transposed and interleaved" << endl;
+	else if( transposing && !interleaving )
+		out << "  Matrix transposed but not interleaved" << endl;
+	else if( !transposing && interleaving )
+		out << "  Matrix interleaved but not transposed" << endl;
+	else
+		out << "  Matrix neither transposed nor interleaved" << endl;
+
+	if( tokens )
+		out << "  Multicharacter allele names allowed in data matrix" << endl;
+	else
+		out << "  Allele names are expected to be single character symbols" << endl;
+
+   if( labels )
+      out << "  Labels for individuals provided" << endl;
+   else
+      out << "  Labels for individuals not provided" << endl;
+
+   if( respectingCase )
+      out << "  Allele labels in matrix case-sensitive" << endl;
+   else
+      out << "  Allele labels in matrix not case-sensitive" << endl;
+
+   if( newtaxa )
+      out << "  Population labels defined in matrix" << endl;
+   else
+      out << "  Population labels defined in TAXA block" << endl;
+
+   out << "  Missing data symbol is " << missing << endl;
+
+   out.flush();
+
+   if( haploid.empty() )
+      out << "  All loci are diploid" << endl;
+   else if( haploid.size() == 1 ) {
+      out << "  The following locus is haploid:" << endl;
+      IntSet::const_iterator k = haploid.begin();
+      out << "    " << ( (*k) + 1 ) << endl;
+   }
+   else {
+      out << "  The following loci are haploid:" << endl;
+      out << "    ";
+      IntSet::const_iterator k;
+      for( k = haploid.begin(); k != haploid.end(); k++ )
+         out << ( (*k) + 1 ) << " ";
+      out << endl;
+   }
+
+   out.flush();
+
+   if( gap == ' ' )
+      out << "  No separator character defined" << endl;
+   else
+      out << "  Separator character is " << gap << endl;
+
+   out.flush();
+
+	int numEquateMacros = equates.size();
+	if( numEquateMacros > 0 ) {
+		out << "  Equate macros in effect:" << endl;
+      typedef AssocList::const_iterator CI;
+		for( CI i = equates.begin(); i != equates.end(); ++i) {
+			out << "    " << (*i).first << " = " << (*i).second << endl;
+		}
+	}
+	else
+		out << "  No equate macros have been defined" << endl;
+
+   out.flush();
+
+	out << "  Contents of the charLabels LabelList:" << endl;
+   LabelList::const_iterator lli = charLabels.begin();
+   while( lli != charLabels.end() )
+   {
+   	out << "\t" << (*lli) << endl;
+  		++lli;
+   }
+   out.flush();
+   
+	out << "  Contents of the charStates LabelListBag:" << endl;
+   LabelListBag::const_iterator cib = charStates.begin();
+   while( cib != charStates.end() )
+   {
+   	out << "\t" << (*cib).first << ": ";
+   	LabelList::const_iterator lli = (*cib).second.begin();
+   	while( lli != (*cib).second.end() ) {
+   		out << (*lli) << " ";
+   		++lli;
+   	}
+   	out << endl;
+      ++cib;
+   }
+   out.flush();
+   
+	if( charLabels.size() > 0 )
+	{
+		out << "  Locus and allele labels:" << endl;
+		for( int k = 0; k < nchar; k++ ) {
+			if( charLabels[k].size() == 0 )
+				out << '\t' << ( 1 + GetOrigCharIndex(k) ) << '\t' << "(no label provided for this locus)" << endl;
+			else
+				out << '\t' << ( 1 + GetOrigCharIndex(k) ) << '\t' << charLabels[k] << endl;
+
+			// output allele names if any are defined for this locus
+         LabelListBag::const_iterator cib = charStates.find(k);
+         if( cib != charStates.end() )
+         {
+            int ns = (*cib).second.size();
+            for( int m = 0; m < ns; m++ ) {
+         		out << "\t\t" << (*cib).second[m] << endl;
+            }
+         }
+		}
+	}
+
+   out.flush();
+
+	if( ncharTotal == nchar )
+		out << "  No loci were eliminated" << endl;
+	else {
+		out << "  The following loci were eliminated:" << endl;
+		IntSet::const_iterator list_iter;
+		for( list_iter = eliminated.begin(); list_iter != eliminated.end(); list_iter++ ) {
+			out << "    " << ((*list_iter)+1) << endl;
+		}
+	}
+
+   out.flush();
+
+	out << "  The following loci have been excluded:" << endl;
+	int k;
+	int nx = 0;
+	for( k = 0; k < nchar; k++ ) {
+		if( activeChar[k] ) continue;
+		out << "    " << (k+1) << endl;
+		nx++;
+	}
+	if( nx == 0 )
+		out << "    (no loci excluded)" << endl;
+
+   out.flush();
+
+	out << "  The following populations have been deleted:" << endl;
+	nx = 0;
+	for( k = 0; k < ntax; k++ ) {
+		if( activeTaxon[k] ) continue;
+		out << "    " << (k+1) << endl;
+		nx++;
+	}
+	if( nx == 0 )
+		out << "    (no populations deleted)" << endl;
+
+   out.flush();
+
+   if( alleles_fixed )
+   	out << "  Only alleles specified in ALLELELABELS command will be considered valid." << endl;
+   else
+   	out << "  All alleles encountered in matrix will be considered valid." << endl;
+
+	out << "  Data matrix:" << endl;
+	DebugShowMatrix( out, "    " );
+
+   out.flush();
+
+   out << endl;
+   out << "Most common allele for each locus:" << endl;
+   out << setw(20) << " ";
+   out << setw(20) << "number of";
+   out << setw(20) << "dominant";
+   out << setw(20) << " ";
+   out << endl;
+   out << setw(20) << "locus";
+   out << setw(20) << "alleles";
+   out << setw(20) << "allele";
+   out << setw(20) << "frequency";
+   out << endl;
+   out.setf( std::ios::fixed, std::ios::floatfield );
+   out.setf( std::ios::showpoint );
+	nxsstring s;
+   for( i = 0; i < nchar; i++ ) {
+		if( IsExcluded(i) ) continue;
+		
+		s = "";
+		s += i;
+		s += " (";
+		s += charLabels[i];
+		s += ")";
+      out << setw(20) << s;
+
+      int k = NumberOfAlleles(i);
+      out << setw(20) << k;
+
+      int j = MostCommonAllele(i);
+		s = "";
+		s += j;
+      LabelListBag::const_iterator cib = charStates.find(i);
+      if( cib != charStates.end() )
+      {
+			s += " (";
+			s += (*cib).second[j];
+			s += ")";
+      }
+      out << setw(20) << s;
+
+      double frq = AlleleFrequency( j, i );
+	   out << setw(20) << setprecision(6) << frq;
+      out << endl;
+   }
+}
+
+/**
+ * @method Reset [void:protected]
+ *
+ * Sets npops and nloci to 0 in preparation for reading a new ALLELES block.
+ * Overrides the pure virtual function in the base class.  Also performs
+ * the initializations done in the constructor, as well as erasing the
+ * vector haploid and freeing memory allocated previously for the indivCount
+ * array.
+ */
+void AllelesBlock::Reset()
+{
+	CharactersBlock::Reset();
+	
+	// Thinking of changing any of these defaults?
+	// If so, do it also in the constructor
+	//
+	alleles_fixed  = false;
+	datapoint      = standard;
+	gap            = '/';
+	labels         = false;
+	respectingCase = true;
+	tokens         = true;
+	
+	haploid.erase( haploid.begin(), haploid.end() );
+	
+	if( indivCount != NULL ) {
+		delete [] indivCount;
+		indivCount = NULL;
+	}
+}
+
+/**
+ * @method SampleSize [int:public]
+ * @param locus [int] the locus in question, in range (0..nchar]
+ * @param pop [int] the population in question, in range (0..ntax] (default is -1)
+ *
+ * Returns the number of individuals (if data is diploid)
+ * for which both genes are non-missing.  If data is haploid,
+ * returns number of genes that are non-missing.
+ * Assumes locus has not been excluded.  If no population is
+ * supplied, sums across all active populations.  If
+ * population is supplied, count will only be for that 
+ * population. It is assumed that if a population is specified,
+ * that population is not one currently deleted by the user.
+ */
+int AllelesBlock::SampleSize( int locus, int pop /* = -1 */ )
+{
+	assert( !IsExcluded(locus) );
+	bool locus_haploid = IsHaploid(locus);
+
+	bool do_one_pop = ( pop >= 0 );
+	assert( !( do_one_pop && IsDeleted(pop) ) );
+
+	int i, j, gene0, gene1;
+	int total_genes = 0;
+	int total_indivs = 0;
+
+	i = ( do_one_pop ? pop : 0 );
+	for( ; i < ntax; i++ )
+	{
+		if( do_one_pop && i > pop )
+			break;
+		if( IsDeleted(pop) ) continue;
+
+		int numIndivs = ( i > 0 ? indivCount[i] - indivCount[i-1] : indivCount[i] );
+		for( j = 0; j < numIndivs; j++ )
+		{
+			gene0 = GetGene( i, j, locus, 0 );
+			if( gene0 < MAX_ALLELES )
+				total_genes++;
+			
+			if( !locus_haploid )
+			{
+				gene1 = GetGene( i, j, locus, 1 );
+				if( gene1 < MAX_ALLELES ) 
+				{
+					total_genes++;
+					if( gene0 < MAX_ALLELES )
+						total_indivs++;
+				}
+			}
+		}
+	}
+	
+	return ( locus_haploid ? total_genes : total_indivs );
+}
+
+/**
+ * @method SplitInt [int:protected]
+ * @param x [int] to be placed in the low-order word
+ * @param y [int] to be placed in the high-order word
+ *
+ * Places x in the low-order word (least-significant 2 bytes)
+ * and y in the high-order word (most-significant 2 bytes)
+ * of the 4-byte int returned.  Note that because x and y
+ * both have to fit in 2 bytes instead of 4, the maximum
+ * value for each is 255 = 0xff.  The value 255 itself is
+ * specifically reserved for use as the missing data value.
+ */
+int AllelesBlock::SplitInt( int x, int y )
+{
+   //typedef long LONG;
+   //typedef unsigned long       DWORD;
+   //typedef unsigned short      WORD;
+   //#define MAKELONG(a, b)      ((LONG)( ((WORD)(a)) | ( ((DWORD)((WORD)(b))) << 16) ))
+	assert( x >= 0 && x <= MAX_ALLELES );
+	assert( y >= 0 && y <= MAX_ALLELES );
+   int z_low  = (unsigned short)x;
+   int z_high = ( (unsigned int)( (unsigned short)y ) ) << 16;
+   int z = ( z_low | z_high );
+   return z;
+}
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/allelesblock.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/allelesblock.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/allelesblock.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/allelesblock.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,76 @@
+#ifndef __ALLELESBLOCK_H
+#define __ALLELESBLOCK_H
+
+#define MAX_ALLELES 255
+
+class AllelesBlock : public CharactersBlock
+{
+   // Adding a new data member? Don't forget to:
+   // 1. Describe it in the class header comment at the top of "allelesblock.cpp"
+   // 2. Initialize it (unless it is self-initializing) in the constructor
+   //    and reinitialize it in the Reset function
+   // 3. Describe the initial state in the constructor documentation
+   // 4. Delete memory allocated to it in both the destructor and Reset function
+   // 5. Report it in some way in the Report function
+protected:
+	virtual void Read( NexusToken& token );
+	virtual void Reset();
+
+public:
+   enum datapoints { standard = 1, fraglen };
+
+public:
+	class XAllMissingData {};
+	
+protected:
+	IntSet haploid;
+
+private:
+   bool alleles_fixed;
+   int* indivCount;
+	datapoints datapoint;
+
+protected:
+	virtual void DebugShowMatrix( std::ostream& out, char* marginText = NULL );
+	virtual void HandleFormat( NexusToken& token );
+	virtual bool HandleNextGenotype( NexusToken& token, int i, int k
+   	, bool stopOnNewline = true );
+   virtual int  HandleAllele( NexusToken& token, int c );
+   void HandleHaploid( NexusToken& token );
+	virtual void HandleStdMatrix( NexusToken& token );
+	virtual void HandleTransposedMatrix( NexusToken& token );
+	virtual void HandleMatrix( NexusToken& token );
+   int SplitInt( int x, int y );
+
+public:
+	AllelesBlock( TaxaBlock& tb, AssumptionsBlock& ab );
+   ~AllelesBlock();
+
+	virtual void Report( std::ostream& out );
+	
+	// Methods for reporting the data
+	//
+	nxsstring GetLocusLabel( int locus );
+	nxsstring GetAlleleLabel( int locus, int allele );
+
+   // Methods for obtaining information about the data
+   //
+	void FocalAlleleCount( int focal_allele, int locus, int pop
+		, int& n_AA, int& n_Aa, int& n_aa );
+   int MostCommonAllele( int locus, int pop = -1 );
+   int AlleleCount( int allele, int locus, int pop = -1 );
+   double AlleleFrequency( int allele, int locus, int pop = -1 );
+   int GenotypeCount( int allele1, int allele2, int locus, int pop = -1 );
+
+	int GetNumHaploid();
+   bool IsHaploid( int i );
+   bool IsHaploidOrig( int origLocusIndex );
+
+	int NumberOfAlleles( int locus, int pop = -1 );
+   int SampleSize( int locus, int pop = -1 );
+	int GetIndivCount( int pop );
+   int GetGene( int pop, int indiv, int locus, int gene );
+};
+
+#endif
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/allelesblock.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/assumptionsblock.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/assumptionsblock.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/assumptionsblock.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,577 @@
+#include <iostream>
+#include <cstdio>
+
+#include "nexusdefs.h"
+#include "xnexus.h"
+#include "nexustoken.h"
+#include "nexus.h"
+#include "setreader.h"
+#include "taxablock.h"
+#include "discretedatum.h"
+#include "discretematrix.h"
+#include "charactersblock.h"
+#include "assumptionsblock.h"
+
+using namespace std;
+
+/**
+ * @class      AssumptionsBlock
+ * @file       assumptionsblock.h
+ * @file       assumptionsblock.cpp
+ * @author     Paul O. Lewis
+ * @copyright  Copyright © 1999. All Rights Reserved.
+ * @variable   taxa [TaxaBlock&:private] reference to the TaxaBlock object
+ * @variable   charBlockPtr [CharactersBlock*:private] pointer to the CharactersBlock-derived object to be notified in the event of exset changes
+ * @variable   charsets [IntSetMap:protected] the variable storing charsets
+ * @variable   taxsets [IntSetMap:protected] the variable storing taxsets
+ * @variable   exsets [IntSetMap:protected] the variable storing exsets
+ * @see        CharactersBlock
+ * @see        Nexus
+ * @see        NexusBlock
+ * @see        NexusToken
+ * @see        SetReader
+ * @see        TaxaBlock
+ * @see        XNexus
+ *
+ * This class handles reading and storage for the Nexus block ASSUMPTIONS.
+ * It overrides the member functions Read and Reset, which are abstract
+ * virtual functions in the base class NexusBlock.
+ */
+
+/**
+ * @constructor
+ *
+ * Performs the following initializations:
+ * <table>
+ * <tr><th align="left">Variable <th> <th align="left"> Initial Value
+ * <tr><td> id             <td>= <td> "ASSUMPTIONS"
+ * </table>
+ */
+AssumptionsBlock::AssumptionsBlock( TaxaBlock& t )
+	: taxa(t), charBlockPtr(NULL)
+{
+	id = "ASSUMPTIONS";
+}
+
+/**
+ * @destructor
+ *
+ * Nothing needs to be done.
+ */
+AssumptionsBlock::~AssumptionsBlock()
+{
+}
+
+/**
+ * @method GetNumCharSets [int:public]
+ *
+ * Returns the number of character sets stored.
+ */
+int AssumptionsBlock::GetNumCharSets()
+{
+	return (int)charsets.size();
+}
+
+/**
+ * @method GetCharSetNames [void:public]
+ * @param names [LabelList&] the vector in which to store the names
+ *
+ * Erases names, then fills names with the names of all stored
+ * character sets.
+ */
+void AssumptionsBlock::GetCharSetNames( LabelList& names )
+{
+	names.erase( names.begin(), names.end() );
+   IntSetMap::const_iterator i;
+   for( i = charsets.begin(); i != charsets.end(); i++ )
+		names.push_back( (*i).first );
+}
+
+/**
+ * @method GetCharSet [IntSet&:public]
+ * @param nm [nxsstring] the name of the character set to return
+ *
+ * Returns reference to character set having name nm.
+ */
+IntSet& AssumptionsBlock::GetCharSet( nxsstring nm )
+{
+	return charsets[nm];
+}
+
+/**
+ * @method GetDefCharSetName [nxsstring:public]
+ *
+ * Returns name of default character set.  If returned
+ * string has zero length, then no default character set
+ * was defined in the data set.
+ */
+nxsstring AssumptionsBlock::GetDefCharSetName()
+{
+	return def_charset;
+}
+
+/**
+ * @method GetNumTaxSets [int:public]
+ *
+ * Returns the number of taxon sets stored.
+ */
+int AssumptionsBlock::GetNumTaxSets()
+{
+	return (int)taxsets.size();
+}
+
+/**
+ * @method GetTaxSetNames [void:public]
+ * @param names [LabelList&] the vector in which to store the names
+ *
+ * Erases names, then fills names with the names of all stored
+ * taxon sets.
+ */
+void AssumptionsBlock::GetTaxSetNames( LabelList& names )
+{
+	names.erase( names.begin(), names.end() );
+   IntSetMap::const_iterator i;
+   for( i = taxsets.begin(); i != taxsets.end(); i++ )
+		names.push_back( (*i).first );
+}
+
+/**
+ * @method GetTaxSet [IntSet&:public]
+ * @param nm [nxsstring] the name of the taxon set to return
+ *
+ * Returns reference to taxon set having name nm.
+ */
+IntSet& AssumptionsBlock::GetTaxSet( nxsstring nm )
+{
+	return taxsets[nm];
+}
+
+/**
+ * @method GetDefTaxSetName [nxsstring:public]
+ *
+ * Returns name of default taxon set.  If returned
+ * string has zero length, then no default taxon set
+ * was defined in the data set.
+ */
+nxsstring AssumptionsBlock::GetDefTaxSetName()
+{
+	return def_taxset;
+}
+
+/**
+ * @method GetNumExSets [int:public]
+ *
+ * Returns the number of exclusion sets stored.
+ */
+int AssumptionsBlock::GetNumExSets()
+{
+	return (int)exsets.size();
+}
+
+/**
+ * @method GetExSetNames [void:public]
+ * @param names [LabelList&] the vector in which to store the names
+ *
+ * Erases names, then fills names with the names of all stored
+ * exclusion sets.
+ */
+void  AssumptionsBlock::GetExSetNames( LabelList& names )
+{
+	names.erase( names.begin(), names.end() );
+   IntSetMap::const_iterator i;
+   for( i = exsets.begin(); i != exsets.end(); i++ )
+		names.push_back( (*i).first );
+}
+
+/**
+ * @method GetExSet [IntSet&:public]
+ * @param nm [nxsstring] the name of the exclusion set to return
+ *
+ * Returns reference to exclusion set having name nm.
+ */
+IntSet& AssumptionsBlock::GetExSet( nxsstring nm )
+{
+	return exsets[nm];
+}
+
+/**
+ * @method GetDefExSetName [nxsstring:public]
+ *
+ * Returns name of default exclusion set.  If returned
+ * string has zero length, then no default exclusion set
+ * was defined in the data set.
+ */
+nxsstring AssumptionsBlock::GetDefExSetName()
+{
+	return def_exset;
+}
+
+/**
+ * @method ApplyExSet [void:public]
+ * @param nm [nxsstring] the name of the exclusion set to apply
+ *
+ * Applies exclusion set having name nm by calling the
+ * ApplyExset method of the CharactersBlock or
+ * CharactersBlock-derived object stored in the charBlockPtr
+ * pointer (which will be whichever block last called
+ * the AssumptionsBlock::SetCallback method).
+ */
+void AssumptionsBlock::ApplyExSet( nxsstring nm )
+{
+	assert( charBlockPtr != NULL );
+   charBlockPtr->ApplyExset( exsets[nm] );
+}
+
+/**
+ * @method HandleCharset [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Reads and stores information contained in the command
+ * CHARSET within an ASSUMPTIONS block.
+ */
+void AssumptionsBlock::HandleCharset( NexusToken& token )
+{
+   bool asterisked = false;
+
+	// Next token should be either an asterisk or the name of a charset
+	token.GetNextToken();
+
+	if( token.Equals("*") ) {
+      asterisked = true;
+   	token.GetNextToken();
+	}
+
+   // Token now stored should be the name of a charset
+   nxsstring charset_name = token.GetToken();
+
+   // Now grab the equals sign
+ 	token.GetNextToken();
+   if( !token.Equals("=") ) {
+		errormsg = "Expecting '=' in CHARSET definition but found ";
+      errormsg += token.GetToken();
+      errormsg += " instead";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+   }
+
+   assert( charBlockPtr != NULL );
+   CharactersBlock& charBlock = *charBlockPtr;
+   IntSet s;
+   int totalChars = charBlock.GetNCharTotal();
+   SetReader( token, totalChars, s, charBlock, SetReader::charset ).Run();
+
+   charsets[charset_name] = s;
+
+   if( asterisked )
+   	def_charset = charset_name;
+}
+
+/**
+ * @method HandleEndblock [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when the END or ENDBLOCK command needs to be parsed
+ * from within the ASSUMPTIONS block.  Basically just checks to make
+ * sure the next token in  the data file is a semicolon.
+ */
+void AssumptionsBlock::HandleEndblock( NexusToken& token )
+{
+	// get the semicolon following END or ENDBLOCK token
+   //
+	token.GetNextToken();
+
+	if( !token.Equals(";") ) {
+   	errormsg = "Expecting ';' to terminate the END or ENDBLOCK command, but found ";
+      errormsg += token.GetToken();
+      errormsg += " instead";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+}
+
+/**
+ * @method HandleExset [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Reads and stores information contained in the command
+ * EXSET within an ASSUMPTIONS block.  If EXSET keyword is
+ * followed by an asterisk, last read CharactersBlock or
+ * CharactersBlock-derived object is notified of the
+ * characters to be excluded (its ApplyExset function
+ * is called).
+ */
+void AssumptionsBlock::HandleExset( NexusToken& token )
+{
+   bool asterisked = false;
+
+	// Next token should be either an asterisk or the name of an exset
+	token.GetNextToken();
+
+	if( token.Equals("*") ) {
+      asterisked = true;
+   	token.GetNextToken();
+	}
+
+   // Token now stored should be the name of an exset
+   nxsstring exset_name = token.GetToken();
+
+   // Now grab the equals sign
+ 	token.GetNextToken();
+   if( !token.Equals("=") ) {
+		errormsg = "Expecting '=' in EXSET definition but found ";
+      errormsg += token.GetToken();
+      errormsg += " instead";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+   }
+
+   assert( charBlockPtr != NULL );
+   CharactersBlock& charBlock = *charBlockPtr;
+   IntSet s;
+   int totalChars = charBlock.GetNCharTotal();
+   SetReader( token, totalChars, s, charBlock, SetReader::charset ).Run();
+
+   exsets[exset_name] = s;
+
+   if( asterisked ) {
+   	def_exset = exset_name;
+      charBlock.ApplyExset(s);
+   }
+}
+
+/**
+ * @method HandleTaxset [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * ?
+ */
+void AssumptionsBlock::HandleTaxset( NexusToken& token )
+{
+   bool asterisked = false;
+
+	// Next token should be either an asterisk or the name of a taxset
+	token.GetNextToken();
+
+	if( token.Equals("*") ) {
+      asterisked = true;
+   	token.GetNextToken();
+	}
+
+   // Token now stored should be the name of a taxset
+   nxsstring taxset_name = token.GetToken();
+
+   // Now grab the equals sign
+ 	token.GetNextToken();
+   if( !token.Equals("=") ) {
+		errormsg = "Expecting '=' in TAXSET definition but found ";
+      errormsg += token.GetToken();
+      errormsg += " instead";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+   }
+
+   IntSet s;
+   int totalTaxa = taxa.GetNumTaxonLabels();
+   SetReader( token, totalTaxa, s, *this, SetReader::taxset ).Run();
+
+   taxsets[taxset_name] = s;
+
+   if( asterisked )
+   	def_taxset = taxset_name;
+}
+
+/**
+ * @method Read [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * This function provides the ability to read everything following
+ * the block name (which is read by the Nexus object) to the end or
+ * endblock statement. Characters are read from the input stream
+ * in. Overrides the pure virtual function in the base class.
+ */
+void AssumptionsBlock::Read( NexusToken& token )
+{
+   isEmpty = false;
+
+   // this should be the semicolon after the block name
+   //
+	token.GetNextToken();
+	if( !token.Equals(";") ) {
+		errormsg = "Expecting ';' after ";
+      errormsg += id;
+      errormsg += " block name, but found ";
+      errormsg += token.GetToken();
+      errormsg += " instead";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+	for(;;)
+	{
+		token.GetNextToken();
+
+		if( token.Equals("EXSET") ) {
+			HandleExset( token );
+		}
+		else if( token.Equals("TAXSET") ) {
+			HandleTaxset( token );
+		}
+		else if( token.Equals("CHARSET") ) {
+			HandleCharset( token );
+		}
+		else if( token.Equals("END") ) {
+			HandleEndblock( token );
+			break;
+		}
+		else if( token.Equals("ENDBLOCK") ) {
+			HandleEndblock( token );
+			break;
+		}
+		else
+      {
+			SkippingCommand( token.GetToken() );
+         do {
+            token.GetNextToken();
+         } while( !token.AtEOF() && !token.Equals(";") );
+
+         if( token.AtEOF() ) {
+				errormsg = "Unexpected end of file encountered";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+		}
+   }
+}
+
+/**
+ * @method Reset [void:protected]
+ *
+ * Prepares for reading a new ASSUMPTIONS block.
+ * Overrides the pure virtual function in the base class.
+ */
+void AssumptionsBlock::Reset()
+{
+   isEmpty = true;
+   exsets.erase( exsets.begin(), exsets.end() );
+   taxsets.erase( taxsets.begin(), taxsets.end() );
+   charsets.erase( charsets.begin(), charsets.end() );
+   def_taxset = "";
+   def_charset = "";
+   def_exset = "";
+}
+
+/**
+ * @method Report [void:public]
+ * @param out [ostream&] the output stream to which to write the report
+ *
+ * This function outputs a brief report of the contents of this ASSUMPTIONS block.
+ * Overrides the pure virtual function in the base class.
+ */
+void AssumptionsBlock::Report( std::ostream& out )
+{
+	out << endl;
+	out << id << " block contains the following:" << endl;
+
+   if( charsets.empty() )
+   	out << "  No character sets were defined" << endl;
+   else {
+      IntSetMap::const_iterator charsets_iter = charsets.begin();
+      if( charsets.size() == 1 ) {
+         out << "  1 character set defined:" << endl;
+         out << "    " << (*charsets_iter).first << endl;
+      }
+      else {
+         out << "  " << charsets.size() << " character sets defined:" << endl;
+	      for( ; charsets_iter != charsets.end(); charsets_iter++ ) {
+         	nxsstring nm = (*charsets_iter).first;
+   	      out << "    " << nm;
+            if( nm == def_charset )
+            	out << " (default)";
+          	out << endl;
+         }
+      }
+   }
+
+   if( taxsets.empty() )
+   	out << "  No taxon sets were defined" << endl;
+   else {
+      IntSetMap::const_iterator taxsets_iter = taxsets.begin();
+      if( taxsets.size() == 1 ) {
+         out << "  1 taxon set defined:" << endl;
+ 	      out << "    " << (*taxsets_iter).first << endl;
+      }
+      else {
+         out << "  " << taxsets.size() << " taxon sets defined:" << endl;
+	      for( ; taxsets_iter != taxsets.end(); taxsets_iter++ ) {
+         	nxsstring nm = (*taxsets_iter).first;
+   	      out << "    " << nm;
+            if( nm == def_taxset )
+            	out << " (default)";
+            out << endl;
+         }
+	   }
+   }
+
+   if( exsets.empty() )
+   	out << "  No exclusion sets were defined" << endl;
+   else {
+      IntSetMap::const_iterator exsets_iter = exsets.begin();
+      if( exsets.size() == 1 ) {
+         out << "  1 exclusion set defined:" << endl;
+ 	      out << "    " << (*exsets_iter).first << endl;
+      }
+      else {
+         out << "  " << exsets.size() << " exclusion sets defined:" << endl;
+	      for( ; exsets_iter != exsets.end(); exsets_iter++ ) {
+         	nxsstring nm = (*exsets_iter).first;
+   	      out << "    " << nm;
+            if( nm == def_exset )
+            	out << " (default)";
+            out << endl;
+      	}
+      }
+   }
+
+   out << endl;
+}
+
+/**
+ * @method SetCallback [void:public]
+ * @param p [CharactersBlock*] the object to be called in the event of a change in character status
+ *
+ * A CHARACTERS, DATA, or ALLELES block can call this function to specify that
+ * it is to receive notification when the current taxon or character set
+ * changes (e.g., an "EXSET *" command is read or a program requests that
+ * one of the predefined taxon sets, character sets, or exsets be applied).
+ * Normally, a CharactersBlock-derived object calls this function upon
+ * entering its MATRIX command, since when that happens it becomes the
+ * primary data-containing block.
+ */
+void AssumptionsBlock::SetCallback( CharactersBlock* p )
+{
+	charBlockPtr = p;
+}
+
+/**
+ * @method TaxonLabelToNumber [void:protected]
+ * @param s [nxsstring&] the taxon label to convert
+ *
+ * Converts a taxon label to a number corresponding to
+ * the taxon's position within the list maintained by
+ * the TaxaBlock object.  This method overrides the
+ * virtual function of the same name in the NexusBlock
+ * base class.  If s is not a valid taxon label, returns
+ * the value 0.
+ */
+int AssumptionsBlock::TaxonLabelToNumber( nxsstring s )
+{
+   int i;
+   try {
+      i = 1 + taxa.FindTaxon(s);
+   }
+   catch( TaxaBlock::nosuchtaxon ) {
+      i = 0;
+   }
+   return i;
+}
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/assumptionsblock.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/assumptionsblock.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/assumptionsblock.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/assumptionsblock.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,63 @@
+#ifndef __ASSUMPTIONSBLOCK_H
+#define __ASSUMPTIONSBLOCK_H
+
+class CharactersBlock;
+
+class AssumptionsBlock : public NexusBlock
+{
+   // Adding a new data member? Don't forget to:
+   // 1. Describe it in the class header comment at the top of "emptyblock.cpp"
+   // 2. Initialize it (unless it is self-initializing) in the constructor
+   //    and reinitialize it in the Reset function
+   // 3. Describe the initial state in the constructor documentation
+   // 4. Delete memory allocated to it in both the destructor and Reset function
+   // 5. Report it in some way in the Report function
+
+	TaxaBlock& taxa;
+   CharactersBlock* charBlockPtr;
+
+protected:
+   IntSetMap charsets;
+   IntSetMap taxsets;
+   IntSetMap exsets;
+
+   nxsstring def_charset;
+   nxsstring def_taxset;
+   nxsstring def_exset;
+
+protected:
+   void HandleCharset( NexusToken& token );
+   void HandleEndblock( NexusToken& token );
+   void HandleExset( NexusToken& token );
+   void HandleTaxset( NexusToken& token );
+	virtual void Read( NexusToken& token );
+	virtual void Reset();
+	virtual int TaxonLabelToNumber( nxsstring s );
+
+public:
+	AssumptionsBlock( TaxaBlock& t );
+   virtual ~AssumptionsBlock();
+
+   void SetCallback( CharactersBlock* p );
+
+   int       GetNumCharSets();
+   void      GetCharSetNames( LabelList& names );
+   IntSet&   GetCharSet( nxsstring nm );
+   nxsstring GetDefCharSetName();
+
+   int       GetNumTaxSets();
+   void      GetTaxSetNames( LabelList& names );
+   IntSet&   GetTaxSet( nxsstring nm );
+   nxsstring GetDefTaxSetName();
+
+   int       GetNumExSets();
+   void      GetExSetNames( LabelList& names );
+   IntSet&   GetExSet( nxsstring nm );
+   nxsstring GetDefExSetName();
+   void      ApplyExSet( nxsstring nm );
+
+	virtual void Report( std::ostream& out );
+};
+
+#endif
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/assumptionsblock.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/charactersblock.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/charactersblock.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/charactersblock.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,3646 @@
+#include "nexusdefs.h"
+#include "xnexus.h"
+#include "nexustoken.h"
+#include "nexus.h"
+#include "setreader.h"
+#include "taxablock.h"
+#include "discretedatum.h"
+#include "discretematrix.h"
+#include "assumptionsblock.h"
+#include "charactersblock.h"
+
+using namespace std;
+
+/**
+ * @class      CharactersBlock
+ * @file       charactersblock.h
+ * @file       charactersblock.cpp
+ * @author     Paul O. Lewis
+ * @copyright  Copyright © 1999. All Rights Reserved.
+ * @variable   activeChar [bool*:private] activeChar[i] is true if character i not excluded; i is in range [0..nchar)
+ * @variable   activeTaxon [bool*:private] activeTaxon[i] is true if taxon i not deleted; i is in range [0..ntax)
+ * @variable   charLabels [LabelList:private] storage for character labels (if provided)
+ * @variable   charStates [LabelListBag:private] storage for character state labels (if provided)
+ * @variable   datatype [int:private] flag variable (see enum starting with standard)
+ * @variable   deleted [IntSet:private] set of (0-offset) numbers for taxa that have been deleted
+ * @variable   eliminated [IntSet:private] array of (0-offset) character numbers that have been ELIMINATEd (will remain empty if no ELIMINATE command encountered)
+ * @variable   equates [AssocList:private] list of associations defined by EQUATE subcommand of FORMAT command
+ * @variable   gap [char:private] gap symbol for use with molecular data
+ * @variable   interleaving [bool:private] indicates matrix will be in interleaved format
+ * @variable   labels [bool:private] indicates whether or not labels will appear on left side of matrix
+ * @variable   matchchar [char:private] match symbol to use in matrix
+ * @variable   matrix [DiscreteMatrix*:private] storage for discrete data
+ * @variable   missing [char:private] missing data symbol
+ * @variable   nchar [int:private] number of columns in matrix (same as ncharTotal unless some characters were ELIMINATEd, in which case ncharTotal > nchar)
+ * @variable   ncharTotal [int:private] total number of characters (same as nchar unless some characters were ELIMINATEd, in which case ncharTotal > nchar)
+ * @variable   newchar [bool:private] true unless CHARLABELS or CHARSTATELABELS command read
+ * @variable   newtaxa [bool:private] true if NEWTAXA keyword encountered in DIMENSIONS command
+ * @variable   ntax [int:private] number of rows in matrix (same as ntaxTotal unless fewer taxa appeared in CHARACTERS MATRIX command than were specified in the TAXA block, in which case ntaxTotal > ntax)
+ * @variable   ntaxTotal [int:private] total number of taxa (same as ntax unless fewer taxa appeared in CHARACTERS MATRIX command than were specified in the TAXA block, in which case ntaxTotal > ntax)
+ * @variable   respectingCase [bool:private] if true, RESPECTCASE keyword specified in FORMAT command
+ * @variable   symbols [char*:private] list of valid character state symbols
+ * @variable   charPos [int*:private] maps character numbers in the data file to column numbers in matrix (necessary if some characters have been ELIMINATEd)
+ * @variable   taxa [TaxaBlock&:protected] reference to the TAXA block in which taxon labels are stored
+ * @variable   taxonPos [int*:private] maps taxon numbers in the data file to row numbers in matrix (necessary if fewer taxa appear in CHARACTERS block MATRIX command than are specified in the TAXA block)
+ * @variable   tokens [bool:private] if false, data matrix entries must be single symbols; if true, multicharacter entries are allows
+ * @variable   transposing [bool:private] indicates matrix will be in transposed format
+ * @see        DiscreteDatum
+ * @see        DiscreteMatrix
+ * @see        LabelListAssoc
+ * @see        Nexus
+ * @see        NexusBlock
+ * @see        NexusReader
+ * @see        NexusToken
+ * @see        SetReader
+ * @see        TaxaBlock
+ * @see        XNexus
+ *
+ * This class handles reading and storage for the Nexus block CHARACTERS.
+ * It overrides the member functions Read and Reset, which are abstract
+ * virtual functions in the base class NexusBlock.
+ *
+ * <P>The issue of bookkeeping demands a careful explanation.  Users are
+ * allowed to control the number of characters analyzed either by "eliminating"
+ * or "excluding" characters.  Characters can be <b>eliminated</b> (by using the 
+ * ELIMINATE command) at the time of execution of the data file, but not
+ * thereafter.  Characters can, however, be <b>excluded</b> at any time after the
+ * data are read.  No storage is provided for eliminated characters, whereas
+ * excluded characters must be stored because at any time they could be restored
+ * to active status.  Because one can depend on eliminated characters continuing
+ * to be eliminated, it would be inefficient to constantly have to check 
+ * whether a character has been eliminated.  Hence, the characters are renumbered
+ * so that one can efficiently traverse the entire range of non-eliminated 
+ * characters.  The original range of characters will be hereafter denoted
+ * [0..ncharTotal), whereas the new, reduced range will be denoted [0..nchar).
+ * The two ranges exactly coincide if ncharTotal = nchar (i.e., no ELIMINATE
+ * command was specified in the CHARACTERS block.
+ *
+ * <P>The possibility for eliminating and excluding characters creates a very 
+ * confusing situation that is exacerbated by the fact that character <i>indices</i>
+ * used in the code begin at 0 whereas character <i>numbers</i> in the data file
+ * begin at 1. The convention used hereafter will be to specify "character number k"
+ * when discussing 1-offset character numbers in the data file and either "character index k"
+ * or simply "character k" when discussing 0-offset character indices. 
+ *
+ * There are several functions (and data structures) that provide  services related to  
+ * keeping track of the correspondence between character indices in the stored data matrix 
+ * compared to character numbers in the original data file. The array <b>charPos</b> can 
+ * be used to find the index of one of the original characters in the matrix. The 
+ * function <b>GetCharPos</b> provides public access to the protected charPos array. For 
+ * example, if character 9 (= character number 10) was the only one ELIMINATEd, 
+ * GetCharPos(9) would return -1 indicating that that character 9 does not now exist.
+ * GetCharPos(10) returns 9 indicating that character 10 in the data file corresponds
+ * to character 9 in the stored data matrix.  All public functions in which a 
+ * character number must be supplied (such as GetInternalRepresentation) assume 
+ * that the character number is the <i>current</i> position of the character in 
+ * the data matrix. This allows one to quickly traverse the data matrix without having to
+ * constantly check whether or not a character was eliminated.  Note that
+ * <b>GetNChar</b> returns nchar, not ncharTotal, and this function should be used
+ * to obtain the endpoint for a traversal of characters in the matrix.
+ * Other functions requiring a (current) character index are listed below:
+ *
+ * <pre>
+ * int GetInternalRepresentation( int i, int j, int k = 0 );
+ * int GetNumStates( int i, int j );
+ * virtual int GetObsNumStates( int j );
+ * int GetOrigCharIndex( int j );
+ * int GetOrigCharNumber( int j );
+ * char GetState( int i, int j, int k = 0 );
+ * bool HandleNextState( NexusToken& token, int i, int j );
+ * int HandleTokenState( token, j );
+ * bool IsGapState( int i, int j );
+ * bool IsMissingState( int i, int j );
+ * bool IsPolymorphic( int i, int j );
+ * void ShowStateLabels( ostream& out, int i, int j );
+ * </pre>
+ *
+ * <p>The following function is exceptional in requiring (by necessity) the original
+ * character index:
+ *
+ * <pre>
+ * bool IsEliminated( int origCharIndex );
+ * </pre>
+ *
+ * <p>The function <b>GetOrigCharIndex</b> returns the original character index for any
+ * current character index. This is useful only when outputting information that
+ * will be seen by the user, and in this case, it is really the character <i>number</i>
+ * that should be output.  To get the original character number, either
+ * add 1 to GetOrigCharIndex or call <b>GetOrigCharNumber</b> function (which simply returns
+ * GetOrigCharIndex + 1).
+ *
+ * <p>Now we must deal with the issue of character <i>exclusion</i>.  A character may be
+ * excluded by calling the function <b>ExcludeCharacter</b> and providing the <i>current</i> character index.
+ * or by calling the function <b>ApplyExset</b> and supplying an exclusion set comprising <i>original</i>
+ * character indices.  These functions manipulate a bool array, <b>activeChar</b>, which can be 
+ * queried using one of two functions: <b>IsActiveChar</b> or <b>IsExcluded</b>.  The array activeChar is
+ * nchar elements long, so IsActiveChar and IsExcluded both accept only current character
+ * indices.  Thus, a normal loop through all characters in the data matrix should look
+ * something like this:
+ * <pre>
+ *    for( int j = 0; j < nchar; j++ ) {
+ *       if( IsExcluded(j) ) continue;
+ *       .
+ *       .
+ *       .
+ *    }
+ * </pre>
+ *
+ * A corresponding set of data structures and functions exists to provide the same
+ * services for taxa.  Thus, <b>ntax</b> holds the current number of taxa, whereas <b>ntaxTotal</b>
+ * holds the number of taxa specified in the TAXA block.  If data is provided in
+ * the MATRIX command for all taxa listed in the TAXA block, ntax will be equal to
+ * ntaxTotal.  If data is not provided for some of the taxa, the ones left out
+ * are treated just like eliminated characters.  The function <b>GetTaxonPos</b> can be
+ * used to query the <b>taxonPos</b> array, which behaves like the charPos array does
+ * for characters:  -1 for element i means that the taxon whose original index
+ * was i has been "eliminated" and no data is stored for it in the matrix.  Otherwise,
+ * <b>GetTaxonPos(i)</b> returns the current index corresponding to the taxon with an
+ * original index of i.  The function <b>GetNTax</b> returns ntax, whereas <b>GetNTaxTotal</b>
+ * must be used to gain access to ntaxTotal (but this is seldom necessary).
+ * The functions <b>GetOrigTaxonIndex</b> and <b>GetOrigTaxonNumber</b> behave like their 
+ * character counterparts, GetOrigCharIndex and GetOrigCharNumber.  Like characters,
+ * taxa can be temporarily inactivated so that they do not participate in any
+ * analyses.until they are reactivated by the user.  Inactivation of a taxon is
+ * refered to as "deleting" the taxon, whereas "restoring" a taxon means reactivating
+ * it.  Thus, the <b>ApplyDelset</b>, <b>DeleteTaxon</b>, and <b>RestoreTaxon</b> functions correspond
+ * to the ApplyExset, ExcludeCharacter, and IncludeCharacter functions for characters.
+ * To query whether a taxon is currently deleted, use either <b>IsActiveTaxon</b> or
+ * <b>IsDeleted</b>.  A normal loop across all active taxa can be constructed as follows:
+ * <pre>
+ *    for( int i = 0; i < ntax; i++ ) {
+ *       if( IsDeleted(i) ) continue;
+ *       .
+ *       .
+ *       .
+ *    }
+ * </pre>
+ *
+ * <P> Below is a table showing the correspondence between the elements of a
+ * CHARACTERS block and the variables and member functions that can be used
+ * to access each piece of information stored.
+ *
+ * <p><table border=1>
+ * <tr>
+ *   <th> Nexus command
+ *   <th> Nexus subcommand
+ *   <th> Data Members
+ *   <th> Member Functions
+ * <tr>
+ *   <td rowspan=3> DIMENSIONS
+ *   <td> NEWTAXA
+ *   <td> bool <a href="#newtaxa">newtaxa</a>
+ *   <td>
+ * <tr>
+ *   <td> NTAX
+ *   <td> int <a href="#ntax">ntax</a> (see also <a href="#ntaxTotal">ntaxTotal</a>)
+ *   <td> int <a href="#GetNTax">GetNTax()</a> (see also <a href="#GetNumMatrixRows">GetNumMatrixRows()</a>)
+ * <tr>
+ *   <td> NCHAR
+ *   <td> int <a href="#nchar">nchar</a> (see also <a href="#ncharTotal">ncharTotal</a>)
+ *   <td> int <a href="#GetNChar">GetNChar()</a> (see also <a href="#GetNumMatrixCols">GetNumMatrixCols()</a>)
+ * <tr>
+ *   <td rowspan=13> FORMAT
+ *   <td> DATATYPE
+ *   <td> datatypes <a href="#datatype">datatype</a>
+ *   <td> int <a href="#GetDataType">GetDataType()</a>
+ * <tr>
+ *   <td> RESPECTCASE
+ *   <td> bool <a href="#respectingCase">respectingCase</a>
+ *   <td> bool <a href="#IsRespectCase">IsRespectCase()</a>
+ * <tr>
+ *   <td> MISSING
+ *   <td> char <a href="#missing">missing</a>
+ *   <td> char <a href="#GetMissingSymbol">GetMissingSymbol()</a>
+ * <tr>
+ *   <td> GAP
+ *   <td> char <a href="#gap">gap</a>
+ *   <td> char <a href="#GetGapSymbol">GetGapSymbol()</a>
+ * <tr>
+ *   <td> SYMBOLS
+ *   <td> char* <a href="#symbols">symbols</a>
+ *   <td> char* <a href="#GetSymbols">GetSymbols()</a>
+ * <tr>
+ *   <td> EQUATE
+ *   <td> AssocList <a href="#equates">equates</a>
+ *   <td> char* <a href="#GetEquateKey">GetEquateKey( int k )</a>
+ *        <br> char* <a href="#GetEquateValue">GetEquateValue( int k )</a>
+ *        <br> int <a href="#GetNumEquates">GetNumEquates()</a>
+ * <tr>
+ *   <td> MATCHCHAR
+ *   <td> char <a href="#matchchar">matchchar</a>
+ *   <td> char <a href="#GetMatchcharSymbol">GetMatchcharSymbol()</a>
+ * <tr>
+ *   <td> (NO)LABELS
+ *   <td> bool <a href="#labels">labels</a>
+ *   <td> bool <a href="#IsLabels">IsLabels()</a>
+ * <tr>
+ *   <td> TRANSPOSE
+ *   <td> bool <a href="#transposing">transposing</a>
+ *   <td> bool <a href="#IsTranspose">IsTranspose()</a>
+ * <tr>
+ *   <td> INTERLEAVE
+ *   <td> bool <a href="#interleaving">interleaving</a>
+ *   <td> bool <a href="#IsInterleave">IsInterleave()</a>
+ * <tr>
+ *   <td> ITEMS
+ *   <td colspan=2> Only ITEMS=STATES implemented
+ * <tr>
+ *   <td> STATESFORMAT
+ *   <td colspan=2> Only STATESFORMAT=STATESPRESENT implemented
+ * <tr>
+ *   <td> (NO)TOKENS
+ *   <td> bool <a href="#tokens">tokens</a>
+ *   <td> bool <a href="#IsTokens">IsTokens()</a>
+ * <tr>
+ *   <td rowspan=1 colspan=2 align=left> ELIMINATE
+ *   <td> IntSet <a href="#eliminated">eliminated</a>
+ *   <td> bool <a href="#IsEliminated">IsEliminated( int origCharIndex )</a>
+ *        <br> int <a href="#GetNumEliminated">GetNumEliminated()</a>
+ * <tr>
+ *   <td rowspan=1 colspan=2 align=left> MATRIX
+ *   <td> DiscreteMatrix* <a href="#matrix">matrix</a>
+ *   <td> char <a href="#GetState">GetState( int i, int j, int k = 0 )</a>
+ *        <br> int <a href="#GetInternalRepresentation">GetInternalRepresentation( int i, int j, int k = 0 )</a>
+ *        <br> int <a href="#GetNumStates">GetNumStates( int i, int j )</a>
+ *        <br> int <a href="#GetNumMatrixRows">GetNumMatrixRows()</a>
+ *        <br> int <a href="#GetNumMatrixCols">GetNumMatrixCols()</a>
+ *        <br> bool <a href="#IsPolymorphic">IsPolymorphic( int i, int j )</a>
+ * </table>
+ */
+
+/**
+ * @enumeration
+ * @enumitem  standard   [0] means standard data type
+ * @enumitem  dna        [1] means dna data type
+ * @enumitem  rna        [2] means rna data type
+ * @enumitem  nucleotide [3] means nucleotide data type
+ * @enumitem  protein    [4] means protein data type
+ * @enumitem  continuous [5] means continuous data type
+ *
+ * For use with the variable datatype.  Default is 0 (standard data type).
+ */
+
+/**
+ * @constructor
+ * @param tb [TaxaBlock&] the taxa block object to consult for taxon labels
+ * @param ab [AssumptionsBlock&] the assumptions block object to consult for exclusion sets
+ *
+ * Performs the following initializations:
+ * <table>
+ * <tr><th align="left">Variable <th> <th align="left"> Initial Value
+ * <tr><td> id             <td>= <td> "CHARACTERS"
+ * <tr><td> datatype       <td>= <td> standard
+ * <tr><td> gap            <td>= <td> '\0'
+ * <tr><td> interleaving   <td>= <td> false
+ * <tr><td> labels         <td>= <td> true
+ * <tr><td> matchchar      <td>= <td> '\0'
+ * <tr><td> matrix         <td>= <td> NULL
+ * <tr><td> missing        <td>= <td> '?'
+ * <tr><td> nchar          <td>= <td> 0
+ * <tr><td> ncharTotal     <td>= <td> 0
+ * <tr><td> newchar        <td>= <td> true
+ * <tr><td> newtaxa        <td>= <td> false
+ * <tr><td> ntax           <td>= <td> 0
+ * <tr><td> ntaxTotal      <td>= <td> 0
+ * <tr><td> respectingCase <td>= <td> false
+ * <tr><td> symbols        <td>= <td> "01"
+ * <tr><td> taxa           <td>= <td> tb
+ * <tr><td> charPos        <td>= <td> NULL
+ * <tr><td> taxonPos       <td>= <td> NULL
+ * <tr><td> tokens         <td>= <td> false
+ * <tr><td> transposing    <td>= <td> false
+ * </table>
+ */
+CharactersBlock::CharactersBlock( TaxaBlock& tb, AssumptionsBlock& ab )
+	: taxa(tb), assumptionsBlock(ab), NexusBlock()
+{
+	id = "CHARACTERS";
+
+	symbols = new char[NCL_MAX_STATES+1];
+	symbols[0] = '0';
+	symbols[1] = '1';
+	symbols[2] = '\0';
+
+	ntax           = 0;
+	ntaxTotal      = 0;
+	nchar          = 0;
+	ncharTotal     = 0;
+	newchar        = true;
+	newtaxa        = false;
+	interleaving   = false;
+	transposing    = false;
+	respectingCase = false;
+	labels         = true;
+	tokens         = false;
+	datatype       = standard;
+	missing        = '?';
+	gap            = '\0';
+	matchchar      = '\0';
+	matrix         = NULL;
+	charPos        = NULL;
+	taxonPos       = NULL;
+	activeTaxon    = NULL;
+	activeChar     = NULL;
+}
+
+/**
+ * @destructor
+ *
+ * Deletes any memory allocated to the arrays symbols, charPos, taxonPos,
+ * activeChar, and activeTaxon.  Flushes the containers charLabels, eliminated,
+ * and deleted. Also deletes memory allocated to matrix.
+ */
+CharactersBlock::~CharactersBlock()
+{
+	// Free memory allocated for the DiscreteMatrix object matrix
+	//
+	if( matrix != NULL )
+		delete matrix;
+   
+	// Free memory allocated for the arrays symbols, charPos, taxonPos,
+	// activeChar and activeTaxon
+	//
+	if( symbols != NULL )
+		delete [] symbols;
+	if( charPos != NULL )
+		delete [] charPos;
+	if( taxonPos != NULL )
+		delete [] taxonPos;
+	if( activeChar != NULL )
+		delete [] activeChar;
+	if( activeTaxon != NULL )
+		delete [] activeTaxon;
+
+	// Flush the containers eliminated, equates, charStates, and charLabels
+	//
+	charLabels.erase( charLabels.begin(), charLabels.end() );
+	charStates.erase( charStates.begin(), charStates.end() );
+	equates.erase( equates.begin(), equates.end() );
+	eliminated.erase( eliminated.begin(), eliminated.end() );
+}
+
+/**
+ * @method ApplyDelset [void:protected]
+ * @param delset [IntSet&] set of taxon indices to delete in range [0..ntaxTotal)
+ *
+ * Deletes (i.e., excludes from further analyses) taxa
+ * whose indices are contained in the set delset.  The
+ * taxon indices refer to original taxon indices, not current
+ * indices (originals will equal current ones iff number of 
+ * taxa in TAXA block equals number of taxa in MATRIX command).
+ * Returns the number of taxa actually deleted (some may have
+ * already been deleted)
+ */
+int CharactersBlock::ApplyDelset( IntSet& delset )
+{
+	assert( activeTaxon != NULL );
+	int num_deleted = 0;
+	int k;
+	//for( k = 0; k < ntax; k++ )
+	//	activeTaxon[k] = true;
+		
+	IntSet::const_iterator i;
+	for( i = delset.begin(); i != delset.end(); i++ ) {
+		k = taxonPos[*i];
+		if( k < 0 ) continue;
+		
+		// k greater than -1 means data was supplied for
+		// this taxon and therefore it can be deleted
+		//
+		if( activeTaxon[k] == true )
+			num_deleted++;
+		activeTaxon[k] = false;
+	}
+	return num_deleted;
+}
+
+/**
+ * @method ApplyExset [void:protected]
+ * @param exset [IntSet&] set of character indices to exclude in range [0..ncharTotal)
+ *
+ * Excludes characters whose indices are contained in the set exset. The indices supplied 
+ * should refer to the original character indices, not current character indices.
+ * Returns number of characters actually excluded (some may have already been
+ * excluded).
+ */
+int CharactersBlock::ApplyExset( IntSet& exset )
+{
+	assert( activeChar != NULL );
+	int num_excluded = 0;
+	int k;
+	//for( k = 0; k < nchar; k++ )
+	//	activeChar[k] = true;
+		
+	IntSet::const_iterator i;
+	for( i = exset.begin(); i != exset.end(); i++ ) {
+		k = charPos[*i];
+		if( k < 0 ) continue;
+		
+		// k greater than -1 means character was not eliminated
+		// and therefore can be excluded
+		//
+		if( activeChar[k] == true )
+			num_excluded++;
+		activeChar[k] = false;
+	}
+	return num_excluded;
+}
+
+/**
+ * @method ApplyIncludeset [void:protected]
+ * @param inset [IntSet&] set of character indices to include in range [0..ncharTotal)
+ *
+ * Includes characters whose indices are contained in the set inset. The indices supplied 
+ * should refer to the original character indices, not current character indices.
+ */
+int CharactersBlock::ApplyIncludeset( IntSet& inset )
+{
+	assert( activeChar != NULL );
+	int num_included = 0;
+	int k;
+	//for( k = 0; k < nchar; k++ )
+	//	activeChar[k] = true;
+		
+	IntSet::const_iterator i;
+	for( i = inset.begin(); i != inset.end(); i++ ) {
+		k = charPos[*i];
+		if( k < 0 ) continue;
+		
+		// k greater than -1 means character was not eliminated
+		// and therefore can be excluded
+		//
+		if( activeChar[k] == false )
+			num_included++;
+		activeChar[k] = true;
+	}
+	return num_included;
+}
+
+/**
+ * @method ApplyRestoreset [void:protected]
+ * @param restoreset [IntSet&] set of taxon indices to restore in range [0..ntaxTotal)
+ *
+ * Restores (i.e., includes in further analyses) taxa
+ * whose indices are contained in the set restoreset.  The
+ * taxon indices refer to original taxon indices, not current
+ * indices (originals will equal current ones iff number of 
+ * taxa in TAXA block equals number of taxa in MATRIX command).
+ */
+int CharactersBlock::ApplyRestoreset( IntSet& restoreset )
+{
+	assert( activeTaxon != NULL );
+	int num_restored = 0;
+	int k;
+	//for( k = 0; k < ntax; k++ )
+	//	activeTaxon[k] = true;
+		
+	IntSet::const_iterator i;
+	for( i = restoreset.begin(); i != restoreset.end(); i++ ) {
+		k = taxonPos[*i];
+		if( k < 0 ) continue;
+		
+		// k greater than -1 means data was supplied for
+		// this taxon and therefore it can be restored
+		//
+		if( activeTaxon[k] == false )
+			num_restored++;
+		activeTaxon[k] = true;
+	}
+	return num_restored;
+}
+
+/**
+ * @method BuildCharPosArray [void:protected]
+ * @param check_eliminated [void] if true, eliminated set has something in it and should be consulted (default is false)
+ *
+ * Use to allocate memory for (and initialize) charPos array, which keeps track 
+ * of the original character index in cases where characters have been eliminated.
+ * This function is called by HandleEliminate in response to encountering an ELIMINATE
+ * command in the data file, and this is probably the only place where BuildCharPosArray
+ * should be called with check_eliminated = true.  BuildCharPosArray is also called
+ * in HandleMatrix, HandleCharstatelabels, HandleStatelabels, and HandleCharlabels.
+ */
+void CharactersBlock::BuildCharPosArray( bool check_eliminated /* = false */ )
+{
+	assert( charPos == NULL );
+	
+	charPos = new int[ncharTotal];
+	
+   int k = 0;
+   for( int j = 0; j < ncharTotal; j++ ) {
+		if( check_eliminated && IsEliminated(j) )
+			charPos[j] = -1;
+		else
+			charPos[j] = k++;
+	}
+}
+
+/**
+ * @method CharLabelToNumber [int:protected]
+ *
+ * Converts a character label to a number corresponding to
+ * the character's position within charLabels.
+ * This method overrides the virtual function of the
+ * same name in the NexusBlock base class.  If s is
+ * not a valid character label, returns the value 0.
+ */
+int CharactersBlock::CharLabelToNumber( nxsstring s )
+{
+	LabelList::const_iterator iter
+   	= find( charLabels.begin(), charLabels.end(), s );
+
+   int k = 1;
+   if( iter != charLabels.end() )
+   	k += ( iter - charLabels.begin() );
+   else
+   	k = 0;
+
+  return k;
+}
+
+/**
+ * @method DebugShowMatrix [int:protected]
+ * @param out [ostream&] output stream on which to print matrix
+ * @param marginText [char*] nxsstring to print first on each line
+ *
+ * Provides a dump of the contents of the matrix variable.  Useful for testing
+ * whether data is being read as expected.  The default for marginText is NULL,
+ * which has the effect of placing the matrix output flush left.  If each line
+ * of output should be prefaced with a tab character, specify marginText = "\t".
+ */
+void CharactersBlock::DebugShowMatrix( std::ostream& out, char* marginText /* = NULL */ )
+{
+	int i, k;
+	int width = taxa.GetMaxTaxonLabelLength();
+
+	for( i = 0; i < ntaxTotal; i++ )
+	{
+		// Grab taxon name from taxa block
+		// Taxa may not have been presented in the matrix in the same order
+		// as they were stored in the taxa block, so use taxonPos array to
+		// spit them out in the order they appeared in the TAXA command.
+		// If the taxonPos cell is -1, then that means there is no row of
+		// the data matrix corresponding to that taxon
+		//
+		if( taxonPos[i] < 0 )
+			continue;
+		else
+		{
+			if( marginText != NULL )
+				out << marginText;
+			nxsstring currTaxonLabel = taxa.GetTaxonLabel( taxonPos[i] );
+			out << currTaxonLabel;
+
+			// print out enough spaces to even up the left edge of the matrix output
+			int currTaxonLabelLen = currTaxonLabel.size();
+			int diff = width - currTaxonLabelLen;
+			for( k = 0; k < diff+5; k++ )
+				out << ' ';
+		}
+
+		for( int currChar = 0; currChar < ncharTotal; currChar++ ) {
+         int j = charPos[currChar];
+         if( j < 0 ) continue;
+			ShowStateLabels( out, i, j );
+		}
+
+		out << endl;
+	}
+}
+
+/**
+ * @method DeleteTaxon [void:protected]
+ * @param i [int] index of taxon to delete in range [0..ntax)
+ *
+ * Deletes taxon whose 0-offset current index is i.  If taxon
+ * has already been deleted, this function has no effect.
+ */
+void CharactersBlock::DeleteTaxon( int i )
+{
+	activeTaxon[i] = false;
+}
+
+/**
+ * @method ExcludeCharacter [void:protected]
+ * @param i [int] index of character to exclude in range [0..nchar)
+ *
+ * Excludes character whose 0-offset current index is i.  If character
+ * has already been excluded, this function has no effect.
+ */
+void CharactersBlock::ExcludeCharacter( int i )
+{
+	activeChar[i] = false;
+}
+
+/**
+ * @method GetActiveCharArray [bool*:public]
+ *
+ * Returns activeChar data member (pointer to first element of the activeChar array).
+ * Access to this protected data member is necessary in certain circumstances, such as
+ * when a CharactersBlock object is stored in another class, and that other class
+ * needs direct access to the activeChar array even though it is not derived from 
+ * CharactersBlock.
+ */
+bool* CharactersBlock::GetActiveCharArray()
+{
+	return activeChar;
+}
+
+/**
+ * @method GetActiveTaxonArray [bool*:public]
+ *
+ * Returns activeTaxon data member (pointer to first element of the activeTaxon array).
+ * Access to this protected data member is necessary in certain circumstances, such as
+ * when a CharactersBlock object is stored in another class, and that other class
+ * needs direct access to the activeTaxon array even though it is not derived from 
+ * CharactersBlock.
+ */
+bool* CharactersBlock::GetActiveTaxonArray()
+{
+	return activeTaxon;
+}
+
+/**
+ * @method GetCharLabel [nxsstring:public]
+ * @param i [int] the character in range [0..nchar)
+ *
+ * Returns label for character i, if a label has been specified.
+ * If no label was specified, returns string containing a single blank (i.e., " ").
+ */
+nxsstring CharactersBlock::GetCharLabel( int i )
+{
+	nxsstring s = " ";
+   if( i < charLabels.size() )
+		s = charLabels[i];
+   return s;
+}
+
+/**
+ * @method GetCharPos [int:public]
+ * @param origCharIndex [int] original index of character in range [0..ncharTotal-1)
+ *
+ * Returns current index of character in matrix.  This may
+ * differ from the original index if some characters were
+ * removed using an ELIMINATE command.  For example, character
+ * number 9 in the original data matrix may now be at position
+ * 8 if the original character 8 was ELIMINATEd.
+ * The parameter origCharIndex is assumed to range from 0 to
+ * ncharTotal-1.
+ */
+int CharactersBlock::GetCharPos( int origCharIndex )
+{
+   assert( charPos != NULL );
+   assert( origCharIndex >= 0 );
+   assert( origCharIndex < ncharTotal );
+
+   return charPos[origCharIndex];
+}
+
+/**
+ * @method GetGapSymbol [char:protected]
+ *
+ * Returns the gap symbol currently in effect.  If no gap
+ * symbol specified, returns '\0'.
+ */
+char CharactersBlock::GetGapSymbol()
+{
+	return gap;
+}
+
+/**
+ * @method GetTaxPos [int:public]
+ * @param origTaxonIndex [int] original index of taxon
+ *
+ * Returns current index of taxon in matrix.  This may
+ * differ from the original index if some taxa were listed in
+ * the TAXA block but not in the DATA or CHARACTERS block.
+ * The parameter origTaxonIndex is assumed to range from 0 to
+ * ntaxTotal-1.
+ */
+int CharactersBlock::GetTaxPos( int origTaxonIndex )
+{
+   assert( taxonPos != NULL );
+   assert( origTaxonIndex >= 0 );
+   assert( origTaxonIndex < ntaxTotal );
+
+   return taxonPos[origTaxonIndex];
+}
+
+/**
+ * @method GetDataType [int:public]
+ *
+ * Returns value of datatype.
+ */
+int CharactersBlock::GetDataType()
+{
+	return (int)datatype;
+}
+
+/**
+ * @method GetMatchcharSymbol [char:protected]
+ *
+ * Returns the matchchar symbol currently in effect.  If no matchchar
+ * symbol specified, returns '\0'.
+ */
+char CharactersBlock::GetMatchcharSymbol()
+{
+	return matchchar;
+}
+
+/**
+ * @method GetMaxObsNumStates [int:public virtual]
+ *
+ * Returns the maximum observed number of states for any character.
+ * Note: this function is rather slow, as it must walk through 
+ * each row of each column, adding the states encountered to a set, 
+ * then finally returning the size of the set.  Thus, if this 
+ * function is called often, it would be advisable to initialize 
+ * an array using this function, then refer to the array subsequently.
+ */
+int CharactersBlock::GetMaxObsNumStates()
+{
+   int max = 2;
+   for( int j = 0; j < nchar; j++ ) {
+      int ns = GetObsNumStates(j);
+      if( ns <= max ) continue;
+      max = ns;
+   }
+   return max;
+}
+
+/**
+ * @method GetInternalRepresentation [int:protected]
+ * @param i [int] the taxon in range [0..ntax)
+ * @param j [int] the character in range [0..nchar)
+ * @param k [int] the state to return (use default of 0 if only one state present)
+ *
+ * Returns internal representation of the state for taxon i, character j.
+ * The default for k is 0, which corresponds to the normal
+ * situation in which there is only one state with no uncertainty or polymorphism.
+ * If there are multiple states, specify a number in the range [0..n) where
+ * n is the number of states returned by the GetNumStates function.  Use the
+ * IsPolymorphic function to determine whether the multiple states correspond to
+ * uncertainty in state assignment or polymorphism in the taxon.
+ *
+ * <p> The value returned from this function is one of the following:
+ * <ul>
+ * <li> -3 means gap state (see note below)
+ * <li> -2 means missing state (see note below)
+ * <li> an integer 0 or greater is internal representation of a state
+ * </ul>
+ * Note: gap and missing states are actually represented internally in a
+ * different way; for a description of the actual internal representation of
+ * states, see <a href="DiscreteDatum.html">DiscreteDatum</a>
+ */
+int CharactersBlock::GetInternalRepresentation( int i, int j, int k /* = 0 */ )
+{
+   if( IsGapState( i, j ) )
+      return -3;
+   else if( IsMissingState( i, j ) )
+      return -2;
+   else
+   	return matrix->GetState( i, j, k );
+}
+
+/**
+ * @method GetMissingSymbol [char:protected]
+ *
+ * Returns the missing data symbol currently in effect.  If no missing
+ * data symbol specified, returns '\0'.
+ */
+char CharactersBlock::GetMissingSymbol()
+{
+	return missing;
+}
+
+/**
+ * @method GetNChar [int:public]
+ *
+ * Returns the value of nchar.
+ */
+int CharactersBlock::GetNChar()
+{
+	return nchar;
+}
+
+/**
+ * @method GetNCharTotal [int:public]
+ *
+ * Returns the value of ncharTotal.
+ */
+int CharactersBlock::GetNCharTotal()
+{
+	return ncharTotal;
+}
+
+/**
+ * @method GetNTax [int:public]
+ *
+ * Returns the value of ntax.
+ */
+int CharactersBlock::GetNTax()
+{
+	return ntax;
+}
+
+/**
+ * @method GetNTaxTotal [int:public]
+ *
+ * Returns the value of ntaxTotal.
+ */
+int CharactersBlock::GetNTaxTotal()
+{
+	return ntaxTotal;
+}
+
+/**
+ * @method GetNumActiveChar [int:public]
+ *
+ * Performs a count of the number of characters for which activeChar 
+ * array reports true.
+ */
+int CharactersBlock::GetNumActiveChar()
+{
+	int num_active_char = 0;
+	for( int i = 0; i < nchar; i++ ) {
+		if( activeChar[i] == false )
+			continue;
+		num_active_char++;
+	}
+	return num_active_char;
+}
+
+/**
+ * @method GetNumActiveTaxa [int:public]
+ *
+ * Performs a count of the number of taxa for which activeTaxon 
+ * array reports true.
+ */
+int CharactersBlock::GetNumActiveTaxa()
+{
+	int num_active_taxa = 0;
+	for( int i = 0; i < ntax; i++ ) {
+		if( activeTaxon[i] == false )
+			continue;
+		num_active_taxa++;
+	}
+	return num_active_taxa;
+}
+
+/**
+ * @method GetNumEliminated [int:protected]
+ *
+ * Returns the number of characters eliminated with the ELIMINATE command.
+ */
+int CharactersBlock::GetNumEliminated()
+{
+	return ( ncharTotal - nchar );
+}
+
+/**
+ * @method GetNumEquates [int:protected]
+ *
+ * Returns the number of stored equate associations.
+ */
+int CharactersBlock::GetNumEquates()
+{
+	return equates.size();
+}
+
+/**
+ * @method GetNumMatrixCols [int:public]
+ *
+ * Returns the number of actual columns in matrix.  This number is equal
+ * to nchar, but can be smaller than ncharTotal since the user could have
+ * ELIMINATEd some of the characters.
+ */
+int CharactersBlock::GetNumMatrixCols()
+{
+	return nchar;
+}
+
+/**
+ * @method GetNumMatrixRows [int:public]
+ *
+ * Returns the number of actual rows in matrix.  This number is equal
+ * to ntax, but can be smaller than ntaxTotal since the user did not
+ * have to provide data for all taxa specified in the TAXA block.
+ */
+int CharactersBlock::GetNumMatrixRows()
+{
+	return ntax;
+}
+
+/**
+ * @method GetNumStates [int:public]
+ * @param i [int] the taxon in range [0..ntax)
+ * @param j [int] the character in range [0..nchar)
+ *
+ * Returns the number of states for taxon i, character j.
+ */
+int CharactersBlock::GetNumStates( int i, int j )
+{
+   return matrix->GetNumStates( i, j );
+}
+
+/**
+ * @method GetObsNumStates [int:public virtual]
+ * @param j [int] the character in range [0..nchar)
+ *
+ * Returns the number of states for character j over all taxa.
+ * Note: this function is rather slow, as it must walk through 
+ * each row, adding the states encountered to a set, then finally  
+ * returning the size of the set.  Thus, if this function is called 
+ * often, it would be advisable to initialize an array using this 
+ * function, then refer to the array subsequently.
+ */
+int CharactersBlock::GetObsNumStates( int j )
+{
+  	return matrix->GetObsNumStates( j );
+}
+
+/**
+ * @method GetOrigCharIndex [int:public]
+ * @param j [int] the character in range [0..nchar)
+ *
+ * Returns the original character index in the
+ * range [0..ncharTotal).  Will be equal to j unless some
+ * characters were ELIMINATEd.
+ */
+int CharactersBlock::GetOrigCharIndex( int j )
+{
+   int k = j;
+   while( k < ncharTotal && charPos[k] < j )
+      k++;
+
+   assert( k < ncharTotal );
+   
+   return k;
+}
+
+/**
+ * @method GetOrigCharNumber [int:public]
+ * @param j [int] the character in range [0..nchar)
+ *
+ * Returns the original character number (used in the
+ * NEXUS data file) in the range [1..ncharTotal].
+ * Will be equal to j+1 unless some characters were ELIMINATEd.
+ */
+int CharactersBlock::GetOrigCharNumber( int j )
+{
+   return ( 1 + GetOrigCharIndex(j) );
+}
+
+/**
+ * @method GetOrigTaxonIndex [int:public]
+ * @param i [int] the taxon in range [0..ntax)
+ *
+ * Returns the original taxon index in the
+ * range [0..ntaxTotal).  Will be equal to i unless 
+ * data was not provided for some taxa listed in
+ * a preceding TAXA block.
+ */
+int CharactersBlock::GetOrigTaxonIndex( int i )
+{
+   int k = i;
+   while( k < ntaxTotal && taxonPos[k] < i )
+      k++;
+
+   assert( k < ntaxTotal );
+   
+   return k;
+}
+
+/**
+ * @method GetOrigTaxonNumber [int:public]
+ * @param i [int] the character in range [0..ntax)
+ *
+ * Returns the original taxon number (used in the
+ * NEXUS data file) in the range [1..ntaxTotal].
+ * Will be equal to i+1 unless data was not provided
+ * for some taxa listed in a preceding TAXA block.
+ */
+int CharactersBlock::GetOrigTaxonNumber( int i )
+{
+   return ( 1 + GetOrigTaxonIndex(i) );
+}
+
+/**
+ * @method GetState [char:public]
+ * @param i [int] the taxon in range [0..ntax)
+ * @param j [int] the character in range [0..nchar)
+ * @param k [int] the state to return (use default of 0 if only one state present)
+ *
+ * Returns symbol from symbols list representing the state for taxon i
+ * and character j.  The default for k is 0, which corresponds to the normal
+ * situation in which there is only one state with no uncertainty or polymorphism.
+ * If there are multiple states, specify a number in the range [0..n) where
+ * n is the number of states returned by the GetNumStates function.  Use the
+ * IsPolymorphic function to determine whether the multiple states correspond to
+ * uncertainty in state assignment or polymorphism in the taxon.
+ * Assumes symbols is not equal to NULL.
+ */
+char CharactersBlock::GetState( int i, int j, int k /* = 0 */ )
+{
+   assert( symbols != NULL );
+   char state_char = '\0';
+
+   int symbolsLen = strlen(symbols);
+   int p = matrix->GetState( i, j, k );
+   assert( p < symbolsLen );
+   state_char = *(symbols + p);
+
+   return state_char;
+}
+
+/**
+ * @method GetStateLabel [nxsstring:public]
+ * @param i [int] the locus in range [0..nchar)
+ * @param j [int] the state
+ *
+ * Returns label for character state j at character i, if a label has been specified.
+ * If no label was specified, returns string containing a single blank (i.e., " ").
+ */
+nxsstring CharactersBlock::GetStateLabel( int i, int j )
+{
+	nxsstring s = " ";
+   LabelListBag::const_iterator cib = charStates.find(i);
+   if( cib != charStates.end() && j < (*cib).second.size() )
+		s = (*cib).second[j];
+   return s;
+}
+
+/**
+ * @method GetSymbols [char*:public]
+ *
+ * Returns data member symbols.  Warning: returned value may be NULL.
+ */
+char* CharactersBlock::GetSymbols()
+{
+	return symbols;
+}
+
+/**
+ * @method GetTaxonLabel [nxsstring:public]
+ * @param i [int] the taxon's position in the taxa block
+ *
+ * Returns label for taxon number i (i ranges from 0 to ntax-1).
+ */
+nxsstring CharactersBlock::GetTaxonLabel( int i )
+{
+   nxsstring s = taxa.GetTaxonLabel(i);
+	return s;
+}
+
+/**
+ * @method IncludeCharacter [void:protected]
+ * @param i [int] index of character to include in range [0..nchar)
+ *
+ * Includes character whose 0-offset current index is i.  If character
+ * is already active, this function has no effect.
+ */
+void CharactersBlock::IncludeCharacter( int i )
+{
+	activeChar[i] = true;
+}
+
+/**
+ * @method IsActiveChar [bool:public]
+ * @param j [int] the character in question, in the range [0..nchar)
+ *
+ * Returns true if character j is active. If character j has been
+ * excluded, returns false.  Note that it is irrelevant whether or
+ * not this character has been eliminated, since it is assumed that j
+ * refers to a non-eliminated character!
+ */
+bool CharactersBlock::IsActiveChar( int j )
+{
+	assert( j >= 0 );
+	assert( j < nchar );
+	return activeChar[j];
+}
+
+/**
+ * @method IsActiveTaxon [bool:public]
+ * @param i [int] the taxon in question, in the range [0..ntax)
+ *
+ * Returns true if taxon i is active. If taxon i has been
+ * deleted, returns false.
+ */
+bool CharactersBlock::IsActiveTaxon( int i )
+{
+	assert( i >= 0 );
+	assert( i < ntax );
+	return activeTaxon[i];
+}
+
+/**
+ * @method IsDeleted [bool:public]
+ * @param i [int] the taxon in question, in the range [0..ntax)
+ *
+ * Returns true if taxon number i has been deleted, false otherwise.
+ */
+bool CharactersBlock::IsDeleted( int i )
+{
+	return !IsActiveTaxon(i);
+}
+
+/**
+ * @method IsEliminated [bool:public]
+ * @param origCharIndex [int] the character in question
+ *
+ * Returns true if character number origCharIndex was ELIMINATEd, false otherwise.
+ * Returns false immediately if "eliminated" set is empty.
+ */
+bool CharactersBlock::IsEliminated( int origCharIndex )
+{
+	// Note: it is tempting to try to streamline this method
+	// by just looking up character j in charPos to see if it
+	// has been eliminated, but this temptation should be
+	// resisted since this function is used in setting up
+	// charPos in the first place!
+
+	if( eliminated.empty() )
+		return false;
+
+	IntSet::const_iterator found = eliminated.find(origCharIndex);
+	if( found == eliminated.end() )
+		return false;
+
+	return true;
+}
+
+/**
+ * @method IsExcluded [bool:public]
+ * @param j [int] the character in question, in the range [0..nchar)
+ *
+ * Returns true if character j has been excluded. If character j is
+ * active, returns false.  Note that it is irrelevant whether or
+ * not this character has been eliminated, since it is assumed that j
+ * refers to a non-eliminated character!
+ */
+bool CharactersBlock::IsExcluded( int j )
+{
+	return !IsActiveChar(j);
+}
+
+/**
+ * @method IsGapState [bool:public]
+ * @param i [int] the taxon, in range [0..ntax)
+ * @param j [int] the character, in range [0..nchar)
+ *
+ * Returns 1 if the state at taxon i, character j is the gap state.
+ */
+bool CharactersBlock::IsGapState( int i, int j )
+{
+   return matrix->IsGap( i, j );
+}
+
+/**
+ * @method IsInterleave [bool:public]
+ *
+ * Returns true if INTERLEAVE was specified in the FORMAT command, false otherwise.
+ */
+bool CharactersBlock::IsInterleave()
+{
+	return interleaving;
+}
+
+/**
+ * @method IsLabels [bool:public]
+ *
+ * Returns true if LABELS was specified in the FORMAT command, false otherwise.
+ */
+bool CharactersBlock::IsLabels()
+{
+	return labels;
+}
+
+/**
+ * @method IsMissingState [bool:public]
+ * @param i [int] the taxon, in range [0..ntax)
+ * @param j [int] the character, in range [0..nchar)
+ *
+ * Returns 1 if the state at taxon i, character j is the missing state.
+ */
+bool CharactersBlock::IsMissingState( int i, int j )
+{
+   return matrix->IsMissing( i, j );
+}
+
+/**
+ * @method IsPolymorphic [bool:protected]
+ * @param i [int] the taxon in range [0..ntax)
+ * @param j [int] the character in range [0..nchar)
+ *
+ * Returns 1 if taxon i is polymorphic for character j, 0 otherwise.
+ * Note that return value will be 0 if there is only one state (i.e.,
+ * one cannot tell whether there is uncertainty using this function).
+ */
+bool CharactersBlock::IsPolymorphic( int i, int j )
+{
+   return matrix->IsPolymorphic( i, j );
+}
+
+/**
+ * @method IsRespectCase [bool:public]
+ *
+ * Returns 1 if RESPECTCASE was specified in the FORMAT command, 0 otherwise.
+ */
+bool CharactersBlock::IsRespectCase()
+{
+	return respectingCase;
+}
+
+/**
+ * @method IsTokens [bool:public]
+ *
+ * Returns true if TOKENS was specified in the FORMAT command, false otherwise.
+ */
+bool CharactersBlock::IsTokens()
+{
+	return tokens;
+}
+
+/**
+ * @method IsTranspose [bool:public]
+ *
+ * Returns true if TRANSPOSE was specified in the FORMAT command, false otherwise.
+ */
+bool CharactersBlock::IsTranspose()
+{
+	return transposing;
+}
+
+/**
+ * @method IsInSymbols [int:protected]
+ * @param ch [int] the symbol character to search for
+ *
+ * Returns 1 if ch can be found in symbols array.  The value of respectingCase
+ * is used to determine whether the search should be case sensitive or not.
+ * Assumes symbols != NULL.
+ */
+int CharactersBlock::IsInSymbols( char ch )
+{
+   assert( symbols != NULL );
+   int symbolsLength = strlen(symbols);
+   int found = 0;
+   for( int i = 0; i < symbolsLength; i++ )
+   {
+      char char_in_symbols = ( respectingCase ? symbols[i] : (char)toupper(symbols[i]) );
+      char char_in_question = ( respectingCase ? ch : (char)toupper(ch) );
+      if( char_in_symbols != char_in_question ) continue;
+      found = 1;
+      break;
+   }
+   return found;
+}
+
+/**
+ * @method HandleCharlabels [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when CHARLABELS command needs to be parsed from within the
+ * DIMENSIONS block.  Deals with everything after the token CHARLABELS
+ * up to and including the semicolon that terminates the CHARLABELS
+ * command.  If an ELIMINATE command has been processed, labels
+ * for eliminated characters will not be stored.
+ */
+void CharactersBlock::HandleCharlabels( NexusToken& token )
+{
+	int num_labels_read = 0;
+	charLabels.erase( charLabels.begin(), charLabels.end() );
+	
+	if( charPos == NULL )
+		BuildCharPosArray();
+	
+	for(;;)
+	{
+		token.GetNextToken();
+
+		// token should either be ';' or the name of a character
+		// (an isolated '_' character is converted automatically by
+		// token.GetNextToken() into a space, which is then stored
+		// as the character label)
+		//
+		if( token.Equals(";") ) {
+			break;
+		}
+		else {
+			num_labels_read++;
+			
+			// check to make sure user is not trying to read in more
+			// character labels than there are characters
+			//
+			if( num_labels_read > (unsigned)ncharTotal ) {
+				errormsg = "Number of character labels exceeds NCHAR specified in DIMENSIONS command";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			if( !IsEliminated( num_labels_read - 1 ) )
+				charLabels.push_back( token.GetToken() );
+		}
+	}
+
+	newchar = false;
+}
+
+/**
+ * @method HandleCharstatelabels [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when CHARSTATELABELS command needs to be parsed from within the
+ * CHARACTERS block.  Deals with everything after the token CHARSTATELABELS
+ * up to and including the semicolon that terminates the CHARSTATELABELS
+ * command.  Resulting charLabels vector will store labels only for
+ * characters that have not been ELIMINATEd, and likewise for charStates.
+ * Specifically, charStates[0] refers to the vector of character state
+ * labels for the first non-eliminated character.
+ */
+void CharactersBlock::HandleCharstatelabels( NexusToken& token )
+{
+	int currChar = 0;
+	bool semicolonFoundInInnerLoop = false;
+	bool tokenAlreadyRead = false;
+	bool save = true;
+
+	charStates.erase( charStates.begin(), charStates.end() );
+	charLabels.erase( charLabels.begin(), charLabels.end() );
+	
+	if( charPos == NULL )
+		BuildCharPosArray();
+
+	for(;;)
+	{
+		save = true;
+
+		if( semicolonFoundInInnerLoop )
+			break;
+
+		if( tokenAlreadyRead )
+			tokenAlreadyRead = false;
+		else
+			token.GetNextToken();
+
+		if( token.Equals(";") )
+			break;
+
+		// token should be the character number; create a new association
+		//
+		int n = atoi( token.GetToken().c_str() );
+		
+		if( n < 1 || n > ncharTotal || n <= currChar ) {
+			errormsg = "Invalid character number (";
+         errormsg += token.GetToken();
+         errormsg += ") found in CHARSTATELABELS command (either out of range or not interpretable as an integer)";
+			throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+		}
+		
+      // If n is not the next character after currChar, need to add some dummy
+      // labels to charLabels list
+      //
+      while( n - currChar > 1 ) 
+      {
+         currChar++;
+         if( !IsEliminated( currChar - 1 ) )
+         	charLabels.push_back(" ");
+      }
+
+		// If n refers to a character that has been ELIMINATEd, go through the motions of
+		// reading in the information but don't actually save any of it
+		//
+      currChar++;
+      assert( n == currChar );
+		if( IsEliminated(currChar-1) )
+			save = false;
+
+		token.GetNextToken();
+
+      // token should be the character label
+      //
+      if( save ) 
+      	charLabels.push_back( token.GetToken() );
+
+		token.GetNextToken();
+
+      // token should be a slash character if state labels were provided
+      // for this character; otherwise, token should be one of the following:
+      // 1) the comma separating information for different characters, in 
+      //    which case we read in the next token (which should be the next
+      //    character number)
+      // 2) the semicolon indicating the end of the command
+      //
+      if( !token.Equals("/") ) {
+      	if( !token.Equals(",") && !token.Equals(";") ) {
+				errormsg = "Expecting a comma or semicolon here, but found (";
+	         errormsg += token.GetToken();
+	         errormsg += ") instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+      	}
+      	if( token.Equals(",") )
+	      	token.GetNextToken();
+         tokenAlreadyRead = true;
+         continue;
+      }
+
+      // now create a new association for the character states list
+
+      for(;;)
+      {
+         token.GetNextToken();
+
+         if( token.Equals(";") ) {
+            semicolonFoundInInnerLoop = true;
+            break;
+         }
+
+         if( token.Equals(",") ) {
+            break;
+         }
+
+			if( save )
+			{
+	         // token should be a character state label; add it to the list
+	         //
+	         nxsstring cslabel = token.GetToken();
+	         int k = GetCharPos(n-1);
+	         charStates[k].push_back( cslabel );
+			}
+		
+      } // inner loop (grabbing state labels for character n)
+
+	 } // outer loop
+
+   newchar = false;
+}
+
+/**
+ * @method HandleDimensions [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @param newtaxaLabel [nxsstring] the label used in data file for newtaxa
+ * @param ntaxLabel [nxsstring] the label used in data file for ntax
+ * @param ncharLabel [nxsstring] the label used in data file for nchar
+ * @throws XNexus
+ *
+ * Called when DIMENSIONS command needs to be parsed from within the
+ * CHARACTERS block.  Deals with everything after the token DIMENSIONS
+ * up to and including the semicolon that terminates the DIMENSIONs
+ * command. newtaxaLabel, ntaxLabel and ncharLabel are simply "NEWTAXA",
+ * "NTAX" and "NCHAR" for this class, but may be different for derived
+ * classes that use newtaxa, ntax and nchar for other things (e.g.,
+ * ntax is number of populations in an ALLELES block)
+ */
+void CharactersBlock::HandleDimensions( NexusToken& token
+	, nxsstring newtaxaLabel, nxsstring ntaxLabel, nxsstring ncharLabel )
+{
+	for(;;)
+	{
+		token.GetNextToken();
+
+		if( token.Equals(newtaxaLabel) ) {
+			newtaxa = true;
+			taxa.Reset();
+		}
+		else if( token.Equals(ntaxLabel) ) {
+
+			// this should be the equals sign
+			token.GetNextToken();
+			if( !token.Equals("=") ) {
+				errormsg = "Expecting '=' after ";
+            errormsg += ntaxLabel;
+            errormsg += " in DIMENSIONS command, but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			// this should be the number of taxa
+			token.GetNextToken();
+			ntax = atoi( token.GetToken().c_str() );
+			if( ntax <= 0 ) {
+         	errormsg = ntaxLabel;
+				errormsg += " must be a number greater than 0";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+			if( newtaxa )
+				ntaxTotal = ntax;
+			else {
+            ntaxTotal = taxa.GetNumTaxonLabels();
+            if( ntaxTotal < ntax ) {
+            	errormsg = ntaxLabel;
+					errormsg += " in ";
+               errormsg += id;
+               errormsg += " block must be less than or equal to NTAX in TAXA block";
+               errormsg += "\nNote: one circumstance that can cause this error is ";
+               errormsg += "\nforgetting to specify ";
+               errormsg += ntaxLabel;
+               errormsg += " in DIMENSIONS command when ";
+               errormsg += "\na TAXA block has not been provided";
+               throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+				}
+			}
+		}
+		else if( token.Equals(ncharLabel) ) {
+
+			// this should be the equals sign
+			token.GetNextToken();
+			if( !token.Equals("=") ) {
+				errormsg = "Expecting '=' after ";
+            errormsg += ncharLabel;
+            errormsg += " in DIMENSIONS command, but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			// this should be the number of characters
+			token.GetNextToken();
+			nchar = atoi( token.GetToken().c_str() );
+			if( nchar <= 0 ) {
+         	errormsg = ncharLabel;
+				errormsg += " must be a number greater than 0";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+         ncharTotal = nchar;
+
+		}
+		else if( token.Equals(";") ) {
+			break;
+		}
+
+	}
+}
+
+/**
+ * @method HandleEliminate [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ *
+ * Called when ELIMINATE command needs to be parsed from within the
+ * CHARACTERS block.  Deals with everything after the token ELIMINATE
+ * up to and including the semicolon that terminates the ELIMINATE
+ * command.  Any character numbers or ranges of character numbers
+ * specified are stored in the IntSet eliminated, which remains empty
+ * until an ELIMINATE command is processed.  Note that like all sets
+ * the character ranges are adjusted so that their offset is 0.  For
+ * example, given "eliminate 4-7;" in the data file, the eliminate
+ * array would contain the values 3, 4, 5, and 6 (not 4, 5, 6, and 7).
+ * It is assumed that the ELIMINATE command comes before character labels
+ * and/or character state labels have been specified; an error message
+ * is generated if the user attempts to use ELIMINATE after a CHARLABELS,
+ * CHARSTATELABELS, or STATELABELS command.
+ */
+void CharactersBlock::HandleEliminate( NexusToken& token )
+{
+   // construct an object of type SetReader, then call its run function
+   // to store the set in the eliminated set
+   //
+	SetReader( token, ncharTotal, eliminated, *this, SetReader::charset ).Run();
+
+   nchar = ncharTotal - eliminated.size();
+   
+   if( nchar != ncharTotal && ( charLabels.size() > 0 || charStates.size() > 0 ) ) 
+   {
+		errormsg = "The ELIMINATE command must appear before character\n(or character state) labels are specified";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+	if( charPos != NULL ) 
+	{
+		errormsg = "Only one ELIMINATE command is allowed, and it must appear before the MATRIX command";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+	BuildCharPosArray( true );
+}
+
+/**
+ * @method HandleEndblock [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when the END or ENDBLOCK command needs to be parsed from within the
+ * CHARACTERS block.  Does two things:  1) checks to make sure the next token in
+ * the data file is a semicolon and 2) eliminates character labels and character
+ * state labels for characters that have been ELIMINATEd.
+ */
+void CharactersBlock::HandleEndblock( NexusToken& token, nxsstring charToken )
+{
+	// get the semicolon following END or ENDBLOCK token
+	token.GetNextToken();
+	if( !token.Equals(";") ) {
+		errormsg = "Expecting ';' to terminate the END or ENDBLOCK command, but found ";
+      errormsg += token.GetToken();
+      errormsg += " instead";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+   if( charLabels.empty() && !charStates.empty() ) {
+      // make up labels for characters since user has provided labels
+      // for character states; that way, we know that charLabels
+      // and charStates are either both empty or both full
+      for( int k = 0; k < ncharTotal; k++ )
+      {
+         nxsstring nm = charToken;
+         nm += " ";
+         nm += (k+1);
+         charLabels.push_back( nm.c_str() );
+      }
+   }
+
+#if 0
+	// This part is not necessary now that ELIMINATE is restricted to
+	// being used before CHARLABELS, CHARSTATELABELS, and STATELABELS
+	//
+   if( nchar < ncharTotal && !charLabels.empty() ) 
+   {
+      // first, make copies of charLabels and charStates
+      LabelList tmp_charLabels = charLabels;
+      LabelListBag tmp_charStates = charStates;
+
+      // second, erase contents of charLabels and charStates
+      charLabels.erase( charLabels.begin(), charLabels.end() );
+      charStates.erase( charStates.begin(), charStates.end() );
+
+      // third, copy only information from non-ELIMINATEd characters back
+      // into charLabels and charStates
+      for( int k = 0; k < ncharTotal; k++ ) {
+         int j = charPos[k];
+         if( j < 0 ) continue;
+         charLabels.push_back( tmp_charLabels[k] );
+         int n = tmp_charStates[k].size();
+         for( int kk = 0; kk < n; kk++ )
+            charStates[j].push_back( tmp_charStates[k][kk] );
+      }
+   }
+#endif
+}
+
+/**
+ * @method HandleFormat [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when FORMAT command needs to be parsed from within the
+ * DIMENSIONS block.  Deals with everything after the token FORMAT
+ * up to and including the semicolon that terminates the FORMAT
+ * command.
+ */
+void CharactersBlock::HandleFormat( NexusToken& token )
+{
+	int standardDataTypeAssumed = 0;
+	int ignoreCaseAssumed = 0;
+
+	for(;;)
+	{
+		token.GetNextToken();
+
+		if( token.Equals("DATATYPE") )
+		{
+
+			// this should be an equals sign
+			token.GetNextToken();
+			if( !token.Equals("=") ) {
+				errormsg = "Expecting '=' after keyword DATATYPE but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			// this should be one of the following: STANDARD, DNA, RNA, NUCLEOTIDE, PROTEIN, or CONTINUOUS
+			token.GetNextToken();
+			if( token.Equals("STANDARD") )
+				datatype = standard;
+			else if( token.Equals("DNA") )
+				datatype = dna;
+			else if( token.Equals("RNA") )
+				datatype = rna;
+			else if( token.Equals("NUCLEOTIDE") )
+				datatype = nucleotide;
+			else if( token.Equals("PROTEIN") )
+				datatype = protein;
+			else if( token.Equals("CONTINUOUS") )
+				datatype = continuous;
+			else {
+				errormsg = token.GetToken();
+            errormsg += " is not a valid DATATYPE within a ";
+            errormsg += id;
+            errormsg += " block";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			if( standardDataTypeAssumed && datatype != standard ) {
+				errormsg = "DATATYPE must be specified first in FORMAT command";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			ResetSymbols();
+			if( datatype == continuous )
+				tokens = true;
+
+		}
+
+		else if( token.Equals("RESPECTCASE") )
+		{
+			if( ignoreCaseAssumed ) {
+				errormsg = "RESPECTCASE must be specified before MISSING, GAP, SYMBOLS, and MATCHCHAR in FORMAT command";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+			standardDataTypeAssumed = 1;
+			respectingCase = true;
+		}
+
+		else if( token.Equals("MISSING") )
+		{
+
+			// this should be an equals sign
+			token.GetNextToken();
+			if( !token.Equals("=") ) {
+				errormsg = "Expecting '=' after keyword MISSING but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			// this should be the missing data symbol (single character)
+			token.GetNextToken();
+			if( token.GetTokenLength() != 1 ) {
+				errormsg = "MISSING symbol should be a single character, but ";
+            errormsg += token.GetToken();
+            errormsg += " was specified";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+			else if( token.IsPunctuationToken() && !token.IsPlusMinusToken() ) {
+				errormsg = "MISSING symbol specified cannot be a punctuation token (";
+            errormsg += token.GetToken();
+            errormsg += " was specified)";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+			else if( token.IsWhitespaceToken() ) {
+				errormsg = "MISSING symbol specified cannot be a whitespace character (";
+            errormsg += token.GetToken();
+            errormsg += " was specified)";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			missing = token.GetToken()[0];
+
+			ignoreCaseAssumed = 1;
+			standardDataTypeAssumed = 1;
+		}
+
+		else if( token.Equals("GAP") )
+		{
+
+			// this should be an equals sign
+			token.GetNextToken();
+			if( !token.Equals("=") ) {
+				errormsg = "Expecting '=' after keyword GAP but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			// this should be the gap symbol (single character)
+			token.GetNextToken();
+			if( token.GetTokenLength() != 1 ) {
+				errormsg = "GAP symbol should be a single character, but ";
+            errormsg += token.GetToken();
+            errormsg += " was specified";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+			else if( token.IsPunctuationToken() && !token.IsPlusMinusToken() ) {
+				errormsg = "GAP symbol specified cannot be a punctuation token (";
+            errormsg += token.GetToken();
+            errormsg += " was specified)";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+			else if( token.IsWhitespaceToken() ) {
+				errormsg = "GAP symbol specified cannot be a whitespace character (";
+            errormsg += token.GetToken();
+            errormsg += " was specified)";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			gap = token.GetToken()[0];
+
+			ignoreCaseAssumed = 1;
+			standardDataTypeAssumed = 1;
+		}
+
+		else if( token.Equals("SYMBOLS") )
+		{
+			if( datatype == continuous ) {
+				errormsg = "SYMBOLS subcommand not allowed for DATATYPE=CONTINUOUS";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			int numDefStates;
+			int maxNewStates;
+			switch( datatype )
+			{
+				case dna:
+				case rna:
+				case nucleotide:
+					numDefStates = 4;
+					maxNewStates = NCL_MAX_STATES-4;
+					break;
+				case protein:
+					numDefStates = 21;
+					maxNewStates = NCL_MAX_STATES-21;
+					break;
+				default:
+					numDefStates = 0; // replace symbols list for standard datatype
+               symbols[0] = '\0';
+					maxNewStates = NCL_MAX_STATES;
+			}
+
+			// this should be an equals sign
+			token.GetNextToken();
+			if( !token.Equals("=") ) {
+				errormsg = "Expecting '=' after keyword SYMBOLS but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			// this should be the symbols list
+			token.SetLabileFlagBit( NexusToken::doubleQuotedToken );
+			token.GetNextToken();
+			token.StripWhitespace();
+			int numNewSymbols = token.GetTokenLength();
+			if( numNewSymbols > maxNewStates ) {
+				errormsg = "SYMBOLS defines ";
+            errormsg += numNewSymbols;
+            errormsg += " new states but only ";
+            errormsg += maxNewStates;
+            errormsg += " new states allowed for this DATATYPE";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			nxsstring t = token.GetToken();
+			int tlen = t.size();
+
+			// check to make sure user has not used any symbols already in the
+			// default symbols list for this data type
+			for( int i = 0; i < tlen; i++ )
+         {
+				if( IsInSymbols( t[i] ) ) {
+					errormsg = "The character ";
+               errormsg += t[i];
+               errormsg += " defined in SYMBOLS has already been predefined for this DATATYPE";
+					throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+				}
+			}
+
+			// if we've made it this far, go ahead and add the user-defined
+			// symbols to the end of the list of predefined symbols
+			strcpy( symbols+numDefStates, t.c_str() );
+
+			ignoreCaseAssumed = 1;
+			standardDataTypeAssumed = 1;
+		}
+
+		else if( token.Equals("EQUATE") )
+		{
+
+			// this should be an equals sign
+			token.GetNextToken();
+			if( !token.Equals("=") ) {
+				errormsg = "Expecting '=' after keyword EQUATE but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			// this should be a double-quote character
+			token.GetNextToken();
+			if( !token.Equals("\"") ) {
+				errormsg = "Expecting '\"' after keyword EQUATE but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+         // loop until second double-quote character is encountered
+         for(;;)
+			{
+   			token.GetNextToken();
+   			if( token.Equals("\"") )
+               break;
+
+            // if token is not a double-quote character, then it must be
+            // the equate symbol (i.e., the character to be replaced in
+            // the data matrix)
+				if( token.GetTokenLength() != 1 ) {
+               errormsg = "Expecting single-character EQUATE symbol but found ";
+               errormsg += token.GetToken();
+               errormsg += " instead";
+               throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+            }
+
+            // check for bad choice of equate symbol
+            nxsstring t = token.GetToken();
+            char ch = t[0];
+            int badEquateSymbol = 0;
+            // the character '^' cannot be an equate symbol
+            if( ch == '^' )
+               badEquateSymbol = 1;
+            // equate symbols cannot be punctuation (except for + and -)
+            if( token.IsPunctuationToken() && !token.IsPlusMinusToken() )
+               badEquateSymbol = 1;
+            // equate symbols cannot be same as matchchar, missing, or gap
+				if( ch == missing || ch == matchchar || ch == gap )
+               badEquateSymbol = 1;
+            // equate symbols cannot be one of the state symbols currently defined
+            if( IsInSymbols(ch) )
+               badEquateSymbol = 1;
+            if( badEquateSymbol ) {
+               errormsg = "EQUATE symbol specified (";
+               errormsg += token.GetToken();
+               errormsg += ") is not valid; must not be same as missing, \nmatchchar, gap, state symbols, or any of the following: ()[]{}/\\,;:=*'\"`<>^";
+               throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+            }
+            nxsstring k = token.GetToken();
+
+            // this should be an equals sign
+				token.GetNextToken();
+            if( !token.Equals("=") ) {
+               errormsg = "Expecting '=' in EQUATE definition but found ";
+               errormsg += token.GetToken();
+               errormsg += " instead";
+               throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+            }
+
+            // this should be the token to be substituted in for the equate symbol
+            token.SetLabileFlagBit( NexusToken::parentheticalToken );
+            token.SetLabileFlagBit( NexusToken::curlyBracketedToken );
+            token.GetNextToken();
+            nxsstring v = token.GetToken();
+
+
+            // add the new equate association to the equates list
+            equates[k] = v;
+			}
+
+			standardDataTypeAssumed = 1;
+		}
+
+		else if( token.Equals("MATCHCHAR") )
+		{
+
+			// this should be an equals sign
+			token.GetNextToken();
+			if( !token.Equals("=") ) {
+				errormsg = "Expecting '=' after keyword MATCHCHAR but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			// this should be the matchchar symbol (single character)
+			token.GetNextToken();
+			if( token.GetTokenLength() != 1 ) {
+				errormsg = "MATCHCHAR symbol should be a single character, but ";
+            errormsg += token.GetToken();
+            errormsg += " was specified";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+			else if( token.IsPunctuationToken() && !token.IsPlusMinusToken() ) {
+				errormsg = "MATCHCHAR symbol specified cannot be a punctuation token (";
+            errormsg += token.GetToken();
+            errormsg += " was specified) ";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+			else if( token.IsWhitespaceToken() ) {
+				errormsg = "MATCHCHAR symbol specified cannot be a whitespace character (";
+            errormsg += token.GetToken();
+            errormsg += " was specified)";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			matchchar = token.GetToken()[0];
+
+			ignoreCaseAssumed = 1;
+			standardDataTypeAssumed = 1;
+		}
+
+		else if( token.Equals("LABELS") )
+		{
+			labels = true;
+			standardDataTypeAssumed = 1;
+		}
+
+		else if( token.Equals("NOLABELS") )
+		{
+			labels = false;
+			standardDataTypeAssumed = 1;
+		}
+
+		else if( token.Equals("TRANSPOSE") )
+		{
+			transposing = true;
+			standardDataTypeAssumed = 1;
+		}
+
+		else if( token.Equals("INTERLEAVE") )
+		{
+			interleaving = true;
+			standardDataTypeAssumed = 1;
+		}
+
+		else if( token.Equals("ITEMS") )
+		{
+
+			// this should be an equals sign
+			token.GetNextToken();
+			if( !token.Equals("=") ) {
+				errormsg += "Expecting '=' after keyword ITEMS but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			// this should be STATES (no other item is supported at this time)
+			token.GetNextToken();
+			if( !token.Equals("STATES") ) {
+				errormsg = "Sorry, only ITEMS=STATES supported at this time";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			standardDataTypeAssumed = 1;
+		}
+
+		else if( token.Equals("STATESFORMAT") )
+		{
+
+			// this should be an equals sign
+			token.GetNextToken();
+			if( !token.Equals("=") ) {
+				errormsg = "Expecting '=' after keyword STATESFORMAT but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			// this should be STATESPRESENT (no other statesformat is supported at this time)
+			token.GetNextToken();
+			if( !token.Equals("STATESPRESENT") ) {
+				errormsg = "Sorry, only STATESFORMAT=STATESPRESENT supported at this time";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			standardDataTypeAssumed = 1;
+		}
+
+		else if( token.Equals("TOKENS") )
+		{
+			tokens = true;
+			standardDataTypeAssumed = 1;
+		}
+
+		else if( token.Equals("NOTOKENS") )
+		{
+			tokens = false;
+			standardDataTypeAssumed = 1;
+		}
+
+		else if( token.Equals(";") ) {
+			break;
+		}
+	}
+
+	// perform some last checks before leaving the FORMAT command
+	if( !tokens && datatype == continuous ) {
+		errormsg = "TOKENS must be defined for DATATYPE=CONTINUOUS";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+	if( tokens && ( datatype == dna || datatype == rna || datatype == nucleotide ) ) {
+		errormsg = "TOKENS not allowed for the DATATYPEs DNA, RNA, or NUCLEOTIDE";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+}
+
+/**
+ * @method HandleNextState [bool:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @param i [int] the taxon index, in range [0..ntax)
+ * @param j [int] the character index, in range [0..nchar)
+ * @throws XNexus
+ *
+ * Called from HandleStdMatrix or HandleTransposedMatrix function
+ * to read in the next state.  Always returns 1 except in the special
+ * case of an interleaved matrix, in which case it returns 0 if a
+ * newline character is encountered before the next token.
+ */
+bool CharactersBlock::HandleNextState( NexusToken& token, int i, int j )
+{
+	// this should be the state for taxon i and character j
+	//
+	if( !tokens ) {
+		token.SetLabileFlagBit( NexusToken::parentheticalToken );
+		token.SetLabileFlagBit( NexusToken::curlyBracketedToken );
+		token.SetLabileFlagBit( NexusToken::singleCharacterToken );
+	}
+	if( interleaving )
+		token.SetLabileFlagBit( NexusToken::newlineIsToken );
+	token.GetNextToken();
+
+	if( interleaving && token.AtEOL() )
+		return false;
+
+	// make sure we didn't run out of file
+	//
+	if( token.AtEOF() ) {
+		errormsg = "Unexpected end of file encountered";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+	// if we didn't run out of file, I see no reason why we should
+	// have a zero-length token on our hands
+	assert( token.GetTokenLength() > 0 );
+
+	// we've read in the state now, so if this character has been
+	// ELIMINATEd, we don't want to go any further with it
+	//
+	if( j < 0 ) return true;
+
+   // see if any equate macros apply
+   //
+   nxsstring skey = nxsstring( token.GetToken( respectingCase ) );
+   AssocList::iterator p = equates.find( skey );
+   if( p != equates.end() ) {
+      nxsstring sval = (*p).second;
+      token.ReplaceToken( sval.c_str() );
+   }
+
+	// handle case of single-character state symbol
+	//
+	if( !tokens && token.GetTokenLength() == 1 )
+	{
+		char ch = token.GetToken()[0];
+
+		// check for missing data symbol
+		//
+		if( ch == missing ) {
+			matrix->SetMissing( i, j );
+		}
+
+		// check for matchchar symbol
+		//
+		else if( matchchar != '\0' && ch == matchchar ) {
+#if 0
+			int maxk = matrix->GetNumStates( i, j );
+			for( int k = 0; k < maxk; k++ ) {
+				int stateOfFirstTaxon = matrix->GetState( 0, j, k );
+				matrix->AddState( i, j, stateOfFirstTaxon );
+			}
+#else
+			matrix->CopyStatesFromFirstTaxon( i, j );
+#endif
+		}
+
+		// check for gap symbol
+		//
+		else if( gap != '\0' && ch == gap ) {
+			matrix->SetGap( i, j );
+		}
+
+		// look up the position of this state in the symbols array
+		//
+		else {
+			int p = PositionInSymbols(ch);
+			if( p < 0 ) {
+				errormsg = "State specified (";
+	            errormsg += token.GetToken();
+	            errormsg += ") for taxon ";
+	            errormsg += (i+1);
+	            errormsg += ", character ";
+	            errormsg += (j+1);
+	            errormsg += ", not found in list of valid symbols";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+			matrix->AddState( i, j, p );
+			matrix->SetPolymorphic( i, j, 0 );
+		}
+	}
+
+	// handle case of state sets when tokens is not in effect
+	//
+	else if( !tokens  && token.GetTokenLength() > 1 )
+	{
+		// token should be in one of the following forms: {acg} {a~g} {a c g} (acg) (a~g) (a c g) 
+		nxsstring t = token.GetToken();
+		int tlen = t.size();
+		int poly = ( t[0] == '(' );
+		assert( poly || t[0] == '{' );
+		assert( ( poly && t[tlen-1] == ')' ) || ( !poly && t[tlen-1] == '}' ) );
+		
+		int first_nonblank = 1;
+		while( t[first_nonblank] == ' ' || t[first_nonblank] == '\t' )
+			first_nonblank++;
+
+		int last_nonblank = tlen-2;
+		while( t[last_nonblank] == ' ' || t[last_nonblank] == '\t' )
+			last_nonblank--;
+
+		if( t[first_nonblank] == '~' || t[last_nonblank] == '~' ) {
+         errormsg = token.GetToken();
+         errormsg += " does not represent a valid range of states";
+			throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+		}
+
+		int k = 1;
+		char* pFirst = symbols;
+		int tildeFound = 0;
+		for(;;)
+		{
+			if( t[k] == ')' || t[k] == '}' )
+				break;
+				
+			if( t[k] == ' ' || t[k] == '\t' ) {
+				k++;
+				continue;
+			}
+
+			// t[k] should be either '~' or one of the state symbols
+			if( t[k] == '~' ) {
+				tildeFound = 1;
+			}
+			else
+			{
+				// add state symbol and record if it is the first or last one
+				// in case we encounter a tilde
+				//
+				if( tildeFound )
+				{
+					// add all states from firstState to t[k]
+					// then set tildeFound to 0 again
+					pFirst++;
+					while( *pFirst != '\0' && *pFirst != t[k] )
+               {
+                  int p = PositionInSymbols(*pFirst);
+                  if( p < 0 ) {
+                     errormsg = "State specified (";
+                     errormsg += *pFirst;
+                     errormsg += ") for taxon ";
+                     errormsg += (i+1);
+                     errormsg += ", character ";
+                     errormsg += (j+1);
+                     errormsg += ", not found in list of valid symbols";
+                     throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+                  }
+						matrix->AddState( i, j, p );
+   					pFirst++;
+               }
+
+					tildeFound = 0;
+				}
+				else
+				{
+               int p = PositionInSymbols(t[k]);
+					if( p < 0 ) {
+						errormsg = "State specified (";
+                  errormsg += t[k];
+                  errormsg += ") for taxon ";
+                  errormsg += (i+1);
+                  errormsg += ", character ";
+                  errormsg += (j+1);
+                  errormsg += ", not found in list of valid symbols";
+						throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+					}
+					pFirst = ( symbols + p );
+					matrix->AddState( i, j, p );
+				}
+
+			} // if( t[k] == '~' ) ... else ... loop
+
+			k++;
+		} // for(;;) loop
+
+		matrix->SetPolymorphic( i, j, poly );
+	}
+
+	// handle case in which TOKENS was specified in the FORMAT command
+	//
+	else
+	{
+		// token should be in one of the following forms: "{"  "a"  "bb"
+		int polymorphism = token.Equals("(");
+		int uncertainty  = token.Equals("{");
+
+		if( !uncertainty && !polymorphism ) {
+			int k = HandleTokenState( token, j );
+			matrix->AddState( i, j, k );
+		}
+		else {
+         int tildeFound = 0;
+         int first = -1;
+         int last;
+			for(;;)
+			{
+				// OPEN ISSUE: What about newlines if interleaving? I'm assuming
+				// that the newline must come between characters to count.
+
+				token.SetLabileFlagBit( NexusToken::tildeIsPunctuation );
+				token.GetNextToken();
+
+				if( polymorphism && token.Equals(")") ) {
+					if( tildeFound ) {
+						errormsg = "Range of states still being specified when ')' encountered";
+						throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+					}
+					break;
+				}
+
+				else if( uncertainty && token.Equals("}") ) {
+					if( tildeFound ) {
+						errormsg = "Range of states still being specified when '}' encountered";
+						throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+					}
+					break;
+				}
+
+				else if( token.Equals("~") ) {
+					if( first == -1 ) {
+						errormsg = "Tilde character ('~') cannot precede token indicating beginning of range";
+						throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+					}
+					tildeFound = 1;
+				}
+
+				else if( tildeFound ) {
+					// Add all states from first+1 to last, then reset tildeFound to 0
+               //
+					last = HandleTokenState( token, j );
+
+					if( last <= first) {
+						errormsg = "Last state in specified range (";
+                  errormsg += token.GetToken();
+                  errormsg += ") must be greater than the first";
+						throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+					}
+
+					for( int k = first+1; k <= last; k++ )
+               	matrix->AddState( i, j, k );
+
+					tildeFound = 0;
+               first = -1;
+				}
+
+				else {
+               // Add current state, then set first to that state's value
+               // State's value is its position within the list of states
+               // for that character
+               //
+					first = HandleTokenState( token, j );
+					matrix->AddState( i, j, first );
+				}
+
+			}
+
+			if( polymorphism )
+				matrix->SetPolymorphic( i, j, 1 );
+		}
+	}
+
+	return true;
+}
+
+/**
+ * @method HandleTokenState [int:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @param j [int] the character index, in range [0..nchar)
+ * @throws XNexus
+ *
+ * Called from HandleNextState to read in the next state when 'tokens' is in effect.
+ * Looks up state in character states listed for the character to make
+ * sure it is a valid state, and returns state's value (0, 1, 2, ...).
+ * Note: does NOT handle adding the state's value to matrix. Save the return
+ * value, let's call it k, and use the following command to add it to matrix:
+ * matrix->AddState( i, j, k );
+ */
+int CharactersBlock::HandleTokenState( NexusToken& token, int j )
+{
+	// token should be one of the character states listed for character j
+	// in charStates
+	//
+   if( charStates.find(j) == charStates.end() ) {
+		errormsg = "No states were defined for character ";
+      errormsg += ( 1 + GetOrigCharIndex(j) );
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+   // TO DO: this section is very UGLY - need to find some cleaner way of comparing
+   // the token nxsstring to the strings representing valid characters states
+   // in the LabelList associated with character j
+   //
+	LabelListBag::const_iterator bagIter = charStates.find(j);
+   LabelList::const_iterator ci_begin = (*bagIter).second.begin();
+   LabelList::const_iterator ci_end = (*bagIter).second.end();
+	nxsstring t = token.GetToken( respectingCase );
+   LabelList::const_iterator cit;
+   if( respectingCase )
+      cit = find( ci_begin, ci_end, t );
+   else
+      cit = find_if( ci_begin, ci_end, bind2nd( stri_equal(), t ) );
+
+	if( cit == ci_end ) {
+		errormsg = "Character state ";
+      errormsg += t;
+      errormsg += " not defined for character ";
+      errormsg += ( 1 + GetOrigCharIndex(j) );
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+	// ok, the state has been identified, so return the state's internal
+	// representation. That is, if the list of state labels was
+	// "small medium large" and "small" was specified in the data file,
+	// state saved in matrix would be 0 (it would be 1 if "medium" were
+	// specified in the data file, and 2 if "large" were specified in the
+	// data file).
+	int k = ( cit - ci_begin );
+	return k;
+}
+
+/**
+ * @method HandleStdMatrix [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called from HandleMatrix function to read in a standard
+ * (i.e., non-transposed) matrix.  Interleaving, if applicable,
+ * is dealt with herein.
+ */
+void CharactersBlock::HandleStdMatrix( NexusToken& token )
+{
+	int i, j, currChar;
+	int firstChar = 0;
+	int lastChar = ncharTotal;
+	int nextFirst;
+	int page = 0;
+
+	for(;;)
+	{
+		//************************************************
+		//******** Beginning of loop through taxa ********
+		//************************************************
+
+		for( i = 0; i < ntax; i++ )
+		{
+			if( labels )
+			{
+				// This should be the taxon label
+				//
+				token.GetNextToken();
+
+				if( page == 0 && newtaxa )
+				{
+					// This section:
+					// - labels provided
+					// - on first (or only) interleave page
+					// - no previous TAXA block
+					
+					// check for duplicate taxon names
+					//
+					if( taxa.IsAlreadyDefined( token.GetToken() ) ) {
+						errormsg = "Data for this taxon (";
+						errormsg += token.GetToken();
+						errormsg += ") has already been saved";
+						throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+					}
+
+					// labels provided and not already stored in the taxa block with
+					// the TAXLABELS command; taxa.Reset() and taxa.SetNTax() have
+					// were already called, however, when the NTAX subcommand was
+					// processed.
+					//
+					taxa.AddTaxonLabel( token.GetToken() );
+
+					// order of occurrence in TAXA block same as row in matrix
+					//
+					taxonPos[i] = i;
+				}
+				else
+				{
+					// This section:
+					// - labels provided
+					// - TAXA block provided or has been created already
+					// - may be on any (interleave) page					
+					
+					// Cannot assume taxon in same position in
+					// taxa block. Set up taxonPos array so that we can look up
+					// the correct row in matrix for any given taxon
+					//
+					int positionInTaxaBlock;
+					try {
+						positionInTaxaBlock = taxa.FindTaxon( token.GetToken() );
+					}
+					catch( std::out_of_range ) {
+						errormsg = "Could not find taxon named ";
+						errormsg += token.GetToken();
+						errormsg += " among stored taxon labels";
+						throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+					}
+
+					if( page == 0 )
+					{
+						// make sure user has not duplicated data for a single taxon
+						//
+						if( taxonPos[positionInTaxaBlock] != -1 ) {
+							errormsg = "Data for this taxon (";
+							errormsg += token.GetToken();
+							errormsg += ") has already been saved";
+							throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+						}
+
+						// make sure user has kept same relative ordering of taxa in both the TAXA
+						// block and the CHARACTERS block
+						//
+						if( positionInTaxaBlock != i ) { //POL 11-12-99: was --> positionInTaxaBlock >= i
+							errormsg = "Relative order of taxa must be the same in both the TAXA and CHARACTERS blocks";
+							throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+						}
+
+						taxonPos[i] = positionInTaxaBlock;  // was --> taxonPos[positionInTaxaBlock] = i;
+					}
+					else
+					{
+						// make sure user has kept the ordering of taxa the same from
+						// one interleave page to the next
+						//
+						if( taxonPos[positionInTaxaBlock] != i ) {
+							errormsg = "Ordering of taxa must be identical to that in first interleave page";
+							throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+						}
+					}
+				}
+			}
+			else {
+				// no labels provided, assume taxon position same as in taxa block
+				if( page == 0 )
+					taxonPos[i] = i;
+			}
+
+			//******************************************************
+			//******** Beginning of loop through characters ********
+			//******************************************************
+
+			for( currChar = firstChar; currChar < lastChar; currChar++ )
+			{
+				// it is possible that character currChar has been ELIMINATEd, in
+				// which case we need to go through the motions of reading in the
+				// data but we don't store it.  The variable j will be our guide
+				// when it comes time to store data since j will be -1 for
+				// characters that were ELIMINATEd and will be set to the correct
+				// row for characters that have not been ELIMINATEd.
+				//
+				j = charPos[currChar];
+
+				// ok will be 0 only if a newline character is encountered before
+				// character j processed
+				//
+				bool ok = HandleNextState( token, i, j );
+				if( interleaving && !ok )
+            {
+					if( lastChar < ncharTotal && j != lastChar ) {
+						errormsg = "Each line within an interleave page must comprise the same number of characters";
+						throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+					}
+
+					// currChar should be firstChar in next go around
+					nextFirst = currChar;
+
+					// set lastChar to currChar so that we can check to make sure the
+					// remaining lines in this interleave page end at the same place
+					lastChar = currChar;
+
+					// since j is now equal to lastChar, we are done with this innermost loop
+				}
+			} // innermost loop (over characters)
+
+		} // middle loop (over taxa)
+
+		firstChar = nextFirst;
+		lastChar = ncharTotal;
+
+		// if currChar equals ncharTotal, then we've just finished reading the last
+		// interleave page and thus should break from the outer loop
+		// Note that if we are not interleaving, this will still work since
+		// lastChar is initialized to ncharTotal and never changed
+		//
+		if( currChar == ncharTotal )
+			break;
+
+		page++;
+
+	} // outer loop (over interleave pages)
+
+}
+
+/**
+ * @method HandleTransposedMatrix [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called from HandleMatrix function to read in a transposed
+ * matrix.  Interleaving, if applicable, is dealt with herein.
+ */
+void CharactersBlock::HandleTransposedMatrix( NexusToken& token )
+{
+	int i, j, currChar;
+	int firstTaxon = 0;
+	int lastTaxon = ntaxTotal;
+	int nextFirst;
+	int page = 0;
+
+	for(;;)
+	{
+		//******************************************************
+		//******** Beginning of loop through characters ********
+		//******************************************************
+
+		for( currChar = 0; currChar < ncharTotal; currChar++ )
+		{
+			// it is possible that character currChar has been ELIMINATEd, in
+			// which case we need to go through the motions of reading in the
+			// data but we don't store it.  The variable j will be our guide
+			// when it comes time to store data since j will be -1 for
+			// characters that were ELIMINATEd and will be set to the correct
+			// row for characters that have not been ELIMINATEd.
+			//
+			j = charPos[currChar];
+
+			if( labels )
+			{
+				// this should be the character label
+				//
+				token.GetNextToken();
+
+				if( page == 0 && newchar )
+				{
+					// check for duplicate character names
+					//
+               nxsstring s = token.GetToken();
+               LabelList::const_iterator iter = find( charLabels.begin(), charLabels.end(), s );
+					int charLabelFound = ( iter != charLabels.end() );
+					if( charLabelFound ) {
+						errormsg = "Data for this character (";
+                  errormsg += token.GetToken();
+                  errormsg += ") has already been saved";
+						throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+					}
+
+					// Labels provided, need to add them to charLabels list.
+					// We're not supposed to save anything for this character since it
+					// has been ELIMINATEd, but the labels must be saved for purposes of
+					// numbering.  Otherwise a more complicated system would be needed
+					// wherein an association is set up between character number and
+               // character label.  Since this is not done in the case of taxa
+               // that are effectively ELIMINATEd when they are included in the
+               // TAXA block but not in the CHARACTERS MATRIX command,  I see no
+               // reason to not save the full character labels here even for those
+               // that have been ELIMINATEd.  Also, for interleaved matrices, it
+               // is necessary to have the full labels saved somewhere so that
+               // it is possible to detect characters out of order or duplicated.
+               //
+               charLabels.push_back( token.GetToken() );
+            }
+				else // either not first interleaved page or character labels not previously defined
+            {
+               nxsstring s = token.GetToken();
+               LabelList::const_iterator iter = find( charLabels.begin(), charLabels.end(), s );
+               if( iter == charLabels.end() ) {
+                  errormsg = "Could not find character named ";
+                  errormsg += token.GetToken();
+                  errormsg += " among stored character labels";
+                  throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+               }
+               int positionInCharLabelsList = ( iter - charLabels.begin() );
+
+               // make sure user has not duplicated data for a single character or
+               // changed the order in which characters appear in different interleave
+               // pages
+               //
+               if( positionInCharLabelsList != currChar )
+               {
+                  if( page == 0 ) {
+                     errormsg = "Data for this character (";
+                     errormsg += token.GetToken();
+                     errormsg += ") has already been saved";
+							throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+                  }
+                  else {
+                     errormsg = "Ordering of characters must be identical to that in first interleave page";
+							throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+                  }
+               }
+
+            }
+
+			} // if labels conditional
+
+			//************************************************
+			//******** Beginning of loop through taxa ********
+			//************************************************
+
+			for( i = firstTaxon; i < lastTaxon; i++ )
+			{
+				if( page == 0 )
+				{
+					// We are forced to assume that the user did not leave out any
+					// taxa, since without taxon labels in the matrix we would
+					// have no way of detecting which were left out; thus,
+					// ntax == ntaxTotal in this case.  Order of occurrence in
+					// TAXA block is the same as the row in matrix.
+					//
+					taxonPos[i] = i;
+				}
+
+				// ok will be 0 only if a newline character is encountered before
+				// taxon i processed
+				//
+				bool ok = HandleNextState( token, i, j );
+            if( interleaving && !ok )
+            {
+               if( lastTaxon < ntaxTotal && i != lastTaxon ) {
+                  errormsg = "Each line within an interleave page must comprise the same number of taxa";
+                  throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+               }
+
+               // i should be firstChar in next go around
+               nextFirst = i;
+
+               // set lastTaxon to i so that we can check to make sure the
+               // remaining lines in this interleave page end at the same
+               // place
+               lastTaxon = i;
+
+               // since i is now equal to lastTaxon, we are done with this innermost loop
+            }
+         } // innermost loop (over taxa)
+
+      } // middle loop (over characters)
+
+		firstTaxon = nextFirst;
+		lastTaxon = ntaxTotal;
+
+		// if i equals ncharTotal, then we've just finished reading the last
+		// interleave page and thus should break from the outer loop
+		// Note that if we are not interleaving, this will still work since
+		// lastTaxon is initialized to ntaxTotal and never changed
+		//
+		if( i == ntaxTotal )
+			break;
+
+		page++;
+
+   } // outer loop (over interleave pages)
+}
+
+/**
+ * @method HandleMatrix [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when MATRIX command needs to be parsed from within the
+ * CHARACTERS block.  Deals with everything after the token MATRIX
+ * up to and including the semicolon that terminates the MATRIX
+ * command.
+ */
+void CharactersBlock::HandleMatrix( NexusToken& token )
+{
+	int i, j;
+
+	if( ntax == 0 ) {
+		errormsg = "Must precede ";
+      errormsg += id;
+      errormsg += " block with a TAXA block or specify NEWTAXA and NTAX in the DIMENSIONS command";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+	if( ntaxTotal == 0 )
+		ntaxTotal = taxa.GetNumTaxonLabels();
+
+	// We use >= rather than just > below because someone might have ELIMINATEd
+	// all characters, and we should allow that (even though it is absurd)
+	assert( nchar >= 0 );
+
+	if( datatype == continuous ) {
+		errormsg = "Sorry, continuous character matrices have not yet been implemented";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+	if( matrix != NULL )
+		delete matrix;
+	matrix = new DiscreteMatrix( ntax, nchar );
+	
+	// Allocate memory for (and initialize) the arrays activeTaxon and activeChar.
+	// All characters and all taxa are initially active.
+	//
+	activeTaxon = new bool[ntax];
+	for( i = 0; i < ntax; i++ )
+		activeTaxon[i] = true;
+		
+	activeChar = new bool[nchar];
+	for( j = 0; j < nchar; j++ )
+		activeChar[j] = true;
+
+   // The value of ncharTotal is normally identical to the value of nchar specified
+   // in the CHARACTERS block DIMENSIONS command.  If an ELIMINATE command is
+   // processed, however, nchar < ncharTotal.  Note that the ELIMINATE command
+   // will have already been read by now, and the ELIMINATEd character numbers
+   // will be stored in the IntSet eliminated.
+   //
+   // Note that if an ELIMINATE command has been read, charPos will have already
+   // been created; thus, we only need to allocate and initialize charPos if user
+   // did not specify an ELIMINATE command
+   //
+	if( charPos == NULL )
+		BuildCharPosArray();
+
+	// The value of ntaxTotal equals the number of taxa specified in the
+	// TAXA block, whereas ntax equals the number of taxa specified in
+	// the DIMENSIONS command of the CHARACTERS block.  These two numbers
+   // will be identical unless some taxa were left out of the MATRIX
+   // command of the CHARACTERS block, in which case ntax < ntaxTotal.
+   //
+	if( taxonPos != NULL )
+		delete [] taxonPos;
+  	taxonPos = new int[ntaxTotal];
+   for( i = 0; i < ntaxTotal; i++ )
+      taxonPos[i] = -1;
+
+   if( transposing )
+      HandleTransposedMatrix( token );
+   else
+      HandleStdMatrix( token );
+
+   // If we've gotten this far, presumably it is safe to
+   // tell the ASSUMPTIONS block that were ready to take on
+   // the responsibility of being the current character-containing
+   // block (to be consulted if characters are excluded or included
+   // or if taxa are deleted or restored)
+   assumptionsBlock.SetCallback(this);
+
+   // this should be the terminating semicolon at the end of the matrix command
+   token.GetNextToken();
+   if( !token.Equals(";") ) {
+      errormsg = "Expecting ';' at the end of the MATRIX command; found ";
+      errormsg += token.GetToken();
+      errormsg += " instead";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+   }
+
+}
+
+/**
+ * @method HandleStatelabels [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when STATELABELS command needs to be parsed from within the
+ * DIMENSIONS block.  Deals with everything after the token STATELABELS
+ * up to and including the semicolon that terminates the STATELABELS
+ * command. Note that the numbers of states are shifted back one before
+ * being stored so that the character numbers in the LabelListAssoc objects
+ * are 0-offset rather than being 1-offset as in the Nexus data file.
+ */
+void CharactersBlock::HandleStatelabels( NexusToken& token )
+{
+	bool semicolonFoundInInnerLoop = false;
+
+	charStates.erase( charStates.begin(), charStates.end() );
+
+	if( charPos == NULL )
+		BuildCharPosArray();
+	
+	for(;;)
+	{
+		if( semicolonFoundInInnerLoop )
+			break;
+
+		token.GetNextToken();
+
+		if( token.Equals(";") )
+			break;
+
+		// token should be the character number; create a new association
+		//
+		int n = atoi( token.GetToken().c_str() );
+		if( n < 1 || n > ncharTotal ) {
+			errormsg = "Invalid character number (";
+         errormsg += token.GetToken();
+         errormsg += ") found in STATELABELS command (either out of range or not interpretable as an integer)";
+			throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+		}
+		
+		for(;;)
+		{
+			token.GetNextToken();
+
+			if( token.Equals(";") ) {
+				semicolonFoundInInnerLoop = true;
+				break;
+			}
+
+			if( token.Equals(",") ) {
+				break;
+         }
+
+         // token should be a character state label; add it to the list
+         //
+         if( !IsEliminated(n-1) ) {
+         	int k = GetCharPos(n-1);
+	         charStates[k].push_back( token.GetToken() );
+	      }
+
+      } // inner loop (grabbing state labels for character n)
+
+	 } // outer loop
+}
+
+/**
+ * @method HandleTaxlabels [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when TAXLABELS command needs to be parsed from within the
+ * CHARACTERS block.  Deals with everything after the token TAXLABELS
+ * up to and including the semicolon that terminates the TAXLABELS
+ * command.
+ */
+void CharactersBlock::HandleTaxlabels( NexusToken& token )
+{
+	if( !newtaxa ) {
+		errormsg = "NEWTAXA must have been specified in DIMENSIONS command to use the TAXLABELS command in a ";
+      errormsg += id;
+      errormsg += " block";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+	for(;;)
+	{
+		token.GetNextToken();
+
+      // token should either be ';' or the name of a taxon
+      //
+		if( token.Equals(";") ) {
+			break;
+		}
+      else {
+         // check to make sure user is not trying to read in more
+         // taxon labels than there are taxa
+         //
+         if( taxa.GetNumTaxonLabels() > ntaxTotal ) {
+				errormsg = "Number of taxon labels exceeds NTAX specified in DIMENSIONS command";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+
+         taxa.AddTaxonLabel( token.GetToken() );
+      }
+	}
+
+   // OPEN ISSUE: Some may object to setting newtaxa to false here, because then the
+   // fact that new taxa were specified in this CHARACTERS block rather than in
+   // a preceding TAXA block is lost.  This will only be important if we wish to
+   // recreate the original data file, which I don't anticipate anyone doing with
+   // this code (too difficult to remember all comments, the order of blocks in
+   // the file, etc.)
+
+   newtaxa = false;
+
+}
+
+/**
+ * @method PositionInSymbols [int:protected]
+ * @param ch [int] the symbol character to search for
+ *
+ * Returns position of ch in symbols array.  The value of respectingCase
+ * is used to determine whether the search should be case sensitive or not.
+ * Assumes symbols != NULL. Returns -1 if ch is not found in symbols.
+ */
+int CharactersBlock::PositionInSymbols( char ch )
+{
+	assert( symbols != NULL );
+	int symbolsLength = strlen(symbols);
+	int found = 0;
+	int i;
+	for( i = 0; i < symbolsLength; i++ )
+	{
+		char char_in_symbols = ( respectingCase ? symbols[i] : (char)toupper(symbols[i]) );
+		char char_in_question = ( respectingCase ? ch : (char)toupper(ch) );
+		if( char_in_symbols != char_in_question ) continue;
+		found = 1;
+		break;
+	}
+	return ( found ? i : -1 );
+}
+
+/**
+ * @method Read [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @param in [istream&] the input stream from which to read
+ * @throws XNexus
+ *
+ * This function provides the ability to read everything following the block name
+ * (which is read by the Nexus object) to the end or endblock statement.
+ * Characters are read from the input stream in. Overrides the
+ * abstract virtual function in the base class.
+ */
+void CharactersBlock::Read( NexusToken& token )
+{
+   isEmpty = false;
+	token.GetNextToken(); // this should be the semicolon after the block name
+	if( !token.Equals(";") ) {
+		errormsg = "Expecting ';' after ";
+      errormsg += id;
+      errormsg += " block name, but found ";
+      errormsg += token.GetToken();
+      errormsg += " instead";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+	ntax = taxa.GetNumTaxonLabels();
+
+	for(;;)
+	{
+		token.GetNextToken();
+
+		if( token.Equals("DIMENSIONS") ) {
+			HandleDimensions( token, "NEWTAXA", "NTAX", "NCHAR" );
+		}
+		else if( token.Equals("FORMAT") ) {
+			HandleFormat( token );
+		}
+		else if( token.Equals("ELIMINATE") ) {
+			HandleEliminate( token );
+		}
+		else if( token.Equals("TAXLABELS") ) {
+			HandleTaxlabels( token );
+		}
+		else if( token.Equals("CHARSTATELABELS") ) {
+			HandleCharstatelabels( token );
+		}
+		else if( token.Equals("CHARLABELS") ) {
+			HandleCharlabels( token );
+		}
+		else if( token.Equals("STATELABELS") ) {
+			HandleStatelabels( token );
+		}
+		else if( token.Equals("MATRIX") ) {
+			HandleMatrix( token );
+		}
+		else if( token.Equals("END") ) {
+			HandleEndblock( token, "Character" );
+			break;
+		}
+		else if( token.Equals("ENDBLOCK") ) {
+			HandleEndblock( token, "Character" );
+			break;
+		}
+		else {
+			SkippingCommand( token.GetToken() );
+         do {
+            token.GetNextToken();
+         } while( !token.AtEOF() && !token.Equals(";") );
+         if( token.AtEOF() ) {
+				errormsg = "Unexpected end of file encountered";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+		}
+	}
+}
+
+/**
+ * @method Report [void:public]
+ * @param out [ostream&] the output stream to which to write the report
+ *
+ * This function outputs a brief report of the contents of this
+ * CHARACTERS block.  Overrides the abstract virtual function
+ * in the base class.
+ */
+void CharactersBlock::Report( std::ostream& out )
+{
+	out << endl;
+	out << id << " block contains ";
+	if( ntax == 0 )
+		out << "no taxa";
+	else if( ntax == 1 )
+		out << "one taxon";
+	else
+		out << ntax << " taxa";
+	out << " and ";
+	if( nchar == 0 )
+		out << "no characters";
+	else if( nchar == 1 )
+		out << "one character";
+	else
+		out << nchar << " characters";
+	out << endl;
+
+	switch( datatype )
+	{
+		case dna:
+			out << "  Data type is \"DNA\"" << endl;
+			break;
+		case rna:
+			out << "  Data type is \"RNA\"" << endl;
+			break;
+		case nucleotide:
+			out << "  Data type is \"nucleotide\"" << endl;
+			break;
+		case protein:
+			out << "  Data type is \"protein\"" << endl;
+			break;
+		case continuous:
+			out << "  Data type is \"continuous\"" << endl;
+			break;
+		default:
+			out << "  Data type is \"standard\"" << endl;
+	}
+
+	if( respectingCase )
+		out << "  Respecting case" << endl;
+	else
+		out << "  Ignoring case" << endl;
+
+	if( tokens )
+		out << "  Multicharacter tokens allowed in data matrix" << endl;
+	else
+		out << "  Data matrix entries are expected to be single symbols" << endl;
+
+	if( labels && transposing )
+		out << "  Character labels are expected on left side of matrix" << endl;
+	else if( labels && !transposing )
+		out << "  Taxon labels are expected on left side of matrix" << endl;
+	else
+		out << "  No labels are expected on left side of matrix" << endl;
+
+	if( charLabels.size() > 0 )
+	{
+		out << "  Character and character state labels:" << endl;
+		for( int k = 0; k < nchar; k++ ) 
+		{
+			if( charLabels[k].length() == 0 )
+				out << '\t' << ( 1 + GetOrigCharIndex(k) ) << '\t' << "(no label provided for this character)" << endl;
+			else
+				out << '\t' << ( 1 + GetOrigCharIndex(k) ) << '\t' << charLabels[k] << endl;
+
+			// output state labels if any are defined for this character
+         LabelListBag::const_iterator cib = charStates.find(k);
+         if( cib != charStates.end() )
+         {
+            int ns = (*cib).second.size();
+            for( int m = 0; m < ns; m++ ) {
+         		out << "\t\t" << (*cib).second[m] << endl;
+            }
+         }
+		}
+	}
+
+	if( transposing && interleaving )
+		out << "  Matrix transposed and interleaved" << endl;
+	else if( transposing && !interleaving )
+		out << "  Matrix transposed but not interleaved" << endl;
+	else if( !transposing && interleaving )
+		out << "  Matrix interleaved but not transposed" << endl;
+	else
+		out << "  Matrix neither transposed nor interleaved" << endl;
+
+	out << "  Missing data symbol is '" << missing << '\'' << endl;
+
+	if( matchchar != '\0' )
+		out << "  Match character is '" << matchchar << '\'' << endl;
+	else
+		out << "  No match character specified" << endl;
+
+	if( gap != '\0' )
+		out << "  Gap character specified is '" << gap << '\'' << endl;
+	else
+		out << "  No gap character specified" << endl;
+
+	out << "  Valid symbols are: " << symbols << endl;
+
+	int numEquateMacros = equates.size();
+	if( numEquateMacros > 0 ) {
+		out << "  Equate macros in effect:" << endl;
+      typedef AssocList::const_iterator CI;
+		for( CI i = equates.begin(); i != equates.end(); ++i) {
+			out << "    " << (*i).first << " = " << (*i).second << endl;
+		}
+	}
+	else
+		out << "  No equate macros have been defined" << endl;
+
+	if( ncharTotal == nchar )
+		out << "  No characters were eliminated" << endl;
+	else {
+		out << "  The following characters were eliminated:" << endl;
+		IntSet::const_iterator k;
+		for( k = eliminated.begin(); k != eliminated.end(); k++ ) {
+			out << "    " << ((*k)+1) << endl;
+		}
+	}
+
+	out << "  The following characters have been excluded:" << endl;
+	int k;
+	int nx = 0;
+	for( k = 0; k < nchar; k++ ) {
+		if( activeChar[k] ) continue;
+		out << "    " << (k+1) << endl;
+		nx++;
+	}
+	if( nx == 0 )
+		out << "    (no characters excluded)" << endl;
+
+	out << "  The following taxa have been deleted:" << endl;
+	nx = 0;
+	for( k = 0; k < ntax; k++ ) {
+		if( activeTaxon[k] ) continue;
+		out << "    " << (k+1) << endl;
+		nx++;
+	}
+	if( nx == 0 )
+		out << "    (no taxa deleted)" << endl;
+
+	out << "  Data matrix:" << endl;
+	DebugShowMatrix( out, "    " );
+}
+
+/**
+ * @method Reset [void:protected]
+ *
+ * Sets ntax and nchar to 0 in preparation for reading a new
+ * CHARACTERS block.
+ */
+void CharactersBlock::Reset()
+{
+	isEmpty        = true;
+	ntax           = 0;
+	nchar          = 0;
+	newchar        = true;
+	newtaxa        = false;
+	interleaving   = false;
+	transposing    = false;
+	respectingCase = false;
+	labels         = true;
+	datatype       = standard;
+	missing        = '?';
+	gap            = '\0';
+	matchchar      = '\0';
+
+	charLabels.erase( charLabels.begin(), charLabels.end() );
+	charStates.erase( charStates.begin(), charStates.end() );
+	equates.erase( equates.begin(), equates.end() );
+
+	ResetSymbols();
+
+	if( matrix != NULL ) {
+		delete matrix;
+		matrix = NULL;
+	}
+
+	if( charPos != NULL ) {
+		delete [] charPos;
+		charPos = NULL;
+	}
+
+	if( taxonPos != NULL ) {
+		delete [] taxonPos;
+		taxonPos = NULL;
+	}
+
+	if( activeTaxon != NULL ) {
+		delete [] activeTaxon;
+		activeTaxon = NULL;
+	}
+
+	if( activeChar != NULL ) {
+		delete [] activeChar;
+		activeChar = NULL;
+	}
+
+	if( !eliminated.empty() ) {
+		eliminated.erase( eliminated.begin(), eliminated.end() );
+	}
+}
+
+/**
+ * @method ResetSymbols [void:protected]
+ *
+ * Resets standard symbol set after a change in datatype is made. Also
+ * flushes equates list and installs standard equate macros for the
+ * current datatype.
+ */
+void CharactersBlock::ResetSymbols()
+{
+	// define the standard symbols
+	switch( datatype )
+	{
+		case dna:
+			strcpy( symbols, "ACGT" );
+			break;
+		case rna:
+			strcpy( symbols, "ACGU" );
+			break;
+		case nucleotide:
+			strcpy( symbols, "ACGT" );
+			break;
+		case protein:
+			strcpy( symbols, "ACDEFGHIKLMNPQRSTVWY*" );
+			break;
+		default:
+			strcpy( symbols, "01" );
+	}
+
+	// setup standard equates
+   equates.erase( equates.begin(), equates.end() );
+//trash   Association* newEquate;
+   if( datatype == dna || datatype == rna || datatype == nucleotide )
+   {
+#if 1
+      equates[ nxsstring("R") ] = nxsstring("{AG}");
+      equates[ nxsstring("Y") ] = nxsstring("{CT}");
+      equates[ nxsstring("M") ] = nxsstring("{AC}");
+      equates[ nxsstring("K") ] = nxsstring("{GT}");
+      equates[ nxsstring("S") ] = nxsstring("{CG}");
+      equates[ nxsstring("W") ] = nxsstring("{AT}");
+      equates[ nxsstring("H") ] = nxsstring("{ACT}");
+      equates[ nxsstring("B") ] = nxsstring("{CGT}");
+      equates[ nxsstring("V") ] = nxsstring("{ACG}");
+      equates[ nxsstring("D") ] = nxsstring("{AGT}");
+      equates[ nxsstring("N") ] = nxsstring("{ACGT}");
+      equates[ nxsstring("X") ] = nxsstring("{ACGT}");
+#else
+      newEquate = new Association();
+      newEquate->SetKey("R");
+      newEquate->SetValue("{AG}");
+      equates.AddAssociation( newEquate );
+
+      newEquate = new Association();
+      newEquate->SetKey("Y");
+		newEquate->SetValue("{CT}");
+      equates.AddAssociation( newEquate );
+
+      newEquate = new Association();
+      newEquate->SetKey("M");
+      newEquate->SetValue("{AC}");
+		equates.AddAssociation( newEquate );
+
+      newEquate = new Association();
+      newEquate->SetKey("K");
+      newEquate->SetValue("{GT}");
+      equates.AddAssociation( newEquate );
+
+      newEquate = new Association();
+      newEquate->SetKey("S");
+      newEquate->SetValue("{CG}");
+      equates.AddAssociation( newEquate );
+
+      newEquate = new Association();
+      newEquate->SetKey("W");
+      newEquate->SetValue("{AT}");
+      equates.AddAssociation( newEquate );
+
+      newEquate = new Association();
+      newEquate->SetKey("H");
+      newEquate->SetValue("{ACT}");
+      equates.AddAssociation( newEquate );
+
+      newEquate = new Association();
+      newEquate->SetKey("B");
+		newEquate->SetValue("{CGT}");
+      equates.AddAssociation( newEquate );
+
+      newEquate = new Association();
+      newEquate->SetKey("V");
+      newEquate->SetValue("{ACG}");
+      equates.AddAssociation( newEquate );
+
+      newEquate = new Association();
+      newEquate->SetKey("D");
+      newEquate->SetValue("{AGT}");
+      equates.AddAssociation( newEquate );
+
+      newEquate = new Association();
+		newEquate->SetKey("N");
+      newEquate->SetValue("{ACGT}");
+      equates.AddAssociation( newEquate );
+
+		newEquate = new Association();
+      newEquate->SetKey("X");
+      newEquate->SetValue("{ACGT}");
+      equates.AddAssociation( newEquate );
+#endif
+   }
+   else if( datatype == protein )
+   {
+#if 1
+      equates[ nxsstring("B") ] = nxsstring("{DN}");
+      equates[ nxsstring("Z") ] = nxsstring("{EQ}");
+#else
+      newEquate = new Association();
+      newEquate->SetKey("B");
+      newEquate->SetValue("{DN}");
+      equates.AddAssociation( newEquate );
+
+		newEquate = new Association();
+      newEquate->SetKey("Z");
+      newEquate->SetValue("{EQ}");
+      equates.AddAssociation( newEquate );
+#endif
+   }
+}
+
+/**
+ * @method RestoreTaxon [void:protected]
+ * @param i [int] index of taxon to restore in range [0..ntax)
+ *
+ * Restores taxon whose 0-offset current index is i.  If taxon
+ * is already active, this function has no effect.
+ */
+void CharactersBlock::RestoreTaxon( int i )
+{
+	activeTaxon[i] = true;
+}
+
+/**
+ * @method ShowStateLabels [void:protected]
+ * @param out [ostream&] the output stream on which to write
+ * @param i [int] the taxon, in range [0..ntax)
+ * @param j [int] the character, in range [0..nchar)
+ *
+ * Looks up the state(s) at row i, column j of matrix and writes it (or them)
+ * to out.  If there is uncertainty or polymorphism, the list of states is
+ * surrounded by the appropriate set of symbols (i.e., parentheses for polymorphism,
+ * curly brackets for uncertainty).  If 'tokens' is in effect, the output takes
+ * the form of the defined state labels; otherwise, the correct symbol is
+ * looked up in symbols and output.
+ */
+void CharactersBlock::ShowStateLabels( std::ostream& out, int i, int j )
+{
+   if( tokens )
+   {
+      int n = matrix->GetNumStates( i, j );
+      if( n == 0 && matrix->IsGap( i, j ) )
+         out << gap;
+      else if( n == 0 && matrix->IsMissing( i, j ) )
+         out << missing;
+      else if( n == 1 ) {
+         int s = matrix->GetState( i, j );
+         LabelListBag::const_iterator ci = charStates.find(j);
+         // OPEN ISSUE: need to eliminate state labels for characters that have
+         // been eliminated
+         if( ci == charStates.end() )
+            out << "  " << s << "[<-no label found]";
+         else {
+            // show label at index number s in LabelList at ci
+            out << "  " << (*ci).second[s];
+         }
+      }
+      else {
+         if( matrix->IsPolymorphic( i, j ) )
+            out << "  (";
+         else
+            out << "  {";
+         for( int k = 0; k < n; k++ ) {
+            int s = matrix->GetState( i, j, k );
+            LabelListBag::const_iterator ci = charStates.find(j);
+            if( ci == charStates.end() )
+               out << "  " << s << "[<-no label found]";
+            else {
+               // show label at index number s in LabelList at ci
+               out << "  " << (*ci).second[s];
+            }
+         }
+         if( matrix->IsPolymorphic( i, j ) )
+            out << ')';
+         else
+            out << '}';
+      }
+
+   }
+   else
+   	ShowStates( out, i, j );
+}
+
+/**
+ * @method ShowStates [char*:public]
+ * @param out [ostream&] the stream on which to show the state(s)
+ * @param i [int] the (0-offset) index of the taxon in question
+ * @param j [int] the (0-offset) index of the character in question
+ *
+ * Shows the states for taxon i, character j, on the stream out.  Uses
+ * symbols array to translate the states from the way they are stored (as
+ * integers) to the symbol used in the original data matrix.
+ * Assumes i is in the range [0..nrows) and j is in the range [0..ncols).
+ * Also assumes both symbols and data are non-NULL.
+ */
+void CharactersBlock::ShowStates( std::ostream& out, int i, int j )
+{
+	assert( i >= 0 );
+	assert( i < ntax );
+	assert( j >= 0 );
+	assert( j < nchar );
+
+   char s[NCL_MAX_STATES+3];
+   WriteStates( matrix->GetDiscreteDatum( i, j ), s, NCL_MAX_STATES+3 );
+
+   out << s;
+}
+
+/**
+ * @method TaxonLabelToNumber [void:protected]
+ * @param s [nxsstring&] the taxon label to convert
+ *
+ * Converts a taxon label to a number corresponding to
+ * the taxon's position within the list maintained by
+ * the TaxaBlock object.  This method overrides the
+ * virtual function of the same name in the NexusBlock
+ * base class.  If s is not a valid taxon label, returns
+ * the value 0.
+ */
+int CharactersBlock::TaxonLabelToNumber( nxsstring s )
+{
+   int i;
+   try {
+      i = 1 + taxa.FindTaxon(s);
+   }
+   catch( TaxaBlock::nosuchtaxon ) {
+      i = 0;
+   }
+   return i;
+}
+
+/**
+ * @method WriteStates [void:public]
+ * @param d [DiscreteDatum&] the datum to be queried
+ * @param s [char*] the buffer to which to print
+ * @param slen [int] the length of the buffer s
+ *
+ * Writes out the state (or states) stored in this DiscreteDatum object
+ * to the buffer s using the symbols array to do the necessary
+ * translation of the numeric state values to state symbols.  In the
+ * case of polymorphism or uncertainty, the list of states will be
+ * surrounded by brackets or parentheses (respectively).  Assumes
+ * s is long enough to hold everything printed.
+ */
+void CharactersBlock::WriteStates( DiscreteDatum& d, char* s, int slen )
+{
+
+   assert( s != NULL );
+   assert( slen > 1 );
+
+   if( matrix->IsMissing(d) ) {
+      s[0] = missing;
+      s[1] = '\0';
+   }
+   else if( matrix->IsGap(d) ) {
+      s[0] = gap;
+      s[1] = '\0';
+   }
+   else
+   {
+      assert( symbols != NULL );
+      int symbolListLen = strlen( symbols );
+
+      int numStates = matrix->GetNumStates(d);
+      int numCharsNeeded = numStates;
+      if( numStates > 1 )
+         numCharsNeeded += 2;
+      assert( slen > numCharsNeeded );
+
+      if( numStates == 1 ) {
+         int v = matrix->GetState( d );
+         assert( v < symbolListLen );
+         s[0] = symbols[v];
+         s[1] = '\0';
+      }
+      else {
+         // numStates must be greater than 1
+         //
+         int i = 0;
+         if( matrix->IsPolymorphic(d) )
+            s[i++] = '(';
+         else
+            s[i++] = '{';
+         for( int k = 0; k < numStates; k++ ) {
+            int v = matrix->GetState( d, k );
+            assert( v < symbolListLen );
+            s[i++] = symbols[v];
+            s[i] = '\0';
+         }
+         if( matrix->IsPolymorphic(d) )
+            s[i++] = ')';
+         else
+            s[i++] = '}';
+         s[i] = '\0';
+      }
+   }
+}
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/charactersblock.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/charactersblock.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/charactersblock.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/charactersblock.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,156 @@
+#ifndef __CHARACTERSBLOCK_H
+#define __CHARACTERSBLOCK_H
+
+class AssumptionsBlock;
+
+//
+// CharactersBlock class
+//
+class CharactersBlock : public NexusBlock
+{
+   // Adding a new data member? Don't forget to:
+   // 1. Describe it in the class header comment at the top of "charactersblock.cpp"
+   // 2. Initialize it (unless it is self-initializing) in the constructor
+   //    and reinitialize it in the Reset function
+   // 3. Describe the initial state in the constructor documentation
+   // 4. Delete memory allocated to it in both the destructor and Reset function
+   // 5. Report it in some way in the Report function
+
+friend class AssumptionsBlock;
+
+protected:
+	TaxaBlock& taxa;
+	AssumptionsBlock& assumptionsBlock;
+
+	int ntax;
+	int ntaxTotal;
+	int nchar;
+	int ncharTotal;
+
+	bool newtaxa;
+	bool newchar;
+
+	bool respectingCase;
+	bool transposing;
+	bool interleaving;
+	bool tokens;
+	bool labels;
+
+	char missing;
+	char gap;
+	char matchchar;
+
+	char* symbols;
+
+	AssocList equates;
+
+	DiscreteMatrix* matrix;
+	int* charPos;
+	int* taxonPos;
+	IntSet eliminated;
+
+	bool* activeChar;
+	bool* activeTaxon;
+
+	LabelList charLabels;
+	LabelListBag charStates;
+
+public:
+	enum datatypes { standard = 1, dna, rna, nucleotide, protein, continuous };
+
+private:
+	datatypes datatype;
+
+protected:
+	void BuildCharPosArray( bool check_eliminated = false );
+   int  IsInSymbols( char ch );
+	void HandleCharlabels( NexusToken& token );
+	void HandleCharstatelabels( NexusToken& token );
+	void HandleDimensions( NexusToken& token, nxsstring newtaxaLabel, nxsstring ntaxLabel, nxsstring ncharLabel );
+	void HandleEliminate( NexusToken& token );
+	void HandleEndblock( NexusToken& token, nxsstring charToken );
+	virtual void HandleFormat( NexusToken& token );
+	virtual void HandleMatrix( NexusToken& token );
+	virtual bool HandleNextState( NexusToken& token, int i, int c );
+	void HandleStatelabels( NexusToken& token );
+	virtual void HandleStdMatrix( NexusToken& token );
+	void HandleTaxlabels( NexusToken& token );
+   virtual int  HandleTokenState( NexusToken& token, int c );
+	virtual void HandleTransposedMatrix( NexusToken& token );
+   int  PositionInSymbols( char ch );
+	virtual void Read( NexusToken& token );
+	virtual void Reset();
+	void ResetSymbols();
+   void ShowStates( std::ostream& out, int i, int j );
+   void WriteStates( DiscreteDatum& d, char* s, int slen );
+
+public:
+	CharactersBlock( TaxaBlock& tb, AssumptionsBlock& ab );
+	virtual ~CharactersBlock();
+
+	int ApplyDelset( IntSet& delset );
+	int ApplyExset( IntSet& exset );
+	int ApplyIncludeset( IntSet& inset );
+	int ApplyRestoreset( IntSet& restoreset );
+   virtual int CharLabelToNumber( nxsstring s );
+   virtual int TaxonLabelToNumber( nxsstring s );
+
+	virtual void DebugShowMatrix( std::ostream& out, char* marginText = NULL );
+	nxsstring GetCharLabel( int i );
+   int   GetCharPos( int origCharIndex );
+   int   GetTaxPos( int origTaxonIndex );
+	int   GetDataType();
+	char  GetGapSymbol();
+   int   GetInternalRepresentation( int i, int j, int k = 0 );
+	char  GetMatchcharSymbol();
+   virtual int GetMaxObsNumStates();
+	char  GetMissingSymbol();
+	int   GetNTax();
+	int   GetNChar();
+	int   GetNCharTotal();
+	int   GetNTaxTotal();
+	int 	GetNumActiveChar();
+	int 	GetNumActiveTaxa();
+   int   GetNumEliminated();
+   int   GetNumEquates();
+	int   GetNumMatrixCols();
+	int   GetNumMatrixRows();
+	int   GetNumStates( int i, int j );
+	virtual int GetObsNumStates( int j );
+   int   GetOrigCharIndex( int j );
+   int   GetOrigCharNumber( int j );
+   int   GetOrigTaxonIndex( int j );
+   int   GetOrigTaxonNumber( int j );
+	char  GetState( int i, int j, int k = 0 );
+	nxsstring GetStateLabel( int i, int j );
+	char* GetSymbols();
+   nxsstring GetTaxonLabel( int i );
+	bool  IsGapState( int i, int j );
+	bool  IsInterleave();
+	bool  IsLabels();
+	bool  IsMissingState( int i, int j );
+	bool  IsPolymorphic( int i, int j );
+	bool  IsRespectCase();
+	bool  IsTokens();
+	bool  IsTranspose();
+
+	bool  IsEliminated( int origCharIndex );
+
+	void  ExcludeCharacter( int i );
+	void  IncludeCharacter( int i );
+	bool  IsActiveChar( int j );
+	bool  IsExcluded( int j );
+	
+	void  DeleteTaxon( int i );
+	void  RestoreTaxon( int i );
+	bool  IsActiveTaxon( int i );
+	bool  IsDeleted( int i );
+	
+	bool* GetActiveTaxonArray();
+	bool* GetActiveCharArray();
+
+	virtual void  Report( std::ostream& out );
+   void  ShowStateLabels( std::ostream& out, int i, int c );
+};
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/charactersblock.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/datablock.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/datablock.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/datablock.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,67 @@
+#include "nexusdefs.h"
+#include "discretedatum.h"
+#include "discretematrix.h"
+#include "nexustoken.h"
+#include "nexus.h"
+#include "taxablock.h"
+#include "charactersblock.h"
+#include "datablock.h"
+
+/**
+ * @class      DataBlock
+ * @file       datablock.h
+ * @file       datablock.cpp
+ * @author     Paul O. Lewis
+ * @copyright  Copyright © 1999. All Rights Reserved.
+ * @see        Association
+ * @see        AssocList
+ * @see        CharactersBlock
+ * @see        DiscreteDatum
+ * @see        DiscreteMatrix
+ * @see        LabelList
+ * @see        LabelListAssoc
+ * @see        LabelListBag
+ * @see        Nexus
+ * @see        NexusBlock
+ * @see        NexusReader
+ * @see        NexusToken
+ * @see        SetReader
+ * @see        TaxaBlock
+ *
+ * This class handles reading and storage for the Nexus block DATA.
+ * It is derived from the CharactersBlock class, and differs from
+ * CharactersBlock only in name and the fact that newtaxa is initially
+ * true rather than false.
+ */
+
+/**
+ * @constructor
+ *
+ * Performs the following initializations:
+ * <table>
+ * <tr><th align="left">Variable <th> <th align="left"> Initial Value
+ * <tr><td> id             <td>= <td> "DATA"
+ * <tr><td> newtaxa        <td>= <td> true
+ * </table>
+ */
+DataBlock::DataBlock( TaxaBlock& tb, AssumptionsBlock& ab )
+	: CharactersBlock( tb, ab )
+{
+	id = "DATA";
+	newtaxa = true;
+}
+
+/**
+ * @method Reset [void:protected]
+ *
+ * Calls Reset function of the parent class (CharactersBlock) and
+ * resets newtaxa to true in preparation for reading another DATA block.
+ */
+void DataBlock::Reset()
+{
+	CharactersBlock::Reset();
+	newtaxa = true;
+   taxa.Reset();
+}
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/datablock.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/datablock.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/datablock.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/datablock.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,16 @@
+#ifndef __DATABLOCK_H
+#define __DATABLOCK_H
+
+//
+// DataBlock class
+//
+class DataBlock : public CharactersBlock
+{
+	protected:
+		void Reset();
+
+	public:
+		DataBlock( TaxaBlock& tb, AssumptionsBlock& ab );
+};
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/datablock.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretedatum.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretedatum.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretedatum.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,118 @@
+#include "nexusdefs.h"
+#include "discretedatum.h"
+
+/**
+ * @class      DiscreteDatum
+ * @file       discretedatum.h
+ * @file       discretedatum.cpp
+ * @author     Paul O. Lewis
+ * @copyright  Copyright © 1999. All Rights Reserved.
+ * @variable   polymorphic [int:public] if true, additional states represent polymorphism rather than uncertainty
+ * @variable   states [int*:public] holds information about state
+ * @see        DiscreteMatrix
+ * @see        NexusReader
+ *
+ * Class for holding discrete states in a matrix.  Note that there is no way to access
+ * the variables of this class since they are all private and there are no public
+ * access functions.  This class is designed to be manipulated by the class 
+ * <a href="DiscreteMatrix.html">DiscreteMatrix</a>, which is the only class that 
+ * has been designated a friend of DiscreteDatum.
+ *
+ * <p>The variable states is NULL if there is missing data, and non-NULL for any other state.
+ * If states is non-NULL, the first cell is used to store the number of states.  This will
+ * be 0 if the state is the gap state, 1 if the state is unambiguous and nonpolymorphic
+ * (and not the gap state of course), and 2 or higher if there is either polymorphism or
+ * uncertainty.  If polymorphism or uncertainty apply, it becomes necessary to store information
+ * about which of these two situations holds.  Thus, the last cell in the array is set to
+ * either 1 (polymorphism) or 0 (uncertainty).  While a little complicated, this scheme has
+ * the following benefits:
+ * <ol>
+ * <li> if the state is missing, the only memory allocated is for a pointer (states)
+ * <li> if the state is unambiguous and not polymorphic, no storage is used for keeping
+ *   track of whether polymorphism or uncertainty holds
+ * <li> it allows for a virtually unlimited number of states, which is important if it is
+ *   to be general enough to store microsatellite data for an AllelesBlock object, for
+ *   example.
+ * </ol>
+ *
+ * <p>Supposing the gap symbol is '-', the missing data symbol is '?', and the
+ * symbols list is "ACGT", the following table shows the status of the states
+ * variable under several different possible data matrix entries:
+ * <table>
+ * <tr> <th> Matrix entry <th> contents of states
+ * <tr> <td align="center"> ?            <td align="center"> NULL
+ * <tr> <td align="center"> -            <td align="center"> <table border=1> <tr> <td>0</td> </table>
+ * <tr> <td align="center"> G            <td align="center"> <table border=1> <tr> <td>1</td> <td>2</td> </table>
+ * <tr> <td align="center"> (AG) polymorphic <td align="center"> <table border=1> <tr> <td>2</td> <td>0</td> <td>2</td> <td>1</td> </table>
+ * <tr> <td align="center"> {AG} ambiguous   <td align="center"> <table border=1> <tr> <td>2</td> <td>0</td> <td>2</td> <td>0</td> </table>
+ * </table>
+ */
+
+/**
+ * @constructor
+ *
+ * Sets states to NULL and polymorphic to 0.
+ */
+DiscreteDatum::DiscreteDatum()
+{
+   states = NULL;
+}
+
+/**
+ * @destructor
+ *
+ * Deletes memory associated with states (if any was allocated).
+ */
+DiscreteDatum::~DiscreteDatum()
+{
+   if( states != NULL )
+      delete [] states;
+}
+
+/**
+ * @method CopyFrom [int:public]
+ * @param other [const DiscreteDatum&] the source DiscreteDatum object 
+ *
+ * Makes this DiscreteDatum object an exact copy of other.  Useful for
+ * dealing with matchchar symbols in a matrix.
+ */
+void DiscreteDatum::CopyFrom( const DiscreteDatum& other )
+{
+	if( states != NULL ) {
+		delete [] states;
+		states = NULL;
+	}
+	
+	if( other.states == NULL )
+		return;
+		
+	int sz = other.states[0];
+	if( sz == 0 ) 
+	{
+		// other.states indicates the 'gap' state is present
+		//
+		states = new int[1];
+		states[0] = 0;
+	}
+	else if( sz == 1 )
+	{
+		// other.states indicates state is unambiguous and non-polymorphic
+		//
+		states = new int[2];
+		states[0] = 1;
+		states[1] = other.states[1];
+	}
+	else
+	{
+		// other.states indicates ambiguity or polymorphism is present
+		//
+		states = new int[sz+2];
+		states[0] = sz;
+		for( int i = 1; i <= sz; i++ )
+			states[i] = other.states[i];
+
+		// copy the polymorphism indicator element
+		//
+		states[sz+1] = other.states[sz+1];
+	}
+}


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretedatum.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretedatum.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretedatum.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretedatum.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,21 @@
+#ifndef __DISCRETEDATUM_H
+#define __DISCRETEDATUM_H
+
+//
+// DiscreteDatum class
+//
+class DiscreteDatum
+{
+   int* states;
+
+   friend class DiscreteMatrix;
+
+public:
+
+   DiscreteDatum();
+   ~DiscreteDatum();
+
+	void CopyFrom( const DiscreteDatum& other );
+};
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretedatum.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretematrix.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretematrix.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretematrix.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,716 @@
+#include "nexusdefs.h"
+#include "discretedatum.h"
+#include "discretematrix.h"
+
+using namespace std;
+
+/**
+ * @class      DiscreteMatrix
+ * @file       discretematrix.h
+ * @file       discretematrix.cpp
+ * @author     Paul O. Lewis
+ * @copyright  Copyright © 1999. All Rights Reserved.
+ * @variable   data [Datum**:public] storage for the data
+ * @variable   ncols [int:public] number of rows (taxa) in the data matrix
+ * @variable   nrows [int:public] number of columns (characters) in the data matrix
+ * @see        AllelesBlock
+ * @see        CharactersBlock
+ * @see        DataBlock
+ * @see        DiscreteDatum
+ * @see        NexusReader
+ *
+ * Class providing storage for the discrete data types (dna, rna, nucleotide,
+ * standard, and protein) inside a DATA or CHARACTERS block.  This class is
+ * also used to store the data for an ALLELES block.  Maintains a matrix in
+ * which each cell is an object of the class DiscreteDatum.  DiscreteDatum
+ * stores the state for a particular combination of taxon and character as
+ * an integer.  Ordinarily, there will be a single state recorded for each
+ * taxon/character combination, but exceptions exist if there is polymorphism
+ * for this taxon/character or if there is uncertainty about the state (e.g.,
+ * in dna data, the data file might have contained an R or Y entry).  Please
+ * consult the documentation for the <a href="DiscreteDatum.html">DiscreteDatum</a>
+ * class for the details about how states are stored.
+ *
+ * <p>For data stored in an ALLELES block, rows of the matrix correspond to
+ * individuals and columns to loci.  Each DiscreteDatum int must therefore
+ * store information about both genes at a single locus for a single individual
+ * in the case of diploid data.  To do this, two macros HIWORD and LOWORD are
+ * used to divide up the int value into two words.  A maximum of 255 distinct
+ * allelic forms can be accommodated by this scheme, assuming at minimum a
+ * 32-bit architecture.  Because it is not known in advance how many rows are
+ * going to be necessary, The DiscreteMatrix class provides the AddRows
+ * method, which expands the number of rows allocated for the matrix while
+ * preserving data already stored.
+ */
+
+/**
+ * @constructor
+ *
+ * Performs the following initializations:
+ * <table>
+ * <tr><th align="left">Variable <th> <th align="left"> Initial Value
+ * <tr><td> nrows   <td>= <td> rows
+ * <tr><td> ncols    <td>= <td> cols
+ * </table>
+ * <p> In addition, memory is allocated for data (each element of the matrix
+ * data is a DiscreteDatum object which can do its own initialization).
+ */
+DiscreteMatrix::DiscreteMatrix( int rows, int cols )	: nrows(rows), ncols(cols)
+{
+	int i;
+
+	data = new DiscreteDatum*[nrows];
+	for( i = 0; i < nrows; i++ )
+		data[i] = new DiscreteDatum[ncols];
+}
+
+/**
+ * @destructor
+ *
+ * Deletes memory allocated in the constructor for data and symbols.
+ */
+DiscreteMatrix::~DiscreteMatrix()
+{
+	int i;
+
+	if( data != NULL ) {
+		for( i = 0; i < nrows; i++ )
+			delete [] data[i];
+		delete [] data;
+	}
+}
+
+/**
+ * @method AddRows [void:private]
+ * @param nAddRows [int] the number of additional rows to allocate
+ *
+ * Allocates memory for nAddRows additional rows and updates the variable
+ * nrows.  Data already stored in data is not destroyed; the newly-allocated
+ * rows are added at the bottom of the existing matrix.
+ */
+void DiscreteMatrix::AddRows( int nAddRows )
+{
+	int i;
+   int new_nrows = nrows + nAddRows;
+	DiscreteDatum** new_data = new DiscreteDatum*[new_nrows];
+	for( i = 0; i < nrows; i++ )
+		new_data[i] = data[i];
+   delete [] data;
+   data = new_data;
+	for( i = nrows; i < new_nrows; i++ )
+		data[i] = new DiscreteDatum[ncols];
+   nrows = new_nrows;
+}
+
+/**
+ * @method AddState [void:public]
+ * @param i [int] the (0-offset) index of the taxon in question
+ * @param j [int] the (0-offset) index of the character in question
+ * @param value [int] the state to be added
+ *
+ * Adds state directly to the DiscreteDatum object at data[i][j].
+ * Assumes i is in the range [0..nrows) and j is in the range [0..ncols).
+ * The value parameter is assumed to be either zero or a positive integer.
+ * Calls private member function AddState to do the real work; look at
+ * the documentation for that function for additional details.
+ */
+void DiscreteMatrix::AddState(  int i, int j, int value )
+{
+	assert( i >= 0 );
+	assert( i < nrows );
+	assert( j >= 0 );
+	assert( j < ncols );
+	assert( data != NULL );
+	assert( value >= 0 );
+
+	AddState( data[i][j], value );
+}
+
+/**
+ * @method AddState [void:private]
+ * @param d [DiscreteDatum&] the DiscreteDatum object affected
+ * @param value [int] the additional state to be added
+ *
+ * Adds an additional state to the array states of d.  If states is NULL,
+ * allocates memory for two integers and assigns 1 to the first and value
+ * to the second.  If states is non-NULL, allocates a new int array long
+ * enough to hold states already present plus the new one being added here,
+ * then deletes the old states array.  Assumes that we are not trying to
+ * set either the missing state or the gap state here; the functions
+ * SetMissing or SetGap, respectively, should be used for those purposes.
+ * Also assumes that we do not want to "overwrite" the state.  This function
+ * adds states to those already present; use SetState to overwrite the state.
+ */
+void DiscreteMatrix::AddState( DiscreteDatum& d, int value )
+{
+	int oldns = GetNumStates(d);
+	int k, newlen;
+
+	int* tmp = d.states;
+
+	if( IsMissing(d) ) {
+		d.states = new int[2];
+		d.states[0] = 1;
+		d.states[1] = value;
+	}
+	else if( IsGap(d) ) {
+		d.states = new int[2];
+		d.states[0] = 1;
+		d.states[1] = value;
+	}
+	else if( oldns == 1 ) {
+		d.states = new int[4];
+		d.states[0] = 2;
+		d.states[1] = tmp[1];
+		d.states[2] = value;
+		d.states[3] = 0;  // assume not polymorphic unless told otherwise
+	}
+	else {
+		newlen = oldns + 3;
+		d.states = new int[newlen];
+		d.states[0] = oldns+1;
+		for( k = 1; k < oldns+1; k++ )
+			d.states[k] = tmp[k];
+		d.states[newlen-2] = value;
+		d.states[newlen-1] = 0;  // assume not polymorphic unless told otherwise
+	}
+
+	if( tmp != NULL )
+		delete [] tmp;
+}
+
+/**
+ * @method CopyStatesFromFirstTaxon [long:public]
+ * @param i [int] the (0-offset) index of the taxon in question
+ * @param j [int] the (0-offset) index of the character in question
+ *
+ * Sets state of taxon i and character j to state of first taxon for character j.
+ * Assumes i is in the range [0..nrows) and j is in the range [0..ncols).
+ * Also assumes both data and symbols are non-NULL.
+ */
+void DiscreteMatrix::CopyStatesFromFirstTaxon( int i, int j )
+{
+	assert( i >= 0 );
+	assert( i < nrows );
+	assert( j >= 0 );
+	assert( j < ncols );
+	assert( data != NULL );
+	
+	data[i][j].CopyFrom( data[0][j] );
+}
+
+/**
+ * @method DebugSaveMatrix [int:public]
+ * @param out [ostream&] the stream on which to dump the matrix contents
+ *
+ * Performs a dump of the current contents of the data matrix stored in
+ * the variable "data"
+ */
+void DiscreteMatrix::DebugSaveMatrix( std::ostream& out, int colwidth /* = 12 */ )
+{
+   out << endl;
+   out << "nrows = " << nrows << endl;
+   out << "ncols = " << ncols << endl;
+   for( int i = 0; i < nrows; i++ ) {
+      for( int j = 0; j < ncols; j++ ) {
+         if( IsMissing(i, j) )
+            out << setw(colwidth) << '?';
+         else if( IsGap(i, j) )
+            out << setw(colwidth) << '-';
+         else
+            out << setw(colwidth) << GetState(i, j);
+      }
+      out << endl;
+   }
+}
+
+/**
+ * @method DuplicateRow [int:public]
+ * @param row [int] the row to be duplicated
+ * @param count [int] the total number of copies needed
+ * @param startCol [int] the starting column (inclusive) in the range of columns to be duplicated
+ * @param endCol [int] the ending column (inclusive) in the range of columns to be duplicated
+ *
+ * Duplicates columns startCol to endCol in row row of the matrix.  If additional
+ * storage is needed to accommodate the duplication, this is done automatically
+ * through the use of the AddRows method.  Note that count includes the row already
+ * present, so if count is 10, then 9 more rows will actually be added to the matrix
+ * to make a total of 10 identical rows.  The parameters startCol and endCol default
+ * to 0 and ncols, so if duplication of the entire row is needed, these need not
+ * be explicitly specified in the call to DuplicateRow.
+ *
+ * <p>Return value is number of additional rows allocated to matrix (0 if no
+ * rows needed to be allocated).
+ */
+int DiscreteMatrix::DuplicateRow( int row, int count
+   , int startCol /* = 0 */, int endCol /* = -1 */ )
+{
+	assert( data != NULL );
+	assert( row >= 0 );
+	assert( row < nrows );
+	assert( startCol >= 0 );
+	assert( startCol < ncols );
+   if( endCol == -1 )
+      endCol = ncols-1;
+	assert( endCol > startCol );
+	assert( endCol < ncols );
+
+   // expand matrix (if necessary) to accommodate additional rows
+   //
+   int nNewRows = 0;
+   if( row + count > nrows ) {
+      nNewRows = row + count - nrows;
+      AddRows( nNewRows );
+   }
+
+   for( int i = 1; i < count; i++ ) {
+      for( int col = startCol; col <= endCol; col++ ) {
+         data[row+i][col] = data[row][col];
+      }
+   }
+
+   return nNewRows;
+}
+
+/**
+ * @method Flush [void:public]
+ *
+ * Deletes all cells of data and resets nrows and ncols to 0.
+ */
+void DiscreteMatrix::Flush()
+{
+	// delete what is there now
+	if( data != NULL )
+	{
+		int i;
+		for( i = 0; i < nrows; i++ )
+			delete [] data[i];
+		delete [] data;
+	}
+
+	nrows = 0;
+	ncols = 0;
+}
+
+/**
+ * @method GetDiscreteDatum [DiscreteDatum&:private]
+ * @param i [int] the row of the matrix
+ * @param j [int] the column of the matrix
+ *
+ * Assumes that i is in the range [0..nrows) and j is in the range [0..ncols).
+ * Returns reference to the DiscreteDatum object at row i, column j of matrix.
+ */
+DiscreteDatum& DiscreteMatrix::GetDiscreteDatum( int i, int j )
+{
+	assert( i >= 0 );
+	assert( i < nrows );
+	assert( j >= 0 );
+	assert( j < ncols );
+	assert( data != NULL );
+
+   return data[i][j];
+}
+
+/**
+ * @method GetNumStates [int:public]
+ * @param i [int] the (0-offset) index of the taxon in question
+ * @param j [int] the (0-offset) index of the character in question
+ *
+ * Returns number of states for taxon i and character j.
+ * Assumes i is in the range [0..nrows) and j is in the range [0..ncols).
+ */
+int DiscreteMatrix::GetNumStates( int i, int j )
+{
+	assert( i >= 0 );
+	assert( i < nrows );
+	assert( j >= 0 );
+	assert( j < ncols );
+	assert( data != NULL );
+
+   return GetNumStates( data[i][j] );
+}
+
+/**
+ * @method GetNumStates [int:private]
+ * @param d [DiscreteDatum&] the datum in question
+ *
+ * Returns total number of states assigned to d.  This function will return
+ * 0 for both gap and missing states.
+ */
+int DiscreteMatrix::GetNumStates( DiscreteDatum& d )
+{
+   if( d.states == NULL )
+      return 0;
+
+	return d.states[0];
+}
+
+/**
+ * @method GetObsNumStates [int:public]
+ * @param j [int] the (0-offset) index of the character in question
+ *
+ * Returns number of states for character j over all taxa.  
+ * Note: this function is rather slow, as it must walk through 
+ * each row, adding the states encountered to a set, then finally  
+ * returning the size of the set.  Thus, if this function is called 
+ * often, it would be advisable to initialize an array using this 
+ * function, then refer to the array subsequently.
+ * Assumes j is in the range [0..ncols).
+ */
+int DiscreteMatrix::GetObsNumStates( int j )
+{
+	assert( j >= 0 );
+	assert( j < ncols );
+	assert( data != NULL );
+
+   std::set< int, std::less<int> > stateset;
+   for( int i = 0; i < nrows; i++ ) {
+      DiscreteDatum& d = data[i][j];
+      int ns = GetNumStates(d);
+      if( ns == 0 ) continue;
+      for( int k = 0; k < ns; k++ )
+         stateset.insert( GetState( d, k ) );
+   }
+
+   return stateset.size();
+}
+
+/**
+ * @method GetState [int:private]
+ * @param i [int] the row of the matrix
+ * @param j [int] the column of the matrix
+ * @param k [int] the state to return (use default of 0 if only one state present)
+ *
+ * Assumes that i is in the range [0..nrows) and j is in the range [0..ncols).
+ * Also assumes that cell i, j holds at least one state (i.e., it is not the
+ * gap or missing states). Use the function GetNumStates to determine the 
+ * number of states present (k must be less than this number).
+ */
+int DiscreteMatrix::GetState( int i, int j, int k /* = 0 */ )
+{
+	assert( i >= 0 );
+	assert( i < nrows );
+	assert( j >= 0 );
+	assert( j < ncols );
+	assert( data != NULL );
+
+	return GetState( data[i][j], k );
+}
+
+/**
+ * @method GetState [int:private]
+ * @param d [DiscreteDatum&] the datum in question
+ * @param i [int] the number of the state
+ *
+ * Returns the internal int representation of the state stored in d
+ * at position i of the array states. Assumes that the state is not the
+ * missing or gap state.  Use IsMissing and IsGap prior to calling
+ * this function to ensure this function will succeed.  The default
+ * value for i is 0, so calling GetState(d) will return the first
+ * state, whether or not there are multiple states stored.  Assumes
+ * that i is in the range [ 0 .. d.states[0] ).
+ */
+int DiscreteMatrix::GetState( DiscreteDatum& d, int i /* = 0 */ )
+{
+   assert( !IsMissing(d) );
+	assert( !IsGap(d) );
+	assert( i >= 0 );
+	assert( i < d.states[0] );
+	return d.states[i+1];
+}
+
+/**
+ * @method IsGap [int:public]
+ * @param i [int] the (0-offset) index of the taxon in question
+ * @param j [int] the (0-offset) index of the character in question
+ *
+ * Returns 1 if the state for taxon i, character j, is set to the
+ * gap symbol, 0 otherwise.  Assumes i is in the range [0..nrows) and j is
+ * in the range [0..ncols).
+ */
+int DiscreteMatrix::IsGap( int i, int j )
+{
+	assert( i >= 0 );
+	assert( i < nrows );
+	assert( j >= 0 );
+	assert( j < ncols );
+	assert( data != NULL );
+
+	return IsGap( data[i][j] );
+}
+
+/**
+ * @method IsGap [int:private]
+ * @param d [DiscreteDatum&] the datum in question
+ *
+ * Returns 1 if the gap state is stored, 0 otherwise.
+ */
+int DiscreteMatrix::IsGap( DiscreteDatum& d )
+{
+   if( d.states == NULL || d.states[0] > 0 )
+      return 0;
+   else
+      return 1;
+}
+
+/**
+ * @method IsMissing [int:public]
+ * @param i [int] the (0-offset) index of the taxon in question
+ * @param j [int] the (0-offset) index of the character in question
+ *
+ * Returns 1 if the state for taxon i, character j, is set to the
+ * missing data symbol, 0 otherwise.  Assumes i is in the range [0..nrows)
+ * and j is in the range [0..ncols).
+ */
+int DiscreteMatrix::IsMissing( int i, int j )
+{
+	assert( i >= 0 );
+	assert( i < nrows );
+	assert( j >= 0 );
+	assert( j < ncols );
+	assert( data != NULL );
+
+   return IsMissing( data[i][j] );
+}
+
+/**
+ * @method IsMissing [int:private]
+ * @param d [DiscreteDatum&] the datum in question
+ *
+ * Returns 1 if the missing state is stored, 0 otherwise.
+ */
+int DiscreteMatrix::IsMissing( DiscreteDatum& d )
+{
+   if( d.states == NULL )
+      return 1;
+   else
+      return 0;
+}
+
+/**
+ * @method IsPolymorphic [int:public]
+ * @param i [int] the (0-offset) index of the taxon in question
+ * @param j [int] the (0-offset) index of the character in question
+ *
+ * Returns 1 if character j is polymorphic in taxon i, 0 otherwise.  Assumes
+ * i is in the range [0..nrows) and j is in the range [0..ncols).
+ */
+int DiscreteMatrix::IsPolymorphic( int i, int j )
+{
+	assert( i >= 0 );
+	assert( i < nrows );
+	assert( j >= 0 );
+	assert( j < ncols );
+	assert( data != NULL );
+
+   return IsPolymorphic( data[i][j] );
+}
+
+/**
+ * @method IsPolymorphic [int:private]
+ * @param d [DiscreteDatum&] the datum in question
+ *
+ * Returns 1 if the number of states is greater than 1 and polymorphism
+ * has been specified.  Returns 0 if the state stored is the missing state,
+ * the gap state, or if the number of states is 1.
+ */
+int DiscreteMatrix::IsPolymorphic( DiscreteDatum& d )
+{
+   if( d.states == NULL || d.states[0] < 2 )
+      return 0;
+
+   int nstates = d.states[0];
+   int ncells = nstates + 2;
+   return d.states[ncells-1];
+}
+
+/**
+ * @method Reset [void:public]
+ * @param rows [int] the new number of rows (taxa)
+ * @param cols [int] the new number of columns (characters)
+ *
+ * Deletes all cells of data and flags and reallocates memory to create
+ * a new matrix object with nrows = rows and ncols = cols.
+ */
+void DiscreteMatrix::Reset( int rows, int cols )
+{
+	int i;
+
+   assert( rows > 0 );
+   assert( cols > 0 );
+
+	// delete what is there now
+	if( data != NULL ) {
+		for( i = 0; i < nrows; i++ )
+			delete [] data[i];
+		delete [] data;
+	}
+
+	nrows = rows;
+	ncols = cols;
+
+	// create new data matrix
+	data = new DiscreteDatum*[nrows];
+	for( i = 0; i < nrows; i++ ) {
+		data[i] = new DiscreteDatum[ncols];
+	}
+}
+
+/**
+ * @method SetGap [void:public]
+ * @param i [int] the (0-offset) index of the taxon in question
+ * @param j [int] the (0-offset) index of the character in question
+ *
+ * Sets state stored at data[i][j] to the gap state.
+ * Assumes i is in the range [0..nrows) and j is in the range
+ * [0..ncols).
+ */
+void DiscreteMatrix::SetGap( int i, int j )
+{
+	assert( i >= 0 );
+	assert( i < nrows );
+	assert( j >= 0 );
+	assert( j < ncols );
+	assert( data != NULL );
+
+	SetGap( data[i][j] );
+}
+
+/**
+ * @method SetGap [void:private]
+ * @param d [DiscreteDatum&] the datum in question
+ *
+ * Assigns the gap state to d, erasing any previously stored information.
+ * The gap state is designated internally as a states array one element
+ * long, with the single element set to the value 0.
+ */
+void DiscreteMatrix::SetGap( DiscreteDatum& d )
+{
+   if( d.states != NULL )
+      delete [] d.states;
+   d.states = new int[1];
+   d.states[0] = 0;
+}
+
+/**
+ * @method SetMissing [void:public]
+ * @param i [int] the (0-offset) index of the taxon in question
+ * @param j [int] the (0-offset) index of the character in question
+ *
+ * Sets state stored at data[i][j] to the missing state.
+ * Assumes i is in the range [0..nrows) and j is in the range
+ * [0..ncols).
+ */
+void DiscreteMatrix::SetMissing( int i, int j )
+{
+	assert( i >= 0 );
+	assert( i < nrows );
+	assert( j >= 0 );
+	assert( j < ncols );
+	assert( data != NULL );
+
+   SetMissing( data[i][j] );
+}
+
+/**
+ * @method SetMissing [void:private]
+ * @param d [DiscreteDatum&] the datum in question
+ *
+ * Assigns the missing state to d, erasing any previously stored information.
+ * The missing state is stored internally as a NULL value for the states array.
+ */
+void DiscreteMatrix::SetMissing( DiscreteDatum& d )
+{
+	if( d.states != NULL )
+		delete [] d.states;
+	d.states = NULL;
+}
+
+/**
+ * @method SetPolymorphic [void:public]
+ * @param value [int] specify 1 if taxon at row i is polymorphic at character in column j, 0 if uncertain which state applies
+ *
+ * Sets polymorphism state of taxon i and character j to value.  Value is
+ * 1 by default, so calling SetPolymorphic(i, j) with no value specified
+ * will set polymorphic to 1 in data[i][j]. Assumes i is in the range [0..nrows)
+ * and j is in the range [0..ncols).  Also assumes that the number of states
+ * stored is greater than 1.
+ */
+void DiscreteMatrix::SetPolymorphic( int i, int j, int value /* = 1 */ )
+{
+	assert( i >= 0 );
+	assert( i < nrows );
+	assert( j >= 0 );
+	assert( j < ncols );
+	assert( data != NULL );
+	assert( value == 0 || value == 1 );
+
+   SetPolymorphic( data[i][j], value );
+}
+
+/**
+ * @method SetPolymorphic [void:private]
+ * @param d [DiscreteDatum&] the datum in question
+ * @param value [int] specify 1 if polymorphic, 0 if uncertain
+ *
+ * Sets the polymorphism cell (last cell in d.states) to value.
+ * Warning: has no effect if there are fewer than 2 states stored!
+ */
+void DiscreteMatrix::SetPolymorphic( DiscreteDatum& d, int value )
+{
+   if( d.states == NULL || d.states[0] < 2 )
+      return;
+
+   int nstates = d.states[0];
+   int ncells = nstates + 2;
+   d.states[ncells-1] = value;
+}
+
+/**
+ * @method SetState [long:public]
+ * @param i [int] the (0-offset) index of the taxon in question
+ * @param j [int] the (0-offset) index of the character in question
+ * @param stateSymbol [char] the state to assign
+ *
+ * Sets state of taxon row and character col to stateSymbol.
+ * Assumes i is in the range [0..nrows) and j is in the range [0..ncols).
+ * Also assumes both data and symbols are non-NULL.  Finally, it is also
+ * assumed that this function will not be called if stateSymbol represents
+ * the missing or gap state, in which case the functions SetMissing or
+ * SetGap, respectively, should be called instead.
+ */
+void DiscreteMatrix::SetState( int i, int j, int value )
+{
+	assert( i >= 0 );
+	assert( i < nrows );
+	assert( j >= 0 );
+	assert( j < ncols );
+	assert( data != NULL );
+
+   SetState( data[i][j], value );
+}
+
+/**
+ * @method SetState [void:private]
+ * @param d [DiscreteDatum&] the datum in question
+ * @param value [int] the value to assign for the state
+ *
+ * Assigns value to the 2nd cell in states (1st cell in states
+ * array set to 1 to indicate that there is only one state).
+ * Warning: if there are already one or more states (including
+ * the gap state) assigned to d, they will be forgotten.  Use
+ * the function AddState if you want to preserve states already
+ * stored in d.  Assumes state being set is not the missing state
+ * nor the gap state; use SetMissing or SetGap, respectively, to
+ * do this.
+ */
+void DiscreteMatrix::SetState( DiscreteDatum& d, int value )
+{
+	if( d.states != NULL )
+		delete [] d.states;
+	d.states = new int[2];
+	d.states[0] = 1;
+	d.states[1] = value;
+}
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretematrix.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretematrix.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretematrix.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretematrix.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,54 @@
+#ifndef __DISCRETEMATRIX_H
+#define __DISCRETEMATRIX_H
+
+//
+// DiscreteMatrix class
+//
+class DiscreteMatrix
+{
+	int nrows;
+	int ncols;
+
+	DiscreteDatum** data;
+
+   friend class CharactersBlock;
+   friend class AllelesBlock;
+
+private:
+   void AddState( DiscreteDatum& d, int value );
+	int  IsGap( DiscreteDatum& d );
+	int  IsMissing( DiscreteDatum& d );
+   int  IsPolymorphic( DiscreteDatum& d );
+   DiscreteDatum& GetDiscreteDatum( int i, int j );
+	int  GetNumStates( DiscreteDatum& d );
+   int  GetState( DiscreteDatum& d, int i = 0 );
+	void SetGap( DiscreteDatum& d );
+	void SetMissing( DiscreteDatum& d );
+   void SetPolymorphic( DiscreteDatum& d, int value );
+   void SetState( DiscreteDatum& d, int value );
+
+public:
+	DiscreteMatrix( int rows, int cols );
+	~DiscreteMatrix();
+
+	void AddRows( int nAddRows );
+	void AddState( int i, int j, int value );
+	void CopyStatesFromFirstTaxon( int i, int j );
+   void DebugSaveMatrix( std::ostream& out, int colwidth = 12 );
+   int  DuplicateRow( int row, int count, int startCol = 0, int endCol = -1 );
+	void Flush();
+	int  GetState( int i, int j, int k = 0 );
+	int  GetNumStates( int i, int j );
+   int  GetObsNumStates( int j );
+	int  IsGap( int i, int j );
+	int  IsMissing( int i, int j );
+	int  IsPolymorphic( int i, int j );
+	void Reset( int rows, int cols );
+   void SetGap( int i, int j );
+   void SetMissing( int i, int j );
+	void SetPolymorphic( int i, int j, int value = 1 );
+	void SetState( int i, int j, int value );
+};
+
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/discretematrix.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancedatum.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancedatum.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancedatum.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,34 @@
+#include "distancedatum.h"
+
+/**
+ * @class      DistanceDatum
+ * @file       distancedatum.h
+ * @file       distancedatum.cpp
+ * @author     Paul O. Lewis
+ * @copyright  Copyright © 1999. All Rights Reserved.
+ * @variable   value [double:private] the pairwise distance value stored
+ * @see        DistancesBlock
+ *
+ * This class stores pairwise distance values. It has no public access functions,
+ * reflecting the fact that it is manipulated strictly by its only friend class,
+ * the DistancesBlock class.
+ */
+
+/**
+ * @constructor
+ *
+ * Default constructor. Initializes value to 0.0 and distanceFlags to 0.
+ */
+DistanceDatum::DistanceDatum() : missing(1), value(0.0)
+{
+}
+
+/**
+ * @destructor
+ *
+ * Does nothing.
+ */
+DistanceDatum::~DistanceDatum()
+{
+}
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancedatum.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancedatum.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancedatum.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancedatum.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,16 @@
+#ifndef __DISTANCEDATUM_H
+#define __DISTANCEDATUM_H
+
+class DistanceDatum
+{
+   double value;
+   int missing;
+
+   friend class DistancesBlock;
+
+public:
+   DistanceDatum();
+   ~DistanceDatum();
+};
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancedatum.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancesblock.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancesblock.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancesblock.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,919 @@
+#include "nexusdefs.h"
+#include "xnexus.h"
+#include "nexustoken.h"
+#include "nexus.h"
+#include "taxablock.h"
+#include "distancedatum.h"
+#include "distancesblock.h"
+
+using namespace std;
+
+/**
+ * @class      DistancesBlock
+ * @file       distancesblock.h
+ * @file       distancesblock.cpp
+ * @author     Paul O. Lewis
+ * @copyright  Copyright © 1999. All Rights Reserved.
+ * @variable   diagonal [int:private] indicates whether the diagonal elements of the matrix will be provided
+ * @variable   interleave [int:private] indicates whether the matrix will be interleaved
+ * @variable   labels [int:private] indicates whether taxon labels are provided in the matrix
+ * @variable   matrix [DistanceDatum**:private] array holding distance data
+ * @variable   missing [char:private] symbol used to indicate missing data
+ * @variable   nchar [int:private] the number of characters used in generating the pairwise distances
+ * @variable   newtaxa [int:private] if 1, new taxa will be defined in the matrix
+ * @variable   ntax [int:private] the number of taxa (determines dimensions of the matrix)
+ * @variable   taxa [TaxaBlock&:private] reference to a TaxaBlock object
+ * @variable   taxonPos [int*:private] array holding 0-offset index into taxa's list of taxon labels
+ * @variable   triangle [int:private] indicates whether matrix is upper triangular, lower triangular, or rectangular
+ * @see        NexusReader
+ * @see        NexusToken
+ * @see        XNexus
+ *
+ * This class handles reading and storage for the Nexus block DISTANCES.
+ * It overrides the member functions Read and Reset, which are abstract
+ * virtual functions in the base class NexusBlock.
+ *
+ * <P> Below is a table showing the correspondence between the elements of a
+ * DISTANCES block and the variables and member functions that can be used
+ * to access each piece of information stored.
+ *
+ * <p><table border=1>
+ * <tr>
+ *   <th> Nexus command
+ *   <th> Nexus subcommand
+ *   <th> Data Members
+ *   <th> Member Functions
+ * <tr>
+ *   <td rowspan=3 align=left> DIMENSIONS
+ *   <td> NEWTAXA
+ *   <td> int <a href="#newtaxa">newtaxa</a>
+ *   <td>
+ * <tr>
+ *   <td> NTAX
+ *   <td> int <a href="#ntax">ntax</a>
+ *   <td> int <a href="#GetNtax">GetNtax()</a>
+ * <tr>
+ *   <td> NCHAR
+ *   <td> int <a href="#ntax">nchar</a>
+ *   <td> int <a href="#GetNchar">GetNchar()</a>
+ * <tr>
+ *   <td rowspan=5 align=left> FORMAT
+ *   <td> TRIANGLE
+ *   <td> int <a href="#triangle">triangle</a>
+ *   <td> int <a href="#GetTriangle">GetTriangle()</a>
+ *        <br> int <a href="#IsUpperTriangular">IsUpperTriangular()</a>
+ *        <br> int <a href="#IsLowerTriangular">IsLowerTriangular()</a>
+ *        <br> int <a href="#IsBoth">IsBoth()</a>
+ * <tr>
+ *   <td> [NO]DIAGONAL
+ *   <td> int <a href="#diagonal">diagonal</a>
+ *   <td> int <a href="#IsDiagonal">IsDiagonal()</a>
+ * <tr>
+ *   <td> [NO]LABELS
+ *   <td> int <a href="#labels">labels</a>
+ *   <td> int <a href="#IsLabels">IsLabels()</a>
+ * <tr>
+ *   <td> MISSING
+ *   <td> char <a href="#missing">missing</a>
+ *   <td> char <a href="#GetMissingSymbol">GetMissingSymbol()</a>
+ * <tr>
+ *   <td> INTERLEAVE
+ *   <td> int <a href="#interleave">interleave</a>
+ *   <td> int <a href="#IsInterleave">IsInterleave()</a>
+ * <tr>
+ *   <td colspan=2 align=left> TAXLABELS
+ *   <td> (stored in TaxaBlock object)
+ *   <td> (access through taxa)
+ * <tr>
+ *   <td colspan=2 align=left> MATRIX
+ *   <td> DistanceDatum** <a href="#matrix">matrix</a>
+ *   <td> double <a href="#GetDistance">GetDistance( i, j )</a>
+ *        <br> int <a href="#IsMissing">IsMissing( i, j )</a>
+ *        <br> void <a href="#SetMissing">SetMissing( i, j )</a>
+ *        <br> void <a href="#SetDistance">SetDistance( i, j, double d )</a>
+ * </table>
+ */
+
+/**
+ * @enumeration
+ * @enumitem  upper [1] matrix is upper-triangular
+ * @enumitem  lower [2] matrix is lower-triangular
+ * @enumitem  both  [3] matrix is rectangular
+ *
+ * For use with the variable triangle.
+ */
+
+/**
+ * @constructor
+ *
+ * Default constructor. Performs the following initializations:
+ * <table>
+ * <tr><th align="left">Variable <th> <th align="left"> Initial Value
+ * <tr><td> id             <td>= <td> "DISTANCES"
+ * <tr><td> diagonal       <td>= <td> 1
+ * <tr><td> interleave     <td>= <td> 0
+ * <tr><td> labels         <td>= <td> 1
+ * <tr><td> matrix         <td>= <td> NULL
+ * <tr><td> missing        <td>= <td> '?'
+ * <tr><td> nchar          <td>= <td> 0
+ * <tr><td> newtaxa        <td>= <td> 0
+ * <tr><td> ntax           <td>= <td> 0
+ * <tr><td> taxonPos       <td>= <td> NULL
+ * <tr><td> triangle       <td>= <td> lower
+ * </table>
+ */
+DistancesBlock::DistancesBlock( TaxaBlock& t ) : taxa(t), NexusBlock()
+{
+   id = "DISTANCES";
+
+   newtaxa     = 0;
+   ntax        = 0;
+   nchar       = 0;
+   diagonal    = 1;
+   triangle    = lower;
+   interleave  = 0;
+   labels      = 1;
+   missing     = '?';
+   matrix      = NULL;
+   taxonPos    = NULL;
+}
+
+/**
+ * @destructor
+ *
+ * Deletes the memory used by id and flushes taxonLabels.
+ */
+DistancesBlock::~DistancesBlock()
+{
+   if( matrix != NULL )
+      delete matrix;
+   if( taxonPos != NULL )
+      delete [] taxonPos;
+}
+
+/**
+ * @method HandleDimensionsCommand [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when DIMENSIONS command needs to be parsed from within the
+ * DISTANCES block.  Deals with everything after the token DIMENSIONS
+ * up to and including the semicolon that terminates the DIMENSIONS
+ * command.
+ */
+void DistancesBlock::HandleDimensionsCommand( NexusToken& token )
+{
+	for(;;)
+	{
+		token.GetNextToken();
+
+      // token should either be ';' or the name of a subcommand
+      //
+		if( token.Equals(";") ) {
+			break;
+		}
+      else if( token.Equals("NEWTAXA") ) {
+         ntax = 0;
+         newtaxa = 1;
+      }
+      else if( token.Equals("NTAX") ) {
+         if( !newtaxa ) {
+      		errormsg = "Must specify NEWTAXA before NTAX if new taxa are being defined";
+      		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+
+         // this should be the equals sign
+   		token.GetNextToken();
+         if( !token.Equals("=") ) {
+      		errormsg = "Expecting '=' but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+      		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+
+         // this should be the number of taxa
+   		token.GetNextToken();
+         ntax = atoi( token.GetToken().c_str() );
+      }
+      else if( token.Equals("NCHAR") ) {
+         // this should be the equals sign
+   		token.GetNextToken();
+         if( !token.Equals("=") ) {
+      		errormsg = "Expecting '=' but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+      		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+
+         // this should be the number of characters
+   		token.GetNextToken();
+         nchar = atoi( token.GetToken().c_str() );
+      }
+	}
+
+   if( ntax == 0 )
+      ntax = taxa.GetNumTaxonLabels();
+}
+
+/**
+ * @method HandleFormatCommand [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when FORMAT command needs to be parsed from within the
+ * DISTANCES block.  Deals with everything after the token FORMAT
+ * up to and including the semicolon that terminates the FORMAT
+ * command.
+ */
+void DistancesBlock::HandleFormatCommand( NexusToken& token )
+{
+	for(;;)
+	{
+		token.GetNextToken();
+
+      // token should either be ';' or the name of a subcommand
+      //
+		if( token.Equals(";") ) {
+			break;
+		}
+      else if( token.Equals("TRIANGLE") ) {
+
+         // this should be the equals sign
+   		token.GetNextToken();
+         if( !token.Equals("=") ) {
+      		errormsg = "Expecting '=' but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+      		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+
+         // this should be LOWER, UPPER, or BOTH
+   		token.GetNextToken();
+         if( token.Equals("LOWER") )
+            triangle = lower;
+         else if( token.Equals("UPPER") )
+            triangle = upper;
+         else if( token.Equals("BOTH") )
+            triangle = both;
+         else {
+      		errormsg = "Expecting UPPER, LOWER, or BOTH but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+      		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+
+      }
+      else if( token.Equals("DIAGONAL") ) {
+         diagonal = 1;
+      }
+      else if( token.Equals("NODIAGONAL") ) {
+         diagonal = 0;
+      }
+      else if( token.Equals("LABELS") ) {
+         labels = 1;
+      }
+      else if( token.Equals("NOLABELS") ) {
+         labels = 0;
+      }
+      else if( token.Equals("INTERLEAVE") ) {
+         interleave = 1;
+      }
+      else if( token.Equals("NOINTERLEAVE") ) {
+         interleave = 0;
+      }
+      else if( token.Equals("MISSING") ) {
+
+         // this should be the equals sign
+   		token.GetNextToken();
+         if( !token.Equals("=") ) {
+      		errormsg = "Expecting '=' but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+      		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+
+         // this should be the missing data symbol
+   		token.GetNextToken();
+         if( token.GetTokenLength() != 1 ) {
+      		errormsg = "Missing data symbol specified (";
+            errormsg += token.GetToken();
+            errormsg += ") is invalid (must be a single character)";
+      		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+         missing = token.GetToken()[0];
+      }
+      else {
+         errormsg = "Token specified (";
+         errormsg += token.GetToken();
+         errormsg += ") is an invalid subcommand for the FORMAT command";
+         throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+      }
+	}
+}
+
+/**
+ * @method HandleNextPass [int:protected]
+ * @param token [NexusToken&] the token we are using for reading the data file
+ * @param offset [int&] the offset (see below)
+ *
+ * Called from within HandleMatrix, this function is used to deal with interleaved
+ * matrices.  It is called once for each pass through the taxa.
+ *
+ * <P>The local variable jmax records the number of columns read in the current
+ * interleaved page and is used to determine the offset used for j in subsequent
+ * pages.
+ */
+int DistancesBlock::HandleNextPass( NexusToken& token, int& offset )
+{
+   int i, j, k, jmax = 0, done = 0;
+
+   int i_first = 0;
+   if( triangle == lower )
+      i_first = offset;
+
+   int i_last  = ntax;
+
+   for( i = i_first; i < i_last; i++ )
+   {
+      // Deal with taxon label if provided
+      //
+      if( labels && ( !newtaxa || offset>0 ) )
+      {
+         do {
+            token.SetLabileFlagBit( NexusToken::newlineIsToken );
+            token.GetNextToken();
+         } while( token.AtEOL() );
+         try {
+            k = taxa.FindTaxon( token.GetToken() );
+            if( taxonPos[i]==-1 )
+               taxonPos[i] = k;
+            else if( taxonPos[i] != k ) {
+               errormsg = "Taxon labeled ";
+               errormsg += token.GetToken();
+               errormsg += " is out of order compared to previous interleave pages";
+               throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+            }
+         }
+         catch (std::out_of_range) {
+            errormsg = "Could not find ";
+            errormsg += token.GetToken();
+            errormsg += " among taxa previously defined";
+            throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+      }
+      else if( labels && newtaxa ) {
+         do {
+            token.SetLabileFlagBit( NexusToken::newlineIsToken );
+            token.GetNextToken();
+         } while( token.AtEOL() );
+         taxa.AddTaxonLabel( token.GetToken() );
+         taxonPos[i] = i;
+      }
+
+      // Now deal with the row of distance values
+      //
+      int true_j = 0;
+      for( j = 0; j < ntax; j++ )
+      {
+         if( i == ntax-1 && j == ntax-1 ) {
+            done = 1;
+         }
+
+         if( i == ntax-1 && true_j == ntax-1 ) {
+            done = 1;
+            break;
+         }
+
+         if( i == ntax-1 && !diagonal && triangle==upper ) {
+            done = 1;
+            break;
+         }
+
+         if( !diagonal && triangle==lower && j == ntax-offset-1) {
+            done = 1;
+            break;
+         }
+
+         token.SetLabileFlagBit( NexusToken::newlineIsToken );
+         token.GetNextToken();
+
+      	if( token.AtEOL() ) {
+            if( j > jmax ) {
+               jmax = j;
+               if( !diagonal && triangle == upper && i >= offset )
+                  jmax++;
+               if( interleave && triangle == upper )
+                     i_last = jmax + offset;
+            }
+            break;
+         }
+
+         true_j = j+offset;
+         if( triangle==upper && i > offset )
+            true_j += ( i - offset );
+         if( !diagonal && triangle==upper && i >= offset )
+            true_j++;
+
+         if( true_j == ntax ) {
+            errormsg = "Too many distances specified in row just read in";
+            throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+
+         std::string t = token.GetToken();
+         if( token.GetTokenLength() == 1 && t[0] == missing )
+            SetMissing( i, true_j );
+         else
+            SetDistance( i, true_j, atof( t.c_str() ) );
+      }
+
+   }
+
+   offset += jmax;
+
+   if( done )
+      return 1;
+   else
+      return 0;
+}
+
+/**
+ * @method HandleMatrixCommand [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when MATRIX command needs to be parsed from within the
+ * DISTANCES block.  Deals with everything after the token MATRIX
+ * up to and including the semicolon that terminates the MATRIX
+ * command.
+ */
+void DistancesBlock::HandleMatrixCommand( NexusToken& token )
+{
+   int i;
+
+   if( ntax == 0 )
+      ntax = taxa.GetNumTaxonLabels();
+   if( ntax == 0 ) {
+      errormsg = "MATRIX command cannot be read if NTAX is zero";
+      throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+   }
+
+   if( triangle == both && !diagonal ) {
+      errormsg = "Cannot specify NODIAGONAL and TRIANGLE=BOTH at the same time";
+      throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+   }
+
+   if( newtaxa )
+      taxa.Reset();
+
+   // allocate memory to hold the taxonPos array
+   //
+   if( taxonPos != NULL )
+      delete [] taxonPos;
+   taxonPos = new int[ntax];
+   for( i = 0; i < ntax; i++ )
+      taxonPos[i] = -1;
+
+   // allocate memory to hold the matrix
+   //
+   if( matrix != NULL )
+      delete matrix;
+   matrix = new DistanceDatum*[ntax];
+   for( i = 0; i < ntax; i++ )
+      matrix[i] = new DistanceDatum[ntax];
+
+   int offset = 0;
+   int done = 0;
+   while( !done ) {
+      done = HandleNextPass( token, offset );
+   }
+
+   // token should be equal to the terminating semicolon
+   token.GetNextToken();
+   if( !token.Equals(";") ) {
+      errormsg = "Expecting ';' to terminate MATRIX command, but found ";
+      errormsg += token.GetToken();
+      errormsg += " instead";
+      throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+   }
+}
+
+/**
+ * @method HandleTaxlabelsCommand [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * Called when TAXLABELS command needs to be parsed from within the
+ * DISTANCES block.  Deals with everything after the token TAXLABELS
+ * up to and including the semicolon that terminates the TAXLABELS
+ * command.
+ */
+void DistancesBlock::HandleTaxlabelsCommand( NexusToken& token )
+{
+	if( !newtaxa ) {
+		errormsg = "NEWTAXA must have been specified in DIMENSIONS command to use the TAXLABELS command in a ";
+      errormsg += id;
+      errormsg += " block";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+   if( ntax == 0 ) {
+      errormsg = "NTAX must be specified before TAXLABELS command";
+      throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+   }
+
+   for( int i = 0; i < ntax; i++ ) {
+      token.GetNextToken();
+      taxa.AddTaxonLabel( token.GetToken() );
+   }
+
+   token.GetNextToken(); // this should be terminating semicolon
+   if( !token.Equals(";") ) {
+      errormsg = "Expecting ';' to terminate TAXLABELS command, but found ";
+      errormsg += token.GetToken();
+      errormsg += " instead";
+      throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+   }
+
+   // OPEN ISSUE: Some may object to setting newtaxa to 0 here, because then the
+   // fact that new taxa were specified in this DISTANCES block rather than in
+   // a preceding TAXA block is lost.  This will only be important if we wish to
+   // recreate the original data file, which I don't anticipate anyone doing with
+   // this code (too difficult to remember all comments, the order of blocks in
+   // the file, etc.)
+
+   newtaxa = 0;
+}
+
+/**
+ * @method Read [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * This function provides the ability to read everything following the block name
+ * (which is read by the Nexus object) to the end or endblock statement.
+ * Characters are read from the input stream in. Overrides the
+ * abstract virtual function in the base class.
+ */
+void DistancesBlock::Read( NexusToken& token )
+{
+   isEmpty = false;
+	token.GetNextToken(); // this should be the semicolon after the block name
+	if( !token.Equals(";") ) {
+		errormsg = "Expecting ';' after ";
+      errormsg += id;
+      errormsg += " block name, but found ";
+      errormsg += token.GetToken();
+      errormsg += " instead";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+	for(;;)
+	{
+		token.GetNextToken();
+
+		if( token.Equals("DIMENSIONS") ) {
+         HandleDimensionsCommand( token );
+		}
+		else if( token.Equals("FORMAT") ) {
+         HandleFormatCommand( token );
+		}
+		else if( token.Equals("TAXLABELS") ) {
+         HandleTaxlabelsCommand( token );
+		}
+		else if( token.Equals("MATRIX") ) {
+         HandleMatrixCommand( token );
+		}
+		else if( token.Equals("END") ) {
+			// get the semicolon following END
+			token.GetNextToken();
+         if( !token.Equals(";") ) {
+				errormsg = "Expecting ';' to terminate the END command, but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+			break;
+		}
+		else if( token.Equals("ENDBLOCK") ) {
+			// get the semicolon following ENDBLOCK
+			token.GetNextToken();
+         if( !token.Equals(";") ) {
+				errormsg = "Expecting ';' to terminate the ENDBLOCK command, but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+			break;
+		}
+		else {
+      	SkippingCommand( token.GetToken() );
+         do {
+            token.GetNextToken();
+         } while( !token.AtEOF() && !token.Equals(";") );
+         if( token.AtEOF() ) {
+				errormsg = "Unexpected end of file encountered";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+		}
+	}
+}
+
+/**
+ * @method Report [void:public]
+ * @param out [ostream&] the output stream to which to write the report
+ *
+ * This function outputs a brief report of the contents of this taxa block.
+ * Overrides the abstract virtual function in the base class.
+ */
+void DistancesBlock::Report( std::ostream& out )
+{
+   int ntaxTotal = ntax;
+   if( ntaxTotal == 0 )
+      ntaxTotal = taxa.GetNumTaxonLabels();
+
+	out << endl;
+	out << id << " block contains ";
+	if( ntaxTotal == 0 ) {
+		out << "no taxa" << endl;
+	}
+	else if( ntaxTotal == 1 )
+		out << "one taxon" << endl;
+	else
+		out << ntaxTotal << " taxa" << endl;
+
+   if( IsLowerTriangular() )
+      out << "  Matrix is lower-triangular" << endl;
+   else if( IsUpperTriangular() )
+      out << "  Matrix is upper-triangular" << endl;
+   else
+      out << "  Matrix is rectangular" << endl;
+
+   if( IsInterleave() )
+      out << "  Matrix is interleaved" << endl;
+   else 
+      out << "  Matrix is non-interleaved" << endl;
+
+   if( IsLabels() )
+      out << "  Taxon labels provided" << endl;
+   else
+      out << "  No taxon labels provided" << endl;
+
+   if( IsDiagonal() )
+      out << "  Diagonal elements specified" << endl;
+   else 
+      out << "  Diagonal elements not specified" << endl;
+
+   out << "  Missing data symbol is " << missing << endl;
+
+	if( ntax == 0 ) return;
+
+   out.setf( ios::floatfield, ios::fixed );
+   out.setf( ios::showpoint );
+	for( int i = 0; i < ntax; i++ )
+   {
+      if( labels )
+         out << setw(20) << taxa.GetTaxonLabel(i);
+      else
+         out << "\t\t";
+      for( int j = 0; j < ntax; j++ )
+      {
+         if( triangle==upper && j < i ) {
+            out << setw(12) << " ";
+         }
+         else if( triangle==lower && j > i )
+            continue;
+         else if( !diagonal && i == j ) {
+            out << setw(12) << " ";
+         }
+         else if( IsMissing( i, j ) )
+            out << setw(12) << missing;
+         else
+            out << setw(12) << setprecision(5) << GetDistance( i, j );
+      }
+      out << endl;
+   }
+}
+
+/**
+ * @method Reset [void:protected]
+ *
+ * Flushes taxonLabels and sets ntax to 0 in preparation for reading a
+ * new TAXA block.
+ */
+void DistancesBlock::Reset()
+{
+   isEmpty     = true;
+   newtaxa     = 0;
+   ntax        = 0;
+   nchar       = 0;
+   diagonal    = 1;
+   triangle    = lower;
+   interleave  = 0;
+   labels      = 1;
+   missing     = '?';
+
+   if( matrix != NULL )
+      delete matrix;
+   matrix = NULL;
+
+   if( taxonPos != NULL )
+      delete taxonPos;
+   taxonPos = NULL;
+}
+
+/**
+ * @method GetNtax [int:public]
+ *
+ * Returns the value of ntax.
+ */
+int DistancesBlock::GetNtax()
+{
+   return ntax;
+}
+
+/**
+ * @method GetNchar [int:public]
+ *
+ * Returns the value of nchar.
+ */
+int DistancesBlock::GetNchar()
+{
+   return nchar;
+}
+
+/**
+ * @method GetDistance [double:public]
+ * @param i [int] the row
+ * @param j [int] the column
+ *
+ * Returns the value of the (i, j)th element of matrix.
+ * Assumes i and j are both in the range [0..ntax)
+ * and the distance stored at matrix[i][j] is not
+ * missing.  Also assumes matrix is not NULL.
+ */
+double DistancesBlock::GetDistance( int i, int j )
+{
+   assert( i >= 0 );
+   assert( i < ntax );
+   assert( j >= 0 );
+   assert( j < ntax );
+   assert( matrix != NULL );
+
+   return matrix[i][j].value;
+}
+
+/**
+ * @method GetMissingSymbol [char:public]
+ *
+ * Returns the value of missing.
+ */
+char DistancesBlock::GetMissingSymbol()
+{
+   return missing;
+}
+
+/**
+ * @method GetTriangle [int:public]
+ *
+ * Returns the value of triangle.
+ */
+int DistancesBlock::GetTriangle()
+{
+   return triangle;
+}
+
+/**
+ * @method IsBoth [int:public]
+ *
+ * Returns 1 if the value of triangle is both, 0 otherwise.
+ */
+int DistancesBlock::IsBoth()
+{
+   return ( triangle == both ? 1 : 0 );
+}
+
+/**
+ * @method IsUpperTriangular [int:public]
+ *
+ * Returns 1 if the value of triangle is upper, 0 otherwise.
+ */
+int DistancesBlock::IsUpperTriangular()
+{
+   return ( triangle == upper ? 1 : 0 );
+}
+
+/**
+ * @method IsLowerTriangular [int:public]
+ *
+ * Returns 1 if the value of triangle is lower, 0 otherwise.
+ */
+int DistancesBlock::IsLowerTriangular()
+{
+   return ( triangle == lower ? 1 : 0 );
+}
+
+/**
+ * @method IsDiagonal [int:public]
+ *
+ * Returns the value of diagonal.
+ */
+int DistancesBlock::IsDiagonal()
+{
+   return diagonal;
+}
+
+/**
+ * @method IsInterleave [int:public]
+ *
+ * Returns the value of interleave.
+ */
+int DistancesBlock::IsInterleave()
+{
+   return interleave;
+}
+
+/**
+ * @method IsLabels [int:public]
+ *
+ * Returns the value of labels.
+ */
+int DistancesBlock::IsLabels()
+{
+   return labels;
+}
+
+/**
+ * @method IsMissing [int:public]
+ * @param i [int] the row
+ * @param j [int] the column
+ *
+ * Returns 1 if the (i,j)th distance is missing.
+ * Assumes i and j are both in the range [0..ntax)
+ * and matrix is not NULL.
+ */
+int DistancesBlock::IsMissing( int i, int j )
+{
+   assert( i >= 0 );
+   assert( i < ntax );
+   assert( j >= 0 );
+   assert( j < ntax );
+   assert( matrix != NULL );
+
+   return ( matrix[i][j].missing );
+}
+
+/**
+ * @method SetDistance [void:public]
+ * @param i [int] the row
+ * @param j [int] the column
+ * @param d [double] the distance value
+ *
+ * Sets the value of the (i,j)th matrix element to d
+ * and the missing flag to 0.
+ * Assumes i and j are both in the range [0..ntax)
+ * and matrix is not NULL.
+ */
+void DistancesBlock::SetDistance( int i, int j, double d )
+{
+   assert( i >= 0 );
+   assert( i < ntax );
+   assert( j >= 0 );
+   assert( j < ntax );
+   assert( matrix != NULL );
+
+   matrix[i][j].value = d;
+   matrix[i][j].missing = 0;
+}
+
+/**
+ * @method SetMissing [void:public]
+ * @param i [int] the row
+ * @param j [int] the column
+ *
+ * Sets the value of the (i,j)th matrix element to missing.
+ * Assumes i and j are both in the range [0..ntax)
+ * and matrix is not NULL.
+ */
+void DistancesBlock::SetMissing( int i, int j )
+{
+   assert( i >= 0 );
+   assert( i < ntax );
+   assert( j >= 0 );
+   assert( j < ntax );
+   assert( matrix != NULL );
+
+   matrix[i][j].missing = 1;
+   matrix[i][j].value = 0.0;
+}
+
+/**
+ * @method SetNchar [void:private]
+ * @param n [int] the number of characters
+ *
+ * Sets nchar to n.
+ */
+void DistancesBlock::SetNchar( int n )
+{
+   nchar = n;
+}
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancesblock.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancesblock.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancesblock.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancesblock.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,56 @@
+#ifndef __DISTANCESBLOCK_H
+#define __DISTANCESBLOCK_H
+
+class DistancesBlock : public NexusBlock
+{
+   TaxaBlock& taxa;
+
+   int newtaxa;
+   int ntax;
+   int nchar;
+
+   int diagonal;
+   int interleave;
+   int labels;
+
+   int triangle;
+   enum { upper = 1, lower = 2, both = 3 };
+
+   char missing;
+
+   DistanceDatum** matrix;
+   int* taxonPos;
+
+protected:
+   void HandleDimensionsCommand( NexusToken& token );
+   void HandleFormatCommand( NexusToken& token );
+   void HandleMatrixCommand( NexusToken& token );
+   int  HandleNextPass( NexusToken& token, int& offset );
+   void HandleTaxlabelsCommand( NexusToken& token );
+   void Read( NexusToken& token );
+   void Reset();
+
+public:
+   DistancesBlock( TaxaBlock& t );
+   virtual ~DistancesBlock();
+
+   double GetDistance( int i, int j );
+   char   GetMissingSymbol();
+   int    GetNchar();
+   int    GetNtax();
+   int    GetTriangle();
+   int    IsBoth();
+   int    IsDiagonal();
+   int    IsInterleave();
+   int    IsLabels();
+   int    IsLowerTriangular();
+   int    IsMissing( int i, int j );
+   int    IsUpperTriangular();
+   void   Report( std::ostream& out );
+   void   SetDistance( int i, int j, double d );
+   void   SetMissing( int i, int j );
+   void   SetNchar( int i );
+};
+
+#endif
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/distancesblock.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexus.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexus.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexus.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,398 @@
+#include "nexusdefs.h"
+#include "xnexus.h"
+#include "nexustoken.h"
+#include "nexus.h"
+
+#define NCL_NAME_AND_VERSION  "NCL version 2.01"
+#define NCL_COPYRIGHT         "Copyright (c) 2000 by Paul O. Lewis"
+#ifdef __BORLANDC__
+	#define NCL_HOMEPAGEURL       "http:\/\/lewis.eeb.uconn.edu\/lewishome\/software.html"
+#else
+	#define NCL_HOMEPAGEURL       "http://lewis.eeb.uconn.edu/lewishome/software.html"
+#endif
+
+/**
+ * @class      Nexus
+ * @file       nexus.h
+ * @file       nexus.cpp
+ * @author     Paul O. Lewis
+ * @copyright  Copyright © 1999. All Rights Reserved.
+ * @variable   blockList [NexusBlock*:protected] pointer to first block in list of blocks
+ * @see        NexusBlock
+ * @see        NexusReader
+ * @see        NexusToken
+ * @see        XNexus
+ *
+ * This is the class that orchestrates the reading of a Nexus data file.
+ * An object of this class should be created, and objects of any block classes
+ * that are expected to be needed should be added to blockList using the Add
+ * member function. The Execute member function is then called, which reads the
+ * data file until encountering a block name, at which point the correct block
+ * is looked up in blockList and that object's Read method called.
+ */
+
+/**
+ * @constructor
+ *
+ * Default constructor
+ * Initializes the blockList data member to NULL.
+ */
+Nexus::Nexus() : blockList(NULL)
+{
+}
+
+/**
+ * @destructor
+ *
+ * Does nothing.
+ */
+Nexus::~Nexus()
+{
+}
+
+/**
+ * @method Add [void:public]
+ * @param newBlock [NexusBlock*] a pointer to an existing block object
+ *
+ * Adds newBlock to the end of the list of NexusBlock objects growing
+ * from blockList.  If blockList points to NULL, this function sets
+ * blockList to point to newBlock. Calls SetNexus method of newBlock
+ * to inform newBlock of the Nexus object that now owns it.  This 
+ * is useful when the newBlock object needs to communicate with the
+ * outside world through the Nexus object, such as when it issues
+ * progress reports as it is reading the contents of its block.
+ */
+void Nexus::Add( NexusBlock* newBlock )
+{
+	assert( newBlock != NULL );
+
+	newBlock->SetNexus(this);
+	if( !blockList )
+		blockList = newBlock;
+	else {
+		// add new block to end of list
+		NexusBlock* curr;
+		for( curr = blockList; curr && curr->next; )
+			curr = curr->next;
+		assert( curr && !curr->next );
+		curr->next = newBlock;
+	}
+}
+
+/**
+ * @method BlockListEmpty [bool:public]
+ *
+ * If blockList data member still equals NULL, returns true;
+ * otherwise, returns false.  The blockList will not be equal
+ * to NULL if the Add function has been called to add a block
+ * object to the list.
+ */
+bool Nexus::BlockListEmpty()
+{
+	return ( blockList == NULL ? true : false );
+}
+
+/**
+ * @method DebugReportBlock [virtual void:protected]
+ * @param nexusBlock [NexusBlock&] the block that should be reported
+ *
+ * This function was created for purposes of debugging a new NexusBlock.
+ * This version does nothing; to create an active DebugReportBlock function,
+ * override this version in the derived class and call the Report function
+ * of nexusBlock.  This function is called whenever the main Nexus Execute function
+ * encounters the [&spillall] command comment between blocks in the data file.
+ * The Execute function goes through all blocks and passes them, in turn, to this
+ * DebugReportBlock function so that their contents are displayed. Placing the
+ * [&spillall] command comment between different versions of a block allows
+ * multiple blocks of the same type to be tested using one long data file.
+ * Say you are interested in testing whether the normal, transpose, and
+ * interleave format of a matrix can all be read correctly.  If you put three
+ * versions of the block in the data file one after the other, the second one
+ * will wipe out the first, and the third one will wipe out the second, unless
+ * you have a way to report on each one before the next one is read.  This
+ * function provides that ability.
+ */
+void Nexus::DebugReportBlock( NexusBlock& /* nexusBlock */ )
+{
+   // Derive me and uncomment the following line in the derived version
+   // nexusBlock.Report(out);
+	// Note that your derived Nexus object must have its own ostream object (out)
+}
+
+/**
+ * @method Detach [void:public]
+ * @param oldBlock [NexusBlock*] a pointer to an existing block object
+ *
+ * Detaches oldBlock from the list of NexusBlock objects growing
+ * from blockList.  If blockList itself points to oldBlock, this
+ * function sets blockList to point to oldBlock->next.
+ * Note: oldBlock is not deleted, it is simple detached from the
+ * linked list. No harm is done in Detaching a block pointer
+ * that has already been detached previously; if oldBlock is
+ * not found in the block list, Detach simply returns quietly.
+ * If oldBlock is found, its SetNexus object is called to set
+ * the Nexus pointer to NULL, indicating that it is no longer
+ * owned by (i.e., attached to) a Nexus object.
+ */
+void Nexus::Detach( NexusBlock* oldBlock )
+{
+   assert( oldBlock != NULL );
+   
+	// Should call BlockListEmpty function first to make sure
+	// there are blocks to detach
+	//
+   assert( blockList != NULL );
+   
+	if( blockList == oldBlock ) {
+		blockList = oldBlock->next;
+  	   oldBlock->SetNexus(NULL);
+	}
+	else {
+		// try to find oldBlock in list and detach if found
+		NexusBlock* curr = blockList;
+		NexusBlock* currNext = blockList->next;
+		for( ; currNext != NULL && currNext != oldBlock; ) {
+			currNext = currNext->next;
+		}
+		if( currNext == oldBlock ) {
+			curr->next = currNext->next;
+   	   currNext->next = NULL;
+   	   oldBlock->SetNexus(NULL);
+      }
+	}
+}
+
+/**
+ * @method EnteringBlock [virtual void:public]
+ * @param blockName [char*] the name of the block being entered
+ *
+ * This function is called when a block named blockName has just
+ * been entered and is about to be read.  Override this pure virtual
+ * function to provide an indication of progress as the Nexus file
+ * is being read.
+ */
+//	virtual void EnteringBlock( char* blockName ) = 0;
+
+/**
+ * @method Execute [void:public]
+ * @param token [NexusToken&] the token object used to grab Nexus tokens
+ * @param notifyStartStop [bool] if true, ExecuteStarting and ExecuteStopping will be called (true by default)
+ *
+ * Reads the Nexus data file from the input stream provided by token.  This function
+ * is responsible for reading through the name of a each block.  Once
+ * it has read a block name, it searches blockList for a block object
+ * to handle reading the remainder of the block's contents. The block
+ * object is responsible for reading the end or endblock command as well
+ * as the trailing semicolon.  This function also handles reading
+ * comments that are outside of blocks, as well as the initial #NEXUS
+ * keyword.  The notifyStartStop argument is provided in case you do not
+ * wish the ExecuteStart and ExecuteStop functions to be called.  These functions
+ * are primarily used for creating and destroying a dialog box to show progress,
+ * and nested Execute calls can thus cause problems (e.g., a dialog box is
+ * destroyed when the inner Execute calls ExecuteStop and the outer Execute
+ * still expects the dialog box to be available).  Specifying notifyStartStop
+ * false for all the nested Execute calls thus allows the outermost Execute call
+ * to control creation and destruction of the dialog box.
+ */
+void Nexus::Execute( NexusToken& token, bool notifyStartStop /* = true */ )
+{
+	char id_str[256];
+	
+	bool disabledBlock = false;
+	nxsstring errormsg;
+
+   try {
+   	token.GetNextToken();
+   }
+   catch( XNexus x ) {
+      NexusError( token.errormsg, 0, 0, 0 );
+      return;
+   }
+   
+	if( !token.Equals("#NEXUS") ) {
+      errormsg = "Expecting #NEXUS to be the first token in the file, but found ";
+      errormsg += token.GetToken();
+      errormsg += " instead";
+		NexusError( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+      return;
+	}
+	
+	if( notifyStartStop )
+		ExecuteStarting();
+	
+	for(;;)
+	{
+		token.SetLabileFlagBit( NexusToken::saveCommandComments );
+
+		token.GetNextToken();
+		
+		if( token.AtEOF() )
+			break;
+
+		if( token.Equals("BEGIN") )
+		{
+			disabledBlock = false;
+			token.GetNextToken();
+
+			NexusBlock* curr;
+			for( curr = blockList; curr != NULL; curr = curr->next )
+			{
+				if( !token.Equals( curr->GetID() ) )
+					continue;
+
+				if( !curr->IsEnabled() ) {
+					disabledBlock = true;
+					SkippingDisabledBlock( token.GetToken() );
+					continue;
+				}
+
+				strcpy( id_str, curr->GetID().c_str() );
+				EnteringBlock( id_str /*curr->GetID()*/ );
+            curr->Reset();
+				try {
+					curr->Read( token );
+				}
+				catch( XNexus x ) {
+					NexusError( curr->errormsg, x.pos, x.line, x.col );
+	            curr->Reset();
+               return;
+				}
+				ExitingBlock( id_str /*curr->GetID()*/ );
+				break;
+			}
+
+			if( curr == NULL )
+			{
+				token.BlanksToUnderscores();
+            nxsstring currBlock = token.GetToken();
+				if( !disabledBlock ) 
+					SkippingBlock( currBlock );
+				for(;;)
+				{
+					token.GetNextToken();
+					if( token.Equals("END") || token.Equals("ENDBLOCK") ) {
+						token.GetNextToken();
+						if( !token.Equals(";") ) {
+							errormsg = "Expecting ';' after END or ENDBLOCK command, but found ";
+                     errormsg += token.GetToken();
+                     errormsg += " instead";
+							NexusError( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+                     return;
+						}
+						break;
+					}
+					if( token.AtEOF() ) {
+						errormsg = "Encountered end of file before END or ENDBLOCK in block ";
+                  errormsg += currBlock;
+						NexusError( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+                  return;
+					}
+				}
+			} // if token not found amongst known block IDs
+		} // if token equals BEGIN
+
+		else if( token.Equals("&SHOWALL") ) {
+
+			NexusBlock* curr;
+			for( curr = blockList; curr != NULL; curr = curr->next )
+			{
+				DebugReportBlock(*curr);
+			}
+
+		}
+
+		else if( token.Equals("&LEAVE") ) {
+         break;
+		}
+
+	} // for(;;)
+	
+	if( notifyStartStop )
+		ExecuteStopping();
+}
+
+/**
+ * @method NCLCopyrightNotice [char*:public]
+ *
+ * Returns a string containing the copyright notice
+ * for the Nexus Class Library, useful for
+ * reporting the use of this library by programs
+ * that interact with the user.
+ */
+char* Nexus::NCLCopyrightNotice()
+{
+	return NCL_COPYRIGHT;
+}
+
+/**
+ * @method NCLHomePageURL [char*:public]
+ *
+ * Returns a string containing the URL for the
+ * Nexus Class Library Home Page on the World
+ * Wide Web.
+ */
+char* Nexus::NCLHomePageURL()
+{
+	return NCL_HOMEPAGEURL;
+}
+
+/**
+ * @method NCLNameAndVersion [char*:public]
+ *
+ * Returns a string containing the name and current
+ * version of the Nexus Class Library, useful for
+ * reporting the use of this library by programs
+ * that interact with the user.
+ */
+char* Nexus::NCLNameAndVersion()
+{
+	return NCL_NAME_AND_VERSION;
+}
+
+/**
+ * @method NexusError [virtual void:public]
+ * @param msg [nxsstring&] the error message to be displayed
+ * @param pos [streampos] the current file position
+ * @param line [long] the current file line
+ * @param col [long] the current column within the current file line
+ *
+ * This function is called whenever there is an error detected while reading
+ * a Nexus file.  Override this pure virtual function to display the error
+ * message in the most appropriate way for the platform you are supporting.
+ */
+//	virtual void NexusError( nxsstring& msg, std::streampos pos, long line, long col ) = 0;
+
+/**
+ * @method OutputComment [virtual void:public]
+ * @param comment [nxsstring] a comment to be shown on the output
+ *
+ * This function may be used to report progess while reading through
+ * a file. For example, the AllelesBlock class uses this function to
+ * report the name of the population it is currently reading so the
+ * user doesn't think the program has hung on large data sets.
+ */
+//	virtual void OutputComment( nxsstring comment ) = 0;
+	
+/**
+ * @method SkippingBlock [virtual void:public]
+ * @param blockName [nxsstring] the name of the block being skipped
+ *
+ * This function is called when an unknown block named blockName is
+ * about to be skipped.  Override this pure virtual function to
+ * provide an indication of progress as the Nexus file is being read.
+ */
+//	virtual void SkippingBlock( nxsstring blockName ) = 0;
+
+/**
+ * @method SkippingDisabledBlock [virtual void:public]
+ * @param blockName [nxsstring] the name of the disabled block being skipped
+ *
+ * This function is called when a disabled block named blockName is
+ * encountered in a NEXUS data file being executed. Override this pure
+ * virtual function to handle this event in an appropriate manner.  For
+ * example, the program may wish to inform the user that a data block
+ * was encountered in what is supposed to be a tree file.
+ */
+//	virtual void SkippingDisabledBlock( nxsstring blockName ) = 0;
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexus.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexus.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexus.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexus.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,81 @@
+#ifndef __NEXUS_H
+#define __NEXUS_H
+
+class Nexus;
+
+//
+// NexusBlock class
+//
+class NexusBlock
+{
+	friend class Nexus;
+
+protected:
+	bool isEmpty;
+	bool isEnabled;
+	Nexus* nexus;
+	NexusBlock* next;
+	nxsstring id;
+
+	virtual void Read( NexusToken& token ) = 0;
+	virtual void Reset() = 0;
+
+public:
+	nxsstring errormsg;
+
+	NexusBlock();
+	virtual ~NexusBlock();
+	
+	void SetNexus( Nexus* nxsptr );
+
+	nxsstring GetID();
+	bool IsEmpty();
+	
+	void Enable();
+	void Disable();
+	bool IsEnabled();
+
+   virtual int CharLabelToNumber( nxsstring s );
+   virtual int TaxonLabelToNumber( nxsstring s );
+
+	virtual void SkippingCommand( nxsstring commandName );
+	virtual void Report( std::ostream& out ) = 0;
+};
+
+//
+// Nexus class
+//
+class Nexus
+{
+
+protected:
+	NexusBlock* blockList;
+
+public:
+	Nexus();
+	virtual ~Nexus();
+
+	bool BlockListEmpty();
+	void Add( NexusBlock* newBlock );
+	void Detach( NexusBlock* newBlock );
+	void Execute( NexusToken& token, bool notifyStartStop = true );
+
+	virtual void DebugReportBlock( NexusBlock& nexusBlock );
+	
+	char* NCLNameAndVersion();
+	char* NCLCopyrightNotice();
+	char* NCLHomePageURL();
+
+	// hooks implemented as pure virtual functions
+	virtual void ExecuteStarting() = 0;
+	virtual void ExecuteStopping() = 0;
+	virtual void EnteringBlock( nxsstring blockName ) = 0;
+	virtual void ExitingBlock( nxsstring blockName ) = 0;
+	virtual void OutputComment( nxsstring comment ) = 0;
+	virtual void NexusError( nxsstring& msg, std::streampos pos, long line, long col ) = 0;
+	virtual void SkippingDisabledBlock( nxsstring blockName ) = 0;
+	virtual void SkippingBlock( nxsstring blockName ) = 0;
+};
+
+#endif
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexus.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexusblock.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexusblock.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexusblock.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,206 @@
+#include "nexusdefs.h"
+#include "nexustoken.h"
+#include "nexus.h"
+
+/**
+ * @class      NexusBlock
+ * @file       nexus.h
+ * @file       nexusblock.cpp
+ * @author     Paul O. Lewis
+ * @copyright  Copyright © 1999. All Rights Reserved.
+ * @variable   isDisabled [bool:private] true if this block is currently disabled
+ * @variable   isEmpty [bool:private] true if this object is currently storing data
+ * @variable   next [NexusBlock*:protected] pointer to next block in list
+ * @variable   id [nxsstring:protected] holds name of block (e.g., "DATA", "TREES", etc.)
+ * @see        Nexus
+ * @see        NexusReader
+ * @see        NexusToken
+ *
+ * This is the base class from which all Nexus block classes are derived.
+ * The abstract virtual function Read must be overridden for each derived
+ * class to provide the ability to read everything following the block name
+ * (which is read by the Nexus object) to the end or endblock statement.
+ * Derived classes must provide their own data storage and access functions.
+ */
+
+/**
+ * @constructor
+ *
+ * Default constructor
+ * Initializes 'next' and 'nexus' data members to NULL, and 'isEmpty' and
+ * 'isEnabled' to true.
+ */
+NexusBlock::NexusBlock() : next(NULL), nexus(NULL), isEmpty(true), isEnabled(true)
+{
+}
+
+/**
+ * @destructor
+ *
+ * Does nothing.
+ */
+NexusBlock::~NexusBlock()
+{
+}
+
+/**
+ * @method CharLabelToNumber [int:protected]
+ * @param s [nxsstring] the character label to be translated to character number
+ *
+ * This base class version simply returns -1, but a derived class should
+ * override this function if it needs to construct and run a SetReader
+ * object to read a set involving characters.  The SetReader object may
+ * need to use this function to look up a character label encountered in
+ * the set.  A class that overrides this method should return the
+ * character index in the range [1..nchar]; i.e., add one to the 0-offset
+ * index.
+ */
+int NexusBlock::CharLabelToNumber( nxsstring /*s*/ )
+{
+   return 0;
+}
+
+/**
+ * @method Disable [void:public]
+ *
+ * Sets the value of isEnabled to false.  A NexusBlock
+ * can be disabled (by calling this method) if blocks of that type 
+ * are to be skipped during execution of the nexus file.  
+ * If a disabled block is encountered, the virtual 
+ * Nexus::SkippingDisabledBlock function is called.
+ */
+void NexusBlock::Disable()
+{
+   isEnabled = false;
+}
+
+/**
+ * @method Enable [void:public]
+ *
+ * Sets the value of isEnabled to true.  A NexusBlock
+ * can be disabled (by calling Disable) if blocks of that type 
+ * are to be skipped during execution of the nexus file.  
+ * If a disabled block is encountered, the virtual 
+ * Nexus::SkippingDisabledBlock function is called.
+ */
+void NexusBlock::Enable()
+{
+   isEnabled = true;
+}
+
+/**
+ * @method IsEnabled [bool:public]
+ *
+ * Returns value of isEnabled, which can be controlled through
+ * use of the Enable and Disable member functions.  A NexusBlock
+ * should be disabled if blocks of that type are to be skipped
+ * during execution of the nexus file.  If a disabled block is
+ * encountered, the virtual Nexus::SkippingDisabledBlock function
+ * is called.
+ */
+bool NexusBlock::IsEnabled()
+{
+   return isEnabled;
+}
+
+/**
+ * @method IsEmpty [bool:public]
+ *
+ * Returns true if Read function has not been called since the last Reset.
+ * This base class version simply returns the value of the data member
+ * isEmpty.  If you derive a new block class from NexusBlock, be sure
+ * to set isEmpty to true in your Reset function and isEmpty to false in your
+ * Read function.
+ */
+bool NexusBlock::IsEmpty()
+{
+   return isEmpty;
+}
+
+/**
+ * @method Read [virtual void:protected]
+ * @param token [NexusToken&] the NexusToken to use for reading block
+ * @param in [istream&] the input stream from which to read
+ *
+ * This abstract virtual function must be overridden for each derived
+ * class to provide the ability to read everything following the block name
+ * (which is read by the Nexus object) to the end or endblock statement.
+ * Characters are read from the input stream in.  Note that to get output
+ * comments displayed, you must derive a class from NexusToken, override
+ * the member function OutputComment to display a supplied comment, and
+ * then pass a reference to an object of the derived class to this function.
+ */
+//	virtual void Read( NexusToken& token, istream& in ) = 0;
+
+/**
+ * @method Reset [virtual void:protected]
+ *
+ * This abstract virtual function must be overridden for each derived
+ * class to completely reset the block object in preparation for reading
+ * in another block of this type.  This function is called by the Nexus
+ * object just prior to calling the block object's Read function.
+ */
+//	virtual void Reset() = 0;
+
+/**
+ * @method GetID [nxsstring:public]
+ *
+ * Returns the id nxsstring.
+ */
+nxsstring NexusBlock::GetID()
+{
+	return id;
+}
+
+/**
+ * @method Report [virtual void:public]
+ * @param out [ostream&] the output stream to which the report is sent
+ *
+ * Provides a brief report of the contents of the block.
+ */
+//	virtual void Report( ostream& out ) = 0;
+
+/**
+ * @method SetNexus [virtual void:public]
+ * @param nxsptr [Nexus*] pointer to a Nexus object
+ *
+ * Sets the nexus data member of the NexusBlock object to
+ * nxsptr.
+ */
+void NexusBlock::SetNexus( Nexus* nxsptr )
+ {
+ 	nexus = nxsptr;
+ }
+ 
+/**
+ * @method SkippingCommand [virtual void:public]
+ * @param commandName [nxsstring] the name of the command being skipped
+ *
+ * This function is called when an unknown command named commandName is
+ * about to be skipped.  This version of the function does nothing (i.e.,
+ * no warning is issued that a command was unrecognized.  Override this
+ * virtual function in a derived class to provide such warnings to the
+ * user.
+ */
+void NexusBlock::SkippingCommand( nxsstring /* commandName */ )
+{
+}
+
+/**
+ * @method TaxonLabelToNumber [int:protected]
+ * @param s [nxsstring] the taxon label to be translated to a taxon number
+ *
+ * This base class version simply returns 0, but a derived class should
+ * override this function if it needs to construct and run a SetReader
+ * object to read a set involving taxa.  The SetReader object may
+ * need to use this function to look up a taxon label encountered in
+ * the set.  A class that overrides this method should return the
+ * taxon index in the range [1..ntax]; i.e., add one to the 0-offset
+ * index.
+ */
+int NexusBlock::TaxonLabelToNumber( nxsstring /*s*/ )
+{
+   return 0;
+}
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexusblock.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexusdefs.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexusdefs.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexusdefs.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,75 @@
+#ifndef __NEXUSDEFS_H
+#define __NEXUSDEFS_H
+
+// maximum number of states that can be stored; the only limitation is that this
+// number be less than the maximum size of an int (not likely to be a problem).
+// A good number for this is 76, which is 96 (the number of distinct symbols
+// able to be input from a standard keyboard) less 20 (the number of symbols
+// symbols disallowed by the Nexus standard for use as state symbols)
+//
+#define NCL_MAX_STATES         76
+
+#ifdef __BORLANDC__
+	#if __BORLANDC__ < 0x550 
+		#ifdef __MINMAX_DEFINED
+		    #undef __MINMAX_DEFINED
+		#endif
+	    #pragma warn -pch
+	    #pragma warn .pch
+	#endif
+#endif
+
+#include <stdexcept>
+#include <algorithm>
+#include <string>
+#include <vector>
+#include <set>
+#include <map>
+#include <iostream>
+#include <fstream>
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <iomanip>
+#include <assert.h>
+
+// lines below needed for access function
+#if defined( __BORLANDC__ )
+#  include <io.h>
+#else
+#  include <unistd.h>
+#endif
+
+#if (defined __BORLANDC__ || defined __MWERKS__)
+	using namespace std;
+#endif
+
+
+
+
+#include "nxsstring.h"
+
+typedef std::vector<bool> BoolVect;
+typedef std::vector<int> IntVect;
+typedef std::vector<nxsstring> LabelList;
+typedef std::set< int,std::less<int> > IntSet;
+typedef std::map< int, LabelList, std::less<int> > LabelListBag;
+typedef std::map< nxsstring, nxsstring, std::less<nxsstring> > AssocList;
+typedef std::map< nxsstring, IntSet, std::less<nxsstring> > IntSetMap;
+typedef std::vector<LabelList> AllelesVect;
+
+struct stri_equal : public std::binary_function<nxsstring,nxsstring,bool> {
+   bool operator()(const nxsstring& x, const nxsstring& y) const;
+};
+
+#if __BORLANDC__ < 0x550
+	// Redefine __MINMAX_DEFINED so Windows header files compile
+	#ifndef __MINMAX_DEFINED
+    		#define __MINMAX_DEFINED
+	#endif
+#endif
+
+#endif
+
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexusdefs.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexustoken.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexustoken.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexustoken.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,1098 @@
+#include "nexusdefs.h"
+#include "xnexus.h"
+#include "nexustoken.h"
+
+using namespace std;
+
+/**
+ * @class      NexusToken
+ * @file       nexustoken.h
+ * @file       nexustoken.cpp
+ * @author     Paul O. Lewis
+ * @copyright  Copyright © 1999. All Rights Reserved.
+ * @variable   atEOF [bool:private] true if last character read resulted in eof() returning true for input stream
+ * @variable   atEOL [bool:private] true if newline encountered while newlineIsToken labile flag set
+ * @variable   comment [nxsstring:private] temporary buffer used to store output comments while they are being built
+ * @variable   filecol [long:private] current column in current line (refers to column immediately following token just read)
+ * @variable   fileline [long:private] current file line
+ * @variable   filepos [long:private] current file position (for Metrowerks compiler, type is streampos rather than long)
+ * @variable   in [istream&:private] reference to input stream from which tokens will be read
+ * @variable   labileFlags [int:private] storage for labile flags (see labile enum)
+ * @variable   saved [char:private] either '\0' or is last character read from input stream
+ * @variable   special [char:private] ad hoc punctuation character; default value is '\0'
+ * @variable   token [nxsstring:private] the character buffer used to store the current token
+ * @see        NexusReader
+ * @see        XNexus
+ *
+ * This class is used to read tokens from a Nexus data file.  If the token
+ * object is not attached to an input stream, calls to GetNextToken will have no
+ * effect. If the token object is not attached to an output stream, output
+ * comments will be discarded (i.e., not output anywhere) and calls to Write
+ * or Writeln will be ineffective.  If input and output streams have been
+ * attached to the token object, however, tokens are read one at a time from
+ * the input stream, and comments are correctly read and either written to
+ * the output stream (if an output comment) or ignored (if not an output
+ * comment). Sequences of characters surrounded by single quotes are read in
+ * as single tokens.  A pair of adjacent single quotes are stored as a single
+ * quote, and underscore characters are stored as blanks.
+ */
+
+/**
+ * @enumeration
+ * @enumitem  saveCommandComment [0x0001] if set, command comments of the form [&X] are not ignored but are instead saved as regular tokens (without the square brackets, however)
+ * @enumitem  parentheticalToken [0x0002] if set, and if next character encountered is a left parenthesis, token will include everything up to the matching right parenthesis
+ * @enumitem  curlyBracketedToken [0x0004] if set, and if next character encountered is a left curly bracket, token will include everything up to the matching right curly bracket
+ * @enumitem  doubleQuotedToken [0x0008] if set, grabs entire phrase surrounded by double quotes
+ * @enumitem  singleCharacterToken [0x0010] if set, next non-whitespace character returned as token
+ * @enumitem  newlineIsToken [0x0020] if set, newline character treated as a token and atEOL set if newline encountered
+ * @enumitem  tildeIsPunctuation [0x0040] if set, tilde character treated as punctuation and returned as a separate token
+ * @enumitem  useSpecialPunctuation [0x0080] if set, "special" character treated as punctuation and returned as a separate token
+ *
+ * For use with the variable labileFlags.
+ */
+
+/**
+ * @constructor
+ * @param i [istream&] the istream object to which the token is to be associated
+ *
+ * Performs the following initializations:
+ * <table>
+ * <tr><th align="left">Variable <th> <th align="left"> Initial Value
+ * <tr><td> atEOF         <td>= <td> false
+ * <tr><td> atEOL         <td>= <td> false
+ * <tr><td> comment       <td>= <td> ""
+ * <tr><td> filecol       <td>= <td> 1L
+ * <tr><td> fileline      <td>= <td> 1L
+ * <tr><td> filepos       <td>= <td> 0L
+ * <tr><td> in            <td>= <td> i
+ * <tr><td> labileFlags   <td>= <td> 0
+ * <tr><td> saved         <td>= <td> '\0'
+ * <tr><td> special       <td>= <td> '\0'
+ * <tr><td> token         <td>= <td> ""
+ * </table>
+ */
+NexusToken::NexusToken( std::istream& i ) : in(i)
+{
+	atEOF       = false;
+	atEOL       = false;
+	comment     = "";
+	filecol     = 1L;
+	fileline    = 1L;
+	filepos     = 0L;
+	labileFlags = 0;
+	saved       = '\0';
+	special     = '\0';
+	token       = "";
+}
+
+/**
+ * @destructor
+ *
+ * Nothing needs to be done, since all objects take care of that delete themselves.
+ */
+NexusToken::~NexusToken()
+{
+}
+
+/**
+ * @method AppendToComment [void:protected]
+ * @param ch [char] character to be appended to comment
+ *
+ * Adds ch to end of comment nxsstring.  
+ */
+void NexusToken::AppendToComment( char ch )
+{
+   comment += ch;
+}
+
+/**
+ * @method AppendToToken [void:protected]
+ * @param ch [char] character to be appended to token
+ *
+ * Adds ch to end of current token.
+ */
+void NexusToken::AppendToToken( char ch )
+{
+	// first three lines proved necessary to keep
+   // Borland's implementation of STL from crashing
+   // under some circumstances
+	char s[2];
+   s[0] = ch;
+   s[1] = '\0';
+
+   token += s;
+}
+
+/**
+ * @method GetNextChar [char:protected]
+ * @throws XNexus
+ *
+ * Reads next character from in and does all of the following before
+ * returning it to the calling function:
+ * <ul>
+ * <li> if character read is either a carriage return or line feed,
+ *   the variable line is incremented by one and the variable col is
+ *   reset to zero
+ * <li> if character read is a carriage return, and a peek at the next
+ *   character to be read reveals that it is a line feed, then the
+ *   next (line feed) character is read
+ * <li> if either a carriage return or line feed is read, the character
+ *   returned to the calling function is '\n'
+ * <li> if character read is neither a carriage return nor a line feed,
+ *   col is incremented by one and the character is returned as is to the
+ *   calling function
+ * <li> in all cases, the variable filepos is updated using a call to
+ *   the tellg function of istream.
+ * </ul>
+ */
+char NexusToken::GetNextChar()
+{
+	int ch;
+	ch = in.get();
+	int failed = in.bad();
+	if( failed ) {
+		errormsg = "Unknown error reading data file (check to make sure file exists)";
+		throw XNexus( errormsg );
+	}
+
+	if( ch == 13 || ch == 10 )
+	{
+		fileline++;
+		filecol = 1L;
+
+		if( ch == 13 && (int)in.peek() == 10 )
+			ch = in.get();
+
+		atEOL = 1;
+	}
+	else if( ch == EOF )
+		atEOF = 1;
+	else {
+		filecol++;
+		atEOL = 0;
+	}
+
+	filepos = in.tellg();
+
+   if( atEOF )
+      return '\0';
+   else if( atEOL )
+      return '\n';
+   else
+   	return (char)ch;
+}
+
+/**
+ * @method GetComment [void:protected]
+ *
+ * Reads rest of comment (starting '[' already input) and acts accordingly.
+ * If comment is an output comment, and if an output stream has been attached,
+ * writes the output comment to the output stream.  Otherwise, output comments
+ * are simply ignored like regular comments. If the labileFlag bit saveCommandComments
+ * is in effect, the comment (without the square brackets) will be stored in token.
+ */
+void NexusToken::GetComment()
+{
+	// Set comment level to 1 initially.  Every ']' encountered reduces
+	// level by one, so that we know we can stop when level becomes 0.
+	int level = 1;
+
+	// get first character
+	char ch = GetNextChar();
+	if( atEOF ) {
+		errormsg = "Unexpected end of file inside comment";
+		throw XNexus( errormsg, GetFilePosition(), GetFileLine(), GetFileColumn() );
+	}
+
+	// see if first character is the output comment symbol ('!')
+	// or command comment symbol (&)
+	int printing = 0;
+	int command = 0;
+	if( ch == '!' )
+		printing = 1;
+	else if( ch == '&' && labileFlags & saveCommandComments ) {
+		command = 1;
+		AppendToToken(ch);
+	}
+
+	// now read the rest of the comment
+	for(;;)
+	{
+		ch = GetNextChar();
+		if( atEOF ) break;
+
+		if( ch == ']' )
+			level--;
+		else if( ch == '[' )
+			level++;
+
+		if( level == 0 )
+			break;
+
+		if( printing )
+			AppendToComment(ch);
+		else if( command )
+			AppendToToken(ch);
+	}
+
+	if( printing ) {
+		// allow output comment to be printed or displayed in most appropriate
+		// manner for target operating system
+		OutputComment( comment );
+
+		// now that we are done with it, free the memory used to store the comment
+		comment = "";
+	}
+}
+
+/**
+ * @method GetCurlyBracketedToken [void:protected]
+ *
+ * Reads rest of a token surrounded with curly brackets (the starting '{'
+ * has already been input) up to and including the matching '}' character.
+ * All nested curly-bracketed phrases will be included.
+ */
+void NexusToken::GetCurlyBracketedToken()
+{
+	// Set level to 1 initially.  Every '}' encountered reduces
+	// level by one, so that we know we can stop when level becomes 0.
+	int level = 1;
+
+	char ch;
+	for(;;)
+	{
+		ch = GetNextChar();
+		if( atEOF )	break;
+
+		if( ch == '}' )
+			level--;
+		else if( ch == '{' )
+			level++;
+
+		AppendToToken(ch);
+
+		if( level == 0 )
+			break;
+	}
+}
+
+/**
+ * @method GetDoubleQuotedToken [void:protected]
+ *
+ * Gets remainder of a double-quoted Nexus word (the first double quote character
+ * was read in already by GetNextToken). This function reads characters until
+ * the next double quote is encountered.  Tandem double quotes within
+ * a double-quoted Nexus word are not allowed and will be treated as the end
+ * of the first word and the beginning of the next double-quoted Nexus word.
+ * Tandem single quotes inside a double-quoted Nexus word are saved as two
+ * separate single quote characters; to embed a single quote inside a
+ * double-quoted Nexus word, simply use the single quote by itself (not
+ * paired with another tandem single quote).
+ */
+void NexusToken::GetDoubleQuotedToken()
+{
+	char ch;
+
+	for(;;)
+	{
+		ch = GetNextChar();
+		if( atEOF )	break;
+
+		if( ch == '\"' ) {
+			break;
+		}
+		else if( ch == '_' )	{
+			ch = ' ';
+			AppendToToken(ch);
+		}
+		else
+			AppendToToken(ch);
+
+	}
+}
+
+/**
+ * @method GetQuoted [void:protected]
+ *
+ * Gets remainder of a quoted Nexus word (the first single quote character
+ * was read in already by GetNextToken). This function reads characters until
+ * the next single quote is encountered.  An exception occurs if two single
+ * quotes occur one after the other, in which case the function continues
+ * to gather characters until an isolated single quote is found.  The tandem
+ * quotes are stored as a single quote character in the token nxsstring.
+ */
+void NexusToken::GetQuoted()
+{
+	char ch;
+
+	for(;;)
+	{
+		ch = GetNextChar();
+		if( atEOF )	break;
+
+		if( ch == '\'' && saved == '\'' ) {
+			// paired single quotes, save as one single quote
+			AppendToToken(ch);
+			saved = '\0';
+		}
+		else if( ch == '\'' && saved == '\0' )
+		{
+			// save the single quote to see if it is followed by another
+			saved = '\'';
+		}
+		else if( saved == '\'' )
+		{
+			// previously read character was single quote but this is
+			// something else, save current character so that it will
+			// be the first character in the next token read
+			saved = ch;
+			break;
+		}
+		else if( ch == '_' )
+		{
+			//JAC 19/04/2005 - for proper Nexus compatability in quoted identifiers
+			// (in nexus, HELLO_TEST == 'HELLO TEST' != 'HELLO_TEST'.. wierdly).
+			ch = '_';
+			AppendToToken(ch);
+		}
+		else
+			AppendToToken(ch);
+
+	}
+}
+
+/**
+ * @method GetParentheticalToken [void:protected]
+ *
+ * Reads rest of parenthetical token (starting '(' already input) up to and
+ * including the matching ')' character.  All nested parenthetical phrases
+ * will be included.
+ */
+void NexusToken::GetParentheticalToken()
+{
+	// Set level to 1 initially.  Every ')' encountered reduces
+	// level by one, so that we know we can stop when level becomes 0.
+	int level = 1;
+
+   char ch;
+	for(;;)
+	{
+		ch = GetNextChar();
+		if( atEOF )	break;
+
+		if( ch == ')' )
+			level--;
+		else if( ch == '(' )
+			level++;
+
+      AppendToToken(ch);
+
+		if( level == 0 )
+			break;
+	}
+	
+	// rdmp
+	if (labileFlags & toEndOfTree)
+	{
+		// This method is used to read Newick tree decsriptions, but these may extend beyond the
+		// last ')' (e.g., information on branch length for the root node). This next hack keeps
+		// reading until we hit the semicolon
+		while (in.peek() != ';')
+		{
+			ch = in.get();
+			AppendToToken (ch);
+		}
+	}
+	
+}
+
+/**
+ * @method IsPunctuation [bool:protected]
+ * @param ch [char] the character in question
+ *
+ * Returns true if character supplied is considered a punctuation character.
+ * The following twenty characters are considered punctuation characters unless
+ * otherwise indicated below: '(', ')', '[', ']', '{', '}', '/', '\\', ',', ';',
+ * ':', '=', '*', '\'', '"', '`', '+', '-', '<' and '>'.  
+ * <p>Exceptions:
+ * <ul>
+ * <li> The tilde character ('~') is also considered punctuation if the 
+ *      tildeIsPunctuation labile flag is set
+ * <li> The special punctuation character (specified using the 
+ *      SetSpecialPunctuationCharacter) is also considered punctuation if the 
+ *      useSpecialPunctuation labile flag is set
+ * <li> The hyphen (i.e., minus sign) character ('-') is <i>not</i> considered 
+ *      punctuation if the hyphenNotPunctuation labile flag is set
+ * </ul>
+ * Use the SetLabileFlagBit method to set one or more labile flags.
+ */
+bool NexusToken::IsPunctuation( char ch )
+{
+	char punctuation[21];
+	punctuation[0]  = '(';
+	punctuation[1]  = ')';
+	punctuation[2]  = '[';
+	punctuation[3]  = ']';
+	punctuation[4]  = '{';
+	punctuation[5]  = '}';
+	punctuation[6]  = '/';
+	punctuation[7]  = '\\';
+	punctuation[8]  = ',';
+	punctuation[9]  = ';';
+	punctuation[10] = ':';
+	punctuation[11] = '=';
+	punctuation[12] = '*';
+	punctuation[13] = '\'';
+	punctuation[14] = '"';
+	punctuation[15] = '`';
+	punctuation[16] = '+';
+	punctuation[17] = '-';
+	punctuation[18] = '<';
+	punctuation[19] = '>';
+	punctuation[20] = '\0';
+
+   bool is_punctuation = false;
+   if( strchr( punctuation, ch ) != NULL )
+      is_punctuation = true;
+   if( labileFlags & tildeIsPunctuation  && ch == '~' )
+      is_punctuation = true;
+   if( labileFlags & useSpecialPunctuation  && ch == special )
+      is_punctuation = true;
+   if( labileFlags & hyphenNotPunctuation  && ch == '-' )
+      is_punctuation = false;
+   return is_punctuation;
+}
+
+/**
+ * @method IsWhitespace [bool:protected]
+ * @param ch [char] the character in question
+ *
+ * Returns true if character supplied is considered a whitespace character.
+ * Note: treats '\n' as darkspace if labile flag newlineIsToken is in effect.
+ */
+bool NexusToken::IsWhitespace( char ch )
+{
+	char whitespace[4];
+	whitespace[0]  = ' ';
+	whitespace[1]  = '\t';
+	whitespace[2]  = '\n';
+	whitespace[3]  = '\0';
+
+	bool ws = false;
+
+	// if ch is found in the whitespace array, it's whitespace
+	//
+	if( strchr( whitespace, ch ) != NULL )
+		ws = true;
+
+	// unless of course ch is the newline character and we're currently
+	// treating newlines as darkspace!
+	//
+	if( labileFlags & newlineIsToken && ch == '\n' )
+		ws = false;
+
+	return ws;
+}
+
+/**
+ * @method Abbreviation [bool:public]
+ * @param s [nxsstring] the comparison string
+ *
+ * Returns true if token begins with the capitalized portion of s
+ * and, if token is longer than s, the remaining characters match
+ * those in the lower-case portion of s.  The comparison is case
+ * insensitive.  This function should be used instead of the 
+ * Begins function if you wish to allow for abbreviations of commands
+ * and also want to ensure that user does not type in a word that
+ * does not correspond to any command.
+ */
+bool NexusToken::Abbreviation( nxsstring s )
+{
+	int k;
+	int slen = s.size();
+	int tlen = token.size();
+	char tokenChar, otherChar;
+
+	// The variable mlen refers to the "mandatory" portion
+	// that is the upper-case portion of s
+	//
+	int mlen;
+	for( mlen = 0; mlen < slen; mlen++ ) {
+		if( !isupper(s[mlen]) )	break;
+	}
+	
+	// User must have typed at least mlen characters in
+	// for there to even be a chance at a match
+	//
+	if( tlen < mlen )
+		return false;
+	
+	// If user typed in more characters than are contained in s,
+	// then there must be a mismatch
+	//
+	if( tlen > slen )
+		return false;
+	
+	// Check the mandatory portion for mismatches
+	//
+	for( k = 0; k < mlen; k++ )
+	{
+  		tokenChar = (char)toupper( token[k] );
+  		otherChar = s[k];
+		if( tokenChar != otherChar )
+			return false;
+	}
+	
+	// Check the auxiliary portion for mismatches (if necessary)
+	//
+	for( k = mlen; k < tlen; k++ )
+	{
+  		tokenChar = (char)toupper( token[k] );
+  		otherChar = (char)toupper( s[k] );
+		if( tokenChar != otherChar )
+			return false;
+	}
+
+	return true;
+}
+
+/**
+ * @method AtEOF [bool:public]
+ *
+ * Returns true if and only if last call to GetNextToken
+ * encountered the end-of-file character (or for some reason
+ * the input stream is now out of commission).
+ */
+bool NexusToken::AtEOF()
+{
+	return atEOF;
+}
+
+/**
+ * @method AtEOL [bool:public]
+ *
+ * Returns true if and only if last call to GetNextToken
+ * encountered the newline character while the newlineIsToken
+ * labile flag was in effect
+ */
+bool NexusToken::AtEOL()
+{
+	return atEOL;
+}
+
+/**
+ * @method BlanksToUnderscores [void:public]
+ *
+ * Converts all blanks in token to underscore characters. Normally,
+ * underscores found in the tokens read from a NEXUS file are converted
+ * to blanks automatically as they are read; this function reverts
+ * the blanks back to underscores.
+ */
+void NexusToken::BlanksToUnderscores()
+{
+	char tmp[256];
+	int len = token.length();
+	assert( len < 256 );
+	strcpy( tmp, token.c_str() );
+	for( int i = 0; i < len; i++ ) {
+		if( tmp[i] == ' ' )
+			tmp[i] = '_';	
+	}
+	token = tmp;
+}
+	
+/**
+ * @method Begins [bool:public]
+ * @param s [nxsstring] the comparison string
+ * @param respect_case [bool] determines whether comparison is case sensitive (false by default)
+ *
+ * Returns true if token nxsstring begins with the nxsstring s.
+ * The comparison is case insensitive by default.  This function should
+ * be used instead of the Equals function if you wish to
+ * allow for abbreviations of commands.
+ */
+bool NexusToken::Begins( nxsstring s, bool respect_case /* = false */  )
+{
+	int k;
+	char tokenChar, otherChar;
+
+	int slen = s.size();
+	if( slen > token.size() )
+		return false;
+
+	for( k = 0; k < slen; k++ )
+	{
+      if( respect_case ) {
+         tokenChar = token[k];
+         otherChar = s[k];
+      }
+      else {
+   		tokenChar = (char)toupper( token[k] );
+   		otherChar = (char)toupper( s[k] );
+      }
+		if( tokenChar != otherChar )
+			return false;
+	}
+
+	return true;
+}
+
+/**
+ * @method Equals [bool:public]
+ * @param s [nxsstring] the comparison string
+ * @param respect_case [bool] determines whether or not comparison is case sensitive (default is false)
+ *
+ * Returns true if token nxsstring exactly equals s.  The comparison
+ * is case insensitive by default.  If abbreviations are to be allowed,
+ * either Begins or Abbreviation should be used instead of Equals.
+ */
+bool NexusToken::Equals( nxsstring s, bool respect_case /* = false */ )
+{
+	int k;
+	char tokenChar, otherChar;
+
+	int slen = s.size();
+	if( slen != token.size() )
+		return false;
+
+	for( k = 0; k < token.size(); k++ )
+	{
+      if( respect_case ) {
+         tokenChar = token[k];
+         otherChar = s[k];
+      }
+      else {
+   		tokenChar = (char)toupper( token[k] );
+   		otherChar = (char)toupper( s[k] );
+      }
+		if( tokenChar != otherChar )
+			return false;
+	}
+
+	return true;
+}
+
+/**
+ * @method GetFileColumn [void:public]
+ *
+ * Returns value stored in filecol, which keeps track of the current
+ * column in the data file (i.e., number of characters since the last
+ * new line was encountered).
+ */
+long  NexusToken::GetFileColumn()
+{
+	return filecol;
+}
+
+/**
+ * @method GetFilePosition [streampos:public]
+ *
+ * Returns value stored in filepos, which keeps track of the current
+ * position in the data file (i.e., number of characters since the
+ * beginning of the file).  Note: for Metrowerks compiler, you must use the
+ * offset() method of the streampos class to use the value returned.
+ */
+std::streampos  NexusToken::GetFilePosition()
+{
+	return filepos;
+}
+
+/**
+ * @method GetFileLine [long:public]
+ *
+ * Returns value stored in fileline, which keeps track of the current
+ * line in the data file (i.e., number of new lines encountered thus far).
+ */
+long  NexusToken::GetFileLine()
+{
+	return fileline;
+}
+
+/**
+ * @method GetNextToken [void:public]
+ * @throws XNexus
+ *
+ * Reads characters from in until a complete token has been read and
+ * stored in token.
+ * <p>GetNextToken performs a number of useful operations in the process
+ * of retrieving tokens:
+ * <ul>
+ * <li> any underscore characters encountered are stored as blank spaces
+ * <li> if the first character of the next token is an isolated single
+ * quote, then the entire quoted nxsstring is saved as the next token
+ * <li> paired single quotes are automatically converted to single quotes
+ * before being stored
+ * <li> comments are handled automatically (normal comments are treated as
+ * whitespace and output comments are passed to the function OutputComment
+ * which does nothing in the NexusToken class but can be overridden in a
+ * derived class to handle these in an appropriate fashion)
+ * <li> leading whitespace (including comments) is automatically skipped
+ * <li> if the end of the file is reached on reading this token, the
+ * atEOF flag is set and may be queried using the AtEOF member function
+ * <li> punctuation characters are always returned as individual tokens
+ * (see the Maddison, Swofford, and Maddison paper for the definition of
+ * punctuation characters)
+ * </ul>
+ * <p>The behavior of GetNextToken may be altered by using labile flags.
+ * For example, the labile flag saveCommandComments can be set using
+ * the member function SetLabileFlagBit.  This will cause comments
+ * of the form [&X] to be saved as tokens (without the square brackets),
+ * but only for the aquisition of the next token.  Labile flags are cleared
+ * after each application.
+ */
+void NexusToken::GetNextToken()
+{
+	ResetToken();
+
+	char ch = ' ';
+	if( saved == '\0' || IsWhitespace(saved) )
+	{
+		// skip leading whitespace
+		while( IsWhitespace(ch) && !atEOF )
+			ch = GetNextChar();
+		saved = ch;
+	}
+
+	for(;;)
+	{
+		// break now if singleCharacterToken mode on and token length > 0
+		if( labileFlags & singleCharacterToken && token.size() > 0 )
+			break;
+
+		// get next character either from saved or from input stream
+		if( saved != '\0' ) {
+			ch = saved;
+			saved = '\0';
+		}
+		else
+			ch = GetNextChar();
+
+		// break now if we've hit EOF
+		if( atEOF )	break;
+
+		if( ch == '\n' && labileFlags & newlineIsToken ) {
+         if( token.size() > 0 ) {
+            // newline came after token, save newline until
+            // next time when it will be reported as a separate
+            // token
+            atEOL = 0;
+            saved = ch;
+         }
+         else {
+            atEOL = 1;
+            AppendToToken(ch);
+         }
+			break;
+		}
+
+		else if( IsWhitespace(ch) )
+		{
+			// break only if we've begun adding to token
+			// (remember, if we hit a comment before a token,
+			// there might be further white space between the comment and
+			// the next token)
+			if( token.size() > 0 )
+				break;
+		}
+
+		else if( ch == '_' )
+		{
+			ch = ' ';
+			AppendToToken(ch);
+		}
+
+		else if( ch == '[' )
+		{
+			// get rest of comment and deal with it, but notice
+			// that we only break if the comment ends a token,
+			// not if it starts one (comment counts as whitespace)
+			//
+			// in the case of command comments (if saveCommandComment) GetComment will
+			// add to the token nxsstring, causing us to break because
+			// token.size() will be greater than 0
+			GetComment();
+			if( token.size() > 0 )
+				break;
+		}
+
+		else if( ch == '(' && labileFlags & parentheticalToken )
+		{
+			AppendToToken(ch);
+
+			// get rest of parenthetical token
+			GetParentheticalToken();
+			break;
+		}
+
+		else if( ch == '{' && labileFlags & curlyBracketedToken )
+		{
+			AppendToToken(ch);
+
+			// get rest of curly-bracketed token
+			GetCurlyBracketedToken();
+			break;
+		}
+
+		else if( ch == '\"' && labileFlags & doubleQuotedToken )
+		{
+			// get rest of double-quoted token
+			GetDoubleQuotedToken();
+			break;
+		}
+
+		else if( ch == '\'' )
+		{
+			if( token.size() > 0 ) {
+            // we've encountered a single quote after a token has
+            // already begun to be read; should be another tandem
+            // single quote character immediately following
+   			ch = GetNextChar();
+            if( ch == '\'' )
+      			AppendToToken(ch);
+            else {
+               errormsg = "Expecting second single quote character";
+               throw XNexus( errormsg, GetFilePosition(), GetFileLine(), GetFileColumn() );
+            }
+         }
+         else {
+   			// get rest of quoted Nexus word and break, since
+	   		// we will have eaten one token after calling GetQuoted
+		   	GetQuoted();
+         }
+			break;
+		}
+
+		else if( IsPunctuation(ch) )
+		{
+			if( token.size() > 0 )
+			{
+				// if we've already begun reading the token, encountering
+				// a punctuation character means we should stop, saving
+				// the punctuation character for the next token
+				saved = ch;
+				break;
+			}
+
+			else
+			{
+				// if we haven't already begun reading the token, encountering
+				// a punctuation character means we should stop and return
+				// the punctuation character as this token (i.e., the token
+				// is just the single punctuation character
+				AppendToToken(ch);
+				break;
+			}
+		}
+
+		else
+		{
+			AppendToToken(ch);
+		}
+
+	}
+
+	labileFlags = 0;
+}
+
+/**
+ * @method GetToken [nxsstring:public]
+ * @param respect_case [bool] determines whether token is converted to upper case before being returned
+ *
+ * Returns the token nxsstring. Specifying false for respect_case parameter causes all
+ * characters in token to be converted to upper case before token nxsstring is returned.  Specifying
+ * true (default) results in GetToken returning exactly what it read from the file.
+ */
+nxsstring NexusToken::GetToken( bool respect_case /* = true */ )
+{
+   if( !respect_case )
+      ToUpper();
+	return token;
+}
+
+/**
+ * @method GetTokenLength [int:public]
+ *
+ * Returns token.size().
+ */
+int NexusToken::GetTokenLength()
+{
+	return token.size();
+}
+
+/**
+ * @method IsPlusMinusToken [bool:public]
+ *
+ * Returns true if current token is a single character and this character
+ * is either '+' or '-'.
+ */
+bool NexusToken::IsPlusMinusToken()
+{
+	if( token.size() == 1 && ( token[0] == '+' || token[0] == '-' )  )
+		return true;
+	else
+		return false;
+}
+
+/**
+ * @method IsPunctuationToken [bool:public]
+ *
+ * Returns true if current token is a single character and this character
+ * is a punctuation character (as defined in IsPunctuation function).
+ */
+bool NexusToken::IsPunctuationToken()
+{
+	if( token.size() == 1 && IsPunctuation( token[0] ) )
+		return true;
+	else
+		return false;
+}
+
+/**
+ * @method IsWhitespaceToken [bool:public]
+ *
+ * Returns true if current token is a single character and this character
+ * is a whitespace character (as defined in IsWhitespace function).
+ */
+bool NexusToken::IsWhitespaceToken()
+{
+	if( token.size() == 1 && IsWhitespace( token[0] ) )
+		return true;
+	else
+		return false;
+}
+
+/**
+ * @method ReplaceToken [void:public]
+ * @param s [const nxsstring] nxsstring to replace current token nxsstring
+ *
+ * Replaces current token nxsstring with s.
+ */
+void NexusToken::ReplaceToken( const nxsstring s )
+{
+   token = s;
+}
+
+/**
+ * @method ResetToken [void:public]
+ *
+ * Sets token to the empty nxsstring ("").
+ */
+void NexusToken::ResetToken()
+{
+   token = "";
+}
+
+/**
+ * @method SetSpecialPunctuationCharacter [void:public]
+ * @param c [char] the character to which special is set
+ *
+ * Sets the special punctuation character to c.  If the labile bit
+ * useSpecialPunctuation is set, this character will be added to the
+ * standard list of punctuation symbols, and will be returned as a
+ * separate token like the other punctuation characters.
+ */
+void NexusToken::SetSpecialPunctuationCharacter( char c )
+{
+   special = c;
+}
+
+/**
+ * @method SetLabileFlagBit [void:public]
+ * @param bit [int] the bit (see enum) to set in labileFlags
+ *
+ * Sets the bit specified in the variable labileFlags.  The available
+ * bits are specified in the enumeration starting with saveCommandComments.
+ * All bits in labileFlags are cleared after each token is read.
+ */
+void NexusToken::SetLabileFlagBit( int bit )
+{
+   labileFlags |= bit;
+}
+
+/**
+ * @method StoppedOn [void:public]
+ * @param ch [char] the character to compare with saved character
+ *
+ * Checks character stored in the variable saved to see if it
+ * matches supplied character ch.  Good for checking such things
+ * as whether token stopped reading characters because it encountered
+ * a newline (and labileFlags bit newlineIsToken was set):
+ * <p>StoppedOn('\n');
+ * <p>or whether token stopped reading characters because of a
+ * punctuation character such as a comma:
+ * <p>StoppedOn(',');
+ */
+bool NexusToken::StoppedOn( char ch )
+{
+   if( saved == ch )
+      return true;
+   else
+      return false;
+}
+
+/**
+ * @method StripWhitespace [void:public]
+ *
+ * Strips whitespace from currently-stored token.  Removes leading,
+ * trailing, and embedded whitespace characters.
+ */
+void NexusToken::StripWhitespace()
+{
+	nxsstring s = "";
+	for( int j = 0; j < token.size(); j++ ) {
+		if( IsWhitespace( token[j] ) ) continue;
+		s += token[j];
+	}
+	token = s;
+}
+
+/**
+ * @method ToUpper [void:public]
+ *
+ * Converts all alphabetical characters in token to upper case.
+ */
+void NexusToken::ToUpper()
+{
+   for( int i = 0; i < token.size(); i++ )
+      token[i] = (char)toupper( token[i] );
+}
+
+/**
+ * @method Write [void:public]
+ * @param out [ostream&] the output stream to which to write token nxsstring
+ *
+ * Simply outputs the current nxsstring stored in token to the output
+ * stream out.  Does not send a newline to the output stream afterwards.
+ */
+void NexusToken::Write( std::ostream& out )
+{
+	out << token;
+}
+
+/**
+ * @method Writeln [void:public]
+ * @param out [ostream&] the output stream to which to write token nxsstring
+ *
+ * Simply outputs the current nxsstring stored in token to the output
+ * stream out.  Sends a newline to the output stream afterwards.
+ */
+void NexusToken::Writeln( std::ostream& out )
+{
+	out << token << endl;
+}
+
+/**
+ * @method OutputComment [virtual void:public]
+ * @param msg [nxsstring&] the output comment to be displayed
+ *
+ * This function is called whenever an output comment (i.e., a comment
+ * beginning with an exclamation point) is found in the data file.
+ * This version of OutputComment does nothing; override this virtual
+ * function to display the output comment in the most appropriate way
+ * for the platform you are supporting.
+ */
+void NexusToken::OutputComment( nxsstring& /* msg */ )
+{
+}
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexustoken.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexustoken.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexustoken.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexustoken.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,93 @@
+#ifndef __NEXUSTOKEN_H
+#define __NEXUSTOKEN_H
+
+//
+// NexusToken class
+//
+class NexusToken
+{
+	std::istream&   in;
+	int        newlineType;
+
+#if defined( __MWERKS__ )
+	long       filepos;
+#else
+	std::streampos  filepos;
+#endif
+	
+	long       fileline;
+	long       filecol;
+
+	nxsstring     token;
+	nxsstring     comment;
+
+	char       saved;
+	bool       atEOF;
+	bool       atEOL;
+
+   char       special;
+
+	int        labileFlags;
+
+protected:
+
+	void AppendToComment( char ch );
+	void AppendToToken( char ch );
+	char GetNextChar();
+	void GetComment();
+	void GetCurlyBracketedToken();
+	void GetDoubleQuotedToken();
+	void GetQuoted();
+	void GetParentheticalToken();
+	bool IsPunctuation( char ch );
+	bool IsWhitespace( char ch );
+
+public:
+	enum {
+		saveCommandComments   = 0x0001,
+		parentheticalToken    = 0x0002,
+		curlyBracketedToken   = 0x0004,
+		doubleQuotedToken     = 0x0008,
+		singleCharacterToken  = 0x0010,
+		newlineIsToken        = 0x0020,
+		tildeIsPunctuation    = 0x0040,
+		useSpecialPunctuation = 0x0080,
+		hyphenNotPunctuation  = 0x0100,
+		toEndOfTree           = 0x0200
+	};
+
+   nxsstring errormsg;
+
+	NexusToken( std::istream& i );
+	virtual ~NexusToken();
+
+	bool       AtEOF();
+	bool       AtEOL();
+	bool       Abbreviation( nxsstring s );
+	bool       Begins( nxsstring s, bool respect_case = false );
+	void       BlanksToUnderscores();
+	bool       Equals( nxsstring s, bool respect_case = false );
+	long       GetFileColumn();
+	std::streampos  GetFilePosition();
+	long       GetFileLine();
+	void       GetNextToken();
+	nxsstring  GetToken( bool respect_case = true );
+	int        GetTokenLength();
+	bool       IsPlusMinusToken();
+	bool       IsPunctuationToken();
+	bool       IsWhitespaceToken();
+	void       ReplaceToken( const nxsstring s );
+	void       ResetToken();
+	void       SetSpecialPunctuationCharacter( char c );
+	void       SetLabileFlagBit( int bit );
+	bool       StoppedOn( char ch );
+	void       StripWhitespace();
+	void       ToUpper();
+	void       Write( std::ostream& out );
+	void       Writeln( std::ostream& out );
+
+	// virtual function that should be overridden in derived classes
+	virtual void OutputComment( nxsstring& msg );
+};
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nexustoken.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsdate.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsdate.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsdate.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,228 @@
+// nxsdate.cpp
+// Copyright (C) 1999 Paul O. Lewis.
+//
+// This file defines a class useful for obtaining and displaying the current date
+//
+// This file is part of SimpleNxs. SimpleNxs 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.
+//
+// SimpleNxs 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
+// SimpleNxs; see the file COPYING.  If not, write to the Free Software Foundation,
+// Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+//
+// Author contact information:
+//
+// Paul O. Lewis, Ph.D.
+// Assistant Professor
+// Department of Ecology and Evolutionary Biology (U-43)
+// University of Connecticut
+// 75 North Eagleville Road
+// Storrs, CT 06269-3043
+//
+// Office: 166A Torrey Life Sciences
+// Phone: (860) 486-2069
+// FAX: (860) 486-6364 (not private)
+// email: paul.lewis at uconn.edu
+
+/**
+ * @class      NxsDate
+ * @file       nxsdate.h
+ * @file       nxsdate.cpp
+ * @author     Paul O. Lewis
+ * @copyright  Copyright © 1999. All Rights Reserved.
+ * @variable   secs [time_t] current time
+ * @variable   ts [tm] time structure
+ *
+ */
+
+#include <assert.h>
+#include <ctype.h>
+#if (defined __MWERKS__) || (defined __GNUC__)
+	#include <string.h>
+#endif
+
+#include "nxsdate.h"
+
+/**
+ * @constructor
+ *
+ * Calls GetCurrentDate method.
+ */
+NxsDate::NxsDate()
+{
+	GetCurrentDate();
+}
+
+/**
+ * @constructor
+ * @param day [int] the day
+ * @param month [const char*] the month (no abbreviation allowed)
+ * @param year [int] the year (supply all four digits)
+ * @param hours [int] default is 0
+ * @param minutes [int] default is 0
+ * @param seconds [int] default is 1
+ * @throws XTime
+ *
+ * Sets secs and fills ts based on day, month, year, hours, minutes,
+ * and seconds provided.  Throws XTime exception if parameters
+ * supplied do not represent a valid date/time.
+ */
+NxsDate::NxsDate( int day, const char* month, int year
+	, int hours /* = 0 */, int minutes /* = 0 */
+	, int seconds /* = 1 */ )
+{
+	assert( month != NULL );
+	char mstr[10];
+	int n = strlen(month);
+	for( int i = 0; i < n; i++ )
+		mstr[i] = toupper( month[i] );
+	mstr[n] = '\0';
+	
+	ts.tm_mday = day;
+	if( strcmp( month, "JANUARY" ) == 0 )
+		ts.tm_mon = 0;
+	else if( strcmp( month, "FEBRUARY" ) == 0 )
+		ts.tm_mon = 1;
+	else if( strcmp( month, "MARCH" ) == 0 )
+		ts.tm_mon = 2;
+	else if( strcmp( month, "APRIL" ) == 0 )
+		ts.tm_mon = 3;
+	else if( strcmp( month, "MAY" ) == 0 )
+		ts.tm_mon = 4;
+	else if( strcmp( month, "JUNE" ) == 0 )
+		ts.tm_mon = 5;
+	else if( strcmp( month, "JULY" ) == 0 )
+		ts.tm_mon = 6;
+	else if( strcmp( month, "AUGUST" ) == 0 )
+		ts.tm_mon = 7;
+	else if( strcmp( month, "SEPTEMBER" ) == 0 )
+		ts.tm_mon = 8;
+	else if( strcmp( month, "OCTOBER" ) == 0 )
+		ts.tm_mon = 9;
+	else if( strcmp( month, "NOVEMBER" ) == 0 )
+		ts.tm_mon = 10;
+	else if( strcmp( month, "DECEMBER" ) == 0 )
+		ts.tm_mon = 11;
+	else
+		ts.tm_mon = -1;
+	ts.tm_year = year - 1900;
+
+	ts.tm_hour = hours;
+	ts.tm_min = minutes;
+	ts.tm_sec = seconds;
+
+	ts.tm_wday = -1;
+	ts.tm_yday = -1;
+	ts.tm_isdst = -1;
+
+	// ensure that the date is correct (and compute tm_wday and tm_yday)
+	secs = mktime(&ts);
+	if( secs == -1 ) throw XTime();
+}
+
+/**
+ * @method c_str [char*:public]
+ *
+ * Calls asctime to convert currently stored date and time to
+ * a string.
+ */
+char* NxsDate::c_str()
+{
+	return asctime(&ts);
+}
+
+/**
+ * @method GetCurrentDate [void:public]
+ *
+ * Sets secs and fills ts. Called by the NxsDate default constructor.
+ */
+void NxsDate::GetCurrentDate()
+{
+	secs = time(NULL);
+	tm* time_structure;
+	time_structure = localtime(&secs);
+#if 1
+	ts = *time_structure;
+#else
+	ts.tm_mday = time_structure->tm_mday;	// day of the month (1 to 31)
+	ts.tm_mon = time_structure->tm_mon;	// month (0 to 11)
+	ts.tm_year = time_structure->tm_year;	// year
+
+	ts.tm_hour = time_structure->tm_hour;	// hours (24 hour clock)
+	ts.tm_min = time_structure->tm_min;	// minutes
+	ts.tm_sec = time_structure->tm_sec;	// seconds
+
+	ts.tm_wday = time_structure->tm_wday;	// day of the week (0 is Sunday)
+	ts.tm_yday = time_structure->tm_yday;	// day of the year (0 to 365)
+	ts.tm_isdst = time_structure->tm_isdst;	// is daylight savings time
+#endif
+}
+		
+/**
+ * @operator = [void:public]
+ * @param other_date [const NxsDate&] the object being copied
+ *
+ * Copies secs and ts from other_date object.
+ */
+void NxsDate::operator=( const NxsDate& other_date )
+{
+	secs = other_date.secs; 
+	ts = other_date.ts;
+}
+
+/**
+ * @operator - [long:public]
+ * @param other_date [const NxsDate&] the object being copied
+ *
+ * Returns secs minus other_date.secs.
+ */
+long NxsDate::operator-( const NxsDate& other_date ) const
+{
+	return ( secs - other_date.secs );
+}
+
+/**
+ * @operator < [int:public]
+ * @param other_date [const NxsDate&] the other NxsDate object
+ *
+ * Returns 1 if secs is less than other_date.secs; otherwise,
+ * returns 0.
+ */
+int NxsDate::operator<( const NxsDate& other_date ) const
+{
+	return ( secs < other_date.secs ? 1 : 0 );
+}
+
+/**
+ * @operator > [int:public]
+ * @param other_date [const NxsDate&] the other NxsDate object
+ *
+ * Returns 1 if secs is greater than other_date.secs; otherwise,
+ * returns 0.
+ */
+int NxsDate::operator>( const NxsDate& other_date ) const
+{
+	return ( secs > other_date.secs ? 1 : 0 );
+}
+
+/**
+ * @operator << [ostream&:public]
+ * @param o [ostream&] the output stream
+ * @param d [const NxsDate&] the NxsDate object
+ *
+ * Outputs the current date and time in the form of a string.
+ * This function is a friend, not a member function.
+ */
+std::ostream& operator<<( std::ostream& o, const NxsDate& d )
+{
+	o << asctime(&d.ts);
+	return o;
+}
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsdate.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsdate.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsdate.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsdate.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,36 @@
+// nxsdate.h
+// Copyright (C) 1999 Paul O. Lewis.
+
+#ifndef __NXSDATE_H
+#define __NXSDATE_H
+
+#if defined( __BORLANDC__ )
+#	include <dos.h>
+#endif
+
+#include <time.h>
+#include <iostream>
+
+class NxsDate
+{
+	time_t secs;
+	tm ts;
+	public:
+		NxsDate();
+		NxsDate( int day, const char* month, int year
+			, int hours = 0, int minutes = 0, int seconds = 1 );
+
+		char* c_str();
+		void GetCurrentDate();
+		
+		void operator=( const NxsDate& other_date );
+		long operator-( const NxsDate& other_date ) const;
+		int operator<( const NxsDate& other_date ) const;
+		int operator>( const NxsDate& other_date ) const;
+		friend std::ostream& operator<<( std::ostream& o, const NxsDate& d );
+
+		class XTime {};
+};
+
+#endif
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsdate.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsstring.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsstring.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsstring.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,120 @@
+#ifdef __BORLANDC__
+	// Undefine __MINMAX_DEFINED so that min and max are correctly defined
+	#ifdef __MINMAX_DEFINED
+	    #undef __MINMAX_DEFINED
+	#endif
+#endif
+
+#include <vector>
+#include <string>
+
+#ifdef __BORLANDC__
+	// Redefine __MINMAX_DEFINED so Windows header files compile
+	#ifndef __MINMAX_DEFINED
+    		#define __MINMAX_DEFINED
+	#endif
+#endif
+
+using namespace std;
+
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include "nxsstring.h"
+
+nxsstring& nxsstring::operator+=( const double d )
+{
+   char tmp[81];
+   sprintf( tmp, "%#3.6f", d );
+   int tmplen = strlen(tmp);
+   for(;;) {
+      if( tmplen < 3 || tmp[tmplen-1] != '0' || tmp[tmplen-2] == '.' )
+         break;
+      tmp[tmplen-1] = '\0';
+      tmplen--;
+   }
+   append(tmp);
+   return *this;
+}
+
+/**
+ * @method RightJustifyLong [void:public]
+ * @param x [long] long value to right justify
+ * @param w [int] width of field
+ * @param clear_first [bool] if true, initialize string first to empty string
+ *
+ * Right-justifies x in a field w characters wide, using blank spaces
+ * to fill in unused portions on the left-hand side of the field.
+ * Specify third argument true to first empty the string.
+ */
+void nxsstring::RightJustifyLong( long x, int w, bool clear_first /* = false */ )
+{
+	if( clear_first )
+		*this = "";
+		
+	int num_spaces = w - 1;
+	if( x > 0L ) 
+		num_spaces -= (int)log10( (double)x );
+	if( num_spaces < 0 )
+		num_spaces = 0;
+		
+	for( int k = 0; k < num_spaces; k++ )
+		*this += ' ';
+		
+	*this += x;
+}
+
+/**
+ * @method RightJustifyDbl [void:public]
+ * @param x [long] long value to right justify
+ * @param w [int] width of field
+ * @param p [int] precision to use
+ * @param clear_first [bool] if true, initialize string first to empty string
+ *
+ * Right-justifies x in a field w characters wide with precision p, using blank spaces
+ * to fill in unused portions on the left-hand side of the field.
+ * Specify fourth argument true to first empty the string.
+ */
+void nxsstring::RightJustifyDbl( double x, int w, int p, bool clear_first /* = false */ )
+{
+	if( clear_first )
+		*this = "";
+
+	char tmpstr[81];
+	char fmtstr[81];
+	sprintf( fmtstr, "%%.%df", p );
+	sprintf( tmpstr, fmtstr, x );
+	
+	int num_spaces = w - strlen(tmpstr);
+	if( num_spaces < 0 )
+		num_spaces = 0;
+	for( int k = 0; k < num_spaces; k++ )
+		*this += ' ';
+		
+	*this += tmpstr;
+}
+
+/**
+ * @method ShortenTo [void:public]
+ * @param n [int] maximum number of characters
+ *
+ * Shortens string to n-3 characters, making the last
+ * three characters "...".  If string is already less
+ * than n character in length, has no effect.  The 
+ * parameter n should be at least 4.
+ */
+void nxsstring::ShortenTo( int n )
+{
+	if( length() <= n )
+		return;
+		
+	assert( n > 3 );
+		
+	char* s = new char[n+1];
+	strncpy( s, this->c_str(), n-3 );
+	s[n-3] = '.';
+	s[n-2] = '.';
+	s[n-1] = '.';
+	s[n] = '\0';
+	*this = s;
+}


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsstring.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsstring.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsstring.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsstring.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,55 @@
+#ifndef __NXSSTRING_H
+#define __NXSSTRING_H
+
+class nxsstring : public std::string
+{
+   public:
+      nxsstring() {}
+      nxsstring( const char* s ) {
+         assign(s);
+      }
+      nxsstring( const nxsstring& s ) {
+         assign(s);
+      }
+      nxsstring& operator=( const char* s ) {
+         assign(s);
+         return *this;
+      }
+      nxsstring& operator=( const nxsstring& s ) {
+         assign(s);
+         return *this;
+      }
+      nxsstring& operator+=( const nxsstring& s ) {
+         append(s);
+         return *this;
+      }
+      nxsstring& operator+=( const char c ) {
+      	 char s[2];
+      	 s[0] = c;
+      	 s[1] = '\0';
+         append(s);
+         return *this;
+      }
+      nxsstring& operator+=( const int i ) {
+         char tmp[81];
+         sprintf( tmp, "%d", i );
+         append(tmp);
+         return *this;
+      }
+      nxsstring& operator+=( const long l ) {
+         char tmp[81];
+         sprintf( tmp, "%ld", l );
+         append(tmp);
+         return *this;
+      }
+      nxsstring& operator+=( const double d );
+      
+		void RightJustifyLong( long x, int w, bool clear_first = false );
+		void RightJustifyDbl( double x, int w, int p, bool clear_first = false );
+      void ShortenTo( int n );
+};
+
+#endif
+
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/nxsstring.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/setreader.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/setreader.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/setreader.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,266 @@
+#include "nexusdefs.h"
+#include "xnexus.h"
+#include "nexustoken.h"
+#include "nexus.h"
+#include "setreader.h"
+
+/**
+ * @class      SetReader
+ * @file       setreader.h
+ * @file       setreader.cpp
+ * @author     Paul O. Lewis
+ * @copyright  Copyright © 1999. All Rights Reserved.
+ * @variable   block [NexusBlock&] the NexusBlock used for looking up labels
+ * @variable   max [int] maximum number of elements in the set
+ * @variable   settype [int] the type of set being read (see enum)
+ * @variable   nxsset [IntSet&] reference to the set being read
+ * @variable   token [NexusToken&] the token object to use in reading the file
+ * @see        NexusReader
+ * @see        NexusToken
+ * @see        XNexus
+ *
+ * A class for reading Nexus set objects and storing them in a set of int values.
+ * The IntSet nxsset will be flushed if it is not empty, and nxsset will be built
+ * up as the set is read, with each element in the list storing a member of
+ * the set (ranges are stored as individual elements).
+ *
+ * <p>This class handles set descriptions of the following form:
+ * <pre>
+ * 4-7 15 20-.\3;
+ * </pre>
+ * The above set includes all numbers from 4 to 100 (inclusive) as well as
+ * 105 and every third number from 110 to max.  If max were 30, the array
+ * stored would look like this:
+ * <table border=1>
+ * <tr> <td>4</td> <td>5</td> <td>6</td> <td>7</td> <td>15</td> <td>20</td>
+ * <td>23</td> <td>26</td> <td>29</td>
+ * </table>
+ */
+
+/**
+ * @enumeration
+ * @enumitem  generic [1] means expect a generic set (say, characters weights)
+ * @enumitem  charset [2] means expect a character set
+ * @enumitem  taxsert [3] means expect a taxon set
+ *
+ * For use with the variable settype.  Default is 1 (generic).
+ */
+
+/**
+ * @constructor
+ *
+ * Initializes token to t and nxsset to iset, then
+ * erases nxsset (if it is nonempty).
+ */
+SetReader::SetReader( NexusToken& t, int maxValue, IntSet& iset
+	, NexusBlock& nxsblk, int type )
+   : token(t), nxsset(iset), max(maxValue), block(nxsblk), settype(type)
+{
+   if( !nxsset.empty() )
+      nxsset.erase( nxsset.begin(), nxsset.end() );
+}
+
+/**
+ * @method AddRange [bool:protected]
+ * @param first [int] the first member of the range (inclusive)
+ * @param last [int] the last member of the range (inclusive)
+ * @param modulus [int] the modulus to use (if non-zero)
+ *
+ * Adds the range specified by first, last, and modulus to the set.  If
+ * modulus is zero (the default value) it is ignored.  The parameters
+ * first and last are from the data file and thus have range [1..max].
+ * We store them with offset = 0 in nxsset (i.e., subtract 1 from every
+ * value stored).
+ */
+bool SetReader::AddRange( int first, int last, int modulus /* = 0 */ )
+{
+	if( last > max || first < 1 || first > last )
+		return false;
+	for( int i = first-1; i < last; i++ ) {
+		int diff = i-first+1;
+		if( modulus > 0 && diff % modulus != 0 )
+			continue;
+		nxsset.insert(i);
+	}
+	return true;
+}
+
+/**
+ * @method GetTokenValue [int:private]
+ * @throws XNexus
+ *
+ * Tries to interpret token as a number.  Failing that,
+ * tries to interpret token as a character or taxon
+ * label, which it then converts to a number.  Failing
+ * that, it throws an XNexus exception.
+ */
+int SetReader::GetTokenValue()
+{
+   int v = atoi( token.GetToken().c_str() );
+
+   if( v == 0 && settype != SetReader::generic )
+   {
+      if( settype == SetReader::charset )
+         v = block.CharLabelToNumber( token.GetToken() );
+      else if( settype == SetReader::taxset )
+         v = block.TaxonLabelToNumber( token.GetToken() );
+   }
+
+   if( v == 0 )
+   {
+      block.errormsg = "Set element (";
+      block.errormsg += token.GetToken();
+      block.errormsg += ") not a number ";
+      if( settype == SetReader::charset )
+         block.errormsg += "and not a valid character label";
+      else if( settype == SetReader::taxset )
+         block.errormsg += "and not a valid taxon label";
+      throw XNexus( block.errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+   }
+
+   return v;
+}
+
+/**
+ * @method Run [bool:public]
+ * @throws XNexus
+ *
+ * Reads in a set from a NEXUS data file. Returns true if the set was
+ * terminated by a semicolon, false otherwise.
+ */
+bool SetReader::Run()
+{
+	bool ok;
+	bool retval = false;
+
+	int rangeBegin = -1;
+	int rangeEnd = rangeBegin;
+	bool insideRange = false;
+	int modValue = 0;
+	for(;;)
+	{
+		// next token should be one of the following:
+		// ';'  --> set definition finished
+		// '-'  --> range being defined
+		// int  --> member of set (or beginning or end of a range)
+		// '.'  --> signifies the number max
+		// '\' --> signifies modulus value coming next
+		//
+		token.GetNextToken();
+
+		if( token.Equals("-") )
+		{
+         // We should not be inside a range when we encounter a hyphenation symbol.
+         // The hyphen is what _puts_ us inside a range!
+			if( insideRange ) {
+				block.errormsg = "The symbol '-' is out of place here";
+				throw XNexus( block.errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+			insideRange = true;
+		}
+
+		else if( token.Equals(".") )
+		{
+         // We _should_ be inside a range if we encounter a period, as this
+         // is a range termination character
+			if( !insideRange ) {
+				block.errormsg = "The symbol '.' can only be used to specify the end of a range";
+				throw XNexus( block.errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+			rangeEnd = max;
+		}
+
+		else if( token.Equals("\\") )
+		{
+         // The backslash character is used to specify a modulus to a range, and
+         // thus should only be encountered if currently inside a range
+			if( !insideRange ) {
+				block.errormsg = "The symbol '\\' can only be used after the end of a range has been specified";
+				throw XNexus( block.errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			token.GetNextToken();
+			modValue = atoi( token.GetToken().c_str() );
+			if( modValue <= 0 ) {
+				block.errormsg = "The modulus value specified (";
+            block.errormsg += token.GetToken();
+            block.errormsg += ") is invalid; must be greater than 0";
+				throw XNexus( block.errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+		}
+
+		else if( insideRange && rangeEnd == -1 )
+      {
+         // The beginning of the range and the hyphen symbol have been read
+         // already, just need to store the end of the range at this point
+         rangeEnd = GetTokenValue();
+      }
+
+      else if( insideRange )
+      {
+         // If insideRange is true, we must have already stored the beginning
+         // of the range and read in the hyphen character.  We would not have
+         // made it this far if we had also not already stored the range end.
+         // Thus, we can go ahead and add the range.
+         ok = AddRange( rangeBegin, rangeEnd, modValue );
+         if( !ok ) {
+            block.errormsg = "Character number out of range (or range incorrectly specified) in set specification";
+            throw XNexus( block.errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+
+         // We have actually already read in the next token, so deal with it
+         // now so that we don't end up skipping a token
+         if( token.Equals(";") ) {
+         	retval = true;
+            break;
+         }
+         else if( token.Equals(",") )
+         	break;
+         rangeBegin = GetTokenValue();
+         rangeEnd = -1;
+         insideRange = false;
+      }
+      else if( rangeBegin != -1 )
+      {
+         // If we were inside a range, we would have not gotten this far.
+         // If not in a range, we are either getting ready to begin a new
+         // range or have previously read in a single value.  Handle the
+         // latter possibility here.
+         ok = AddRange( rangeBegin, rangeBegin, modValue );
+         if( !ok ) {
+            block.errormsg = "Character number out of range (or range incorrectly specified) in set specification";
+            throw XNexus( block.errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+         if( token.Equals(";") ) {
+         	retval = true;
+            break;
+         }
+         else if( token.Equals(",") )
+         	break;
+         rangeBegin = GetTokenValue();
+         rangeEnd = -1;
+      }
+      else if( token.Equals(";") ) {
+      	retval = true;
+         break;
+      }
+      else if( token.Equals(",") ) {
+         break;
+      }
+      else if( token.Equals("ALL") ) {
+         rangeBegin = 1;
+         rangeEnd = max;
+         ok = AddRange( rangeBegin, rangeEnd );
+      }
+      else {
+         // Can only get here if rangeBegin still equals -1 and thus we
+         // are reading in the very first token and that token is neither
+         // the word "all" nor is it a semicolon
+         rangeBegin = GetTokenValue();
+         rangeEnd = -1;
+      }
+	}
+	
+	return retval;
+}
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/setreader.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/setreader.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/setreader.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/setreader.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,27 @@
+#ifndef __SETREADER_H
+#define __SETREADER_H
+
+class SetReader
+{
+   NexusBlock& block;
+   NexusToken& token;
+   IntSet& nxsset;
+   int max;
+   int settype;
+
+public:
+   enum { generic = 1, charset, taxset }; // used for settype
+
+private:
+   int GetTokenValue();
+
+protected:
+   bool AddRange( int first, int last, int modulus = 0 );
+
+public:
+   SetReader( NexusToken& t, int maxValue, IntSet& iset, NexusBlock& nxsblk, int type );
+
+   bool Run();
+};
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/setreader.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/taxablock.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/taxablock.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/taxablock.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,344 @@
+#include "nexusdefs.h"
+#include "xnexus.h"
+#include "nexustoken.h"
+#include "nexus.h"
+#include "taxablock.h"
+
+using namespace std;
+
+/**
+ * @class      TaxaBlock
+ * @file       taxablock.h
+ * @file       taxablock.cpp
+ * @author     Paul O. Lewis
+ * @copyright  Copyright © 1999. All Rights Reserved.
+ * @variable   ntax [int:private] number of taxa (set from NTAX specification)
+ * @variable   taxonLabels [LabelList:private] storage for list of taxon labels
+ * @see        LabelList
+ * @see        Nexus
+ * @see        NexusBlock
+ * @see        NexusReader
+ * @see        NexusToken
+ * @see        XNexus
+ *
+ * This class handles reading and storage for the Nexus block TAXA.
+ * It overrides the member functions Read and Reset, which are abstract
+ * virtual functions in the base class NexusBlock.  The taxon names are
+ * stored in an array of strings (taxonLabels) that is accessible through
+ * the member functions GetTaxonLabel, AddTaxonLabel, ChangeTaxonLabel,
+ * and GetNumTaxonLabels.
+ *
+ * <P> Below is a table showing the correspondence between the elements of a
+ * TAXA block and the variables and member functions that can be used
+ * to access each piece of information stored.
+ *
+ * <p><table border=1>
+ * <tr>
+ *   <th> Nexus command
+ *   <th> Nexus subcommand
+ *   <th> Data Members
+ *   <th> Member Functions
+ * <tr>
+ *   <td> DIMENSIONS
+ *   <td> NTAX
+ *   <td> int <a href="#ntax">ntax</a>
+ *   <td> int <a href="#GetNumTaxonLabels">GetNumTaxonLabels()</a>
+ * <tr>
+ *   <td colspan=2 align=left> TAXLABELS
+ *   <td> LabelList <a href="#taxonLabels">taxonLabels</a>
+ *   <td> nxsstring <a href="#GetTaxonLabel">GetTaxonLabel( int i )</a>
+ *        <br> int <a href="#FindTaxon">FindTaxon( nxsstring label )</a>
+ *        <br> int <a href="#GetMaxTaxonLabelLength">GetMaxTaxonLabelLength()</a>
+ * </table>
+ */
+
+/**
+ * @constructor
+ *
+ * Default constructor. Initializes id to "TAXA" and ntax to 0.
+ */
+TaxaBlock::TaxaBlock() : ntax(0), NexusBlock()
+{
+   id = "TAXA";
+}
+
+/**
+ * @destructor
+ *
+ * Flushes taxonLabels.
+ */
+TaxaBlock::~TaxaBlock()
+{
+	taxonLabels.erase( taxonLabels.begin(), taxonLabels.end() );
+}
+
+/**
+ * @method Read [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * This function provides the ability to read everything following the block name
+ * (which is read by the Nexus object) to the end or endblock statement.
+ * Characters are read from the input stream in. Overrides the
+ * abstract virtual function in the base class.
+ */
+void TaxaBlock::Read( NexusToken& token )
+{
+   isEmpty = false;
+	token.GetNextToken(); // this should be the semicolon after the block name
+	if( !token.Equals(";") ) {
+		errormsg = "Expecting ';' after TAXA block name, but found ";
+      errormsg += token.GetToken();
+      errormsg += " instead";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+
+	for(;;)
+	{
+		token.GetNextToken();
+		
+		if( token.Equals("DIMENSIONS") ) {
+			token.GetNextToken(); // this should be the NTAX keyword
+			if( !token.Equals("NTAX") ) {
+				errormsg = "Expecting NTAX keyword, but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+			}
+
+			token.GetNextToken(); // this should be the equals sign
+         if( !token.Equals("=") ) {
+				errormsg = "Expecting '=', but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+
+			token.GetNextToken(); // this should be the number of taxa
+         ntax = atoi( token.GetToken().c_str() );
+         if( ntax <= 0 ) {
+				errormsg = "NTAX should be greater than zero (";
+            errormsg += token.GetToken();
+            errormsg += " was specified)";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+
+			token.GetNextToken(); // this should be the terminating semicolon
+         if( !token.Equals(";") ) {
+				errormsg = "Expecting ';' to terminate DIMENSIONS command, but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+		}
+		else if( token.Equals("TAXLABELS") ) {
+      	if( ntax <= 0 ) {
+				errormsg = "NTAX must be specified before TAXLABELS command";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+
+         for( int i = 0; i < ntax; i++ ) {
+				token.GetNextToken();
+            taxonLabels.push_back( token.GetToken() );
+         }
+
+			token.GetNextToken(); // this should be terminating semicolon
+         if( !token.Equals(";") ) {
+				errormsg = "Expecting ';' to terminate TAXLABELS command, but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+		}
+		else if( token.Equals("END") ) {
+			// get the semicolon following END
+			token.GetNextToken();
+         if( !token.Equals(";") ) {
+				errormsg = "Expecting ';' to terminate the END command, but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+			break;
+		}
+		else if( token.Equals("ENDBLOCK") ) {
+			// get the semicolon following ENDBLOCK
+			token.GetNextToken();
+         if( !token.Equals(";") ) {
+				errormsg = "Expecting ';' to terminate the ENDBLOCK command, but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+			break;
+		}
+		else {
+      	SkippingCommand( token.GetToken() );
+         do {
+            token.GetNextToken();
+         } while( !token.AtEOF() && !token.Equals(";") );
+         if( token.AtEOF() ) {
+				errormsg = "Unexpected end of file encountered";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+		}
+	}
+}
+
+/**
+ * @method Report [void:public]
+ * @param out [ostream&] the output stream to which to write the report
+ *
+ * This function outputs a brief report of the contents of this taxa block.
+ * Overrides the abstract virtual function in the base class.
+ */
+void TaxaBlock::Report( std::ostream& out )
+{
+	out << endl;
+	out << id << " block contains ";
+	if( ntax == 0 ) {
+		out << "no taxa" << endl;
+	}
+	else if( ntax == 1 )
+		out << "one taxon" << endl;
+	else
+		out << ntax << " taxa" << endl;
+
+	if( ntax == 0 ) return;
+
+	for( int k = 0; k < ntax; k++ )
+		out << '\t' << (k+1) << '\t' << taxonLabels[k] << endl;
+}
+
+/**
+ * @method Reset [void:protected]
+ *
+ * Flushes taxonLabels and sets ntax to 0 in preparation for reading a
+ * new TAXA block.
+ */
+void TaxaBlock::Reset()
+{
+   isEmpty = true;
+	taxonLabels.erase( taxonLabels.begin(), taxonLabels.end() );
+   ntax = 0;
+}
+
+/**
+ * @method AddTaxonLabel [void:public]
+ * @param s [nxsstring] the taxon label to add
+ *
+ * Adds taxon label s to end of list of taxon labels and increments
+ * ntax by 1.
+ */
+void TaxaBlock::AddTaxonLabel( nxsstring s )
+{
+   isEmpty = false;
+	taxonLabels.push_back(s);
+   ntax++;
+}
+
+/**
+ * @method ChangeTaxonLabel [void:public]
+ * @param i [int] the taxon label number to change
+ * @param s [nxsstring] the string used to replace label i
+ *
+ * Changes the label for taxon i to s.
+ */
+void TaxaBlock::ChangeTaxonLabel( int i, nxsstring s )
+{
+	assert( i < (int)taxonLabels.size() );
+   taxonLabels[i] = s;
+}
+
+/**
+ * @method GetMaxTaxonLabelLength [char*:public]
+ *
+ * Returns the length of the longest taxon label stored.  Useful for
+ * formatting purposes in outputting the data matrix (i.e., you want the
+ * left edge of the matrix to line up).
+ */
+int TaxaBlock::GetMaxTaxonLabelLength()
+{
+   assert( ntax == (int)taxonLabels.size() );
+   int maxlen = 0;
+   for( int i = 0; i < ntax; i++ ) {
+      int thislen = taxonLabels[i].size();
+      if( thislen > maxlen )
+         maxlen = thislen;
+   }
+   return maxlen;
+}
+
+/**
+ * @method GetTaxonLabel [char*:public]
+ * @param i [int] the taxon label number to return
+ *
+ * Returns the label for taxon i.
+ */
+nxsstring TaxaBlock::GetTaxonLabel( int i )
+{
+	assert( i < (int)taxonLabels.size() );
+   return taxonLabels[i];
+}
+
+/**
+ * @method IsAlreadyDefined [bool:public]
+ * @param s [nxsstring] the s to attempt to find in the taxonLabels list
+ *
+ * Calls IsAlreadyDefined function of taxonLabels, which returns 0
+ * if a taxon label equal to s is already stored in taxonLabels.
+ * Returns 0 if no taxon label equal to s can be found in the
+ * taxonLabels list.
+ */
+bool TaxaBlock::IsAlreadyDefined( nxsstring s )
+{
+   LabelList::const_iterator iter = find( taxonLabels.begin(), taxonLabels.end(), s );
+   int taxonLabelFound = ( iter != taxonLabels.end() );
+   return taxonLabelFound;
+}
+
+/**
+ * @method FindTaxon [int:public]
+ * @param s [nxsstring] the string to attempt to find in the taxonLabels list
+ * @throws TaxaBlock::nosuchtaxon
+ *
+ * Returns index of taxon named s in taxonLabels list.  If taxon named
+ * s cannot be found, or if there are no labels currently stored in
+ * the taxonLabels list, throws nosuchtaxon exception.
+ */
+int TaxaBlock::FindTaxon( nxsstring s )
+{
+   int k = 0;
+   LabelList::const_iterator i;
+   for( i = taxonLabels.begin(); i != taxonLabels.end(); ++i ) {
+      if( *i == s ) break;
+      k++;
+   }
+
+   if( i == taxonLabels.end() )
+      throw TaxaBlock::nosuchtaxon();
+
+   return k;
+}
+
+/**
+ * @method GetNumTaxonLabels [int:public]
+ *
+ * Returns number of taxon labels currently stored.
+ */
+int TaxaBlock::GetNumTaxonLabels()
+{
+	return taxonLabels.size();
+}
+
+/**
+ * @method SetNtax [void:private]
+ * @param n [int] the number of taxa
+ *
+ * Sets ntax to n.
+ */
+void TaxaBlock::SetNtax( int n )
+{
+   ntax = n;
+}
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/taxablock.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/taxablock.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/taxablock.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/taxablock.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,49 @@
+#ifndef __TAXABLOCK_H
+#define __TAXABLOCK_H
+
+//
+// TaxaBlock class
+//
+class TaxaBlock : public NexusBlock
+{
+	friend class DataBlock;
+	friend class AllelesBlock;
+	friend class CharactersBlock;
+	friend class DistancesBlock;
+
+   // Adding a new data member? Don't forget to:
+   // 1. Describe it in the class header comment at the top of "taxablock.cpp"
+   // 2. Initialize it (unless it is self-initializing) in the constructor
+   //    and reinitialize it in the Reset function
+   // 3. Describe the initial state in the constructor documentation
+   // 4. Delete memory allocated to it in both the destructor and Reset function
+   // 5. Report it in some way in the Report function
+
+	int ntax;
+	LabelList taxonLabels;
+
+public:
+   class nosuchtaxon {}; // exception potentially thrown by FindTaxon
+
+private:
+   void SetNtax( int n );
+
+protected:
+	void Read( NexusToken& token );
+	void Reset();
+
+public:
+	TaxaBlock();
+   virtual ~TaxaBlock();
+
+   void  AddTaxonLabel( nxsstring s );
+   void  ChangeTaxonLabel( int i, nxsstring s );
+	int   FindTaxon( nxsstring label );
+   bool  IsAlreadyDefined( nxsstring label );
+   int   GetMaxTaxonLabelLength();
+	int   GetNumTaxonLabels();
+	nxsstring GetTaxonLabel( int i );
+	void  Report( std::ostream& out );
+};
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/taxablock.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/treesblock.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/treesblock.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/treesblock.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,572 @@
+#include "nexusdefs.h"
+#include "xnexus.h"
+#include "nexustoken.h"
+#include "nexus.h"
+#include "taxablock.h"
+#include "treesblock.h"
+
+using namespace std;
+
+/**
+ * @class      TreesBlock
+ * @file       taxablock.h
+ * @file       taxablock.cpp
+ * @author     Paul O. Lewis
+ * @copyright  Copyright © 1999. All Rights Reserved.
+ * @variable   translateList [AssocList:private] storage for translation table (if any)
+ * @variable   treeName [LabelList:private] storage for tree names
+ * @variable   treeDescription [LabelList:private] storage for tree descriptions
+ * @variable   rooted [BoolVect:private] stores information about rooting for each tree
+ * @variable   ntrees [int:private] number of trees stored
+ * @see        Nexus
+ * @see        NexusBlock
+ * @see        NexusReader
+ * @see        NexusToken
+ * @see        TaxaBlock
+ * @see        XNexus
+ *
+ * This class handles reading and storage for the Nexus block TREES.
+ * It overrides the member functions Read and Reset, which are abstract
+ * virtual functions in the base class NexusBlock.  The translation table
+ * (if one is supplied) is stored in the AssocList translateList.  The
+ * tree names are stored in the LabelList treeName and the tree descriptions
+ * in the LabelList treeDescription. Information about rooting of trees
+ * is stored in the BoolVect rooted.
+ *
+ * <P> Below is a table showing the correspondence between the elements of a
+ * TREES block and the variables and member functions that can be used
+ * to access each piece of information stored.
+ *
+ * <p><table border=1>
+ * <tr>
+ *   <th> Nexus command
+ *   <th> Data Members
+ *   <th> Member Functions
+ * <tr>
+ *   <td> TRANSLATE
+ *   <td> AssocList <a href="#translateList">translateList</a>
+ *   <td> No access functions defined
+ * <tr>
+ *   <td> TREE
+ *   <td> LabelList <a href="#treeName">treeName</a>
+ *        <br> BoolVect <a href="#rooted">rooted</a>
+ *   <td> nxsstring <a href="#GetTreeName">GetTreeName()</a>
+ *        <br> nxsstring <a href="#GetTreeDescription">GetTreeDescription()</a>
+ *        <br> int <a href="#GetNumTrees">GetNumTrees()</a>
+ *        <br> int <a href="#GetNumDefaultTree">GetNumDefaultTree()</a>
+ *        <br> int <a href="#IsDefaultTree">IsDefaultTree()</a>
+ *        <br> int <a href="#IsRootedTree">IsRootedTree()</a>
+ * </table>
+ */
+
+/**
+ * @constructor
+ *
+ * Initializes id to "TREES" and ntrees and defaultTrees to 0.
+ */
+TreesBlock::TreesBlock( TaxaBlock& tb ) : ntrees(0), defaultTree(0), taxa(tb), NexusBlock()
+{
+   id = "TREES";
+}
+
+/**
+ * @destructor
+ *
+ * Flushes translateList, rooted, and treeList.
+ */
+TreesBlock::~TreesBlock()
+{
+	translateList.erase( translateList.begin(), translateList.end() );
+	rooted.erase( rooted.begin(), rooted.end() );
+	treeName.erase( treeName.begin(), treeName.end() );
+	treeDescription.erase( treeDescription.begin(), treeDescription.end() );
+}
+
+/**
+ * @method Read [void:protected]
+ * @param token [NexusToken&] the token used to read from in
+ * @throws XNexus
+ *
+ * This function provides the ability to read everything following the block name
+ * (which is read by the Nexus object) to the end or endblock statement.
+ * Characters are read from the input stream in. Overrides the
+ * abstract virtual function in the base class.
+ */
+void TreesBlock::Read( NexusToken& token )
+{
+   isEmpty = false;
+	token.GetNextToken(); // this should be the semicolon after the block name
+	if( !token.Equals(";") ) {
+      errormsg = "Expecting ';' after TREES block name, but found ";
+      errormsg += token.GetToken();
+      errormsg += " instead";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+   }
+
+	for(;;)
+	{
+		token.GetNextToken();
+
+		if( token.Equals("TRANSLATE") ) {
+
+         int numEntries = taxa.GetNumTaxonLabels();
+
+
+         // rdmp
+
+         if (numEntries == 0)
+         {
+         	// Stand alone TREES block
+            do {
+            	// get the key
+            	token.GetNextToken();
+            	nxsstring skey = token.GetToken();
+
+            	// get the value
+            	token.GetNextToken();
+            	nxsstring sval = token.GetToken();
+
+            	// add the Association object to the translate list
+            	translateList[ skey ] = sval;
+
+	            token.GetNextToken();
+                if (!token.Equals (";") && !token.Equals (","))
+                {
+                    errormsg = "Expecting ',' or ';' in TRANSLATE command, but found ";
+                    errormsg +=token.GetToken();
+                    errormsg += " instead.";
+                    throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+				}
+
+            } while (!token.Equals (";"));
+         }
+         else
+         {
+
+
+
+         for( int k = 0; k < numEntries; k++ ) {
+            // create the Association
+
+            // get the key
+            token.GetNextToken();
+            nxsstring skey = token.GetToken();
+
+            // get the value
+            token.GetNextToken();
+            nxsstring sval = token.GetToken();
+
+            // add the Association object to the translate list
+            translateList[ skey ] = sval;
+
+            // this should be a comma, unless we are at the last pair, in
+            // which case it should be a semicolon
+            token.GetNextToken();
+            if( k < numEntries-1 )
+            {
+               if( !token.Equals(",") ) {
+						errormsg = "Expecting ',' to terminate each number/name pair in TRANSLATE command, but found ";
+						errormsg +=token.GetToken();
+						errormsg += " instead\nPerhaps there are fewer taxa in the tree file than in the stored data.";
+                  throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+               }
+            }
+            else
+            {
+               if( !token.Equals(";") ) {
+						errormsg = "Expecting ';' to terminate the TRANSLATE command, but found ";
+						errormsg +=token.GetToken();
+						errormsg += " instead";
+                  throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+               }
+            }
+
+         }
+
+         } // rdmp1c
+
+		}
+		else if( token.Equals("TREE") ) {
+
+			// this should be either an asterisk or a tree name
+			token.GetNextToken();
+			if( token.Equals("*") ) {
+				defaultTree = ntrees; // ntrees is not incremented until entire tree command has been read
+
+				// this should be tree name
+				token.GetNextToken();
+			}
+
+         // save the tree name as the key
+         nxsstring skey = token.GetToken();
+
+         // this should be an equals sign
+         token.GetNextToken();
+         if( !token.Equals("=") ) {
+				errormsg = "Expecting '=' after tree name in TREE command, but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+
+         // this should be either a tree description or a command comment specifying
+         // whether this tree is to be rooted ([&R]) or unrooted ([&U]).
+         token.SetLabileFlagBit( NexusToken::saveCommandComments );
+         token.SetLabileFlagBit( NexusToken::parentheticalToken );
+         token.SetLabileFlagBit( NexusToken::toEndOfTree );
+         token.GetNextToken();
+
+	// Paul Lewis' original code just looked for the [&R] command comment, but we want the weight as well
+	nxsstring s = token.GetToken();
+ 	if( s.size() < 2 ) {
+		errormsg = "Expecting command comment or tree description in TREE command, but found ";
+		errormsg += token.GetToken();
+ 		errormsg += " instead";
+		throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+	}
+	
+	while (s[0] == '&')
+	{
+		// command comment found
+		if( s[1] == 'R' || s[1] == 'r' )
+			rooted.push_back(true);
+		else if( s[1] == 'U' || s[1] == 'u' )
+			rooted.push_back(false);
+                else if (s[1] == 'W' || s[1] == 'u') // rdmp
+                {
+			// weight of tree
+			double weight = -1.0;
+
+			int pos = s.find ("/", 2);
+			nxsstring num;
+			if (pos > 0 && pos < s.length())
+			{
+				// fractional weighting
+ 				float numerator, denominator;
+
+				num.assign (s, 2, s.size() - pos);
+				numerator = atof( num.c_str() );
+				num.assign (s, pos + 1, s.size() - pos);
+				denominator = atof( num.c_str() );
+
+				weight = numerator / denominator;
+
+			}
+			else
+			{
+				num.assign (s, 2, s.size() - 2);
+				weight = atof( num.c_str() );
+			}
+
+			treeWeight.push_back (weight);
+
+		}
+            	else {
+			errormsg = "[";
+			errormsg += token.GetToken();
+			errormsg += "] is not a valid command comment in a TREE command";
+			throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+		}
+		
+		// Get next token
+		token.SetLabileFlagBit( NexusToken::saveCommandComments );
+		token.SetLabileFlagBit( NexusToken::parentheticalToken );
+		token.SetLabileFlagBit( NexusToken::toEndOfTree );
+		token.GetNextToken();
+ 		if( s.size() < 2 ) 
+		{
+			errormsg = "Expecting command comment or tree description in TREE command, but found ";
+			errormsg += token.GetToken();
+ 			errormsg += " instead";
+			throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+		}
+		s = token.GetToken(); 
+	}
+	
+	// Tree description
+	nxsstring sval = token.GetToken();
+
+         // this should be a semicolon
+         token.GetNextToken();
+         if( !token.Equals(";") ) {
+				errormsg = "Expecting ';' to terminate the TREE command, but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+   			throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+
+         ntrees++;
+         treeName.push_back( skey );
+         treeDescription.push_back( sval );
+         if( rooted.size() < ntrees )
+            rooted.push_back(false);
+
+         // rdmpc
+         if( treeWeight.size() < ntrees )
+            treeWeight.push_back(1.0);
+
+		}
+		else if( token.Equals("END") ) {
+			// get the semicolon following END
+			token.GetNextToken();
+         if( !token.Equals(";") ) {
+				errormsg = "Expecting ';' to terminate the END command, but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+			break;
+		}
+		else if( token.Equals("ENDBLOCK") ) {
+			// get the semicolon following ENDBLOCK
+			token.GetNextToken();
+         if( !token.Equals(";") ) {
+				errormsg = "Expecting ';' to terminate the ENDBLOCK command, but found ";
+            errormsg += token.GetToken();
+            errormsg += " instead";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+			break;
+		}
+		else {
+      	SkippingCommand( token.GetToken() );
+         do {
+            token.GetNextToken();
+         } while( !token.AtEOF() && !token.Equals(";") );
+         if( token.AtEOF() ) {
+				errormsg = "Unexpected end of file encountered";
+				throw XNexus( errormsg, token.GetFilePosition(), token.GetFileLine(), token.GetFileColumn() );
+         }
+		}
+	}
+}
+
+/**
+ * @method Reset [void:protected]
+ *
+ * Flushes treeList, translateList and rooted, and sets ntrees to 0
+ * in preparation for reading a new TREES block.
+ */
+void TreesBlock::Reset()
+{
+   isEmpty = true;
+	treeName.erase( treeName.begin(), treeName.end() );
+	treeDescription.erase( treeDescription.begin(), treeDescription.end() );
+	translateList.erase( translateList.begin(), translateList.end() );
+	rooted.erase( rooted.begin(), rooted.end() );
+	ntrees = 0;
+}
+
+/**
+ * @method GetNumDefaultTree [int:public]
+ *
+ * Returns the 0-offset index of the default tree, which will be 0 if there is
+ * only one tree stored or no trees stored.  If more than one tree is stored,
+ * the default tree will be the one specifically indicated by the user
+ * (using an asterisk in the data file) to be the default tree (or 0 if the
+ * user failed to specify.
+ */
+int TreesBlock::GetNumDefaultTree()
+{
+	return defaultTree;
+}
+
+/**
+ * @method GetNumTrees [int:public]
+ *
+ * Returns the number of trees stored in this TreesBlock object.
+ */
+int TreesBlock::GetNumTrees()
+{
+	return ntrees;
+}
+
+/**
+ * @method GetTreeName [char*:public]
+ * @param i [int] the index of the tree for which the name is to be returned
+ *
+ * Returns the name of the tree stored at position i in treeList.  Assumes
+ * that i will be in the range 0...ntrees-1.
+ */
+nxsstring TreesBlock::GetTreeName( int i )
+{
+	assert( i >= 0 );
+	assert( i < ntrees );
+   return treeName[i];
+//trash	return treeList.GetKey(i);
+}
+
+static nxsstring& blanks_to_underscores( nxsstring& s )
+{
+   int len = s.length();
+   for( int k = 0; k < len; k++ ) {
+      if( s[k] == ' ' )
+         s[k] = '_';
+   }
+   return s;
+}
+
+/**
+ * @method GetTreeWeight [double:public]
+ * @param i [int] the index of the tree for which the weight is to be returned
+ *
+ * Returns the weight of the tree stored at position i in treeList.  Assumes
+ * that i will be in the range 0...ntrees-1.
+ */
+double TreesBlock::GetTreeWeight ( int i)
+{
+	assert( i >= 0 );
+	assert( i < ntrees );
+   return treeWeight[i];
+}
+
+
+
+/**
+ * @method GetTranslatedTreeDescription [nxsstring:public]
+ * @param i [int] the index of the tree for which the description is to be returned
+ *
+ * Returns the description of the tree stored at position i in treeList.  Assumes
+ * that i will be in the range 0...ntrees-1.  Node numbers will be translated to
+ * names in the resulting tree description.  Use GetTreeDescription if translation
+ * is not desired.  When translating, blank spaces in names are converted to
+ * underscores.
+ */
+nxsstring TreesBlock::GetTranslatedTreeDescription( int i )
+{
+	assert( i >= 0 );
+	assert( i < ntrees );
+   nxsstring s = treeDescription[i];
+   nxsstring x;
+   x += s[0];
+   int slen = s.size();
+   assert( slen > 1 );
+   for( int k = 1; k < slen; k++ )
+   {
+      char prev = s[k-1];
+      char curr = s[k];
+      if( isdigit(curr) && ( prev == '(' || prev == ',' ) ) {
+         nxsstring ns;
+         ns += curr;
+         for(;;) {
+            curr = s[k+1];
+            prev = s[k++];
+            if( isdigit(curr) )
+               ns += curr;
+            else {
+               --k;
+               break;
+            }
+         }
+         nxsstring nss = translateList[ns];
+	// rdmp
+	// Hack: surround name in single quotes so that my parsing code
+	// will work. For example, we need to ensure that a name like 'a-b'
+	// is parsed correctly. Without single quotes the hyphen will
+	// generate a syntax error.
+         x += "'";
+	x += blanks_to_underscores( nss );
+	x += "'";
+      }
+      else
+         x += curr;
+   }
+   return x;
+}
+
+/**
+ * @method GetTreeDescription [nxsstring:public]
+ * @param i [int] the index of the tree for which the description is to be returned
+ *
+ * Returns the description of the tree stored at position i in treeList.  Assumes
+ * that i will be in the range 0...ntrees-1.
+ */
+nxsstring TreesBlock::GetTreeDescription( int i )
+{
+	assert( i >= 0 );
+	assert( i < ntrees );
+   return treeDescription[i];
+//trash	return treeList.GetValue(i);
+}
+
+/**
+ * @method IsDefaultTree [int:public]
+ * @param i [int] the index of the tree in question
+ *
+ * Returns true if the ith tree (0-offset) is the default tree, 0 otherwise.
+ * Assumes that i will be in the range 0...ntrees-1.
+ */
+int TreesBlock::IsDefaultTree( int i )
+{
+	assert( i >= 0 );
+	assert( i < ntrees );
+	if( i == GetNumDefaultTree() )
+		return 1;
+	else
+		return 0;
+}
+
+/**
+ * @method IsRootedTree [int:public]
+ * @param i [int] the index of the tree in question
+ *
+ * Returns true if the ith tree (0-offset) is rooted, 0 otherwise.
+ * Assumes that i will be in the range 0...ntrees-1.
+ */
+int TreesBlock::IsRootedTree( int i )
+{
+	assert( i >= 0 );
+	assert( i < ntrees );
+	return (int)rooted[i];
+}
+
+/**
+ * @method Report [void:public]
+ * @param out [ostream&] the output stream to which to write the report
+ *
+ * This function outputs a brief report of the contents of this taxa block.
+ * Overrides the abstract virtual function in the base class.
+ */
+void TreesBlock::Report( std::ostream& out )
+{
+	out << endl;
+	out << id << " block contains ";
+	if( ntrees == 0 ) {
+		out << "no trees" << endl;
+	}
+	else if( ntrees == 1 )
+		out << "one tree" << endl;
+	else
+		out << ntrees << " trees" << endl;
+
+	if( ntrees == 0 ) return;
+
+	for( int k = 0; k < ntrees; k++ ) {
+		out << '\t' << (k+1) << '\t' << treeName[k];
+		out << "\t(";
+		if( rooted[k] )
+			out << "rooted";
+		else
+			out << "unrooted";
+        out << ", weight = " << treeWeight[k]; // rdmp
+		if( defaultTree == k )
+			out << ",default tree)" << endl;
+		else
+			out << ')' << endl;
+	}
+}
+
+// rdmp
+// Return translated token. We need this because the code for
+// GetTranslatedTreeDescription is brain dead. It assumes
+// user will only have numbers to translate.
+// Need better testing (what happens if label is missing?).
+nxsstring TreesBlock::GetTranslatedLabel (std::string skey) 
+{
+	nxsstring s (skey.c_str());
+	nxsstring result = translateList[s]; 
+	return result;
+}
+
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/treesblock.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/treesblock.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/treesblock.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/treesblock.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,51 @@
+#ifndef __TREESBLOCK_H
+#define __TREESBLOCK_H
+
+//
+// TreesBlock class
+//
+class TreesBlock : public NexusBlock
+{
+   // Adding a new data member? Don't forget to:
+   // 1. Describe it in the class header comment at the top of "treesblock.cpp"
+   // 2. Initialize it (unless it is self-initializing) in the constructor
+   //    and reinitialize it in the Reset function
+   // 3. Describe the initial state in the constructor documentation
+   // 4. Delete memory allocated to it in both the destructor and Reset function
+   // 5. Report it in some way in the Report function
+
+   AssocList translateList;
+   LabelList treeName;
+   LabelList treeDescription;
+   BoolVect rooted;
+//   TaxaBlock& taxa;
+   int ntrees;
+   int defaultTree;
+   std::vector <float> treeWeight;
+
+protected:
+	void Read( NexusToken& token );
+	void Reset();
+   TaxaBlock& taxa;
+
+public:
+	TreesBlock( TaxaBlock& tb );
+	virtual ~TreesBlock();
+
+   int   GetNumDefaultTree();
+   int   GetNumTrees();
+   nxsstring GetTreeName( int i );
+   nxsstring GetTreeDescription( int i );
+   double GetTreeWeight ( int i);
+   nxsstring GetTranslatedTreeDescription( int i );
+   bool HasTranslationTable () { return (translateList.size() > 0); };
+   int   IsDefaultTree( int i );
+   int   IsRootedTree( int i );
+   void  Report( std::ostream& out );
+   
+   // rdmp
+   // Return the translation of the token
+   nxsstring GetTranslatedLabel (std::string skey);
+};
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/treesblock.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/xnexus.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/xnexus.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/xnexus.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,41 @@
+#include "nexusdefs.h"
+#include "xnexus.h"
+
+bool stri_equal::operator()(const nxsstring& x, const nxsstring& y) const
+{
+   nxsstring::const_iterator px = x.begin();
+   nxsstring::const_iterator py = y.begin();
+   while( px != x.end() && py != y.end() ) {
+      if( toupper(*px) != toupper(*py) ) return false;
+      ++px;
+      ++py;
+   }
+
+   return ( x.size() == y.size() ) ? true : false;
+}
+
+/**
+ * @class      XNexus
+ * @file       xnexus.h
+ * @file       xnexus.cpp
+ * @author     Paul O. Lewis
+ * @copyright  Copyright © 1999. All Rights Reserved.
+ * @variable   col [long:public] column of current line
+ * @variable   line [long:public] current line in file
+ * @variable   msg [nxsstring&:public] nxsstring to hold message
+ * @variable   pos [long:public] current file position (for Metrowerks compiler, type is streampos rather than long)
+ * @see        NexusReader
+ *
+ * Exception class that conveys a message specific to the problem encountered.
+ */
+
+/**
+ * @constructor
+ *
+ * Copies s to msg.  Note: for Metrowerks compiler, type of pos is streampos rather than long.
+ */
+XNexus::XNexus( nxsstring s, std::streampos fp, long fl /* = 0L */, long fc /* = 0L */ )
+	: pos(fp), line(fl), col(fc)
+{
+   msg = s;
+}


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/xnexus.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/xnexus.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/xnexus.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/xnexus.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,18 @@
+#ifndef __XNEXUS_H
+#define __XNEXUS_H
+
+//
+// XNexus exception class
+//
+class XNexus
+{
+public:
+	nxsstring msg;
+	std::streampos pos;
+	long line;
+	long col;
+
+	XNexus( nxsstring s, std::streampos fp = 0, long fl = 0L, long fc = 0L );
+};
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/ncl-2.0/src/xnexus.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/tdoc.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tdoc.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tdoc.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,85 @@
+/*
+ * TreeView
+ * A phylogenetic tree viewer.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+ 
+ // $Id: tdoc.cpp,v 1.6 2001/07/25 10:37:06 rdmp1c Exp $
+ 
+#ifdef __GNUG__
+// #pragma implementation
+#endif
+
+#include "tdoc.h"
+#include "tview.h"
+
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+#pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+
+#if !wxUSE_DOC_VIEW_ARCHITECTURE
+#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h!
+#endif
+
+
+IMPLEMENT_DYNAMIC_CLASS(TDocument, wxDocument)
+
+TDocument::TDocument(void)
+{
+}
+
+TDocument::~TDocument(void)
+{
+}
+
+
+
+
+// Since text windows have their own method for saving to/loading from files,
+// we override OnSave/OpenDocument instead of Save/LoadObject
+bool TDocument::OnSaveDocument(const wxString& filename)
+{
+	TView *view = (TView *)GetFirstView();
+	if (!view->WriteTrees (filename))
+        	return FALSE;
+	Modify(FALSE);
+	return TRUE;
+}
+
+bool TDocument::OnOpenDocument(const wxString& filename)
+{
+	TView *view = (TView *)GetFirstView();
+	if (!view->ReadTrees (filename))
+		return FALSE;
+
+	SetFilename(filename, TRUE);
+
+	Modify(FALSE);
+	UpdateAllViews();
+	view->Activate(TRUE); // Ensures TView::OnActivate is called  
+	return TRUE;
+}
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/tdoc.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/tdoc.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tdoc.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tdoc.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,57 @@
+/*
+ * TreeView
+ * A phylogenetic tree viewer.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+ 
+ // $Id: tdoc.h,v 1.4 2001/07/24 10:49:48 rdmp1c Exp $
+ 
+#ifdef __GNUG__
+// #pragma interface
+#endif
+
+#ifndef __DOCSAMPLEH__
+#define __DOCSAMPLEH__
+
+#include "profile.h"
+
+#include "wx/docview.h"
+
+
+
+
+
+class TDocument: public wxDocument
+{
+	DECLARE_DYNAMIC_CLASS(TDocument)
+private:
+ public:
+/*
+  ostream& SaveObject(ostream& stream);
+  istream& LoadObject(istream& stream);
+*/
+	virtual bool OnSaveDocument(const wxString& filename);
+	virtual bool OnOpenDocument(const wxString& filename);
+
+
+	TDocument(void);
+	~TDocument(void);
+};
+
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/tdoc.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/tproject.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tproject.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tproject.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,111 @@
+/*
+ * TreeView
+ * A phylogenetic tree viewer.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+ 
+ // $Id: tproject.h,v 1.9 2005/08/31 08:55:25 rdmp1c Exp $
+ 
+#ifndef TPROJECTH
+#define TPROJECTH
+
+#include "profile.h"
+
+/**
+ * @class TProject
+ * Encapsulates a profile of trees and operations on those trees. This is basically
+ * a wrapper around the Profile class, and is designed for use in GUI programs.
+ *
+ * @see Profile
+ *
+ */
+
+template <class T> class TProject
+{
+public:
+	/**
+	 * Constructor
+	 */	
+	TProject () { CurrentTree = 0; };
+	/**
+	 * Destructor
+	 */	
+	virtual ~TProject () {};
+	/**
+	 * True if the current tree has edge lengths
+	 */	
+	virtual bool CurrentTreeHasEdgeLengths () { return GetCurrentTree().GetHasEdgeLengths(); };
+	/**
+	 * True if the current tree has internal node labels
+	 */	
+	virtual bool CurrentTreeHasInternallabels () { return GetCurrentTree().GetHasInternalLabels(); };
+	/**
+	 * Get the current tree object
+	 * @return The tree
+	 */	
+
+	virtual T GetCurrentTree () { return p.GetIthTree (CurrentTree); };
+	/**
+	 * Get the index of the current tree
+	 * @return The index
+	 */	
+	virtual int GetCurrentTreeNumber () const { return CurrentTree; };
+	/**
+	 * @return The number of trees in the profile
+	 */	
+	virtual int GetNumTrees() { return p.GetNumTrees (); };
+	/**
+	 * @brief The name of the ith tree in the profile
+	 *
+	 * @param i the index of the tree in the range 0 - (n-1)
+	 * @return The tree
+	 */
+	virtual std::string GetIthTreeName (int i) { return p.GetIthTreeName (i); };
+	/**
+	 * Read one or more trees from an input stream
+	 * @param f an input stream
+	 * @return True if trees read in successfully
+	 */	
+	virtual bool ReadTrees (std::istream &f) { return p.ReadTrees (f); };
+	/**
+	 * Set the index of the current tree
+	 * @param i the index of the tree in the range 0 - (n-1)
+	 */	
+	virtual void SetCurrentTreeNumber (const int i) { CurrentTree = i; };
+	/**
+	 * Write trees to output stream
+	 * @param f an output stream
+	 * @return True if trees written successfully
+	 */	
+	virtual bool WriteTrees (std::ostream &f, const int format = 0, const char *endOfLine = "\n") 
+	{ return p.WriteTrees (f, format, endOfLine); };
+
+protected:
+	/**
+	 * The index of the current tree
+	 */
+	int CurrentTree;
+	/**
+	 * The profile of trees
+	 */	
+	Profile <T> p;
+};
+
+
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/tproject.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/treeorder_dialog.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/treeorder_dialog.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/treeorder_dialog.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,70 @@
+/*
+ * TreeView
+ * A phylogenetic tree viewer.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+ 
+// $Id: treeorder_dialog.cpp,v 1.2 2005/02/21 19:41:24 rdmp1c Exp $
+
+#include "treeorder_dialog.h"
+
+TreeOrderDlg::TreeOrderDlg (wxWindow *parent): wxDialog (parent, -1, wxT("Tree Order"),wxDefaultPosition, wxSize(185,185))
+{
+	// Top sizer
+	wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
+	
+	// Radiobuttons	
+	wxString *choices = new wxString[4];
+	choices[0] = wxT("Default");
+	choices[1] = wxT("Alphabetical");
+	choices[2] = wxT("\"Ladderise\" left");
+	choices[3] = wxT("\"Ladderise\" right");
+
+	radio_buttons = new wxRadioBox (this, -1, wxT("Order"), 
+		wxDefaultPosition, wxDefaultSize, 4, choices, 1, wxRA_SPECIFY_COLS);
+	topsizer->Add (radio_buttons,
+		0,
+		wxALIGN_CENTER);
+
+	// Bottom panel has OK and Cancel buttons
+    wxBoxSizer *okcancel_sizer = new wxBoxSizer( wxHORIZONTAL );
+	wxButton *ok_button = new wxButton( this, wxID_OK, wxT("OK") );
+	ok_button->SetDefault();
+	okcancel_sizer->Add (ok_button,
+		0,
+		wxALL,
+		10 );
+
+	okcancel_sizer->Add(
+		new wxButton( this, wxID_CANCEL, wxT("Cancel") ),
+		0,
+		wxALL,
+		10 );
+	 
+	topsizer->Add(
+		okcancel_sizer,
+		0,
+		wxALIGN_CENTER );
+	
+	SetAutoLayout( TRUE );
+	SetSizer( topsizer );
+	
+	topsizer->Fit( this );
+	topsizer->SetSizeHints( this );
+}
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/treeorder_dialog.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/treeorder_dialog.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/treeorder_dialog.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/treeorder_dialog.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,39 @@
+/*
+ * TreeView
+ * A phylogenetic tree viewer.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+ 
+// $Id: treeorder_dialog.h,v 1.2 2003/10/22 16:46:26 rdmp1c Exp $
+
+#ifndef TREEORDER_DIALOGH
+#define TREEORDER_DIALOGH
+
+#include <wx/wx.h>
+
+class TreeOrderDlg : public wxDialog
+{
+public:
+	TreeOrderDlg (wxWindow *parent);
+	int GetTreeOrder () { return radio_buttons->GetSelection(); };
+	void SetTreeOrder (int n) { radio_buttons->SetSelection(n); };
+private:
+	wxRadioBox *radio_buttons;
+};
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/treeorder_dialog.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/tv.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tv.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tv.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,579 @@
+/*
+ * TreeView
+ * A phylogenetic tree viewer.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+ 
+ // $Id: tv.cpp,v 1.41 2005/03/23 13:30:32 rdmp1c Exp $
+
+#ifdef __GNUG__
+//	#pragma implementation "docview.h"
+#endif
+
+// hack because gcc 2.95 on my Solaris box can't handle the VERSION flag passed as -DVERSION=\"0.3\"
+#ifdef VERSION
+	#define TV_VERSION VERSION
+#else
+	#define TV_VERSION "0.5.0"
+#endif
+
+/*
+ * Purpose:  Document/view architecture demo for wxWindows class library - MDI
+ */
+ 
+
+#include "tdoc.h"
+#include "tview.h"
+
+
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+	#pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+	#include "wx/wx.h"
+#endif
+
+#if !wxUSE_DOC_VIEW_ARCHITECTURE
+	#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h!
+#endif
+
+#if !wxUSE_MDI_ARCHITECTURE
+	#error You must set wxUSE_MDI_ARCHITECTURE to 1 in setup.h!
+#endif
+
+
+
+#include <wx/toolbar.h>
+
+#if defined(__WXGTK__) || defined(__WXMOTIF__) || defined (__WXX11__)
+// For Unix use 24x24 xpm files modelled on GNOME
+//    #include "mondrian.xpm"
+   #include "bitmaps/new.xpm"
+	#include "bitmaps/open.xpm"
+//    #include "bitmaps/save.xpm"
+	#include "bitmaps/saveas.xpm"
+	#include "bitmaps/copy.xpm"
+//    #include "bitmaps/cut.xpm"
+//    #include "bitmaps/paste.xpm"
+	#include "bitmaps/print_preview.xpm"
+	#include "bitmaps/print.xpm"
+//    #include "bitmaps/help.xpm"
+	#include "bitmaps/previous.xpm"
+	#include "bitmaps/next.xpm"
+	#include "bitmaps/slanttree.xpm"
+	#include "bitmaps/rectangletree.xpm"
+	#include "bitmaps/phylogram.xpm"
+	#include "bitmaps/paste.xpm"
+	#include "bitmaps/zoomin.xpm"
+	#include "bitmaps/zoomout.xpm"
+	#include "bitmaps/internal.xpm"
+
+#elif defined(__WXMAC__)
+// For MacOS we use 16x15 xpm files modelled on Windows
+	#include "bitmaps/mac/new.xpm"
+	#include "bitmaps/mac/open.xpm"
+//    #include "bitmaps/save.xpm"
+	#include "bitmaps/mac/saveas.xpm"
+	#include "bitmaps/mac/copy.xpm"
+//    #include "bitmaps/cut.xpm"
+//    #include "bitmaps/paste.xpm"
+	#include "bitmaps/mac/print_preview.xpm"
+	#include "bitmaps/mac/print.xpm"
+//    #include "bitmaps/help.xpm"
+	#include "bitmaps/mac/previous.xpm"
+	#include "bitmaps/mac/next.xpm"
+	#include "bitmaps/mac/slanttree.xpm"
+	#include "bitmaps/mac/rectangletree.xpm"
+	#include "bitmaps/mac/phylogram.xpm"
+	#include "bitmaps/mac/paste.xpm"
+	#include "bitmaps/mac/zoomin.xpm"
+	#include "bitmaps/mac/zoomout.xpm"
+	#include "bitmaps/internal.xpm"
+
+
+#endif
+
+#include "tv.h"
+
+
+#if wxUSE_DRAG_AND_DROP
+
+// Handle dropping files
+#include "wx/dnd.h"
+
+class DnDFile : public wxFileDropTarget
+{
+public:
+    DnDFile(wxDocManager *pOwner) { m_pOwner = pOwner; }
+
+    virtual bool OnDropFiles(wxCoord x, wxCoord y,
+                             const wxArrayString& filenames);
+
+private:
+    wxDocManager *m_pOwner;
+};
+
+bool DnDFile::OnDropFiles(wxCoord, wxCoord, const wxArrayString& filenames)
+{
+    size_t nFiles = filenames.GetCount();
+ 
+    for ( size_t n = 0; n < nFiles; n++ ) 
+        m_pOwner->CreateDocument (filenames[n].c_str(), wxDOC_SILENT);
+
+    return TRUE;
+}
+#endif // wxUSE_DRAG_AND_DROP
+
+MyFrame *frame = (MyFrame *) NULL;
+
+IMPLEMENT_APP(MyApp)
+
+MyApp::MyApp(void)
+{
+	m_docManager = (wxDocManager *) NULL;
+}
+
+#ifdef __WXMAC__
+void MyApp::MacOpenFile(const wxString &fileName)
+{
+	m_docManager->CreateDocument (fileName, wxDOC_SILENT);
+}
+#endif
+
+bool MyApp::OnInit(void)
+{
+	// Optional command line argument is name of file to open
+#if wxUSE_UNICODE
+	wchar_t *InputFile = NULL;
+#else
+	char *InputFile = NULL;
+#endif
+	// Read input/output files
+	if (argc > 1)
+	{
+		InputFile = argv[1];
+	}
+
+	//// Create a document manager                  
+	m_docManager = new wxDocManager;
+
+	//// Create a template relating drawing documents to their views
+	(void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("NEXUS tree file"), wxT("*.tre"), wxT(""), wxT("tre"), wxT("Tree Doc"), wxT("Tree View"),
+		CLASSINFO(TDocument), CLASSINFO(TView));
+	(void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("NEXUS tree file"), wxT("*.trees"), wxT(""), wxT("trees"), wxT("Tree Doc"), wxT("Tree View"),
+		CLASSINFO(TDocument), CLASSINFO(TView));
+	(void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("NEXUS file"), wxT("*.nex"), wxT(""), wxT("nex"), wxT("Tree Doc"), wxT("Tree View"),
+		CLASSINFO(TDocument), CLASSINFO(TView));
+	(void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("TreeBASE"), wxT("*.acgi"), wxT(""), wxT("acgi"), wxT("Tree Doc"), wxT("Tree View"),
+		CLASSINFO(TDocument), CLASSINFO(TView));
+	(void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("MrBayes consensus"), wxT("*.con"), wxT(""), wxT("con"), wxT("Tree Doc"), wxT("Tree View"),
+		CLASSINFO(TDocument), CLASSINFO(TView));
+	(void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("MrBayes tree file"), wxT("*.t"), wxT(""), wxT("t"), wxT("Tree Doc"), wxT("Tree View"),
+		CLASSINFO(TDocument), CLASSINFO(TView));
+	(void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("CLUSTALX tree"), wxT("*.ph"), wxT(""), wxT("ph"), wxT("Tree Doc"), wxT("Tree View"),
+		CLASSINFO(TDocument), CLASSINFO(TView));
+	(void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("CLUSTALX bootstrap tree"), wxT("*.phb"), wxT(""), wxT("phb"), wxT("Tree Doc"), wxT("Tree View"),
+		CLASSINFO(TDocument), CLASSINFO(TView));
+	(void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("CLUSTALX guide tree"), wxT("*.dnd"), wxT(""), wxT("dnd"), wxT("Tree Doc"), wxT("Tree View"),
+		CLASSINFO(TDocument), CLASSINFO(TView));
+	(void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("PHYLIP tree"), wxT("*.*"), wxT(""), wxT(""), wxT("Tree Doc"), wxT("Tree View"),
+		CLASSINFO(TDocument), CLASSINFO(TView));
+	(void) new wxDocTemplate((wxDocManager *) m_docManager, wxT("Any document"), wxT("*"), wxT(""), wxT(""), wxT("Tree Doc"), wxT("Tree View"),
+		CLASSINFO(TDocument), CLASSINFO(TView));
+          
+	//// Create the main frame window
+#ifdef __WXMAC__
+	// Create the frame window off screen (5000, 5000) so we don't see it.
+	frame = new MyFrame((wxDocManager *) m_docManager, (wxFrame *) NULL, (const wxString) wxT("Toolbar"), 
+	wxPoint(5000,5000), wxSize(400, 400), 
+	wxDEFAULT_FRAME_STYLE);
+#else
+	frame = new MyFrame((wxDocManager *) m_docManager, (wxFrame *) NULL, (const wxString) wxT("TreeViewX"), 
+	wxPoint(0, 0), wxSize(500, 400), wxDEFAULT_FRAME_STYLE);
+#endif
+
+	//// Give it an icon (this is ignored in MDI mode: uses resources)
+#ifdef __WXMSW__
+	frame->SetIcon(wxIcon("app")); // use the name of the icon in the resource file
+#endif
+#if defined(__WXGTK__) || defined(__WXMOTIF__)
+	frame->SetIcon(wxIcon(wxT("bitmaps/treeview.xbm")));
+#endif
+
+#ifdef __WXMAC__
+    wxApp::s_macAboutMenuItemId = DOCVIEW_ABOUT;
+#endif
+
+	//// Make a menubar
+	wxMenu *file_menu = new wxMenu;
+	wxMenu *edit_menu = (wxMenu *) NULL;
+
+	file_menu->Append(wxID_NEW, wxT("&New...\tCtrl-N"));
+	file_menu->Append(wxID_OPEN, wxT("&Open...\tCtrl-O"));
+
+#ifndef __WXMAC__
+	file_menu->AppendSeparator();
+	file_menu->Append(wxID_EXIT, wxT("E&xit\tAlt-X"));
+#endif
+
+	// A nice touch: a history of files visited. Use this menu.
+	m_docManager->FileHistoryUseMenu(file_menu);
+
+	wxMenu *help_menu = new wxMenu;
+	help_menu->Append(DOCVIEW_ABOUT, wxT("&About\tF1"));
+
+	wxMenuBar *menu_bar = new wxMenuBar;
+
+	menu_bar->Append(file_menu, wxT("&File"));
+	if (edit_menu)
+	menu_bar->Append(edit_menu, wxT("&Edit"));
+	menu_bar->Append(help_menu, wxT("&Help"));
+
+	//// Associate the menu bar with the frame
+	frame->SetMenuBar(menu_bar);
+
+	// Application window status bar
+	frame->CreateStatusBar();
+
+#if wxUSE_DRAG_AND_DROP
+	// Frame window is a drop target
+    frame->SetDropTarget(new DnDFile(m_docManager));
+#endif
+
+#ifndef __WXMAC__
+	// If we don't centre the frame we don't see the it under MacOS X (which is good because
+	// the MDI model on the Mac should not show a frame).
+	frame->Centre(wxBOTH); 
+#endif
+	frame->Show(TRUE);
+
+	SetTopWindow(frame);
+	
+	// Open file passed on command line
+	if (InputFile)
+		m_docManager->CreateDocument (InputFile, wxDOC_SILENT);
+	
+	return TRUE;
+}
+
+int MyApp::OnExit(void)
+{
+	delete m_docManager;
+	return 0;
+}
+
+/*
+ * Centralised code for creating a document frame.
+ * Called from view.cpp, when a view is created.
+ */
+ 
+wxMDIChildFrame *MyApp::CreateChildFrame(wxDocument *doc, wxView *view, bool isCanvas)
+{
+	//// Make a child frame
+	wxDocMDIChildFrame *subframe = new wxDocMDIChildFrame(doc, view, GetMainFrame(), -1, wxT("Child Frame"),
+	wxPoint(10, 10), wxSize(300, 300), wxDEFAULT_FRAME_STYLE);
+
+#ifdef __WXMSW__
+	subframe->SetIcon(wxString("doc"));
+#endif
+#ifdef __X__
+	subframe->SetIcon(wxIcon("bitmaps/doc.xbm"));
+#endif
+
+	//// Make a menubar
+	wxMenu *file_menu = new wxMenu;
+
+	file_menu->Append(wxID_NEW, wxT("&New...\tCtrl-N"));
+	file_menu->Append(wxID_OPEN, wxT("&Open...\tCtrl-O"));
+	file_menu->Append(wxID_CLOSE, wxT("&Close\tCtrl-W"));
+	file_menu->Append(wxID_SAVE, wxT("&Save\tCtrl-S"));
+	file_menu->Append(wxID_SAVEAS, wxT("Save &As...\tShift-Ctrl-S"));
+
+	if (isCanvas)
+	{
+#ifdef __WXMSW__
+		file_menu->AppendSeparator();
+		file_menu->Append(SAVEAS_PICTURE_CMD, "Save As Picture..."), wxT("Save picture of tree to metafile");
+#else
+	#ifdef USE_SVG
+		file_menu->AppendSeparator();
+		file_menu->Append(SAVEAS_PICTURE_CMD, "Save As Picture..."), wxT("Save picture of tree to SVG file");
+	#endif
+#endif
+		file_menu->AppendSeparator();
+		file_menu->Append(wxID_PRINT, wxT("&Print...\tCtrl-P"));
+		file_menu->Append(wxID_PRINT_SETUP, wxT("Page &Setup...\tShift-Ctrl-P"));
+		file_menu->Append(wxID_PREVIEW, wxT("Print Pre&view"));
+	}
+
+#ifndef __WXMAC__
+	file_menu->AppendSeparator();
+	file_menu->Append(wxID_EXIT, wxT("E&xit"));
+#endif
+
+	wxMenu *edit_menu = (wxMenu *) NULL;
+
+    edit_menu = new wxMenu;
+    edit_menu->Append(wxID_UNDO, wxT("&Undo\tCtrl-Z"));
+    edit_menu->Append(wxID_REDO, wxT("&Redo\tShift-Ctrl-Z"));
+    edit_menu->AppendSeparator();
+    edit_menu->Append(wxID_CUT, wxT("Cu&t\tCtrl+X"));
+    edit_menu->Append(wxID_COPY, wxT("&Copy\tCtrl+C"), wxT("Copy tree picture to clipboard"));
+    edit_menu->Append(COPY_AS_TEXT_CMD, wxT("&Copy As Text"), wxT("Copy tree description to clipboard"));
+    edit_menu->Append(wxID_PASTE, wxT("&Paste\tCtrl+V"), wxT("Paste tree from clipboard"));
+    edit_menu->Append(wxID_CLEAR, wxT("&Delete"));
+	
+	edit_menu->Enable (wxID_UNDO, FALSE);
+	edit_menu->Enable (wxID_REDO, FALSE);
+	edit_menu->Enable (wxID_CUT, FALSE);
+	edit_menu->Enable (wxID_COPY, FALSE);
+	edit_menu->Enable (COPY_AS_TEXT_CMD, FALSE);
+	edit_menu->Enable (wxID_PASTE, FALSE);
+	edit_menu->Enable (wxID_CLEAR, FALSE);
+
+  wxMenu *tree_menu = (wxMenu *) NULL;
+
+	if (isCanvas)
+	{
+		tree_menu = new wxMenu;
+		// These next three items are checkable
+		tree_menu->Append(SLANTED_TREE_CMD, wxT("&Slanted Cladogram"), wxT("Draw tree as a slanted cladogram"), TRUE);
+		tree_menu->Append(RECTANGULAR_TREE_CMD, wxT("&Rectangular Cladogram"), wxT("Draw tree as a rectangular cladogram"), TRUE);
+		tree_menu->Append(PHYLOGRAM_CMD, wxT("&Phylogram"), wxT("Draw tree as a phylogram"), TRUE);
+		tree_menu->AppendSeparator();
+		tree_menu->Append(INTERNAL_LABELS_CMD, wxT("&Show internal node labels"), wxT("Show internal node labels"), TRUE);
+		tree_menu->Append(LEAF_FONT_CMD, wxT("&Leaf Font..."), wxT("Set font for displaying leaves"));
+		tree_menu->AppendSeparator();
+		tree_menu->Append(CHOOSE_TREE_CMD, wxT("&Choose tree..."), wxT("Choose a tree"));
+		tree_menu->AppendSeparator();
+		tree_menu->Append(ORDER_TREE_CMD, wxT("&Order tree..."), wxT("Order the tree"));
+		tree_menu->AppendSeparator();
+		tree_menu->Append(ZOOM_IN_CMD, wxT("Zoom in\tCtrl+["), wxT("Zoom in"));
+		tree_menu->Append(ZOOM_OUT_CMD, wxT("Zoom out\tCtrl+]"), wxT("Zoom out"));
+		tree_menu->Append(ZOOM_TO_FIT_CMD, wxT("Zoom to fit"), wxT("View whole tree"));
+	}
+
+	wxMenu *help_menu = new wxMenu;
+
+	help_menu->Append(DOCVIEW_ABOUT, wxT("&About"));
+
+	wxMenuBar *menu_bar = new wxMenuBar;
+
+	menu_bar->Append(file_menu, wxT("&File"));
+	menu_bar->Append(edit_menu, wxT("&Edit"));
+	if (isCanvas)
+		menu_bar->Append(tree_menu, wxT("&Trees"));
+	menu_bar->Append(help_menu, wxT("&Help"));
+
+	//// Associate the menu bar with the frame
+	subframe->SetMenuBar(menu_bar);
+
+#if defined(__WXMSW__) || defined(__WXMAC__)
+	// Status bar for the view window
+	subframe->CreateStatusBar();
+#endif
+
+#ifdef __WXMAC__
+	// Create a toolbar in the view window
+	subframe->CreateToolBar(wxNO_BORDER | wxTB_FLAT | wxTB_HORIZONTAL);
+	frame->InitToolBar(subframe->GetToolBar());	
+#endif
+
+
+	return subframe;
+}
+
+/*
+ * This is the top-level window of the application.
+ */
+ 
+IMPLEMENT_CLASS(MyFrame, wxDocMDIParentFrame)
+BEGIN_EVENT_TABLE(MyFrame, wxDocMDIParentFrame)
+    EVT_MENU(DOCVIEW_ABOUT, MyFrame::OnAbout)
+END_EVENT_TABLE()
+
+MyFrame::MyFrame(wxDocManager *manager, wxFrame *frame, const wxString& title,
+    const wxPoint& pos, const wxSize& size, long type):
+  wxDocMDIParentFrame(manager, frame, -1, title, pos, size, type, wxT("myFrame"))
+{
+//  editMenu = (wxMenu *) NULL;
+
+	// Toolbar
+	CreateToolBar(wxNO_BORDER | wxTB_FLAT | wxTB_HORIZONTAL);
+	InitToolBar(GetToolBar());
+
+
+	// Accelerators
+	wxAcceleratorEntry entries[3];
+	entries[0].Set(wxACCEL_CTRL, (int) 'N', wxID_NEW);
+	entries[1].Set(wxACCEL_CTRL, (int) 'O', wxID_OPEN);
+	entries[2].Set(wxACCEL_CTRL, (int) 'X', wxID_EXIT);
+	wxAcceleratorTable accel(3, entries);
+	SetAcceleratorTable(accel);
+
+}
+
+#ifdef __WXMSW__
+	#define NUM_BITMAPS	15
+#else
+	#define NUM_BITMAPS	15
+#endif
+
+void MyFrame::InitToolBar(wxToolBar* toolBar)
+{
+	wxBitmap* bitmaps[NUM_BITMAPS];
+
+	#ifdef __WXMSW__
+		bitmaps[0] = new wxBitmap("open", wxBITMAP_TYPE_RESOURCE);
+		bitmaps[1] = new wxBitmap("saveas", wxBITMAP_TYPE_RESOURCE);
+		bitmaps[2] = new wxBitmap("copy", wxBITMAP_TYPE_RESOURCE);
+		bitmaps[3] = new wxBitmap("print_preview", wxBITMAP_TYPE_RESOURCE);
+		bitmaps[4] = new wxBitmap("print", wxBITMAP_TYPE_RESOURCE);
+		bitmaps[5] = new wxBitmap("previous", wxBITMAP_TYPE_RESOURCE);
+		bitmaps[6] = new wxBitmap("next", wxBITMAP_TYPE_RESOURCE);
+		bitmaps[7] = new wxBitmap("slanttree", wxBITMAP_TYPE_RESOURCE);
+		bitmaps[8] = new wxBitmap("rectangletree", wxBITMAP_TYPE_RESOURCE);
+		bitmaps[9] = new wxBitmap("phylogram", wxBITMAP_TYPE_RESOURCE);
+		bitmaps[10] = new wxBitmap("paste", wxBITMAP_TYPE_RESOURCE);
+ 		bitmaps[11] = new wxBitmap("new", wxBITMAP_TYPE_RESOURCE);
+		bitmaps[12] = new wxBitmap("zoomin", wxBITMAP_TYPE_RESOURCE);
+		bitmaps[13] = new wxBitmap("zoomout", wxBITMAP_TYPE_RESOURCE);
+		bitmaps[14] = new wxBitmap("internal", wxBITMAP_TYPE_RESOURCE);
+    #else
+		bitmaps[0] = new wxBitmap( open_xpm );
+		bitmaps[1] = new wxBitmap( saveas_xpm );
+		bitmaps[2] = new wxBitmap( copy_xpm );
+		bitmaps[3] = new wxBitmap( print_preview_xpm );
+		bitmaps[4] = new wxBitmap( print_xpm );
+		bitmaps[5] = new wxBitmap( previous_xpm );
+		bitmaps[6] = new wxBitmap( next_xpm );
+		bitmaps[7] = new wxBitmap( slanttree_xpm );
+		bitmaps[8] = new wxBitmap( rectangletree_xpm );
+		bitmaps[9] = new wxBitmap( phylogram_xpm );
+		bitmaps[10] = new wxBitmap( paste_xpm);
+		bitmaps[11] = new wxBitmap( new_xpm);
+		bitmaps[12] = new wxBitmap( zoomin_xpm);
+		bitmaps[13] = new wxBitmap( zoomout_xpm);
+		bitmaps[14] = new wxBitmap( internal_xpm);
+  	#endif
+
+#ifdef __WXMSW__
+	int width = 24;
+#else
+	int width = 16;
+#endif
+	int currentX = 5;
+
+#ifdef __WXMAC__
+	// The toolbar for the Mac is associated with each document window, not the MDI frame,
+	// so we don't display Open and Save as buttons
+#else
+	toolBar->AddTool( wxID_NEW, *(bitmaps[11]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("New document"));
+	currentX += width + 5;
+	toolBar->AddTool( wxID_OPEN, *(bitmaps[0]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("Open document"));
+	currentX += width + 5;
+	toolBar->AddTool(wxID_SAVEAS, *bitmaps[1], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("Save document"));
+	currentX += width + 5;
+#endif
+	toolBar->AddTool(wxID_COPY, *bitmaps[2], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("Copy tree to clipboard"));
+	currentX += width + 5;
+	toolBar->AddTool(wxID_PASTE, *bitmaps[10], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("Paste tree descriiption from clipboard"));
+	currentX += width + 5;
+	// --
+	toolBar->AddSeparator();
+	toolBar->AddTool(wxID_PREVIEW, *bitmaps[3], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("Print preview"));
+	toolBar->AddTool(wxID_PRINT, *bitmaps[4], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("Print"));
+	//--
+	toolBar->AddSeparator();
+	toolBar->AddTool(PREVIOUS_TREE_CMD, *bitmaps[5], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("Previous tree"));
+	toolBar->AddTool(NEXT_TREE_CMD, *bitmaps[6], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("Next tree"));
+	//--
+	toolBar->AddSeparator();
+	toolBar->AddTool(SLANTED_TREE_CMD, *bitmaps[7], wxNullBitmap, TRUE, currentX, -1, (wxObject *) NULL, wxT("Slanted cladogram"));
+	toolBar->AddTool(RECTANGULAR_TREE_CMD, *bitmaps[8], wxNullBitmap, TRUE, currentX, -1, (wxObject *) NULL, wxT("Rectangular cladogram"));
+	toolBar->AddTool(PHYLOGRAM_CMD, *bitmaps[9], wxNullBitmap, TRUE, currentX, -1, (wxObject *) NULL, wxT("Phylogram"));
+	//--
+ 	toolBar->AddSeparator();
+	toolBar->AddTool(INTERNAL_LABELS_CMD, *bitmaps[14], wxNullBitmap, TRUE, currentX, -1, (wxObject *) NULL, wxT("Show internal node labels"));
+	//--
+	toolBar->AddSeparator();
+	toolBar->AddTool(ZOOM_IN_CMD, *bitmaps[12], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("Zoom in"));
+	toolBar->AddTool(ZOOM_OUT_CMD, *bitmaps[13], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, wxT("Zoom out"));
+
+	toolBar->Realize();
+
+	toolBar->EnableTool (wxID_COPY, false);
+	toolBar->EnableTool (wxID_PASTE, false);
+	toolBar->EnableTool (PREVIOUS_TREE_CMD, false);
+	toolBar->EnableTool (NEXT_TREE_CMD, false);
+	toolBar->EnableTool (PREVIOUS_TREE_CMD, false);
+	toolBar->EnableTool (SLANTED_TREE_CMD, false);
+	toolBar->EnableTool (RECTANGULAR_TREE_CMD, false);
+	toolBar->EnableTool (PHYLOGRAM_CMD, false);
+	toolBar->EnableTool (ZOOM_IN_CMD, false);
+	toolBar->EnableTool (ZOOM_OUT_CMD, false);
+	toolBar->EnableTool (INTERNAL_LABELS_CMD, false);
+
+	for (int i = 0; i < NUM_BITMAPS; i++)
+		delete bitmaps[i];
+}
+
+void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) )
+{
+	wxString msg;
+	msg = wxT("TreeViewX ");
+	msg += wxT("Version ");
+	msg += wxT(TV_VERSION);
+	msg += wxT("\n\nby Roderic D. M. Page (r.page at bio.gla.ac.uk)");
+	msg += wxT("\n\nBuilt using ");
+	msg +=  wxVERSION_STRING;
+	msg +=  wxT(" for ");
+#ifdef __WXMAC__
+	msg += wxT("Macintosh");
+#else
+	msg +=  wxGetOsDescription();
+#endif
+	(void)wxMessageBox(msg, wxT("About TreeViewX"));
+}
+
+// Creates a canvas. Called from view.cpp when a new drawing
+// view is created.
+MyCanvas *MyFrame::CreateCanvas(wxView *view, wxMDIChildFrame *parent)
+{
+	int width, height;
+	parent->GetClientSize(&width, &height);
+
+	// Non-retained canvas
+	MyCanvas *canvas = new MyCanvas(view, parent, wxPoint(0, 0), wxSize(width, height), 0);
+	//  canvas->SetCursor(wxCursor(wxCURSOR_PENCIL));
+
+	// Give it scrollbars
+	canvas->SetScrollbars(0, 0, 0, 0);
+
+	return canvas;
+}
+
+MyFrame *GetMainFrame(void)
+{
+	return frame;
+}
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/tv.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/tv.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tv.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tv.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,79 @@
+/*
+ * TreeView
+ * A phylogenetic tree viewer.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+ 
+ // $Id: tv.h,v 1.4 2004/08/05 15:55:26 rdmp1c Exp $
+ 
+ #ifdef __GNUG__
+// #pragma interface "docview.h"
+#endif
+
+#ifndef __DOCVIEWSAMPLEH__
+#define __DOCVIEWSAMPLEH__
+
+#include "wx/docmdi.h"
+
+class wxDocManager;
+
+// Define a new application
+class MyApp: public wxApp
+{
+public:
+	MyApp(void);
+	bool OnInit(void);
+	int OnExit(void);
+
+	wxMDIChildFrame *CreateChildFrame(wxDocument *doc, wxView *view, bool isCanvas);
+
+#ifdef __WXMAC__
+    virtual void MacOpenFile(const wxString &fileName);
+#endif
+
+protected:
+	wxDocManager* m_docManager;
+};
+
+DECLARE_APP(MyApp)
+
+// Define a new frame
+class MyCanvas;
+class MyFrame: public wxDocMDIParentFrame
+{
+	DECLARE_CLASS(MyFrame)
+ public:
+//  wxMenu *editMenu;
+  
+	MyFrame(wxDocManager *manager, wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size,
+		long type);
+	void InitToolBar(wxToolBar* toolBar);
+	void OnAbout(wxCommandEvent& event);
+	MyCanvas *CreateCanvas(wxView *view, wxMDIChildFrame *parent);
+
+DECLARE_EVENT_TABLE()
+};
+
+extern MyFrame *GetMainFrame(void);
+
+#define DOCVIEW_CUT     1
+#define DOCVIEW_ABOUT   2
+
+extern bool singleWindowMode;
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/tv.h
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/project.pbxproj
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/project.pbxproj	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/project.pbxproj	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,1453 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 38;
+	objects = {
+		0249A665FF388DC511CA2CEA = {
+			isa = PBXApplicationReference;
+			path = "TreeView X.app";
+			refType = 3;
+		};
+		0249A669FF388E3911CA2CEA = {
+			isa = PBXFileReference;
+			name = "libstdc++.a";
+			path = "/usr/lib/libstdc++.a";
+			refType = 0;
+		};
+		0249A66AFF388E3911CA2CEA = {
+			fileRef = 0249A669FF388E3911CA2CEA;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+//020
+//021
+//022
+//023
+//024
+//040
+//041
+//042
+//043
+//044
+		04313892FE3035C9C02AAC07 = {
+			buildActionMask = 2147483647;
+			files = (
+				B3D725A407EF0F1600D12E3F,
+			);
+			isa = PBXRezBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+//040
+//041
+//042
+//043
+//044
+//050
+//051
+//052
+//053
+//054
+		05952DFCFFF02D1B11CA0E50 = {
+			buildRules = (
+			);
+			buildSettings = {
+				COPY_PHASE_STRIP = NO;
+				OPTIMIZATION_CFLAGS = "-O0";
+			};
+			isa = PBXBuildStyle;
+			name = Development;
+		};
+		05952DFDFFF02D1B11CA0E50 = {
+			buildRules = (
+			);
+			buildSettings = {
+				COPY_PHASE_STRIP = YES;
+			};
+			isa = PBXBuildStyle;
+			name = Deployment;
+		};
+//050
+//051
+//052
+//053
+//054
+//060
+//061
+//062
+//063
+//064
+		0640BAA4FFF0323A11CA0E50 = {
+			isa = PBXFrameworkReference;
+			name = ApplicationServices.framework;
+			path = /System/Library/Frameworks/ApplicationServices.framework;
+			refType = 0;
+		};
+		0640BAA5FFF0323A11CA0E50 = {
+			isa = PBXFrameworkReference;
+			name = CoreServices.framework;
+			path = /System/Library/Frameworks/CoreServices.framework;
+			refType = 0;
+		};
+//060
+//061
+//062
+//063
+//064
+//190
+//191
+//192
+//193
+//194
+		195DF8C9FE9D4F0611CA2CBB = {
+			children = (
+				0249A665FF388DC511CA2CEA,
+			);
+			isa = PBXGroup;
+			name = Products;
+			refType = 4;
+		};
+//190
+//191
+//192
+//193
+//194
+//200
+//201
+//202
+//203
+//204
+		20286C28FDCF999611CA2CEA = {
+			buildStyles = (
+				05952DFCFFF02D1B11CA0E50,
+				05952DFDFFF02D1B11CA0E50,
+			);
+			hasScannedForEncodings = 1;
+			isa = PBXProject;
+			mainGroup = 20286C29FDCF999611CA2CEA;
+			projectDirPath = "";
+			targets = (
+				20286C34FDCF999611CA2CEA,
+			);
+		};
+		20286C29FDCF999611CA2CEA = {
+			children = (
+				F51C3E0A03C77CB501E7B49E,
+				F51C3DDC03C77A2301E7B49E,
+				20286C2AFDCF999611CA2CEA,
+				20286C2CFDCF999611CA2CEA,
+				20286C32FDCF999611CA2CEA,
+				195DF8C9FE9D4F0611CA2CBB,
+			);
+			isa = PBXGroup;
+			name = "«PROJECTNAME»";
+			path = "";
+			refType = 4;
+		};
+		20286C2AFDCF999611CA2CEA = {
+			children = (
+				F53CB89103CB2010012A40F8,
+				F51C3E4B03C77F0C01E7B49E,
+				F51C3E4C03C77F0C01E7B49E,
+				F51C3E4D03C77F0C01E7B49E,
+				F51C3E4E03C77F0C01E7B49E,
+				F51C3E4F03C77F0C01E7B49E,
+				F51C3E5003C77F0C01E7B49E,
+				F51C3E5103C77F0C01E7B49E,
+			);
+			isa = PBXGroup;
+			name = Sources;
+			path = "";
+			refType = 4;
+		};
+		20286C2CFDCF999611CA2CEA = {
+			children = (
+				F5E2F10005F77C4601A80003,
+				F5E2F10505F7EAD201A80003,
+				F5E2F10605F7EAD201A80003,
+				B3D725A307EF0F1600D12E3F,
+			);
+			isa = PBXGroup;
+			name = Resources;
+			path = "";
+			refType = 4;
+		};
+		20286C32FDCF999611CA2CEA = {
+			children = (
+				20286C33FDCF999611CA2CEA,
+				0249A669FF388E3911CA2CEA,
+				0640BAA4FFF0323A11CA0E50,
+				0640BAA5FFF0323A11CA0E50,
+				F5E2F0FE05F777E801A80003,
+				B3D725A507EF0F4D00D12E3F,
+				B3D725A607EF0F4D00D12E3F,
+				B3D725A707EF0F4D00D12E3F,
+				B3D725A807EF0F4D00D12E3F,
+				B3D725A907EF0F4D00D12E3F,
+				B3D725AA07EF0F4D00D12E3F,
+				B3D725AB07EF0F4D00D12E3F,
+				B3D725AC07EF0F4D00D12E3F,
+				B3D725AD07EF0F4D00D12E3F,
+				B3D725AE07EF0F4D00D12E3F,
+				B3D725B907EF198700D12E3F,
+				B3D725BB07EF19DC00D12E3F,
+			);
+			isa = PBXGroup;
+			name = "External Frameworks and Libraries";
+			path = "";
+			refType = 4;
+		};
+		20286C33FDCF999611CA2CEA = {
+			isa = PBXFrameworkReference;
+			name = Carbon.framework;
+			path = /System/Library/Frameworks/Carbon.framework;
+			refType = 0;
+		};
+		20286C34FDCF999611CA2CEA = {
+			buildPhases = (
+				20286C35FDCF999611CA2CEA,
+				20286C36FDCF999611CA2CEA,
+				20286C38FDCF999611CA2CEA,
+				20286C3BFDCF999611CA2CEA,
+				04313892FE3035C9C02AAC07,
+			);
+			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = /usr/local/lib;
+				HEADER_SEARCH_PATHS = "TreeLib/gport /usr/local/lib/wx/include/mac-ansi-release-static-2.5 /usr/local/include/wx-2.5";
+				INSTALL_PATH = "$(HOME)/Applications";
+				LIBRARY_SEARCH_PATHS = /usr/local/lib;
+				OTHER_CFLAGS = "-Wno-deprecated -D__WXMAC__  -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -DUSE_WXWINDOWS -DNO_GCC_PRAGMA";
+				OTHER_LDFLAGS = "";
+				OTHER_REZFLAGS = Carbon.r;
+				PRODUCT_NAME = "TreeView X";
+				SECTORDER_FLAGS = "";
+				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
+				WRAPPER_EXTENSION = app;
+			};
+			dependencies = (
+			);
+			isa = PBXApplicationTarget;
+			name = tv;
+			productInstallPath = "$(HOME)/Applications";
+			productName = "«PROJECTNAME»";
+			productReference = 0249A665FF388DC511CA2CEA;
+			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
+<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
+<plist version=\"1.0\">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleDocumentTypes</key>
+	<array>
+		<dict>
+			<key>CFBundleTypeExtensions</key>
+			<array>
+				<string>tre</string>
+			</array>
+			<key>CFBundleTypeIconFile</key>
+			<string>doc.icns</string>
+			<key>CFBundleTypeName</key>
+			<string>TreeViewX document</string>
+			<key>CFBundleTypeOSTypes</key>
+			<array>
+				<string>TEXT</string>
+			</array>
+			<key>CFBundleTypeRole</key>
+			<string>Viewer</string>
+		</dict>
+	</array>
+	<key>CFBundleExecutable</key>
+	<string>TreeView X</string>
+	<key>CFBundleGetInfoString</key>
+	<string>TreeView X (c) 2004 Roderic D. M. Page</string>
+	<key>CFBundleIconFile</key>
+	<string>app.icns</string>
+	<key>CFBundleIdentifier</key>
+	<string>uk.ac.gla.zoology.treeviewx</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>TreeView X</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>0.4.1</string>
+	<key>CFBundleSignature</key>
+	<string>TreX</string>
+	<key>CFBundleVersion</key>
+	<string>0.5.0</string>
+	<key>CSResourcesFileMapped</key>
+	<true/>
+</dict>
+</plist>
+";
+		};
+		20286C35FDCF999611CA2CEA = {
+			buildActionMask = 2147483647;
+			files = (
+				F51C3DF203C77A7801E7B49E,
+				F51C3DF303C77A7801E7B49E,
+				F51C3DF403C77A7801E7B49E,
+				F51C3DF503C77A7801E7B49E,
+				F51C3DF603C77A7801E7B49E,
+				F51C3DF703C77A7801E7B49E,
+				F51C3DF803C77A7801E7B49E,
+				F51C3DF903C77A7801E7B49E,
+				F51C3E0703C77AF401E7B49E,
+				F51C3E2B03C77CE101E7B49E,
+				F51C3E2C03C77CE101E7B49E,
+				F51C3E2D03C77CE101E7B49E,
+				F51C3E2E03C77CE101E7B49E,
+				F51C3E2F03C77CE101E7B49E,
+				F51C3E3003C77CE101E7B49E,
+				F51C3E3103C77CE101E7B49E,
+				F51C3E3203C77CE101E7B49E,
+				F51C3E3303C77CE101E7B49E,
+				F51C3E3403C77CE101E7B49E,
+				F51C3E3503C77CE101E7B49E,
+				F51C3E3603C77CE101E7B49E,
+				F51C3E3703C77CE101E7B49E,
+				F51C3E3803C77CE101E7B49E,
+				F51C3E3903C77CE101E7B49E,
+				F51C3E3A03C77CE101E7B49E,
+				F51C3E5203C77F0C01E7B49E,
+				F51C3E5403C77F0C01E7B49E,
+				F51C3E5503C77F0C01E7B49E,
+				F53CB88903CB0666012A40F8,
+				F53CB88B03CB09B3012A40F8,
+				F5E2F10A05F7EFFC01A80003,
+			);
+			isa = PBXHeadersBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		20286C36FDCF999611CA2CEA = {
+			buildActionMask = 2147483647;
+			files = (
+				F5E2F10705F7EAD201A80003,
+				F5E2F10805F7EAD201A80003,
+			);
+			isa = PBXResourcesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		20286C38FDCF999611CA2CEA = {
+			buildActionMask = 2147483647;
+			files = (
+				F51C3DFC03C77A7801E7B49E,
+				F51C3DFD03C77A7801E7B49E,
+				F51C3DFE03C77A7801E7B49E,
+				F51C3DFF03C77A7801E7B49E,
+				F51C3E0003C77A7801E7B49E,
+				F51C3E0103C77A7801E7B49E,
+				F51C3E0203C77A7801E7B49E,
+				F51C3E3B03C77CE101E7B49E,
+				F51C3E3C03C77CE101E7B49E,
+				F51C3E3D03C77CE101E7B49E,
+				F51C3E3E03C77CE101E7B49E,
+				F51C3E3F03C77CE101E7B49E,
+				F51C3E4003C77CE101E7B49E,
+				F51C3E4103C77CE101E7B49E,
+				F51C3E4203C77CE101E7B49E,
+				F51C3E4303C77CE101E7B49E,
+				F51C3E4403C77CE101E7B49E,
+				F51C3E4503C77CE101E7B49E,
+				F51C3E4603C77CE101E7B49E,
+				F51C3E4703C77CE101E7B49E,
+				F51C3E4803C77CE101E7B49E,
+				F51C3E4903C77CE101E7B49E,
+				F51C3E4A03C77CE101E7B49E,
+				F51C3E5603C77F0C01E7B49E,
+				F51C3E5703C77F0C01E7B49E,
+				F5FAAF5503C9DF66011CDE4E,
+				F53CB88F03CB0A26012A40F8,
+			);
+			isa = PBXSourcesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		20286C3BFDCF999611CA2CEA = {
+			buildActionMask = 2147483647;
+			files = (
+				20286C3CFDCF999611CA2CEA,
+				0249A66AFF388E3911CA2CEA,
+				B3D725AF07EF0F4D00D12E3F,
+				B3D725B007EF0F4D00D12E3F,
+				B3D725B107EF0F4D00D12E3F,
+				B3D725B207EF0F4D00D12E3F,
+				B3D725B307EF0F4D00D12E3F,
+				B3D725B407EF0F4D00D12E3F,
+				B3D725B507EF0F4D00D12E3F,
+				B3D725B607EF0F4D00D12E3F,
+				B3D725B707EF0F4D00D12E3F,
+				B3D725B807EF0F4D00D12E3F,
+				B3D725BA07EF198700D12E3F,
+				B3D725BC07EF19DC00D12E3F,
+			);
+			isa = PBXFrameworksBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		20286C3CFDCF999611CA2CEA = {
+			fileRef = 20286C33FDCF999611CA2CEA;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+//200
+//201
+//202
+//203
+//204
+//B30
+//B31
+//B32
+//B33
+//B34
+		B3D725A307EF0F1600D12E3F = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = "libwx_mac-2.5.4.r";
+			path = "/usr/local/lib/libwx_mac-2.5.4.r";
+			refType = 0;
+		};
+		B3D725A407EF0F1600D12E3F = {
+			fileRef = B3D725A307EF0F1600D12E3F;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B3D725A507EF0F4D00D12E3F = {
+			isa = PBXFileReference;
+			name = "libwx_base_carbon_net-2.5.a";
+			path = "/usr/local/lib/libwx_base_carbon_net-2.5.a";
+			refType = 0;
+		};
+		B3D725A607EF0F4D00D12E3F = {
+			isa = PBXFileReference;
+			name = "libwx_base_carbon_xml-2.5.a";
+			path = "/usr/local/lib/libwx_base_carbon_xml-2.5.a";
+			refType = 0;
+		};
+		B3D725A707EF0F4D00D12E3F = {
+			isa = PBXFileReference;
+			name = "libwx_base_carbon-2.5.a";
+			path = "/usr/local/lib/libwx_base_carbon-2.5.a";
+			refType = 0;
+		};
+		B3D725A807EF0F4D00D12E3F = {
+			isa = PBXFileReference;
+			name = "libwx_mac_adv-2.5.a";
+			path = "/usr/local/lib/libwx_mac_adv-2.5.a";
+			refType = 0;
+		};
+		B3D725A907EF0F4D00D12E3F = {
+			isa = PBXFileReference;
+			name = "libwx_mac_core-2.5.a";
+			path = "/usr/local/lib/libwx_mac_core-2.5.a";
+			refType = 0;
+		};
+		B3D725AA07EF0F4D00D12E3F = {
+			isa = PBXFileReference;
+			name = "libwx_mac_html-2.5.a";
+			path = "/usr/local/lib/libwx_mac_html-2.5.a";
+			refType = 0;
+		};
+		B3D725AB07EF0F4D00D12E3F = {
+			isa = PBXFileReference;
+			name = "libwx_mac_xrc-2.5.a";
+			path = "/usr/local/lib/libwx_mac_xrc-2.5.a";
+			refType = 0;
+		};
+		B3D725AC07EF0F4D00D12E3F = {
+			isa = PBXFileReference;
+			name = "libwxjpeg-2.5.a";
+			path = "/usr/local/lib/libwxjpeg-2.5.a";
+			refType = 0;
+		};
+		B3D725AD07EF0F4D00D12E3F = {
+			isa = PBXFileReference;
+			name = "libwxpng-2.5.a";
+			path = "/usr/local/lib/libwxpng-2.5.a";
+			refType = 0;
+		};
+		B3D725AE07EF0F4D00D12E3F = {
+			isa = PBXFileReference;
+			name = "libwxtiff-2.5.a";
+			path = "/usr/local/lib/libwxtiff-2.5.a";
+			refType = 0;
+		};
+		B3D725AF07EF0F4D00D12E3F = {
+			fileRef = B3D725A507EF0F4D00D12E3F;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B3D725B007EF0F4D00D12E3F = {
+			fileRef = B3D725A607EF0F4D00D12E3F;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B3D725B107EF0F4D00D12E3F = {
+			fileRef = B3D725A707EF0F4D00D12E3F;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B3D725B207EF0F4D00D12E3F = {
+			fileRef = B3D725A807EF0F4D00D12E3F;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B3D725B307EF0F4D00D12E3F = {
+			fileRef = B3D725A907EF0F4D00D12E3F;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B3D725B407EF0F4D00D12E3F = {
+			fileRef = B3D725AA07EF0F4D00D12E3F;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B3D725B507EF0F4D00D12E3F = {
+			fileRef = B3D725AB07EF0F4D00D12E3F;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B3D725B607EF0F4D00D12E3F = {
+			fileRef = B3D725AC07EF0F4D00D12E3F;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B3D725B707EF0F4D00D12E3F = {
+			fileRef = B3D725AD07EF0F4D00D12E3F;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B3D725B807EF0F4D00D12E3F = {
+			fileRef = B3D725AE07EF0F4D00D12E3F;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B3D725B907EF198700D12E3F = {
+			isa = PBXFileReference;
+			name = "libwx_mac_svg-2.5.a";
+			path = "/usr/local/lib/libwx_mac_svg-2.5.a";
+			refType = 0;
+		};
+		B3D725BA07EF198700D12E3F = {
+			fileRef = B3D725B907EF198700D12E3F;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B3D725BB07EF19DC00D12E3F = {
+			isa = PBXFileReference;
+			name = libz.dylib;
+			path = /usr/lib/libz.dylib;
+			refType = 0;
+		};
+		B3D725BC07EF19DC00D12E3F = {
+			fileRef = B3D725BB07EF19DC00D12E3F;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+//B30
+//B31
+//B32
+//B33
+//B34
+//F50
+//F51
+//F52
+//F53
+//F54
+		F51C3DDC03C77A2301E7B49E = {
+			children = (
+				F51C3E0303C77AF401E7B49E,
+				F51C3DDD03C77A7801E7B49E,
+				F51C3DDE03C77A7801E7B49E,
+				F51C3DE103C77A7801E7B49E,
+				F51C3DE203C77A7801E7B49E,
+				F51C3DE303C77A7801E7B49E,
+				F51C3DE403C77A7801E7B49E,
+				F51C3DE503C77A7801E7B49E,
+				F51C3DE603C77A7801E7B49E,
+				F51C3DE703C77A7801E7B49E,
+				F51C3DE803C77A7801E7B49E,
+				F51C3DE903C77A7801E7B49E,
+				F51C3DEA03C77A7801E7B49E,
+				F51C3DEB03C77A7801E7B49E,
+				F51C3DEC03C77A7801E7B49E,
+				F51C3DED03C77A7801E7B49E,
+				F51C3DEE03C77A7801E7B49E,
+				F51C3DEF03C77A7801E7B49E,
+				F5E2F10905F7EFFC01A80003,
+			);
+			isa = PBXGroup;
+			name = TreeLib;
+			refType = 4;
+		};
+		F51C3DDD03C77A7801E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = gtree.cpp;
+			path = TreeLib/gtree.cpp;
+			refType = 2;
+		};
+		F51C3DDE03C77A7801E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = gtree.h;
+			path = TreeLib/gtree.h;
+			refType = 2;
+		};
+		F51C3DE103C77A7801E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = Parse.cpp;
+			path = TreeLib/Parse.cpp;
+			refType = 2;
+		};
+		F51C3DE203C77A7801E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = Parse.h;
+			path = TreeLib/Parse.h;
+			refType = 2;
+		};
+		F51C3DE303C77A7801E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = profile.h;
+			path = TreeLib/profile.h;
+			refType = 2;
+		};
+		F51C3DE403C77A7801E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = tokeniser.cpp;
+			path = TreeLib/tokeniser.cpp;
+			refType = 2;
+		};
+		F51C3DE503C77A7801E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = tokeniser.h;
+			path = TreeLib/tokeniser.h;
+			refType = 2;
+		};
+		F51C3DE603C77A7801E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = treedrawer.cpp;
+			path = TreeLib/treedrawer.cpp;
+			refType = 2;
+		};
+		F51C3DE703C77A7801E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = treedrawer.h;
+			path = TreeLib/treedrawer.h;
+			refType = 2;
+		};
+		F51C3DE803C77A7801E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = TreeLib.cpp;
+			path = TreeLib/TreeLib.cpp;
+			refType = 2;
+		};
+		F51C3DE903C77A7801E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = TreeLib.h;
+			path = TreeLib/TreeLib.h;
+			refType = 2;
+		};
+		F51C3DEA03C77A7801E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = treeorder.cpp;
+			path = TreeLib/treeorder.cpp;
+			refType = 2;
+		};
+		F51C3DEB03C77A7801E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = treeorder.h;
+			path = TreeLib/treeorder.h;
+			refType = 2;
+		};
+		F51C3DEC03C77A7801E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = treereader.cpp;
+			path = TreeLib/treereader.cpp;
+			refType = 2;
+		};
+		F51C3DED03C77A7801E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = treereader.h;
+			path = TreeLib/treereader.h;
+			refType = 2;
+		};
+		F51C3DEE03C77A7801E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = treewriter.cpp;
+			path = TreeLib/treewriter.cpp;
+			refType = 2;
+		};
+		F51C3DEF03C77A7801E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = treewriter.h;
+			path = TreeLib/treewriter.h;
+			refType = 2;
+		};
+		F51C3DF203C77A7801E7B49E = {
+			fileRef = F51C3DE203C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3DF303C77A7801E7B49E = {
+			fileRef = F51C3DE303C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3DF403C77A7801E7B49E = {
+			fileRef = F51C3DE503C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3DF503C77A7801E7B49E = {
+			fileRef = F51C3DE703C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3DF603C77A7801E7B49E = {
+			fileRef = F51C3DE903C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3DF703C77A7801E7B49E = {
+			fileRef = F51C3DEB03C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3DF803C77A7801E7B49E = {
+			fileRef = F51C3DED03C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3DF903C77A7801E7B49E = {
+			fileRef = F51C3DEF03C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3DFC03C77A7801E7B49E = {
+			fileRef = F51C3DE103C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3DFD03C77A7801E7B49E = {
+			fileRef = F51C3DE403C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3DFE03C77A7801E7B49E = {
+			fileRef = F51C3DE603C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3DFF03C77A7801E7B49E = {
+			fileRef = F51C3DE803C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E0003C77A7801E7B49E = {
+			fileRef = F51C3DEA03C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E0103C77A7801E7B49E = {
+			fileRef = F51C3DEC03C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E0203C77A7801E7B49E = {
+			fileRef = F51C3DEE03C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E0303C77AF401E7B49E = {
+			children = (
+				F51C3E0403C77AF401E7B49E,
+			);
+			isa = PBXGroup;
+			name = gport;
+			refType = 4;
+		};
+		F51C3E0403C77AF401E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = gdefs.h;
+			path = TreeLib/gport/gdefs.h;
+			refType = 4;
+		};
+		F51C3E0703C77AF401E7B49E = {
+			fileRef = F51C3E0403C77AF401E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E0A03C77CB501E7B49E = {
+			children = (
+				F51C3E0B03C77CE101E7B49E,
+				F51C3E0C03C77CE101E7B49E,
+				F51C3E0D03C77CE101E7B49E,
+				F51C3E0E03C77CE101E7B49E,
+				F51C3E0F03C77CE101E7B49E,
+				F51C3E1003C77CE101E7B49E,
+				F51C3E1103C77CE101E7B49E,
+				F51C3E1203C77CE101E7B49E,
+				F51C3E1303C77CE101E7B49E,
+				F51C3E1403C77CE101E7B49E,
+				F51C3E1503C77CE101E7B49E,
+				F51C3E1603C77CE101E7B49E,
+				F51C3E1703C77CE101E7B49E,
+				F51C3E1803C77CE101E7B49E,
+				F51C3E1903C77CE101E7B49E,
+				F51C3E1A03C77CE101E7B49E,
+				F51C3E1B03C77CE101E7B49E,
+				F51C3E1C03C77CE101E7B49E,
+				F51C3E1D03C77CE101E7B49E,
+				F51C3E1E03C77CE101E7B49E,
+				F51C3E1F03C77CE101E7B49E,
+				F51C3E2003C77CE101E7B49E,
+				F51C3E2103C77CE101E7B49E,
+				F51C3E2203C77CE101E7B49E,
+				F51C3E2303C77CE101E7B49E,
+				F51C3E2403C77CE101E7B49E,
+				F51C3E2503C77CE101E7B49E,
+				F51C3E2603C77CE101E7B49E,
+				F51C3E2703C77CE101E7B49E,
+				F51C3E2803C77CE101E7B49E,
+				F51C3E2903C77CE101E7B49E,
+				F51C3E2A03C77CE101E7B49E,
+			);
+			isa = PBXGroup;
+			name = "ncl-2.0";
+			refType = 4;
+		};
+		F51C3E0B03C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = assumptionsblock.cpp;
+			path = "ncl-2.0/src/assumptionsblock.cpp";
+			refType = 2;
+		};
+		F51C3E0C03C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = assumptionsblock.h;
+			path = "ncl-2.0/src/assumptionsblock.h";
+			refType = 2;
+		};
+		F51C3E0D03C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = charactersblock.cpp;
+			path = "ncl-2.0/src/charactersblock.cpp";
+			refType = 2;
+		};
+		F51C3E0E03C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = charactersblock.h;
+			path = "ncl-2.0/src/charactersblock.h";
+			refType = 2;
+		};
+		F51C3E0F03C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = datablock.cpp;
+			path = "ncl-2.0/src/datablock.cpp";
+			refType = 2;
+		};
+		F51C3E1003C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = datablock.h;
+			path = "ncl-2.0/src/datablock.h";
+			refType = 2;
+		};
+		F51C3E1103C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = discretedatum.cpp;
+			path = "ncl-2.0/src/discretedatum.cpp";
+			refType = 2;
+		};
+		F51C3E1203C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = discretedatum.h;
+			path = "ncl-2.0/src/discretedatum.h";
+			refType = 2;
+		};
+		F51C3E1303C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = discretematrix.cpp;
+			path = "ncl-2.0/src/discretematrix.cpp";
+			refType = 2;
+		};
+		F51C3E1403C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = discretematrix.h;
+			path = "ncl-2.0/src/discretematrix.h";
+			refType = 2;
+		};
+		F51C3E1503C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = distancedatum.cpp;
+			path = "ncl-2.0/src/distancedatum.cpp";
+			refType = 2;
+		};
+		F51C3E1603C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = distancedatum.h;
+			path = "ncl-2.0/src/distancedatum.h";
+			refType = 2;
+		};
+		F51C3E1703C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = distancesblock.cpp;
+			path = "ncl-2.0/src/distancesblock.cpp";
+			refType = 2;
+		};
+		F51C3E1803C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = distancesblock.h;
+			path = "ncl-2.0/src/distancesblock.h";
+			refType = 2;
+		};
+		F51C3E1903C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = nexus.cpp;
+			path = "ncl-2.0/src/nexus.cpp";
+			refType = 2;
+		};
+		F51C3E1A03C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = nexus.h;
+			path = "ncl-2.0/src/nexus.h";
+			refType = 2;
+		};
+		F51C3E1B03C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = nexusblock.cpp;
+			path = "ncl-2.0/src/nexusblock.cpp";
+			refType = 2;
+		};
+		F51C3E1C03C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = nexusdefs.h;
+			path = "ncl-2.0/src/nexusdefs.h";
+			refType = 2;
+		};
+		F51C3E1D03C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = nexustoken.cpp;
+			path = "ncl-2.0/src/nexustoken.cpp";
+			refType = 2;
+		};
+		F51C3E1E03C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = nexustoken.h;
+			path = "ncl-2.0/src/nexustoken.h";
+			refType = 2;
+		};
+		F51C3E1F03C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = nxsdate.cpp;
+			path = "ncl-2.0/src/nxsdate.cpp";
+			refType = 2;
+		};
+		F51C3E2003C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = nxsdate.h;
+			path = "ncl-2.0/src/nxsdate.h";
+			refType = 2;
+		};
+		F51C3E2103C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = nxsstring.cpp;
+			path = "ncl-2.0/src/nxsstring.cpp";
+			refType = 2;
+		};
+		F51C3E2203C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = nxsstring.h;
+			path = "ncl-2.0/src/nxsstring.h";
+			refType = 2;
+		};
+		F51C3E2303C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = setreader.cpp;
+			path = "ncl-2.0/src/setreader.cpp";
+			refType = 2;
+		};
+		F51C3E2403C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = setreader.h;
+			path = "ncl-2.0/src/setreader.h";
+			refType = 2;
+		};
+		F51C3E2503C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = taxablock.cpp;
+			path = "ncl-2.0/src/taxablock.cpp";
+			refType = 2;
+		};
+		F51C3E2603C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = taxablock.h;
+			path = "ncl-2.0/src/taxablock.h";
+			refType = 2;
+		};
+		F51C3E2703C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = treesblock.cpp;
+			path = "ncl-2.0/src/treesblock.cpp";
+			refType = 2;
+		};
+		F51C3E2803C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = treesblock.h;
+			path = "ncl-2.0/src/treesblock.h";
+			refType = 2;
+		};
+		F51C3E2903C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = xnexus.cpp;
+			path = "ncl-2.0/src/xnexus.cpp";
+			refType = 2;
+		};
+		F51C3E2A03C77CE101E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = xnexus.h;
+			path = "ncl-2.0/src/xnexus.h";
+			refType = 2;
+		};
+		F51C3E2B03C77CE101E7B49E = {
+			fileRef = F51C3E0C03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E2C03C77CE101E7B49E = {
+			fileRef = F51C3E0E03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E2D03C77CE101E7B49E = {
+			fileRef = F51C3E1003C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E2E03C77CE101E7B49E = {
+			fileRef = F51C3E1203C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E2F03C77CE101E7B49E = {
+			fileRef = F51C3E1403C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E3003C77CE101E7B49E = {
+			fileRef = F51C3E1603C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E3103C77CE101E7B49E = {
+			fileRef = F51C3E1803C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E3203C77CE101E7B49E = {
+			fileRef = F51C3E1A03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E3303C77CE101E7B49E = {
+			fileRef = F51C3E1C03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E3403C77CE101E7B49E = {
+			fileRef = F51C3E1E03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E3503C77CE101E7B49E = {
+			fileRef = F51C3E2003C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E3603C77CE101E7B49E = {
+			fileRef = F51C3E2203C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E3703C77CE101E7B49E = {
+			fileRef = F51C3E2403C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E3803C77CE101E7B49E = {
+			fileRef = F51C3E2603C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E3903C77CE101E7B49E = {
+			fileRef = F51C3E2803C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E3A03C77CE101E7B49E = {
+			fileRef = F51C3E2A03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E3B03C77CE101E7B49E = {
+			fileRef = F51C3E0B03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E3C03C77CE101E7B49E = {
+			fileRef = F51C3E0D03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E3D03C77CE101E7B49E = {
+			fileRef = F51C3E0F03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E3E03C77CE101E7B49E = {
+			fileRef = F51C3E1103C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E3F03C77CE101E7B49E = {
+			fileRef = F51C3E1303C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E4003C77CE101E7B49E = {
+			fileRef = F51C3E1503C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E4103C77CE101E7B49E = {
+			fileRef = F51C3E1703C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E4203C77CE101E7B49E = {
+			fileRef = F51C3E1903C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E4303C77CE101E7B49E = {
+			fileRef = F51C3E1B03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E4403C77CE101E7B49E = {
+			fileRef = F51C3E1D03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E4503C77CE101E7B49E = {
+			fileRef = F51C3E1F03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E4603C77CE101E7B49E = {
+			fileRef = F51C3E2103C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E4703C77CE101E7B49E = {
+			fileRef = F51C3E2303C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E4803C77CE101E7B49E = {
+			fileRef = F51C3E2503C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E4903C77CE101E7B49E = {
+			fileRef = F51C3E2703C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E4A03C77CE101E7B49E = {
+			fileRef = F51C3E2903C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E4B03C77F0C01E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = tdoc.cpp;
+			refType = 2;
+		};
+		F51C3E4C03C77F0C01E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = tdoc.h;
+			refType = 2;
+		};
+		F51C3E4D03C77F0C01E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = tproject.h;
+			refType = 2;
+		};
+		F51C3E4E03C77F0C01E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = tv.cpp;
+			refType = 2;
+		};
+		F51C3E4F03C77F0C01E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = tv.h;
+			refType = 2;
+		};
+		F51C3E5003C77F0C01E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = tview.cpp;
+			refType = 2;
+		};
+		F51C3E5103C77F0C01E7B49E = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = tview.h;
+			refType = 2;
+		};
+		F51C3E5203C77F0C01E7B49E = {
+			fileRef = F51C3E4C03C77F0C01E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E5403C77F0C01E7B49E = {
+			fileRef = F51C3E4F03C77F0C01E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E5503C77F0C01E7B49E = {
+			fileRef = F51C3E5103C77F0C01E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E5603C77F0C01E7B49E = {
+			fileRef = F51C3E4B03C77F0C01E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51C3E5703C77F0C01E7B49E = {
+			fileRef = F51C3E4E03C77F0C01E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F53CB88903CB0666012A40F8 = {
+			fileRef = F51C3E4D03C77F0C01E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F53CB88A03CB09B3012A40F8 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = treeorder_dialog.h;
+			refType = 4;
+		};
+		F53CB88B03CB09B3012A40F8 = {
+			fileRef = F53CB88A03CB09B3012A40F8;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F53CB88D03CB0A26012A40F8 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = treeorder_dialog.cpp;
+			refType = 4;
+		};
+		F53CB88F03CB0A26012A40F8 = {
+			fileRef = F53CB88D03CB0A26012A40F8;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F53CB89103CB2010012A40F8 = {
+			children = (
+				F53CB88A03CB09B3012A40F8,
+				F53CB88D03CB0A26012A40F8,
+			);
+			isa = PBXGroup;
+			name = Dialogs;
+			path = "";
+			refType = 2;
+		};
+		F5E2F0FE05F777E801A80003 = {
+			isa = PBXFileReference;
+			name = "libwx_mac-2.4.0.dylib";
+			path = "/usr/local/lib/libwx_mac-2.4.0.dylib";
+			refType = 0;
+		};
+		F5E2F10005F77C4601A80003 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = "libwx_mac-2.4.0.r";
+			path = "/usr/local/lib/libwx_mac-2.4.0.r";
+			refType = 0;
+		};
+		F5E2F10505F7EAD201A80003 = {
+			isa = PBXFileReference;
+			name = app.icns;
+			path = bitmaps/mac/app.icns;
+			refType = 2;
+		};
+		F5E2F10605F7EAD201A80003 = {
+			isa = PBXFileReference;
+			name = doc.icns;
+			path = bitmaps/mac/doc.icns;
+			refType = 2;
+		};
+		F5E2F10705F7EAD201A80003 = {
+			fileRef = F5E2F10505F7EAD201A80003;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F5E2F10805F7EAD201A80003 = {
+			fileRef = F5E2F10605F7EAD201A80003;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F5E2F10905F7EFFC01A80003 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = nodeiterator.h;
+			path = TreeLib/nodeiterator.h;
+			refType = 2;
+		};
+		F5E2F10A05F7EFFC01A80003 = {
+			fileRef = F5E2F10905F7EFFC01A80003;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F5FAAF5503C9DF66011CDE4E = {
+			fileRef = F51C3E5003C77F0C01E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+	};
+	rootObject = 20286C28FDCF999611CA2CEA;
+}


Property changes on: trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/project.pbxproj
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/rpage.pbxuser
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/rpage.pbxuser	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/rpage.pbxuser	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,955 @@
+// !$*UTF8*$!
+{
+	20286C28FDCF999611CA2CEA = {
+		activeBuildStyle = 05952DFCFFF02D1B11CA0E50;
+		activeExecutable = F5731A4F03C71AF8018DF32A;
+		activeTarget = 20286C34FDCF999611CA2CEA;
+		addToTargets = (
+			20286C34FDCF999611CA2CEA,
+		);
+		breakpoints = (
+			F53CB89003CB1EC9012A40F8,
+		);
+		executables = (
+			F5731A4F03C71AF8018DF32A,
+		);
+		perUserDictionary = {
+			PBXPerProjectTemplateStateSaveDate = 132771138;
+			"PBXTemplateGeometry-F5CA7ECB015C094F0DCA290F" = {
+				ContentSize = "{668, 621}";
+				LeftSlideOut = {
+					Collapsed = NO;
+					Frame = "{{0, 0}, {668, 621}}";
+					Split0 = {
+						Collapsed = NO;
+						Frame = "{{0, 0}, {668, 621}}";
+						Split0 = {
+							Frame = "{{0, 0}, {668, 621}}";
+						};
+						SplitCount = 1;
+						Tab0 = {
+							Frame = "{{0, 0}, {484, 208}}";
+						};
+						Tab1 = {
+							Debugger = {
+								Collapsed = NO;
+								Frame = "{{0, 0}, {664, 208}}";
+								Split0 = {
+									Frame = "{{0, 24}, {664, 184}}";
+									Split0 = {
+										Frame = "{{0, 0}, {325, 184}}";
+									};
+									Split1 = {
+										DebugVariablesTableConfiguration = (
+											Name,
+											123,
+											Value,
+											85,
+											Summary,
+											96.123,
+										);
+										Frame = "{{334, 0}, {330, 184}}";
+									};
+									SplitCount = 2;
+								};
+								SplitCount = 1;
+								Tab0 = {
+									Frame = "{{0, 0}, {100, 50}}";
+								};
+								Tab1 = {
+									Frame = "{{0, 0}, {100, 50}}";
+								};
+								TabCount = 2;
+								TabsVisible = YES;
+							};
+							Frame = "{{0, 0}, {664, 208}}";
+							LauncherConfigVersion = 7;
+						};
+						Tab2 = {
+							Frame = "{{0, 0}, {664, 50}}";
+							LauncherConfigVersion = 3;
+							Runner = {
+								Frame = "{{0, 0}, {664, 50}}";
+							};
+						};
+						Tab3 = {
+							BuildMessageFrame = "{{0, 0}, {614, 203}}";
+							BuildTranscriptFrame = "{{0, 212}, {614, 85}}";
+							BuildTranscriptFrameExpanded = YES;
+							Frame = "{{0, 0}, {612, 295}}";
+						};
+						Tab4 = {
+							Frame = "{{0, 0}, {612, 295}}";
+						};
+						TabCount = 5;
+						TabsVisible = NO;
+					};
+					SplitCount = 1;
+					Tab0 = {
+						Frame = "{{0, 0}, {313, 531}}";
+						GroupTreeTableConfiguration = (
+							TargetStatusColumn,
+							18,
+							MainColumn,
+							280,
+						);
+					};
+					Tab1 = {
+						ClassesFrame = "{{0, 0}, {280, 398}}";
+						ClassesTreeTableConfiguration = (
+							PBXBookColumnIdentifier,
+							20,
+							PBXClassColumnIdentifier,
+							237,
+						);
+						Frame = "{{0, 0}, {278, 659}}";
+						MembersFrame = "{{0, 407}, {280, 252}}";
+						MembersTreeTableConfiguration = (
+							PBXBookColumnIdentifier,
+							20,
+							PBXMethodColumnIdentifier,
+							236,
+						);
+					};
+					Tab2 = {
+						Frame = "{{0, 0}, {200, 100}}";
+					};
+					Tab3 = {
+						Frame = "{{0, 0}, {200, 557}}";
+						TargetTableConfiguration = (
+							ActiveObject,
+							16,
+							ObjectNames,
+							202.296,
+						);
+					};
+					Tab4 = {
+						BreakpointsTreeTableConfiguration = (
+							breakpointColumn,
+							197,
+							enabledColumn,
+							31,
+						);
+						Frame = "{{0, 0}, {250, 100}}";
+					};
+					TabCount = 5;
+					TabsVisible = NO;
+				};
+				NavBarShownByDefault = YES;
+				StatusViewVisible = NO;
+				Template = F5CA7ECB015C094F0DCA290F;
+				ToolbarVisible = NO;
+				WindowLocation = "{334, 179}";
+			};
+			PBXWorkspaceContents = (
+				{
+					LeftSlideOut = {
+						Split0 = {
+							Split0 = {
+								NavContent0 = {
+									bookmark = B3D725CD07EF206500D12E3F;
+									history = (
+										F5E2F10B05F7F86201A80003,
+										F5E2F10F05F7F86201A80003,
+										F5E2F11005F7F86201A80003,
+										F5F3B9A406013AFC01A80002,
+										F5F3B9A506013AFC01A80002,
+										F5F3B9A606013AFC01A80002,
+										F5F3B9A706013AFC01A80002,
+										B3D725BD07EF206500D12E3F,
+										B3D725BE07EF206500D12E3F,
+										B3D725BF07EF206500D12E3F,
+										B3D725C007EF206500D12E3F,
+										B3D725C107EF206500D12E3F,
+										B3D725C207EF206500D12E3F,
+										B3D725C307EF206500D12E3F,
+										F585386F06117B1901A80002,
+									);
+									prevStack = (
+										F5E2F11205F7F86201A80003,
+										F5E2F11305F7F86201A80003,
+										F5E2F11405F7F86201A80003,
+										F5E2F11505F7F86201A80003,
+										F5E2F11605F7F86201A80003,
+										F5E2F11805F7F86201A80003,
+										F5E2F11A05F7F86201A80003,
+										F5E2F11B05F7F86201A80003,
+										F5E2F11C05F7F86201A80003,
+										F5E2F11E05F7F86201A80003,
+										F5E2F11F05F7F86201A80003,
+										F5E2F12105F7F86201A80003,
+										F5E2F12205F7F86201A80003,
+										F5F3B9A906013AFC01A80002,
+										F5F3B9AA06013AFC01A80002,
+										F5F3B9AB06013AFC01A80002,
+										F5F3B9AC06013AFC01A80002,
+										F5F3B9AD06013AFC01A80002,
+										F5F3B9AE06013AFC01A80002,
+										F5F3B9AF06013AFC01A80002,
+										F5F3B9B006013AFC01A80002,
+										F585387006117B1901A80002,
+										B3D725C407EF206500D12E3F,
+										B3D725C507EF206500D12E3F,
+										B3D725C607EF206500D12E3F,
+										B3D725C707EF206500D12E3F,
+										B3D725C807EF206500D12E3F,
+										B3D725C907EF206500D12E3F,
+										B3D725CA07EF206500D12E3F,
+										B3D725CB07EF206500D12E3F,
+										B3D725CC07EF206500D12E3F,
+									);
+								};
+								NavCount = 1;
+								NavGeometry0 = {
+									Frame = "{{0, 0}, {684, 488}}";
+									NavBarVisible = YES;
+								};
+								NavSplitVertical = NO;
+							};
+							SplitCount = 1;
+							Tab1 = {
+								Debugger = {
+									Split0 = {
+										SplitCount = 2;
+									};
+									SplitCount = 1;
+									TabCount = 2;
+								};
+								LauncherConfigVersion = 7;
+							};
+							Tab2 = {
+								LauncherConfigVersion = 3;
+								Runner = {
+								};
+							};
+							TabCount = 5;
+						};
+						SplitCount = 1;
+						Tab1 = {
+							OptionsSetName = "Hierarchy, all classes";
+						};
+						TabCount = 5;
+					};
+				},
+			);
+			PBXWorkspaceGeometries = (
+				{
+					ContentSize = "{1070, 800}";
+					LeftSlideOut = {
+						ActiveTab = 0;
+						ActiveTabName = PBXGroupTreeModule;
+						Collapsed = NO;
+						Frame = "{{0, 23}, {1070, 777}}";
+						Split0 = {
+							ActiveTab = 2;
+							ActiveTabName = PBXBuildResultsModule;
+							Collapsed = NO;
+							Frame = "{{386, 0}, {684, 777}}";
+							Split0 = {
+								Frame = "{{0, 289}, {684, 488}}";
+							};
+							SplitCount = 1;
+							Tab0 = {
+								Frame = "{{0, 0}, {572, 214}}";
+							};
+							Tab1 = {
+								Debugger = {
+									Collapsed = NO;
+									Frame = "{{0, 0}, {572, 150}}";
+									Split0 = {
+										Frame = "{{0, 24}, {572, 126}}";
+										Split0 = {
+											Frame = "{{0, 0}, {279, 126}}";
+										};
+										Split1 = {
+											DebugVariablesTableConfiguration = (
+												Name,
+												123,
+												Value,
+												85,
+												Summary,
+												62.123,
+											);
+											Frame = "{{288, 0}, {284, 126}}";
+										};
+										SplitCount = 2;
+									};
+									SplitCount = 1;
+									Tab0 = {
+										Frame = "{{0, 0}, {100, 50}}";
+									};
+									Tab1 = {
+										Frame = "{{0, 0}, {100, 50}}";
+									};
+									TabCount = 2;
+									TabsVisible = YES;
+								};
+								Frame = "{{0, 0}, {572, 125}}";
+								LauncherConfigVersion = 7;
+							};
+							Tab2 = {
+								Frame = "{{0, 0}, {560, 253}}";
+								LauncherConfigVersion = 3;
+								Runner = {
+									Frame = "{{0, 0}, {560, 253}}";
+								};
+							};
+							Tab3 = {
+								BuildMessageFrame = "{{0, 0}, {686, 37}}";
+								BuildTranscriptFrame = "{{0, 46}, {686, 197}}";
+								BuildTranscriptFrameExpanded = YES;
+								Frame = "{{0, 0}, {684, 265}}";
+							};
+							Tab4 = {
+								Frame = "{{0, 0}, {612, 295}}";
+							};
+							TabCount = 5;
+							TabsVisible = YES;
+						};
+						SplitCount = 1;
+						Tab0 = {
+							Frame = "{{0, 0}, {362, 777}}";
+							GroupTreeTableConfiguration = (
+								SCMStatusColumn,
+								22,
+								TargetStatusColumn,
+								18,
+								MainColumn,
+								307,
+							);
+						};
+						Tab1 = {
+							ClassesFrame = "{{0, 0}, {247, 330}}";
+							ClassesTreeTableConfiguration = (
+								PBXBookColumnIdentifier,
+								20,
+								PBXClassColumnIdentifier,
+								204,
+							);
+							Frame = "{{0, 0}, {245, 549}}";
+							MembersFrame = "{{0, 339}, {247, 210}}";
+							MembersTreeTableConfiguration = (
+								PBXBookColumnIdentifier,
+								20,
+								PBXMethodColumnIdentifier,
+								203,
+							);
+						};
+						Tab2 = {
+							Frame = "{{0, 0}, {226, 549}}";
+						};
+						Tab3 = {
+							Frame = "{{0, 0}, {191, 803}}";
+							TargetTableConfiguration = (
+								ActiveObject,
+								16,
+								ObjectNames,
+								202.296,
+							);
+						};
+						Tab4 = {
+							BreakpointsTreeTableConfiguration = (
+								breakpointColumn,
+								138,
+								enabledColumn,
+								31,
+							);
+							Frame = "{{0, 0}, {191, 549}}";
+						};
+						TabCount = 5;
+						TabsVisible = YES;
+					};
+					NavBarShownByDefault = YES;
+					StatusViewVisible = YES;
+					Template = F5F68CF101725D4C0D7A8F4C;
+					ToolbarVisible = YES;
+					WindowLocation = "{103, 92}";
+				},
+			);
+			PBXWorkspaceStateSaveDate = 132771138;
+		};
+		perUserProjectItems = {
+			B3D725BD07EF206500D12E3F = B3D725BD07EF206500D12E3F;
+			B3D725BE07EF206500D12E3F = B3D725BE07EF206500D12E3F;
+			B3D725BF07EF206500D12E3F = B3D725BF07EF206500D12E3F;
+			B3D725C007EF206500D12E3F = B3D725C007EF206500D12E3F;
+			B3D725C107EF206500D12E3F = B3D725C107EF206500D12E3F;
+			B3D725C207EF206500D12E3F = B3D725C207EF206500D12E3F;
+			B3D725C307EF206500D12E3F = B3D725C307EF206500D12E3F;
+			B3D725C407EF206500D12E3F = B3D725C407EF206500D12E3F;
+			B3D725C507EF206500D12E3F = B3D725C507EF206500D12E3F;
+			B3D725C607EF206500D12E3F = B3D725C607EF206500D12E3F;
+			B3D725C707EF206500D12E3F = B3D725C707EF206500D12E3F;
+			B3D725C807EF206500D12E3F = B3D725C807EF206500D12E3F;
+			B3D725C907EF206500D12E3F = B3D725C907EF206500D12E3F;
+			B3D725CA07EF206500D12E3F = B3D725CA07EF206500D12E3F;
+			B3D725CB07EF206500D12E3F = B3D725CB07EF206500D12E3F;
+			B3D725CC07EF206500D12E3F = B3D725CC07EF206500D12E3F;
+			B3D725CD07EF206500D12E3F = B3D725CD07EF206500D12E3F;
+			F585386F06117B1901A80002 = F585386F06117B1901A80002;
+			F585387006117B1901A80002 = F585387006117B1901A80002;
+			F5E2F10B05F7F86201A80003 = F5E2F10B05F7F86201A80003;
+			F5E2F10F05F7F86201A80003 = F5E2F10F05F7F86201A80003;
+			F5E2F11005F7F86201A80003 = F5E2F11005F7F86201A80003;
+			F5E2F11205F7F86201A80003 = F5E2F11205F7F86201A80003;
+			F5E2F11305F7F86201A80003 = F5E2F11305F7F86201A80003;
+			F5E2F11405F7F86201A80003 = F5E2F11405F7F86201A80003;
+			F5E2F11505F7F86201A80003 = F5E2F11505F7F86201A80003;
+			F5E2F11605F7F86201A80003 = F5E2F11605F7F86201A80003;
+			F5E2F11805F7F86201A80003 = F5E2F11805F7F86201A80003;
+			F5E2F11A05F7F86201A80003 = F5E2F11A05F7F86201A80003;
+			F5E2F11B05F7F86201A80003 = F5E2F11B05F7F86201A80003;
+			F5E2F11C05F7F86201A80003 = F5E2F11C05F7F86201A80003;
+			F5E2F11E05F7F86201A80003 = F5E2F11E05F7F86201A80003;
+			F5E2F11F05F7F86201A80003 = F5E2F11F05F7F86201A80003;
+			F5E2F12105F7F86201A80003 = F5E2F12105F7F86201A80003;
+			F5E2F12205F7F86201A80003 = F5E2F12205F7F86201A80003;
+			F5F3B9A406013AFC01A80002 = F5F3B9A406013AFC01A80002;
+			F5F3B9A506013AFC01A80002 = F5F3B9A506013AFC01A80002;
+			F5F3B9A606013AFC01A80002 = F5F3B9A606013AFC01A80002;
+			F5F3B9A706013AFC01A80002 = F5F3B9A706013AFC01A80002;
+			F5F3B9A906013AFC01A80002 = F5F3B9A906013AFC01A80002;
+			F5F3B9AA06013AFC01A80002 = F5F3B9AA06013AFC01A80002;
+			F5F3B9AB06013AFC01A80002 = F5F3B9AB06013AFC01A80002;
+			F5F3B9AC06013AFC01A80002 = F5F3B9AC06013AFC01A80002;
+			F5F3B9AD06013AFC01A80002 = F5F3B9AD06013AFC01A80002;
+			F5F3B9AE06013AFC01A80002 = F5F3B9AE06013AFC01A80002;
+			F5F3B9AF06013AFC01A80002 = F5F3B9AF06013AFC01A80002;
+			F5F3B9B006013AFC01A80002 = F5F3B9B006013AFC01A80002;
+		};
+		projectwideBuildSettings = {
+		};
+		wantsIndex = 1;
+		wantsSCM = -1;
+	};
+	20286C34FDCF999611CA2CEA = {
+		activeExec = 0;
+		executables = (
+			F5731A4F03C71AF8018DF32A,
+		);
+	};
+	B3D725BD07EF206500D12E3F = {
+		fRef = F51C3DDD03C77A7801E7B49E;
+		isa = PBXTextBookmark;
+		name = "gtree.cpp: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1097;
+		vrLoc = 0;
+	};
+	B3D725BE07EF206500D12E3F = {
+		fRef = F51C3DE603C77A7801E7B49E;
+		isa = PBXTextBookmark;
+		name = "treedrawer.cpp: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1177;
+		vrLoc = 0;
+	};
+	B3D725BF07EF206500D12E3F = {
+		fRef = F51C3E0B03C77CE101E7B49E;
+		isa = PBXTextBookmark;
+		name = "assumptionsblock.cpp: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1117;
+		vrLoc = 0;
+	};
+	B3D725C007EF206500D12E3F = {
+		fRef = F51C3E1D03C77CE101E7B49E;
+		isa = PBXTextBookmark;
+		name = "nexustoken.cpp: 1097";
+		rLen = 0;
+		rLoc = 30389;
+		rType = 0;
+		vrLen = 2012;
+		vrLoc = 0;
+	};
+	B3D725C107EF206500D12E3F = {
+		fRef = B3D725CE07EF206500D12E3F;
+		isa = PBXTextBookmark;
+		name = "defs.h: 21";
+		rLen = 25;
+		rLoc = 659;
+		rType = 0;
+		vrLen = 1233;
+		vrLoc = 0;
+	};
+	B3D725C207EF206500D12E3F = {
+		fRef = B3D725D207EF206500D12E3F;
+		isa = PBXTextBookmark;
+		name = "platform.h: 260";
+		rLen = 22;
+		rLoc = 6931;
+		rType = 0;
+		vrLen = 917;
+		vrLoc = 6564;
+	};
+	B3D725C307EF206500D12E3F = {
+		isa = PBXTargetBookmark;
+		trg = 20286C34FDCF999611CA2CEA;
+		uiCtxt = {
+			TOCViewDetailVisibleRect = "{{0, 38}, {468, 434}}";
+			TOCViewExpandedItems = (
+				"com.apple.target-editor-pane.settings",
+				"com.apple.target-editor-pane.settings.simple",
+				"com.apple.target-editor-pane.info-plist",
+				"com.apple.target-editor-pane.info-plist.simple",
+				"com.apple.target-editor-pane.buildphases",
+			);
+			TOCViewMasterVisibleRect = "{{0, 0}, {177, 434}}";
+			TOCViewSelectedItems = (
+				PBXTargetGccCompilerSettingsModule,
+			);
+		};
+	};
+	B3D725C407EF206500D12E3F = {
+		isa = PBXTargetBookmark;
+		trg = 20286C34FDCF999611CA2CEA;
+		uiCtxt = {
+			TOCViewDetailVisibleRect = "{{0, 0}, {420, 207}}";
+			TOCViewExpandedItems = (
+				"com.apple.target-editor-pane.settings",
+				"com.apple.target-editor-pane.settings.simple",
+				"com.apple.target-editor-pane.info-plist",
+				"com.apple.target-editor-pane.info-plist.simple",
+				"com.apple.target-editor-pane.buildphases",
+			);
+			TOCViewMasterVisibleRect = "{{0, 0}, {159, 459}}";
+			TOCViewSelectedItems = (
+				PBXProductURLTypesSettingsModule,
+			);
+		};
+	};
+	B3D725C507EF206500D12E3F = {
+		fRef = F51C3DDD03C77A7801E7B49E;
+		isa = PBXTextBookmark;
+		name = "gtree.cpp: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1097;
+		vrLoc = 0;
+	};
+	B3D725C607EF206500D12E3F = {
+		fRef = F51C3DE603C77A7801E7B49E;
+		isa = PBXTextBookmark;
+		name = "treedrawer.cpp: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1177;
+		vrLoc = 0;
+	};
+	B3D725C707EF206500D12E3F = {
+		fRef = F51C3E0B03C77CE101E7B49E;
+		isa = PBXTextBookmark;
+		name = "assumptionsblock.cpp: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1117;
+		vrLoc = 0;
+	};
+	B3D725C807EF206500D12E3F = {
+		fRef = F51C3E1D03C77CE101E7B49E;
+		isa = PBXTextBookmark;
+		name = "nexustoken.cpp: 1097";
+		rLen = 0;
+		rLoc = 30389;
+		rType = 0;
+		vrLen = 2012;
+		vrLoc = 0;
+	};
+	B3D725C907EF206500D12E3F = {
+		fRef = B3D725CF07EF206500D12E3F;
+		isa = PBXTextBookmark;
+		name = "platform.h: 260";
+		rLen = 22;
+		rLoc = 6931;
+		rType = 0;
+		vrLen = 894;
+		vrLoc = 0;
+	};
+	B3D725CA07EF206500D12E3F = {
+		fRef = B3D725D007EF206500D12E3F;
+		isa = PBXTextBookmark;
+		name = "defs.h: 21";
+		rLen = 25;
+		rLoc = 659;
+		rType = 0;
+		vrLen = 1233;
+		vrLoc = 0;
+	};
+	B3D725CB07EF206500D12E3F = {
+		fRef = B3D725D107EF206500D12E3F;
+		isa = PBXTextBookmark;
+		name = "platform.h: 260";
+		rLen = 22;
+		rLoc = 6931;
+		rType = 0;
+		vrLen = 917;
+		vrLoc = 6564;
+	};
+	B3D725CC07EF206500D12E3F = {
+		isa = PBXTargetBookmark;
+		trg = 20286C34FDCF999611CA2CEA;
+		uiCtxt = {
+			TOCViewDetailVisibleRect = "{{0, 38}, {468, 434}}";
+			TOCViewExpandedItems = (
+				"com.apple.target-editor-pane.settings",
+				"com.apple.target-editor-pane.settings.simple",
+				"com.apple.target-editor-pane.info-plist",
+				"com.apple.target-editor-pane.info-plist.simple",
+				"com.apple.target-editor-pane.buildphases",
+			);
+			TOCViewMasterVisibleRect = "{{0, 0}, {177, 434}}";
+			TOCViewSelectedItems = (
+				PBXTargetGccCompilerSettingsModule,
+			);
+		};
+	};
+	B3D725CD07EF206500D12E3F = {
+		fRef = F51C3E4E03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tv.cpp: 573";
+		rLen = 0;
+		rLoc = 19657;
+		rType = 0;
+		vrLen = 1163;
+		vrLoc = 0;
+	};
+	B3D725CE07EF206500D12E3F = {
+		isa = PBXFileReference;
+		name = defs.h;
+		path = "/usr/local/include/wx-2.5/wx/defs.h";
+		refType = 0;
+	};
+	B3D725CF07EF206500D12E3F = {
+		isa = PBXFileReference;
+		name = platform.h;
+		path = "/usr/local/include/wx-2.5/wx/platform.h";
+		refType = 0;
+	};
+	B3D725D007EF206500D12E3F = {
+		isa = PBXFileReference;
+		name = defs.h;
+		path = "/usr/local/include/wx-2.5/wx/defs.h";
+		refType = 0;
+	};
+	B3D725D107EF206500D12E3F = {
+		isa = PBXFileReference;
+		name = platform.h;
+		path = "/usr/local/include/wx-2.5/wx/platform.h";
+		refType = 0;
+	};
+	B3D725D207EF206500D12E3F = {
+		isa = PBXFileReference;
+		name = platform.h;
+		path = "/usr/local/include/wx-2.5/wx/platform.h";
+		refType = 0;
+	};
+	F51C3E1D03C77CE101E7B49E = {
+		uiCtxt = {
+			sepNavWindowFrame = "{{15, 71}, {750, 502}}";
+		};
+	};
+	F51C3E4D03C77F0C01E7B49E = {
+		uiCtxt = {
+			sepNavWindowFrame = "{{38, 50}, {750, 502}}";
+		};
+	};
+	F51C3E4E03C77F0C01E7B49E = {
+		uiCtxt = {
+			sepNavWindowFrame = "{{15, 71}, {750, 502}}";
+		};
+	};
+	F51C3E4F03C77F0C01E7B49E = {
+		uiCtxt = {
+			sepNavWindowFrame = "{{15, 71}, {750, 502}}";
+		};
+	};
+	F51C3E5003C77F0C01E7B49E = {
+		uiCtxt = {
+			sepNavWindowFrame = "{{23, 56}, {750, 502}}";
+		};
+	};
+	F51C3E5103C77F0C01E7B49E = {
+		uiCtxt = {
+			sepNavWindowFrame = "{{15, 71}, {750, 502}}";
+		};
+	};
+	F53CB88A03CB09B3012A40F8 = {
+		uiCtxt = {
+			sepNavWindowFrame = "{{38, 50}, {750, 502}}";
+		};
+	};
+	F53CB88D03CB0A26012A40F8 = {
+		uiCtxt = {
+			sepNavWindowFrame = "{{15, 71}, {750, 502}}";
+		};
+	};
+	F53CB89003CB1EC9012A40F8 = {
+		fileReference = F51C3E5103C77F0C01E7B49E;
+		isa = PBXFileBreakpoint;
+		lineNumber = 49;
+		state = 2;
+	};
+	F5731A4F03C71AF8018DF32A = {
+		activeArgIndex = 2147483647;
+		activeArgIndices = (
+		);
+		argumentStrings = (
+		);
+		configStateDict = {
+		};
+		debuggerPlugin = GDBDebugging;
+		dylibVariantSuffix = "";
+		enableDebugStr = 1;
+		environmentEntries = (
+		);
+		isa = PBXExecutable;
+		name = tv;
+		shlibInfoDictList = (
+		);
+		sourceDirectories = (
+		);
+	};
+	F585386F06117B1901A80002 = {
+		fRef = F51C3E4E03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tv.cpp: __HAVE_BUILTIN_SETJMP__";
+		rLen = 0;
+		rLoc = 88;
+		rType = 0;
+		vrLen = 633;
+		vrLoc = 0;
+	};
+	F585387006117B1901A80002 = {
+		fRef = F51C3E4E03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tv.cpp: __HAVE_BUILTIN_SETJMP__";
+		rLen = 0;
+		rLoc = 88;
+		rType = 0;
+		vrLen = 633;
+		vrLoc = 0;
+	};
+	F5E2F10B05F7F86201A80003 = {
+		fRef = F51C3E4F03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tv.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1051;
+		vrLoc = 0;
+	};
+	F5E2F10F05F7F86201A80003 = {
+		fRef = F5E2F10505F7EAD201A80003;
+		isa = PBXBookmark;
+	};
+	F5E2F11005F7F86201A80003 = {
+		fRef = F5E2F10605F7EAD201A80003;
+		isa = PBXBookmark;
+	};
+	F5E2F11205F7F86201A80003 = {
+		isa = PBXTargetBookmark;
+		trg = 20286C34FDCF999611CA2CEA;
+	};
+	F5E2F11305F7F86201A80003 = {
+		fRef = F51C3E4E03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tv.cpp: __GNUC__";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1128;
+		vrLoc = 0;
+	};
+	F5E2F11405F7F86201A80003 = {
+		fRef = F51C3E4F03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tv.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1051;
+		vrLoc = 0;
+	};
+	F5E2F11505F7F86201A80003 = {
+		fRef = F51C3E4E03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tv.cpp: __GNUC__";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1128;
+		vrLoc = 0;
+	};
+	F5E2F11605F7F86201A80003 = {
+		isa = PBXTargetBookmark;
+		trg = 20286C34FDCF999611CA2CEA;
+	};
+	F5E2F11805F7F86201A80003 = {
+		isa = PBXTargetBookmark;
+		trg = 20286C34FDCF999611CA2CEA;
+	};
+	F5E2F11A05F7F86201A80003 = {
+		isa = PBXTargetBookmark;
+		trg = 20286C34FDCF999611CA2CEA;
+	};
+	F5E2F11B05F7F86201A80003 = {
+		fRef = F5E2F10505F7EAD201A80003;
+		isa = PBXBookmark;
+	};
+	F5E2F11C05F7F86201A80003 = {
+		fRef = F5E2F10605F7EAD201A80003;
+		isa = PBXBookmark;
+	};
+	F5E2F11E05F7F86201A80003 = {
+		fRef = F51C3E4E03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tv.cpp: __GNUC__";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 857;
+		vrLoc = 0;
+	};
+	F5E2F11F05F7F86201A80003 = {
+		fRef = F51C3DDD03C77A7801E7B49E;
+		isa = PBXTextBookmark;
+		name = "gtree.cpp: __GNUC__";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 875;
+		vrLoc = 0;
+	};
+	F5E2F12105F7F86201A80003 = {
+		fRef = F5E2F10505F7EAD201A80003;
+		isa = PBXBookmark;
+	};
+	F5E2F12205F7F86201A80003 = {
+		fRef = F5E2F10605F7EAD201A80003;
+		isa = PBXBookmark;
+	};
+	F5F3B9A406013AFC01A80002 = {
+		fRef = F51C3E5103C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tview.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 514;
+		vrLoc = 1138;
+	};
+	F5F3B9A506013AFC01A80002 = {
+		fRef = F51C3E4D03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tproject.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 605;
+		vrLoc = 1585;
+	};
+	F5F3B9A606013AFC01A80002 = {
+		fRef = F51C3E4C03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tdoc.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 857;
+		vrLoc = 0;
+	};
+	F5F3B9A706013AFC01A80002 = {
+		fRef = F51C3DE303C77A7801E7B49E;
+		isa = PBXTextBookmark;
+		name = "profile.h: 414";
+		rLen = 0;
+		rLoc = 11594;
+		rType = 0;
+		vrLen = 467;
+		vrLoc = 11306;
+	};
+	F5F3B9A906013AFC01A80002 = {
+		isa = PBXTargetBookmark;
+		trg = 20286C34FDCF999611CA2CEA;
+	};
+	F5F3B9AA06013AFC01A80002 = {
+		fRef = F51C3E5103C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tview.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 514;
+		vrLoc = 1138;
+	};
+	F5F3B9AB06013AFC01A80002 = {
+		fRef = F51C3E4D03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tproject.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 605;
+		vrLoc = 1585;
+	};
+	F5F3B9AC06013AFC01A80002 = {
+		fRef = F51C3DE303C77A7801E7B49E;
+		isa = PBXTextBookmark;
+		name = "profile.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 453;
+		vrLoc = 11245;
+	};
+	F5F3B9AD06013AFC01A80002 = {
+		fRef = F51C3E4D03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tproject.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 605;
+		vrLoc = 1585;
+	};
+	F5F3B9AE06013AFC01A80002 = {
+		fRef = F51C3E4C03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tdoc.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 857;
+		vrLoc = 0;
+	};
+	F5F3B9AF06013AFC01A80002 = {
+		fRef = F51C3E4E03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tv.cpp: __GNUC__";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 857;
+		vrLoc = 0;
+	};
+	F5F3B9B006013AFC01A80002 = {
+		fRef = F51C3DE303C77A7801E7B49E;
+		isa = PBXTextBookmark;
+		name = "profile.h: 414";
+		rLen = 0;
+		rLoc = 11594;
+		rType = 0;
+		vrLen = 467;
+		vrLoc = 11306;
+	};
+}


Property changes on: trunk/packages/treeviewx/branches/upstream/current/tv.pbproj/rpage.pbxuser
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/tv.spec.in
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tv.spec.in	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tv.spec.in	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,57 @@
+%define name tv
+%define version @VERSION@
+%define release 1
+
+Summary: TreeView X.
+Name: %{name}
+Version: %{version}
+Release: %{release}
+Source: http://darwin.zoology.gla.ac.uk/~rpage/treeviewx/%{name}-%{version}.tar.gz
+Vendor: Roderic D. M. Page
+URL: http://darwin.zoology.gla.ac.uk/~rpage/treeviewx/
+License: GPL
+Group: Sciences/Biology
+BuildRoot: %{_builddir}/%{name}-buildroot
+Prefix: %{_prefix}
+Requires: wxGTK >= 2.4.0
+BuildRequires: wxGTK-devel >= 2.4.0
+
+
+%description
+Phylogenetic tree viewer.
+
+
+%prep
+%setup -q
+
+%build
+if [ -x ./configure ]; then
+  CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{_prefix}
+else
+  CFLAGS="$RPM_OPT_FLAGS" ./autogen.sh --prefix=%{_prefix}
+fi
+make
+
+%install
+rm -rf $RPM_BUILD_ROOT
+make DESTDIR=$RPM_BUILD_ROOT install
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root)
+%doc AUTHORS ChangeLog COPYING INSTALL NEWS README
+%{_bindir}/*
+
+
+
+
+
+%changelog
+* Wed May 21 2003 R. D. M. Page
+- First draft of the spec file


Property changes on: trunk/packages/treeviewx/branches/upstream/current/tv.spec.in
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/tv.xcode/project.pbxproj
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tv.xcode/project.pbxproj	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tv.xcode/project.pbxproj	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,1915 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 39;
+	objects = {
+		0249A669FF388E3911CA2CEA = {
+			isa = PBXFileReference;
+			lastKnownFileType = archive.ar;
+			name = "libstdc++.a";
+			path = "/usr/lib/libstdc++.a";
+			refType = 0;
+			sourceTree = "<absolute>";
+		};
+//020
+//021
+//022
+//023
+//024
+//050
+//051
+//052
+//053
+//054
+		05952DFCFFF02D1B11CA0E50 = {
+			buildSettings = {
+				COPY_PHASE_STRIP = NO;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				OPTIMIZATION_CFLAGS = "-O0";
+				OTHER_CPLUSPLUSFLAGS = "-D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -DUSE_WXWINDOWS -D__WXMAC__ -DWX_PRECOMP -DNO_GCC_PRAGMA -I/usr/local/lib/wx/include/mac-ansi-release-2.5 -I/usr/local/include/wx-2.5";
+				ZERO_LINK = YES;
+			};
+			isa = PBXBuildStyle;
+			name = Development;
+		};
+		05952DFDFFF02D1B11CA0E50 = {
+			buildSettings = {
+				COPY_PHASE_STRIP = YES;
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				ZERO_LINK = NO;
+			};
+			isa = PBXBuildStyle;
+			name = Deployment;
+		};
+//050
+//051
+//052
+//053
+//054
+//190
+//191
+//192
+//193
+//194
+		195DF8C9FE9D4F0611CA2CBB = {
+			children = (
+				B30D63B007E1CF2B00F1DA33,
+			);
+			isa = PBXGroup;
+			name = Products;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+//190
+//191
+//192
+//193
+//194
+//200
+//201
+//202
+//203
+//204
+		20286C28FDCF999611CA2CEA = {
+			buildSettings = {
+			};
+			buildStyles = (
+				05952DFCFFF02D1B11CA0E50,
+				05952DFDFFF02D1B11CA0E50,
+			);
+			hasScannedForEncodings = 0;
+			isa = PBXProject;
+			mainGroup = 20286C29FDCF999611CA2CEA;
+			projectDirPath = "";
+			targets = (
+				B30D635D07E1CF2B00F1DA33,
+			);
+		};
+		20286C29FDCF999611CA2CEA = {
+			children = (
+				B382849307CA955F006079D9,
+				F51C3E0A03C77CB501E7B49E,
+				F51C3DDC03C77A2301E7B49E,
+				20286C2AFDCF999611CA2CEA,
+				20286C2CFDCF999611CA2CEA,
+				20286C32FDCF999611CA2CEA,
+				195DF8C9FE9D4F0611CA2CBB,
+			);
+			isa = PBXGroup;
+			name = "«PROJECTNAME»";
+			path = "";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		20286C2AFDCF999611CA2CEA = {
+			children = (
+				F53CB89103CB2010012A40F8,
+				F51C3E4B03C77F0C01E7B49E,
+				F51C3E4C03C77F0C01E7B49E,
+				F51C3E4D03C77F0C01E7B49E,
+				F51C3E4E03C77F0C01E7B49E,
+				F51C3E4F03C77F0C01E7B49E,
+				F51C3E5003C77F0C01E7B49E,
+				F51C3E5103C77F0C01E7B49E,
+			);
+			isa = PBXGroup;
+			name = Sources;
+			path = "";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		20286C2CFDCF999611CA2CEA = {
+			children = (
+				B33EB36C07E6A58700855069,
+				B38284AC07CA9648006079D9,
+				F5E2F10505F7EAD201A80003,
+				F5E2F10605F7EAD201A80003,
+			);
+			isa = PBXGroup;
+			name = Resources;
+			path = "";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		20286C32FDCF999611CA2CEA = {
+			children = (
+				B3F0ECCB07E5CBF30092E9FE,
+				B3F0ECBF07E5CB8F0092E9FE,
+				B30D63BC07E1DA3100F1DA33,
+				B382870807CA9A4B006079D9,
+				B382870907CA9A4B006079D9,
+				B382870A07CA9A4B006079D9,
+				B382870B07CA9A4B006079D9,
+				20286C33FDCF999611CA2CEA,
+				0249A669FF388E3911CA2CEA,
+			);
+			isa = PBXGroup;
+			name = "External Frameworks and Libraries";
+			path = "";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		20286C33FDCF999611CA2CEA = {
+			isa = PBXFileReference;
+			lastKnownFileType = wrapper.framework;
+			name = Carbon.framework;
+			path = /System/Library/Frameworks/Carbon.framework;
+			refType = 0;
+			sourceTree = "<absolute>";
+		};
+//200
+//201
+//202
+//203
+//204
+//B30
+//B31
+//B32
+//B33
+//B34
+		B30D635D07E1CF2B00F1DA33 = {
+			buildPhases = (
+				B30D635E07E1CF2B00F1DA33,
+				B30D637F07E1CF2B00F1DA33,
+				B30D638207E1CF2B00F1DA33,
+				B30D639F07E1CF2B00F1DA33,
+				B30D63AE07E1CF2B00F1DA33,
+			);
+			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = "";
+				HEADER_SEARCH_PATHS = "TreeLib/gport /usr/local/lib/wx/include/mac-2.4";
+				INSTALL_PATH = "$(HOME)/Applications";
+				LIBRARY_SEARCH_PATHS = "/usr/local/lib /Users/rpage/development/tv";
+				OTHER_CFLAGS = "-Wno-deprecated -D__WXMAC__ -DWXMAKINGDLL -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -DUSE_WXWINDOWS";
+				OTHER_LDFLAGS = "";
+				OTHER_REZFLAGS = Carbon.r;
+				PREBINDING = NO;
+				PRODUCT_NAME = "TreeView X";
+				SECTORDER_FLAGS = "";
+				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
+				WRAPPER_EXTENSION = app;
+			};
+			dependencies = (
+			);
+			isa = PBXApplicationTarget;
+			name = "tv static";
+			productInstallPath = "$(HOME)/Applications";
+			productName = "«PROJECTNAME»";
+			productReference = B30D63B007E1CF2B00F1DA33;
+			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
+<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
+<plist version=\"1.0\">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleDocumentTypes</key>
+	<array>
+		<dict>
+			<key>CFBundleTypeExtensions</key>
+			<array>
+				<string>tre</string>
+			</array>
+			<key>CFBundleTypeIconFile</key>
+			<string>doc.icns</string>
+			<key>CFBundleTypeName</key>
+			<string>TreeView X document</string>
+			<key>CFBundleTypeOSTypes</key>
+			<array>
+				<string>TEXT</string>
+			</array>
+			<key>CFBundleTypeRole</key>
+			<string>Viewer</string>
+		</dict>
+		<dict>
+			<key>CFBundleTypeExtensions</key>
+			<array>
+				<string>tree</string>
+			</array>
+			<key>CFBundleTypeIconFile</key>
+			<string>doc.icns</string>
+			<key>CFBundleTypeName</key>
+			<string>TreeView X document</string>
+			<key>CFBundleTypeOSTypes</key>
+			<array>
+				<string>TEXT</string>
+			</array>
+			<key>CFBundleTypeRole</key>
+			<string>Viewer</string>
+		</dict>
+		<dict>
+			<key>CFBundleTypeExtensions</key>
+			<array>
+				<string>*</string>
+			</array>
+			<key>CFBundleTypeName</key>
+			<string>Plain text</string>
+			<key>CFBundleTypeOSTypes</key>
+			<array>
+				<string>****</string>
+			</array>
+			<key>CFBundleTypeRole</key>
+			<string>Viewer</string>
+		</dict>
+	</array>
+	<key>CFBundleExecutable</key>
+	<string>TreeView X</string>
+	<key>CFBundleGetInfoString</key>
+	<string>TreeView X (c) 2004 Roderic D. M. Page</string>
+	<key>CFBundleIconFile</key>
+	<string>app.icns</string>
+	<key>CFBundleIdentifier</key>
+	<string>uk.ac.gla.zoology.treeviewx</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>TreeView X</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>0.4.1</string>
+	<key>CFBundleSignature</key>
+	<string>TreX</string>
+	<key>CFBundleVersion</key>
+	<string>0.4.1</string>
+	<key>CSResourcesFileMapped</key>
+	<true/>
+</dict>
+</plist>
+";
+		};
+		B30D635E07E1CF2B00F1DA33 = {
+			buildActionMask = 2147483647;
+			files = (
+				B30D635F07E1CF2B00F1DA33,
+				B30D636007E1CF2B00F1DA33,
+				B30D636107E1CF2B00F1DA33,
+				B30D636207E1CF2B00F1DA33,
+				B30D636307E1CF2B00F1DA33,
+				B30D636407E1CF2B00F1DA33,
+				B30D636507E1CF2B00F1DA33,
+				B30D636607E1CF2B00F1DA33,
+				B30D636707E1CF2B00F1DA33,
+				B30D636807E1CF2B00F1DA33,
+				B30D636907E1CF2B00F1DA33,
+				B30D636A07E1CF2B00F1DA33,
+				B30D636B07E1CF2B00F1DA33,
+				B30D636C07E1CF2B00F1DA33,
+				B30D636D07E1CF2B00F1DA33,
+				B30D636E07E1CF2B00F1DA33,
+				B30D636F07E1CF2B00F1DA33,
+				B30D637007E1CF2B00F1DA33,
+				B30D637107E1CF2B00F1DA33,
+				B30D637207E1CF2B00F1DA33,
+				B30D637307E1CF2B00F1DA33,
+				B30D637407E1CF2B00F1DA33,
+				B30D637507E1CF2B00F1DA33,
+				B30D637607E1CF2B00F1DA33,
+				B30D637707E1CF2B00F1DA33,
+				B30D637807E1CF2B00F1DA33,
+				B30D637907E1CF2B00F1DA33,
+				B30D637A07E1CF2B00F1DA33,
+				B30D637B07E1CF2B00F1DA33,
+				B30D637C07E1CF2B00F1DA33,
+				B30D637D07E1CF2B00F1DA33,
+				B30D637E07E1CF2B00F1DA33,
+			);
+			isa = PBXHeadersBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B30D635F07E1CF2B00F1DA33 = {
+			fileRef = F51C3DDE03C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D636007E1CF2B00F1DA33 = {
+			fileRef = F51C3DE203C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D636107E1CF2B00F1DA33 = {
+			fileRef = F51C3DE303C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D636207E1CF2B00F1DA33 = {
+			fileRef = F51C3DE503C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D636307E1CF2B00F1DA33 = {
+			fileRef = F51C3DE703C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D636407E1CF2B00F1DA33 = {
+			fileRef = F51C3DE903C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D636507E1CF2B00F1DA33 = {
+			fileRef = F51C3DEB03C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D636607E1CF2B00F1DA33 = {
+			fileRef = F51C3DED03C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D636707E1CF2B00F1DA33 = {
+			fileRef = F51C3DEF03C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D636807E1CF2B00F1DA33 = {
+			fileRef = F51C3E0403C77AF401E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D636907E1CF2B00F1DA33 = {
+			fileRef = F51C3E0C03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D636A07E1CF2B00F1DA33 = {
+			fileRef = F51C3E0E03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D636B07E1CF2B00F1DA33 = {
+			fileRef = F51C3E1003C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D636C07E1CF2B00F1DA33 = {
+			fileRef = F51C3E1203C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D636D07E1CF2B00F1DA33 = {
+			fileRef = F51C3E1403C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D636E07E1CF2B00F1DA33 = {
+			fileRef = F51C3E1603C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D636F07E1CF2B00F1DA33 = {
+			fileRef = F51C3E1803C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D637007E1CF2B00F1DA33 = {
+			fileRef = F51C3E1A03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D637107E1CF2B00F1DA33 = {
+			fileRef = F51C3E1C03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D637207E1CF2B00F1DA33 = {
+			fileRef = F51C3E1E03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D637307E1CF2B00F1DA33 = {
+			fileRef = F51C3E2003C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D637407E1CF2B00F1DA33 = {
+			fileRef = F51C3E2203C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D637507E1CF2B00F1DA33 = {
+			fileRef = F51C3E2403C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D637607E1CF2B00F1DA33 = {
+			fileRef = F51C3E2603C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D637707E1CF2B00F1DA33 = {
+			fileRef = F51C3E2803C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D637807E1CF2B00F1DA33 = {
+			fileRef = F51C3E2A03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D637907E1CF2B00F1DA33 = {
+			fileRef = F51C3E4C03C77F0C01E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D637A07E1CF2B00F1DA33 = {
+			fileRef = F51C3E4F03C77F0C01E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D637B07E1CF2B00F1DA33 = {
+			fileRef = F51C3E5103C77F0C01E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D637C07E1CF2B00F1DA33 = {
+			fileRef = F51C3E4D03C77F0C01E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D637D07E1CF2B00F1DA33 = {
+			fileRef = F53CB88A03CB09B3012A40F8;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D637E07E1CF2B00F1DA33 = {
+			fileRef = F5E2F10905F7EFFC01A80003;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D637F07E1CF2B00F1DA33 = {
+			buildActionMask = 2147483647;
+			files = (
+				B30D638007E1CF2B00F1DA33,
+				B30D638107E1CF2B00F1DA33,
+				B33EB36E07E6A5BF00855069,
+				B33EB37D07E6A5FE00855069,
+				B33EB37E07E6A5FE00855069,
+				B33EB37F07E6A5FE00855069,
+				B33EB38007E6A5FE00855069,
+				B33EB38107E6A5FE00855069,
+				B33EB38207E6A5FE00855069,
+				B33EB38307E6A5FE00855069,
+				B33EB38407E6A5FE00855069,
+				B33EB38507E6A5FE00855069,
+				B33EB38607E6A5FE00855069,
+				B33EB38707E6A5FE00855069,
+				B33EB38807E6A5FE00855069,
+				B33EB38907E6A5FE00855069,
+				B33EB38A07E6A5FE00855069,
+			);
+			isa = PBXResourcesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B30D638007E1CF2B00F1DA33 = {
+			fileRef = F5E2F10505F7EAD201A80003;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D638107E1CF2B00F1DA33 = {
+			fileRef = F5E2F10605F7EAD201A80003;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D638207E1CF2B00F1DA33 = {
+			buildActionMask = 2147483647;
+			files = (
+				B30D638307E1CF2B00F1DA33,
+				B30D638407E1CF2B00F1DA33,
+				B30D638507E1CF2B00F1DA33,
+				B30D638607E1CF2B00F1DA33,
+				B30D638707E1CF2B00F1DA33,
+				B30D638807E1CF2B00F1DA33,
+				B30D638907E1CF2B00F1DA33,
+				B30D638A07E1CF2B00F1DA33,
+				B30D638B07E1CF2B00F1DA33,
+				B30D638C07E1CF2B00F1DA33,
+				B30D638D07E1CF2B00F1DA33,
+				B30D638E07E1CF2B00F1DA33,
+				B30D638F07E1CF2B00F1DA33,
+				B30D639007E1CF2B00F1DA33,
+				B30D639107E1CF2B00F1DA33,
+				B30D639207E1CF2B00F1DA33,
+				B30D639307E1CF2B00F1DA33,
+				B30D639407E1CF2B00F1DA33,
+				B30D639507E1CF2B00F1DA33,
+				B30D639607E1CF2B00F1DA33,
+				B30D639707E1CF2B00F1DA33,
+				B30D639807E1CF2B00F1DA33,
+				B30D639907E1CF2B00F1DA33,
+				B30D639A07E1CF2B00F1DA33,
+				B30D639B07E1CF2B00F1DA33,
+				B30D639C07E1CF2B00F1DA33,
+				B30D639D07E1CF2B00F1DA33,
+				B30D639E07E1CF2B00F1DA33,
+			);
+			isa = PBXSourcesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B30D638307E1CF2B00F1DA33 = {
+			fileRef = F51C3DDD03C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D638407E1CF2B00F1DA33 = {
+			fileRef = F51C3DE103C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D638507E1CF2B00F1DA33 = {
+			fileRef = F51C3DE403C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D638607E1CF2B00F1DA33 = {
+			fileRef = F51C3DE603C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D638707E1CF2B00F1DA33 = {
+			fileRef = F51C3DE803C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D638807E1CF2B00F1DA33 = {
+			fileRef = F51C3DEA03C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D638907E1CF2B00F1DA33 = {
+			fileRef = F51C3DEC03C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D638A07E1CF2B00F1DA33 = {
+			fileRef = F51C3DEE03C77A7801E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D638B07E1CF2B00F1DA33 = {
+			fileRef = F51C3E0B03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D638C07E1CF2B00F1DA33 = {
+			fileRef = F51C3E0D03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D638D07E1CF2B00F1DA33 = {
+			fileRef = F51C3E0F03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D638E07E1CF2B00F1DA33 = {
+			fileRef = F51C3E1103C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D638F07E1CF2B00F1DA33 = {
+			fileRef = F51C3E1303C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D639007E1CF2B00F1DA33 = {
+			fileRef = F51C3E1503C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D639107E1CF2B00F1DA33 = {
+			fileRef = F51C3E1703C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D639207E1CF2B00F1DA33 = {
+			fileRef = F51C3E1903C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D639307E1CF2B00F1DA33 = {
+			fileRef = F51C3E1B03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D639407E1CF2B00F1DA33 = {
+			fileRef = F51C3E1D03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D639507E1CF2B00F1DA33 = {
+			fileRef = F51C3E1F03C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D639607E1CF2B00F1DA33 = {
+			fileRef = F51C3E2103C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D639707E1CF2B00F1DA33 = {
+			fileRef = F51C3E2303C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D639807E1CF2B00F1DA33 = {
+			fileRef = F51C3E2503C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D639907E1CF2B00F1DA33 = {
+			fileRef = F51C3E2703C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D639A07E1CF2B00F1DA33 = {
+			fileRef = F51C3E2903C77CE101E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D639B07E1CF2B00F1DA33 = {
+			fileRef = F51C3E4B03C77F0C01E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D639C07E1CF2B00F1DA33 = {
+			fileRef = F51C3E4E03C77F0C01E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D639D07E1CF2B00F1DA33 = {
+			fileRef = F51C3E5003C77F0C01E7B49E;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D639E07E1CF2B00F1DA33 = {
+			fileRef = F53CB88D03CB0A26012A40F8;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D639F07E1CF2B00F1DA33 = {
+			buildActionMask = 2147483647;
+			files = (
+				B30D63A007E1CF2B00F1DA33,
+				B30D63A107E1CF2B00F1DA33,
+				B30D63A207E1CF2B00F1DA33,
+				B30D63A307E1CF2B00F1DA33,
+				B30D63A407E1CF2B00F1DA33,
+				B30D63A507E1CF2B00F1DA33,
+				B30D63BF07E1DA5A00F1DA33,
+				B30D63CA07E1DA6900F1DA33,
+				B30D63CD07E1DA6900F1DA33,
+				B30D63CE07E1DA6900F1DA33,
+				B30D63CF07E1DA6900F1DA33,
+				B30D63D107E1DA6900F1DA33,
+				B30D63D207E1DA6900F1DA33,
+				B30D63D707E1DAC800F1DA33,
+				B3F0ECC007E5CB8F0092E9FE,
+				B3F0ECC607E5CBD00092E9FE,
+				B3F0ECC707E5CBD00092E9FE,
+				B3F0ECC807E5CBD00092E9FE,
+				B3F0ECCC07E5CBF30092E9FE,
+			);
+			isa = PBXFrameworksBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B30D63A007E1CF2B00F1DA33 = {
+			fileRef = 20286C33FDCF999611CA2CEA;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D63A107E1CF2B00F1DA33 = {
+			fileRef = 0249A669FF388E3911CA2CEA;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D63A207E1CF2B00F1DA33 = {
+			fileRef = B382870807CA9A4B006079D9;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D63A307E1CF2B00F1DA33 = {
+			fileRef = B382870907CA9A4B006079D9;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D63A407E1CF2B00F1DA33 = {
+			fileRef = B382870A07CA9A4B006079D9;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D63A507E1CF2B00F1DA33 = {
+			fileRef = B382870B07CA9A4B006079D9;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D63AE07E1CF2B00F1DA33 = {
+			buildActionMask = 2147483647;
+			files = (
+				B30D63AF07E1CF2B00F1DA33,
+			);
+			isa = PBXRezBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		B30D63AF07E1CF2B00F1DA33 = {
+			fileRef = B38284AC07CA9648006079D9;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D63B007E1CF2B00F1DA33 = {
+			explicitFileType = wrapper.application;
+			includeInIndex = 0;
+			isa = PBXFileReference;
+			path = "TreeView X.app";
+			refType = 3;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		B30D63BC07E1DA3100F1DA33 = {
+			children = (
+				B3F0ECC307E5CBD00092E9FE,
+				B3F0ECC407E5CBD00092E9FE,
+				B3F0ECC507E5CBD00092E9FE,
+				B30D63D607E1DAC800F1DA33,
+				B30D63C107E1DA6800F1DA33,
+				B30D63C407E1DA6800F1DA33,
+				B30D63C507E1DA6800F1DA33,
+				B30D63C607E1DA6800F1DA33,
+				B30D63C807E1DA6900F1DA33,
+				B30D63C907E1DA6900F1DA33,
+				B30D63BE07E1DA5A00F1DA33,
+			);
+			isa = PBXGroup;
+			name = "wxWidgets static";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B30D63BE07E1DA5A00F1DA33 = {
+			isa = PBXFileReference;
+			lastKnownFileType = archive.ar;
+			name = "libwx_mac_xrc-2.5.a";
+			path = "/usr/local/lib/libwx_mac_xrc-2.5.a";
+			refType = 0;
+			sourceTree = "<absolute>";
+		};
+		B30D63BF07E1DA5A00F1DA33 = {
+			fileRef = B30D63BE07E1DA5A00F1DA33;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D63C107E1DA6800F1DA33 = {
+			isa = PBXFileReference;
+			lastKnownFileType = archive.ar;
+			path = "libwx_mac_adv-2.5.a";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B30D63C407E1DA6800F1DA33 = {
+			isa = PBXFileReference;
+			lastKnownFileType = archive.ar;
+			path = "libwx_base_carbon-2.5.a";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B30D63C507E1DA6800F1DA33 = {
+			isa = PBXFileReference;
+			lastKnownFileType = archive.ar;
+			path = "libwx_base_carbon_xml-2.5.a";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B30D63C607E1DA6800F1DA33 = {
+			isa = PBXFileReference;
+			lastKnownFileType = archive.ar;
+			path = "libwx_mac_html-2.5.a";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B30D63C807E1DA6900F1DA33 = {
+			isa = PBXFileReference;
+			lastKnownFileType = archive.ar;
+			path = "libwx_base_carbon_net-2.5.a";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B30D63C907E1DA6900F1DA33 = {
+			isa = PBXFileReference;
+			lastKnownFileType = archive.ar;
+			path = "libwx_mac_core-2.5.a";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B30D63CA07E1DA6900F1DA33 = {
+			fileRef = B30D63C107E1DA6800F1DA33;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D63CD07E1DA6900F1DA33 = {
+			fileRef = B30D63C407E1DA6800F1DA33;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D63CE07E1DA6900F1DA33 = {
+			fileRef = B30D63C507E1DA6800F1DA33;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D63CF07E1DA6900F1DA33 = {
+			fileRef = B30D63C607E1DA6800F1DA33;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D63D107E1DA6900F1DA33 = {
+			fileRef = B30D63C807E1DA6900F1DA33;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D63D207E1DA6900F1DA33 = {
+			fileRef = B30D63C907E1DA6900F1DA33;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B30D63D607E1DAC800F1DA33 = {
+			isa = PBXFileReference;
+			lastKnownFileType = archive.ar;
+			path = "libwx_mac_svg-2.5.a";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B30D63D707E1DAC800F1DA33 = {
+			fileRef = B30D63D607E1DAC800F1DA33;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B33EB36C07E6A58700855069 = {
+			children = (
+				B33EB36F07E6A5FE00855069,
+				B33EB37007E6A5FE00855069,
+				B33EB37107E6A5FE00855069,
+				B33EB37207E6A5FE00855069,
+				B33EB37307E6A5FE00855069,
+				B33EB37407E6A5FE00855069,
+				B33EB37507E6A5FE00855069,
+				B33EB37607E6A5FE00855069,
+				B33EB37707E6A5FE00855069,
+				B33EB37807E6A5FE00855069,
+				B33EB37907E6A5FE00855069,
+				B33EB37A07E6A5FE00855069,
+				B33EB37B07E6A5FE00855069,
+				B33EB37C07E6A5FE00855069,
+				B33EB36D07E6A5BF00855069,
+			);
+			isa = PBXGroup;
+			name = Bitmaps;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B33EB36D07E6A5BF00855069 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			lastKnownFileType = text;
+			name = copy.xpm;
+			path = bitmaps/mac/copy.xpm;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B33EB36E07E6A5BF00855069 = {
+			fileRef = B33EB36D07E6A5BF00855069;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B33EB36F07E6A5FE00855069 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			lastKnownFileType = text;
+			name = internal.xpm;
+			path = bitmaps/mac/internal.xpm;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B33EB37007E6A5FE00855069 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			lastKnownFileType = text;
+			name = new.xpm;
+			path = bitmaps/mac/new.xpm;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B33EB37107E6A5FE00855069 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			lastKnownFileType = text;
+			name = next.xpm;
+			path = bitmaps/mac/next.xpm;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B33EB37207E6A5FE00855069 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			lastKnownFileType = text;
+			name = open.xpm;
+			path = bitmaps/mac/open.xpm;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B33EB37307E6A5FE00855069 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			lastKnownFileType = text;
+			name = paste.xpm;
+			path = bitmaps/mac/paste.xpm;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B33EB37407E6A5FE00855069 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			lastKnownFileType = text;
+			name = phylogram.xpm;
+			path = bitmaps/mac/phylogram.xpm;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B33EB37507E6A5FE00855069 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			lastKnownFileType = text;
+			name = previous.xpm;
+			path = bitmaps/mac/previous.xpm;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B33EB37607E6A5FE00855069 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			lastKnownFileType = text;
+			name = print_preview.xpm;
+			path = bitmaps/mac/print_preview.xpm;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B33EB37707E6A5FE00855069 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			lastKnownFileType = text;
+			name = print.xpm;
+			path = bitmaps/mac/print.xpm;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B33EB37807E6A5FE00855069 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			lastKnownFileType = text;
+			name = rectangletree.xpm;
+			path = bitmaps/mac/rectangletree.xpm;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B33EB37907E6A5FE00855069 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			lastKnownFileType = text;
+			name = saveas.xpm;
+			path = bitmaps/mac/saveas.xpm;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B33EB37A07E6A5FE00855069 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			lastKnownFileType = text;
+			name = slanttree.xpm;
+			path = bitmaps/mac/slanttree.xpm;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B33EB37B07E6A5FE00855069 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			lastKnownFileType = text;
+			name = zoomin.xpm;
+			path = bitmaps/mac/zoomin.xpm;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B33EB37C07E6A5FE00855069 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			lastKnownFileType = text;
+			name = zoomout.xpm;
+			path = bitmaps/mac/zoomout.xpm;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B33EB37D07E6A5FE00855069 = {
+			fileRef = B33EB36F07E6A5FE00855069;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B33EB37E07E6A5FE00855069 = {
+			fileRef = B33EB37007E6A5FE00855069;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B33EB37F07E6A5FE00855069 = {
+			fileRef = B33EB37107E6A5FE00855069;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B33EB38007E6A5FE00855069 = {
+			fileRef = B33EB37207E6A5FE00855069;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B33EB38107E6A5FE00855069 = {
+			fileRef = B33EB37307E6A5FE00855069;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B33EB38207E6A5FE00855069 = {
+			fileRef = B33EB37407E6A5FE00855069;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B33EB38307E6A5FE00855069 = {
+			fileRef = B33EB37507E6A5FE00855069;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B33EB38407E6A5FE00855069 = {
+			fileRef = B33EB37607E6A5FE00855069;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B33EB38507E6A5FE00855069 = {
+			fileRef = B33EB37707E6A5FE00855069;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B33EB38607E6A5FE00855069 = {
+			fileRef = B33EB37807E6A5FE00855069;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B33EB38707E6A5FE00855069 = {
+			fileRef = B33EB37907E6A5FE00855069;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B33EB38807E6A5FE00855069 = {
+			fileRef = B33EB37A07E6A5FE00855069;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B33EB38907E6A5FE00855069 = {
+			fileRef = B33EB37B07E6A5FE00855069;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B33EB38A07E6A5FE00855069 = {
+			fileRef = B33EB37C07E6A5FE00855069;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B382849307CA955F006079D9 = {
+			children = (
+			);
+			isa = PBXGroup;
+			name = Headers;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		B38284AC07CA9648006079D9 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.rez;
+			name = "libwx_mac-2.5.3.r";
+			path = "/usr/local/lib/libwx_mac-2.5.3.r";
+			refType = 0;
+			sourceTree = "<absolute>";
+		};
+		B382870807CA9A4B006079D9 = {
+			isa = PBXFileReference;
+			lastKnownFileType = wrapper.framework;
+			name = Cocoa.framework;
+			path = /System/Library/Frameworks/Cocoa.framework;
+			refType = 0;
+			sourceTree = "<absolute>";
+		};
+		B382870907CA9A4B006079D9 = {
+			isa = PBXFileReference;
+			lastKnownFileType = wrapper.framework;
+			name = IOKit.framework;
+			path = /System/Library/Frameworks/IOKit.framework;
+			refType = 0;
+			sourceTree = "<absolute>";
+		};
+		B382870A07CA9A4B006079D9 = {
+			isa = PBXFileReference;
+			lastKnownFileType = wrapper.framework;
+			name = QuickTime.framework;
+			path = /System/Library/Frameworks/QuickTime.framework;
+			refType = 0;
+			sourceTree = "<absolute>";
+		};
+		B382870B07CA9A4B006079D9 = {
+			isa = PBXFileReference;
+			lastKnownFileType = wrapper.framework;
+			name = System.framework;
+			path = /System/Library/Frameworks/System.framework;
+			refType = 0;
+			sourceTree = "<absolute>";
+		};
+		B3F0ECBF07E5CB8F0092E9FE = {
+			isa = PBXFileReference;
+			lastKnownFileType = "compiled.mach-o.dylib";
+			name = libiconv.dylib;
+			path = /usr/lib/libiconv.dylib;
+			refType = 0;
+			sourceTree = "<absolute>";
+		};
+		B3F0ECC007E5CB8F0092E9FE = {
+			fileRef = B3F0ECBF07E5CB8F0092E9FE;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B3F0ECC307E5CBD00092E9FE = {
+			isa = PBXFileReference;
+			lastKnownFileType = archive.ar;
+			name = "libwxtiff-2.5.a";
+			path = "/usr/local/lib/libwxtiff-2.5.a";
+			refType = 0;
+			sourceTree = "<absolute>";
+		};
+		B3F0ECC407E5CBD00092E9FE = {
+			isa = PBXFileReference;
+			lastKnownFileType = archive.ar;
+			name = "libwxpng-2.5.a";
+			path = "/usr/local/lib/libwxpng-2.5.a";
+			refType = 0;
+			sourceTree = "<absolute>";
+		};
+		B3F0ECC507E5CBD00092E9FE = {
+			isa = PBXFileReference;
+			lastKnownFileType = archive.ar;
+			name = "libwxjpeg-2.5.a";
+			path = "/usr/local/lib/libwxjpeg-2.5.a";
+			refType = 0;
+			sourceTree = "<absolute>";
+		};
+		B3F0ECC607E5CBD00092E9FE = {
+			fileRef = B3F0ECC307E5CBD00092E9FE;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B3F0ECC707E5CBD00092E9FE = {
+			fileRef = B3F0ECC407E5CBD00092E9FE;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B3F0ECC807E5CBD00092E9FE = {
+			fileRef = B3F0ECC507E5CBD00092E9FE;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		B3F0ECCB07E5CBF30092E9FE = {
+			isa = PBXFileReference;
+			lastKnownFileType = "compiled.mach-o.dylib";
+			name = libz.dylib;
+			path = /usr/lib/libz.dylib;
+			refType = 0;
+			sourceTree = "<absolute>";
+		};
+		B3F0ECCC07E5CBF30092E9FE = {
+			fileRef = B3F0ECCB07E5CBF30092E9FE;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+//B30
+//B31
+//B32
+//B33
+//B34
+//F50
+//F51
+//F52
+//F53
+//F54
+		F51C3DDC03C77A2301E7B49E = {
+			children = (
+				F51C3E0303C77AF401E7B49E,
+				F51C3DDD03C77A7801E7B49E,
+				F51C3DDE03C77A7801E7B49E,
+				F51C3DE103C77A7801E7B49E,
+				F51C3DE203C77A7801E7B49E,
+				F51C3DE303C77A7801E7B49E,
+				F51C3DE403C77A7801E7B49E,
+				F51C3DE503C77A7801E7B49E,
+				F51C3DE603C77A7801E7B49E,
+				F51C3DE703C77A7801E7B49E,
+				F51C3DE803C77A7801E7B49E,
+				F51C3DE903C77A7801E7B49E,
+				F51C3DEA03C77A7801E7B49E,
+				F51C3DEB03C77A7801E7B49E,
+				F51C3DEC03C77A7801E7B49E,
+				F51C3DED03C77A7801E7B49E,
+				F51C3DEE03C77A7801E7B49E,
+				F51C3DEF03C77A7801E7B49E,
+				F5E2F10905F7EFFC01A80003,
+			);
+			isa = PBXGroup;
+			name = TreeLib;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3DDD03C77A7801E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = gtree.cpp;
+			path = TreeLib/gtree.cpp;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3DDE03C77A7801E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = gtree.h;
+			path = TreeLib/gtree.h;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3DE103C77A7801E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = Parse.cpp;
+			path = TreeLib/Parse.cpp;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3DE203C77A7801E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = Parse.h;
+			path = TreeLib/Parse.h;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3DE303C77A7801E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = profile.h;
+			path = TreeLib/profile.h;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3DE403C77A7801E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = tokeniser.cpp;
+			path = TreeLib/tokeniser.cpp;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3DE503C77A7801E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = tokeniser.h;
+			path = TreeLib/tokeniser.h;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3DE603C77A7801E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = treedrawer.cpp;
+			path = TreeLib/treedrawer.cpp;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3DE703C77A7801E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = treedrawer.h;
+			path = TreeLib/treedrawer.h;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3DE803C77A7801E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = TreeLib.cpp;
+			path = TreeLib/TreeLib.cpp;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3DE903C77A7801E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = TreeLib.h;
+			path = TreeLib/TreeLib.h;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3DEA03C77A7801E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = treeorder.cpp;
+			path = TreeLib/treeorder.cpp;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3DEB03C77A7801E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = treeorder.h;
+			path = TreeLib/treeorder.h;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3DEC03C77A7801E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = treereader.cpp;
+			path = TreeLib/treereader.cpp;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3DED03C77A7801E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = treereader.h;
+			path = TreeLib/treereader.h;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3DEE03C77A7801E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = treewriter.cpp;
+			path = TreeLib/treewriter.cpp;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3DEF03C77A7801E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = treewriter.h;
+			path = TreeLib/treewriter.h;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E0303C77AF401E7B49E = {
+			children = (
+				F51C3E0403C77AF401E7B49E,
+			);
+			isa = PBXGroup;
+			name = gport;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E0403C77AF401E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = gdefs.h;
+			path = TreeLib/gport/gdefs.h;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E0A03C77CB501E7B49E = {
+			children = (
+				F51C3E0B03C77CE101E7B49E,
+				F51C3E0C03C77CE101E7B49E,
+				F51C3E0D03C77CE101E7B49E,
+				F51C3E0E03C77CE101E7B49E,
+				F51C3E0F03C77CE101E7B49E,
+				F51C3E1003C77CE101E7B49E,
+				F51C3E1103C77CE101E7B49E,
+				F51C3E1203C77CE101E7B49E,
+				F51C3E1303C77CE101E7B49E,
+				F51C3E1403C77CE101E7B49E,
+				F51C3E1503C77CE101E7B49E,
+				F51C3E1603C77CE101E7B49E,
+				F51C3E1703C77CE101E7B49E,
+				F51C3E1803C77CE101E7B49E,
+				F51C3E1903C77CE101E7B49E,
+				F51C3E1A03C77CE101E7B49E,
+				F51C3E1B03C77CE101E7B49E,
+				F51C3E1C03C77CE101E7B49E,
+				F51C3E1D03C77CE101E7B49E,
+				F51C3E1E03C77CE101E7B49E,
+				F51C3E1F03C77CE101E7B49E,
+				F51C3E2003C77CE101E7B49E,
+				F51C3E2103C77CE101E7B49E,
+				F51C3E2203C77CE101E7B49E,
+				F51C3E2303C77CE101E7B49E,
+				F51C3E2403C77CE101E7B49E,
+				F51C3E2503C77CE101E7B49E,
+				F51C3E2603C77CE101E7B49E,
+				F51C3E2703C77CE101E7B49E,
+				F51C3E2803C77CE101E7B49E,
+				F51C3E2903C77CE101E7B49E,
+				F51C3E2A03C77CE101E7B49E,
+			);
+			isa = PBXGroup;
+			name = "ncl-2.0";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E0B03C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = assumptionsblock.cpp;
+			path = "ncl-2.0/src/assumptionsblock.cpp";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E0C03C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = assumptionsblock.h;
+			path = "ncl-2.0/src/assumptionsblock.h";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E0D03C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = charactersblock.cpp;
+			path = "ncl-2.0/src/charactersblock.cpp";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E0E03C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = charactersblock.h;
+			path = "ncl-2.0/src/charactersblock.h";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E0F03C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = datablock.cpp;
+			path = "ncl-2.0/src/datablock.cpp";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E1003C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = datablock.h;
+			path = "ncl-2.0/src/datablock.h";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E1103C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = discretedatum.cpp;
+			path = "ncl-2.0/src/discretedatum.cpp";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E1203C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = discretedatum.h;
+			path = "ncl-2.0/src/discretedatum.h";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E1303C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = discretematrix.cpp;
+			path = "ncl-2.0/src/discretematrix.cpp";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E1403C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = discretematrix.h;
+			path = "ncl-2.0/src/discretematrix.h";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E1503C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = distancedatum.cpp;
+			path = "ncl-2.0/src/distancedatum.cpp";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E1603C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = distancedatum.h;
+			path = "ncl-2.0/src/distancedatum.h";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E1703C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = distancesblock.cpp;
+			path = "ncl-2.0/src/distancesblock.cpp";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E1803C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = distancesblock.h;
+			path = "ncl-2.0/src/distancesblock.h";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E1903C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = nexus.cpp;
+			path = "ncl-2.0/src/nexus.cpp";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E1A03C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = nexus.h;
+			path = "ncl-2.0/src/nexus.h";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E1B03C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = nexusblock.cpp;
+			path = "ncl-2.0/src/nexusblock.cpp";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E1C03C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = nexusdefs.h;
+			path = "ncl-2.0/src/nexusdefs.h";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E1D03C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = nexustoken.cpp;
+			path = "ncl-2.0/src/nexustoken.cpp";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E1E03C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = nexustoken.h;
+			path = "ncl-2.0/src/nexustoken.h";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E1F03C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = nxsdate.cpp;
+			path = "ncl-2.0/src/nxsdate.cpp";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E2003C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = nxsdate.h;
+			path = "ncl-2.0/src/nxsdate.h";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E2103C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = nxsstring.cpp;
+			path = "ncl-2.0/src/nxsstring.cpp";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E2203C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = nxsstring.h;
+			path = "ncl-2.0/src/nxsstring.h";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E2303C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = setreader.cpp;
+			path = "ncl-2.0/src/setreader.cpp";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E2403C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = setreader.h;
+			path = "ncl-2.0/src/setreader.h";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E2503C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = taxablock.cpp;
+			path = "ncl-2.0/src/taxablock.cpp";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E2603C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = taxablock.h;
+			path = "ncl-2.0/src/taxablock.h";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E2703C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = treesblock.cpp;
+			path = "ncl-2.0/src/treesblock.cpp";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E2803C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = treesblock.h;
+			path = "ncl-2.0/src/treesblock.h";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E2903C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			name = xnexus.cpp;
+			path = "ncl-2.0/src/xnexus.cpp";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E2A03C77CE101E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = xnexus.h;
+			path = "ncl-2.0/src/xnexus.h";
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E4B03C77F0C01E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			path = tdoc.cpp;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E4C03C77F0C01E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			path = tdoc.h;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E4D03C77F0C01E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			path = tproject.h;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E4E03C77F0C01E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			path = tv.cpp;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E4F03C77F0C01E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			path = tv.h;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E5003C77F0C01E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			path = tview.cpp;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F51C3E5103C77F0C01E7B49E = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			path = tview.h;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F53CB88A03CB09B3012A40F8 = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			path = treeorder_dialog.h;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F53CB88D03CB0A26012A40F8 = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.cpp.cpp;
+			path = treeorder_dialog.cpp;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F53CB89103CB2010012A40F8 = {
+			children = (
+				F53CB88A03CB09B3012A40F8,
+				F53CB88D03CB0A26012A40F8,
+			);
+			isa = PBXGroup;
+			name = Dialogs;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F5E2F10505F7EAD201A80003 = {
+			isa = PBXFileReference;
+			lastKnownFileType = image.icns;
+			name = app.icns;
+			path = bitmaps/mac/app.icns;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F5E2F10605F7EAD201A80003 = {
+			isa = PBXFileReference;
+			lastKnownFileType = image.icns;
+			name = doc.icns;
+			path = bitmaps/mac/doc.icns;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		F5E2F10905F7EFFC01A80003 = {
+			isa = PBXFileReference;
+			lastKnownFileType = sourcecode.c.h;
+			name = nodeiterator.h;
+			path = TreeLib/nodeiterator.h;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+	};
+	rootObject = 20286C28FDCF999611CA2CEA;
+}


Property changes on: trunk/packages/treeviewx/branches/upstream/current/tv.xcode/project.pbxproj
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/tv.xcode/rpage.pbxuser
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tv.xcode/rpage.pbxuser	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tv.xcode/rpage.pbxuser	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,1108 @@
+// !$*UTF8*$!
+{
+	20286C28FDCF999611CA2CEA = {
+		activeBuildStyle = 05952DFCFFF02D1B11CA0E50;
+		activeExecutable = B30D63B107E1CF2B00F1DA33;
+		activeTarget = B30D635D07E1CF2B00F1DA33;
+		addToTargets = (
+			B30D635D07E1CF2B00F1DA33,
+		);
+		breakpoints = (
+		);
+		codeSenseManager = B382848E07CA934E006079D9;
+		executables = (
+			B30D63B107E1CF2B00F1DA33,
+		);
+		perUserDictionary = {
+			PBXConfiguration.PBXFileTableDataSource3.PBXErrorsWarningsDataSource = {
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+				PBXFileTableDataSourceColumnSortingKey = PBXErrorsWarningsDataSource_LocationID;
+				PBXFileTableDataSourceColumnWidthsKey = (
+					20,
+					298.8799,
+					171.2085,
+				);
+				PBXFileTableDataSourceColumnsKey = (
+					PBXErrorsWarningsDataSource_TypeID,
+					PBXErrorsWarningsDataSource_MessageID,
+					PBXErrorsWarningsDataSource_LocationID,
+				);
+			};
+			PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = {
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+				PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID;
+				PBXFileTableDataSourceColumnWidthsKey = (
+					22,
+					304.7974,
+					163.5835,
+				);
+				PBXFileTableDataSourceColumnsKey = (
+					PBXExecutablesDataSource_ActiveFlagID,
+					PBXExecutablesDataSource_NameID,
+					PBXExecutablesDataSource_CommentsID,
+				);
+			};
+			PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+				PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
+				PBXFileTableDataSourceColumnWidthsKey = (
+					20,
+					275,
+					20,
+					54,
+					43,
+					43,
+					20,
+				);
+				PBXFileTableDataSourceColumnsKey = (
+					PBXFileDataSource_FiletypeID,
+					PBXFileDataSource_Filename_ColumnID,
+					PBXFileDataSource_Built_ColumnID,
+					PBXFileDataSource_ObjectSize_ColumnID,
+					PBXFileDataSource_Errors_ColumnID,
+					PBXFileDataSource_Warnings_ColumnID,
+					PBXFileDataSource_Target_ColumnID,
+				);
+			};
+			PBXConfiguration.PBXFileTableDataSource3.PBXFindDataSource = {
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+				PBXFileTableDataSourceColumnSortingKey = PBXFindDataSource_LocationID;
+				PBXFileTableDataSourceColumnWidthsKey = (
+					245.2974,
+					248.2085,
+				);
+				PBXFileTableDataSourceColumnsKey = (
+					PBXFindDataSource_MessageID,
+					PBXFindDataSource_LocationID,
+				);
+			};
+			PBXConfiguration.PBXFileTableDataSource3.PBXSymbolsDataSource = {
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+				PBXFileTableDataSourceColumnSortingKey = PBXSymbolsDataSource_SymbolNameID;
+				PBXFileTableDataSourceColumnWidthsKey = (
+					16,
+					129.8008,
+					159.0356,
+					136.2085,
+				);
+				PBXFileTableDataSourceColumnsKey = (
+					PBXSymbolsDataSource_SymbolTypeIconID,
+					PBXSymbolsDataSource_SymbolNameID,
+					PBXSymbolsDataSource_SymbolTypeID,
+					PBXSymbolsDataSource_ReferenceNameID,
+				);
+			};
+			PBXConfiguration.PBXFileTableDataSource3.XCSCMDataSource = {
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+				PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
+				PBXFileTableDataSourceColumnWidthsKey = (
+					20,
+					20,
+					259,
+					20,
+					45,
+					43,
+					43,
+					20,
+				);
+				PBXFileTableDataSourceColumnsKey = (
+					PBXFileDataSource_SCM_ColumnID,
+					PBXFileDataSource_FiletypeID,
+					PBXFileDataSource_Filename_ColumnID,
+					PBXFileDataSource_Built_ColumnID,
+					PBXFileDataSource_ObjectSize_ColumnID,
+					PBXFileDataSource_Errors_ColumnID,
+					PBXFileDataSource_Warnings_ColumnID,
+					PBXFileDataSource_Target_ColumnID,
+				);
+			};
+			PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+				PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
+				PBXFileTableDataSourceColumnWidthsKey = (
+					20,
+					239,
+					55,
+					20,
+					55,
+					43,
+					43,
+				);
+				PBXFileTableDataSourceColumnsKey = (
+					PBXFileDataSource_FiletypeID,
+					PBXFileDataSource_Filename_ColumnID,
+					PBXTargetDataSource_PrimaryAttribute,
+					PBXFileDataSource_Built_ColumnID,
+					PBXFileDataSource_ObjectSize_ColumnID,
+					PBXFileDataSource_Errors_ColumnID,
+					PBXFileDataSource_Warnings_ColumnID,
+				);
+			};
+			PBXPerProjectTemplateStateSaveDate = 132664769;
+			PBXPrepackagedSmartGroups_v2 = (
+				{
+					PBXTransientLocationAtTop = bottom;
+					absolutePathToBundle = "";
+					activationKey = OldTargetSmartGroup;
+					clz = PBXTargetSmartGroup;
+					description = "Displays all targets of the project.";
+					globalID = 1C37FABC04509CD000000102;
+					name = Targets;
+					preferences = {
+						image = Targets;
+					};
+				},
+				{
+					PBXTransientLocationAtTop = bottom;
+					absolutePathToBundle = "";
+					clz = PBXTargetSmartGroup2;
+					description = "Displays all targets of the project as well as nested build phases.";
+					globalID = 1C37FBAC04509CD000000102;
+					name = Targets;
+					preferences = {
+						image = Targets;
+					};
+				},
+				{
+					PBXTransientLocationAtTop = bottom;
+					absolutePathToBundle = "";
+					clz = PBXExecutablesSmartGroup;
+					description = "Displays all executables of the project.";
+					globalID = 1C37FAAC04509CD000000102;
+					name = Executables;
+					preferences = {
+						image = Executable;
+					};
+				},
+				{
+					" PBXTransientLocationAtTop " = bottom;
+					absolutePathToBundle = "";
+					clz = PBXErrorsWarningsSmartGroup;
+					description = "Displays files with errors or warnings.";
+					globalID = 1C08E77C0454961000C914BD;
+					name = "Errors and Warnings";
+					preferences = {
+						fnmatch = "";
+						image = WarningsErrors;
+						recursive = 1;
+						regex = "";
+						root = "<PROJECT>";
+					};
+				},
+				{
+					PBXTransientLocationAtTop = bottom;
+					absolutePathToBundle = "";
+					clz = PBXFilenameSmartGroup;
+					description = "Filters items in a given group (potentially recursively) based on matching the name with the regular expression of the filter.";
+					globalID = 1CC0EA4004350EF90044410B;
+					name = "Implementation Files";
+					preferences = {
+						canSave = 1;
+						fnmatch = "";
+						image = SmartFolder;
+						isLeaf = 0;
+						recursive = 1;
+						regex = "?*\\.[mcMC]";
+						root = "<PROJECT>";
+					};
+				},
+				{
+					PBXTransientLocationAtTop = bottom;
+					absolutePathToBundle = "";
+					clz = PBXFilenameSmartGroup;
+					description = "This group displays Interface Builder NIB Files.";
+					globalID = 1CC0EA4004350EF90041110B;
+					name = "NIB Files";
+					preferences = {
+						canSave = 1;
+						fnmatch = "*.nib";
+						image = SmartFolder;
+						isLeaf = 0;
+						recursive = 1;
+						regex = "";
+						root = "<PROJECT>";
+					};
+				},
+				{
+					PBXTransientLocationAtTop = no;
+					absolutePathToBundle = "";
+					clz = PBXFindSmartGroup;
+					description = "Displays Find Results.";
+					globalID = 1C37FABC05509CD000000102;
+					name = "Find Results";
+					preferences = {
+						image = spyglass;
+					};
+				},
+				{
+					PBXTransientLocationAtTop = no;
+					absolutePathToBundle = "";
+					clz = PBXBookmarksSmartGroup;
+					description = "Displays Project Bookmarks.";
+					globalID = 1C37FABC05539CD112110102;
+					name = Bookmarks;
+					preferences = {
+						image = Bookmarks;
+					};
+				},
+				{
+					PBXTransientLocationAtTop = bottom;
+					absolutePathToBundle = "";
+					clz = XCSCMSmartGroup;
+					description = "Displays files with interesting SCM status.";
+					globalID = E2644B35053B69B200211256;
+					name = SCM;
+					preferences = {
+						image = PBXRepository;
+						isLeaf = 0;
+					};
+				},
+				{
+					PBXTransientLocationAtTop = bottom;
+					absolutePathToBundle = "";
+					clz = PBXSymbolsSmartGroup;
+					description = "Displays all symbols for the project.";
+					globalID = 1C37FABC04509CD000100104;
+					name = "Project Symbols";
+					preferences = {
+						image = ProjectSymbols;
+						isLeaf = 1;
+					};
+				},
+				{
+					PBXTransientLocationAtTop = bottom;
+					absolutePathToBundle = "";
+					clz = PBXFilenameSmartGroup;
+					description = "Filters items in a given group (potentially recursively) based on matching the name with the regular expression of the filter.";
+					globalID = PBXTemplateMarker;
+					name = "Simple Filter SmartGroup";
+					preferences = {
+						canSave = 1;
+						fnmatch = "*.nib";
+						image = SmartFolder;
+						isLeaf = 0;
+						recursive = 1;
+						regex = "";
+						root = "<PROJECT>";
+					};
+				},
+				{
+					PBXTransientLocationAtTop = bottom;
+					absolutePathToBundle = "";
+					clz = PBXFilenameSmartGroup;
+					description = "Filters items in a given group (potentially recursively) based on matching the name with the regular expression of the filter.";
+					globalID = PBXTemplateMarker;
+					name = "Simple Regular Expression SmartGroup";
+					preferences = {
+						canSave = 1;
+						fnmatch = "";
+						image = SmartFolder;
+						isLeaf = 0;
+						recursive = 1;
+						regex = "?*\\.[mcMC]";
+						root = "<PROJECT>";
+					};
+				},
+				{
+					PBXTransientLocationAtTop = bottom;
+					clz = XDDesignSmartGroup;
+					description = "Displays Xdesign models";
+					globalID = 2E4A936305E6979E00701470;
+					name = Design;
+					preferences = {
+						image = Design;
+						isLeaf = 0;
+					};
+				},
+			);
+			PBXWorkspaceContents = (
+				{
+					LeftSlideOut = {
+						Split0 = {
+							Split0 = {
+								NavContent0 = {
+									bookmark = F585387106117B1901A80002;
+									history = (
+										F5E2F10B05F7F86201A80003,
+										F5E2F10D05F7F86201A80003,
+										F5E2F10E05F7F86201A80003,
+										F5E2F10F05F7F86201A80003,
+										F5E2F11005F7F86201A80003,
+										F5F3B9A406013AFC01A80002,
+										F5F3B9A506013AFC01A80002,
+										F5F3B9A606013AFC01A80002,
+										F5F3B9A706013AFC01A80002,
+										F585386F06117B1901A80002,
+										F5F3B9A306013AFC01A80002,
+									);
+									prevStack = (
+										F5E2F11205F7F86201A80003,
+										F5E2F11305F7F86201A80003,
+										F5E2F11405F7F86201A80003,
+										F5E2F11505F7F86201A80003,
+										F5E2F11605F7F86201A80003,
+										F5E2F11705F7F86201A80003,
+										F5E2F11805F7F86201A80003,
+										F5E2F11905F7F86201A80003,
+										F5E2F11A05F7F86201A80003,
+										F5E2F11B05F7F86201A80003,
+										F5E2F11C05F7F86201A80003,
+										F5E2F11D05F7F86201A80003,
+										F5E2F11E05F7F86201A80003,
+										F5E2F11F05F7F86201A80003,
+										F5E2F12005F7F86201A80003,
+										F5E2F12105F7F86201A80003,
+										F5E2F12205F7F86201A80003,
+										F5F3B9A906013AFC01A80002,
+										F5F3B9AA06013AFC01A80002,
+										F5F3B9AB06013AFC01A80002,
+										F5F3B9AC06013AFC01A80002,
+										F5F3B9AD06013AFC01A80002,
+										F5F3B9AE06013AFC01A80002,
+										F5F3B9AF06013AFC01A80002,
+										F5F3B9B006013AFC01A80002,
+										F585387006117B1901A80002,
+									);
+								};
+								NavCount = 1;
+								NavGeometry0 = {
+									Frame = "{{0, 0}, {560, 216}}";
+									NavBarVisible = YES;
+								};
+							};
+							SplitCount = 1;
+							Tab0 = {
+								Debugger = {
+									Split0 = {
+										SplitCount = 2;
+									};
+									SplitCount = 1;
+									TabCount = 2;
+								};
+								LauncherConfigVersion = 7;
+							};
+							Tab1 = {
+								LauncherConfigVersion = 3;
+								Runner = {
+								};
+							};
+							TabCount = 4;
+						};
+						SplitCount = 1;
+						Tab1 = {
+							OptionsSetName = "Hierarchy, all classes";
+						};
+						TabCount = 5;
+					};
+				},
+			);
+			PBXWorkspaceGeometries = (
+				{
+					ContentSize = "{775, 516}";
+					LeftSlideOut = {
+						ActiveTab = 3;
+						Collapsed = NO;
+						Frame = "{{0, 23}, {775, 493}}";
+						Split0 = {
+							ActiveTab = 2;
+							Collapsed = NO;
+							Frame = "{{215, 0}, {560, 493}}";
+							Split0 = {
+								Frame = "{{0, 277}, {560, 216}}";
+							};
+							SplitCount = 1;
+							Tab0 = {
+								Debugger = {
+									Collapsed = NO;
+									Frame = "{{0, 0}, {572, 214}}";
+									Split0 = {
+										Frame = "{{0, 24}, {572, 190}}";
+										Split0 = {
+											Frame = "{{0, 0}, {279, 190}}";
+										};
+										Split1 = {
+											DebugVariablesTableConfiguration = (
+												Name,
+												123,
+												Value,
+												85,
+												Summary,
+												62.123,
+											);
+											Frame = "{{288, 0}, {284, 190}}";
+										};
+										SplitCount = 2;
+									};
+									SplitCount = 1;
+									Tab0 = {
+										Frame = "{{0, 0}, {100, 50}}";
+									};
+									Tab1 = {
+										Frame = "{{0, 0}, {100, 50}}";
+									};
+									TabCount = 2;
+									TabsVisible = YES;
+								};
+								Frame = "{{0, 0}, {572, 214}}";
+								LauncherConfigVersion = 7;
+							};
+							Tab1 = {
+								Frame = "{{0, 0}, {572, 125}}";
+								LauncherConfigVersion = 3;
+								Runner = {
+									Frame = "{{0, 0}, {572, 125}}";
+								};
+							};
+							Tab2 = {
+								BuildMessageFrame = "{{0, 0}, {562, 65}}";
+								BuildTranscriptFrame = "{{0, 74}, {562, 181}}";
+								Frame = "{{0, 0}, {560, 253}}";
+							};
+							Tab3 = {
+								Frame = "{{0, 0}, {572, 265}}";
+							};
+							TabCount = 4;
+							TabsVisible = YES;
+						};
+						SplitCount = 1;
+						Tab0 = {
+							Frame = "{{0, 0}, {260, 493}}";
+							GroupTreeTableConfiguration = (
+								SCMStatusColumn,
+								22,
+								TargetStatusColumn,
+								18,
+								MainColumn,
+								205,
+							);
+						};
+						Tab1 = {
+							ClassesFrame = "{{0, 0}, {247, 330}}";
+							ClassesTreeTableConfiguration = (
+								PBXBookColumnIdentifier,
+								20,
+								PBXClassColumnIdentifier,
+								204,
+							);
+							Frame = "{{0, 0}, {245, 549}}";
+							MembersFrame = "{{0, 339}, {247, 210}}";
+							MembersTreeTableConfiguration = (
+								PBXBookColumnIdentifier,
+								20,
+								PBXMethodColumnIdentifier,
+								203,
+							);
+						};
+						Tab2 = {
+							Frame = "{{0, 0}, {226, 549}}";
+						};
+						Tab3 = {
+							Frame = "{{0, 0}, {191, 493}}";
+							TargetTableConfiguration = (
+								ActiveObject,
+								16,
+								ObjectNames,
+								202.296,
+							);
+						};
+						Tab4 = {
+							BreakpointsTreeTableConfiguration = (
+								breakpointColumn,
+								138,
+								enabledColumn,
+								31,
+							);
+							Frame = "{{0, 0}, {191, 549}}";
+						};
+						TabCount = 5;
+						TabsVisible = YES;
+					};
+					StatusViewVisible = YES;
+					Template = F5F68CF101725D4C0D7A8F4C;
+					ToolbarVisible = YES;
+					WindowLocation = "{-1, 168}";
+				},
+			);
+			PBXWorkspaceStateSaveDate = 132664769;
+		};
+		perUserProjectItems = {
+			B33EB38C07E6A61C00855069 = B33EB38C07E6A61C00855069;
+			B33EB38D07E6A61C00855069 = B33EB38D07E6A61C00855069;
+			B33EB38E07E6A61C00855069 = B33EB38E07E6A61C00855069;
+			B33EB38F07E6A61C00855069 = B33EB38F07E6A61C00855069;
+			B33EB39007E6A61C00855069 = B33EB39007E6A61C00855069;
+			B33EB39107E6A61C00855069 = B33EB39107E6A61C00855069;
+			B33EB39207E6A61C00855069 = B33EB39207E6A61C00855069;
+			B33EB39307E6A61C00855069 = B33EB39307E6A61C00855069;
+			B33EB39607E6A61C00855069 = B33EB39607E6A61C00855069;
+			B33EB39707E6A61C00855069 = B33EB39707E6A61C00855069;
+			B33EB39807E6A61C00855069 = B33EB39807E6A61C00855069;
+			B33EB39907E6A61C00855069 = B33EB39907E6A61C00855069;
+			B33EB39A07E6A61C00855069 = B33EB39A07E6A61C00855069;
+			B33EB39B07E6A61C00855069 = B33EB39B07E6A61C00855069;
+			B33EB39C07E6A61C00855069 = B33EB39C07E6A61C00855069;
+			B33EB39D07E6A61C00855069 = B33EB39D07E6A61C00855069;
+			B33EB39E07E6A61C00855069 = B33EB39E07E6A61C00855069;
+			B33EB3A007E6A68A00855069 = B33EB3A007E6A68A00855069;
+			B33EB3AA07E6F7C300855069 = B33EB3AA07E6F7C300855069;
+			B33EB3AB07E6F7C300855069 = B33EB3AB07E6F7C300855069;
+			B33EB3BC07E6FA1B00855069 = B33EB3BC07E6FA1B00855069;
+			B33EB3BD07E6FA1B00855069 = B33EB3BD07E6FA1B00855069;
+			B33EB3BE07E6FA1B00855069 = B33EB3BE07E6FA1B00855069;
+			B33EB3C107E6FA1B00855069 = B33EB3C107E6FA1B00855069;
+			B352DCF207E61CC400F87D4E = B352DCF207E61CC400F87D4E;
+			B359F62907CB9D5000F7069F = B359F62907CB9D5000F7069F;
+			B359F62F07CB9D5000F7069F = B359F62F07CB9D5000F7069F;
+			B359F63307CB9D5000F7069F = B359F63307CB9D5000F7069F;
+			B385B8CD07CE139B00E7D8EF = B385B8CD07CE139B00E7D8EF;
+			B3D7925D07E84E0700B56D1B = B3D7925D07E84E0700B56D1B;
+			B3D7925F07E84E0700B56D1B = B3D7925F07E84E0700B56D1B;
+			B3D7926507E8609F00B56D1B = B3D7926507E8609F00B56D1B;
+			B3D7926607E8609F00B56D1B = B3D7926607E8609F00B56D1B;
+			B3D7929007EAF31600B56D1B = B3D7929007EAF31600B56D1B;
+			B3F0ECAF07E5C9860092E9FE = B3F0ECAF07E5C9860092E9FE;
+		};
+		sourceControlManager = B382848D07CA934E006079D9;
+		userBuildSettings = {
+		};
+	};
+	B30D635D07E1CF2B00F1DA33 = {
+		activeExec = 0;
+		executables = (
+			B30D63B107E1CF2B00F1DA33,
+		);
+	};
+	B30D63B107E1CF2B00F1DA33 = {
+		activeArgIndex = 2147483647;
+		activeArgIndices = (
+		);
+		argumentStrings = (
+		);
+		configStateDict = {
+		};
+		cppStopOnCatchEnabled = 0;
+		cppStopOnThrowEnabled = 0;
+		customDataFormattersEnabled = 1;
+		debuggerPlugin = GDBDebugging;
+		disassemblyDisplayState = 0;
+		dylibVariantSuffix = "";
+		enableDebugStr = 1;
+		environmentEntries = (
+		);
+		isa = PBXExecutable;
+		libgmallocEnabled = 0;
+		name = "tv static";
+		savedGlobals = {
+		};
+		shlibInfoDictList = (
+		);
+		sourceDirectories = (
+		);
+	};
+	B33EB36D07E6A5BF00855069 = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {479, 364}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRect = "{{0, 0}, {479, 253}}";
+		};
+	};
+	B33EB36F07E6A5FE00855069 = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {479, 433}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRect = "{{0, 0}, {479, 253}}";
+		};
+	};
+	B33EB37007E6A5FE00855069 = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {479, 349}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRect = "{{0, 0}, {479, 253}}";
+		};
+	};
+	B33EB37107E6A5FE00855069 = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {479, 350}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRect = "{{0, 0}, {479, 253}}";
+		};
+	};
+	B33EB37207E6A5FE00855069 = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {479, 391}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRect = "{{0, 0}, {479, 253}}";
+		};
+	};
+	B33EB37307E6A5FE00855069 = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {479, 433}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRect = "{{0, 0}, {479, 253}}";
+		};
+	};
+	B33EB37407E6A5FE00855069 = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {479, 336}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRect = "{{0, 0}, {479, 253}}";
+		};
+	};
+	B33EB37507E6A5FE00855069 = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {479, 336}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRect = "{{0, 0}, {479, 253}}";
+		};
+	};
+	B33EB38C07E6A61C00855069 = {
+		fRef = F51C3E4C03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tdoc.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 853;
+		vrLoc = 0;
+	};
+	B33EB38D07E6A61C00855069 = {
+		fRef = B33EB36D07E6A5BF00855069;
+		isa = PBXTextBookmark;
+		name = "copy.xpm: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 362;
+		vrLoc = 0;
+	};
+	B33EB38E07E6A61C00855069 = {
+		fRef = B33EB36F07E6A5FE00855069;
+		isa = PBXTextBookmark;
+		name = "internal.xpm: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 459;
+		vrLoc = 0;
+	};
+	B33EB38F07E6A61C00855069 = {
+		fRef = B33EB37007E6A5FE00855069;
+		isa = PBXTextBookmark;
+		name = "new.xpm: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 365;
+		vrLoc = 0;
+	};
+	B33EB39007E6A61C00855069 = {
+		fRef = B33EB37107E6A5FE00855069;
+		isa = PBXTextBookmark;
+		name = "next.xpm: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 372;
+		vrLoc = 0;
+	};
+	B33EB39107E6A61C00855069 = {
+		fRef = B33EB37207E6A5FE00855069;
+		isa = PBXTextBookmark;
+		name = "open.xpm: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 358;
+		vrLoc = 0;
+	};
+	B33EB39207E6A61C00855069 = {
+		fRef = B33EB37407E6A5FE00855069;
+		isa = PBXTextBookmark;
+		name = "phylogram.xpm: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 513;
+		vrLoc = 0;
+	};
+	B33EB39307E6A61C00855069 = {
+		fRef = B33EB37507E6A5FE00855069;
+		isa = PBXTextBookmark;
+		name = "previous.xpm: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 512;
+		vrLoc = 0;
+	};
+	B33EB39607E6A61C00855069 = {
+		fRef = F51C3E4C03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tdoc.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 853;
+		vrLoc = 0;
+	};
+	B33EB39707E6A61C00855069 = {
+		fRef = B33EB36D07E6A5BF00855069;
+		isa = PBXTextBookmark;
+		name = "copy.xpm: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 362;
+		vrLoc = 0;
+	};
+	B33EB39807E6A61C00855069 = {
+		fRef = B33EB36F07E6A5FE00855069;
+		isa = PBXTextBookmark;
+		name = "internal.xpm: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 459;
+		vrLoc = 0;
+	};
+	B33EB39907E6A61C00855069 = {
+		fRef = B33EB37007E6A5FE00855069;
+		isa = PBXTextBookmark;
+		name = "new.xpm: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 365;
+		vrLoc = 0;
+	};
+	B33EB39A07E6A61C00855069 = {
+		fRef = B33EB37107E6A5FE00855069;
+		isa = PBXTextBookmark;
+		name = "next.xpm: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 372;
+		vrLoc = 0;
+	};
+	B33EB39B07E6A61C00855069 = {
+		fRef = B33EB37207E6A5FE00855069;
+		isa = PBXTextBookmark;
+		name = "open.xpm: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 358;
+		vrLoc = 0;
+	};
+	B33EB39C07E6A61C00855069 = {
+		fRef = B33EB37307E6A5FE00855069;
+		isa = PBXTextBookmark;
+		name = "paste.xpm: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 326;
+		vrLoc = 0;
+	};
+	B33EB39D07E6A61C00855069 = {
+		fRef = B33EB37407E6A5FE00855069;
+		isa = PBXTextBookmark;
+		name = "phylogram.xpm: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 513;
+		vrLoc = 0;
+	};
+	B33EB39E07E6A61C00855069 = {
+		fRef = B33EB37507E6A5FE00855069;
+		isa = PBXTextBookmark;
+		name = "previous.xpm: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 512;
+		vrLoc = 0;
+	};
+	B33EB3A007E6A68A00855069 = {
+		fRef = B33EB37307E6A5FE00855069;
+		isa = PBXTextBookmark;
+		name = "paste.xpm: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 326;
+		vrLoc = 0;
+	};
+	B33EB3AA07E6F7C300855069 = {
+		fRef = F5E2F10505F7EAD201A80003;
+		isa = PBXBookmark;
+	};
+	B33EB3AB07E6F7C300855069 = {
+		fRef = F5E2F10605F7EAD201A80003;
+		isa = PBXBookmark;
+	};
+	B33EB3BC07E6FA1B00855069 = {
+		fRef = F51C3E4E03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "MyApp::CreateChildFrame";
+		rLen = 23;
+		rLoc = 8990;
+		rType = 0;
+		vrLen = 401;
+		vrLoc = 12632;
+	};
+	B33EB3BD07E6FA1B00855069 = {
+		fRef = F51C3E4F03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tv.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 853;
+		vrLoc = 0;
+	};
+	B33EB3BE07E6FA1B00855069 = {
+		fRef = F5E2F10505F7EAD201A80003;
+		isa = PBXBookmark;
+	};
+	B33EB3C107E6FA1B00855069 = {
+		fRef = F51C3E4F03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tv.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 853;
+		vrLoc = 0;
+	};
+	B352DCF207E61CC400F87D4E = {
+		fRef = F51C3E5003C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tview.cpp: 1039";
+		rLen = 0;
+		rLoc = 27314;
+		rType = 0;
+		vrLen = 427;
+		vrLoc = 16741;
+	};
+	B359F62907CB9D5000F7069F = {
+		fRef = F51C3E4D03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tproject.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 764;
+		vrLoc = 0;
+	};
+	B359F62F07CB9D5000F7069F = {
+		fRef = F51C3E5003C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tview.cpp: 723";
+		rLen = 0;
+		rLoc = 17146;
+		rType = 0;
+		vrLen = 464;
+		vrLoc = 16994;
+	};
+	B359F63307CB9D5000F7069F = {
+		fRef = F51C3E4D03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "tproject.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 764;
+		vrLoc = 0;
+	};
+	B382848D07CA934E006079D9 = {
+		fallbackIsa = XCSourceControlManager;
+		isSCMEnabled = 1;
+		isa = PBXSourceControlManager;
+		scmConfiguration = {
+		};
+		scmType = scm.cvs;
+	};
+	B382848E07CA934E006079D9 = {
+		indexTemplatePath = "";
+		isa = PBXCodeSenseManager;
+		usesDefaults = 1;
+		wantsCodeCompletion = 1;
+		wantsCodeCompletionAutoSuggestions = 0;
+		wantsCodeCompletionCaseSensitivity = 1;
+		wantsCodeCompletionListAlways = 1;
+		wantsCodeCompletionOnlyMatchingItems = 1;
+		wantsCodeCompletionParametersIncluded = 1;
+		wantsCodeCompletionPlaceholdersInserted = 1;
+		wantsCodeCompletionTabCompletes = 1;
+		wantsIndex = 1;
+	};
+	B38284AC07CA9648006079D9 = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {555, 2085}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRect = "{{0, 0}, {555, 564}}";
+			sepNavWindowFrame = "{{150, 99}, {750, 558}}";
+		};
+	};
+	B385B8CD07CE139B00E7D8EF = {
+		fRef = F51C3E4E03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = picture;
+		rLen = 7;
+		rLoc = 10567;
+		rType = 0;
+		vrLen = 775;
+		vrLoc = 9826;
+	};
+	B3D7925D07E84E0700B56D1B = {
+		fRef = F5E2F10605F7EAD201A80003;
+		isa = PBXBookmark;
+	};
+	B3D7925F07E84E0700B56D1B = {
+		fRef = F5E2F10605F7EAD201A80003;
+		isa = PBXBookmark;
+	};
+	B3D7926507E8609F00B56D1B = {
+		isa = PBXTargetBookmark;
+		trg = B30D635D07E1CF2B00F1DA33;
+		uiCtxt = {
+			TOCViewDetailVisibleRect = "{{0, 236}, {346, 236}}";
+			TOCViewExpandedItems = (
+				"com.apple.target-editor-pane.settings",
+				"com.apple.target-editor-pane.settings.simple",
+				"com.apple.target-editor-pane.info-plist",
+				"com.apple.target-editor-pane.info-plist.simple",
+				"com.apple.target-editor-pane.buildphases",
+			);
+			TOCViewMasterVisibleRect = "{{0, 0}, {133, 236}}";
+			TOCViewSelectedItems = (
+				"com.apple.target-editor-pane.settings.compiler.gcc",
+			);
+		};
+	};
+	B3D7926607E8609F00B56D1B = {
+		isa = PBXTargetBookmark;
+		trg = B30D635D07E1CF2B00F1DA33;
+		uiCtxt = {
+			TOCViewDetailVisibleRect = "{{0, 236}, {346, 236}}";
+			TOCViewExpandedItems = (
+				"com.apple.target-editor-pane.settings",
+				"com.apple.target-editor-pane.settings.simple",
+				"com.apple.target-editor-pane.info-plist",
+				"com.apple.target-editor-pane.info-plist.simple",
+				"com.apple.target-editor-pane.buildphases",
+			);
+			TOCViewMasterVisibleRect = "{{0, 0}, {133, 236}}";
+			TOCViewSelectedItems = (
+				"com.apple.target-editor-pane.settings.compiler.gcc",
+			);
+		};
+	};
+	B3D7929007EAF31600B56D1B = {
+		fRef = F51C3E4E03C77F0C01E7B49E;
+		isa = PBXTextBookmark;
+		name = "MyApp::CreateChildFrame";
+		rLen = 23;
+		rLoc = 8990;
+		rType = 0;
+		vrLen = 401;
+		vrLoc = 12632;
+	};
+	B3F0ECAF07E5C9860092E9FE = {
+		isa = PBXTargetBookmark;
+		trg = B30D635D07E1CF2B00F1DA33;
+	};
+	F51C3DDD03C77A7801E7B49E = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {692, 8231}}";
+			sepNavSelRange = "{8606, 33}";
+			sepNavVisRect = "{{0, 4676}, {459, 183}}";
+		};
+	};
+	F51C3DDE03C77A7801E7B49E = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {512, 2099}}";
+			sepNavSelRange = "{1196, 23}";
+			sepNavVisRect = "{{0, 420}, {459, 183}}";
+		};
+	};
+	F51C3DE303C77A7801E7B49E = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {842, 11787}}";
+			sepNavSelRange = "{7266, 0}";
+			sepNavVisRect = "{{0, 3671}, {711, 428}}";
+			sepNavWindowFrame = "{{188, 154}, {750, 558}}";
+		};
+	};
+	F51C3E1D03C77CE101E7B49E = {
+		uiCtxt = {
+			sepNavWindowFrame = "{{15, 71}, {750, 502}}";
+		};
+	};
+	F51C3E4B03C77F0C01E7B49E = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {711, 1203}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRect = "{{0, 0}, {711, 428}}";
+			sepNavWindowFrame = "{{58, 183}, {750, 558}}";
+		};
+	};
+	F51C3E4D03C77F0C01E7B49E = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {626, 1581}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRect = "{{0, 0}, {433, 225}}";
+			sepNavWindowFrame = "{{38, 50}, {750, 502}}";
+		};
+	};
+	F51C3E4E03C77F0C01E7B49E = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {986, 8021}}";
+			sepNavSelRange = "{8990, 23}";
+			sepNavVisRect = "{{0, 5306}, {479, 253}}";
+			sepNavWindowFrame = "{{90, 165}, {750, 558}}";
+		};
+	};
+	F51C3E4F03C77F0C01E7B49E = {
+		uiCtxt = {
+			sepNavWindowFrame = "{{15, 71}, {750, 502}}";
+		};
+	};
+	F51C3E5003C77F0C01E7B49E = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {764, 14559}}";
+			sepNavSelRange = "{2116, 0}";
+			sepNavVisRect = "{{0, 4793}, {711, 428}}";
+			sepNavWindowFrame = "{{73, 122}, {750, 558}}";
+		};
+	};
+	F51C3E5103C77F0C01E7B49E = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {711, 2212}}";
+			sepNavSelRange = "{4061, 0}";
+			sepNavVisRect = "{{0, 1783}, {711, 428}}";
+			sepNavWindowFrame = "{{127, 120}, {750, 558}}";
+		};
+	};
+	F53CB88A03CB09B3012A40F8 = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {711, 559}}";
+			sepNavSelRange = "{1256, 0}";
+			sepNavVisRect = "{{0, 131}, {711, 428}}";
+			sepNavWindowFrame = "{{122, 120}, {750, 558}}";
+		};
+	};
+	F53CB88D03CB0A26012A40F8 = {
+		uiCtxt = {
+			sepNavWindowFrame = "{{15, 71}, {750, 502}}";
+		};
+	};
+	F5E2F10505F7EAD201A80003 = {
+		uiCtxt = {
+			sepNavWindowFrame = "{{81, 162}, {750, 558}}";
+		};
+	};
+}


Property changes on: trunk/packages/treeviewx/branches/upstream/current/tv.xcode/rpage.pbxuser
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/tview.cpp
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tview.cpp	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tview.cpp	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,1039 @@
+/*
+ * TreeView
+ * A phylogenetic tree viewer.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+ 
+ // $Id: tview.cpp,v 1.37 2005/08/31 08:55:13 rdmp1c Exp $
+
+#ifdef __GNUG__
+// #pragma implementation
+#endif
+
+// TreeLib (must go before any wx stuff to avoid clash between STL and Windows min/max)
+#include "TreeLib.h"
+#include "Parse.h"
+#include "treedrawer.h"
+#include "treeorder.h"
+
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+#pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+
+#if !wxUSE_DOC_VIEW_ARCHITECTURE
+#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h!
+#endif
+
+#include <wx/clipbrd.h>	
+#include <wx/fontdlg.h>
+#include <wx/metafile.h>
+#include <wx/filename.h>
+
+// Use the native Mac OS X font dialog
+#ifdef __WXMAC__
+	#undef wxFontDialog
+	#include "wx/mac/fontdlg.h"
+#endif
+
+// Pictures
+
+#ifdef __WXMSW__
+#else
+#ifdef USE_SVG
+	#include <wx/svg/dcsvg.h>
+#endif
+#endif
+
+// GUI interface
+#include "tv.h"
+#include "tdoc.h"
+#include "tview.h"
+
+// Dialogs
+#include "treeorder_dialog.h"
+
+#if wxUSE_PRINTING_ARCHITECTURE
+class WXDLLEXPORT wxTVPrintout : public wxDocPrintout
+{
+public:
+	wxTVPrintout (wxView *view = (wxView *) NULL, const wxString& title = wxT("Printout")) : wxDocPrintout (view, title) {};
+	bool OnPrintPage(int page);
+};
+#endif // wxUSE_PRINTING_ARCHITECTURE
+
+//------------------------------------------------------------------------------
+// The wxWindows Printing Framework scales the printout to the screen image,
+// whereas I want to print the tree on the whole page, regardless of how it looks
+// on screen. To do this we extend wxDocPrintout to compute the size of the page
+// and to set the flag "printing" in the associated TView window before calling
+// the ancestral OnPrintPage. This lets TView:OnDraw know whether to scale the tree 
+// for the screen or for the printed page.
+bool wxTVPrintout::OnPrintPage(int page)
+{
+	bool result = false;
+
+	TView *t = (TView *)GetView();
+	if (t)
+	{
+		int w_mm, h_mm;
+		GetPageSizeMM (&w_mm, &h_mm);
+
+		// Page size in points
+		t->page_width = (int) ((float)(w_mm * 72.0) / 25.4);
+		t->page_height = (int) ((float)(h_mm * 72.0) / 25.4);
+		t->printing = true;
+	}
+
+	result = wxDocPrintout::OnPrintPage (page);
+
+	if (t)
+	{
+		t->printing = false;
+	}
+
+	return result;
+}
+
+
+
+
+IMPLEMENT_DYNAMIC_CLASS(TView, wxView)
+
+/*
+BEGIN_EVENT_TABLE(DrawingView, wxView)
+    EVT_MENU(DOODLE_CUT, DrawingView::OnCut)
+END_EVENT_TABLE()   */
+
+
+	
+	
+
+
+//------------------------------------------------------------------------------
+TView::TView ()
+{
+	canvas = (MyCanvas *) NULL; 
+	frame = (wxMDIChildFrame *) NULL; 
+	TreeStyleCmd = SLANTED_TREE_CMD;
+	Order = DEFAULT_ORDER;
+	
+	LeafFont = *wxSWISS_FONT;
+
+	printing = false;
+
+	magnification = 1;
+	mShowInternalLabels = false;
+}
+
+//------------------------------------------------------------------------------
+wxPrintout *TView::OnCreatePrintout()
+{
+	wxDocPrintout *p = new wxTVPrintout (this);
+	return p;
+}
+
+//------------------------------------------------------------------------------
+// What to do when a view is created. Creates actual
+// windows for displaying the view.
+bool TView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
+{
+    frame = wxGetApp().CreateChildFrame(doc, this, TRUE);
+    frame->SetTitle(wxT("TView"));
+
+    canvas = GetMainFrame()->CreateCanvas(this, frame);
+#ifdef __X__
+    // X seems to require a forced resize
+    int x, y;
+    frame->GetSize(&x, &y);
+    frame->SetSize(-1, -1, x, y);
+#endif
+    frame->Show(TRUE);
+    Activate(TRUE);
+
+    return TRUE;
+}
+
+
+//------------------------------------------------------------------------------
+void TView::OnSavePicture (wxCommandEvent& WXUNUSED(event))
+{
+#ifdef __WXMSW__
+	// Use metafiles for Windows
+	wxString pictureFileName = GetFrame()->GetTitle();
+	pictureFileName += wxT(".emf");
+	wxFrame *f = GetMainFrame();
+   	wxFileDialog dialog((wxWindow *)f, "Save Picture as", "", pictureFileName,
+        "Enhanced metafile (*.emf)|*.emf",
+        wxSAVE|wxOVERWRITE_PROMPT);
+    
+    if (dialog.ShowModal() == wxID_OK)
+    {
+		wxMetafileDC pictureDC (dialog.GetPath(), 600, 650) ;
+		OnDraw (&pictureDC);
+		pictureDC.Close();
+	}
+#else
+#ifdef USE_SVG
+	wxString pictureFileName = frame->GetTitle();
+	// Use SVG on other platforms	
+	pictureFileName += wxT(".svg");
+	#ifdef __WXMAC__
+	wxFrame *f = GetFrame();
+	#else
+	wxFrame *f = GetMainFrame();
+	#endif 
+    wxFileDialog dialog((wxWindow *)f, "Save Picture as", "", pictureFileName,
+        "SVG vector picture files (*.svg)|*.svg",
+        wxSAVE|wxOVERWRITE_PROMPT);
+
+    if (dialog.ShowModal() == wxID_OK)
+    {
+		wxSVGFileDC pictureDC (dialog.GetPath(), 600, 650) ;
+		OnDraw (&pictureDC);
+	}
+#endif
+#endif
+}
+
+
+//------------------------------------------------------------------------------
+// Sneakily gets used for default print/preview
+// as well as drawing on the screen.
+void TView::OnDraw(wxDC *dc)
+{
+	if (p.GetNumTrees() > 0)
+	{
+		dc->SetFont(LeafFont);
+		wxPen pen (*wxBLACK_PEN);
+		pen.SetCap (wxCAP_PROJECTING);
+		dc->SetPen(pen);
+
+		Tree t = p.GetCurrentTree();
+		t.Update();
+		
+		int width, height;
+		if (printing)
+		{
+			width = page_width;
+			height = page_height;
+#if defined(__WXGTK__) || defined(__WXMOTIF__)
+			height -= 72;
+#endif 
+		}
+		else
+			if (magnification == 1)
+			{
+				canvas->GetClientSize (&width, &height);
+			}
+			else
+			{
+				int ignore;
+				canvas->GetVirtualSize (&ignore, &height);
+				canvas->GetClientSize (&width, &ignore);
+			}		wxRect r (0, 0, width, height);
+
+#if defined(__WXGTK__) || defined(__WXMOTIF__)
+		if (printing)
+		{
+			r.Offset (0, 72);
+		}
+#endif 
+
+			
+		// Ensure a little space around the tree
+		r.Inflate (-20, -20);
+
+   		t.MakeNodeList();
+    	int maxlen = 0;
+   		for (int i = 0; i < t.GetNumLeaves(); i++)
+		{
+			wxCoord w, h;
+			Node *p;
+			p = t[i];
+   			wxString s;
+#if wxUSE_UNICODE
+			char buf[256];
+			strcpy (buf, p->GetLabel().c_str());
+			wchar_t wbuf[256];
+			mbstowcs (wbuf, buf, size_t(wbuf));
+			s << wbuf;
+#else
+   			s << p->GetLabel().c_str();
+#endif
+   			dc->GetTextExtent (s, &w, &h);
+    		if (w > maxlen)
+				maxlen =  w;
+		}
+		r.SetWidth (r.GetWidth() - maxlen);
+		
+		if (Order != DEFAULT_ORDER)
+		{
+			TreeOrder *order = NULL;
+			switch (Order)
+			{
+				case ALPHA_ORDER:
+					order = new AlphaOrder (&t);
+					break;
+				case LEFT_ORDER:
+					order = new LeftOrder (&t);
+					break;
+				case RIGHT_ORDER:
+					order = new RightOrder (&t);
+					break;
+			}
+			order->Order ();
+			delete order;
+		}
+
+		
+		TreeDrawer *td = NULL;
+		switch (TreeStyleCmd)
+		{
+			case SLANTED_TREE_CMD:
+				td = new TreeDrawer (&t);
+				break;
+			case RECTANGULAR_TREE_CMD:
+				td = new RectangleTreeDrawer (&t);
+				break;
+			case PHYLOGRAM_CMD:
+				td = new PhylogramDrawer (&t);
+				break;
+		}
+		td->SetDC (dc);
+        td->SetRect (r.GetLeft(), r.GetTop(), r.GetRight(), r.GetBottom());
+        td->CalcCoordinates ();
+        td->SetPenWidth (2);
+        td->SetDrawInternalLabels (mShowInternalLabels);
+        td->Draw ();
+        delete td;
+	}
+}
+
+//------------------------------------------------------------------------------
+void TView::OnUpdate(wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint))
+{
+	if (canvas)
+		canvas->Refresh();
+
+/* Is the following necessary?
+#ifdef __WXMSW__
+  if (canvas)
+    canvas->Refresh();
+#else
+  if (canvas)
+    {
+      wxClientDC dc(canvas);
+      dc.Clear();
+      OnDraw(& dc);
+    }
+#endif
+*/
+}
+
+//------------------------------------------------------------------------------
+// Clean up windows used for displaying the view.
+bool TView::OnClose(bool deleteWindow)
+{
+	if (!GetDocument()->Close())
+		return FALSE;
+
+	// Clear the canvas in  case we're in single-window mode,
+	// and the canvas stays.
+#if (wxMINOR_VERSION > 4) // from 2.5 Clear is deprecated
+	canvas->ClearBackground();
+#else
+	canvas->Clear();
+#endif	
+	
+	canvas->view = (wxView *) NULL;
+	canvas = (MyCanvas *) NULL;
+
+	wxString s(wxTheApp->GetAppName());
+	if (frame)
+		frame->SetTitle(s);
+
+	SetFrame((wxFrame*)NULL);
+
+	Activate(FALSE);
+
+	if (deleteWindow)
+	{
+		delete frame;
+		return TRUE;
+	}
+	return TRUE;
+}
+
+//------------------------------------------------------------------------------
+bool TView::ReadTrees (const wxString &filename)
+{
+	bool result = false;
+	ifstream f;
+	f.open (filename.mb_str(), ios::binary | ios::in);
+	if (p.ReadTrees (f))
+	{
+		// Set window name to that of file
+		wxFileName fn (filename);
+		wxString title = fn.GetName();
+		if (fn.HasExt())
+		{
+			title += wxT(".");
+			title += fn.GetExt();
+		}
+		frame->SetTitle(title);
+
+		result = true;
+	}
+	else
+	{
+		wxMessageBox(wxT("Failed to read trees"), wxT("ReadTrees"),  wxICON_EXCLAMATION | wxOK);
+		result = false;
+	}
+	f.close();
+	return result;
+}
+
+//------------------------------------------------------------------------------
+bool TView::WriteTrees (const wxString &filename)
+{
+	bool result = false;
+	ofstream f (filename.mb_str());
+	if (p.WriteTrees (f))
+	{
+		// Set window name to that of file
+		wxFileName fn (filename);
+		wxString title = fn.GetName();
+		if (fn.HasExt())
+		{
+			title += wxT(".");
+			title += fn.GetExt();
+		}
+		frame->SetTitle(title);
+
+		result = true;
+	}
+	else
+	{
+		wxMessageBox(wxT("Failed to write trees"), wxT("TreeView X"),  wxICON_EXCLAMATION | wxOK);
+		result = false;
+	}
+	f.close();
+	return result;
+}
+
+//------------------------------------------------------------------------------
+void TView::OnActivateView (bool activate, wxView *activeView, wxView *deactiveView)
+{
+	if (activate)
+	{
+#ifdef __WXMAC__
+		wxToolBar* toolBar = frame->GetToolBar();
+#else
+		wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+		wxMenuBar* menuBar = frame->GetMenuBar();
+				
+		if (p.GetNumTrees() > 0)
+		{
+			toolBar->EnableTool (PREVIOUS_TREE_CMD, (p.GetCurrentTreeNumber() > 0));
+			toolBar->EnableTool (NEXT_TREE_CMD, (p.GetCurrentTreeNumber() < (p.GetNumTrees() - 1)));	
+			toolBar->EnableTool (SLANTED_TREE_CMD, true);		
+			toolBar->EnableTool (RECTANGULAR_TREE_CMD, true);
+			toolBar->EnableTool (PHYLOGRAM_CMD, p.CurrentTreeHasEdgeLengths());
+			toolBar->ToggleTool (SLANTED_TREE_CMD, FALSE );		
+			toolBar->ToggleTool (RECTANGULAR_TREE_CMD, FALSE );		
+			toolBar->ToggleTool (PHYLOGRAM_CMD, FALSE );
+
+#ifndef __WXMOTIF__
+			menuBar->Enable (COPY_AS_TEXT_CMD, true);
+#endif	
+			
+			menuBar->Enable (SLANTED_TREE_CMD, true);		
+			menuBar->Enable (RECTANGULAR_TREE_CMD, true);
+			menuBar->Enable (PHYLOGRAM_CMD, p.CurrentTreeHasEdgeLengths());
+			menuBar->Check (SLANTED_TREE_CMD, false );		
+			menuBar->Check (RECTANGULAR_TREE_CMD, false );		
+			menuBar->Check (PHYLOGRAM_CMD, false );				
+			menuBar->Enable (CHOOSE_TREE_CMD, (p.GetNumTrees() > 1));
+
+ 			menuBar->Enable (INTERNAL_LABELS_CMD, p.CurrentTreeHasInternallabels());
+			menuBar->Check (INTERNAL_LABELS_CMD, mShowInternalLabels );
+			toolBar->EnableTool (INTERNAL_LABELS_CMD, p.CurrentTreeHasInternallabels());
+			toolBar->ToggleTool (INTERNAL_LABELS_CMD, mShowInternalLabels );
+
+
+			ShowTreeName ();
+			TreeStyleMenu (TreeStyleCmd);	
+		}
+		else
+		{
+			toolBar->EnableTool (PREVIOUS_TREE_CMD, false);
+			toolBar->EnableTool (NEXT_TREE_CMD, false);
+			toolBar->EnableTool (PREVIOUS_TREE_CMD, false);
+			toolBar->EnableTool (SLANTED_TREE_CMD, false);		
+			toolBar->EnableTool (RECTANGULAR_TREE_CMD, false);
+			toolBar->EnableTool (PHYLOGRAM_CMD, false);		
+			
+			menuBar->Enable (COPY_AS_TEXT_CMD, false);
+			menuBar->Enable (SLANTED_TREE_CMD, false);		
+			menuBar->Enable (RECTANGULAR_TREE_CMD, false);
+			menuBar->Enable (PHYLOGRAM_CMD, false);
+			menuBar->Enable (INTERNAL_LABELS_CMD, false );
+
+		}		
+	}
+}
+
+//------------------------------------------------------------------------------
+void TView::PreviousTree (wxCommandEvent& WXUNUSED(event))
+{
+#ifdef __WXMAC__
+	wxToolBar* toolBar = frame->GetToolBar();
+#else
+	wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+	int n = p.GetCurrentTreeNumber ();
+	if (n >= 0)
+	{
+		n--;
+		p.SetCurrentTreeNumber (n);
+		if (n == 0)
+			toolBar->EnableTool (PREVIOUS_TREE_CMD, false);
+		toolBar->EnableTool (NEXT_TREE_CMD, true);
+		TreeStyleMenu(TreeStyleCmd);
+		ShowTreeName ();
+		OnUpdate (this, NULL); // Ensure we redraw window
+	}
+}
+
+//------------------------------------------------------------------------------
+void TView::NextTree (wxCommandEvent& WXUNUSED(event))
+{
+#ifdef __WXMAC__
+	wxToolBar* toolBar = frame->GetToolBar();
+#else
+	wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+	int n = p.GetCurrentTreeNumber ();
+	
+	if (n < p.GetNumTrees () - 1)
+	{
+		n++;
+		p.SetCurrentTreeNumber (n);
+		if (n == (p.GetNumTrees () - 1))
+			toolBar->EnableTool (NEXT_TREE_CMD, false);
+		toolBar->EnableTool (PREVIOUS_TREE_CMD, true);
+		TreeStyleMenu(TreeStyleCmd);		
+		ShowTreeName ();
+		OnUpdate (this, NULL); // Ensure we redraw window
+	}
+}
+
+//------------------------------------------------------------------------------
+void TView::ShowTreeName ()
+{
+	wxString txt = wxT("");
+	Tree t = p.GetCurrentTree ();
+	if (t.GetName() != "")
+	{
+#if wxUSE_UNICODE
+		char buf[256];
+		strcpy (buf, t.GetName().c_str());
+		wchar_t wbuf[256];
+		mbstowcs (wbuf, buf, size_t(wbuf));
+		txt << wbuf;
+#else
+		txt << t.GetName().c_str();
+#endif
+		
+		txt << wxT(" ");
+	}
+		
+	txt << wxT("(") << (p.GetCurrentTreeNumber() + 1) << wxT("/") << p.GetNumTrees() << wxT(")");
+#if defined(__WXMSW__) || defined(__WXMAC__)
+	// Status bar for the view window
+	frame->SetStatusText (txt, 0);
+#else
+	GetMainFrame()->SetStatusText (txt, 0);
+#endif
+}
+
+//------------------------------------------------------------------------------
+void TView::TreeStyleMenu (int style)
+{
+#ifdef __WXMAC__
+	wxToolBar* toolBar = frame->GetToolBar();
+#else
+	wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+	wxMenuBar* menuBar = frame->GetMenuBar();
+
+	toolBar->ToggleTool( TreeStyleCmd, FALSE );
+	menuBar->Check (TreeStyleCmd, FALSE);
+
+	// Ensure style is consistent with this tree (we may have a mix of trees with and without
+	// branch lengths and/or internal labels)
+	if (!p.CurrentTreeHasEdgeLengths() && (style == PHYLOGRAM_CMD))
+	{
+		menuBar->Enable (PHYLOGRAM_CMD, FALSE);
+		toolBar->EnableTool ( PHYLOGRAM_CMD, FALSE );
+		style = RECTANGULAR_TREE_CMD;
+	}
+	else if (p.CurrentTreeHasEdgeLengths())
+	{
+		menuBar->Enable (PHYLOGRAM_CMD, TRUE);
+		toolBar->EnableTool ( PHYLOGRAM_CMD, TRUE );	
+	}
+	menuBar->Enable (INTERNAL_LABELS_CMD, p.CurrentTreeHasInternallabels());
+	menuBar->Check (INTERNAL_LABELS_CMD, mShowInternalLabels );
+	toolBar->EnableTool (INTERNAL_LABELS_CMD, p.CurrentTreeHasInternallabels());
+	toolBar->ToggleTool (INTERNAL_LABELS_CMD, mShowInternalLabels );
+	
+	toolBar->ToggleTool( style, TRUE );
+	menuBar->Check (TreeStyleCmd, FALSE);
+	menuBar->Check (style, TRUE);
+	TreeStyleCmd = style;
+}
+
+
+//------------------------------------------------------------------------------
+void TView::OnSlant (wxCommandEvent& WXUNUSED(event))
+{
+	TreeStyleMenu (SLANTED_TREE_CMD);
+	OnUpdate (this, NULL); // Ensure we redraw window
+}
+
+//------------------------------------------------------------------------------
+void TView::OnRectangle (wxCommandEvent& WXUNUSED(event))
+{
+	TreeStyleMenu (RECTANGULAR_TREE_CMD);
+	OnUpdate (this, NULL); // Ensure we redraw window
+}
+
+//------------------------------------------------------------------------------
+void TView::OnPhylogram (wxCommandEvent& WXUNUSED(event))
+{
+	TreeStyleMenu (PHYLOGRAM_CMD);
+	OnUpdate (this, NULL); // Ensure we redraw window
+}
+
+//------------------------------------------------------------------------------
+void TView::OnOrderTree (wxCommandEvent& WXUNUSED(event))
+{
+#ifdef __WXMAC__
+	TreeOrderDlg dialog((wxWindow *)GetFrame());
+#else
+	TreeOrderDlg dialog((wxWindow *)GetMainFrame());
+#endif
+	dialog.SetTreeOrder(Order);
+	dialog.Centre (wxBOTH);
+	if (dialog.ShowModal() == wxID_OK)
+	{
+		// Get data
+		Order = dialog.GetTreeOrder();
+		OnUpdate (this, NULL); // Ensure we redraw window		
+	}
+}
+
+//------------------------------------------------------------------------------
+void TView::OnInternalLabels (wxCommandEvent& WXUNUSED(event))
+{
+	mShowInternalLabels = !mShowInternalLabels;
+
+#ifdef __WXMAC__
+	wxToolBar* toolBar = frame->GetToolBar();
+#else
+	wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+	toolBar->ToggleTool( INTERNAL_LABELS_CMD, mShowInternalLabels );
+
+	wxMenuBar* menuBar = frame->GetMenuBar();
+	menuBar->Check (INTERNAL_LABELS_CMD, mShowInternalLabels);
+
+	OnUpdate (this, NULL); // Ensure we redraw window
+}
+
+
+//------------------------------------------------------------------------------
+void TView::OnLeafFont (wxCommandEvent& WXUNUSED(event))
+{
+#if 0
+	TreeOrderDlg *dlg = new TreeOrderDlg(frame);
+	dlg->ShowModal();
+#else
+	wxFontData data;
+	data.SetInitialFont (LeafFont);
+
+#ifdef __WXMAC__
+	wxFontDialog dialog((wxWindow *)GetFrame(), data);
+#else
+	wxFontDialog dialog((wxWindow *)GetMainFrame(), &data);
+#endif
+	if ( dialog.ShowModal() == wxID_OK )
+	{
+		wxFontData retData = dialog.GetFontData();
+		LeafFont = retData.GetChosenFont();
+		OnUpdate (this, NULL); // Ensure we redraw window
+	}
+#endif
+}
+
+//------------------------------------------------------------------------------
+void TView::OnChooseTree (wxCommandEvent& WXUNUSED(event))
+{
+	wxString *choices = new wxString[p.GetNumTrees()];
+	
+	for (int i = 0; i < p.GetNumTrees(); i++)
+	{
+#if wxUSE_UNICODE
+		char buf[256];
+		strcpy (buf, p.GetIthTreeName(i).c_str());
+		wchar_t wbuf[256];
+		mbstowcs (wbuf, buf, size_t(wbuf));
+
+		std::wstring tname = wbuf;
+
+		// If tree has no name create one from it's place in the profile
+		if (tname == L"")
+		{
+			wchar_t buf[32];
+		    swprintf (buf, wcslen(buf), L"%d", int (i+1));
+			tname += buf;
+		}
+		choices[i] = tname.c_str();
+#else
+		std::string tname = p.GetIthTreeName(i);
+
+		// If tree has no name create one from it's place in the profile
+		if (tname == "")
+		{
+			char buf[32];
+			sprintf (buf, "%d", (i+1));
+			tname += buf;
+		}
+		choices[i] = tname.c_str();
+#endif
+	}
+		
+    wxSingleChoiceDialog dialog(frame, wxT("Tree names"),
+        wxT("Choose a tree"), p.GetNumTrees(), choices);
+
+    dialog.SetSelection(p.GetCurrentTreeNumber());
+
+    if (dialog.ShowModal() == wxID_OK)
+    {
+		int j = dialog.GetSelection ();				
+#ifdef __WXMAC__
+		wxToolBar* toolBar = frame->GetToolBar();
+#else
+		wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+		toolBar->EnableTool (PREVIOUS_TREE_CMD, (j != 0));
+		toolBar->EnableTool (NEXT_TREE_CMD, (j < p.GetNumTrees()-1));
+		p.SetCurrentTreeNumber (j);
+		TreeStyleMenu(TreeStyleCmd);
+		ShowTreeName ();
+		OnUpdate (this, NULL); // Ensure we redraw window
+	}
+    
+    delete [] choices;
+}
+
+#ifndef __WXMOTIF__
+// ----------------------------------------------------------------------------
+void TView::OnUpdateCopyCommand(wxUpdateUIEvent& event)
+{
+	wxMenuBar* menuBar = frame->GetMenuBar();
+	menuBar->Enable (wxID_COPY, (p.GetNumTrees() > 0));	
+	menuBar->Enable (COPY_AS_TEXT_CMD, (p.GetNumTrees() > 0));	
+#ifdef __WXMAC__
+	wxToolBar* toolBar = frame->GetToolBar();
+#else
+	wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+	toolBar->EnableTool (wxID_COPY, (p.GetNumTrees() > 0));
+
+}
+
+// ----------------------------------------------------------------------------
+void TView::OnUpdatePasteCommand(wxUpdateUIEvent& event)
+{
+	wxMenuBar* menuBar = frame->GetMenuBar();
+	menuBar->Enable (wxID_PASTE, (p.GetNumTrees() == 0) && wxTheClipboard->IsSupported( wxDF_TEXT ));
+#ifdef __WXMAC__
+	wxToolBar* toolBar = frame->GetToolBar();
+#else
+	wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+	toolBar->EnableTool (wxID_PASTE, (p.GetNumTrees() == 0) && wxTheClipboard->IsSupported( wxDF_TEXT ));
+}
+
+// ----------------------------------------------------------------------------
+void TView::OnCopy (wxCommandEvent& WXUNUSED(event))
+{
+#if defined(__WXMAC__) || defined(__WXMSW__)
+
+    // Get current tree
+    Tree t = p.GetCurrentTree();
+    t.Update();
+
+    // Write tree to clipboard as a metafile
+    wxMetafileDC dc;
+    if (dc.Ok())
+    {
+        OnDraw (&dc);
+        wxMetafile *mf = dc.Close();
+        if (mf)
+        {
+            bool success = mf->SetClipboard((int)(dc.MaxX() + 10), (int)(dc.MaxY() + 10));
+            delete mf;
+        }
+    }
+#endif
+}
+
+// ----------------------------------------------------------------------------
+void TView::OnCopyAsText (wxCommandEvent& WXUNUSED(event))
+{
+	// Get current tree
+	Tree t = p.GetCurrentTree();
+	t.Update();
+	
+	// Write tree to a string stream
+	ostrstream f;	
+	NewickTreeWriter tw (&t);
+	tw.SetStream (&f);
+	tw.Write();	
+	f << '\0';
+
+	// Store on clipboard
+	if (wxTheClipboard->Open())
+	{
+		// Data objects are held by the clipboard, 
+		// so do not delete them in the app.
+		string str = f.str();
+		wxTheClipboard->SetData( new wxTextDataObject( wxString(str.c_str(), *wxConvCurrent)) );
+		wxTheClipboard->Close();
+	}
+}
+
+
+
+// ----------------------------------------------------------------------------
+void TView::OnPaste (wxCommandEvent& WXUNUSED(event))
+{
+	// Paste tree description from clipboard into this window -- duh! need to make this a call to the main frame too
+
+	if (wxTheClipboard->Open())
+	{
+		if (wxTheClipboard->IsSupported( wxDF_TEXT ))
+		{
+			wxTextDataObject data;
+			wxTheClipboard->GetData( data );
+			
+			// Temporary stream to hold clipbard text
+			istrstream f (data.GetText().mb_str());
+			if (p.ReadTrees (f))
+			{
+				Activate (TRUE);				// ensure menus are set correctly
+				OnUpdate (this, NULL);			// ensure tree is drawn
+				GetDocument()->Modify (TRUE);	// tell document that content has changed
+			}
+			
+		}  
+		wxTheClipboard->Close();
+	}
+}
+#endif
+
+//------------------------------------------------------------------------------
+void TView::ZoomToFit (wxCommandEvent& WXUNUSED(event))
+{
+	magnification = 1;
+	Resize();
+}
+
+
+//------------------------------------------------------------------------------
+void TView::ZoomIn (wxCommandEvent& WXUNUSED(event))
+{
+	magnification++;
+	Resize();
+}
+
+//------------------------------------------------------------------------------
+void TView::ZoomOut (wxCommandEvent& WXUNUSED(event))
+{
+	magnification--;
+	Resize();
+}
+
+//------------------------------------------------------------------------------
+void TView::Resize ()
+{
+	canvas->SetMagnification (magnification);
+	canvas->Resize ();
+	OnUpdate (this, NULL); // Ensure we redraw window
+}
+
+// ----------------------------------------------------------------------------
+void TView::OnUpdateZoomToFitCommand (wxUpdateUIEvent& event)
+{
+	wxMenuBar* menuBar = frame->GetMenuBar();
+	menuBar->Enable (ZOOM_TO_FIT_CMD, (magnification != 1));	
+#ifdef __WXMAC__
+	wxToolBar* toolBar = frame->GetToolBar();
+#else
+	wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+	//toolBar->EnableTool (ZOOM_TO_FIT_CMD, (magnification != 1));
+}
+
+
+// ----------------------------------------------------------------------------
+void TView::OnUpdateZoomInCommand (wxUpdateUIEvent& event)
+{
+	wxMenuBar* menuBar = frame->GetMenuBar();
+	menuBar->Enable (ZOOM_IN_CMD, (magnification < MAX_MAGNIFICATION));	
+#ifdef __WXMAC__
+	wxToolBar* toolBar = frame->GetToolBar();
+#else
+	wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+	toolBar->EnableTool (ZOOM_IN_CMD, (magnification < MAX_MAGNIFICATION));
+}
+
+// ----------------------------------------------------------------------------
+void TView::OnUpdateZoomOutCommand (wxUpdateUIEvent& event)
+{
+	wxMenuBar* menuBar = frame->GetMenuBar();
+	menuBar->Enable (ZOOM_OUT_CMD, (magnification > 1));	
+#ifdef __WXMAC__
+	wxToolBar* toolBar = frame->GetToolBar();
+#else
+	wxToolBar* toolBar = GetMainFrame()->GetToolBar();
+#endif
+	toolBar->EnableTool (ZOOM_OUT_CMD, (magnification > 1));
+}
+
+		
+//------------------------------------------------------------------------------			
+// Map commands to methods in TView
+
+BEGIN_EVENT_TABLE(TView, wxView)
+    EVT_MENU(NEXT_TREE_CMD, TView::NextTree)
+    EVT_MENU(PREVIOUS_TREE_CMD, TView::PreviousTree)
+    EVT_MENU(SLANTED_TREE_CMD, TView::OnSlant)
+    EVT_MENU(RECTANGULAR_TREE_CMD, TView::OnRectangle)
+    EVT_MENU(PHYLOGRAM_CMD, TView::OnPhylogram)
+    EVT_MENU(INTERNAL_LABELS_CMD, TView::OnInternalLabels)
+    EVT_MENU(LEAF_FONT_CMD, TView::OnLeafFont)
+    EVT_MENU(CHOOSE_TREE_CMD, TView::OnChooseTree)
+    EVT_MENU(ORDER_TREE_CMD, TView::OnOrderTree)
+
+#if defined  __WXMSW__ || defined USE_SVG
+    EVT_MENU(SAVEAS_PICTURE_CMD, TView::OnSavePicture)
+#endif
+
+#ifndef __WXMOTIF__
+    EVT_MENU(wxID_COPY, TView::OnCopy)
+    EVT_MENU(COPY_AS_TEXT_CMD, TView::OnCopyAsText)
+    EVT_MENU(wxID_PASTE, TView::OnPaste)
+#endif
+
+    EVT_MENU(ZOOM_TO_FIT_CMD, TView::ZoomToFit)
+    EVT_MENU(ZOOM_IN_CMD, TView::ZoomIn)
+    EVT_MENU(ZOOM_OUT_CMD, TView::ZoomOut)
+
+        
+#ifndef __WXMOTIF__
+    EVT_UPDATE_UI(wxID_COPY, TView::OnUpdateCopyCommand)
+    EVT_UPDATE_UI(COPY_AS_TEXT_CMD, TView::OnUpdateCopyCommand)
+    EVT_UPDATE_UI(wxID_PASTE, TView::OnUpdatePasteCommand)
+#endif
+
+    EVT_UPDATE_UI(ZOOM_TO_FIT_CMD, TView::OnUpdateZoomToFitCommand)
+    EVT_UPDATE_UI(ZOOM_IN_CMD, TView::OnUpdateZoomInCommand)
+    EVT_UPDATE_UI(ZOOM_OUT_CMD, TView::OnUpdateZoomOutCommand)
+
+	
+END_EVENT_TABLE()
+
+/*
+ * Window implementations
+ */
+
+BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow)
+    EVT_MOUSE_EVENTS(MyCanvas::OnMouseEvent)
+	EVT_SIZE(MyCanvas::OnSize)
+END_EVENT_TABLE()
+
+// Define a constructor for my canvas
+MyCanvas::MyCanvas(wxView *v, wxMDIChildFrame *frame, const wxPoint& pos, const wxSize& size, long style):
+ wxScrolledWindow(frame, -1, pos, size, style)
+{
+	SetBackgroundColour(wxColour("WHITE"));
+	view = v;
+	magnification = 1;
+}
+
+//------------------------------------------------------------------------------
+// Define the repainting behaviour
+void MyCanvas::OnDraw(wxDC& dc)
+{
+	if (view)
+		view->OnDraw(& dc);
+}
+
+// ----------------------------------------------------------------------------
+void MyCanvas::OnSize(wxSizeEvent& event)
+{
+	Resize ();
+    event.Skip();
+}
+
+
+// ----------------------------------------------------------------------------
+void MyCanvas::Resize()
+{
+	int width, height;
+	GetClientSize (&width, &height);
+	int range = height * magnification; 
+	int steps = range / 50;
+	SetScrollbars(0, steps, 0, 50);
+}
+
+
+//------------------------------------------------------------------------------
+// This implements a tiny doodling program. Drag the mouse using
+// the left button.
+void MyCanvas::OnMouseEvent(wxMouseEvent& event)
+{
+	 if (!view)
+		return;
+}
+
+
+


Property changes on: trunk/packages/treeviewx/branches/upstream/current/tview.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: trunk/packages/treeviewx/branches/upstream/current/tview.h
===================================================================
--- trunk/packages/treeviewx/branches/upstream/current/tview.h	2006-03-18 12:33:44 UTC (rev 8)
+++ trunk/packages/treeviewx/branches/upstream/current/tview.h	2006-03-27 15:51:50 UTC (rev 9)
@@ -0,0 +1,157 @@
+/*
+ * TreeView
+ * A phylogenetic tree viewer.
+ * Copyright (C) 2001 Roderic D. M. Page <r.page at bio.gla.ac.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+ 
+ // $Id: tview.h,v 1.21 2005/08/31 08:55:01 rdmp1c Exp $
+ 
+#ifdef __GNUG__
+// #pragma interface
+#endif
+
+#include "tproject.h"
+
+#ifndef __VIEWSAMPLEH__
+#define __VIEWSAMPLEH__
+
+#include "wx/docview.h"
+
+#define PREVIOUS_TREE_CMD		100
+#define NEXT_TREE_CMD			101
+#define SLANTED_TREE_CMD		102
+#define RECTANGULAR_TREE_CMD		103
+#define PHYLOGRAM_CMD			104
+#define LEAF_FONT_CMD			105
+#define CHOOSE_TREE_CMD			106
+#define ORDER_TREE_CMD			107
+#define SAVEAS_PICTURE_CMD		108
+#define COPY_AS_TEXT_CMD		109
+
+#define ZOOM_IN_CMD				110
+#define ZOOM_OUT_CMD				111
+#define ZOOM_TO_FIT_CMD			112
+
+#define INTERNAL_LABELS_CMD	113
+
+const int DEFAULT_ORDER = 0;
+const int ALPHA_ORDER 	= 1;
+const int LEFT_ORDER 	= 2;
+const int RIGHT_ORDER 	= 3;
+
+#define MAX_MAGNIFICATION 5
+
+class MyCanvas: public wxScrolledWindow
+{
+public:
+	wxView *view;
+
+	MyCanvas(wxView *v, wxMDIChildFrame *frame, const wxPoint& pos, const wxSize& size, long style);
+	virtual void OnDraw(wxDC& dc);
+	virtual void OnSize(wxSizeEvent& event);
+	void OnMouseEvent(wxMouseEvent& event);
+	void Resize ();
+	void SetMagnification (int m) { magnification = m; };
+	
+protected:
+	int magnification;
+
+private:
+	DECLARE_EVENT_TABLE()
+};
+
+
+class TView: public wxView
+{
+public:
+	wxMDIChildFrame *frame;
+	MyCanvas *canvas;
+
+	TView();
+	~TView() {}
+
+	void OnActivateView (bool activate, wxView *activeView, wxView *deactiveView);
+	bool OnCreate(wxDocument *doc, long flags);
+	void OnDraw(wxDC *dc);
+	void OnUpdate(wxView *sender, wxObject *hint = (wxObject *) NULL);
+	bool OnClose(bool deleteWindow = TRUE);
+	virtual wxPrintout *OnCreatePrintout();
+
+	void OnSlant (wxCommandEvent& WXUNUSED(event) ); 
+	void OnRectangle (wxCommandEvent& WXUNUSED(event) ); 
+	void OnPhylogram (wxCommandEvent& WXUNUSED(event) ); 
+	
+	void OnInternalLabels (wxCommandEvent& WXUNUSED(event) );
+
+	void OnLeafFont (wxCommandEvent& WXUNUSED(event) );
+
+	void OnChooseTree (wxCommandEvent& WXUNUSED(event) ); 
+
+	void OnOrderTree (wxCommandEvent& WXUNUSED(event) ); 
+
+	void OnSavePicture (wxCommandEvent& WXUNUSED(event) ); 
+	
+	void NextTree (wxCommandEvent& WXUNUSED(event) );    
+	void PreviousTree (wxCommandEvent& WXUNUSED(event) );
+	void ShowTreeName ();
+	
+	void TreeStyleMenu (int style);
+	
+	// Clipboard
+#ifndef __WXMOTIF__
+	void OnUpdateCopyCommand(wxUpdateUIEvent& event);
+	void OnUpdatePasteCommand(wxUpdateUIEvent& event);
+	void OnCopy (wxCommandEvent& event);
+	void OnCopyAsText (wxCommandEvent& event);
+	void OnPaste(wxCommandEvent& event);
+#endif
+
+	// Zoom
+	void ZoomToFit (wxCommandEvent& WXUNUSED(event) );    
+	void ZoomIn (wxCommandEvent& WXUNUSED(event) );    
+	void ZoomOut (wxCommandEvent& WXUNUSED(event) );
+	void Resize ();
+	void OnUpdateZoomToFitCommand (wxUpdateUIEvent& event);
+	void OnUpdateZoomInCommand (wxUpdateUIEvent& event);
+	void OnUpdateZoomOutCommand (wxUpdateUIEvent& event);
+
+	TProject <Tree>	p;
+	unsigned int	TreeFlags; 
+	int		TreeStyleCmd;
+	wxFont		LeafFont;
+	bool		mShowInternalLabels;
+
+	int 		page_width;
+	int 		page_height;
+	bool 		printing;
+	
+	int 		magnification;
+
+	bool ReadTrees (const wxString &filename);
+	bool WriteTrees (const wxString &filename);
+	
+protected:
+	int Order;
+
+private:
+	DECLARE_DYNAMIC_CLASS(TView)
+	DECLARE_EVENT_TABLE()
+};
+
+
+#endif


Property changes on: trunk/packages/treeviewx/branches/upstream/current/tview.h
___________________________________________________________________
Name: svn:executable
   + 




More information about the debian-med-commit mailing list